noecosystem-design 0.1.1 → 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 (119) hide show
  1. package/README.md +10 -9
  2. package/apps/showcase/src/catalog/catalog-index.tsx +5 -5
  3. package/apps/showcase/src/catalog/catalog-shell.tsx +7 -2
  4. package/apps/storybook/stories/catalog/calendar.stories.tsx +3 -1
  5. package/apps/storybook/stories/catalog/date-picker.stories.tsx +5 -1
  6. package/docs/design-system/README.md +1 -0
  7. package/docs/design-system/agent-guide.md +21 -21
  8. package/docs/design-system/gpt-agent-prompt.md +56 -0
  9. package/docs/design-system/inventory.md +0 -1
  10. package/llms.txt +9 -6
  11. package/package.json +2 -2
  12. package/packages/ai-ui/src/activity-feed.tsx +1 -2
  13. package/packages/ai-ui/src/agent-composer.tsx +1 -1
  14. package/packages/ai-ui/src/agent-message.tsx +1 -1
  15. package/packages/ai-ui/src/agent-plan.tsx +1 -1
  16. package/packages/ai-ui/src/agent-workspace.tsx +1 -2
  17. package/packages/ai-ui/src/approval-request.tsx +1 -1
  18. package/packages/ai-ui/src/run-inspector.tsx +1 -1
  19. package/packages/ai-ui/src/tool-call.tsx +1 -1
  20. package/packages/data-ui/src/activity-gauge.tsx +1 -1
  21. package/packages/data-ui/src/chart-frame.tsx +1 -1
  22. package/packages/data-ui/src/chart.tsx +1 -2
  23. package/packages/data-ui/src/dashboard-shell.tsx +1 -2
  24. package/packages/data-ui/src/data-table.tsx +1 -1
  25. package/packages/data-ui/src/filter-bar.tsx +1 -2
  26. package/packages/data-ui/src/metric-card.tsx +1 -1
  27. package/packages/data-ui/src/pagination.tsx +1 -3
  28. package/packages/data-ui/src/pie-chart.tsx +1 -1
  29. package/packages/data-ui/src/radar-chart.tsx +1 -1
  30. package/packages/design-tokens/src/palette.ts +4 -4
  31. package/packages/design-tokens/src/tokens.css +0 -6
  32. package/packages/registry/catalog-index.json +1 -1
  33. package/packages/registry/component-audit.json +1 -1
  34. package/packages/registry/docs-index.json +135 -403
  35. package/packages/registry/manifest.json +1642 -6110
  36. package/packages/registry/r/activity-feed.json +9 -32
  37. package/packages/registry/r/agent-composer.json +9 -34
  38. package/packages/registry/r/agent-message.json +9 -32
  39. package/packages/registry/r/agent-plan.json +9 -32
  40. package/packages/registry/r/agent-workspace.json +9 -32
  41. package/packages/registry/r/alert.json +9 -33
  42. package/packages/registry/r/app-frame.json +9 -32
  43. package/packages/registry/r/approval-request.json +9 -34
  44. package/packages/registry/r/badge.json +9 -33
  45. package/packages/registry/r/bidi-text.json +7 -25
  46. package/packages/registry/r/bottom-navigation.json +9 -32
  47. package/packages/registry/r/button.json +7 -29
  48. package/packages/registry/r/calendar.json +10 -37
  49. package/packages/registry/r/card.json +9 -32
  50. package/packages/registry/r/chart-frame.json +9 -32
  51. package/packages/registry/r/chart.json +8 -30
  52. package/packages/registry/r/code-block.json +9 -32
  53. package/packages/registry/r/context-menu.json +8 -36
  54. package/packages/registry/r/dashboard-01.json +7 -23
  55. package/packages/registry/r/dashboard-02.json +6 -20
  56. package/packages/registry/r/dashboard-shell.json +9 -32
  57. package/packages/registry/r/data-list.json +9 -32
  58. package/packages/registry/r/data-table.json +9 -32
  59. package/packages/registry/r/date-picker.json +10 -37
  60. package/packages/registry/r/dialog.json +11 -45
  61. package/packages/registry/r/direction-provider.json +6 -21
  62. package/packages/registry/r/drawer.json +10 -36
  63. package/packages/registry/r/dropdown.json +9 -37
  64. package/packages/registry/r/empty-state.json +9 -32
  65. package/packages/registry/r/error-state.json +9 -32
  66. package/packages/registry/r/fab.json +9 -34
  67. package/packages/registry/r/featured-icon.json +7 -29
  68. package/packages/registry/r/filter-bar.json +10 -35
  69. package/packages/registry/r/gradient-picker.json +7 -24
  70. package/packages/registry/r/header-navigation.json +9 -32
  71. package/packages/registry/r/hero-header.json +7 -25
  72. package/packages/registry/r/icon-system.json +8 -28
  73. package/packages/registry/r/image-picker.json +7 -24
  74. package/packages/registry/r/inline-cta.json +9 -32
  75. package/packages/registry/r/input.json +9 -33
  76. package/packages/registry/r/landing-page.json +6 -21
  77. package/packages/registry/r/login-page.json +9 -35
  78. package/packages/registry/r/marketing-header.json +8 -26
  79. package/packages/registry/r/menu.json +9 -34
  80. package/packages/registry/r/messaging.json +9 -33
  81. package/packages/registry/r/metric-card.json +9 -32
  82. package/packages/registry/r/mobile-screen.json +9 -32
  83. package/packages/registry/r/not-found.json +7 -25
  84. package/packages/registry/r/page-header.json +9 -32
  85. package/packages/registry/r/pagination.json +10 -37
  86. package/packages/registry/r/progress-steps.json +9 -33
  87. package/packages/registry/r/run-inspector.json +9 -32
  88. package/packages/registry/r/section-header.json +9 -32
  89. package/packages/registry/r/settings-01.json +5 -19
  90. package/packages/registry/r/settings-02.json +5 -19
  91. package/packages/registry/r/settings-page.json +9 -32
  92. package/packages/registry/r/sidebar-navigation.json +9 -32
  93. package/packages/registry/r/sign-in-form.json +9 -34
  94. package/packages/registry/r/skeleton.json +9 -32
  95. package/packages/registry/r/spinner.json +9 -32
  96. package/packages/registry/r/tabs.json +9 -34
  97. package/packages/registry/r/textarea.json +9 -33
  98. package/packages/registry/r/tool-call.json +9 -32
  99. package/packages/registry/r/tooltip.json +9 -33
  100. package/packages/registry/r/utility-button.json +9 -37
  101. package/packages/registry/r/workflow-canvas.json +9 -32
  102. package/packages/registry/r/workflow-node.json +9 -32
  103. package/packages/registry/registry.json +232 -937
  104. package/packages/registry/search-index.json +579 -2194
  105. package/packages/ui/package.json +4 -1
  106. package/packages/ui/src/date-picker.browser.test.tsx +1 -1
  107. package/packages/ui/src/date-picker.tsx +1 -2
  108. package/packages/ui/src/gradient-picker.tsx +6 -2
  109. package/packages/ui/src/theme-provider.browser.test.tsx +12 -4
  110. package/packages/ui/src/theme-provider.tsx +19 -5
  111. package/packages/workflow-ui/src/workflow-canvas.tsx +1 -1
  112. package/packages/workflow-ui/src/workflow-node.tsx +1 -1
  113. package/scripts/enrich-registry-payloads.mjs +9 -3
  114. package/scripts/fix-registry-closure.mjs +2 -1
  115. package/scripts/generate-manifest.mjs +5 -1
  116. package/scripts/validate-manifest.mjs +25 -8
  117. package/scripts/verify-registry-consumer.mjs +33 -7
  118. package/tests/e2e/catalog-typography.spec.ts +5 -2
  119. package/tsconfig.base.json +17 -51
