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.
Files changed (49) hide show
  1. package/README.md +2 -2
  2. package/apps/storybook/stories/catalog/checkbox.stories.tsx +7 -2
  3. package/apps/storybook/stories/catalog/data-table.stories.tsx +226 -3
  4. package/docs/design-system/components.md +32 -0
  5. package/docs/design-system/inventory.md +1 -0
  6. package/docs/design-system/visual-qa.md +6 -0
  7. package/package.json +1 -1
  8. package/packages/data-ui/package.json +6 -1
  9. package/packages/data-ui/src/data-table.tsx +2 -99
  10. package/packages/data-ui/src/pagination.tsx +2 -2
  11. package/packages/data-ui/src/table/adapters/tanstack.test.ts +116 -0
  12. package/packages/data-ui/src/table/adapters/tanstack.ts +179 -0
  13. package/packages/data-ui/src/table/contracts.ts +133 -0
  14. package/packages/data-ui/src/table/data-table-visual.evidence.browser.test.tsx +157 -0
  15. package/packages/data-ui/src/table/data-table.browser.test.tsx +180 -0
  16. package/packages/data-ui/src/table/data-table.tsx +524 -0
  17. package/packages/design-tokens/src/tokens.css +10 -4
  18. package/packages/design-tokens/src/tokens.json +8 -4
  19. package/packages/design-tokens/src/tokens.mjs +8 -4
  20. package/packages/registry/catalog-index.json +2 -2
  21. package/packages/registry/manifest.json +60 -18
  22. package/packages/registry/r/activity-feed.json +1 -1
  23. package/packages/registry/r/agent-composer.json +7 -1
  24. package/packages/registry/r/agent-message.json +1 -1
  25. package/packages/registry/r/agent-plan.json +1 -1
  26. package/packages/registry/r/agent-workspace.json +1 -1
  27. package/packages/registry/r/approval-request.json +7 -1
  28. package/packages/registry/r/calendar.json +6 -5
  29. package/packages/registry/r/chart-frame.json +1 -1
  30. package/packages/registry/r/chart.json +1 -1
  31. package/packages/registry/r/dashboard-01.json +22 -2
  32. package/packages/registry/r/dashboard-02.json +22 -2
  33. package/packages/registry/r/dashboard-shell.json +1 -1
  34. package/packages/registry/r/data-table.json +22 -2
  35. package/packages/registry/r/date-picker.json +6 -5
  36. package/packages/registry/r/filter-bar.json +1 -1
  37. package/packages/registry/r/inline-cta.json +6 -6
  38. package/packages/registry/r/metric-card.json +1 -1
  39. package/packages/registry/r/pagination.json +7 -5
  40. package/packages/registry/r/run-inspector.json +1 -1
  41. package/packages/registry/r/tool-call.json +1 -1
  42. package/packages/registry/r/workflow-canvas.json +1 -1
  43. package/packages/registry/r/workflow-node.json +1 -1
  44. package/packages/registry/registry.json +12 -3
  45. package/packages/registry/search-index.json +23 -8
  46. package/packages/ui/package.json +5 -1
  47. package/packages/ui/src/checkbox.tsx +1 -1
  48. package/scripts/generate-manifest.mjs +71 -0
  49. package/vitest.config.ts +5 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifestVersion": "1.0.0",
3
- "generatedAt": "2026-08-29T09:30:43.923Z",
3
+ "generatedAt": "2026-08-30T12:09:40.530Z",
4
4
  "generatedNote": "Canonical NOE manifest — single source of truth for catalog, audit, registry, stories, docs and agent search. Generated by pnpm gen:manifest; do not edit by hand for automated fields.",
