@vadimcomanescu/nadicode-design-system 2.0.9 → 4.0.1

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 (154) hide show
  1. package/.agents/skills/seed/SKILL.md +24 -14
  2. package/.agents/skills/seed/contract.md +19 -6
  3. package/.agents/skills/seed/recipes/agency-home.md +5 -5
  4. package/.agents/skills/seed/recipes/auth.md +3 -3
  5. package/.agents/skills/seed/recipes/blog-content.md +2 -2
  6. package/.agents/skills/seed/recipes/company-about.md +3 -3
  7. package/.agents/skills/seed/recipes/company-contact.md +3 -3
  8. package/.agents/skills/seed/recipes/digital-workers.md +3 -3
  9. package/.agents/skills/seed/recipes/marketing-landing.md +8 -8
  10. package/.agents/skills/seed/recipes/marketing-shell.md +4 -4
  11. package/.agents/skills/seed/recipes/navigation-shell.md +3 -2
  12. package/.agents/skills/seed/recipes/pricing.md +4 -4
  13. package/.agents/skills/seed/recipes/service-detail.md +3 -3
  14. package/.agents/skills/seed/references/blocks.md +5 -5
  15. package/.agents/skills/seed/references/components.md +2 -2
  16. package/.agents/skills/seed/references/nextjs.md +2 -2
  17. package/README.md +3 -3
  18. package/contracts/consumer-intent-map.json +1 -2
  19. package/contracts/release-governance-baseline.json +3 -37
  20. package/dist/catalog/catalog.d.ts +2220 -0
  21. package/dist/catalog/catalog.js +1913 -0
  22. package/dist/catalog/components.d.ts +201 -0
  23. package/dist/catalog/components.js +407 -0
  24. package/dist/catalog/types.d.ts +4 -0
  25. package/dist/catalog/types.js +1 -0
  26. package/dist/chunk-224KPIOG.js +60 -0
  27. package/dist/chunk-25BOZMXA.js +169 -0
  28. package/dist/chunk-32OLQ7FC.js +130 -0
  29. package/dist/chunk-3JJBJ4VR.js +47 -0
  30. package/dist/chunk-3U56FXYC.js +30 -0
  31. package/dist/chunk-4MWKE6F5.js +86 -0
  32. package/dist/chunk-6HGSU24S.js +94 -0
  33. package/dist/chunk-7IADIXDV.js +168 -0
  34. package/dist/chunk-7NS3VFD7.js +86 -0
  35. package/dist/chunk-ALA6OM7K.js +134 -0
  36. package/dist/chunk-AN5TW4AL.js +50 -0
  37. package/dist/chunk-AWZFQQGN.js +167 -0
  38. package/dist/chunk-BRCBJ3S4.js +42 -0
  39. package/dist/chunk-BRICSLHJ.js +30 -0
  40. package/dist/chunk-BYEHHZZN.js +115 -0
  41. package/dist/chunk-C33GUEDY.js +149 -0
  42. package/dist/chunk-CUDMDYKE.js +150 -0
  43. package/dist/chunk-CVTMWSNS.js +145 -0
  44. package/dist/chunk-DEZXWNYF.js +165 -0
  45. package/dist/chunk-DNJEVMDY.js +40 -0
  46. package/dist/chunk-DNJOBML6.js +66 -0
  47. package/dist/chunk-FTGFOK6T.js +69 -0
  48. package/dist/{chunk-7A2RXKGH.js → chunk-GJ557DGH.js} +1 -1
  49. package/dist/chunk-HFBJ6L6O.js +104 -0
  50. package/dist/chunk-HPTHS7SX.js +52 -0
  51. package/dist/chunk-K4U67BVG.js +175 -0
  52. package/dist/chunk-KNR3WB5C.js +147 -0
  53. package/dist/chunk-KQ7ZC6EM.js +66 -0
  54. package/dist/chunk-LGW7FVG5.js +83 -0
  55. package/dist/chunk-LK2L3C7D.js +72 -0
  56. package/dist/chunk-LP6ZZYOQ.js +36 -0
  57. package/dist/chunk-LV4P7WVM.js +54 -0
  58. package/dist/chunk-MGSGCARB.js +164 -0
  59. package/dist/chunk-N3YFYMNZ.js +73 -0
  60. package/dist/{chunk-DSMGCFMJ.js → chunk-POFFOUQW.js} +2 -5
  61. package/dist/chunk-Q5IYBNA7.js +56 -0
  62. package/dist/chunk-QJCE7NZF.js +85 -0
  63. package/dist/chunk-QW5II6YK.js +96 -0
  64. package/dist/chunk-RMGDDOCD.js +138 -0
  65. package/dist/chunk-RNCX4JIE.js +70 -0
  66. package/dist/chunk-RWCL5OPX.js +112 -0
  67. package/dist/chunk-S5OY2B63.js +28 -0
  68. package/dist/chunk-SIQNG72C.js +257 -0
  69. package/dist/chunk-SP7NIZFP.js +117 -0
  70. package/dist/chunk-SWRJWMGG.js +30 -0
  71. package/dist/chunk-TCQIJ3DO.js +85 -0
  72. package/dist/chunk-TPJ6JJ2F.js +290 -0
  73. package/dist/chunk-UR43ANYS.js +159 -0
  74. package/dist/chunk-VRGPG2YN.js +79 -0
  75. package/dist/chunk-WSBLCWY7.js +126 -0
  76. package/dist/chunk-XKKFSFYO.js +93 -0
  77. package/dist/chunk-XO7TBM47.js +32 -0
  78. package/dist/chunk-YDYDGG5K.js +132 -0
  79. package/dist/chunk-YMJOUYMT.js +171 -0
  80. package/dist/chunk-Z2WION42.js +32 -0
  81. package/dist/chunk-ZFKSVEYW.js +35 -0
  82. package/dist/components/blocks/AgentProfileGridBlock.js +8 -86
  83. package/dist/components/blocks/AgentRunOverviewBlock.js +8 -147
  84. package/dist/components/blocks/AgentWorkbenchBlock.js +15 -257
  85. package/dist/components/blocks/AudioVisualizerBlock.js +2 -50
  86. package/dist/components/blocks/AuthLayout.js +9 -73
  87. package/dist/components/blocks/BannerBlock.js +8 -66
  88. package/dist/components/blocks/BarChartBlock.js +5 -47
  89. package/dist/components/blocks/ChartBlock.js +7 -54
  90. package/dist/components/blocks/ChartCollectionBlock.js +11 -171
  91. package/dist/components/blocks/ChatLayout.js +12 -126
  92. package/dist/components/blocks/CreateBlock.js +9 -104
  93. package/dist/components/blocks/DataGridBlock.js +9 -117
  94. package/dist/components/blocks/DirectoryBlock.js +12 -85
  95. package/dist/components/blocks/FeatureGridBlock.js +6 -56
  96. package/dist/components/blocks/GalleryBlock.js +6 -69
  97. package/dist/components/blocks/HeroBlock.js +2 -2
  98. package/dist/components/blocks/HeroSectionBlock.js +10 -134
  99. package/dist/components/blocks/IntegrationsBlock.js +13 -94
  100. package/dist/components/blocks/InteractiveAreaChartBlock.js +5 -290
  101. package/dist/components/blocks/KanbanDemoBlock.js +8 -145
  102. package/dist/components/blocks/LogoCloud.js +4 -35
  103. package/dist/components/blocks/NavUser.js +5 -85
  104. package/dist/components/blocks/NotFoundBlock.js +8 -32
  105. package/dist/components/blocks/OnboardingBlock.js +7 -66
  106. package/dist/components/blocks/SettingsLayout.js +13 -86
  107. package/dist/components/blocks/SignUpBlock.js +8 -168
  108. package/dist/components/blocks/SolutionShowcaseBlock.js +11 -112
  109. package/dist/components/blocks/StatsBlock.js +6 -60
  110. package/dist/components/blocks/UsageDonutBlock.js +5 -79
  111. package/dist/components/blocks/WizardBlock.js +12 -93
  112. package/dist/components/blocks/user/InviteUserModal.js +10 -132
  113. package/dist/components/page-kits/AccountLockedPageKit.js +3 -40
  114. package/dist/components/page-kits/AgentsChatPageKit.js +11 -159
  115. package/dist/components/page-kits/AnalyticsPageKit.js +12 -150
  116. package/dist/components/page-kits/BlogContentPageKit.js +12 -167
  117. package/dist/components/page-kits/CheckoutPageKit.js +9 -83
  118. package/dist/components/page-kits/CompanySuitePageKit.js +9 -96
  119. package/dist/components/page-kits/DashboardPageKit.js +11 -149
  120. package/dist/components/page-kits/ErrorPageKit.js +5 -52
  121. package/dist/components/page-kits/KanbanBoardPageKit.js +7 -169
  122. package/dist/components/page-kits/LandingPageKit.js +12 -73
  123. package/dist/components/page-kits/LoginPageKit.js +3 -32
  124. package/dist/components/page-kits/OnboardingPageKit.js +6 -115
  125. package/dist/components/page-kits/PricingPageKit.js +12 -138
  126. package/dist/components/page-kits/ProfileSettingsPageKit.js +10 -164
  127. package/dist/components/page-kits/RecoveryPageKit.js +3 -42
  128. package/dist/components/page-kits/ResetPageKit.js +3 -36
  129. package/dist/components/page-kits/ServiceSuitePageKit.js +11 -176
  130. package/dist/components/page-kits/SignupPageKit.js +3 -30
  131. package/dist/components/page-kits/SuccessPageKit.js +4 -30
  132. package/dist/components/page-kits/TeamSettingsPageKit.js +9 -165
  133. package/dist/components/page-kits/TwoFactorPageKit.js +4 -28
  134. package/dist/components/page-kits/VerifyEmailPageKit.js +4 -30
  135. package/dist/components/page-kits/VoiceAgentsPageKit.js +13 -130
  136. package/dist/components/ui/AvatarUpload.js +1 -1
  137. package/dist/components/ui/CheckoutForm.js +5 -70
  138. package/dist/components/ui/MouseEffect.js +1 -1
  139. package/eslint-rules/nadicode/config.js +2 -0
  140. package/eslint-rules/nadicode/data/catalog-names.json +93 -0
  141. package/eslint-rules/nadicode/index.js +4 -0
  142. package/eslint-rules/nadicode/rules/__tests__/require-catalog-component.test.js +77 -0
  143. package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +111 -0
  144. package/eslint-rules/nadicode/rules/require-catalog-component.js +79 -0
  145. package/eslint-rules/nadicode/rules/require-catalog-import.js +59 -0
  146. package/package.json +15 -358
  147. package/contracts/block-props-schemas.json +0 -2186
  148. package/contracts/component-props-schemas.json +0 -8322
  149. package/contracts/consumer-contract.json +0 -178
  150. package/contracts/page-kit-props-schemas.json +0 -1894
  151. package/contracts/public-surface-registry.json +0 -5822
  152. package/contracts/public-surface-registry.schema.json +0 -219
  153. package/contracts/spec-manifest.json +0 -46
  154. package/dist/catalog.json +0 -5221