package/README.md CHANGED
@@ -10,9 +10,10 @@ registry metadata, reference apps, documentation, and verification contracts.
10
10
  # Give a coding agent the NOE source context.
11
11
  npm install noecosystem-design
12
12
 
13
- # The agent starts with these two files after installation:
13
+ # The agent starts with these files after installation:
14
14
  cat node_modules/noecosystem-design/AGENTS.md
15
15
  cat node_modules/noecosystem-design/llms.txt
16
+ cat node_modules/noecosystem-design/docs/design-system/gpt-agent-prompt.md
16
17
 
17
18
  # For a writable, verifiable workspace, use a repository checkout.
18
19
  git clone https://github.com/NOrchestration/noe-design-system.git
@@ -26,13 +27,11 @@ Read [`AGENTS.md`](AGENTS.md) before changing code. Use [`llms.txt`](llms.txt) a
26
27
  retrieval map, then read the affected package and component records. The canonical
27
28
  catalog is [`packages/registry/manifest.json`](packages/registry/manifest.json).
28
29
 
29
- Give an agent this task instruction after installation:
30
-
31
- > Read `node_modules/noecosystem-design/AGENTS.md` and `llms.txt` first. Find the
32
- > requested capability in `packages/registry/manifest.json`, reuse the documented
33
- > NOE pattern where appropriate, and report the files consulted plus executed
34
- > verification. Do not treat the package as a runtime import or the external registry
35
- > URL as deployed.
30
+ For a GPT coding agent, copy
31
+ [`docs/design-system/gpt-agent-prompt.md`](docs/design-system/gpt-agent-prompt.md),
32
+ replace `<TARGET_REPOSITORY>` and `<DESCRIBE THE REQUESTED OUTCOME...>`, and send it
33
+ as one task prompt. The template carries static NOE context once; put only the
34
+ requested outcome, scope, and non-negotiable constraints in its `Task` section.
36
35
 