5
5
  "items": [
6
6
  {
@@ -1027,33 +1027,75 @@
1027
1027
  "status": "available",
1028
1028
  "maturity": "beta",
1029
1029
  "category": "Data",
1030
- "description": "Data Table Data component. data-table provides data behavior with RTL, i18n and accessibility built-in.",
1031
- "capabilityAliases": ["data table", "data-table"],
1032
- "searchTerms": ["data-table", "data table", "data"],
1033
- "useWhen": ["using data table in Data"],
1034
- "doNotUseWhen": ["when data table semantics do not match"],
1035
- "alternatives": [],
1036
- "dependencies": ["@noe/ui"],
1030
+ "description": "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.",
1031
+ "capabilityAliases": ["data table", "sortable table", "server-side table", "grid"],
1032
+ "searchTerms": [
1033
+ "data-table",
1034
+ "table",
1035
+ "sorting",
1036
+ "filtering",
1037
+ "pagination",
1038
+ "selection",
1039
+ "server-side",
1040
+ "aria-sort"
1041
+ ],
1042
+ "useWhen": [
1043
+ "tabular product data with sorting, filtering, pagination or row selection",
1044
+ "server-driven pages composed from toDataQuery against Django APIs"
1045
+ ],
1046
+ "doNotUseWhen": [
1047
+ "spreadsheet-style cell editing grids",
1048
+ "static lists without tabular semantics"
1049
+ ],
1050
+ "alternatives": ["DataList"],
1051
+ "dependencies": ["@noe/ui", "@tanstack/react-table"],
1037
1052
  "registryDependencies": [],
1038
1053
  "peerDependencies": ["react"],
1039
1054
  "propsSummary": {
1040
- "label": "string | ReactNode",
1041
- "children": "ReactNode"
1055
+ "columns": "DataColumn<Row>[]",
1056
+ "rows": "Row[]",
1057
+ "caption": "string",
1058
+ "empty": "ReactNode",
1059
+ "sorting": "readonly DataSort[]",
1060
+ "filters": "readonly FilterSpec[]",
1061
+ "page": "PageSpec",
1062
+ "selection": "readonly RowId[]",
1063
+ "density": "'compact' | 'regular'",
1064
+ "loading": "boolean",
1065
+ "manualSorting": "boolean",
1066
+ "manualFiltering": "boolean",
1067
+ "manualPagination": "boolean",
1068
+ "totalRowCount": "number"
1042
1069
  },
1043
- "variants": ["default"],
1070
+ "variants": ["regular", "compact"],
1044
1071
  "sizes": [],
1045
1072
  "slots": [],
1046
- "states": ["default", "hover", "focus-visible", "disabled"],
1047
- "tokenContracts": ["color.foreground", "color.border"],
1073
+ "states": ["default", "hover", "loading", "selected", "empty", "focus-visible"],
1074
+ "tokenContracts": [
1075
+ "color.border",
1076
+ "color.foreground",
1077
+ "color.muted-foreground",
1078
+ "surface.sunken",
1079
+ "muted"
1080
+ ],
1048
1081
  "accessibility": {
1049
- "keyboard": ["Tab to focus", "Enter/Space activate"],
1050
- "announcements": [],
1051
- "focusBehavior": ["visible ring 2px"]
1082
+ "role": "table",
1083
+ "keyboard": [
1084
+ "Tab moves into the scrollable region",
1085
+ "Enter/Space on header toggles sort",
1086
+ "Enter/Space on checkbox toggles row selection"
1087
+ ],
1088
+ "announcements": ["aria-sort on sorted column headers", "aria-live pagination status"],
1089
+ "focusBehavior": ["visible ring 2px", "scroll container focusable for keyboard overflow"]
1052
1090
  },
1053
1091
  "internationalization": {
1054
1092
  "messageKeys": [],
1055
1093
  "rtl": "required",
1056
- "bidiNotes": ["logical properties", "no global mirror"]
1094
+ "bidiNotes": [
1095
+ "logical start/end alignment only",
1096
+ "technical cells render dir=ltr via TechnicalValue",
1097
+ "pagination controls use caller-provided accessible labels"
1098
+ ]
1057
1099
  },
1058
1100
  "examples": [
1059
1101
  {
@@ -1062,7 +1104,7 @@
1062
1104
  "files": ["apps/storybook/stories/catalog/data-table.stories.tsx"]
1063
1105
  }
1064
1106
  ],
1065
- "relatedPatterns": [],
1107
+ "relatedPatterns": ["filter-bar", "pagination", "empty-state"],
1066
1108
  "untitledMapping": null,
1067
1109
  "storyId": "catalog-data-data-table--default",
1068
1110
  "registryItem": "data-table"
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/ai-ui",
@@ -27,7 +27,13 @@
27
27
  }
28
28
  ],
