@tailor-platform/app-shell 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/app-shell-core.css +1 -1
  2. package/dist/app-shell.d.ts +811 -131
  3. package/dist/app-shell.js +7155 -5797
  4. package/dist/{appshell-DLVBFo5J.js → appshell-CahhZy7v.js} +656 -524
  5. package/dist/semantic-contrast.test.ts +154 -0
  6. package/dist/style-entry.d.ts +147 -92
  7. package/dist/testing.d.ts +152 -95
  8. package/dist/testing.js +1 -1
  9. package/dist/theme-bridge.test.ts +101 -1
  10. package/dist/theme.bridge.css +91 -0
  11. package/dist/theme.css +6 -1
  12. package/dist/themes/_template.css +7 -1
  13. package/dist/themes/bloom.css +0 -6
  14. package/dist/themes/cream.css +0 -6
  15. package/dist/themes/default.css +389 -69
  16. package/dist/vite-plugin.d.ts +147 -92
  17. package/package.json +8 -8
  18. package/skills/app-shell-patterns/SKILL.md +108 -19
  19. package/skills/app-shell-patterns/references/api/create-ai-gateway-client.md +115 -0
  20. package/skills/app-shell-patterns/references/api/create-typed-paths.md +117 -0
  21. package/skills/app-shell-patterns/references/api/define-i18n-labels.md +143 -0
  22. package/skills/app-shell-patterns/references/api/define-module.md +247 -0
  23. package/skills/app-shell-patterns/references/api/define-resource.md +307 -0
  24. package/skills/app-shell-patterns/references/api/guards/hidden.md +202 -0
  25. package/skills/app-shell-patterns/references/api/guards/overview.md +354 -0
  26. package/skills/app-shell-patterns/references/api/guards/pass.md +129 -0
  27. package/skills/app-shell-patterns/references/api/guards/redirect-to.md +307 -0
  28. package/skills/app-shell-patterns/references/api/router/use-location.md +240 -0
  29. package/skills/app-shell-patterns/references/api/router/use-navigate.md +138 -0
  30. package/skills/app-shell-patterns/references/api/router/use-params.md +218 -0
  31. package/skills/app-shell-patterns/references/api/use-ai-chat.md +110 -0
  32. package/skills/app-shell-patterns/references/api/use-app-shell-config.md +132 -0
  33. package/skills/app-shell-patterns/references/api/use-app-shell-data.md +150 -0
  34. package/skills/app-shell-patterns/references/api/use-app-shell.md +150 -0
  35. package/skills/app-shell-patterns/references/api/use-auth.md +145 -0
  36. package/skills/app-shell-patterns/references/api/use-override-breadcrumb.md +74 -0
  37. package/skills/app-shell-patterns/references/api/use-page-meta.md +96 -0
  38. package/skills/app-shell-patterns/references/api/use-register-command-palette-actions.md +90 -0
  39. package/skills/app-shell-patterns/references/api/use-resolved-locale.md +67 -0
  40. package/skills/app-shell-patterns/references/api/use-route-error.md +214 -0
  41. package/skills/app-shell-patterns/references/api/use-theme.md +108 -0
  42. package/skills/app-shell-patterns/references/api/use-time-zone.md +80 -0
  43. package/skills/app-shell-patterns/references/api/use-toast.md +104 -0
  44. package/skills/app-shell-patterns/references/components/action-panel.md +168 -0
  45. package/skills/app-shell-patterns/references/components/activity-card.md +142 -0
  46. package/skills/app-shell-patterns/references/components/ai-chat.md +315 -0
  47. package/skills/app-shell-patterns/references/components/alert.md +202 -0
  48. package/skills/app-shell-patterns/references/components/app-shell.md +530 -0
  49. package/skills/app-shell-patterns/references/components/appearance-switcher.md +87 -0
  50. package/skills/app-shell-patterns/references/components/attachment.md +138 -0
  51. package/skills/app-shell-patterns/references/components/autocomplete.md +278 -0
  52. package/skills/app-shell-patterns/references/components/avatar.md +80 -0
  53. package/skills/app-shell-patterns/references/components/badge.md +309 -0
  54. package/skills/app-shell-patterns/references/components/button.md +164 -0
  55. package/skills/app-shell-patterns/references/components/card.md +181 -0
  56. package/skills/app-shell-patterns/references/components/checkbox.md +169 -0
  57. package/skills/app-shell-patterns/references/components/combobox.md +318 -0
  58. package/skills/app-shell-patterns/references/components/command-palette.md +413 -0
  59. package/skills/app-shell-patterns/references/components/csv-importer.md +214 -0
  60. package/skills/app-shell-patterns/references/components/data-table.md +1168 -0
  61. package/skills/app-shell-patterns/references/components/date-picker.md +259 -0
  62. package/skills/app-shell-patterns/references/components/default-header.md +75 -0
  63. package/skills/app-shell-patterns/references/components/default-sidebar.md +136 -0
  64. package/skills/app-shell-patterns/references/components/description-card.md +569 -0
  65. package/skills/app-shell-patterns/references/components/dialog.md +164 -0
  66. package/skills/app-shell-patterns/references/components/document-progress-card.md +154 -0
  67. package/skills/app-shell-patterns/references/components/filter-rail.md +165 -0
  68. package/skills/app-shell-patterns/references/components/form.md +378 -0
  69. package/skills/app-shell-patterns/references/components/global-header-layout.md +132 -0
  70. package/skills/app-shell-patterns/references/components/grid.md +184 -0
  71. package/skills/app-shell-patterns/references/components/input.md +83 -0
  72. package/skills/app-shell-patterns/references/components/layout.md +539 -0
  73. package/skills/app-shell-patterns/references/components/menu.md +218 -0
  74. package/skills/app-shell-patterns/references/components/metric-card.md +94 -0
  75. package/skills/app-shell-patterns/references/components/select.md +283 -0
  76. package/skills/app-shell-patterns/references/components/sheet.md +237 -0
  77. package/skills/app-shell-patterns/references/components/sidebar-group.md +472 -0
  78. package/skills/app-shell-patterns/references/components/sidebar-item.md +458 -0
  79. package/skills/app-shell-patterns/references/components/sidebar-layout.md +258 -0
  80. package/skills/app-shell-patterns/references/components/sidebar-section.md +114 -0
  81. package/skills/app-shell-patterns/references/components/spinner.md +81 -0
  82. package/skills/app-shell-patterns/references/components/table.md +188 -0
  83. package/skills/app-shell-patterns/references/components/tabs.md +158 -0
  84. package/skills/app-shell-patterns/references/components/textarea.md +122 -0
  85. package/skills/app-shell-patterns/references/components/timeline.md +317 -0
  86. package/skills/app-shell-patterns/references/components/toolbar.md +138 -0
  87. package/skills/app-shell-patterns/references/components/tooltip.md +144 -0
  88. package/skills/app-shell-patterns/references/components/with-guard.md +445 -0
  89. package/skills/app-shell-patterns/references/concepts/authentication.md +301 -0
  90. package/skills/app-shell-patterns/references/concepts/custom-components.md +59 -0
  91. package/skills/app-shell-patterns/references/concepts/file-based-routing.md +356 -0
  92. package/skills/app-shell-patterns/references/{fundamental → concepts}/graphql.md +31 -18
  93. package/skills/app-shell-patterns/references/concepts/modules-and-resources.md +229 -0
  94. package/skills/app-shell-patterns/references/concepts/routing-navigation.md +425 -0
  95. package/skills/app-shell-patterns/references/concepts/sidebar-navigation.md +420 -0
  96. package/skills/app-shell-patterns/references/concepts/styling-theming.md +785 -0
  97. package/skills/app-shell-patterns/references/migrations.md +55 -0
  98. package/skills/app-shell-patterns/references/pages/{detail.md → document-detail.md} +10 -33
  99. package/skills/app-shell-patterns/references/patterns/form-composer.md +43 -45
  100. package/skills/app-shell-patterns/references/patterns/form-modal.md +37 -92
  101. package/skills/app-shell-patterns/references/patterns/form-sectioned.md +12 -38
  102. package/skills/app-shell-patterns/references/patterns/form-single-page.md +11 -32
  103. package/skills/app-shell-patterns/references/patterns/form-wizard.md +12 -53
  104. package/skills/app-shell-patterns/references/patterns/interaction-confirm.md +11 -27
  105. package/skills/app-shell-patterns/references/patterns/interaction-multi-select.md +136 -139
  106. package/skills/app-shell-patterns/references/patterns/interaction-toast.md +10 -34
  107. package/skills/app-shell-patterns/references/patterns/list-dense-scan.md +13 -88
  108. package/skills/app-shell-patterns/references/fundamental/components.md +0 -1009
  109. package/skills/app-shell-patterns/references/fundamental/design-system.md +0 -440