37
36
  ## What `noecosystem-design` is — and is not
38
37
 
@@ -87,4 +86,6 @@ packages/registry Canonical component catalog and install metadata
87
86
 
88
87
  See [`docs/design-system/README.md`](docs/design-system/README.md) for the focused
89
88
  documentation index and [`docs/design-system/agent-guide.md`](docs/design-system/agent-guide.md)
90
- for the complete coding-agent workflow.
89
+ for the coding-agent workflow. The ready-to-paste
90
+ [`docs/design-system/gpt-agent-prompt.md`](docs/design-system/gpt-agent-prompt.md)
91
+ is the recommended task wrapper for GPT.
@@ -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') },
@@ -11,6 +11,7 @@ The documentation describes the implementation in this repository and marks exte
11
11
  - `i18n.md`, `rtl.md`: locale, direction and bidi architecture.
12
12
  - `accessibility.md`: WCAG-oriented requirements.
13
13
  - `testing.md`, `visual-qa.md`: test and evidence strategy.
14
+ - `gpt-agent-prompt.md`: ready-to-paste GPT task wrapper with outcome, autonomy, output, and stop rules.
14
15
  - `registry.md`, `mcp.md`, `agent-guide.md`: coding-agent discovery and package/registry boundaries.
15
16
  - `ci-cd.md`, `security.md`: automation and governance.
16
17
  - `contributing.md`: change workflow.
@@ -1,5 +1,13 @@
1
1
  # Coding-agent guide
2
2
 
3
+ ## Start a GPT task
4
+
5
+ Copy [`gpt-agent-prompt.md`](gpt-agent-prompt.md), replace its target repository and
6
+ `Task` placeholder, and send it as one prompt. Put the requested outcome, scope, and
7
+ non-negotiable constraints in `Task`; do not re-paste this guide or `AGENTS.md`.
8
+ The prompt already defines the agent's success criteria, autonomy boundary, response
9
+ format, and stop rules.
10
+
3
11
  ## Scope and distribution
4
12
 
5
13
  `noecosystem-design` is an npm-distributed source snapshot for discovery, review, and
@@ -18,27 +26,19 @@ The first-party `@noe` registry has local generation and consumer-test evidence.
18
26
  documented external endpoint must be treated as unavailable until deployment and
19
27
  official-MCP installation evidence exist; see `registry.md` and ADR 0007.
20
28
 
21
- ## Required intake
22
-
23
- 1. Read `README.md`, `AGENTS.md`, and the relevant focused document from `llms.txt`.
24
- 2. Search `packages/registry/manifest.json` by capability, alias, and component name.
25
- 3. Read the candidate item's `useWhen`, `doNotUseWhen`, `alternatives`, dependency,
26
- accessibility, and internationalization fields before opening implementation files.
27
- 4. Inspect the owning `packages/<package>/src` source and its Storybook story.
28
- 5. If no capability fits, follow the component lookup order in `AGENTS.md` and record
29
- why reuse was not appropriate.
30
-
31
- ## Implementation protocol
32
-
33
- 1. Prefer an existing NOE component or product pattern; never create a competing
34
- primitive for Button, Dialog, DataTable, ToolCall, or Approval.
35
- 2. Use semantic tokens, logical CSS properties, and the canonical i18n layer. Keep
36
- unpredictable prose `dir=auto`; isolate URLs, IDs, code, paths, and commands LTR.
37
- 3. Preserve semantic DOM order. Pass direction explicitly to portals; do not use
38
- global `row-reverse` or global icon mirroring as an RTL fix.
39
- 4. Keep ordinary tool output progressively disclosed and do not expose raw tool JSON
40
- by default.
41
- 5. Update source, stories, component tests, registry metadata, and docs together.
29
+ ## Retrieval and implementation
30
+
31
+ Read `README.md`, `AGENTS.md`, and the focused documentation selected by `llms.txt`.
32
+ Search `packages/registry/manifest.json` by capability, alias, and component name.
33
+ For a candidate, read its `useWhen`, `doNotUseWhen`, `alternatives`, dependency,
34
+ accessibility, and internationalization contracts before inspecting its source and
35
+ Storybook story. If nothing fits, use the component lookup order in `AGENTS.md` and
36
+ record the reason reuse was unsuitable.
37
+
38
+ `AGENTS.md` defines the implementation constraints: reuse canonical components;
39
+ preserve semantic tokens, i18n, RTL/bidi, portal direction, and progressive disclosure;
40
+ and update the relevant source, stories, tests, registry metadata, and documentation
41
+ together. Do not duplicate those instructions in a task prompt.
42
42
 
