Shell and patterns

The frame screens share — the top bar, the section and account menus, the header with its numbers — and the blocks that settings screens and lists are assembled from.

The application frame

The frame is one row at the top: the brand, the application's sections and the account. Content below it runs full width. The admin has no side menu — its screens are wide tables, and a column bitten off on the left is a column missing from the table.

Forgmatic Admin
  • A section is a button, not a link — it opens a menu and goes nowhere on its own. The links are the items inside.
  • The customer-facing product uses the same bar with different content: another brand without the badge, other sections, possibly a trial badge. Two products, one frame.
  • The bar does not wrap — whatever does not fit falls off the edge. The measure is not a fixed count but the narrowest supported width: every section with its label must fit at 1280 px. The admin carries eight today; when the bar breaks, shorten labels or merge two sections.

The page header

Below the bar the order is always the same: breadcrumbs, the page header, and only then the content. The numbers a screen is read by at a glance sit right under the header.

Orders

12 wait for production to confirm, 2 are past due.

In production

18

4 of them today

Waiting

12

oldest is 3 days

Past due

2

OBJ-2411, OBJ-2390

The right side of the header holds actions OR numbers — not both. A screen where nothing gets created puts a cluster of two or three numbers there instead of buttons; it is the same component as the strip, only denser.

Machine load

Next week's plan from today's confirmed orders.

6machines37 / 240free hours1overloaded
  • There is exactly one primary action and it sits at the top right of the header. It never floats above the content.
  • The numbers in the header and the strip below it are two densities of one component, not two components. Two or three numbers fit in the header, four to six in the strip — and both at once turns the screen into an overview of an overview.
  • The last breadcrumb is not a link — it is where you stand. On a section's root page breadcrumbs are not drawn at all.
  • A coloured number means that number is a problem, not that it is the most important one. Half a coloured strip says nothing.

Settings patterns

Settings screens are assembled from recurring blocks. Configuration is not one long form — steps get finished on different days by different people, so each step carries its state permanently.

Done

Step 01

Countries and currencies3 / 3 active

02

Step 02

Pricing basis

  • A finished step is recognisable by shape, not colour alone — the green header comes with a tick instead of a number.
  • A step's footer adds another item. A step is not confirmed by a button: it is done when it has what it needs.
  • A choice with a consequence is made on a card with an explaining sentence, not an option in a dropdown. That sentence is half the choice.
  • A finished step collapses on its own and leaves a header with a summary behind (“3 / 3 active”). Otherwise a setup of eight steps pushes the unfinished one below the fold.

The group card

A named group of records is its own card: the header says whose it is and how much it holds, the table shows the content, and the footer adds another item to it. The card carries no padding of its own so the table lines up with its frame.

material.ocel3 attributes

The attributes the enquiry form asks for on steel parts.

Attributes of the material.ocel group
AttributeKeyUnit
activeThicknessthicknessmm
activeSurface finishfinish
hiddenCertificate 3.1certificate
  • Every block has its own header and its own “add” footer. A single floating button above the list of groups would have to ask which group it adds to.
  • The footer sits on --surface-2, so it reads as a tool of the card rather than one more table row.
  • Adding from a list, not an empty field: attributes are an enumeration someone established elsewhere. A free field here would establish typos as new attributes.
  • The key is code, so it is set as code — and not translated. A row's state is carried by a dot and a word, not colour alone.

The list pattern

A screen listing records assembles its blocks in a fixed order. The order is not a choice — a reader who knows it from one screen finds it on all of them.

  1. IngotToolbar — search and filters above the list.
  2. IngotTable — the records; selecting rows opens the bulk actions.
  3. IngotRowActions — the actions of one row, always at its end.
  4. IngotEmptyState — when there are no records, it says why and what to do.
  5. IngotPagination — paging below the list.

Editing a record goes into a side drawer so the context stays visible. Confirming an irreversible step belongs in a confirm dialog that states the impact, and the result is announced by a toast with an undo. A modal is only for a step that must not be interrupted.