@@ -1,35 +1,11 @@
1
1
  ---
2
- slug: pattern/list/dense-scan
3
- name: Dense Scan List
4
- category: pattern
5
- subcategory: list
2
+ title: Dense Scan List
6
3
  description: High-density scannable list backed by GraphQL connections with DataTable, sort, filters, and pagination
7
- requiredImports:
8
- [
9
- DataTable,
10
- useDataTable,
11
- useCollectionVariables,
12
- createColumnHelper,
13
- Layout,
14
- Card,
15
- Button,
16
- Badge,
17
- Link,
18
- Menu,
19
- Tabs,
20
- ]
21
- tags: [table, bulk-action, filter, pagination, datatable, connection]
22
- do:
23
- - Browsing many records of one entity type (orders, POs, products) with GraphQL pagination
24
- - Operators sort, filter, and select rows; row click navigates to detail
25
- - Optionally a bucket control (Tabs) aligned to one categorical dimension (status, type)
26
- dont:
27
- - Side-by-side match/reconcile views comparing two grids
28
- - A tiny/static list where DataTable would be heavyweight — use Table.Root manually
29
- - Inline editable cells — use pattern/detail or pattern/form/modal instead
30
4
  ---
31
5
 
32
- # pattern/list/dense-scan
6
+ <!-- GENERATED by docs-kit from docs-src/patterns/list-dense-scan.docs.outline.md — do not edit by hand. -->
7
+
8
+ # Dense Scan List
33
9
 