29
29
  "registryDependencies": [],
30
- "dependencies": ["@base-ui/react", "class-variance-authority", "clsx", "tailwind-merge"],
30
+ "dependencies": [
31
+ "@base-ui/react",
32
+ "@noe/ui",
33
+ "class-variance-authority",
34
+ "clsx",
35
+ "tailwind-merge"
36
+ ],
31
37
  "status": "available",
32
38
  "maturity": "beta",
33
39
  "package": "@noe/ai-ui",
@@ -22,7 +22,7 @@
22
22
  }
23
23
  ],
24
24
  "registryDependencies": [],
25
- "dependencies": ["clsx", "tailwind-merge"],
25
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
26
26
  "status": "available",
27
27
  "maturity": "beta",
28
28
  "package": "@noe/ai-ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/ai-ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/ai-ui",
@@ -32,7 +32,13 @@
32
32
  }
33
33
  ],
34
34
  "registryDependencies": [],
35
- "dependencies": ["@base-ui/react", "class-variance-authority", "clsx", "tailwind-merge"],
35
+ "dependencies": [
36
+ "@base-ui/react",
37
+ "@noe/ui",
38
+ "class-variance-authority",
39
+ "clsx",
40
+ "tailwind-merge"
41
+ ],
36
42
  "status": "available",
37
43
  "maturity": "beta",
38
44
  "package": "@noe/ai-ui",
@@ -4,9 +4,10 @@
4
4
  "type": "registry:ui",
5
5
  "title": "Calendar",
6
6
  "description": "Calendar — Base / Pickers component. calendar provides base / pickers behavior with RTL, i18n and accessibility built-in.",
7
- "registryDependencies": [],
7
+ "registryDependencies": ["icon-system"],
8
8
  "dependencies": [
9
9
  "@base-ui/react",
10
+ "@noe/icons",
10
11
  "class-variance-authority",
11
12
  "clsx",
12
13
  "iconsax-react",
@@ -14,14 +15,14 @@
14
15
  ],
15
16
  "files": [
16
17
  {
17
- "path": "packages/icons/src/index.tsx",
18
+ "path": "packages/icons/src/iconsax.tsx",
18
19
  "type": "registry:component",
19
- "target": "packages/icons/src/index.tsx"
20
+ "target": "packages/icons/src/iconsax.tsx"
20
21
  },
21
22
  {
22
- "path": "packages/icons/src/iconsax.tsx",
23
+ "path": "packages/icons/src/index.tsx",
23
24
  "type": "registry:component",
24
- "target": "packages/icons/src/iconsax.tsx"
25
+ "target": "packages/icons/src/index.tsx"
25
26
  },
26
27
  {
27
28
  "path": "packages/ui/src/button.tsx",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/data-ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/data-ui",
@@ -30,6 +30,26 @@
30
30
  "type": "registry:component",
31
31
  "target": "packages/data-ui/src/metric-card.tsx"
32
32
  },
33
+ {
34
+ "path": "packages/data-ui/src/pagination.tsx",
35
+ "type": "registry:component",
36
+ "target": "packages/data-ui/src/pagination.tsx"
37
+ },
38
+ {
39
+ "path": "packages/data-ui/src/table/adapters/tanstack.ts",
40
+ "type": "registry:component",
41
+ "target": "packages/data-ui/src/table/adapters/tanstack.ts"
42
+ },
43
+ {
44
+ "path": "packages/data-ui/src/table/contracts.ts",
45
+ "type": "registry:component",
46
+ "target": "packages/data-ui/src/table/contracts.ts"
47
+ },
48
+ {
49
+ "path": "packages/data-ui/src/table/data-table.tsx",
50
+ "type": "registry:component",
51
+ "target": "packages/data-ui/src/table/data-table.tsx"
52
+ },
33
53
  {
34
54
  "path": "packages/ui/src/bidi.tsx",
35
55
  "type": "registry:component",
@@ -41,8 +61,8 @@
41
61
  "target": "packages/ui/src/lib/cn.ts"
42
62
  }
43
63
  ],
