noecosystem-design 0.1.2 → 0.1.3

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 (114) hide show
  1. package/apps/showcase/src/catalog/catalog-index.tsx +5 -5
  2. package/apps/showcase/src/catalog/catalog-shell.tsx +7 -2
  3. package/apps/storybook/stories/catalog/calendar.stories.tsx +3 -1
  4. package/apps/storybook/stories/catalog/date-picker.stories.tsx +5 -1
  5. package/docs/design-system/inventory.md +0 -1
  6. package/package.json +2 -2
  7. package/packages/ai-ui/src/activity-feed.tsx +1 -2
  8. package/packages/ai-ui/src/agent-composer.tsx +1 -1
  9. package/packages/ai-ui/src/agent-message.tsx +1 -1
  10. package/packages/ai-ui/src/agent-plan.tsx +1 -1
  11. package/packages/ai-ui/src/agent-workspace.tsx +1 -2
  12. package/packages/ai-ui/src/approval-request.tsx +1 -1
  13. package/packages/ai-ui/src/run-inspector.tsx +1 -1
  14. package/packages/ai-ui/src/tool-call.tsx +1 -1
  15. package/packages/data-ui/src/activity-gauge.tsx +1 -1
  16. package/packages/data-ui/src/chart-frame.tsx +1 -1
  17. package/packages/data-ui/src/chart.tsx +1 -2
  18. package/packages/data-ui/src/dashboard-shell.tsx +1 -2
  19. package/packages/data-ui/src/data-table.tsx +1 -1
  20. package/packages/data-ui/src/filter-bar.tsx +1 -2
  21. package/packages/data-ui/src/metric-card.tsx +1 -1
  22. package/packages/data-ui/src/pagination.tsx +1 -3
  23. package/packages/data-ui/src/pie-chart.tsx +1 -1
  24. package/packages/data-ui/src/radar-chart.tsx +1 -1
  25. package/packages/design-tokens/src/palette.ts +4 -4
  26. package/packages/design-tokens/src/tokens.css +0 -6
  27. package/packages/registry/catalog-index.json +1 -1
  28. package/packages/registry/component-audit.json +1 -1
  29. package/packages/registry/docs-index.json +135 -403
  30. package/packages/registry/manifest.json +1642 -6110
  31. package/packages/registry/r/activity-feed.json +9 -32
  32. package/packages/registry/r/agent-composer.json +9 -34
  33. package/packages/registry/r/agent-message.json +9 -32
  34. package/packages/registry/r/agent-plan.json +9 -32
  35. package/packages/registry/r/agent-workspace.json +9 -32
  36. package/packages/registry/r/alert.json +9 -33
  37. package/packages/registry/r/app-frame.json +9 -32
  38. package/packages/registry/r/approval-request.json +9 -34
  39. package/packages/registry/r/badge.json +9 -33
  40. package/packages/registry/r/bidi-text.json +7 -25
  41. package/packages/registry/r/bottom-navigation.json +9 -32
  42. package/packages/registry/r/button.json +7 -29
  43. package/packages/registry/r/calendar.json +10 -37
  44. package/packages/registry/r/card.json +9 -32
  45. package/packages/registry/r/chart-frame.json +9 -32
  46. package/packages/registry/r/chart.json +8 -30
  47. package/packages/registry/r/code-block.json +9 -32
  48. package/packages/registry/r/context-menu.json +8 -36
  49. package/packages/registry/r/dashboard-01.json +7 -23
  50. package/packages/registry/r/dashboard-02.json +6 -20
  51. package/packages/registry/r/dashboard-shell.json +9 -32
  52. package/packages/registry/r/data-list.json +9 -32
  53. package/packages/registry/r/data-table.json +9 -32
  54. package/packages/registry/r/date-picker.json +10 -37
  55. package/packages/registry/r/dialog.json +11 -45
  56. package/packages/registry/r/direction-provider.json +6 -21
  57. package/packages/registry/r/drawer.json +10 -36
  58. package/packages/registry/r/dropdown.json +9 -37
  59. package/packages/registry/r/empty-state.json +9 -32
  60. package/packages/registry/r/error-state.json +9 -32
  61. package/packages/registry/r/fab.json +9 -34
  62. package/packages/registry/r/featured-icon.json +7 -29
  63. package/packages/registry/r/filter-bar.json +10 -35
  64. package/packages/registry/r/gradient-picker.json +7 -24
  65. package/packages/registry/r/header-navigation.json +9 -32
  66. package/packages/registry/r/hero-header.json +7 -25
  67. package/packages/registry/r/icon-system.json +8 -28
  68. package/packages/registry/r/image-picker.json +7 -24
  69. package/packages/registry/r/inline-cta.json +9 -32
  70. package/packages/registry/r/input.json +9 -33
  71. package/packages/registry/r/landing-page.json +6 -21
  72. package/packages/registry/r/login-page.json +9 -35
  73. package/packages/registry/r/marketing-header.json +8 -26
  74. package/packages/registry/r/menu.json +9 -34
  75. package/packages/registry/r/messaging.json +9 -33
  76. package/packages/registry/r/metric-card.json +9 -32
  77. package/packages/registry/r/mobile-screen.json +9 -32
  78. package/packages/registry/r/not-found.json +7 -25
  79. package/packages/registry/r/page-header.json +9 -32
  80. package/packages/registry/r/pagination.json +10 -37
  81. package/packages/registry/r/progress-steps.json +9 -33
  82. package/packages/registry/r/run-inspector.json +9 -32
  83. package/packages/registry/r/section-header.json +9 -32
  84. package/packages/registry/r/settings-01.json +5 -19
  85. package/packages/registry/r/settings-02.json +5 -19
  86. package/packages/registry/r/settings-page.json +9 -32
  87. package/packages/registry/r/sidebar-navigation.json +9 -32
  88. package/packages/registry/r/sign-in-form.json +9 -34
  89. package/packages/registry/r/skeleton.json +9 -32
  90. package/packages/registry/r/spinner.json +9 -32
  91. package/packages/registry/r/tabs.json +9 -34
  92. package/packages/registry/r/textarea.json +9 -33
  93. package/packages/registry/r/tool-call.json +9 -32
  94. package/packages/registry/r/tooltip.json +9 -33
  95. package/packages/registry/r/utility-button.json +9 -37
  96. package/packages/registry/r/workflow-canvas.json +9 -32
  97. package/packages/registry/r/workflow-node.json +9 -32
  98. package/packages/registry/registry.json +232 -937
  99. package/packages/registry/search-index.json +579 -2194
  100. package/packages/ui/package.json +4 -1
  101. package/packages/ui/src/date-picker.browser.test.tsx +1 -1
  102. package/packages/ui/src/date-picker.tsx +1 -2
  103. package/packages/ui/src/gradient-picker.tsx +6 -2
  104. package/packages/ui/src/theme-provider.browser.test.tsx +12 -4
  105. package/packages/ui/src/theme-provider.tsx +19 -5
  106. package/packages/workflow-ui/src/workflow-canvas.tsx +1 -1
  107. package/packages/workflow-ui/src/workflow-node.tsx +1 -1
  108. package/scripts/enrich-registry-payloads.mjs +9 -3
  109. package/scripts/fix-registry-closure.mjs +2 -1
  110. package/scripts/generate-manifest.mjs +5 -1
  111. package/scripts/validate-manifest.mjs +25 -8
  112. package/scripts/verify-registry-consumer.mjs +33 -7
  113. package/tests/e2e/catalog-typography.spec.ts +5 -2
  114. package/tsconfig.base.json +17 -51
