@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.
- package/dist/app-shell-core.css +1 -1
- package/dist/app-shell.d.ts +811 -131
- package/dist/app-shell.js +7155 -5797
- package/dist/{appshell-DLVBFo5J.js → appshell-CahhZy7v.js} +656 -524
- package/dist/semantic-contrast.test.ts +154 -0
- package/dist/style-entry.d.ts +147 -92
- package/dist/testing.d.ts +152 -95
- package/dist/testing.js +1 -1
- package/dist/theme-bridge.test.ts +101 -1
- package/dist/theme.bridge.css +91 -0
- package/dist/theme.css +6 -1
- package/dist/themes/_template.css +7 -1
- package/dist/themes/bloom.css +0 -6
- package/dist/themes/cream.css +0 -6
- package/dist/themes/default.css +389 -69
- package/dist/vite-plugin.d.ts +147 -92
- package/package.json +8 -8
- package/skills/app-shell-patterns/SKILL.md +108 -19
- package/skills/app-shell-patterns/references/api/create-ai-gateway-client.md +115 -0
- package/skills/app-shell-patterns/references/api/create-typed-paths.md +117 -0
- package/skills/app-shell-patterns/references/api/define-i18n-labels.md +143 -0
- package/skills/app-shell-patterns/references/api/define-module.md +247 -0
- package/skills/app-shell-patterns/references/api/define-resource.md +307 -0
- package/skills/app-shell-patterns/references/api/guards/hidden.md +202 -0
- package/skills/app-shell-patterns/references/api/guards/overview.md +354 -0
- package/skills/app-shell-patterns/references/api/guards/pass.md +129 -0
- package/skills/app-shell-patterns/references/api/guards/redirect-to.md +307 -0
- package/skills/app-shell-patterns/references/api/router/use-location.md +240 -0
- package/skills/app-shell-patterns/references/api/router/use-navigate.md +138 -0
- package/skills/app-shell-patterns/references/api/router/use-params.md +218 -0
- package/skills/app-shell-patterns/references/api/use-ai-chat.md +110 -0
- package/skills/app-shell-patterns/references/api/use-app-shell-config.md +132 -0
- package/skills/app-shell-patterns/references/api/use-app-shell-data.md +150 -0
- package/skills/app-shell-patterns/references/api/use-app-shell.md +150 -0
- package/skills/app-shell-patterns/references/api/use-auth.md +145 -0
- package/skills/app-shell-patterns/references/api/use-override-breadcrumb.md +74 -0
- package/skills/app-shell-patterns/references/api/use-page-meta.md +96 -0
- package/skills/app-shell-patterns/references/api/use-register-command-palette-actions.md +90 -0
- package/skills/app-shell-patterns/references/api/use-resolved-locale.md +67 -0
- package/skills/app-shell-patterns/references/api/use-route-error.md +214 -0
- package/skills/app-shell-patterns/references/api/use-theme.md +108 -0
- package/skills/app-shell-patterns/references/api/use-time-zone.md +80 -0
- package/skills/app-shell-patterns/references/api/use-toast.md +104 -0
- package/skills/app-shell-patterns/references/components/action-panel.md +168 -0
- package/skills/app-shell-patterns/references/components/activity-card.md +142 -0
- package/skills/app-shell-patterns/references/components/ai-chat.md +315 -0
- package/skills/app-shell-patterns/references/components/alert.md +202 -0
- package/skills/app-shell-patterns/references/components/app-shell.md +530 -0
- package/skills/app-shell-patterns/references/components/appearance-switcher.md +87 -0
- package/skills/app-shell-patterns/references/components/attachment.md +138 -0
- package/skills/app-shell-patterns/references/components/autocomplete.md +278 -0
- package/skills/app-shell-patterns/references/components/avatar.md +80 -0
- package/skills/app-shell-patterns/references/components/badge.md +309 -0
- package/skills/app-shell-patterns/references/components/button.md +164 -0
- package/skills/app-shell-patterns/references/components/card.md +181 -0
- package/skills/app-shell-patterns/references/components/checkbox.md +169 -0
- package/skills/app-shell-patterns/references/components/combobox.md +318 -0
- package/skills/app-shell-patterns/references/components/command-palette.md +413 -0
- package/skills/app-shell-patterns/references/components/csv-importer.md +214 -0
- package/skills/app-shell-patterns/references/components/data-table.md +1168 -0
- package/skills/app-shell-patterns/references/components/date-picker.md +259 -0
- package/skills/app-shell-patterns/references/components/default-header.md +75 -0
- package/skills/app-shell-patterns/references/components/default-sidebar.md +136 -0
- package/skills/app-shell-patterns/references/components/description-card.md +569 -0
- package/skills/app-shell-patterns/references/components/dialog.md +164 -0
- package/skills/app-shell-patterns/references/components/document-progress-card.md +154 -0
- package/skills/app-shell-patterns/references/components/filter-rail.md +165 -0
- package/skills/app-shell-patterns/references/components/form.md +378 -0
- package/skills/app-shell-patterns/references/components/global-header-layout.md +132 -0
- package/skills/app-shell-patterns/references/components/grid.md +184 -0
- package/skills/app-shell-patterns/references/components/input.md +83 -0
- package/skills/app-shell-patterns/references/components/layout.md +539 -0
- package/skills/app-shell-patterns/references/components/menu.md +218 -0
- package/skills/app-shell-patterns/references/components/metric-card.md +94 -0
- package/skills/app-shell-patterns/references/components/select.md +283 -0
- package/skills/app-shell-patterns/references/components/sheet.md +237 -0
- package/skills/app-shell-patterns/references/components/sidebar-group.md +472 -0
- package/skills/app-shell-patterns/references/components/sidebar-item.md +458 -0
- package/skills/app-shell-patterns/references/components/sidebar-layout.md +258 -0
- package/skills/app-shell-patterns/references/components/sidebar-section.md +114 -0
- package/skills/app-shell-patterns/references/components/spinner.md +81 -0
- package/skills/app-shell-patterns/references/components/table.md +188 -0
- package/skills/app-shell-patterns/references/components/tabs.md +158 -0
- package/skills/app-shell-patterns/references/components/textarea.md +122 -0
- package/skills/app-shell-patterns/references/components/timeline.md +317 -0
- package/skills/app-shell-patterns/references/components/toolbar.md +138 -0
- package/skills/app-shell-patterns/references/components/tooltip.md +144 -0
- package/skills/app-shell-patterns/references/components/with-guard.md +445 -0
- package/skills/app-shell-patterns/references/concepts/authentication.md +301 -0
- package/skills/app-shell-patterns/references/concepts/custom-components.md +59 -0
- package/skills/app-shell-patterns/references/concepts/file-based-routing.md +356 -0
- package/skills/app-shell-patterns/references/{fundamental → concepts}/graphql.md +31 -18
- package/skills/app-shell-patterns/references/concepts/modules-and-resources.md +229 -0
- package/skills/app-shell-patterns/references/concepts/routing-navigation.md +425 -0
- package/skills/app-shell-patterns/references/concepts/sidebar-navigation.md +420 -0
- package/skills/app-shell-patterns/references/concepts/styling-theming.md +785 -0
- package/skills/app-shell-patterns/references/migrations.md +55 -0
- package/skills/app-shell-patterns/references/pages/{detail.md → document-detail.md} +10 -33
- package/skills/app-shell-patterns/references/patterns/form-composer.md +43 -45
- package/skills/app-shell-patterns/references/patterns/form-modal.md +37 -92
- package/skills/app-shell-patterns/references/patterns/form-sectioned.md +12 -38
- package/skills/app-shell-patterns/references/patterns/form-single-page.md +11 -32
- package/skills/app-shell-patterns/references/patterns/form-wizard.md +12 -53
- package/skills/app-shell-patterns/references/patterns/interaction-confirm.md +11 -27
- package/skills/app-shell-patterns/references/patterns/interaction-multi-select.md +136 -139
- package/skills/app-shell-patterns/references/patterns/interaction-toast.md +10 -34
- package/skills/app-shell-patterns/references/patterns/list-dense-scan.md +13 -88
- package/skills/app-shell-patterns/references/fundamental/components.md +0 -1009
- package/skills/app-shell-patterns/references/fundamental/design-system.md +0 -440
|
@@ -1,35 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
24
|
+
```tsx
|
|
25
|
+
function DenseScan() {
|
|
26
|
+
const table = useDataTable({ data: { rows: orders, total: orders.length }, columns });
|
|
98
27
|
|
|
99
28
|
return (
|
|
100
|
-
|
|
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"
|
|
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
|
|
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
|
|
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
|