| Page title + subtitle + actions | <PageHeader> (stacks on compact) |
| Mobile list instead of wide table | Card rows with md:hidden / hidden md:block |
| Side-by-side fields on compact | <FormGrid> from ~/components/form-grid |
| Form submit row on compact | <FormActions> from ~/components/form-actions |
| Invoice line editor | <InvoiceLineEditor> from ~/components/invoice-line-editor |
| Bordered container with header | <Card> + <CardHeader> + <CardBody> |
| Form input | <Input>, wrapped in <Field> |
| Multi-line text | <Textarea> inside <Field> |
| Picker | <Select> (styled native) |
| Currency in a cell | <Money cents={…} tone="…" /> |
| Status pill | `<Badge tone="positive |
| Table | <Table> + <THead> + <Th> + <Tr> + <Td> |
| Empty state | <EmptyState title hint action> |
| Inline SVG icon | <Icon d="..." size={…} /> |
| Modal | <ModalDialog title onClose> (exported from routes/_app/services.tsx) |