@@ -261,9 +261,7 @@ export const catalogEntries: readonly CatalogEntry[] = [
261
261
  preview: ({ t }) => (
262
262
  <div style={{ display: 'grid', gap: '0.5rem', fontSize: '0.875rem' }}>
263
263
  <AutoDirectionText>{t('catalog.preview.bidi.autoText')}</AutoDirectionText>
264
- <BidiText>
265
- PR #482 {t('catalog.preview.bidi.related')}
266
- </BidiText>
264
+ <BidiText>PR #482 {t('catalog.preview.bidi.related')}</BidiText>
267
265
  <TechnicalValue>a1b2c3d4 · mcp://fs/read</TechnicalValue>
268
266
  <span dir="ltr" style={{ fontFamily: 'var(--font-sf-pro, var(--noe-font-family-sans))' }}>
269
267
  <LocalizedNumber value={128942.5} locale="en" /> ·{' '}
@@ -491,7 +489,9 @@ export const catalogEntries: readonly CatalogEntry[] = [
491
489
  package: '@noe/ui',
492
490
  registryItem: null,
493
491
  preview: () => (
494
- <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem', alignItems: 'center' }}>
492
+ <div
493
+ style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem', alignItems: 'center' }}
494
+ >
495
495
  <Card style={{ maxWidth: '20rem', width: '100%' }}>
496
496
  <CardHeader>
497
497
  <CardTitle>Syncing</CardTitle>
@@ -1646,7 +1646,7 @@ export const catalogEntries: readonly CatalogEntry[] = [
1646
1646
  description: 'Marketing header navigation with brand, links and actions.',
1647
1647
  package: '@noe/ui',
1648
1648
  registryItem: 'marketing-header',
1649
- preview: () => (
1649
+ preview: () => (
1650
1650
  <MarketingHeader
1651
1651
  brand={<span>NOE</span>}
1652
1652
  links={
@@ -96,7 +96,9 @@ export function CatalogShell({ initialEntries = catalogEntries }: CatalogShellPr
96
96
  try {
97
97
  return (
98
98
  typeof document !== 'undefined' &&
99
- (document as unknown as { fonts?: { check: (s: string) => boolean } }).fonts?.check(fontSpec) === true
99
+ (document as unknown as { fonts?: { check: (s: string) => boolean } }).fonts?.check(
100
+ fontSpec,
101
+ ) === true
100
102
  );
101
103
  } catch {
102
104
  return false;
@@ -109,7 +111,10 @@ export function CatalogShell({ initialEntries = catalogEntries }: CatalogShellPr
109
111
  markReady();
110
112
  return;
111
113
  }
112
- const hasLoad = typeof document !== 'undefined' && typeof (document as unknown as { fonts?: { load: (s: string) => Promise<unknown> } }).fonts?.load === 'function';
114
+ const hasLoad =
115
+ typeof document !== 'undefined' &&
116
+ typeof (document as unknown as { fonts?: { load: (s: string) => Promise<unknown> } }).fonts
117
+ ?.load === 'function';
113
118
  if (hasLoad) {
114
119
  let timedOut = false;
115
120
  const timeoutId = setTimeout(() => {
@@ -22,7 +22,9 @@ export const Jalali: Story = {
22
22
  };
23
23
  export const JalaliLeapDay: Story = {
24
24
  args: { calendar: 'persian', locale: 'fa-IR', value: new Date('2025-03-20T00:00:00Z') },
25
- render: () => <Calendar calendar="persian" locale="fa-IR" value={new Date('2025-03-20T00:00:00Z')} />,
25
+ render: () => (
26
+ <Calendar calendar="persian" locale="fa-IR" value={new Date('2025-03-20T00:00:00Z')} />
27
+ ),
26
28
  };
27
29
  export const WithMinMax: Story = {
28
30
  args: {
@@ -17,7 +17,11 @@ export const RTL: Story = {
17
17
  ),
18
18
  };
19
19
  export const WithMinMax: Story = {
20
- args: { min: new Date('2025-03-10T00:00:00Z'), max: new Date('2025-03-20T00:00:00Z'), value: new Date('2025-03-15T00:00:00Z') },
20
+ args: {
21
+ min: new Date('2025-03-10T00:00:00Z'),
22
+ max: new Date('2025-03-20T00:00:00Z'),
23
+ value: new Date('2025-03-15T00:00:00Z'),
24
+ },
21
25
  };
22
26
  export const Jalali: Story = {
23
27
  args: { calendar: 'persian', locale: 'fa-IR', value: new Date('2025-03-20T00:00:00Z') },
@@ -386,4 +386,3 @@ Total catalog entries: **129** · registry items: **67**
386
386
  - `fab`: Mobile-only floating action button anchored to the logical end edge above the bottom navigation, with safe-area padding and required accessible label.
387
387
  - `mobile-screen`: Single-column mobile page scaffold composing an app bar, scrollable content region, optional floating action button and bottom navigation.
388
388
  - `bottom-navigation`: Mobile-only bottom tab bar with current-page state, badges, icon slots and safe-area padding; hidden from the medium breakpoint upward.
389
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noecosystem-design",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "description": "Agent-readable NOE design-system source, registry metadata, and verification contracts.",
6
6
  "keywords": [
@@ -94,7 +94,7 @@
94
94
  "format": "biome format --write .",
95
95
  "format:check": "biome format .",
96
96
  "gen:inventory": "node scripts/generate-inventory.mjs",
97
- "gen:manifest": "node scripts/generate-manifest.mjs",
97
+ "gen:manifest": "node scripts/generate-manifest.mjs && biome format --write packages/registry/manifest.json packages/registry/component-audit.json packages/registry/search-index.json packages/registry/registry.json packages/registry/catalog-index.json packages/registry/docs-index.json",
98
98
  "validate:manifest": "node scripts/validate-manifest.mjs",
99
99
  "lint": "biome lint .",
100
100
  "typecheck": "tsc -p tsconfig.json --pretty false",
@@ -1,4 +1,3 @@
1
-
2
1
  import type * as React from 'react';
3
2
  import { cn } from '@noe/ui/lib/cn';
4
3
 
@@ -57,4 +56,4 @@ export function ActivityFeed({ label, items, className, ...props }: ActivityFeed
57
56
  ))}
58
57
  </ol>
59
58
  );
60
- }
59
+ }
@@ -51,4 +51,4 @@ export function AgentComposer({
51
51
  </div>
52
52
  </form>
53
53
  );
54
- }
54
+ }
@@ -47,4 +47,4 @@ export function AgentMessage({
47
47
  </AutoDirectionText>
48
48
  </article>
49
49
  );
50
- }
50
+ }
@@ -66,4 +66,4 @@ export function AgentPlan({
66
66
  </ol>
67
67
  </section>
68
68
  );
69
- }
69
+ }
@@ -1,4 +1,3 @@
1
-
2
1
  import type * as React from 'react';
3
2
  import { cn } from '@noe/ui/lib/cn';
4
3
 
@@ -60,4 +59,4 @@ export function AgentWorkspace({
60
59
  ) : null}
61
60
  </section>
62
61
  );
63
- }
62
+ }
@@ -90,4 +90,4 @@ export function ApprovalRequest({
90
90
  </footer>
91
91
  </section>
92
92
  );
93
- }
93
+ }
@@ -51,4 +51,4 @@ export function RunInspector({
51
51
  {children}
52
52
  </aside>
53
53
  );
54
- }
54
+ }
@@ -68,4 +68,4 @@ export function ToolCall({
68
68
  </div>
69
69
  </details>
70
70
  );
71
- }
71
+ }
@@ -35,4 +35,4 @@ export function ActivityGauge({ className, ...props }: React.ComponentProps<'div
35
35
  </table>
36
36
  </div>
37
37
  );
38
- }
38
+ }
@@ -38,4 +38,4 @@ export function ChartFrame({
38
38
  </div>
39
39
  </figure>
40
40
  );
41
- }
41
+ }
@@ -1,4 +1,3 @@
1
-
2
1
  import type * as React from 'react';