34
10
  ## When to Use
35
11
 
@@ -39,73 +15,22 @@ dont:
39
15
 
40
16
  ## Column Definition
41
17
 
42
- ```tsx
43
- import type { Column } from "@tailor-platform/app-shell";
44
- import { Badge } from "@tailor-platform/app-shell";
45
-
46
- export type Order = {
47
- id: string;
48
- orderNumber: string;
49
- customer: string;
50
- status: "draft" | "confirmed" | "shipped" | "delivered";
51
- amount: number;
52
- createdAt: string;
53
- };
54
-
55
- // Primary status column — filled semantic variants (one per row).
56
- // Secondary status columns (e.g. delivery, billing) use outline-* instead.
57
- const statusVariant = {
58
- draft: "neutral",
59
- confirmed: "info",
60
- shipped: "warning",
61
- delivered: "success",
62
- } as const;
63
-
64
- export const columns: Column<Order>[] = [
65
- { label: "Order #", accessor: (row) => row.orderNumber },
66
- { label: "Customer", accessor: (row) => row.customer },
67
- {
68
- label: "Status",
69
- render: (row) => <Badge variant={statusVariant[row.status]}>{row.status}</Badge>,
70
- },
71
- {
72
- // Numeric columns right-align so digits line up. `type: "money" | "number"`
73
- // auto-right; with a custom `render` set `align` explicitly.
74
- label: "Amount",
75
- align: "right",
76
- render: (row) => `${row.amount.toLocaleString()}`,
77
- },
78
- { label: "Created", accessor: (row) => row.createdAt },
79
- ];
80
- ```
18
+ Columns are defined with `createColumnHelper` (see the example below) — each column has a `label` and an `accessor`, or a custom `render` for cells like status badges.
81
19
 