44
- "registryDependencies": [],
45
- "dependencies": ["clsx", "tailwind-merge"],
64
+ "registryDependencies": ["icon-system"],
65
+ "dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge"],
46
66
  "status": "available",
47
67
  "maturity": "beta",
48
68
  "package": "@noe/data-ui",
@@ -30,6 +30,26 @@
30
30
  "type": "registry:component",
31
31
  "target": "packages/data-ui/src/metric-card.tsx"
32
32
  },
33
+ {
34
+ "path": "packages/data-ui/src/pagination.tsx",
35
+ "type": "registry:component",
36
+ "target": "packages/data-ui/src/pagination.tsx"
37
+ },
38
+ {
39
+ "path": "packages/data-ui/src/table/adapters/tanstack.ts",
40
+ "type": "registry:component",
41
+ "target": "packages/data-ui/src/table/adapters/tanstack.ts"
42
+ },
43
+ {
44
+ "path": "packages/data-ui/src/table/contracts.ts",
45
+ "type": "registry:component",
46
+ "target": "packages/data-ui/src/table/contracts.ts"
47
+ },
48
+ {
49
+ "path": "packages/data-ui/src/table/data-table.tsx",
50
+ "type": "registry:component",
51
+ "target": "packages/data-ui/src/table/data-table.tsx"
52
+ },
33
53
  {
34
54
  "path": "packages/ui/src/bidi.tsx",
35
55
  "type": "registry:component",
@@ -41,8 +61,8 @@
41
61
  "target": "packages/ui/src/lib/cn.ts"
42
62
  }
43
63
  ],
44
- "registryDependencies": [],
45
- "dependencies": ["clsx", "tailwind-merge"],
64
+ "registryDependencies": ["icon-system"],
65
+ "dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge"],
46
66
  "status": "available",
47
67
  "maturity": "beta",
48
68
  "package": "@noe/data-ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/data-ui",
@@ -10,6 +10,26 @@
10
10
  "type": "registry:component",
11
11
  "target": "packages/data-ui/src/data-table.tsx"
12
12
  },
13
+ {
14
+ "path": "packages/data-ui/src/pagination.tsx",
15
+ "type": "registry:component",
16
+ "target": "packages/data-ui/src/pagination.tsx"
17
+ },
18
+ {
19
+ "path": "packages/data-ui/src/table/adapters/tanstack.ts",
20
+ "type": "registry:component",
21
+ "target": "packages/data-ui/src/table/adapters/tanstack.ts"
22
+ },
23
+ {
24
+ "path": "packages/data-ui/src/table/contracts.ts",
25
+ "type": "registry:component",
26
+ "target": "packages/data-ui/src/table/contracts.ts"
27
+ },
28
+ {
29
+ "path": "packages/data-ui/src/table/data-table.tsx",
30
+ "type": "registry:component",
31
+ "target": "packages/data-ui/src/table/data-table.tsx"
32
+ },
13
33
  {
14
34
  "path": "packages/ui/src/bidi.tsx",
15
35
  "type": "registry:component",
@@ -21,8 +41,8 @@
21
41
  "target": "packages/ui/src/lib/cn.ts"
22
42
  }
23
43
  ],
24
- "registryDependencies": [],
25
- "dependencies": ["clsx", "tailwind-merge"],
44
+ "registryDependencies": ["icon-system"],
45
+ "dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge", "@tanstack/react-table"],
26
46
  "status": "available",
27
47
  "maturity": "beta",
28
48
  "package": "@noe/data-ui",
@@ -4,9 +4,10 @@
4
4
  "type": "registry:ui",
5
5
  "title": "Date Picker",
6
6
  "description": "Date Picker — Base / Pickers component. date-picker provides base / pickers behavior with RTL, i18n and accessibility built-in.",
7
- "registryDependencies": [],
7
+ "registryDependencies": ["icon-system"],
8
8
  "dependencies": [
9
9
  "@base-ui/react",
10
+ "@noe/icons",
10
11
  "class-variance-authority",
11
12
  "clsx",
12
13
  "iconsax-react",
@@ -14,14 +15,14 @@
14
15
  ],