3
2
  import { cn } from '@noe/ui/lib/cn';
4
3
 
@@ -128,4 +127,4 @@ export function Chart({
128
127
  </div>
129
128
  </div>
130
129
  );
131
- }
130
+ }
@@ -1,4 +1,3 @@
1
-
2
1
  import type * as React from 'react';
3
2
  import { cn } from '@noe/ui/lib/cn';
4
3
 
@@ -53,4 +52,4 @@ export function DashboardShell({
53
52
  {pagination ? <div data-slot="dashboard-shell-pagination">{pagination}</div> : null}
54
53
  </section>
55
54
  );
56
- }
55
+ }
@@ -96,4 +96,4 @@ export function DataTable<Row extends { id: string }>({
96
96
  </table>
97
97
  </section>
98
98
  );
99
- }
99
+ }
@@ -1,4 +1,3 @@
1
-
2
1
  import type * as React from 'react';
3
2
  import { cn } from '@noe/ui/lib/cn';
4
3
 
@@ -25,4 +24,4 @@ export function FilterBar({ label, search, filters, action, className, ...props
25
24
  {action ? <div className="ms-auto flex items-center gap-2">{action}</div> : null}
26
25
  </search>
27
26
  );
28
- }
27
+ }
@@ -40,4 +40,4 @@ export function MetricCard({
40
40
  ) : null}