43
43
  ## Evidence before completion
44
44
 
@@ -0,0 +1,56 @@
1
+ # GPT implementation prompt
2
+
3
+ Use this after `npm install noecosystem-design`. Replace the values in angle
4
+ brackets, then send the complete prompt to the coding agent. Keep the static
5
+ context below intact; put task-specific details only in `Task`.
6
+
7
+ ```text
8
+ Role
9
+ You are the NOE design-system implementation agent working in <TARGET_REPOSITORY>.
10
+ Use the installed noecosystem-design package as a read-only source of design-system
11
+ context.
12
+
13
+ Task
14
+ <DESCRIBE THE REQUESTED OUTCOME, SCOPE, AND ANY NON-NEGOTIABLE CONSTRAINTS>
15
+
16
+ Success criteria
17
+ - The requested outcome works in the target repository.
18
+ - Reuse the relevant NOE capability or established product pattern before creating
19
+ new UI.
20
+ - Preserve every applicable NOE contract, including tokens, i18n, RTL/bidi,
21
+ accessibility, stories, tests, registry metadata, and documentation.
22
+ - Run checks that are proportionate to the change and report only results actually
23
+ observed.
24
+
25
+ Context
26
+ 1. Read node_modules/noecosystem-design/AGENTS.md and llms.txt first.
27
+ 2. Search node_modules/noecosystem-design/packages/registry/manifest.json for the
28
+ requested capability. Read the matching record and focused documentation before
29
+ implementation files.
30
+ 3. AGENTS.md is the authoritative static constraint set. Follow it without restating
31
+ it in the response.
32
+
33
+ Constraints
34
+ - noecosystem-design is a source snapshot, not a runtime dependency. Do not import
35
+ from it; use a writable repository checkout for implementation work.
36
+ - Do not present the public @noe registry as deployed or installable without direct
37
+ deployment evidence.
38
+ - Do safe local investigation, edits, and validation autonomously. Ask before an
39
+ external write, destructive action, purchase, credential change, or material scope
40
+ expansion.
41
+
42
+ Response
43
+ Lead with the outcome. Then give:
44
+ - Changed: only the material files or behavior changed.
45
+ - Evidence: commands run and their observed results.
46
+ - Blockers or risks: only if they materially affect completion.
47
+
48
+ Stop rules
49
+ Ask one focused question only when a material decision cannot be safely inferred.
50
+ Otherwise, finish when the success criteria are met. If evidence is unavailable,
51
+ state the exact gap instead of implying completion.
52
+ ```
53
+
54
+ The prompt intentionally states the goal, constraints, autonomy boundary, expected
55
+ output, and stop conditions once. Do not append a second copy of `AGENTS.md`; direct
56
+ the agent to the installed file instead.
@@ -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/llms.txt CHANGED
@@ -15,18 +15,21 @@
15
15
 
16
16
  ## Retrieval order
17
17
 
18
- 1. `README.md` — package scope, start path, commands, and distribution boundaries.
19
- 2. `AGENTS.md` mandatory design-system constraints and definition of done.
20
- 3. `packages/registry/manifest.json` — capability search, ownership, use/do-not-use
18
+ 1. `docs/design-system/gpt-agent-prompt.md` — ready-to-paste task wrapper for GPT;
19
+ replace only its target repository and task fields.
20
+ 2. `README.md` — package scope, start path, commands, and distribution boundaries.
21
+ 3. `AGENTS.md` — mandatory design-system constraints and definition of done.
22
+ 4. `packages/registry/manifest.json` — capability search, ownership, use/do-not-use
21
23
  rules, accessibility, i18n, dependencies, and story references.
22
- 4. `packages/registry/r/<item>.json` — installable-item metadata and source closure.
23
- 5. The owning package source under `packages/` and its Storybook story under
24
+ 5. `packages/registry/r/<item>.json` — installable-item metadata and source closure.
25
+ 6. The owning package source under `packages/` and its Storybook story under
24
26
  `apps/storybook/stories/`.
25
27
 
26
28
  ## Focused documentation
27
29
 
28
30
  - Architecture and package boundaries: `docs/design-system/architecture.md`
29
- - Agent workflow: `docs/design-system/agent-guide.md`
31
+ - GPT task wrapper: `docs/design-system/gpt-agent-prompt.md`
32
+ - Agent workflow and retrieval: `docs/design-system/agent-guide.md`
30
33
  - Components and catalog terms: `docs/design-system/components.md`
31
34
  - Tokens and foundations: `docs/design-system/foundations.md`, `docs/design-system/tokens.md`
32
35
  - Locale, RTL, and bidi: `docs/design-system/i18n.md`, `docs/design-system/rtl.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noecosystem-design",
3
- "version": "0.1.1",
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",