@@ -20,29 +20,40 @@ Consumer scaffold contract: brand customization stays palette-only unless the ta
20
20
 
21
21
  ## Component Discovery
22
22
 
23
- Start with the shipped machine-readable consumer contract:
23
+ The catalog (`./catalog` and `./catalog/components` subpath exports) is the single surface for discovering and consuming Seed blocks and page-kits.
24
24
 
25
- ```
26
- cat node_modules/@vadimcomanescu/nadicode-design-system/contracts/consumer-contract.json
25
+ **Discovery** (server-safe, read this to learn what's available):
26
+ ```ts
27
+ import { seedComponentDefinitions } from "@vadimcomanescu/nadicode-design-system/catalog"
27
28
  ```
28
29
 
29
- Then follow `entrypoints.machineReadable.catalog` to the generated catalog for exact component names, variant values, props, and tiers:
30
+ Each entry provides: `props` (Zod schema), `description`, `slots`, `events`, `example`.
30
31
 
32
+ **Components** (client, import this to get React components):
33
+ ```ts
34
+ import { seedComponents } from "@vadimcomanescu/nadicode-design-system/catalog/components"
31
35
  ```
32
- cat node_modules/@vadimcomanescu/nadicode-design-system/dist/catalog.json
36
+
37
+ Usage:
38
+ ```tsx
39
+ const { LoginBlock, DashboardPageKit } = seedComponents
40
+ <LoginBlock onSubmit={handleLogin} />
33
41
  ```
34
42
 
35
- The consumer contract is the machine entrypoint. The catalog is the component metadata surface. Both are auto-generated from source. Do not guess.
43
+ **Blocks and page-kits** are imported exclusively from `seedComponents`. Do not import them via individual subpath exports (ADR 0009). The ESLint rule `nadicode/require-catalog-import` enforces this at lint time.
44
+
45
+ **UI primitives** (Button, Heading, Input, etc.), icons, charts, and effects are imported via individual subpath exports. They are not registered in the catalog.
46
+
47
+ See the full Import Rules in `contract.md`.
36
48
 
37
- The derived references under `references/components.md` and `references/blocks.md` are generated from the catalog. Any repo `Path` column there is a maintainer source path, not a consumer import path. Consumer code must keep importing from `@vadimcomanescu/nadicode-design-system/*` subpaths.
49
+ The derived references under `references/components.md` and `references/blocks.md` are generated from the catalog. Any repo `Path` column there is a maintainer source path, not a consumer import path.
38
50
 
39
51
  ## Read Order
40
52
 
41
53
  1. **This file** -- router, quick references, forbidden patterns
42
54
  2. **`contract.md`** -- binary rules, package integration contract
43
- 3. **consumer-contract.json** -- machine-readable package, ownership, and contract entrypoint map
44
- 4. **catalog.json** (in dist/) -- machine-readable component metadata (variants, props, tiers)
45
- 5. **`intent-map.md`** -- intent decision tree + recipe index
55
+ 3. **catalog** (`@vadimcomanescu/nadicode-design-system/catalog`) -- machine-readable component metadata (variants, props, tiers)
56
+ 4. **`intent-map.md`** -- intent decision tree + recipe index
46
57
  6. **`recipes/<page-type>.md`** -- matching recipe for your page
47
58
  7. **`references/`** -- deep dives as needed
48
59
  8. **`references/brand-override.md`** -- palette-only brand customization guide for seeded apps
@@ -336,10 +347,9 @@ Content widths, vertical rhythm, responsive contracts: `references/composition.m
336
347
  Compound component for multi-column sortable boards (project boards, runs views, pipelines).
337
348
 
338
349
  ```tsx
339
- import {
340
- KanbanBoard, KanbanColumn, KanbanColumnHeader,
341
- KanbanItem, KanbanHandle,
342
- } from '@vadimcomanescu/nadicode-design-system/kanban-board'
350
+ import { seedComponents } from "@vadimcomanescu/nadicode-design-system/catalog/components"
351
+ const { KanbanBoard: kanban } = seedComponents
352
+ const { KanbanBoard, KanbanColumn, KanbanColumnHeader, KanbanItem, KanbanHandle } = kanban
343
353
  import type { KanbanColumnState, KanbanMoveMeta } from '@vadimcomanescu/nadicode-design-system/kanban-board'
344
354
  ```
345
355
 
@@ -9,14 +9,27 @@ Binary rules for consumer apps using the Seed Design System. Every rule is non-n
9
9
 
10
10
  ## Component Catalog
11
11
 
12
- Start with `consumer-contract.json` (shipped in the package under `contracts/`) for the machine-readable entrypoint map and ownership rules. Then read catalog.json (shipped in the package under dist/) for the authoritative list of components, variant names, props, and tiers. Verify component names and variant values against the catalog. Do not guess variant names or prop values.
13
- Registry digest: `sha256:b5370c96c1bb877883860055c4b3d2c7c67ef7c2b1df4acacd7ea5cb0847da78`
12
+ The catalog is the single starting point for component discovery. Read it via the `./catalog` subpath export for the authoritative list of components, variant names, props, and tiers. Get actual React components from `./catalog/components`. Verify component names and variant values against the catalog. Do not guess variant names or prop values.
13
+
14
+ ```ts
15
+ // Discovery (server-safe)
16
+ import { seedComponentDefinitions } from "@vadimcomanescu/nadicode-design-system/catalog"
17
+
18
+ // Components (client)
19
+ import { seedComponents } from "@vadimcomanescu/nadicode-design-system/catalog/components"
20
+ ```
14
21
 
15
22
  ## Import Rules
16
23
 
17
- 1. Import Seed primitives, blocks, charts, icons, and text effects from `@vadimcomanescu/nadicode-design-system/*` subpaths. Do not vendor or recreate DS runtime files inside the scaffold.
18
- 2. Never import icons from `lucide-react` directly. Import from `@vadimcomanescu/nadicode-design-system/icons` or the matching `@vadimcomanescu/nadicode-design-system/icons/<name>` subpath.
19
- 3. If a needed primitive is missing, stop and report it. Do not invent ad-hoc replacements.
24
+ 1. **Blocks and page-kits**: import from `seedComponents` via `@vadimcomanescu/nadicode-design-system/catalog/components`. No individual subpath imports for blocks or page-kits.
25
+ ```ts
26
+ import { seedComponents } from "@vadimcomanescu/nadicode-design-system/catalog/components"
27
+ const { LoginBlock, DashboardPageKit } = seedComponents
28
+ ```
29
+ 2. **UI primitives, charts, effects, text-effects**: import via individual subpath exports (e.g., `@vadimcomanescu/nadicode-design-system/button`, `@vadimcomanescu/nadicode-design-system/charts`). These are not in the catalog.
30
+ 3. **Icons**: import from `@vadimcomanescu/nadicode-design-system/icons` or the matching `@vadimcomanescu/nadicode-design-system/icons/<name>` subpath. Never import from `lucide-react` directly.
31
+ 4. **Infrastructure** (tokens.css, tailwind preset, eslint-plugin, theme-provider, messages, test, lib/*): import via subpath exports. These are configuration wiring, not component consumption.
32
+ 5. Do not vendor or recreate DS runtime files inside the scaffold. If a needed primitive is missing, stop and report it. Do not invent ad-hoc replacements.
20
33
 
21
34
  ## Token Rules
22
35
 
@@ -62,7 +75,7 @@ Registry digest: `sha256:b5370c96c1bb877883860055c4b3d2c7c67ef7c2b1df4acacd7ea5c
62
75
  24. Dashboard KPI cards must use `MetricCard`, not ad-hoc Card + value compositions.
63
76
  25. Chart components must not be rendered without an empty-data guard (`data.length > 0` or `ChartCard`).
64
77
  26. Chart color configs must use `var(--color-chart-N)` tokens, never hex/rgb/hsl literals.
65
- 27. Import chart primitives from `@vadimcomanescu/nadicode-design-system/charts` or the matching `@vadimcomanescu/nadicode-design-system/charts/<chart-name>` subpath. Do not import `recharts` directly into scaffold app code.
78
+ 27. Import chart primitives from `@vadimcomanescu/nadicode-design-system/charts` or the matching `@vadimcomanescu/nadicode-design-system/charts/<chart-name>` subpath (charts are UI primitives, not catalog items). Do not import `recharts` directly into scaffold app code.
66
79
 
67
80
  ## ESLint Rule Reference
68
81
 
@@ -231,15 +231,15 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
231
231
 
232
232
  | Component | Import Path | Purpose |
233
233
  |-----------|-------------|---------|
234
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
235
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
234
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
235
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
236
236
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
237
237
  | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Hero tag |
238
238
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
239
239
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
240
- | `ProcessFlowBlock` | `@vadimcomanescu/nadicode-design-system/process-flow-block` | How-we-work process |
241
- | `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/feature-grid-block` | Services grid |
242
- | `StatsMarketingBlock` | `@vadimcomanescu/nadicode-design-system/stats-marketing-block` | Outcome metrics (ROI, time saved) |
240
+ | `ProcessFlowBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | How-we-work process |
241
+ | `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Services grid |
242
+ | `StatsMarketingBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Outcome metrics (ROI, time saved) |
243
243
 
244
244
  ### Allowed (optional)
245
245
 
@@ -167,9 +167,9 @@ REDUCED MOTION: Card and all children visible immediately
167
167
 
168
168
  | Component | Import Path | Purpose |
169
169
  |-----------|-------------|---------|
170
- | `AuthLayout` | `@vadimcomanescu/nadicode-design-system/auth-layout` | Split-screen wrapper |
171
- | `LoginBlock` | `@vadimcomanescu/nadicode-design-system/login-block` | Pre-built login form |
172
- | `SignUpBlock` | `@vadimcomanescu/nadicode-design-system/sign-up-block` | Pre-built signup form |
170
+ | `AuthLayout` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Split-screen wrapper |
171
+ | `LoginBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Pre-built login form |
172
+ | `SignUpBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Pre-built signup form |
173
173
  | `Card` | `@vadimcomanescu/nadicode-design-system/card` | Auth card container |
174
174
  | `Input` | `@vadimcomanescu/nadicode-design-system/input` | Email, name fields |
175
175
  | `PasswordInput` | `@vadimcomanescu/nadicode-design-system/password-input` | Password with toggle |
@@ -233,8 +233,8 @@ REDUCED MOTION: All items visible immediately
233
233
  | `Pagination` | `@vadimcomanescu/nadicode-design-system/pagination` | Blog index pages |
234
234
  | `Separator` | `@vadimcomanescu/nadicode-design-system/separator` | Content dividers |
235
235
  | `Select` | `@vadimcomanescu/nadicode-design-system/select` | Category filter |
236
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
237
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
236
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
237
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
238
238
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
239
239
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | Share, read more |
240
240
 
@@ -200,13 +200,13 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
200
200
 
201
201
  | Component | Import Path | Purpose |
202
202
  |-----------|-------------|---------|
203
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
204
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
203
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
204
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
205
205
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
206
206
  | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Hero tag |
207
207
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
208
208
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
209
- | `TeamBlock` | `@vadimcomanescu/nadicode-design-system/team-block` | Team member grid |
209
+ | `TeamBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Team member grid |
210
210
 
211
211
  ### Allowed (optional)
212
212
 
@@ -157,11 +157,11 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
157
157
 
158
158
  | Component | Import Path | Purpose |
159
159
  |-----------|-------------|---------|
160
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
161
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
160
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
161
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
162
162
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs and form submit |
163
163
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
164
- | `ContactBlock` | `@vadimcomanescu/nadicode-design-system/contact-block` | Contact form + company info |
164
+ | `ContactBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Contact form + company info |
165
165
 
166
166
  ### Allowed (optional)
167
167
 
@@ -237,13 +237,13 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
237
237
 
238
238
  | Component | Import Path | Purpose |
239
239
  |-----------|-------------|---------|
240
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
241
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
240
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
241
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
242
242
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
243
243
  | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Hero tag |
244
244
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
245
245
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
246
- | `AgentProfileGridBlock` | `@vadimcomanescu/nadicode-design-system/agent-profile-grid-block` | Agent profile cards grid |
246
+ | `AgentProfileGridBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Agent profile cards grid |
247
247
 
248
248
  ### Allowed (optional)
249
249
 
@@ -212,17 +212,17 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
212
212
 
213
213
  | Component | Import Path | Purpose |
214
214
  |-----------|-------------|---------|
215
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
216
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
215
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
216
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
217
217
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
218
218
  | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Announcement tag |
219
219
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
220
- | `FeatureBlock` / `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/feature*` | Feature showcase |
221
- | `FAQBlock` | `@vadimcomanescu/nadicode-design-system/faq-block` | FAQ accordion |
222
- | `CallToActionBlock` | `@vadimcomanescu/nadicode-design-system/call-to-action-block` | Final CTA |
223
- | `TestimonialsBlock` | `@vadimcomanescu/nadicode-design-system/testimonials-block` | Social proof |
224
- | `LogoCloud` | `@vadimcomanescu/nadicode-design-system/logo-cloud` | Partner logos |
225
- | `StatsMarketingBlock` | `@vadimcomanescu/nadicode-design-system/stats-marketing-block` | Key metrics |
220
+ | `FeatureBlock` / `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Feature showcase |
221
+ | `FAQBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | FAQ accordion |
222
+ | `CallToActionBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Final CTA |
223
+ | `TestimonialsBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Social proof |
224
+ | `LogoCloud` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Partner logos |
225
+ | `StatsMarketingBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Key metrics |
226
226
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
227
227
  | `ShaderBackground` | `@vadimcomanescu/nadicode-design-system/shader-background` | Hero background |
228
228
 
@@ -35,8 +35,8 @@ Shared marketing layout providing scroll-aware header, main content area, and fo
35
35
  ### 1. Layout Shell
36
36
 
37
37
  ```tsx
38
- import { HeaderBlock } from '@vadimcomanescu/nadicode-design-system/header-block'
39
- import { FooterBlock } from '@vadimcomanescu/nadicode-design-system/footer-block'
38
+ import { seedComponents } from '@vadimcomanescu/nadicode-design-system/catalog/components'
39
+ const { HeaderBlock, FooterBlock } = seedComponents
40
40
 
41
41
  const navLinks = [
42
42
  { name: 'Services', href: '/services' },
@@ -86,8 +86,8 @@ REDUCED MOTION: Header visible immediately, no blur transition
86
86
 
87
87
  | Component | Import Path | Purpose |
88
88
  |-----------|-------------|---------|
89
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation with glass blur |
90
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
89
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation with glass blur |
90
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
91
91
 
92
92
  ### Allowed (optional)
93
93
 
@@ -75,7 +75,8 @@ import {
75
75
  SidebarMenuSubItem,
76
76
  SidebarMenuSubButton,
77
77
  } from '@vadimcomanescu/nadicode-design-system/sidebar'
78
- import { NavUser } from '@vadimcomanescu/nadicode-design-system/nav-user'
78
+ import { seedComponents } from '@vadimcomanescu/nadicode-design-system/catalog/components'
79
+ const { NavUser } = seedComponents
79
80
  import { AppBreadcrumb } from '@/components/blocks/AppBreadcrumb'
80
81
  import { AppSearch } from '@/components/blocks/AppSearch'
81
82
  import { WorkspaceSwitcher } from '@/components/blocks/WorkspaceSwitcher'
@@ -704,7 +705,7 @@ REDUCED MOTION: All transitions instant
704
705
  | Component | Import Path | Purpose |
705
706
  |-----------|-------------|---------|
706
707
  | `Sidebar` (full system) | `@vadimcomanescu/nadicode-design-system/sidebar` | App sidebar with all subcomponents |
707
- | `NavUser` | `@vadimcomanescu/nadicode-design-system/nav-user` | User menu in sidebar footer |
708
+ | `NavUser` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | User menu in sidebar footer |
708
709
  | `AppBreadcrumb` | Consumer block (see Section 2) | Route-aware breadcrumb |
709
710
  | `AppSearch` | Consumer block (see Section 3) | Cmd+K search palette |
710
711
  | `WorkspaceSwitcher` | Consumer block (see Section 7) | Org/workspace picker |
@@ -195,10 +195,10 @@ REDUCED MOTION: All items visible immediately
195
195
  | `Switch` | `@vadimcomanescu/nadicode-design-system/switch` | Billing toggle |
196
196
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, descriptions |
197
197
  | `Separator` | `@vadimcomanescu/nadicode-design-system/separator` | Plan card divider |
198
- | `FAQBlock` | `@vadimcomanescu/nadicode-design-system/faq-block` | FAQ section |
199
- | `CallToActionBlock` | `@vadimcomanescu/nadicode-design-system/call-to-action-block` | Final CTA |
200
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Navigation |
201
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Footer |
198
+ | `FAQBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | FAQ section |
199
+ | `CallToActionBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Final CTA |
200
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Navigation |
201
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Footer |
202
202
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animation |
203
203
  | `CountingNumber` | `@vadimcomanescu/nadicode-design-system/text-effects/counting-number` | Price animation on toggle |
204
204
 
@@ -225,13 +225,13 @@ REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
225
225
 
226
226
  | Component | Import Path | Purpose |
227
227
  |-----------|-------------|---------|
228
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
229
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
228
+ | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site navigation |
229
+ | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Site footer |
230
230
  | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
231
231
  | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Category tag |
232
232
  | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
233
233
  | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
234
- | `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/feature-grid-block` | Product/service showcase |
234
+ | `FeatureGridBlock` | `@vadimcomanescu/nadicode-design-system/catalog/components` via `seedComponents` | Product/service showcase |
235
235
 
236
236
  ### Allowed (optional)
237
237
 
@@ -1,9 +1,8 @@
1
1
  # Blocks Catalog
2
2
 
3
- Derived from `dist/catalog.json`.
4
-
5
- Consumer code must import from `@vadimcomanescu/nadicode-design-system/*` block subpaths. Repo source paths are maintainer references only.
3
+ Derived from `src/catalog/catalog.ts`.
6
4
 
5
+ Components are consumed via `seedComponents` from `@vadimcomanescu/nadicode-design-system/catalog/components`. Repo source paths are maintainer references only.
7
6
  Blocks are pre-composed page sections built from Seed UI primitives.
8
7
  Run `npm run docs:inventory` for the current filesystem-backed list.
9
8
 
@@ -115,8 +114,9 @@ Run `npm run docs:inventory` for the current filesystem-backed list.
115
114
  Blocks accept `className` for placement and compose Seed UI primitives:
116
115
 
117
116
  ```tsx
118
- import { LoginBlock } from "@vadimcomanescu/nadicode-design-system/login-block"
119
- import { HeroBlock } from "@vadimcomanescu/nadicode-design-system/hero-block"
117
+ import { seedComponents } from "@vadimcomanescu/nadicode-design-system/catalog/components"
118
+
119
+ const { LoginBlock, HeroBlock } = seedComponents
120
120
 
121
121
  <div className="flex items-center justify-center min-h-dvh">
122
122
  <LoginBlock type="login" showSocial />
@@ -1,8 +1,8 @@
1
1
  # Component Inventory
2
2
 
3
- Derived from `dist/catalog.json`.
3
+ Derived from `src/catalog/catalog.ts`.
4
4
 
5
- Consumer code must import from `@vadimcomanescu/nadicode-design-system/*` subpaths. The `Path` column below is the repo source location for maintainers.
5
+ Components are consumed via `seedComponents` from `@vadimcomanescu/nadicode-design-system/catalog/components`. The `Path` column below is the repo source location for maintainers.
6
6
 
7
7
  Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (marketing only), **4**=Deprecation candidate.
8
8
 
@@ -8,8 +8,8 @@ Use these in order:
8
8
 
9
9
  1. `contract.md`, binary consumer rules
10
10
  2. this guide, integration checklist
11
- 3. `consumer-contract.json` in the installed package, machine-readable ownership and contract entrypoint map
12
- 4. `catalog.json` in the installed package, exact component metadata
11
+ 3. `./catalog` subpath export, server-safe component definitions with Zod schemas
12
+ 4. `./catalog/components` subpath export, React component map keyed by catalog name
13
13
 
14
14
  ## Integration Checklist
15
15
 
package/README.md CHANGED
@@ -27,11 +27,11 @@ Canonical consumer docs:
27
27
  The repo treats structured truth and prose differently.
28
28
 
29
29
  - Operational truth lives in `package.json` scripts and `.husky/*`.
30
- - The shipped machine entrypoint for agents and scaffold apps lives in `contracts/consumer-contract.json` and is exported as `@vadimcomanescu/nadicode-design-system/consumer-contract`.
31
- - Public package surface lives in `package.json` exports, `contracts/public-surface-registry.json`, and `bin/shipped-files.json`.
30
+ - The catalog is the single machine-readable component surface. Discovery: `@vadimcomanescu/nadicode-design-system/catalog`. Components: `@vadimcomanescu/nadicode-design-system/catalog/components`.
31
+ - Public package surface lives in `package.json` exports, `src/catalog/catalog.ts`, and `bin/shipped-files.json`.
32
32
  - Consumer ownership and package-backed runtime rules live in [docs/nadicode/SCAFFOLDING_PROCESS.md](docs/nadicode/SCAFFOLDING_PROCESS.md).
33
33
  - Release steps live in [docs/releasing-package.md](docs/releasing-package.md).
34
- - Component metadata lives in `dist/catalog.json`, generated from source.
34
+ - Component metadata lives in `dist/catalog/catalog.js`, generated from `src/catalog/catalog.ts`.
35
35
 
36
36
  Use prose docs for guidance and rationale. Use scripts, manifests, and generated artifacts for anything that must stay machine-accurate.
37
37
 
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "generatedFrom": {
4
- "registryPath": "contracts/public-surface-registry.json",
5
- "registrySchemaVersion": "1.0.0"
4
+ "source": "scripts/generate-consumer-intent-map.mjs"
6
5
  },
7
6
  "intents": {
8
7
  "agents-chat": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-03-25T21:42:01.343Z",
4
- "packageVersion": "2.0.7",
3
+ "generatedAt": "2026-03-27T10:15:35.016Z",
4
+ "packageVersion": "4.0.0",
5
5
  "stableExports": [
6
6
  ".",
7
7
  "./accordion",
@@ -52,7 +52,6 @@
52
52
  "./banner-block",
53
53
  "./bar-chart-block",
54
54
  "./bento-grid",
55
- "./block-props-schemas",
56
55
  "./blog-content-page-kit",
57
56
  "./brand-icons",
58
57
  "./breadcrumb",
@@ -106,9 +105,7 @@
106
105
  "./command",
107
106
  "./company-suite-page-kit",
108
107
  "./comparison-block",
109
- "./component-props-schemas",
110
108
  "./confetti-burst",
111
- "./consumer-contract",
112
109
  "./consumer-intent-map",
113
110
  "./contact-block",
114
111
  "./context-menu",
@@ -330,7 +327,6 @@
330
327
  "./notification-center",
331
328
  "./onboarding-block",
332
329
  "./onboarding-page-kit",
333
- "./page-kit-props-schemas",
334
330
  "./page-transition",
335
331
  "./pagination",
336
332
  "./password-input",
@@ -345,7 +341,6 @@
345
341
  "./progress-ring",
346
342
  "./progressive-blur",
347
343
  "./promo-card",
348
- "./public-surface-registry",
349
344
  "./radio-group",
350
345
  "./react-utils",
351
346
  "./recovery-page-kit",
@@ -374,7 +369,6 @@
374
369
  "./social-proof-block",
375
370
  "./sonner",
376
371
  "./source-citation",
377
- "./spec-manifest",
378
372
  "./spinner",
379
373
  "./spring-hover",
380
374
  "./stagger-children",
@@ -810,41 +804,13 @@
810
804
  "pages.settings.underConstruction"
811
805
  ],
812
806
  "artifacts": {
813
- "contracts/public-surface-registry.json": {
814
- "schemaVersion": "1.0.0",
815
- "shapeSignature": "5a76cac109041a9f60e288cfe903e23db0a45c56f6daff8f09bff97bfeeb2d11"
816
- },
817
- "contracts/block-props-schemas.json": {
818
- "schemaVersion": "1.0.0",
819
- "shapeSignature": "5a20094b5a00004d3187ee3bc5b8fe6d5b2d76a6b5ad0297834ee39deefe8988"
820
- },
821
- "contracts/component-props-schemas.json": {
822
- "schemaVersion": "1.0.0",
823
- "shapeSignature": "61e2aa0831df178f701cdcb7d3905b87f33d15d5e13e42487c24ee8ff15a386a"
824
- },
825
- "contracts/page-kit-props-schemas.json": {
826
- "schemaVersion": "1.0.0",
827
- "shapeSignature": "76a764c4d9b76a1ccf40d5493872c344df2c136c8b4bdc06bddc854ea54e3590"
828
- },
829
807
  "contracts/consumer-intent-map.json": {
830
808
  "schemaVersion": "1.0.0",
831
- "shapeSignature": "ee0a6787c7613eb41c32568a90a9cad3568c79f3df8bdfaef69a642203e47886"
809
+ "shapeSignature": "583a600417b95d3b7278d18d8a23ad8f0353314feb64fba7fa037c2c7db5b8b9"
832
810
  },
833
811
  "contracts/message-catalog-contract.json": {
834
812
  "schemaVersion": "1.0.0",
835
813
  "shapeSignature": "c95089ecca818272b27b77f8fac6fae04f8e4f0f381e302dfa084b00da12fcc8"
836
- },
837
- "contracts/spec-manifest.json": {
838
- "schemaVersion": "1.0.0",
839
- "shapeSignature": "e6c8904e15cc0fa5117b58485856a7db80746905ab61615b3e9936fe7b59ce08"
840
- },
841
- "contracts/consumer-contract.json": {
842
- "schemaVersion": "1.0.0",
843
- "shapeSignature": "1472ab7f0c0d4cc77d02821ae5284c85fed6e57d664d93bb6552cf42157c9a86"
844
- },
845
- "dist/catalog.json": {
846
- "schemaVersion": "1.1.0",
847
- "shapeSignature": "163dd9cef740c711e04d3402491df7684801764142fd48de45ef9bdde9920e54"
848
814
  }
849
815
  }
850
816
  }