41
41
  </article>
42
42
  );
43
- }
43
+ }
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import type * as React from 'react';
4
2
  import { ChevronIcon } from '@noe/icons';
5
3
  import { Button } from '@noe/ui/button';
@@ -64,4 +62,4 @@ export function Pagination({
64
62
  </Button>
65
63
  </nav>
66
64
  );
67
- }
65
+ }
@@ -35,4 +35,4 @@ export function PieChart({ className, ...props }: React.ComponentProps<'div'>) {
35
35
  </table>
36
36
  </div>
37
37
  );
38
- }
38
+ }
@@ -35,4 +35,4 @@ export function RadarChart({ className, ...props }: React.ComponentProps<'div'>)
35
35
  </table>
36
36
  </div>
37
37
  );
38
- }
38
+ }
@@ -5,14 +5,14 @@
5
5
  * from this registry to avoid hard-coded duplication.
6
6
  */
7
7
 
8
- export const PALETTES = ["graphite"] as const;
8
+ export const PALETTES = ['graphite'] as const;
9
9
 
10
10
  export type Palette = (typeof PALETTES)[number];
11
11
 
12
- export const DEFAULT_PALETTE: Palette = "graphite";
12
+ export const DEFAULT_PALETTE: Palette = 'graphite';
13
13
 