15
16
  "files": [
16
17
  {
17
- "path": "packages/icons/src/index.tsx",
18
+ "path": "packages/icons/src/iconsax.tsx",
18
19
  "type": "registry:component",
19
- "target": "packages/icons/src/index.tsx"
20
+ "target": "packages/icons/src/iconsax.tsx"
20
21
  },
21
22
  {
22
- "path": "packages/icons/src/iconsax.tsx",
23
+ "path": "packages/icons/src/index.tsx",
23
24
  "type": "registry:component",
24
- "target": "packages/icons/src/iconsax.tsx"
25
+ "target": "packages/icons/src/index.tsx"
25
26
  },
26
27
  {
27
28
  "path": "packages/ui/src/button.tsx",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": ["input"],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/data-ui",
@@ -6,14 +6,14 @@
6
6
  "description": "Inline call to action link with trailing logical chevron, tokenized, for use within prose.",
7
7
  "files": [
8
8
  {
9
- "path": "packages/icons/src/index.tsx",
9
+ "path": "packages/icons/src/iconsax.tsx",
10
10
  "type": "registry:component",
11
- "target": "packages/icons/src/index.tsx"
11
+ "target": "packages/icons/src/iconsax.tsx"
12
12
  },
13
13
  {
14
- "path": "packages/icons/src/iconsax.tsx",
14
+ "path": "packages/icons/src/index.tsx",
15
15
  "type": "registry:component",
16
- "target": "packages/icons/src/iconsax.tsx"
16
+ "target": "packages/icons/src/index.tsx"
17
17
  },
18
18
  {
19
19
  "path": "packages/ui/src/inline-cta.tsx",
@@ -26,8 +26,8 @@
26
26
  "target": "packages/ui/src/lib/cn.ts"
27
27
  }
28
28
  ],
29
- "registryDependencies": [],
30
- "dependencies": ["clsx", "iconsax-react", "tailwind-merge"],
29
+ "registryDependencies": ["icon-system"],
30
+ "dependencies": ["@noe/icons", "clsx", "iconsax-react", "tailwind-merge"],
31
31
  "status": "available",
32
32
  "maturity": "beta",
33
33
  "package": "@noe/ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/data-ui",
@@ -11,14 +11,14 @@
11
11
  "target": "packages/data-ui/src/pagination.tsx"
12
12
  },
13
13
  {
14
- "path": "packages/icons/src/index.tsx",
14
+ "path": "packages/icons/src/iconsax.tsx",
15
15
  "type": "registry:component",
16
- "target": "packages/icons/src/index.tsx"
16
+ "target": "packages/icons/src/iconsax.tsx"
17
17
  },
18
18
  {
19
- "path": "packages/icons/src/iconsax.tsx",
19
+ "path": "packages/icons/src/index.tsx",
20
20
  "type": "registry:component",
21
- "target": "packages/icons/src/iconsax.tsx"
21
+ "target": "packages/icons/src/index.tsx"
22
22
  },
23
23
  {
24
24
  "path": "packages/ui/src/button.tsx",
@@ -36,9 +36,11 @@
36
36
  "target": "packages/ui/src/spinner.tsx"
37
37
  }
38
38
  ],
39
- "registryDependencies": [],
39
+ "registryDependencies": ["icon-system"],
40
40
  "dependencies": [
41
41
  "@base-ui/react",
42
+ "@noe/icons",
43
+ "@noe/ui",
42
44
  "class-variance-authority",
43
45
  "clsx",
44
46
  "iconsax-react",
@@ -22,7 +22,7 @@
22
22
  }
23
23
  ],
24
24
  "registryDependencies": [],
25
- "dependencies": ["clsx", "tailwind-merge"],
25
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
26
26
  "status": "available",
27
27
  "maturity": "beta",
28
28
  "package": "@noe/ai-ui",
@@ -22,7 +22,7 @@
22
22
  }
23
23
  ],
24
24
  "registryDependencies": [],
25
- "dependencies": ["clsx", "tailwind-merge"],
25
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
26
26
  "status": "available",
27
27
  "maturity": "beta",
28
28
  "package": "@noe/ai-ui",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "registryDependencies": [],
20
- "dependencies": ["clsx", "tailwind-merge"],
20
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
21
21
  "status": "available",
22
22
  "maturity": "beta",
