noecosystem-design 0.2.3 → 0.3.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/README.md +2 -2
- package/apps/storybook/stories/catalog/checkbox.stories.tsx +7 -2
- package/apps/storybook/stories/catalog/data-table.stories.tsx +226 -3
- package/docs/design-system/components.md +32 -0
- package/docs/design-system/inventory.md +1 -0
- package/docs/design-system/visual-qa.md +6 -0
- package/package.json +1 -1
- package/packages/data-ui/package.json +6 -1
- package/packages/data-ui/src/data-table.tsx +2 -99
- package/packages/data-ui/src/pagination.tsx +2 -2
- package/packages/data-ui/src/table/adapters/tanstack.test.ts +116 -0
- package/packages/data-ui/src/table/adapters/tanstack.ts +179 -0
- package/packages/data-ui/src/table/contracts.ts +133 -0
- package/packages/data-ui/src/table/data-table-visual.evidence.browser.test.tsx +157 -0
- package/packages/data-ui/src/table/data-table.browser.test.tsx +180 -0
- package/packages/data-ui/src/table/data-table.tsx +524 -0
- package/packages/design-tokens/src/tokens.css +10 -4
- package/packages/design-tokens/src/tokens.json +8 -4
- package/packages/design-tokens/src/tokens.mjs +8 -4
- package/packages/registry/catalog-index.json +2 -2
- package/packages/registry/manifest.json +60 -18
- package/packages/registry/r/activity-feed.json +1 -1
- package/packages/registry/r/agent-composer.json +7 -1
- package/packages/registry/r/agent-message.json +1 -1
- package/packages/registry/r/agent-plan.json +1 -1
- package/packages/registry/r/agent-workspace.json +1 -1
- package/packages/registry/r/approval-request.json +7 -1
- package/packages/registry/r/calendar.json +6 -5
- package/packages/registry/r/chart-frame.json +1 -1
- package/packages/registry/r/chart.json +1 -1
- package/packages/registry/r/dashboard-01.json +22 -2
- package/packages/registry/r/dashboard-02.json +22 -2
- package/packages/registry/r/dashboard-shell.json +1 -1
- package/packages/registry/r/data-table.json +22 -2
- package/packages/registry/r/date-picker.json +6 -5
- package/packages/registry/r/filter-bar.json +1 -1
- package/packages/registry/r/inline-cta.json +6 -6
- package/packages/registry/r/metric-card.json +1 -1
- package/packages/registry/r/pagination.json +7 -5
- package/packages/registry/r/run-inspector.json +1 -1
- package/packages/registry/r/tool-call.json +1 -1
- package/packages/registry/r/workflow-canvas.json +1 -1
- package/packages/registry/r/workflow-node.json +1 -1
- package/packages/registry/registry.json +12 -3
- package/packages/registry/search-index.json +23 -8
- package/packages/ui/package.json +5 -1
- package/packages/ui/src/checkbox.tsx +1 -1
- package/scripts/generate-manifest.mjs +71 -0
- package/vitest.config.ts +5 -0
|
@@ -119,6 +119,76 @@ function toTitle(id) {
|
|
|
119
119
|
|
|
120
120
|
// Enrichment database — semantic, agent-friendly metadata per spec
|
|
121
121
|
const enrichments = {
|
|
122
|
+
'data-table': {
|
|
123
|
+
description:
|
|
124
|
+
'Semantic data table with TanStack Table v9 as a headless engine behind the internal NOE adapter: sorting, NOE filter operators, controlled pagination, stable-id selection, loading skeletons and server mode.',
|
|
125
|
+
capabilityAliases: ['data table', 'sortable table', 'server-side table', 'grid'],
|
|
126
|
+
searchTerms: [
|
|
127
|
+
'data-table',
|
|
128
|
+
'table',
|
|
129
|
+
'sorting',
|
|
130
|
+
'filtering',
|
|
131
|
+
'pagination',
|
|
132
|
+
'selection',
|
|
133
|
+
'server-side',
|
|
134
|
+
'aria-sort',
|
|
135
|
+
],
|
|
136
|
+
useWhen: [
|
|
137
|
+
'tabular product data with sorting, filtering, pagination or row selection',
|
|
138
|
+
'server-driven pages composed from toDataQuery against Django APIs',
|
|
139
|
+
],
|
|
140
|
+
doNotUseWhen: [
|
|
141
|
+
'spreadsheet-style cell editing grids',
|
|
142
|
+
'static lists without tabular semantics',
|
|
143
|
+
],
|
|
144
|
+
alternatives: ['DataList'],
|
|
145
|
+
variants: ['regular', 'compact'],
|
|
146
|
+
states: ['default', 'hover', 'loading', 'selected', 'empty', 'focus-visible'],
|
|
147
|
+
tokenContracts: [
|
|
148
|
+
'color.border',
|
|
149
|
+
'color.foreground',
|
|
150
|
+
'color.muted-foreground',
|
|
151
|
+
'surface.sunken',
|
|
152
|
+
'muted',
|
|
153
|
+
],
|
|
154
|
+
propsSummary: {
|
|
155
|
+
columns: 'DataColumn<Row>[]',
|
|
156
|
+
rows: 'Row[]',
|
|
157
|
+
caption: 'string',
|
|
158
|
+
empty: 'ReactNode',
|
|
159
|
+
sorting: 'readonly DataSort[]',
|
|
160
|
+
filters: 'readonly FilterSpec[]',
|
|
161
|
+
page: 'PageSpec',
|
|
162
|
+
selection: 'readonly RowId[]',
|
|
163
|
+
density: "'compact' | 'regular'",
|
|
164
|
+
loading: 'boolean',
|
|
165
|
+
manualSorting: 'boolean',
|
|
166
|
+
manualFiltering: 'boolean',
|
|
167
|
+
manualPagination: 'boolean',
|
|
168
|
+
totalRowCount: 'number',
|
|
169
|
+
},
|
|
170
|
+
accessibility: {
|
|
171
|
+
role: 'table',
|
|
172
|
+
keyboard: [
|
|
173
|
+
'Tab moves into the scrollable region',
|
|
174
|
+
'Enter/Space on header toggles sort',
|
|
175
|
+
'Enter/Space on checkbox toggles row selection',
|
|
176
|
+
],
|
|
177
|
+
announcements: ['aria-sort on sorted column headers', 'aria-live pagination status'],
|
|
178
|
+
focusBehavior: ['visible ring 2px', 'scroll container focusable for keyboard overflow'],
|
|
179
|
+
},
|
|
180
|
+
internationalization: {
|
|
181
|
+
messageKeys: [],
|
|
182
|
+
rtl: 'required',
|
|
183
|
+
bidiNotes: [
|
|
184
|
+
'logical start/end alignment only',
|
|
185
|
+
'technical cells render dir=ltr via TechnicalValue',
|
|
186
|
+
'pagination controls use caller-provided accessible labels',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
relatedPatterns: ['filter-bar', 'pagination', 'empty-state'],
|
|
190
|
+
untitledMapping: null,
|
|
191
|
+
},
|
|
122
192
|
'bidi-text': {
|
|
123
193
|
description:
|
|
124
194
|
'Mixed-direction content primitives for user text, URLs, hashes, commands and technical identifiers with explicit LTR isolation.',
|
|
@@ -815,6 +885,7 @@ function defaultEnrichment(auditItem) {
|
|
|
815
885
|
const registryDeps = [];
|
|
816
886
|
const peerDeps = ['react'];
|
|
817
887
|
if (pkg === '@noe/data-ui') deps.push('@noe/ui');
|
|
888
|
+
if (auditItem.id === 'data-table') deps.push('@tanstack/react-table');
|
|
818
889
|
if (pkg === '@noe/ai-ui') deps.push('@noe/ui');
|
|
819
890
|
if (pkg === '@noe/workflow-ui') deps.push('@noe/ui');
|
|
820
891
|
if (auditItem.id === 'pagination' || auditItem.id === 'fab' || auditItem.id === 'filter-bar')
|
package/vitest.config.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { dirname } from 'node:path';
|
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
|
|
4
4
|
import react from '@vitejs/plugin-react';
|
|
5
|
+
import tailwindcss from '@tailwindcss/vite';
|
|
5
6
|
import { playwright } from '@vitest/browser-playwright';
|
|
6
7
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
7
8
|
import { defineConfig } from 'vitest/config';
|
|
@@ -46,6 +47,9 @@ export default defineConfig({
|
|
|
46
47
|
},
|
|
47
48
|
},
|
|
48
49
|
{
|
|
50
|
+
// Tailwind expands `@import "tailwindcss"` so component browser tests and
|
|
51
|
+
// visual evidence render with the real NOE utility classes, matching Storybook.
|
|
52
|
+
plugins: [tailwindcss()],
|
|
49
53
|
optimizeDeps: {
|
|
50
54
|
entries: ['apps/**/*.browser.test.tsx', 'packages/**/*.browser.test.tsx'],
|
|
51
55
|
},
|
|
@@ -83,6 +87,7 @@ export default defineConfig({
|
|
|
83
87
|
provider: playwright(),
|
|
84
88
|
headless: true,
|
|
85
89
|
instances: [{ browser: 'chromium' }],
|
|
90
|
+
viewport: { width: 1280, height: 900 },
|
|
86
91
|
},
|
|
87
92
|
},
|
|
88
93
|
},
|