14
- export const PALETTE_STORAGE_KEY = "noecosystem-palette";
15
- export const PALETTE_COOKIE_KEY = "noecosystem-palette";
14
+ export const PALETTE_STORAGE_KEY = 'noecosystem-palette';
15
+ export const PALETTE_COOKIE_KEY = 'noecosystem-palette';
16
16
 
17
17
  export function isPalette(value: unknown): value is Palette {
18
18
  return (PALETTES as readonly string[]).includes(value as string);
@@ -225,12 +225,6 @@
225
225
  }
226
226
  }
227
227
 
228
- /* Palette: Graphite is the only approved palette. Extendable via [data-noe-palette="..."] overrides. */
229
- :root,
230
- [data-noe-palette="graphite"] {
231
- /* No overrides — graphite uses the default semantic tokens above. */
232
- }
233
-
234
228
  /* Component tokens: stable customization seams. */
235
229
  :root {
236
230
  --noe-component-button-height: var(--noe-control-height-md);
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-08-28T08:46:14.843Z",
2
+ "generatedAt": "2026-08-29T07:21:18.551Z",
3
3
  "items": [
4
4
  {
5
5
  "id": "bidi-text",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://noecosystem.com/schema/component-audit.json",
3
- "generatedNote": "Canonical NOE public-component inventory. status=available requires a public export, a Storybook story at storyId, and (where distributable) a registry entry. Do not mark an item available without all three. (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json)",
3
+ "generatedNote": "Canonical NOE public-component inventory. status=available requires a public export, a Storybook story at storyId, and (where distributable) a registry entry. Do not mark an item available without all three. (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json) (derived from manifest.json)",
4
4
  "items": [
5
5
  {
6
6
  "id": "bidi-text",