23
23
  "package": "@noe/workflow-ui",
@@ -22,7 +22,7 @@
22
22
  }
23
23
  ],
24
24
  "registryDependencies": [],
25
- "dependencies": ["clsx", "tailwind-merge"],
25
+ "dependencies": ["@noe/ui", "clsx", "tailwind-merge"],
26
26
  "status": "available",
27
27
  "maturity": "beta",
28
28
  "package": "@noe/workflow-ui",
@@ -133,11 +133,20 @@
133
133
  "target": "packages/data-ui/src/data-table.tsx"
134
134
  }
135
135
  ],
136
- "dependencies": ["@noe/ui"],
136
+ "dependencies": ["@noe/ui", "@tanstack/react-table"],
137
137
  "peerDependencies": ["react"],
138
138
  "manifestId": "data-table",
139
- "capabilityAliases": ["data table", "data-table"],
140
- "searchTerms": ["data-table", "data table", "data"]
139
+ "capabilityAliases": ["data table", "sortable table", "server-side table", "grid"],
140
+ "searchTerms": [
141
+ "data-table",
142
+ "table",
143
+ "sorting",
144
+ "filtering",
145
+ "pagination",
146
+ "selection",
147
+ "server-side",
148
+ "aria-sort"
149
+ ]
141
150
  },
142
151
  {
143
152
  "name": "metric-card",
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-08-29T09:30:43.933Z",
2
+ "generatedAt": "2026-08-30T12:09:40.536Z",
3
3
  "items": [
4
4
  {
5
5
  "id": "bidi-text",
@@ -381,15 +381,30 @@
381
381
  "id": "data-table",
382
382
  "package": "@noe/data-ui",
383
383
  "title": "Data Table",
384
- "description": "Data Table Data component. data-table provides data behavior with RTL, i18n and accessibility built-in.",
384
+ "description": "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.",
385
385
  "category": "Data",
386
386
  "status": "available",
387
- "capabilityAliases": ["data table", "data-table"],
388
- "searchTerms": ["data-table", "data table", "data"],
389
- "useWhen": ["using data table in Data"],
390
- "doNotUseWhen": ["when data table semantics do not match"],
391
- "alternatives": [],
392
- "relatedPatterns": [],
387
+ "capabilityAliases": ["data table", "sortable table", "server-side table", "grid"],
388
+ "searchTerms": [
389
+ "data-table",
390
+ "table",
391
+ "sorting",
392
+ "filtering",
393
+ "pagination",
394
+ "selection",
395
+ "server-side",
396
+ "aria-sort"
397
+ ],
398
+ "useWhen": [
399
+ "tabular product data with sorting, filtering, pagination or row selection",
400
+ "server-driven pages composed from toDataQuery against Django APIs"
401
+ ],
402
+ "doNotUseWhen": [
403
+ "spreadsheet-style cell editing grids",
404
+ "static lists without tabular semantics"
405
+ ],
406
+ "alternatives": ["DataList"],
407
+ "relatedPatterns": ["filter-bar", "pagination", "empty-state"],
393
408
  "exportName": "DataTable",
394
409
  "registryItem": "data-table",
395
410
  "maturity": "beta"
@@ -24,6 +24,10 @@
24
24
  ".": "./src/index.ts",
25
25
  "./bidi": "./src/bidi.tsx",
26
26
  "./button": "./src/button.tsx",
27
- "./lib/cn": "./src/lib/cn.ts"
27
+ "./lib/cn": "./src/lib/cn.ts",
28
+ "./checkbox": "./src/checkbox.tsx",
29
+ "./skeleton": "./src/skeleton.tsx",
30
+ "./empty-state": "./src/empty-state.tsx",
31
+ "./input": "./src/input.tsx"
28
32
  }
29
33
  }
@@ -11,7 +11,7 @@ export function Checkbox({ className, label, ...props }: CheckboxProps) {
11
11
  className="size-4 rounded-sm border border-border bg-background focus-visible:outline-2 focus-visible:outline-focus-ring"
12
12
  {...props}
13
13
  />
14
- <span>{label ?? 'Checkbox'}</span>
14
+ <span>{label}</span>
15
15
  </label>
16
16
  );
17
17
  }