Patterns catalogue
Every power-up the kit supports, with its demo, the backend helper it needs and the kit components involved. Decided by Frank, in chat 2026-10-18. Parked patterns stay logged until a use case appears.
Basic (24)
One box that jumps to any page, order or retailer, and runs actions.
Helper: H04 · CommandPalette · ComboboxPhone demoType an order number, customer or retailer from any page.
Helper: none · AppShell (header) · CommandPalettePhone demoj / k move rows, x selects, e edits, ? shows the list.
Helper: none · DataTable · AppShellPhone demoA strip of the last records you opened; pin the ones you keep going back to.
Helper: H01 · CommandPalette (Recent) · AppShellPhone demoSave a filter + columns as your own tab.
Helper: H01 · SavedViews · FilterBar · ColumnChooserPhone demoEvery filter is a removable chip, and the link reproduces the list.
Helper: none · FilterBar · PaginationPhone demoExports, imports, print runs and vision re-runs keep running while you work.
Helper: none · JobsButton · JobsDropdown · JobRow · JobsSheet · JobToastPhone demoSelect many rows, act once; big selections go in batches of 100.
Helper: H16 (dry-run improves it) · BulkBar · DataTablePhone demoPrint buttons show “preparing…”, then open the PDF in a new tab.
Helper: none · DocumentLink · PrintJobStatusPhone demoOpen a record in a panel over the list; pin it to keep list and record side by side.
Helper: none · SplitPane · RecordHeaderPhone demoRest on a retailer or order name to see the key facts, no click.
Helper: none · ColumnTypes · RecordHeaderPhone demoOrder numbers, fabric codes, batch IDs copy with one click.
Helper: none · ColumnTypes · RecordHeaderPhone demoWho changed what and when, before → after, on every record.
Helper: H02 · Timeline · AuditRow · DiffViewerPhone demoAn empty list says why, and gives the one button that fixes it.
Helper: none · EmptyState · ErrorState · NotAvailablePhone demoCompact (30px rows) for big tables, comfortable for reading.
Helper: H01 · AppShell (toolbar) · DataTablePhone demoChange a value in place; it saves, and “Undo” stays on screen.
Helper: none · InlineEditCell · DataTablePhone demoIf a colleague saved first, you see what changed and choose.
Helper: H03 · SaveBar · Banner · MeasurementGrid · DiffViewerPhone demoPlain confirm, then confirm with consequences, then type the words.
Helper: none · ConfirmDialog · MoneyInputPhone demoA dark bar slides up: how many changes, Save, Discard.
Helper: none · SaveBar · UnsavedGuard · FormSectionPhone demoA quiet dot says the list is live; if the connection drops, it says so.
Helper: none · Banner · AppShellPhone demo“3 h ago” in the list; hover shows the exact time in your zone and UTC.
Helper: none · DateTime · ClockButton · TimezoneSelectPhone demoEach person picks their language; menu, labels and dates follow.
Helper: none · LocaleToggle · BilingualFieldPhone demoPage change, sheet open, row expand, toast, progress: each with one crisp timing.
Helper: none · tokens.css motion tokens (every overlay)Phone demoThe table's shape appears at once, then fills in; no blank screen.
Helper: none · DataTable (loading) · statesPhone demoAdvanced (29)
Avatars on a record show who is viewing or editing it; a field someone is editing shows their name.
Helper: H07 (H03 hard guard) · RecordHeader · Banner · SaveBarPhone demoA thread on every order, retailer, design or fabric code; @name notifies.
Helper: H10, H08 · Thread · Combobox (@mention)Phone demoFollow an order, ticket or container; every status change lands in one inbox.
Helper: H11 · NotificationCentre · RecordHeaderPhone demoWhen London logs in, one card says what Shanghai changed on the orders they follow.
Helper: H12 (H11, H02) · NotificationCentre · TimelinePhone demoOrders, retailers, fabric codes, tickets and designs from one box: the header search bar / ⌘K.
Frank: Frank: "I thought you'd give me that in the search bar anyway, a really cool search bar." Delivered inside the header search bar / ⌘K, not as a separate page.
Helper: H04 · CommandPalette · Combobox · AppShell (header search)Phone demoType a sentence; ⌘K turns it into a filter you can open or an action you confirm.
Helper: H05 (H04, H09) · CommandPalettePhone demoAfter holding one order with a reason, ⌘. repeats the same action on the next.
Helper: none · CommandPalette · JobToastPhone demoPin the counts you care about (my on-hold orders, QC late) on your own home.
Helper: H01, H06 · KpiTile · SortableList · FilterBarPhone demoEvery order row shows how long it has sat in its phase against the target.
Helper: H09 · DataTable · ColumnTypes · KpiTilePhone demoOne plain-language timeline: what put the order in this state.
Helper: H13 (H09) · Timeline · RecordHeaderPhone demoDrag back through a record's history, see each change, restore one value.
Helper: H02, H14 · Timeline · DiffViewerPhone demo“Release this hold at 09:00 Shanghai”: pick a time in any zone.
Helper: H15 · CronBuilder · DateTimePhone demoEvery bulk action shows “288 will change, 24 already set, 3 skipped” before you confirm.
Helper: H16 · BulkBar · ConfirmDialogPhone demoAfter a bulk change, one button puts every row back the way it was.
Helper: H17 (own before-values; H02 optional) · BulkBar · JobToast · JobRow · TimelinePhone demoWallet credits over a limit, voids and revoke-all wait for a second person.
Helper: H18 · ConfirmDialog · MoneyInput · TimelinePhone demoA super admin previews the menu and buttons exactly as a support user sees them.
Helper: H20 · AppShell · BannerPhone demoPaste 50 rows straight from a sheet; every cell is checked before anything is saved.
Helper: H21 · ImportFlow · ReviewStep · MatrixEditorPhone demoThe second time you import a sheet with the same headers, the mapping is already done.
Frank: Cool, use case unconfirmed (Frank).
Helper: H01 · ImportFlowPhone demoA tiny 12-week line next to each retailer (orders) and factory (QC).
Frank: Cool, use case unconfirmed (Frank).
Helper: H22 · ColumnTypes (sparkline) · ChartFramePhone demoPick two designs, two retailers' pricing or two orders' measurements and see the differences.
Frank: Cool, use case unconfirmed (Frank).
Helper: none · DiffViewer · SplitPanePhone demoA strip under the filters counts the whole filtered set by status, express, factory.
Frank: Frank: "very useful".
Helper: H06 · FilterBar · KpiTile · DataTablePhone demoPoint the phone at an order or accessory QR label and the record opens.
Frank: Frank: exciting tech, needs a clear use case: who and for what.
Helper: H23 · QrDisplayPhone demoQC ticks and verdicts made offline wait in a queue and send when the connection returns.
Frank: Frank: "we don't need it".
Helper: H24 (H03) · Banner · JobToastPhone demoFlagged vision-check photos one at a time: swipe right PASS, left FAIL.
Helper: none · PhotoReview · VerdictButtonPhone demoStart an export or print run, close the tab; your device pings when it finishes.
Frank: Frank: more for a consumer app.
Helper: H25 · JobToast · NotificationCentrePhone demoLong tickets open with a 3-line summary and one suggested action.
Helper: H26 · Thread · AiSuggestPhone demoSmall flags where something looks off, such as a chest measurement far from the norm.
Helper: H19 (H09) · Banner · DataTable · ColumnTypesPhone demoOne thin line: jobs waiting, jobs failed, late scheduled tasks.
Helper: H27 · KpiTile · AppShellPhone demoWhen a cloth is out, show the three nearest in-stock cloths.
Helper: H28 · ClothPicker · SwatchPickerPhone demoBackend helpers
| Helper | Needed by | Request |
|---|---|---|
H01 | R1 saved views, density, recent / pinned · adv #08 My home | file now |
H02 | R1 activity side panel | file now |
H03 | R1 conflict banner (verify the 409 on staging) | file now |
H04 | adv #05 One search (header search bar / ⌘K) | file now |
H06 | adv #08 My home, adv #21 Totals for the filtered set | file now |
H16 | adv #13 Impact before a bulk write | file now |
H17 | adv #14 Undo a whole bulk run | file now |
H21 | adv #17 Paste from Excel | file now |
H22 | adv #19 Trends inside the table (maybe) | decide later |
Backlog, nothing adopted needs them: H05, H07, H08, H09, H10, H11, H12, H13, H14, H15, H18, H19, H20, H23, H24, H25, H26, H27, H28.