82
20
  ## Page Implementation
83
21
 
84
- ```tsx
85
- /* pattern: list/dense-scan */
86
- import { DataTable, Layout, useDataTable, Button, Input } from "@tailor-platform/app-shell";
87
- import type { Order } from "./columns";
88
- import { columns } from "./columns";
89
- import type { DataTableData } from "@tailor-platform/app-shell";
90
-
91
- type Props = {
92
- data: DataTableData<Order>;
93
- onCreateClick: () => void;
94
- };
22
+ <example-preview name="dense-scan"></example-preview>
95
23
 
96
- export default function DenseScanList({ data, onCreateClick }: Props) {
97
- const table = useDataTable({ data, columns });
24
+ ```tsx
25
+ function DenseScan() {
26
+ const table = useDataTable({ data: { rows: orders, total: orders.length }, columns });
98
27
 
99
28
  return (
100
- // `fill` pins the page chrome for table-first pages: the title, toolbar,
101
- // column header row, and pagination footer stay visible at every viewport
102
- // height — only the table's rows region scrolls. Omit `fill` on pages
103
- // that should flow and scroll naturally (forms, dashboards, articles).
104
- <Layout fill>
29
+ <Layout>
105
30
  <Layout.Header
106
31
  title="Orders"
107
32
  actions={[
108
- <Button key="create" onClick={onCreateClick}>
33
+ <Button key="create" size="sm">
109
34
  Create Order
110
35
  </Button>,
111
36
  ]}
@@ -142,7 +67,7 @@ Omit `fill` on pages that should flow and scroll naturally (forms, dashboards, a
142
67
  - **Toolbar chips only (`DataTable.Filters`)** — best when filters map cleanly to typed column metadata / enum facets
143
68
  - **Tabs only above `DataTable`** — best when workflows are organized as obvious buckets
144
69
  - **Tabs + chips** — when buckets are primary and finer filters help
145
- - **Bulk selection** — `onSelectionChange` hook on `useDataTable`; combine with `interaction/multi-select`
70
+ - **Bulk actions** — `rowSelection.actions` on `useDataTable` turns `DataTable.Footer` into a bulk-action bar while rows are selected; see `interaction/multi-select`
146
71
  - **`Table` primitives** — small static lists without collection hooks
147
72
 
148
73
  ## Constraints
@@ -152,7 +77,7 @@ Omit `fill` on pages that should flow and scroll naturally (forms, dashboards, a
152
77
  - Table-first pages use `<Layout fill>` so title/toolbar/header/footer stay pinned and only rows scroll
153
78
  - Handle every state: `DataTable` renders the loading skeleton and error row; always provide a **labelled empty state** (what the list is + how to add the first record) rather than a bare empty table
154
79
  - Status Badge colors must use design system tokens (variant prop): the **primary** status column uses **filled** semantic variants; **secondary** status columns (delivery, billing) use **`outline-*`** (see `design-system.md` → Composition & emphasis rules)
155
- - Bulk actions toolbar appears only when ≥1 row is selected
80
+ - Bulk actions go in the footer bar from `rowSelection.actions`, which appears only while ≥1 row is selected — never a separate toolbar or floating bar
156
81
  - Whole row is clickable via `onClickRow`; wrap the primary identifier cell in `<Link>` for keyboard/SR access. No per-row "View" / "Open" buttons
157
82
  - Per-row `Menu` (overflow `…`) is reserved for non-navigation actions (Archive, Duplicate, Delete)
158
83
  - Wide lists (many columns / horizontal scroll): pin the column users scan by to the **left** — the record's identifier (invoice / order **reference**) or its **name** (customer, product) — so it stays anchored while the rest scrolls; optionally pin a single high-signal **status** or **total** to the **right**. Keep the pinned set small (≈1 left, at most 1 right) — over-pinning eats the scroll area. Let users override via `<DataTable.Toolbar columnSettings>` (show/hide + reorder + re-pin) with a stable `tableId` so each user's layout persists