@sarjallab09/figma-intelligence 1.0.1 → 1.2.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 (297) hide show
  1. package/README.md +67 -36
  2. package/dist/bin/cli.js +2 -0
  3. package/dist/design-bridge/bridge.js +2 -0
  4. package/dist/figma-bridge-plugin/bridge-relay.js +2 -0
  5. package/dist/figma-bridge-plugin/code.js +1 -0
  6. package/{figma-bridge-plugin → dist/figma-bridge-plugin}/package-lock.json +0 -3
  7. package/dist/figma-bridge-plugin/ui.html +4970 -0
  8. package/dist/figma-intelligence-layer/dist/index.js +2 -0
  9. package/dist/scripts/clean-existing-chunks.js +2 -0
  10. package/dist/scripts/connect-ai-tool.js +2 -0
  11. package/dist/scripts/convert-hub-pdfs.js +2 -0
  12. package/dist/scripts/figma-mcp-status.js +2 -0
  13. package/dist/scripts/register-codex-mcp.js +2 -0
  14. package/dist/scripts/test-copilot-chat.js +2 -0
  15. package/package.json +11 -8
  16. package/bin/cli.js +0 -859
  17. package/design-bridge/bridge.js +0 -196
  18. package/design-bridge/lib/assets.js +0 -367
  19. package/design-bridge/lib/prompt.js +0 -85
  20. package/design-bridge/lib/server.js +0 -66
  21. package/design-bridge/lib/stitch.js +0 -37
  22. package/design-bridge/lib/tokens.js +0 -82
  23. package/design-bridge/package-lock.json +0 -579
  24. package/figma-bridge-plugin/README.md +0 -97
  25. package/figma-bridge-plugin/anthropic-chat-runner.js +0 -192
  26. package/figma-bridge-plugin/bridge-relay.js +0 -2363
  27. package/figma-bridge-plugin/chat-runner.js +0 -459
  28. package/figma-bridge-plugin/code.js +0 -1528
  29. package/figma-bridge-plugin/codex-runner.js +0 -505
  30. package/figma-bridge-plugin/component-schemas.js +0 -110
  31. package/figma-bridge-plugin/content-context.js +0 -869
  32. package/figma-bridge-plugin/create-button.js +0 -216
  33. package/figma-bridge-plugin/gemini-cli-runner.js +0 -291
  34. package/figma-bridge-plugin/gemini-runner.js +0 -187
  35. package/figma-bridge-plugin/html-to-figma.js +0 -927
  36. package/figma-bridge-plugin/knowledge-hub/.gitkeep +0 -0
  37. package/figma-bridge-plugin/knowledge-hub/uspec-references/anatomy-spec.md +0 -159
  38. package/figma-bridge-plugin/knowledge-hub/uspec-references/api-spec.md +0 -162
  39. package/figma-bridge-plugin/knowledge-hub/uspec-references/color-spec.md +0 -148
  40. package/figma-bridge-plugin/knowledge-hub/uspec-references/full-spec-template.md +0 -314
  41. package/figma-bridge-plugin/knowledge-hub/uspec-references/property-spec.md +0 -175
  42. package/figma-bridge-plugin/knowledge-hub/uspec-references/screen-reader-spec.md +0 -180
  43. package/figma-bridge-plugin/knowledge-hub/uspec-references/structure-spec.md +0 -165
  44. package/figma-bridge-plugin/perplexity-runner.js +0 -188
  45. package/figma-bridge-plugin/references/SKILL.md +0 -178
  46. package/figma-bridge-plugin/references/anatomy-spec.md +0 -159
  47. package/figma-bridge-plugin/references/api-spec.md +0 -162
  48. package/figma-bridge-plugin/references/color-spec.md +0 -148
  49. package/figma-bridge-plugin/references/full-spec-template.md +0 -314
  50. package/figma-bridge-plugin/references/property-spec.md +0 -175
  51. package/figma-bridge-plugin/references/screen-reader-spec.md +0 -180
  52. package/figma-bridge-plugin/references/structure-spec.md +0 -165
  53. package/figma-bridge-plugin/shared-prompt-config.js +0 -604
  54. package/figma-bridge-plugin/spec-helpers/build-table.js +0 -269
  55. package/figma-bridge-plugin/spec-helpers/classify-elements.js +0 -189
  56. package/figma-bridge-plugin/spec-helpers/index.js +0 -35
  57. package/figma-bridge-plugin/spec-helpers/parse-figma-link.js +0 -49
  58. package/figma-bridge-plugin/spec-helpers/position-markers.js +0 -158
  59. package/figma-bridge-plugin/stitch-auth.js +0 -322
  60. package/figma-bridge-plugin/stitch-runner.js +0 -1427
  61. package/figma-bridge-plugin/token-resolver.js +0 -107
  62. package/figma-bridge-plugin/ui.html +0 -4467
  63. package/figma-intelligence-layer/.env.example +0 -39
  64. package/figma-intelligence-layer/docs/local-image-generation.md +0 -60
  65. package/figma-intelligence-layer/examples/comfyui-workflow-template.example.json +0 -101
  66. package/figma-intelligence-layer/jest.config.js +0 -14
  67. package/figma-intelligence-layer/mcp-config.json +0 -19
  68. package/figma-intelligence-layer/package-lock.json +0 -5892
  69. package/figma-intelligence-layer/scripts/setup-comfyui-local.sh +0 -67
  70. package/figma-intelligence-layer/scripts/start-comfyui.sh +0 -33
  71. package/figma-intelligence-layer/src/index.ts +0 -2233
  72. package/figma-intelligence-layer/src/shared/auto-layout-validator.ts +0 -404
  73. package/figma-intelligence-layer/src/shared/cache.ts +0 -187
  74. package/figma-intelligence-layer/src/shared/color-operations.ts +0 -533
  75. package/figma-intelligence-layer/src/shared/color-utils.ts +0 -138
  76. package/figma-intelligence-layer/src/shared/component-script-builder.ts +0 -413
  77. package/figma-intelligence-layer/src/shared/component-templates.ts +0 -2767
  78. package/figma-intelligence-layer/src/shared/concept-taxonomy.ts +0 -694
  79. package/figma-intelligence-layer/src/shared/decision-log.ts +0 -128
  80. package/figma-intelligence-layer/src/shared/design-system-context.ts +0 -568
  81. package/figma-intelligence-layer/src/shared/design-system-intelligence.ts +0 -131
  82. package/figma-intelligence-layer/src/shared/design-system-matcher.ts +0 -184
  83. package/figma-intelligence-layer/src/shared/design-system-normalizers.ts +0 -196
  84. package/figma-intelligence-layer/src/shared/design-system-tokens.ts +0 -295
  85. package/figma-intelligence-layer/src/shared/dtcg-validator.ts +0 -530
  86. package/figma-intelligence-layer/src/shared/enrichment-pipeline.ts +0 -671
  87. package/figma-intelligence-layer/src/shared/figma-bridge.ts +0 -1408
  88. package/figma-intelligence-layer/src/shared/font-config.ts +0 -126
  89. package/figma-intelligence-layer/src/shared/icon-catalog.ts +0 -360
  90. package/figma-intelligence-layer/src/shared/icon-fetch.ts +0 -80
  91. package/figma-intelligence-layer/src/shared/prototype-script-builder.ts +0 -162
  92. package/figma-intelligence-layer/src/shared/response-compression.ts +0 -440
  93. package/figma-intelligence-layer/src/shared/semantic-token-catalog.ts +0 -324
  94. package/figma-intelligence-layer/src/shared/token-binder.ts +0 -505
  95. package/figma-intelligence-layer/src/shared/token-math.ts +0 -427
  96. package/figma-intelligence-layer/src/shared/token-naming.ts +0 -468
  97. package/figma-intelligence-layer/src/shared/token-utils.ts +0 -420
  98. package/figma-intelligence-layer/src/shared/types.ts +0 -346
  99. package/figma-intelligence-layer/src/shared/typography-presets.ts +0 -94
  100. package/figma-intelligence-layer/src/shared/unsplash.ts +0 -165
  101. package/figma-intelligence-layer/src/shared/vision-client.ts +0 -607
  102. package/figma-intelligence-layer/src/shared/vision-provider-anthropic.ts +0 -334
  103. package/figma-intelligence-layer/src/shared/vision-provider-openai.ts +0 -446
  104. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotate-handler.ts +0 -782
  105. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotate-renderer.ts +0 -496
  106. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotation-kit.ts +0 -230
  107. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/colorblind-sim.ts +0 -66
  108. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/index.ts +0 -810
  109. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-analyzer.ts +0 -1191
  110. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-figma-page.ts +0 -1346
  111. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-handler.ts +0 -148
  112. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/vpat-figma-page.ts +0 -499
  113. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/vpat-report.ts +0 -910
  114. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/wcag-checker.ts +0 -989
  115. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/wcag-criteria.ts +0 -1160
  116. package/figma-intelligence-layer/src/tools/phase1-vision/design-from-ref/index.ts +0 -424
  117. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/component-recognizer.ts +0 -38
  118. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/ds-matcher.ts +0 -111
  119. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/font-matcher.ts +0 -114
  120. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/icon-resolver.ts +0 -103
  121. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/index.ts +0 -1060
  122. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/layout-segmenter.ts +0 -18
  123. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/token-inferencer.ts +0 -39
  124. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/vision-pipeline.ts +0 -58
  125. package/figma-intelligence-layer/src/tools/phase1-vision/sketch-to-design/index.ts +0 -298
  126. package/figma-intelligence-layer/src/tools/phase1-vision/visual-audit/index.ts +0 -197
  127. package/figma-intelligence-layer/src/tools/phase2-accuracy/component-audit/index.ts +0 -494
  128. package/figma-intelligence-layer/src/tools/phase2-accuracy/intent-translator/index.ts +0 -356
  129. package/figma-intelligence-layer/src/tools/phase2-accuracy/layout-intelligence/container-patterns.ts +0 -123
  130. package/figma-intelligence-layer/src/tools/phase2-accuracy/layout-intelligence/index.ts +0 -663
  131. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/built-in-rules.yaml +0 -56
  132. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/index.ts +0 -614
  133. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/rule-engine.ts +0 -113
  134. package/figma-intelligence-layer/src/tools/phase2-accuracy/theme-generator/color-theory.ts +0 -178
  135. package/figma-intelligence-layer/src/tools/phase2-accuracy/theme-generator/index.ts +0 -470
  136. package/figma-intelligence-layer/src/tools/phase2-accuracy/variant-expander/index.ts +0 -429
  137. package/figma-intelligence-layer/src/tools/phase2-accuracy/variant-expander/token-override-maps.ts +0 -226
  138. package/figma-intelligence-layer/src/tools/phase3-generation/ai-image-insert/index.ts +0 -535
  139. package/figma-intelligence-layer/src/tools/phase3-generation/component-archaeologist/index.ts +0 -660
  140. package/figma-intelligence-layer/src/tools/phase3-generation/component-archaeologist/pattern-fingerprints.ts +0 -209
  141. package/figma-intelligence-layer/src/tools/phase3-generation/composition-builder/index.ts +0 -540
  142. package/figma-intelligence-layer/src/tools/phase3-generation/figma-animated-build.ts +0 -391
  143. package/figma-intelligence-layer/src/tools/phase3-generation/page-architect/index.ts +0 -2019
  144. package/figma-intelligence-layer/src/tools/phase3-generation/page-architect/screen-templates.ts +0 -131
  145. package/figma-intelligence-layer/src/tools/phase3-generation/prototype-map/index.ts +0 -381
  146. package/figma-intelligence-layer/src/tools/phase3-generation/prototype-wire/index.ts +0 -565
  147. package/figma-intelligence-layer/src/tools/phase3-generation/swarm-build/index.ts +0 -764
  148. package/figma-intelligence-layer/src/tools/phase3-generation/system-drift/index.ts +0 -535
  149. package/figma-intelligence-layer/src/tools/phase3-generation/unsplash-search/index.ts +0 -84
  150. package/figma-intelligence-layer/src/tools/phase3-generation/url-to-frame/index.ts +0 -401
  151. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/css-animations.ts +0 -68
  152. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/framer-motion.ts +0 -78
  153. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/swift-animations.ts +0 -93
  154. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/index.ts +0 -596
  155. package/figma-intelligence-layer/src/tools/phase4-sync/ci-check/index.ts +0 -462
  156. package/figma-intelligence-layer/src/tools/phase4-sync/export-tokens/index.ts +0 -1470
  157. package/figma-intelligence-layer/src/tools/phase4-sync/generate-component-code/index.ts +0 -829
  158. package/figma-intelligence-layer/src/tools/phase4-sync/handoff-spec/index.ts +0 -702
  159. package/figma-intelligence-layer/src/tools/phase4-sync/icon-library-sync/index.ts +0 -483
  160. package/figma-intelligence-layer/src/tools/phase4-sync/sync-from-code/index.ts +0 -501
  161. package/figma-intelligence-layer/src/tools/phase4-sync/sync-from-code/storybook-parser.ts +0 -106
  162. package/figma-intelligence-layer/src/tools/phase4-sync/watch-docs/index.ts +0 -676
  163. package/figma-intelligence-layer/src/tools/phase4-sync/webhook-listener/index.ts +0 -560
  164. package/figma-intelligence-layer/src/tools/phase5-governance/apg-doc/index.ts +0 -1043
  165. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/component-detection.ts +0 -620
  166. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/anatomy.ts +0 -331
  167. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/color-tokens.ts +0 -77
  168. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/properties.ts +0 -54
  169. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/snapshot.ts +0 -287
  170. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/spacing.ts +0 -71
  171. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/states.ts +0 -43
  172. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/typography.ts +0 -71
  173. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/index.ts +0 -221
  174. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/_default.ts +0 -166
  175. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/accordion.ts +0 -232
  176. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/alert.ts +0 -234
  177. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/avatar-group.ts +0 -270
  178. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/avatar.ts +0 -249
  179. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/badge.ts +0 -231
  180. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/banner.ts +0 -293
  181. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/breadcrumb.ts +0 -240
  182. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/button.ts +0 -243
  183. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/calendar.ts +0 -307
  184. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/card.ts +0 -143
  185. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/checkbox.ts +0 -227
  186. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/chip.ts +0 -233
  187. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/combobox.ts +0 -282
  188. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/datepicker.ts +0 -276
  189. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/divider.ts +0 -223
  190. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/drawer.ts +0 -255
  191. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/dropdown-menu.ts +0 -289
  192. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/empty-state.ts +0 -261
  193. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/file-uploader.ts +0 -290
  194. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/form.ts +0 -265
  195. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/grid.ts +0 -238
  196. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/icon.ts +0 -255
  197. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/index.ts +0 -128
  198. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/inline-edit.ts +0 -286
  199. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/inline-message.ts +0 -255
  200. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/input.ts +0 -330
  201. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/link.ts +0 -247
  202. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/list.ts +0 -250
  203. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/menu.ts +0 -247
  204. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/modal.ts +0 -144
  205. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/navbar.ts +0 -264
  206. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/navigation.ts +0 -251
  207. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/number-input.ts +0 -261
  208. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/pagination.ts +0 -248
  209. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/popover.ts +0 -270
  210. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/progress.ts +0 -251
  211. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/radio.ts +0 -142
  212. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/range-slider.ts +0 -282
  213. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/rating.ts +0 -250
  214. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/search.ts +0 -258
  215. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/segmented-control.ts +0 -265
  216. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/select.ts +0 -319
  217. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/skeleton.ts +0 -256
  218. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/slider.ts +0 -232
  219. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/spinner.ts +0 -239
  220. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/status-dot.ts +0 -252
  221. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/stepper.ts +0 -270
  222. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/table.ts +0 -244
  223. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tabs.ts +0 -143
  224. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tag.ts +0 -243
  225. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/textarea.ts +0 -259
  226. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/time-picker.ts +0 -293
  227. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toast.ts +0 -144
  228. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toggle.ts +0 -289
  229. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toolbar.ts +0 -267
  230. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tooltip.ts +0 -232
  231. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/treeview.ts +0 -257
  232. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/typography.ts +0 -319
  233. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/legacy-compat.ts +0 -121
  234. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/anatomy-diagram.ts +0 -430
  235. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/figma-page.ts +0 -312
  236. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/json.ts +0 -129
  237. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/markdown.ts +0 -78
  238. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/visual-doc.ts +0 -2333
  239. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/accessibility.ts +0 -100
  240. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/anatomy.ts +0 -32
  241. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/color-tokens.ts +0 -59
  242. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/content-guidance.ts +0 -18
  243. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/design-tokens.ts +0 -53
  244. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/interaction-rules.ts +0 -19
  245. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/overview.ts +0 -91
  246. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/properties-api.ts +0 -71
  247. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/qa-criteria.ts +0 -19
  248. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/related-components.ts +0 -110
  249. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/responsive.ts +0 -19
  250. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/size-specs.ts +0 -67
  251. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/spacing-structure.ts +0 -58
  252. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/state-specs.ts +0 -79
  253. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/states.ts +0 -50
  254. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/type-hierarchy.ts +0 -33
  255. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/typography.ts +0 -55
  256. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/usage-guidelines.ts +0 -73
  257. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/variants.ts +0 -81
  258. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/types.ts +0 -409
  259. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/index.ts +0 -198
  260. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/renderer.ts +0 -701
  261. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/types.ts +0 -88
  262. package/figma-intelligence-layer/src/tools/phase5-governance/decision-log/index.ts +0 -135
  263. package/figma-intelligence-layer/src/tools/phase5-governance/design-decision-log/index.ts +0 -491
  264. package/figma-intelligence-layer/src/tools/phase5-governance/ds-primitives/index.ts +0 -416
  265. package/figma-intelligence-layer/src/tools/phase5-governance/ds-scaffolder/index.ts +0 -722
  266. package/figma-intelligence-layer/src/tools/phase5-governance/ds-variables/index.ts +0 -449
  267. package/figma-intelligence-layer/src/tools/phase5-governance/health-report/index.ts +0 -393
  268. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/index.ts +0 -406
  269. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/figma-page.ts +0 -292
  270. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/json.ts +0 -24
  271. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/markdown.ts +0 -172
  272. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/naming-guide.ts +0 -409
  273. package/figma-intelligence-layer/src/tools/phase5-governance/token-analytics/index.ts +0 -594
  274. package/figma-intelligence-layer/src/tools/phase5-governance/token-docs/index.ts +0 -710
  275. package/figma-intelligence-layer/src/tools/phase5-governance/token-migrate/index.ts +0 -458
  276. package/figma-intelligence-layer/src/tools/phase5-governance/token-naming/index.ts +0 -134
  277. package/figma-intelligence-layer/tests/apg-doc.test.ts +0 -101
  278. package/figma-intelligence-layer/tests/design-system-context.test.ts +0 -152
  279. package/figma-intelligence-layer/tests/design-system-matcher.test.ts +0 -144
  280. package/figma-intelligence-layer/tests/figma-bridge.test.ts +0 -83
  281. package/figma-intelligence-layer/tests/generate-image-and-insert.test.ts +0 -56
  282. package/figma-intelligence-layer/tests/screen-cloner-regression.test.ts +0 -69
  283. package/figma-intelligence-layer/tests/smoke.test.ts +0 -174
  284. package/figma-intelligence-layer/tests/spec-generator.test.ts +0 -127
  285. package/figma-intelligence-layer/tests/token-migrate.test.ts +0 -21
  286. package/figma-intelligence-layer/tests/token-naming.test.ts +0 -30
  287. package/figma-intelligence-layer/tsconfig.json +0 -19
  288. package/scripts/clean-existing-chunks.js +0 -179
  289. package/scripts/connect-ai-tool.js +0 -490
  290. package/scripts/convert-hub-pdfs.js +0 -425
  291. package/scripts/figma-mcp-status.js +0 -349
  292. package/scripts/register-codex-mcp.js +0 -96
  293. /package/{design-bridge → dist/design-bridge}/.env.example +0 -0
  294. /package/{design-bridge → dist/design-bridge}/package.json +0 -0
  295. /package/{figma-bridge-plugin → dist/figma-bridge-plugin}/manifest.json +0 -0
  296. /package/{figma-bridge-plugin → dist/figma-bridge-plugin}/package.json +0 -0
  297. /package/{figma-intelligence-layer → dist/figma-intelligence-layer}/package.json +0 -0
@@ -1,2767 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // Component Templates (Blueprints)
3
- // Data-driven definitions for 51 professional component stubs with internal
4
- // node trees, auto-layout, variant properties, and semantic token bindings.
5
- // All dimensions on 4px/8px grid.
6
- // ─────────────────────────────────────────────────────────────────────────────
7
-
8
- export type NodeKind = "frame" | "text" | "rect" | "ellipse" | "vector";
9
-
10
- export type IconSize = "xs" | "sm" | "md" | "lg" | "xl";
11
-
12
- export interface IconSlot {
13
- /** Default icon name from the catalog (e.g. "icon/action/search") */
14
- defaultIcon?: string;
15
- /** Whether the slot is required or optional */
16
- required: boolean;
17
- /** Default size preset */
18
- size?: IconSize;
19
- /** Color semantic token override */
20
- colorToken?: string;
21
- /** Whether icon is decorative (aria-hidden) */
22
- decorative?: boolean;
23
- }
24
-
25
- export interface BlueprintNode {
26
- name: string;
27
- kind: NodeKind;
28
- width?: number;
29
- height?: number;
30
-
31
- // Auto-layout
32
- layoutMode?: "HORIZONTAL" | "VERTICAL" | "NONE";
33
- paddingX?: number;
34
- paddingY?: number;
35
- itemSpacing?: number;
36
- primaryAxisAlign?: "MIN" | "CENTER" | "MAX" | "SPACE_BETWEEN";
37
- counterAxisAlign?: "MIN" | "CENTER" | "MAX";
38
- primaryAxisSizing?: "AUTO" | "FIXED";
39
- counterAxisSizing?: "AUTO" | "FIXED";
40
-
41
- // Appearance
42
- cornerRadius?: number;
43
- fillSemantic?: string; // semantic token name for fill
44
- strokeSemantic?: string; // semantic token name for stroke
45
- strokeWeight?: number;
46
- opacity?: number;
47
- effects?: Array<{
48
- type: "DROP_SHADOW";
49
- color: { r: number; g: number; b: number; a: number };
50
- offset: { x: number; y: number };
51
- radius: number;
52
- spread: number;
53
- }>;
54
-
55
- // Text-specific
56
- textContent?: string;
57
- textPreset?: string; // typography preset name (e.g. "label/md")
58
- textFillSemantic?: string; // semantic token for text fill
59
-
60
- // Icon slot — marks this node as an icon placeholder with swap metadata
61
- iconSlot?: IconSlot;
62
-
63
- // Children
64
- children?: BlueprintNode[];
65
- }
66
-
67
- export interface VariantProperty {
68
- name: string;
69
- values: string[];
70
- defaultValue: string;
71
- }
72
-
73
- export interface ComponentBlueprint {
74
- name: string;
75
- category: "core" | "forms" | "navigation" | "data" | "feedback" | "overlay" | "layout";
76
- description: string;
77
- root: BlueprintNode;
78
- variantProperties: VariantProperty[];
79
- tokenBindings: Array<{
80
- nodePath: string; // dot-separated path to child (e.g. "label")
81
- property: "fills" | "strokes" | "cornerRadius" | "paddingLeft";
82
- semanticToken: string;
83
- }>;
84
- /** Icon slots exposed as swappable properties */
85
- iconSlots?: Array<{
86
- nodePath: string; // path to the icon slot node
87
- propName: string; // property name for the swap
88
- defaultIcon?: string; // default icon from catalog
89
- required: boolean;
90
- }>;
91
- }
92
-
93
- // ─── Component definitions ──────────────────────────────────────────────────
94
-
95
- const BUTTON: ComponentBlueprint = {
96
- name: "Button",
97
- category: "core",
98
- description: "Primary interactive button with icon slot and label",
99
- root: {
100
- name: "Button",
101
- kind: "frame",
102
- width: 120,
103
- height: 40,
104
- layoutMode: "HORIZONTAL",
105
- primaryAxisAlign: "CENTER",
106
- counterAxisAlign: "CENTER",
107
- primaryAxisSizing: "AUTO",
108
- counterAxisSizing: "FIXED",
109
- paddingX: 16,
110
- paddingY: 8,
111
- itemSpacing: 8,
112
- cornerRadius: 8,
113
- fillSemantic: "color/semantic/actions/primary/bg/default",
114
- children: [
115
- {
116
- name: "Icon",
117
- kind: "frame",
118
- width: 16,
119
- height: 16,
120
- fillSemantic: "color/semantic/icon/inverse",
121
- iconSlot: { defaultIcon: "icon/action/add", required: false, size: "xs", colorToken: "color/semantic/icon/inverse", decorative: true },
122
- },
123
- {
124
- name: "Label",
125
- kind: "text",
126
- textContent: "Button",
127
- textPreset: "label/md",
128
- textFillSemantic: "color/semantic/text/on-color",
129
- },
130
- ],
131
- },
132
- variantProperties: [
133
- { name: "State", values: ["Default", "Hover", "Pressed", "Focused", "Disabled", "Loading"], defaultValue: "Default" },
134
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
135
- { name: "Type", values: ["Primary", "Secondary", "Ghost", "Destructive"], defaultValue: "Primary" },
136
- ],
137
- tokenBindings: [
138
- { nodePath: "", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
139
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/control/default" },
140
- { nodePath: "Label", property: "fills", semanticToken: "color/semantic/text/on-color" },
141
- ],
142
- iconSlots: [
143
- { nodePath: "Icon", propName: "leadingIcon", defaultIcon: "icon/action/add", required: false },
144
- ],
145
- };
146
-
147
- const INPUT: ComponentBlueprint = {
148
- name: "Input",
149
- category: "forms",
150
- description: "Text input field with label, icon slot, and trailing action",
151
- root: {
152
- name: "Input",
153
- kind: "frame",
154
- width: 280,
155
- layoutMode: "VERTICAL",
156
- primaryAxisSizing: "AUTO",
157
- counterAxisSizing: "FIXED",
158
- itemSpacing: 4,
159
- children: [
160
- {
161
- name: "Label",
162
- kind: "text",
163
- textContent: "Label",
164
- textPreset: "label/sm",
165
- textFillSemantic: "color/semantic/text/primary",
166
- },
167
- {
168
- name: "Field",
169
- kind: "frame",
170
- height: 40,
171
- layoutMode: "HORIZONTAL",
172
- primaryAxisAlign: "MIN",
173
- counterAxisAlign: "CENTER",
174
- primaryAxisSizing: "AUTO",
175
- counterAxisSizing: "FIXED",
176
- paddingX: 12,
177
- paddingY: 8,
178
- itemSpacing: 8,
179
- cornerRadius: 6,
180
- fillSemantic: "color/semantic/field/bg/default",
181
- strokeSemantic: "color/semantic/field/border/default",
182
- strokeWeight: 1,
183
- children: [
184
- {
185
- name: "LeadingIcon",
186
- kind: "frame",
187
- width: 16,
188
- height: 16,
189
- fillSemantic: "color/semantic/icon/secondary",
190
- iconSlot: { defaultIcon: "icon/action/search", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true },
191
- },
192
- {
193
- name: "Value",
194
- kind: "text",
195
- textContent: "Placeholder text",
196
- textPreset: "body/md",
197
- textFillSemantic: "color/semantic/text/tertiary",
198
- },
199
- ],
200
- },
201
- ],
202
- },
203
- variantProperties: [
204
- { name: "State", values: ["Default", "Focused", "Error", "Disabled"], defaultValue: "Default" },
205
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
206
- ],
207
- tokenBindings: [
208
- { nodePath: "Field", property: "fills", semanticToken: "color/semantic/field/bg/default" },
209
- { nodePath: "Field", property: "strokes", semanticToken: "color/semantic/field/border/default" },
210
- { nodePath: "Field", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
211
- ],
212
- iconSlots: [
213
- { nodePath: "Field.LeadingIcon", propName: "leadingIcon", defaultIcon: "icon/action/search", required: false },
214
- ],
215
- };
216
-
217
- const SELECT: ComponentBlueprint = {
218
- name: "Select",
219
- category: "forms",
220
- description: "Dropdown select with chevron indicator",
221
- root: {
222
- name: "Select",
223
- kind: "frame",
224
- width: 280,
225
- layoutMode: "VERTICAL",
226
- primaryAxisSizing: "AUTO",
227
- counterAxisSizing: "FIXED",
228
- itemSpacing: 4,
229
- children: [
230
- {
231
- name: "Label",
232
- kind: "text",
233
- textContent: "Label",
234
- textPreset: "label/sm",
235
- textFillSemantic: "color/semantic/text/primary",
236
- },
237
- {
238
- name: "Field",
239
- kind: "frame",
240
- height: 40,
241
- layoutMode: "HORIZONTAL",
242
- primaryAxisAlign: "SPACE_BETWEEN",
243
- counterAxisAlign: "CENTER",
244
- primaryAxisSizing: "AUTO",
245
- counterAxisSizing: "FIXED",
246
- paddingX: 12,
247
- paddingY: 8,
248
- cornerRadius: 6,
249
- fillSemantic: "color/semantic/field/bg/default",
250
- strokeSemantic: "color/semantic/field/border/default",
251
- strokeWeight: 1,
252
- children: [
253
- {
254
- name: "Value",
255
- kind: "text",
256
- textContent: "Select option",
257
- textPreset: "body/md",
258
- textFillSemantic: "color/semantic/text/tertiary",
259
- },
260
- {
261
- name: "Chevron",
262
- kind: "frame",
263
- width: 16,
264
- height: 16,
265
- fillSemantic: "color/semantic/icon/secondary",
266
- iconSlot: { defaultIcon: "icon/navigation/expand-more", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true },
267
- },
268
- ],
269
- },
270
- ],
271
- },
272
- variantProperties: [
273
- { name: "State", values: ["Default", "Focused", "Error", "Disabled"], defaultValue: "Default" },
274
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
275
- ],
276
- tokenBindings: [],
277
- iconSlots: [
278
- { nodePath: "Field.Chevron", propName: "chevronIcon", defaultIcon: "icon/navigation/expand-more", required: true },
279
- ],
280
- };
281
-
282
- const CHECKBOX: ComponentBlueprint = {
283
- name: "Checkbox",
284
- category: "forms",
285
- description: "Checkbox with label",
286
- root: {
287
- name: "Checkbox",
288
- kind: "frame",
289
- layoutMode: "HORIZONTAL",
290
- primaryAxisSizing: "AUTO",
291
- counterAxisSizing: "AUTO",
292
- itemSpacing: 8,
293
- counterAxisAlign: "CENTER",
294
- children: [
295
- {
296
- name: "Box",
297
- kind: "frame",
298
- width: 16,
299
- height: 16,
300
- cornerRadius: 4,
301
- strokeSemantic: "color/semantic/border/default",
302
- strokeWeight: 1.5,
303
- fillSemantic: "color/semantic/field/bg/default",
304
- },
305
- {
306
- name: "Label",
307
- kind: "text",
308
- textContent: "Checkbox label",
309
- textPreset: "body/md",
310
- textFillSemantic: "color/semantic/text/primary",
311
- },
312
- ],
313
- },
314
- variantProperties: [
315
- { name: "State", values: ["Default", "Checked", "Indeterminate", "Disabled"], defaultValue: "Default" },
316
- ],
317
- tokenBindings: [],
318
- };
319
-
320
- const TOGGLE: ComponentBlueprint = {
321
- name: "Toggle",
322
- category: "forms",
323
- description: "Toggle switch with track and thumb",
324
- root: {
325
- name: "Toggle",
326
- kind: "frame",
327
- width: 40,
328
- height: 24,
329
- cornerRadius: 12,
330
- fillSemantic: "color/semantic/border/default",
331
- children: [
332
- {
333
- name: "Thumb",
334
- kind: "ellipse",
335
- width: 20,
336
- height: 20,
337
- fillSemantic: "color/semantic/surface/default",
338
- },
339
- ],
340
- },
341
- variantProperties: [
342
- { name: "State", values: ["Off", "On", "Disabled"], defaultValue: "Off" },
343
- ],
344
- tokenBindings: [],
345
- };
346
-
347
- const RADIO: ComponentBlueprint = {
348
- name: "Radio",
349
- category: "forms",
350
- description: "Radio button with label",
351
- root: {
352
- name: "Radio",
353
- kind: "frame",
354
- layoutMode: "HORIZONTAL",
355
- primaryAxisSizing: "AUTO",
356
- counterAxisSizing: "AUTO",
357
- itemSpacing: 8,
358
- counterAxisAlign: "CENTER",
359
- children: [
360
- {
361
- name: "Circle",
362
- kind: "ellipse",
363
- width: 16,
364
- height: 16,
365
- strokeSemantic: "color/semantic/border/default",
366
- strokeWeight: 1.5,
367
- fillSemantic: "color/semantic/field/bg/default",
368
- },
369
- {
370
- name: "Label",
371
- kind: "text",
372
- textContent: "Radio label",
373
- textPreset: "body/md",
374
- textFillSemantic: "color/semantic/text/primary",
375
- },
376
- ],
377
- },
378
- variantProperties: [
379
- { name: "State", values: ["Default", "Selected", "Disabled"], defaultValue: "Default" },
380
- ],
381
- tokenBindings: [],
382
- };
383
-
384
- const CARD: ComponentBlueprint = {
385
- name: "Card",
386
- category: "core",
387
- description: "Content card with media slot, heading, body, and footer",
388
- root: {
389
- name: "Card",
390
- kind: "frame",
391
- width: 320,
392
- layoutMode: "VERTICAL",
393
- primaryAxisSizing: "AUTO",
394
- counterAxisSizing: "FIXED",
395
- cornerRadius: 12,
396
- fillSemantic: "color/semantic/surface/raised",
397
- strokeSemantic: "color/semantic/border/default",
398
- strokeWeight: 1,
399
- children: [
400
- {
401
- name: "Media",
402
- kind: "rect",
403
- width: 320,
404
- height: 180,
405
- fillSemantic: "color/semantic/surface/subtle",
406
- },
407
- {
408
- name: "Content",
409
- kind: "frame",
410
- layoutMode: "VERTICAL",
411
- primaryAxisSizing: "AUTO",
412
- counterAxisSizing: "AUTO",
413
- paddingX: 16,
414
- paddingY: 16,
415
- itemSpacing: 8,
416
- children: [
417
- {
418
- name: "Heading",
419
- kind: "text",
420
- textContent: "Card Title",
421
- textPreset: "heading/h4",
422
- textFillSemantic: "color/semantic/text/primary",
423
- },
424
- {
425
- name: "Body",
426
- kind: "text",
427
- textContent: "Card description text goes here with supporting details.",
428
- textPreset: "body/md",
429
- textFillSemantic: "color/semantic/text/secondary",
430
- },
431
- ],
432
- },
433
- {
434
- name: "Footer",
435
- kind: "frame",
436
- layoutMode: "HORIZONTAL",
437
- primaryAxisSizing: "AUTO",
438
- counterAxisSizing: "AUTO",
439
- paddingX: 16,
440
- paddingY: 12,
441
- itemSpacing: 8,
442
- primaryAxisAlign: "MAX",
443
- children: [
444
- {
445
- name: "Action",
446
- kind: "text",
447
- textContent: "Learn more",
448
- textPreset: "label/md",
449
- textFillSemantic: "color/semantic/actions/primary/bg/default",
450
- },
451
- ],
452
- },
453
- ],
454
- },
455
- variantProperties: [
456
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
457
- { name: "Elevated", values: ["true", "false"], defaultValue: "false" },
458
- ],
459
- tokenBindings: [
460
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/raised" },
461
- { nodePath: "", property: "strokes", semanticToken: "color/semantic/border/default" },
462
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/surface/default" },
463
- ],
464
- };
465
-
466
- const MODAL: ComponentBlueprint = {
467
- name: "Modal",
468
- category: "overlay",
469
- description: "Dialog modal with header, content, and footer buttons",
470
- root: {
471
- name: "Modal",
472
- kind: "frame",
473
- width: 480,
474
- layoutMode: "VERTICAL",
475
- primaryAxisSizing: "AUTO",
476
- counterAxisSizing: "FIXED",
477
- cornerRadius: 16,
478
- fillSemantic: "color/semantic/surface/overlay",
479
- effects: [{
480
- type: "DROP_SHADOW",
481
- color: { r: 0, g: 0, b: 0, a: 0.12 },
482
- offset: { x: 0, y: 8 },
483
- radius: 24,
484
- spread: 0,
485
- }],
486
- children: [
487
- {
488
- name: "Header",
489
- kind: "frame",
490
- layoutMode: "HORIZONTAL",
491
- primaryAxisSizing: "AUTO",
492
- counterAxisSizing: "AUTO",
493
- paddingX: 24,
494
- paddingY: 20,
495
- primaryAxisAlign: "SPACE_BETWEEN",
496
- counterAxisAlign: "CENTER",
497
- children: [
498
- {
499
- name: "Title",
500
- kind: "text",
501
- textContent: "Modal Title",
502
- textPreset: "heading/h4",
503
- textFillSemantic: "color/semantic/text/primary",
504
- },
505
- {
506
- name: "CloseBtn",
507
- kind: "frame",
508
- width: 24,
509
- height: 24,
510
- cornerRadius: 4,
511
- fillSemantic: "color/semantic/surface/subtle",
512
- },
513
- ],
514
- },
515
- {
516
- name: "Content",
517
- kind: "frame",
518
- layoutMode: "VERTICAL",
519
- primaryAxisSizing: "AUTO",
520
- counterAxisSizing: "AUTO",
521
- paddingX: 24,
522
- paddingY: 16,
523
- itemSpacing: 12,
524
- children: [
525
- {
526
- name: "Body",
527
- kind: "text",
528
- textContent: "Modal content goes here. This is a placeholder for the dialog body.",
529
- textPreset: "body/md",
530
- textFillSemantic: "color/semantic/text/secondary",
531
- },
532
- ],
533
- },
534
- {
535
- name: "Footer",
536
- kind: "frame",
537
- layoutMode: "HORIZONTAL",
538
- primaryAxisSizing: "AUTO",
539
- counterAxisSizing: "AUTO",
540
- paddingX: 24,
541
- paddingY: 16,
542
- itemSpacing: 12,
543
- primaryAxisAlign: "MAX",
544
- children: [
545
- {
546
- name: "SecondaryBtn",
547
- kind: "frame",
548
- width: 80,
549
- height: 36,
550
- cornerRadius: 8,
551
- layoutMode: "HORIZONTAL",
552
- primaryAxisAlign: "CENTER",
553
- counterAxisAlign: "CENTER",
554
- strokeSemantic: "color/semantic/border/default",
555
- strokeWeight: 1,
556
- fillSemantic: "color/semantic/surface/default",
557
- children: [{
558
- name: "SecondaryLabel",
559
- kind: "text",
560
- textContent: "Cancel",
561
- textPreset: "label/md",
562
- textFillSemantic: "color/semantic/text/primary",
563
- }],
564
- },
565
- {
566
- name: "PrimaryBtn",
567
- kind: "frame",
568
- width: 80,
569
- height: 36,
570
- cornerRadius: 8,
571
- layoutMode: "HORIZONTAL",
572
- primaryAxisAlign: "CENTER",
573
- counterAxisAlign: "CENTER",
574
- fillSemantic: "color/semantic/actions/primary/bg/default",
575
- children: [{
576
- name: "PrimaryLabel",
577
- kind: "text",
578
- textContent: "Confirm",
579
- textPreset: "label/md",
580
- textFillSemantic: "color/semantic/text/on-color",
581
- }],
582
- },
583
- ],
584
- },
585
- ],
586
- },
587
- variantProperties: [
588
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
589
- ],
590
- tokenBindings: [],
591
- };
592
-
593
- const TOAST: ComponentBlueprint = {
594
- name: "Toast",
595
- category: "feedback",
596
- description: "Notification toast with status icon, message, and close button",
597
- root: {
598
- name: "Toast",
599
- kind: "frame",
600
- width: 360,
601
- height: 56,
602
- layoutMode: "HORIZONTAL",
603
- primaryAxisAlign: "MIN",
604
- counterAxisAlign: "CENTER",
605
- primaryAxisSizing: "FIXED",
606
- counterAxisSizing: "FIXED",
607
- paddingX: 16,
608
- paddingY: 12,
609
- itemSpacing: 12,
610
- cornerRadius: 8,
611
- fillSemantic: "color/semantic/feedback/success/bg",
612
- children: [
613
- {
614
- name: "StatusIcon",
615
- kind: "frame",
616
- width: 20,
617
- height: 20,
618
- fillSemantic: "color/semantic/feedback/success/text",
619
- iconSlot: { defaultIcon: "icon/status/info", required: true, size: "sm", colorToken: "color/semantic/feedback/success/text", decorative: false },
620
- },
621
- {
622
- name: "Message",
623
- kind: "text",
624
- textContent: "Operation completed successfully.",
625
- textPreset: "body/sm",
626
- textFillSemantic: "color/semantic/feedback/success/text",
627
- },
628
- {
629
- name: "CloseIcon",
630
- kind: "frame",
631
- width: 16,
632
- height: 16,
633
- fillSemantic: "color/semantic/icon/secondary",
634
- iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false },
635
- },
636
- ],
637
- },
638
- variantProperties: [
639
- { name: "Type", values: ["Success", "Warning", "Error", "Info"], defaultValue: "Success" },
640
- ],
641
- tokenBindings: [],
642
- iconSlots: [
643
- { nodePath: "StatusIcon", propName: "statusIcon", defaultIcon: "icon/status/info", required: true },
644
- { nodePath: "CloseIcon", propName: "closeIcon", defaultIcon: "icon/action/close", required: false },
645
- ],
646
- };
647
-
648
- const BADGE: ComponentBlueprint = {
649
- name: "Badge",
650
- category: "core",
651
- description: "Status badge with label",
652
- root: {
653
- name: "Badge",
654
- kind: "frame",
655
- layoutMode: "HORIZONTAL",
656
- primaryAxisSizing: "AUTO",
657
- counterAxisSizing: "AUTO",
658
- paddingX: 8,
659
- paddingY: 2,
660
- cornerRadius: 9999,
661
- fillSemantic: "color/semantic/actions/primary/bg/default",
662
- primaryAxisAlign: "CENTER",
663
- counterAxisAlign: "CENTER",
664
- children: [
665
- {
666
- name: "Label",
667
- kind: "text",
668
- textContent: "Badge",
669
- textPreset: "label/sm",
670
- textFillSemantic: "color/semantic/text/on-color",
671
- },
672
- ],
673
- },
674
- variantProperties: [
675
- { name: "Type", values: ["Default", "Success", "Warning", "Error", "Info"], defaultValue: "Default" },
676
- { name: "Size", values: ["sm", "md"], defaultValue: "sm" },
677
- ],
678
- tokenBindings: [],
679
- };
680
-
681
- const AVATAR: ComponentBlueprint = {
682
- name: "Avatar",
683
- category: "core",
684
- description: "Avatar with image placeholder and status indicator",
685
- root: {
686
- name: "Avatar",
687
- kind: "frame",
688
- width: 40,
689
- height: 40,
690
- cornerRadius: 9999,
691
- fillSemantic: "color/semantic/surface/subtle",
692
- children: [
693
- {
694
- name: "Initials",
695
- kind: "text",
696
- textContent: "AB",
697
- textPreset: "label/md",
698
- textFillSemantic: "color/semantic/text/secondary",
699
- },
700
- {
701
- name: "StatusDot",
702
- kind: "ellipse",
703
- width: 10,
704
- height: 10,
705
- fillSemantic: "color/semantic/feedback/success/text",
706
- },
707
- ],
708
- },
709
- variantProperties: [
710
- { name: "Size", values: ["sm", "md", "lg", "xl"], defaultValue: "md" },
711
- ],
712
- tokenBindings: [],
713
- };
714
-
715
- const TOOLTIP: ComponentBlueprint = {
716
- name: "Tooltip",
717
- category: "overlay",
718
- description: "Tooltip with content text and arrow",
719
- root: {
720
- name: "Tooltip",
721
- kind: "frame",
722
- layoutMode: "HORIZONTAL",
723
- primaryAxisSizing: "AUTO",
724
- counterAxisSizing: "AUTO",
725
- paddingX: 12,
726
- paddingY: 8,
727
- cornerRadius: 6,
728
- fillSemantic: "color/semantic/surface/inverse",
729
- children: [
730
- {
731
- name: "Content",
732
- kind: "text",
733
- textContent: "Tooltip text",
734
- textPreset: "body/sm",
735
- textFillSemantic: "color/semantic/text/inverse",
736
- },
737
- ],
738
- },
739
- variantProperties: [],
740
- tokenBindings: [],
741
- };
742
-
743
- const TABS: ComponentBlueprint = {
744
- name: "Tabs",
745
- category: "navigation",
746
- description: "Tab bar with active indicator",
747
- root: {
748
- name: "Tabs",
749
- kind: "frame",
750
- width: 400,
751
- height: 40,
752
- layoutMode: "HORIZONTAL",
753
- primaryAxisSizing: "FIXED",
754
- counterAxisSizing: "FIXED",
755
- itemSpacing: 0,
756
- strokeSemantic: "color/semantic/border/subtle",
757
- strokeWeight: 1,
758
- children: [
759
- {
760
- name: "Tab1",
761
- kind: "frame",
762
- layoutMode: "HORIZONTAL",
763
- primaryAxisSizing: "AUTO",
764
- counterAxisSizing: "AUTO",
765
- paddingX: 16,
766
- paddingY: 8,
767
- primaryAxisAlign: "CENTER",
768
- counterAxisAlign: "CENTER",
769
- children: [{
770
- name: "Tab1Label",
771
- kind: "text",
772
- textContent: "Tab One",
773
- textPreset: "label/md",
774
- textFillSemantic: "color/semantic/actions/primary/bg/default",
775
- }],
776
- },
777
- {
778
- name: "Tab2",
779
- kind: "frame",
780
- layoutMode: "HORIZONTAL",
781
- primaryAxisSizing: "AUTO",
782
- counterAxisSizing: "AUTO",
783
- paddingX: 16,
784
- paddingY: 8,
785
- primaryAxisAlign: "CENTER",
786
- counterAxisAlign: "CENTER",
787
- children: [{
788
- name: "Tab2Label",
789
- kind: "text",
790
- textContent: "Tab Two",
791
- textPreset: "label/md",
792
- textFillSemantic: "color/semantic/text/secondary",
793
- }],
794
- },
795
- {
796
- name: "Tab3",
797
- kind: "frame",
798
- layoutMode: "HORIZONTAL",
799
- primaryAxisSizing: "AUTO",
800
- counterAxisSizing: "AUTO",
801
- paddingX: 16,
802
- paddingY: 8,
803
- primaryAxisAlign: "CENTER",
804
- counterAxisAlign: "CENTER",
805
- children: [{
806
- name: "Tab3Label",
807
- kind: "text",
808
- textContent: "Tab Three",
809
- textPreset: "label/md",
810
- textFillSemantic: "color/semantic/text/secondary",
811
- }],
812
- },
813
- ],
814
- },
815
- variantProperties: [],
816
- tokenBindings: [],
817
- };
818
-
819
- const BREADCRUMB: ComponentBlueprint = {
820
- name: "Breadcrumb",
821
- category: "navigation",
822
- description: "Breadcrumb navigation with separator",
823
- root: {
824
- name: "Breadcrumb",
825
- kind: "frame",
826
- layoutMode: "HORIZONTAL",
827
- primaryAxisSizing: "AUTO",
828
- counterAxisSizing: "AUTO",
829
- itemSpacing: 8,
830
- counterAxisAlign: "CENTER",
831
- children: [
832
- {
833
- name: "Crumb1",
834
- kind: "text",
835
- textContent: "Home",
836
- textPreset: "body/sm",
837
- textFillSemantic: "color/semantic/actions/primary/bg/default",
838
- },
839
- {
840
- name: "Sep1",
841
- kind: "text",
842
- textContent: "/",
843
- textPreset: "body/sm",
844
- textFillSemantic: "color/semantic/text/tertiary",
845
- },
846
- {
847
- name: "Crumb2",
848
- kind: "text",
849
- textContent: "Category",
850
- textPreset: "body/sm",
851
- textFillSemantic: "color/semantic/actions/primary/bg/default",
852
- },
853
- {
854
- name: "Sep2",
855
- kind: "text",
856
- textContent: "/",
857
- textPreset: "body/sm",
858
- textFillSemantic: "color/semantic/text/tertiary",
859
- },
860
- {
861
- name: "Current",
862
- kind: "text",
863
- textContent: "Current Page",
864
- textPreset: "body/sm",
865
- textFillSemantic: "color/semantic/text/primary",
866
- },
867
- ],
868
- },
869
- variantProperties: [],
870
- tokenBindings: [],
871
- };
872
-
873
- const TAG: ComponentBlueprint = {
874
- name: "Tag",
875
- category: "core",
876
- description: "Tag/chip with optional icon and remove button",
877
- root: {
878
- name: "Tag",
879
- kind: "frame",
880
- layoutMode: "HORIZONTAL",
881
- primaryAxisSizing: "AUTO",
882
- counterAxisSizing: "AUTO",
883
- paddingX: 8,
884
- paddingY: 4,
885
- itemSpacing: 4,
886
- cornerRadius: 6,
887
- counterAxisAlign: "CENTER",
888
- fillSemantic: "color/semantic/surface/subtle",
889
- strokeSemantic: "color/semantic/border/default",
890
- strokeWeight: 1,
891
- children: [
892
- {
893
- name: "Label",
894
- kind: "text",
895
- textContent: "Tag",
896
- textPreset: "label/sm",
897
- textFillSemantic: "color/semantic/text/primary",
898
- },
899
- {
900
- name: "RemoveIcon",
901
- kind: "frame",
902
- width: 12,
903
- height: 12,
904
- fillSemantic: "color/semantic/icon/secondary",
905
- iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false },
906
- },
907
- ],
908
- },
909
- variantProperties: [
910
- { name: "Type", values: ["Default", "Success", "Warning"], defaultValue: "Default" },
911
- { name: "Removable", values: ["true", "false"], defaultValue: "true" },
912
- ],
913
- tokenBindings: [],
914
- iconSlots: [
915
- { nodePath: "RemoveIcon", propName: "removeIcon", defaultIcon: "icon/action/close", required: false },
916
- ],
917
- };
918
-
919
- const NAVBAR: ComponentBlueprint = {
920
- name: "NavBar",
921
- category: "navigation",
922
- description: "Top navigation bar with logo, nav items, and actions",
923
- root: {
924
- name: "NavBar",
925
- kind: "frame",
926
- width: 1440,
927
- height: 64,
928
- layoutMode: "HORIZONTAL",
929
- primaryAxisAlign: "SPACE_BETWEEN",
930
- counterAxisAlign: "CENTER",
931
- primaryAxisSizing: "FIXED",
932
- counterAxisSizing: "FIXED",
933
- paddingX: 32,
934
- paddingY: 16,
935
- fillSemantic: "color/semantic/surface/default",
936
- strokeSemantic: "color/semantic/border/subtle",
937
- strokeWeight: 1,
938
- children: [
939
- {
940
- name: "Logo",
941
- kind: "frame",
942
- width: 120,
943
- height: 32,
944
- fillSemantic: "color/semantic/actions/primary/bg/default",
945
- cornerRadius: 4,
946
- },
947
- {
948
- name: "NavItems",
949
- kind: "frame",
950
- layoutMode: "HORIZONTAL",
951
- primaryAxisSizing: "AUTO",
952
- counterAxisSizing: "AUTO",
953
- itemSpacing: 24,
954
- children: [
955
- { name: "Nav1", kind: "text", textContent: "Dashboard", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
956
- { name: "Nav2", kind: "text", textContent: "Projects", textPreset: "label/md", textFillSemantic: "color/semantic/text/secondary" },
957
- { name: "Nav3", kind: "text", textContent: "Settings", textPreset: "label/md", textFillSemantic: "color/semantic/text/secondary" },
958
- ],
959
- },
960
- {
961
- name: "Actions",
962
- kind: "frame",
963
- layoutMode: "HORIZONTAL",
964
- primaryAxisSizing: "AUTO",
965
- counterAxisSizing: "AUTO",
966
- itemSpacing: 12,
967
- counterAxisAlign: "CENTER",
968
- children: [
969
- {
970
- name: "AvatarSlot",
971
- kind: "ellipse",
972
- width: 32,
973
- height: 32,
974
- fillSemantic: "color/semantic/surface/subtle",
975
- },
976
- ],
977
- },
978
- ],
979
- },
980
- variantProperties: [],
981
- tokenBindings: [],
982
- };
983
-
984
- const TABLE: ComponentBlueprint = {
985
- name: "Table",
986
- category: "data",
987
- description: "Data table with header row and body rows",
988
- root: {
989
- name: "Table",
990
- kind: "frame",
991
- width: 800,
992
- layoutMode: "VERTICAL",
993
- primaryAxisSizing: "AUTO",
994
- counterAxisSizing: "FIXED",
995
- cornerRadius: 8,
996
- fillSemantic: "color/semantic/surface/default",
997
- strokeSemantic: "color/semantic/border/default",
998
- strokeWeight: 1,
999
- children: [
1000
- {
1001
- name: "HeaderRow",
1002
- kind: "frame",
1003
- layoutMode: "HORIZONTAL",
1004
- primaryAxisSizing: "AUTO",
1005
- counterAxisSizing: "AUTO",
1006
- paddingX: 16,
1007
- paddingY: 12,
1008
- fillSemantic: "color/semantic/surface/subtle",
1009
- children: [
1010
- { name: "Col1H", kind: "text", textContent: "Name", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary", width: 200 },
1011
- { name: "Col2H", kind: "text", textContent: "Status", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary", width: 120 },
1012
- { name: "Col3H", kind: "text", textContent: "Date", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary", width: 120 },
1013
- { name: "Col4H", kind: "text", textContent: "Actions", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary", width: 100 },
1014
- ],
1015
- },
1016
- {
1017
- name: "Row1",
1018
- kind: "frame",
1019
- layoutMode: "HORIZONTAL",
1020
- primaryAxisSizing: "AUTO",
1021
- counterAxisSizing: "AUTO",
1022
- paddingX: 16,
1023
- paddingY: 12,
1024
- strokeSemantic: "color/semantic/border/subtle",
1025
- strokeWeight: 1,
1026
- children: [
1027
- { name: "Col1R1", kind: "text", textContent: "Item name", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary", width: 200 },
1028
- { name: "Col2R1", kind: "text", textContent: "Active", textPreset: "body/sm", textFillSemantic: "color/semantic/feedback/success/text", width: 120 },
1029
- { name: "Col3R1", kind: "text", textContent: "Mar 21, 2026", textPreset: "body/sm", textFillSemantic: "color/semantic/text/secondary", width: 120 },
1030
- { name: "Col4R1", kind: "text", textContent: "Edit", textPreset: "body/sm", textFillSemantic: "color/semantic/actions/primary/bg/default", width: 100 },
1031
- ],
1032
- },
1033
- {
1034
- name: "Row2",
1035
- kind: "frame",
1036
- layoutMode: "HORIZONTAL",
1037
- primaryAxisSizing: "AUTO",
1038
- counterAxisSizing: "AUTO",
1039
- paddingX: 16,
1040
- paddingY: 12,
1041
- fillSemantic: "color/semantic/surface/subtle",
1042
- children: [
1043
- { name: "Col1R2", kind: "text", textContent: "Another item", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary", width: 200 },
1044
- { name: "Col2R2", kind: "text", textContent: "Pending", textPreset: "body/sm", textFillSemantic: "color/semantic/feedback/warning/text", width: 120 },
1045
- { name: "Col3R2", kind: "text", textContent: "Mar 20, 2026", textPreset: "body/sm", textFillSemantic: "color/semantic/text/secondary", width: 120 },
1046
- { name: "Col4R2", kind: "text", textContent: "Edit", textPreset: "body/sm", textFillSemantic: "color/semantic/actions/primary/bg/default", width: 100 },
1047
- ],
1048
- },
1049
- ],
1050
- },
1051
- variantProperties: [],
1052
- tokenBindings: [],
1053
- };
1054
-
1055
- // ─── Batch 1: Gap-fill blueprints ───────────────────────────────────────────
1056
-
1057
- const ACCORDION: ComponentBlueprint = {
1058
- name: "Accordion",
1059
- category: "data",
1060
- description: "Expandable content sections with header triggers",
1061
- root: {
1062
- name: "Accordion",
1063
- kind: "frame",
1064
- width: 400,
1065
- layoutMode: "VERTICAL",
1066
- primaryAxisSizing: "AUTO",
1067
- counterAxisSizing: "FIXED",
1068
- cornerRadius: 8,
1069
- strokeSemantic: "color/semantic/border/default",
1070
- strokeWeight: 1,
1071
- children: [
1072
- {
1073
- name: "Item1",
1074
- kind: "frame",
1075
- layoutMode: "VERTICAL",
1076
- primaryAxisSizing: "AUTO",
1077
- counterAxisSizing: "AUTO",
1078
- children: [
1079
- {
1080
- name: "Header",
1081
- kind: "frame",
1082
- layoutMode: "HORIZONTAL",
1083
- primaryAxisAlign: "SPACE_BETWEEN",
1084
- counterAxisAlign: "CENTER",
1085
- primaryAxisSizing: "AUTO",
1086
- counterAxisSizing: "FIXED",
1087
- height: 48,
1088
- paddingX: 16,
1089
- paddingY: 12,
1090
- fillSemantic: "color/semantic/surface/default",
1091
- children: [
1092
- { name: "Title", kind: "text", textContent: "Section title", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
1093
- { name: "Chevron", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/navigation/expand-more", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1094
- ],
1095
- },
1096
- {
1097
- name: "Content",
1098
- kind: "frame",
1099
- layoutMode: "VERTICAL",
1100
- primaryAxisSizing: "AUTO",
1101
- counterAxisSizing: "AUTO",
1102
- paddingX: 16,
1103
- paddingY: 12,
1104
- children: [
1105
- { name: "Body", kind: "text", textContent: "Accordion content goes here. This area expands and collapses.", textPreset: "body/sm", textFillSemantic: "color/semantic/text/secondary" },
1106
- ],
1107
- },
1108
- ],
1109
- },
1110
- ],
1111
- },
1112
- variantProperties: [
1113
- { name: "State", values: ["Collapsed", "Expanded"], defaultValue: "Collapsed" },
1114
- { name: "Type", values: ["Default", "Bordered", "Flush"], defaultValue: "Default" },
1115
- ],
1116
- tokenBindings: [
1117
- { nodePath: "Item1.Header", property: "fills", semanticToken: "color/semantic/surface/default" },
1118
- { nodePath: "Item1.Header.Title", property: "fills", semanticToken: "color/semantic/text/primary" },
1119
- ],
1120
- iconSlots: [
1121
- { nodePath: "Item1.Header.Chevron", propName: "chevronIcon", defaultIcon: "icon/navigation/expand-more", required: true },
1122
- ],
1123
- };
1124
-
1125
- const SLIDER: ComponentBlueprint = {
1126
- name: "Slider",
1127
- category: "forms",
1128
- description: "Range input control with track, fill, and draggable thumb",
1129
- root: {
1130
- name: "Slider",
1131
- kind: "frame",
1132
- width: 280,
1133
- layoutMode: "VERTICAL",
1134
- primaryAxisSizing: "AUTO",
1135
- counterAxisSizing: "FIXED",
1136
- itemSpacing: 8,
1137
- children: [
1138
- {
1139
- name: "LabelRow",
1140
- kind: "frame",
1141
- layoutMode: "HORIZONTAL",
1142
- primaryAxisAlign: "SPACE_BETWEEN",
1143
- primaryAxisSizing: "AUTO",
1144
- counterAxisSizing: "AUTO",
1145
- children: [
1146
- { name: "Label", kind: "text", textContent: "Volume", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1147
- { name: "Value", kind: "text", textContent: "50", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" },
1148
- ],
1149
- },
1150
- {
1151
- name: "TrackContainer",
1152
- kind: "frame",
1153
- height: 24,
1154
- layoutMode: "HORIZONTAL",
1155
- counterAxisAlign: "CENTER",
1156
- primaryAxisSizing: "AUTO",
1157
- counterAxisSizing: "FIXED",
1158
- children: [
1159
- { name: "Track", kind: "rect", width: 280, height: 4, cornerRadius: 2, fillSemantic: "color/semantic/border/default" },
1160
- { name: "Fill", kind: "rect", width: 140, height: 4, cornerRadius: 2, fillSemantic: "color/semantic/actions/primary/bg/default" },
1161
- { name: "Thumb", kind: "ellipse", width: 20, height: 20, fillSemantic: "color/semantic/surface/default", strokeSemantic: "color/semantic/actions/primary/bg/default", strokeWeight: 2 },
1162
- ],
1163
- },
1164
- ],
1165
- },
1166
- variantProperties: [
1167
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
1168
- { name: "State", values: ["Default", "Hover", "Active", "Disabled"], defaultValue: "Default" },
1169
- ],
1170
- tokenBindings: [
1171
- { nodePath: "TrackContainer.Fill", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1172
- { nodePath: "TrackContainer.Thumb", property: "strokes", semanticToken: "color/semantic/actions/primary/bg/default" },
1173
- { nodePath: "TrackContainer.Track", property: "fills", semanticToken: "color/semantic/border/default" },
1174
- ],
1175
- };
1176
-
1177
- const ALERT: ComponentBlueprint = {
1178
- name: "Alert",
1179
- category: "feedback",
1180
- description: "Contextual feedback message with icon, title, body, and actions",
1181
- root: {
1182
- name: "Alert",
1183
- kind: "frame",
1184
- width: 400,
1185
- layoutMode: "HORIZONTAL",
1186
- primaryAxisSizing: "AUTO",
1187
- counterAxisSizing: "FIXED",
1188
- paddingX: 16,
1189
- paddingY: 12,
1190
- itemSpacing: 12,
1191
- cornerRadius: 8,
1192
- fillSemantic: "color/semantic/feedback/info/bg",
1193
- strokeSemantic: "color/semantic/border/default",
1194
- strokeWeight: 1,
1195
- children: [
1196
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/feedback/info/text", iconSlot: { defaultIcon: "icon/status/info", required: true, size: "sm", colorToken: "color/semantic/feedback/info/text", decorative: false } },
1197
- {
1198
- name: "Content",
1199
- kind: "frame",
1200
- layoutMode: "VERTICAL",
1201
- primaryAxisSizing: "AUTO",
1202
- counterAxisSizing: "AUTO",
1203
- itemSpacing: 4,
1204
- children: [
1205
- { name: "Title", kind: "text", textContent: "Information", textPreset: "label/md", textFillSemantic: "color/semantic/feedback/info/text" },
1206
- { name: "Message", kind: "text", textContent: "This is an informational alert message.", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" },
1207
- ],
1208
- },
1209
- { name: "Close", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false } },
1210
- ],
1211
- },
1212
- variantProperties: [
1213
- { name: "Type", values: ["info", "success", "warning", "error"], defaultValue: "info" },
1214
- { name: "Dismissible", values: ["true", "false"], defaultValue: "true" },
1215
- ],
1216
- tokenBindings: [
1217
- { nodePath: "", property: "fills", semanticToken: "color/semantic/feedback/info/bg" },
1218
- { nodePath: "Content.Title", property: "fills", semanticToken: "color/semantic/feedback/info/text" },
1219
- { nodePath: "Icon", property: "fills", semanticToken: "color/semantic/feedback/info/text" },
1220
- ],
1221
- iconSlots: [
1222
- { nodePath: "Icon", propName: "statusIcon", defaultIcon: "icon/status/info", required: true },
1223
- { nodePath: "Close", propName: "closeIcon", defaultIcon: "icon/action/close", required: false },
1224
- ],
1225
- };
1226
-
1227
- const CHIP: ComponentBlueprint = {
1228
- name: "Chip",
1229
- category: "core",
1230
- description: "Compact interactive element for filtering, selection, or metadata display",
1231
- root: {
1232
- name: "Chip",
1233
- kind: "frame",
1234
- height: 32,
1235
- layoutMode: "HORIZONTAL",
1236
- primaryAxisAlign: "CENTER",
1237
- counterAxisAlign: "CENTER",
1238
- primaryAxisSizing: "AUTO",
1239
- counterAxisSizing: "FIXED",
1240
- paddingX: 12,
1241
- itemSpacing: 6,
1242
- cornerRadius: 16,
1243
- fillSemantic: "color/semantic/surface/subtle",
1244
- children: [
1245
- { name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/settings", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1246
- { name: "Label", kind: "text", textContent: "Chip label", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1247
- { name: "Close", kind: "frame", width: 14, height: 14, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false } },
1248
- ],
1249
- },
1250
- variantProperties: [
1251
- { name: "Type", values: ["Filter", "Input", "Suggestion"], defaultValue: "Filter" },
1252
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
1253
- { name: "State", values: ["Default", "Selected", "Hover", "Disabled"], defaultValue: "Default" },
1254
- ],
1255
- tokenBindings: [
1256
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/subtle" },
1257
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/pill" },
1258
- { nodePath: "Label", property: "fills", semanticToken: "color/semantic/text/primary" },
1259
- ],
1260
- iconSlots: [
1261
- { nodePath: "Icon", propName: "leadingIcon", defaultIcon: "icon/action/settings", required: false },
1262
- { nodePath: "Close", propName: "closeIcon", defaultIcon: "icon/action/close", required: false },
1263
- ],
1264
- };
1265
-
1266
- const PROGRESS: ComponentBlueprint = {
1267
- name: "Progress",
1268
- category: "feedback",
1269
- description: "Determinate or indeterminate progress indicator",
1270
- root: {
1271
- name: "Progress",
1272
- kind: "frame",
1273
- width: 280,
1274
- layoutMode: "VERTICAL",
1275
- primaryAxisSizing: "AUTO",
1276
- counterAxisSizing: "FIXED",
1277
- itemSpacing: 4,
1278
- children: [
1279
- {
1280
- name: "LabelRow",
1281
- kind: "frame",
1282
- layoutMode: "HORIZONTAL",
1283
- primaryAxisAlign: "SPACE_BETWEEN",
1284
- primaryAxisSizing: "AUTO",
1285
- counterAxisSizing: "AUTO",
1286
- children: [
1287
- { name: "Label", kind: "text", textContent: "Uploading...", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1288
- { name: "Percentage", kind: "text", textContent: "65%", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" },
1289
- ],
1290
- },
1291
- {
1292
- name: "Track",
1293
- kind: "rect",
1294
- width: 280,
1295
- height: 8,
1296
- cornerRadius: 4,
1297
- fillSemantic: "color/semantic/surface/subtle",
1298
- },
1299
- {
1300
- name: "Fill",
1301
- kind: "rect",
1302
- width: 182,
1303
- height: 8,
1304
- cornerRadius: 4,
1305
- fillSemantic: "color/semantic/actions/primary/bg/default",
1306
- },
1307
- ],
1308
- },
1309
- variantProperties: [
1310
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1311
- { name: "Type", values: ["linear", "circular"], defaultValue: "linear" },
1312
- ],
1313
- tokenBindings: [
1314
- { nodePath: "Track", property: "fills", semanticToken: "color/semantic/surface/subtle" },
1315
- { nodePath: "Fill", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1316
- ],
1317
- };
1318
-
1319
- const SIDENAVIGATION: ComponentBlueprint = {
1320
- name: "SideNavigation",
1321
- category: "navigation",
1322
- description: "Vertical sidebar navigation with collapsible sections",
1323
- root: {
1324
- name: "SideNavigation",
1325
- kind: "frame",
1326
- width: 240,
1327
- height: 600,
1328
- layoutMode: "VERTICAL",
1329
- primaryAxisSizing: "FIXED",
1330
- counterAxisSizing: "FIXED",
1331
- paddingY: 16,
1332
- itemSpacing: 4,
1333
- fillSemantic: "color/semantic/surface/default",
1334
- strokeSemantic: "color/semantic/border/subtle",
1335
- strokeWeight: 1,
1336
- children: [
1337
- {
1338
- name: "SectionHeader",
1339
- kind: "text",
1340
- textContent: "MAIN",
1341
- textPreset: "label/sm",
1342
- textFillSemantic: "color/semantic/text/tertiary",
1343
- },
1344
- {
1345
- name: "NavItem1",
1346
- kind: "frame",
1347
- layoutMode: "HORIZONTAL",
1348
- primaryAxisSizing: "AUTO",
1349
- counterAxisSizing: "AUTO",
1350
- height: 40,
1351
- paddingX: 12,
1352
- counterAxisAlign: "CENTER",
1353
- itemSpacing: 8,
1354
- cornerRadius: 8,
1355
- fillSemantic: "color/semantic/actions/primary/bg/default",
1356
- children: [
1357
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/inverse", iconSlot: { defaultIcon: "icon/navigation/home", required: true, size: "sm", colorToken: "color/semantic/icon/inverse", decorative: true } },
1358
- { name: "Label", kind: "text", textContent: "Dashboard", textPreset: "label/md", textFillSemantic: "color/semantic/text/on-color" },
1359
- ],
1360
- },
1361
- {
1362
- name: "NavItem2",
1363
- kind: "frame",
1364
- layoutMode: "HORIZONTAL",
1365
- primaryAxisSizing: "AUTO",
1366
- counterAxisSizing: "AUTO",
1367
- height: 40,
1368
- paddingX: 12,
1369
- counterAxisAlign: "CENTER",
1370
- itemSpacing: 8,
1371
- cornerRadius: 8,
1372
- children: [
1373
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/search", required: true, size: "sm", colorToken: "color/semantic/icon/secondary", decorative: true } },
1374
- { name: "Label", kind: "text", textContent: "Projects", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
1375
- ],
1376
- },
1377
- {
1378
- name: "NavItem3",
1379
- kind: "frame",
1380
- layoutMode: "HORIZONTAL",
1381
- primaryAxisSizing: "AUTO",
1382
- counterAxisSizing: "AUTO",
1383
- height: 40,
1384
- paddingX: 12,
1385
- counterAxisAlign: "CENTER",
1386
- itemSpacing: 8,
1387
- cornerRadius: 8,
1388
- children: [
1389
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/social/person", required: true, size: "sm", colorToken: "color/semantic/icon/secondary", decorative: true } },
1390
- { name: "Label", kind: "text", textContent: "Settings", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
1391
- ],
1392
- },
1393
- ],
1394
- },
1395
- variantProperties: [
1396
- { name: "State", values: ["Expanded", "Collapsed"], defaultValue: "Expanded" },
1397
- ],
1398
- tokenBindings: [
1399
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
1400
- { nodePath: "NavItem1", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1401
- ],
1402
- iconSlots: [
1403
- { nodePath: "NavItem1.Icon", propName: "navItem1Icon", defaultIcon: "icon/navigation/home", required: true },
1404
- { nodePath: "NavItem2.Icon", propName: "navItem2Icon", defaultIcon: "icon/action/search", required: true },
1405
- { nodePath: "NavItem3.Icon", propName: "navItem3Icon", defaultIcon: "icon/social/person", required: true },
1406
- ],
1407
- };
1408
-
1409
- const ICON: ComponentBlueprint = {
1410
- name: "Icon",
1411
- category: "core",
1412
- description: "SVG-based vector graphic primitive for visual communication and UI affordances",
1413
- root: {
1414
- name: "Icon",
1415
- kind: "frame",
1416
- width: 24,
1417
- height: 24,
1418
- layoutMode: "HORIZONTAL",
1419
- primaryAxisAlign: "CENTER",
1420
- counterAxisAlign: "CENTER",
1421
- primaryAxisSizing: "FIXED",
1422
- counterAxisSizing: "FIXED",
1423
- children: [
1424
- { name: "Vector", kind: "vector", width: 20, height: 20, fillSemantic: "color/semantic/icon/default" },
1425
- ],
1426
- },
1427
- variantProperties: [
1428
- { name: "Size", values: ["xs", "sm", "md", "lg", "xl"], defaultValue: "md" },
1429
- { name: "Type", values: ["Filled", "Outlined"], defaultValue: "Filled" },
1430
- { name: "Color", values: ["default", "primary", "secondary", "disabled", "inverse", "error", "success"], defaultValue: "default" },
1431
- ],
1432
- tokenBindings: [
1433
- { nodePath: "Vector", property: "fills", semanticToken: "color/semantic/icon/default" },
1434
- ],
1435
- iconSlots: [],
1436
- };
1437
-
1438
- const LINK: ComponentBlueprint = {
1439
- name: "Link",
1440
- category: "core",
1441
- description: "Navigational text element for routing between pages or external resources",
1442
- root: {
1443
- name: "Link",
1444
- kind: "frame",
1445
- layoutMode: "HORIZONTAL",
1446
- primaryAxisSizing: "AUTO",
1447
- counterAxisSizing: "AUTO",
1448
- itemSpacing: 4,
1449
- counterAxisAlign: "CENTER",
1450
- children: [
1451
- { name: "Label", kind: "text", textContent: "Learn more", textPreset: "body/md", textFillSemantic: "color/semantic/actions/primary/bg/default" },
1452
- { name: "ExternalIcon", kind: "frame", width: 14, height: 14, fillSemantic: "color/semantic/actions/primary/bg/default", opacity: 0, iconSlot: { defaultIcon: "icon/action/open-in-new", required: false, size: "xs", colorToken: "color/semantic/actions/primary/bg/default", decorative: true } },
1453
- ],
1454
- },
1455
- variantProperties: [
1456
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1457
- { name: "Type", values: ["Standalone", "Inline"], defaultValue: "Standalone" },
1458
- { name: "External", values: ["true", "false"], defaultValue: "false" },
1459
- ],
1460
- tokenBindings: [
1461
- { nodePath: "Label", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1462
- { nodePath: "ExternalIcon", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1463
- ],
1464
- iconSlots: [
1465
- { nodePath: "ExternalIcon", propName: "externalIcon", defaultIcon: "icon/action/open-in-new", required: false },
1466
- ],
1467
- };
1468
-
1469
- const MENU: ComponentBlueprint = {
1470
- name: "Menu",
1471
- category: "overlay",
1472
- description: "Contextual action list triggered by a button or right-click",
1473
- root: {
1474
- name: "Menu",
1475
- kind: "frame",
1476
- width: 200,
1477
- layoutMode: "VERTICAL",
1478
- primaryAxisSizing: "AUTO",
1479
- counterAxisSizing: "FIXED",
1480
- paddingY: 4,
1481
- cornerRadius: 8,
1482
- fillSemantic: "color/semantic/surface/raised",
1483
- strokeSemantic: "color/semantic/border/subtle",
1484
- strokeWeight: 1,
1485
- effects: [{ type: "DROP_SHADOW", color: { r: 0, g: 0, b: 0, a: 0.12 }, offset: { x: 0, y: 4 }, radius: 16, spread: -2 }],
1486
- children: [
1487
- {
1488
- name: "MenuItem1",
1489
- kind: "frame",
1490
- layoutMode: "HORIZONTAL",
1491
- primaryAxisAlign: "MIN",
1492
- counterAxisAlign: "CENTER",
1493
- primaryAxisSizing: "AUTO",
1494
- counterAxisSizing: "FIXED",
1495
- height: 36,
1496
- paddingX: 12,
1497
- itemSpacing: 8,
1498
- children: [
1499
- { name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/settings", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1500
- { name: "Label", kind: "text", textContent: "Edit", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" },
1501
- { name: "Shortcut", kind: "text", textContent: "⌘E", textPreset: "body/sm", textFillSemantic: "color/semantic/text/tertiary" },
1502
- ],
1503
- },
1504
- {
1505
- name: "Divider",
1506
- kind: "rect",
1507
- height: 1,
1508
- fillSemantic: "color/semantic/border/subtle",
1509
- },
1510
- {
1511
- name: "MenuItem2",
1512
- kind: "frame",
1513
- layoutMode: "HORIZONTAL",
1514
- primaryAxisAlign: "MIN",
1515
- counterAxisAlign: "CENTER",
1516
- primaryAxisSizing: "AUTO",
1517
- counterAxisSizing: "FIXED",
1518
- height: 36,
1519
- paddingX: 12,
1520
- itemSpacing: 8,
1521
- children: [
1522
- { name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/settings", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1523
- { name: "Label", kind: "text", textContent: "Delete", textPreset: "body/sm", textFillSemantic: "color/semantic/feedback/danger/text" },
1524
- ],
1525
- },
1526
- ],
1527
- },
1528
- variantProperties: [
1529
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1530
- ],
1531
- tokenBindings: [
1532
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/raised" },
1533
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/surface/default" },
1534
- ],
1535
- iconSlots: [
1536
- { nodePath: "MenuItem1.Icon", propName: "menuItem1Icon", defaultIcon: "icon/action/settings", required: false },
1537
- { nodePath: "MenuItem2.Icon", propName: "menuItem2Icon", defaultIcon: "icon/action/settings", required: false },
1538
- ],
1539
- };
1540
-
1541
- const SPINNER: ComponentBlueprint = {
1542
- name: "Spinner",
1543
- category: "feedback",
1544
- description: "Indeterminate loading indicator with circular animation",
1545
- root: {
1546
- name: "Spinner",
1547
- kind: "frame",
1548
- width: 32,
1549
- height: 32,
1550
- primaryAxisAlign: "CENTER",
1551
- counterAxisAlign: "CENTER",
1552
- children: [
1553
- { name: "Track", kind: "ellipse", width: 32, height: 32, strokeSemantic: "color/semantic/border/default", strokeWeight: 3 },
1554
- { name: "Indicator", kind: "ellipse", width: 32, height: 32, strokeSemantic: "color/semantic/actions/primary/bg/default", strokeWeight: 3 },
1555
- ],
1556
- },
1557
- variantProperties: [
1558
- { name: "Size", values: ["xs", "sm", "md", "lg", "xl"], defaultValue: "md" },
1559
- ],
1560
- tokenBindings: [
1561
- { nodePath: "Track", property: "strokes", semanticToken: "color/semantic/border/default" },
1562
- { nodePath: "Indicator", property: "strokes", semanticToken: "color/semantic/actions/primary/bg/default" },
1563
- ],
1564
- };
1565
-
1566
- // ─── Batch 2: Tier 2 Forms ──────────────────────────────────────────────────
1567
-
1568
- const TEXTAREA: ComponentBlueprint = {
1569
- name: "Textarea",
1570
- category: "forms",
1571
- description: "Multi-line text input with label, helper text, and character counter",
1572
- root: {
1573
- name: "Textarea",
1574
- kind: "frame",
1575
- width: 320,
1576
- layoutMode: "VERTICAL",
1577
- primaryAxisSizing: "AUTO",
1578
- counterAxisSizing: "FIXED",
1579
- itemSpacing: 4,
1580
- children: [
1581
- { name: "Label", kind: "text", textContent: "Description", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1582
- {
1583
- name: "Field",
1584
- kind: "frame",
1585
- height: 120,
1586
- layoutMode: "VERTICAL",
1587
- primaryAxisAlign: "MIN",
1588
- primaryAxisSizing: "FIXED",
1589
- counterAxisSizing: "AUTO",
1590
- paddingX: 12,
1591
- paddingY: 8,
1592
- cornerRadius: 6,
1593
- fillSemantic: "color/semantic/field/bg/default",
1594
- strokeSemantic: "color/semantic/field/border/default",
1595
- strokeWeight: 1,
1596
- children: [
1597
- { name: "Value", kind: "text", textContent: "Enter your message here...", textPreset: "body/md", textFillSemantic: "color/semantic/text/tertiary" },
1598
- ],
1599
- },
1600
- {
1601
- name: "Footer",
1602
- kind: "frame",
1603
- layoutMode: "HORIZONTAL",
1604
- primaryAxisAlign: "SPACE_BETWEEN",
1605
- primaryAxisSizing: "AUTO",
1606
- counterAxisSizing: "AUTO",
1607
- children: [
1608
- { name: "HelperText", kind: "text", textContent: "Optional helper text", textPreset: "body/sm", textFillSemantic: "color/semantic/text/tertiary" },
1609
- { name: "Counter", kind: "text", textContent: "0/500", textPreset: "body/sm", textFillSemantic: "color/semantic/text/tertiary" },
1610
- ],
1611
- },
1612
- ],
1613
- },
1614
- variantProperties: [
1615
- { name: "State", values: ["Default", "Focused", "Filled", "Error", "Disabled", "ReadOnly"], defaultValue: "Default" },
1616
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1617
- ],
1618
- tokenBindings: [
1619
- { nodePath: "Field", property: "fills", semanticToken: "color/semantic/field/bg/default" },
1620
- { nodePath: "Field", property: "strokes", semanticToken: "color/semantic/field/border/default" },
1621
- { nodePath: "Field", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
1622
- ],
1623
- };
1624
-
1625
- const SEARCH: ComponentBlueprint = {
1626
- name: "Search",
1627
- category: "forms",
1628
- description: "Search input with icon, clear action, and loading state",
1629
- root: {
1630
- name: "Search",
1631
- kind: "frame",
1632
- width: 320,
1633
- layoutMode: "HORIZONTAL",
1634
- primaryAxisAlign: "MIN",
1635
- counterAxisAlign: "CENTER",
1636
- primaryAxisSizing: "AUTO",
1637
- counterAxisSizing: "FIXED",
1638
- height: 40,
1639
- paddingX: 12,
1640
- itemSpacing: 8,
1641
- cornerRadius: 8,
1642
- fillSemantic: "color/semantic/field/bg/default",
1643
- strokeSemantic: "color/semantic/field/border/default",
1644
- strokeWeight: 1,
1645
- children: [
1646
- { name: "SearchIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/search", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1647
- { name: "Value", kind: "text", textContent: "Search...", textPreset: "body/md", textFillSemantic: "color/semantic/text/tertiary" },
1648
- { name: "ClearIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", opacity: 0, iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false } },
1649
- ],
1650
- },
1651
- variantProperties: [
1652
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1653
- { name: "State", values: ["Default", "Focused", "Searching", "Filled", "Disabled"], defaultValue: "Default" },
1654
- ],
1655
- tokenBindings: [
1656
- { nodePath: "", property: "fills", semanticToken: "color/semantic/field/bg/default" },
1657
- { nodePath: "", property: "strokes", semanticToken: "color/semantic/field/border/default" },
1658
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
1659
- ],
1660
- iconSlots: [
1661
- { nodePath: "SearchIcon", propName: "searchIcon", defaultIcon: "icon/action/search", required: true },
1662
- { nodePath: "ClearIcon", propName: "clearIcon", defaultIcon: "icon/action/close", required: false },
1663
- ],
1664
- };
1665
-
1666
- const COMBOBOX: ComponentBlueprint = {
1667
- name: "Combobox",
1668
- category: "forms",
1669
- description: "Text input with dropdown suggestions and autocomplete filtering",
1670
- root: {
1671
- name: "Combobox",
1672
- kind: "frame",
1673
- width: 280,
1674
- layoutMode: "VERTICAL",
1675
- primaryAxisSizing: "AUTO",
1676
- counterAxisSizing: "FIXED",
1677
- itemSpacing: 4,
1678
- children: [
1679
- { name: "Label", kind: "text", textContent: "Country", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1680
- {
1681
- name: "Field",
1682
- kind: "frame",
1683
- height: 40,
1684
- layoutMode: "HORIZONTAL",
1685
- primaryAxisAlign: "SPACE_BETWEEN",
1686
- counterAxisAlign: "CENTER",
1687
- primaryAxisSizing: "AUTO",
1688
- counterAxisSizing: "FIXED",
1689
- paddingX: 12,
1690
- cornerRadius: 6,
1691
- fillSemantic: "color/semantic/field/bg/default",
1692
- strokeSemantic: "color/semantic/field/border/default",
1693
- strokeWeight: 1,
1694
- children: [
1695
- { name: "Value", kind: "text", textContent: "Type to search...", textPreset: "body/md", textFillSemantic: "color/semantic/text/tertiary" },
1696
- { name: "Chevron", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/navigation/expand-more", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1697
- ],
1698
- },
1699
- ],
1700
- },
1701
- variantProperties: [
1702
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1703
- { name: "State", values: ["Default", "Open", "Focused", "Error", "Disabled"], defaultValue: "Default" },
1704
- ],
1705
- tokenBindings: [
1706
- { nodePath: "Field", property: "fills", semanticToken: "color/semantic/field/bg/default" },
1707
- { nodePath: "Field", property: "strokes", semanticToken: "color/semantic/field/border/default" },
1708
- { nodePath: "Field", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
1709
- ],
1710
- iconSlots: [
1711
- { nodePath: "Field.Chevron", propName: "chevronIcon", defaultIcon: "icon/navigation/expand-more", required: true },
1712
- ],
1713
- };
1714
-
1715
- const DATEPICKER: ComponentBlueprint = {
1716
- name: "DatePicker",
1717
- category: "forms",
1718
- description: "Date selection input with calendar popup for single or range selection",
1719
- root: {
1720
- name: "DatePicker",
1721
- kind: "frame",
1722
- width: 280,
1723
- layoutMode: "VERTICAL",
1724
- primaryAxisSizing: "AUTO",
1725
- counterAxisSizing: "FIXED",
1726
- itemSpacing: 4,
1727
- children: [
1728
- { name: "Label", kind: "text", textContent: "Start date", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1729
- {
1730
- name: "Trigger",
1731
- kind: "frame",
1732
- height: 40,
1733
- layoutMode: "HORIZONTAL",
1734
- primaryAxisAlign: "SPACE_BETWEEN",
1735
- counterAxisAlign: "CENTER",
1736
- primaryAxisSizing: "AUTO",
1737
- counterAxisSizing: "FIXED",
1738
- paddingX: 12,
1739
- cornerRadius: 6,
1740
- fillSemantic: "color/semantic/field/bg/default",
1741
- strokeSemantic: "color/semantic/field/border/default",
1742
- strokeWeight: 1,
1743
- children: [
1744
- { name: "Value", kind: "text", textContent: "MM/DD/YYYY", textPreset: "body/md", textFillSemantic: "color/semantic/text/tertiary" },
1745
- { name: "CalendarIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/status/pending", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1746
- ],
1747
- },
1748
- ],
1749
- },
1750
- variantProperties: [
1751
- { name: "Type", values: ["single", "range"], defaultValue: "single" },
1752
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1753
- { name: "State", values: ["Default", "Open", "Focused", "Error", "Disabled"], defaultValue: "Default" },
1754
- ],
1755
- tokenBindings: [
1756
- { nodePath: "Trigger", property: "fills", semanticToken: "color/semantic/field/bg/default" },
1757
- { nodePath: "Trigger", property: "strokes", semanticToken: "color/semantic/field/border/default" },
1758
- { nodePath: "Trigger", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
1759
- ],
1760
- iconSlots: [
1761
- { nodePath: "Trigger.CalendarIcon", propName: "calendarIcon", defaultIcon: "icon/status/pending", required: true },
1762
- ],
1763
- };
1764
-
1765
- const NUMBERINPUT: ComponentBlueprint = {
1766
- name: "NumberInput",
1767
- category: "forms",
1768
- description: "Numeric input with increment/decrement stepper buttons",
1769
- root: {
1770
- name: "NumberInput",
1771
- kind: "frame",
1772
- width: 200,
1773
- layoutMode: "VERTICAL",
1774
- primaryAxisSizing: "AUTO",
1775
- counterAxisSizing: "FIXED",
1776
- itemSpacing: 4,
1777
- children: [
1778
- { name: "Label", kind: "text", textContent: "Quantity", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
1779
- {
1780
- name: "Field",
1781
- kind: "frame",
1782
- height: 40,
1783
- layoutMode: "HORIZONTAL",
1784
- primaryAxisAlign: "SPACE_BETWEEN",
1785
- counterAxisAlign: "CENTER",
1786
- primaryAxisSizing: "AUTO",
1787
- counterAxisSizing: "FIXED",
1788
- cornerRadius: 6,
1789
- fillSemantic: "color/semantic/field/bg/default",
1790
- strokeSemantic: "color/semantic/field/border/default",
1791
- strokeWeight: 1,
1792
- children: [
1793
- { name: "Decrement", kind: "frame", width: 32, height: 40, fillSemantic: "color/semantic/surface/subtle", cornerRadius: 6, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER" },
1794
- { name: "Value", kind: "text", textContent: "1", textPreset: "body/md", textFillSemantic: "color/semantic/text/primary" },
1795
- { name: "Increment", kind: "frame", width: 32, height: 40, fillSemantic: "color/semantic/surface/subtle", cornerRadius: 6, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER" },
1796
- ],
1797
- },
1798
- ],
1799
- },
1800
- variantProperties: [
1801
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
1802
- { name: "State", values: ["Default", "Focused", "Error", "Disabled"], defaultValue: "Default" },
1803
- ],
1804
- tokenBindings: [
1805
- { nodePath: "Field", property: "fills", semanticToken: "color/semantic/field/bg/default" },
1806
- { nodePath: "Field", property: "strokes", semanticToken: "color/semantic/field/border/default" },
1807
- { nodePath: "Field", property: "cornerRadius", semanticToken: "radius/semantic/field/default" },
1808
- ],
1809
- };
1810
-
1811
- const FORM: ComponentBlueprint = {
1812
- name: "Form",
1813
- category: "forms",
1814
- description: "Form container wrapping field groups with consistent layout and validation",
1815
- root: {
1816
- name: "Form",
1817
- kind: "frame",
1818
- width: 400,
1819
- layoutMode: "VERTICAL",
1820
- primaryAxisSizing: "AUTO",
1821
- counterAxisSizing: "FIXED",
1822
- itemSpacing: 16,
1823
- paddingX: 24,
1824
- paddingY: 24,
1825
- cornerRadius: 8,
1826
- fillSemantic: "color/semantic/surface/default",
1827
- children: [
1828
- { name: "FormTitle", kind: "text", textContent: "Create account", textPreset: "label/lg", textFillSemantic: "color/semantic/text/primary" },
1829
- {
1830
- name: "FieldGroup",
1831
- kind: "frame",
1832
- layoutMode: "VERTICAL",
1833
- primaryAxisSizing: "AUTO",
1834
- counterAxisSizing: "AUTO",
1835
- itemSpacing: 12,
1836
- children: [
1837
- { name: "Field1Placeholder", kind: "rect", width: 352, height: 64, cornerRadius: 6, strokeSemantic: "color/semantic/border/subtle", strokeWeight: 1 },
1838
- { name: "Field2Placeholder", kind: "rect", width: 352, height: 64, cornerRadius: 6, strokeSemantic: "color/semantic/border/subtle", strokeWeight: 1 },
1839
- ],
1840
- },
1841
- {
1842
- name: "Actions",
1843
- kind: "frame",
1844
- layoutMode: "HORIZONTAL",
1845
- primaryAxisAlign: "MAX",
1846
- primaryAxisSizing: "AUTO",
1847
- counterAxisSizing: "AUTO",
1848
- itemSpacing: 8,
1849
- children: [
1850
- { name: "Cancel", kind: "text", textContent: "Cancel", textPreset: "label/md", textFillSemantic: "color/semantic/text/secondary" },
1851
- {
1852
- name: "Submit",
1853
- kind: "frame",
1854
- width: 100,
1855
- height: 40,
1856
- layoutMode: "HORIZONTAL",
1857
- primaryAxisAlign: "CENTER",
1858
- counterAxisAlign: "CENTER",
1859
- cornerRadius: 8,
1860
- fillSemantic: "color/semantic/actions/primary/bg/default",
1861
- children: [
1862
- { name: "SubmitLabel", kind: "text", textContent: "Submit", textPreset: "label/md", textFillSemantic: "color/semantic/text/on-color" },
1863
- ],
1864
- },
1865
- ],
1866
- },
1867
- ],
1868
- },
1869
- variantProperties: [
1870
- { name: "Layout", values: ["Vertical", "Horizontal"], defaultValue: "Vertical" },
1871
- { name: "State", values: ["Default", "Submitting", "Error"], defaultValue: "Default" },
1872
- ],
1873
- tokenBindings: [
1874
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
1875
- { nodePath: "Actions.Submit", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1876
- ],
1877
- };
1878
-
1879
- // ─── Batch 3: Nav + Data + Layout ───────────────────────────────────────────
1880
-
1881
- const PAGINATION: ComponentBlueprint = {
1882
- name: "Pagination",
1883
- category: "navigation",
1884
- description: "Page navigation with numbered buttons, prev/next controls",
1885
- root: {
1886
- name: "Pagination",
1887
- kind: "frame",
1888
- layoutMode: "HORIZONTAL",
1889
- primaryAxisSizing: "AUTO",
1890
- counterAxisSizing: "AUTO",
1891
- itemSpacing: 4,
1892
- counterAxisAlign: "CENTER",
1893
- children: [
1894
- { name: "Prev", kind: "frame", width: 36, height: 36, cornerRadius: 8, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", fillSemantic: "color/semantic/surface/subtle", children: [{ name: "Arrow", kind: "text", textContent: "‹", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" }] },
1895
- { name: "Page1", kind: "frame", width: 36, height: 36, cornerRadius: 8, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", fillSemantic: "color/semantic/actions/primary/bg/default", children: [{ name: "Num", kind: "text", textContent: "1", textPreset: "label/md", textFillSemantic: "color/semantic/text/on-color" }] },
1896
- { name: "Page2", kind: "frame", width: 36, height: 36, cornerRadius: 8, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Num", kind: "text", textContent: "2", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" }] },
1897
- { name: "Page3", kind: "frame", width: 36, height: 36, cornerRadius: 8, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Num", kind: "text", textContent: "3", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" }] },
1898
- { name: "Next", kind: "frame", width: 36, height: 36, cornerRadius: 8, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", fillSemantic: "color/semantic/surface/subtle", children: [{ name: "Arrow", kind: "text", textContent: "›", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" }] },
1899
- ],
1900
- },
1901
- variantProperties: [
1902
- { name: "Type", values: ["numbered", "loadMore", "compact"], defaultValue: "numbered" },
1903
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
1904
- ],
1905
- tokenBindings: [
1906
- { nodePath: "Page1", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
1907
- ],
1908
- };
1909
-
1910
- const LIST: ComponentBlueprint = {
1911
- name: "List",
1912
- category: "data",
1913
- description: "Vertical list of items with optional icons, secondary text, and dividers",
1914
- root: {
1915
- name: "List",
1916
- kind: "frame",
1917
- width: 320,
1918
- layoutMode: "VERTICAL",
1919
- primaryAxisSizing: "AUTO",
1920
- counterAxisSizing: "FIXED",
1921
- fillSemantic: "color/semantic/surface/default",
1922
- children: [
1923
- {
1924
- name: "ListItem1",
1925
- kind: "frame",
1926
- layoutMode: "HORIZONTAL",
1927
- primaryAxisSizing: "AUTO",
1928
- counterAxisSizing: "FIXED",
1929
- height: 48,
1930
- paddingX: 16,
1931
- counterAxisAlign: "CENTER",
1932
- itemSpacing: 12,
1933
- children: [
1934
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/content/flag", required: false, size: "sm", colorToken: "color/semantic/icon/secondary", decorative: true } },
1935
- { name: "Label", kind: "text", textContent: "List item one", textPreset: "body/md", textFillSemantic: "color/semantic/text/primary" },
1936
- ],
1937
- },
1938
- { name: "Divider", kind: "rect", height: 1, fillSemantic: "color/semantic/border/subtle" },
1939
- {
1940
- name: "ListItem2",
1941
- kind: "frame",
1942
- layoutMode: "HORIZONTAL",
1943
- primaryAxisSizing: "AUTO",
1944
- counterAxisSizing: "FIXED",
1945
- height: 48,
1946
- paddingX: 16,
1947
- counterAxisAlign: "CENTER",
1948
- itemSpacing: 12,
1949
- children: [
1950
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/content/flag", required: false, size: "sm", colorToken: "color/semantic/icon/secondary", decorative: true } },
1951
- { name: "Label", kind: "text", textContent: "List item two", textPreset: "body/md", textFillSemantic: "color/semantic/text/primary" },
1952
- ],
1953
- },
1954
- ],
1955
- },
1956
- variantProperties: [
1957
- { name: "Type", values: ["simple", "interactive", "twoLine", "avatar"], defaultValue: "simple" },
1958
- { name: "Dividers", values: ["true", "false"], defaultValue: "true" },
1959
- ],
1960
- tokenBindings: [
1961
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
1962
- ],
1963
- iconSlots: [
1964
- { nodePath: "ListItem1.Icon", propName: "listItem1Icon", defaultIcon: "icon/content/flag", required: false },
1965
- { nodePath: "ListItem2.Icon", propName: "listItem2Icon", defaultIcon: "icon/content/flag", required: false },
1966
- ],
1967
- };
1968
-
1969
- const TREEVIEW: ComponentBlueprint = {
1970
- name: "TreeView",
1971
- category: "data",
1972
- description: "Hierarchical expandable tree for navigating nested data",
1973
- root: {
1974
- name: "TreeView",
1975
- kind: "frame",
1976
- width: 260,
1977
- layoutMode: "VERTICAL",
1978
- primaryAxisSizing: "AUTO",
1979
- counterAxisSizing: "FIXED",
1980
- children: [
1981
- {
1982
- name: "Node1",
1983
- kind: "frame",
1984
- layoutMode: "HORIZONTAL",
1985
- primaryAxisSizing: "AUTO",
1986
- counterAxisSizing: "FIXED",
1987
- height: 36,
1988
- paddingX: 8,
1989
- counterAxisAlign: "CENTER",
1990
- itemSpacing: 4,
1991
- cornerRadius: 6,
1992
- children: [
1993
- { name: "ExpandIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/navigation/chevron-right", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1994
- { name: "FolderIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/file/folder", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
1995
- { name: "Label", kind: "text", textContent: "Documents", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" },
1996
- ],
1997
- },
1998
- {
1999
- name: "Node1Child",
2000
- kind: "frame",
2001
- layoutMode: "HORIZONTAL",
2002
- primaryAxisSizing: "AUTO",
2003
- counterAxisSizing: "FIXED",
2004
- height: 36,
2005
- paddingX: 32,
2006
- counterAxisAlign: "CENTER",
2007
- itemSpacing: 4,
2008
- cornerRadius: 6,
2009
- fillSemantic: "color/semantic/actions/primary/bg/default",
2010
- children: [
2011
- { name: "FileIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/inverse", iconSlot: { defaultIcon: "icon/file/file", required: true, size: "xs", colorToken: "color/semantic/icon/inverse", decorative: true } },
2012
- { name: "Label", kind: "text", textContent: "Report.pdf", textPreset: "body/sm", textFillSemantic: "color/semantic/text/on-color" },
2013
- ],
2014
- },
2015
- ],
2016
- },
2017
- variantProperties: [
2018
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
2019
- { name: "Selection", values: ["single", "multi", "none"], defaultValue: "single" },
2020
- ],
2021
- tokenBindings: [
2022
- { nodePath: "Node1Child", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2023
- ],
2024
- iconSlots: [
2025
- { nodePath: "Node1.ExpandIcon", propName: "expandIcon", defaultIcon: "icon/navigation/chevron-right", required: true },
2026
- { nodePath: "Node1.FolderIcon", propName: "folderIcon", defaultIcon: "icon/file/folder", required: true },
2027
- { nodePath: "Node1Child.FileIcon", propName: "fileIcon", defaultIcon: "icon/file/file", required: true },
2028
- ],
2029
- };
2030
-
2031
- const TYPOGRAPHY: ComponentBlueprint = {
2032
- name: "Typography",
2033
- category: "core",
2034
- description: "Text display component for headings, body text, labels, and captions",
2035
- root: {
2036
- name: "Typography",
2037
- kind: "frame",
2038
- width: 400,
2039
- layoutMode: "VERTICAL",
2040
- primaryAxisSizing: "AUTO",
2041
- counterAxisSizing: "FIXED",
2042
- itemSpacing: 8,
2043
- children: [
2044
- { name: "Display", kind: "text", textContent: "Display Text", textPreset: "display/lg", textFillSemantic: "color/semantic/text/primary" },
2045
- { name: "Heading", kind: "text", textContent: "Heading Text", textPreset: "heading/md", textFillSemantic: "color/semantic/text/primary" },
2046
- { name: "Body", kind: "text", textContent: "Body text for paragraphs and content.", textPreset: "body/md", textFillSemantic: "color/semantic/text/secondary" },
2047
- { name: "Label", kind: "text", textContent: "Label Text", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
2048
- { name: "Caption", kind: "text", textContent: "Caption text", textPreset: "body/sm", textFillSemantic: "color/semantic/text/tertiary" },
2049
- ],
2050
- },
2051
- variantProperties: [
2052
- { name: "Variant", values: ["display", "heading", "body", "label", "caption"], defaultValue: "body" },
2053
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2054
- ],
2055
- tokenBindings: [],
2056
- };
2057
-
2058
- const DIVIDER: ComponentBlueprint = {
2059
- name: "Divider",
2060
- category: "layout",
2061
- description: "Visual separator line between content sections",
2062
- root: {
2063
- name: "Divider",
2064
- kind: "rect",
2065
- width: 400,
2066
- height: 1,
2067
- fillSemantic: "color/semantic/border/subtle",
2068
- },
2069
- variantProperties: [
2070
- { name: "Orientation", values: ["horizontal", "vertical"], defaultValue: "horizontal" },
2071
- { name: "Type", values: ["solid", "dashed"], defaultValue: "solid" },
2072
- ],
2073
- tokenBindings: [
2074
- { nodePath: "", property: "fills", semanticToken: "color/semantic/border/subtle" },
2075
- ],
2076
- };
2077
-
2078
- const SKELETON: ComponentBlueprint = {
2079
- name: "Skeleton",
2080
- category: "layout",
2081
- description: "Loading placeholder mimicking content layout while data loads",
2082
- root: {
2083
- name: "Skeleton",
2084
- kind: "frame",
2085
- width: 320,
2086
- layoutMode: "VERTICAL",
2087
- primaryAxisSizing: "AUTO",
2088
- counterAxisSizing: "FIXED",
2089
- itemSpacing: 12,
2090
- children: [
2091
- { name: "ImagePlaceholder", kind: "rect", width: 320, height: 180, cornerRadius: 8, fillSemantic: "color/semantic/surface/subtle" },
2092
- { name: "TitleLine", kind: "rect", width: 240, height: 16, cornerRadius: 4, fillSemantic: "color/semantic/surface/subtle" },
2093
- { name: "BodyLine1", kind: "rect", width: 320, height: 12, cornerRadius: 4, fillSemantic: "color/semantic/surface/subtle" },
2094
- { name: "BodyLine2", kind: "rect", width: 280, height: 12, cornerRadius: 4, fillSemantic: "color/semantic/surface/subtle" },
2095
- ],
2096
- },
2097
- variantProperties: [
2098
- { name: "Type", values: ["text", "circle", "rect", "card"], defaultValue: "card" },
2099
- { name: "Animation", values: ["shimmer", "pulse"], defaultValue: "shimmer" },
2100
- ],
2101
- tokenBindings: [
2102
- { nodePath: "ImagePlaceholder", property: "fills", semanticToken: "color/semantic/surface/subtle" },
2103
- { nodePath: "TitleLine", property: "fills", semanticToken: "color/semantic/surface/subtle" },
2104
- ],
2105
- };
2106
-
2107
- // ─── Batch 4: Overlay + Remaining ───────────────────────────────────────────
2108
-
2109
- const POPOVER: ComponentBlueprint = {
2110
- name: "Popover",
2111
- category: "overlay",
2112
- description: "Interactive floating panel with rich content triggered by click",
2113
- root: {
2114
- name: "Popover",
2115
- kind: "frame",
2116
- width: 280,
2117
- layoutMode: "VERTICAL",
2118
- primaryAxisSizing: "AUTO",
2119
- counterAxisSizing: "FIXED",
2120
- paddingX: 16,
2121
- paddingY: 12,
2122
- cornerRadius: 12,
2123
- fillSemantic: "color/semantic/surface/raised",
2124
- strokeSemantic: "color/semantic/border/subtle",
2125
- strokeWeight: 1,
2126
- effects: [{ type: "DROP_SHADOW", color: { r: 0, g: 0, b: 0, a: 0.12 }, offset: { x: 0, y: 8 }, radius: 24, spread: -4 }],
2127
- itemSpacing: 8,
2128
- children: [
2129
- {
2130
- name: "Header",
2131
- kind: "frame",
2132
- layoutMode: "HORIZONTAL",
2133
- primaryAxisAlign: "SPACE_BETWEEN",
2134
- primaryAxisSizing: "AUTO",
2135
- counterAxisSizing: "AUTO",
2136
- children: [
2137
- { name: "Title", kind: "text", textContent: "Popover title", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
2138
- { name: "Close", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: false } },
2139
- ],
2140
- },
2141
- { name: "Body", kind: "text", textContent: "Popover content with interactive elements.", textPreset: "body/sm", textFillSemantic: "color/semantic/text/secondary" },
2142
- ],
2143
- },
2144
- variantProperties: [
2145
- { name: "Placement", values: ["top", "bottom", "left", "right"], defaultValue: "bottom" },
2146
- { name: "HasArrow", values: ["true", "false"], defaultValue: "true" },
2147
- ],
2148
- tokenBindings: [
2149
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/raised" },
2150
- { nodePath: "", property: "cornerRadius", semanticToken: "radius/semantic/surface/default" },
2151
- ],
2152
- iconSlots: [
2153
- { nodePath: "Header.Close", propName: "closeIcon", defaultIcon: "icon/action/close", required: false },
2154
- ],
2155
- };
2156
-
2157
- const DROPDOWNMENU: ComponentBlueprint = {
2158
- name: "DropdownMenu",
2159
- category: "overlay",
2160
- description: "Button-triggered menu with action items and keyboard navigation",
2161
- root: {
2162
- name: "DropdownMenu",
2163
- kind: "frame",
2164
- width: 200,
2165
- layoutMode: "VERTICAL",
2166
- primaryAxisSizing: "AUTO",
2167
- counterAxisSizing: "FIXED",
2168
- paddingY: 4,
2169
- cornerRadius: 8,
2170
- fillSemantic: "color/semantic/surface/raised",
2171
- strokeSemantic: "color/semantic/border/subtle",
2172
- strokeWeight: 1,
2173
- effects: [{ type: "DROP_SHADOW", color: { r: 0, g: 0, b: 0, a: 0.1 }, offset: { x: 0, y: 4 }, radius: 12, spread: -2 }],
2174
- children: [
2175
- { name: "Item1", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisSizing: "AUTO", counterAxisSizing: "FIXED", height: 36, paddingX: 12, counterAxisAlign: "CENTER", itemSpacing: 8, children: [{ name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/settings", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } }, { name: "Label", kind: "text", textContent: "Action one", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" }] },
2176
- { name: "Item2", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisSizing: "AUTO", counterAxisSizing: "FIXED", height: 36, paddingX: 12, counterAxisAlign: "CENTER", itemSpacing: 8, children: [{ name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/settings", required: false, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } }, { name: "Label", kind: "text", textContent: "Action two", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" }] },
2177
- ],
2178
- },
2179
- variantProperties: [
2180
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2181
- { name: "Alignment", values: ["start", "end"], defaultValue: "start" },
2182
- ],
2183
- tokenBindings: [
2184
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/raised" },
2185
- ],
2186
- iconSlots: [
2187
- { nodePath: "Item1.Icon", propName: "item1Icon", defaultIcon: "icon/action/settings", required: false },
2188
- { nodePath: "Item2.Icon", propName: "item2Icon", defaultIcon: "icon/action/settings", required: false },
2189
- ],
2190
- };
2191
-
2192
- const AVATARGROUP: ComponentBlueprint = {
2193
- name: "AvatarGroup",
2194
- category: "core",
2195
- description: "Overlapping row of avatars with overflow indicator",
2196
- root: {
2197
- name: "AvatarGroup",
2198
- kind: "frame",
2199
- layoutMode: "HORIZONTAL",
2200
- primaryAxisSizing: "AUTO",
2201
- counterAxisSizing: "AUTO",
2202
- children: [
2203
- { name: "Avatar1", kind: "ellipse", width: 32, height: 32, fillSemantic: "color/semantic/surface/subtle", strokeSemantic: "color/semantic/surface/default", strokeWeight: 2 },
2204
- { name: "Avatar2", kind: "ellipse", width: 32, height: 32, fillSemantic: "color/semantic/surface/subtle", strokeSemantic: "color/semantic/surface/default", strokeWeight: 2 },
2205
- { name: "Avatar3", kind: "ellipse", width: 32, height: 32, fillSemantic: "color/semantic/surface/subtle", strokeSemantic: "color/semantic/surface/default", strokeWeight: 2 },
2206
- { name: "Overflow", kind: "ellipse", width: 32, height: 32, fillSemantic: "color/semantic/surface/subtle", strokeSemantic: "color/semantic/surface/default", strokeWeight: 2 },
2207
- ],
2208
- },
2209
- variantProperties: [
2210
- { name: "Size", values: ["sm", "md", "lg", "xl"], defaultValue: "md" },
2211
- { name: "MaxVisible", values: ["3", "4", "5"], defaultValue: "3" },
2212
- ],
2213
- tokenBindings: [],
2214
- };
2215
-
2216
- const GRID: ComponentBlueprint = {
2217
- name: "Grid",
2218
- category: "layout",
2219
- description: "CSS Grid-based responsive layout container",
2220
- root: {
2221
- name: "Grid",
2222
- kind: "frame",
2223
- width: 800,
2224
- layoutMode: "HORIZONTAL",
2225
- primaryAxisSizing: "AUTO",
2226
- counterAxisSizing: "FIXED",
2227
- itemSpacing: 16,
2228
- children: [
2229
- { name: "Cell1", kind: "rect", width: 180, height: 120, cornerRadius: 8, fillSemantic: "color/semantic/surface/subtle" },
2230
- { name: "Cell2", kind: "rect", width: 180, height: 120, cornerRadius: 8, fillSemantic: "color/semantic/surface/subtle" },
2231
- { name: "Cell3", kind: "rect", width: 180, height: 120, cornerRadius: 8, fillSemantic: "color/semantic/surface/subtle" },
2232
- { name: "Cell4", kind: "rect", width: 180, height: 120, cornerRadius: 8, fillSemantic: "color/semantic/surface/subtle" },
2233
- ],
2234
- },
2235
- variantProperties: [
2236
- { name: "Columns", values: ["1", "2", "3", "4", "6", "12"], defaultValue: "4" },
2237
- { name: "Gap", values: ["sm", "md", "lg"], defaultValue: "md" },
2238
- ],
2239
- tokenBindings: [],
2240
- };
2241
-
2242
- const EMPTYSTATE: ComponentBlueprint = {
2243
- name: "EmptyState",
2244
- category: "layout",
2245
- description: "Placeholder for zero-data views with illustration, message, and action",
2246
- root: {
2247
- name: "EmptyState",
2248
- kind: "frame",
2249
- width: 400,
2250
- layoutMode: "VERTICAL",
2251
- primaryAxisAlign: "CENTER",
2252
- counterAxisAlign: "CENTER",
2253
- primaryAxisSizing: "AUTO",
2254
- counterAxisSizing: "FIXED",
2255
- itemSpacing: 16,
2256
- paddingY: 48,
2257
- children: [
2258
- { name: "Illustration", kind: "rect", width: 160, height: 120, cornerRadius: 12, fillSemantic: "color/semantic/surface/subtle" },
2259
- { name: "Heading", kind: "text", textContent: "No items found", textPreset: "heading/md", textFillSemantic: "color/semantic/text/primary" },
2260
- { name: "Description", kind: "text", textContent: "Get started by creating your first item.", textPreset: "body/md", textFillSemantic: "color/semantic/text/secondary" },
2261
- {
2262
- name: "Action",
2263
- kind: "frame",
2264
- width: 140,
2265
- height: 40,
2266
- layoutMode: "HORIZONTAL",
2267
- primaryAxisAlign: "CENTER",
2268
- counterAxisAlign: "CENTER",
2269
- cornerRadius: 8,
2270
- fillSemantic: "color/semantic/actions/primary/bg/default",
2271
- children: [
2272
- { name: "ActionLabel", kind: "text", textContent: "Create item", textPreset: "label/md", textFillSemantic: "color/semantic/text/on-color" },
2273
- ],
2274
- },
2275
- ],
2276
- },
2277
- variantProperties: [
2278
- { name: "Size", values: ["compact", "default", "full"], defaultValue: "default" },
2279
- ],
2280
- tokenBindings: [
2281
- { nodePath: "Action", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2282
- ],
2283
- };
2284
-
2285
- const BANNER: ComponentBlueprint = {
2286
- name: "Banner",
2287
- category: "feedback",
2288
- description: "Full-width persistent notification bar for system-level messages",
2289
- root: {
2290
- name: "Banner",
2291
- kind: "frame",
2292
- width: 800,
2293
- height: 48,
2294
- layoutMode: "HORIZONTAL",
2295
- primaryAxisAlign: "CENTER",
2296
- counterAxisAlign: "CENTER",
2297
- primaryAxisSizing: "AUTO",
2298
- counterAxisSizing: "FIXED",
2299
- paddingX: 16,
2300
- itemSpacing: 12,
2301
- fillSemantic: "color/semantic/feedback/info/bg",
2302
- children: [
2303
- { name: "Icon", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/feedback/info/text", iconSlot: { defaultIcon: "icon/status/info", required: true, size: "sm", colorToken: "color/semantic/feedback/info/text", decorative: false } },
2304
- { name: "Message", kind: "text", textContent: "New version available. Update now for the latest features.", textPreset: "body/sm", textFillSemantic: "color/semantic/feedback/info/text" },
2305
- { name: "Action", kind: "text", textContent: "Update", textPreset: "label/sm", textFillSemantic: "color/semantic/actions/primary/bg/default" },
2306
- { name: "Close", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/feedback/info/text", iconSlot: { defaultIcon: "icon/action/close", required: false, size: "xs", colorToken: "color/semantic/feedback/info/text", decorative: false } },
2307
- ],
2308
- },
2309
- variantProperties: [
2310
- { name: "Type", values: ["info", "success", "warning", "error"], defaultValue: "info" },
2311
- { name: "Dismissible", values: ["true", "false"], defaultValue: "true" },
2312
- ],
2313
- tokenBindings: [
2314
- { nodePath: "", property: "fills", semanticToken: "color/semantic/feedback/info/bg" },
2315
- ],
2316
- iconSlots: [
2317
- { nodePath: "Icon", propName: "statusIcon", defaultIcon: "icon/status/info", required: true },
2318
- { nodePath: "Close", propName: "closeIcon", defaultIcon: "icon/action/close", required: false },
2319
- ],
2320
- };
2321
-
2322
- // ─── Batch 5: Tier 3 ───────────────────────────────────────────────────────
2323
-
2324
- const DRAWER: ComponentBlueprint = {
2325
- name: "Drawer",
2326
- category: "overlay",
2327
- description: "Slide-in panel from screen edge for secondary content or navigation",
2328
- root: {
2329
- name: "Drawer",
2330
- kind: "frame",
2331
- width: 360,
2332
- height: 600,
2333
- layoutMode: "VERTICAL",
2334
- primaryAxisSizing: "FIXED",
2335
- counterAxisSizing: "FIXED",
2336
- fillSemantic: "color/semantic/surface/default",
2337
- effects: [{ type: "DROP_SHADOW", color: { r: 0, g: 0, b: 0, a: 0.16 }, offset: { x: -4, y: 0 }, radius: 24, spread: 0 }],
2338
- children: [
2339
- { name: "Header", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisAlign: "SPACE_BETWEEN", counterAxisAlign: "CENTER", primaryAxisSizing: "AUTO", counterAxisSizing: "FIXED", height: 56, paddingX: 20, strokeSemantic: "color/semantic/border/subtle", strokeWeight: 1, children: [{ name: "Title", kind: "text", textContent: "Drawer Title", textPreset: "heading/sm", textFillSemantic: "color/semantic/text/primary" }, { name: "Close", kind: "frame", width: 20, height: 20, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/action/close", required: true, size: "sm", colorToken: "color/semantic/icon/secondary", decorative: false } }] },
2340
- { name: "Body", kind: "frame", layoutMode: "VERTICAL", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", paddingX: 20, paddingY: 16, itemSpacing: 12, children: [{ name: "Content", kind: "text", textContent: "Drawer content goes here.", textPreset: "body/md", textFillSemantic: "color/semantic/text/secondary" }] },
2341
- ],
2342
- },
2343
- variantProperties: [
2344
- { name: "Side", values: ["left", "right", "bottom"], defaultValue: "right" },
2345
- { name: "Size", values: ["sm", "md", "lg", "full"], defaultValue: "md" },
2346
- ],
2347
- tokenBindings: [
2348
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
2349
- ],
2350
- iconSlots: [
2351
- { nodePath: "Header.Close", propName: "closeIcon", defaultIcon: "icon/action/close", required: true },
2352
- ],
2353
- };
2354
-
2355
- const SEGMENTEDCONTROL: ComponentBlueprint = {
2356
- name: "SegmentedControl",
2357
- category: "core",
2358
- description: "Button group for single-selection between mutually exclusive options",
2359
- root: {
2360
- name: "SegmentedControl",
2361
- kind: "frame",
2362
- layoutMode: "HORIZONTAL",
2363
- primaryAxisSizing: "AUTO",
2364
- counterAxisSizing: "AUTO",
2365
- cornerRadius: 8,
2366
- fillSemantic: "color/semantic/surface/subtle",
2367
- paddingX: 4,
2368
- paddingY: 4,
2369
- itemSpacing: 2,
2370
- children: [
2371
- { name: "Segment1", kind: "frame", width: 80, height: 32, layoutMode: "HORIZONTAL", primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", cornerRadius: 6, fillSemantic: "color/semantic/surface/default", effects: [{ type: "DROP_SHADOW", color: { r: 0, g: 0, b: 0, a: 0.06 }, offset: { x: 0, y: 1 }, radius: 2, spread: 0 }], children: [{ name: "Label", kind: "text", textContent: "Day", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" }] },
2372
- { name: "Segment2", kind: "frame", width: 80, height: 32, layoutMode: "HORIZONTAL", primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", cornerRadius: 6, children: [{ name: "Label", kind: "text", textContent: "Week", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" }] },
2373
- { name: "Segment3", kind: "frame", width: 80, height: 32, layoutMode: "HORIZONTAL", primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", cornerRadius: 6, children: [{ name: "Label", kind: "text", textContent: "Month", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" }] },
2374
- ],
2375
- },
2376
- variantProperties: [
2377
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2378
- { name: "Type", values: ["text", "icon", "both"], defaultValue: "text" },
2379
- ],
2380
- tokenBindings: [
2381
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/subtle" },
2382
- { nodePath: "Segment1", property: "fills", semanticToken: "color/semantic/surface/default" },
2383
- ],
2384
- };
2385
-
2386
- const STEPPER: ComponentBlueprint = {
2387
- name: "Stepper",
2388
- category: "navigation",
2389
- description: "Multi-step progress indicator showing workflow completion status",
2390
- root: {
2391
- name: "Stepper",
2392
- kind: "frame",
2393
- width: 600,
2394
- layoutMode: "HORIZONTAL",
2395
- primaryAxisAlign: "SPACE_BETWEEN",
2396
- counterAxisAlign: "CENTER",
2397
- primaryAxisSizing: "FIXED",
2398
- counterAxisSizing: "AUTO",
2399
- children: [
2400
- { name: "Step1", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", itemSpacing: 8, counterAxisAlign: "CENTER", children: [{ name: "Circle", kind: "ellipse", width: 32, height: 32, fillSemantic: "color/semantic/actions/primary/bg/default" }, { name: "Label", kind: "text", textContent: "Details", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" }] },
2401
- { name: "Connector1", kind: "rect", width: 80, height: 2, fillSemantic: "color/semantic/actions/primary/bg/default" },
2402
- { name: "Step2", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", itemSpacing: 8, counterAxisAlign: "CENTER", children: [{ name: "Circle", kind: "ellipse", width: 32, height: 32, strokeSemantic: "color/semantic/actions/primary/bg/default", strokeWeight: 2 }, { name: "Label", kind: "text", textContent: "Review", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" }] },
2403
- { name: "Connector2", kind: "rect", width: 80, height: 2, fillSemantic: "color/semantic/border/default" },
2404
- { name: "Step3", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", itemSpacing: 8, counterAxisAlign: "CENTER", children: [{ name: "Circle", kind: "ellipse", width: 32, height: 32, strokeSemantic: "color/semantic/border/default", strokeWeight: 2 }, { name: "Label", kind: "text", textContent: "Confirm", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }] },
2405
- ],
2406
- },
2407
- variantProperties: [
2408
- { name: "Orientation", values: ["horizontal", "vertical"], defaultValue: "horizontal" },
2409
- { name: "Type", values: ["numbered", "icon"], defaultValue: "numbered" },
2410
- ],
2411
- tokenBindings: [
2412
- { nodePath: "Step1.Circle", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2413
- { nodePath: "Connector1", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2414
- ],
2415
- };
2416
-
2417
- const FILEUPLOADER: ComponentBlueprint = {
2418
- name: "FileUploader",
2419
- category: "forms",
2420
- description: "File upload via drag-and-drop zone or button trigger",
2421
- root: {
2422
- name: "FileUploader",
2423
- kind: "frame",
2424
- width: 400,
2425
- height: 160,
2426
- layoutMode: "VERTICAL",
2427
- primaryAxisAlign: "CENTER",
2428
- counterAxisAlign: "CENTER",
2429
- primaryAxisSizing: "FIXED",
2430
- counterAxisSizing: "FIXED",
2431
- itemSpacing: 8,
2432
- cornerRadius: 8,
2433
- strokeSemantic: "color/semantic/border/default",
2434
- strokeWeight: 2,
2435
- fillSemantic: "color/semantic/surface/subtle",
2436
- children: [
2437
- { name: "Icon", kind: "frame", width: 32, height: 32, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/content/inbox", required: true, size: "lg", colorToken: "color/semantic/icon/secondary", decorative: true } },
2438
- { name: "Title", kind: "text", textContent: "Drag & drop files here", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" },
2439
- { name: "Subtitle", kind: "text", textContent: "or click to browse (max 10MB)", textPreset: "body/sm", textFillSemantic: "color/semantic/text/tertiary" },
2440
- ],
2441
- },
2442
- variantProperties: [
2443
- { name: "Type", values: ["dropzone", "button"], defaultValue: "dropzone" },
2444
- { name: "State", values: ["Idle", "DragOver", "Uploading", "Complete", "Error"], defaultValue: "Idle" },
2445
- ],
2446
- tokenBindings: [
2447
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/subtle" },
2448
- { nodePath: "", property: "strokes", semanticToken: "color/semantic/border/default" },
2449
- ],
2450
- iconSlots: [
2451
- { nodePath: "Icon", propName: "uploadIcon", defaultIcon: "icon/content/inbox", required: true },
2452
- ],
2453
- };
2454
-
2455
- const INLINEMESSAGE: ComponentBlueprint = {
2456
- name: "InlineMessage",
2457
- category: "feedback",
2458
- description: "Contextual helper or error message associated with a form field",
2459
- root: {
2460
- name: "InlineMessage",
2461
- kind: "frame",
2462
- layoutMode: "HORIZONTAL",
2463
- primaryAxisSizing: "AUTO",
2464
- counterAxisSizing: "AUTO",
2465
- itemSpacing: 4,
2466
- counterAxisAlign: "CENTER",
2467
- children: [
2468
- { name: "Icon", kind: "frame", width: 14, height: 14, fillSemantic: "color/semantic/feedback/info/text", iconSlot: { defaultIcon: "icon/status/info", required: true, size: "xs", colorToken: "color/semantic/feedback/info/text", decorative: false } },
2469
- { name: "Message", kind: "text", textContent: "This field is required", textPreset: "body/sm", textFillSemantic: "color/semantic/feedback/info/text" },
2470
- ],
2471
- },
2472
- variantProperties: [
2473
- { name: "Type", values: ["info", "success", "warning", "error"], defaultValue: "info" },
2474
- ],
2475
- tokenBindings: [
2476
- { nodePath: "Icon", property: "fills", semanticToken: "color/semantic/feedback/info/text" },
2477
- { nodePath: "Message", property: "fills", semanticToken: "color/semantic/feedback/info/text" },
2478
- ],
2479
- iconSlots: [
2480
- { nodePath: "Icon", propName: "statusIcon", defaultIcon: "icon/status/info", required: true },
2481
- ],
2482
- };
2483
-
2484
- const TOOLBAR: ComponentBlueprint = {
2485
- name: "Toolbar",
2486
- category: "navigation",
2487
- description: "Horizontal action bar with grouped icon buttons and controls",
2488
- root: {
2489
- name: "Toolbar",
2490
- kind: "frame",
2491
- layoutMode: "HORIZONTAL",
2492
- primaryAxisSizing: "AUTO",
2493
- counterAxisSizing: "FIXED",
2494
- height: 44,
2495
- paddingX: 8,
2496
- itemSpacing: 4,
2497
- counterAxisAlign: "CENTER",
2498
- fillSemantic: "color/semantic/surface/default",
2499
- strokeSemantic: "color/semantic/border/subtle",
2500
- strokeWeight: 1,
2501
- cornerRadius: 8,
2502
- children: [
2503
- { name: "Action1", kind: "frame", width: 32, height: 32, cornerRadius: 6, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/default", iconSlot: { defaultIcon: "icon/action/edit", required: true, size: "xs", colorToken: "color/semantic/icon/default", decorative: true } }] },
2504
- { name: "Action2", kind: "frame", width: 32, height: 32, cornerRadius: 6, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/default", iconSlot: { defaultIcon: "icon/editor/format-bold", required: true, size: "xs", colorToken: "color/semantic/icon/default", decorative: true } }] },
2505
- { name: "Separator", kind: "rect", width: 1, height: 20, fillSemantic: "color/semantic/border/subtle" },
2506
- { name: "Action3", kind: "frame", width: 32, height: 32, cornerRadius: 6, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Icon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/default", iconSlot: { defaultIcon: "icon/editor/format-italic", required: true, size: "xs", colorToken: "color/semantic/icon/default", decorative: true } }] },
2507
- ],
2508
- },
2509
- variantProperties: [
2510
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
2511
- { name: "Overflow", values: ["visible", "menu"], defaultValue: "visible" },
2512
- ],
2513
- tokenBindings: [
2514
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
2515
- ],
2516
- iconSlots: [
2517
- { nodePath: "Action1.Icon", propName: "action1Icon", defaultIcon: "icon/action/edit", required: true },
2518
- { nodePath: "Action2.Icon", propName: "action2Icon", defaultIcon: "icon/editor/format-bold", required: true },
2519
- { nodePath: "Action3.Icon", propName: "action3Icon", defaultIcon: "icon/editor/format-italic", required: true },
2520
- ],
2521
- };
2522
-
2523
- const CALENDAR: ComponentBlueprint = {
2524
- name: "Calendar",
2525
- category: "data",
2526
- description: "Month-view calendar grid for date selection",
2527
- root: {
2528
- name: "Calendar",
2529
- kind: "frame",
2530
- width: 280,
2531
- layoutMode: "VERTICAL",
2532
- primaryAxisSizing: "AUTO",
2533
- counterAxisSizing: "FIXED",
2534
- paddingX: 12,
2535
- paddingY: 12,
2536
- itemSpacing: 8,
2537
- cornerRadius: 12,
2538
- fillSemantic: "color/semantic/surface/default",
2539
- strokeSemantic: "color/semantic/border/subtle",
2540
- strokeWeight: 1,
2541
- children: [
2542
- { name: "MonthNav", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisAlign: "SPACE_BETWEEN", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", counterAxisAlign: "CENTER", children: [{ name: "Prev", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/text/secondary" }, { name: "MonthYear", kind: "text", textContent: "April 2026", textPreset: "label/md", textFillSemantic: "color/semantic/text/primary" }, { name: "Next", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/text/secondary" }] },
2543
- { name: "WeekHeaders", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisAlign: "SPACE_BETWEEN", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", children: [{ name: "Sun", kind: "text", textContent: "S", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Mon", kind: "text", textContent: "M", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Tue", kind: "text", textContent: "T", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Wed", kind: "text", textContent: "W", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Thu", kind: "text", textContent: "T", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Fri", kind: "text", textContent: "F", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }, { name: "Sat", kind: "text", textContent: "S", textPreset: "label/sm", textFillSemantic: "color/semantic/text/tertiary" }] },
2544
- { name: "DayGrid", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisAlign: "SPACE_BETWEEN", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", children: [{ name: "Day1", kind: "frame", width: 32, height: 32, cornerRadius: 16, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", fillSemantic: "color/semantic/actions/primary/bg/default", children: [{ name: "Num", kind: "text", textContent: "1", textPreset: "body/sm", textFillSemantic: "color/semantic/text/on-color" }] }, { name: "Day2", kind: "frame", width: 32, height: 32, cornerRadius: 16, primaryAxisAlign: "CENTER", counterAxisAlign: "CENTER", children: [{ name: "Num", kind: "text", textContent: "2", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" }] }] },
2545
- ],
2546
- },
2547
- variantProperties: [
2548
- { name: "Type", values: ["single", "range"], defaultValue: "single" },
2549
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
2550
- ],
2551
- tokenBindings: [
2552
- { nodePath: "", property: "fills", semanticToken: "color/semantic/surface/default" },
2553
- { nodePath: "DayGrid.Day1", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2554
- ],
2555
- };
2556
-
2557
- const TIMEPICKER: ComponentBlueprint = {
2558
- name: "TimePicker",
2559
- category: "forms",
2560
- description: "Time selection input with dropdown of time slots",
2561
- root: {
2562
- name: "TimePicker",
2563
- kind: "frame",
2564
- width: 200,
2565
- layoutMode: "VERTICAL",
2566
- primaryAxisSizing: "AUTO",
2567
- counterAxisSizing: "FIXED",
2568
- itemSpacing: 4,
2569
- children: [
2570
- { name: "Label", kind: "text", textContent: "Time", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" },
2571
- {
2572
- name: "Trigger",
2573
- kind: "frame",
2574
- height: 40,
2575
- layoutMode: "HORIZONTAL",
2576
- primaryAxisAlign: "SPACE_BETWEEN",
2577
- counterAxisAlign: "CENTER",
2578
- primaryAxisSizing: "AUTO",
2579
- counterAxisSizing: "FIXED",
2580
- paddingX: 12,
2581
- cornerRadius: 6,
2582
- fillSemantic: "color/semantic/field/bg/default",
2583
- strokeSemantic: "color/semantic/field/border/default",
2584
- strokeWeight: 1,
2585
- children: [
2586
- { name: "Value", kind: "text", textContent: "09:00 AM", textPreset: "body/md", textFillSemantic: "color/semantic/text/primary" },
2587
- { name: "ClockIcon", kind: "frame", width: 16, height: 16, fillSemantic: "color/semantic/icon/secondary", iconSlot: { defaultIcon: "icon/status/pending", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
2588
- ],
2589
- },
2590
- ],
2591
- },
2592
- variantProperties: [
2593
- { name: "Format", values: ["12h", "24h"], defaultValue: "12h" },
2594
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2595
- { name: "State", values: ["Default", "Open", "Focused", "Error", "Disabled"], defaultValue: "Default" },
2596
- ],
2597
- tokenBindings: [
2598
- { nodePath: "Trigger", property: "fills", semanticToken: "color/semantic/field/bg/default" },
2599
- { nodePath: "Trigger", property: "strokes", semanticToken: "color/semantic/field/border/default" },
2600
- ],
2601
- iconSlots: [
2602
- { nodePath: "Trigger.ClockIcon", propName: "clockIcon", defaultIcon: "icon/status/pending", required: true },
2603
- ],
2604
- };
2605
-
2606
- const RANGESLIDER: ComponentBlueprint = {
2607
- name: "RangeSlider",
2608
- category: "forms",
2609
- description: "Dual-thumb slider for selecting a value range",
2610
- root: {
2611
- name: "RangeSlider",
2612
- kind: "frame",
2613
- width: 280,
2614
- layoutMode: "VERTICAL",
2615
- primaryAxisSizing: "AUTO",
2616
- counterAxisSizing: "FIXED",
2617
- itemSpacing: 8,
2618
- children: [
2619
- { name: "LabelRow", kind: "frame", layoutMode: "HORIZONTAL", primaryAxisAlign: "SPACE_BETWEEN", primaryAxisSizing: "AUTO", counterAxisSizing: "AUTO", children: [{ name: "Label", kind: "text", textContent: "Price range", textPreset: "label/sm", textFillSemantic: "color/semantic/text/primary" }, { name: "Values", kind: "text", textContent: "$20 – $80", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" }] },
2620
- { name: "TrackContainer", kind: "frame", height: 24, layoutMode: "HORIZONTAL", counterAxisAlign: "CENTER", primaryAxisSizing: "AUTO", counterAxisSizing: "FIXED", children: [{ name: "Track", kind: "rect", width: 280, height: 4, cornerRadius: 2, fillSemantic: "color/semantic/border/default" }, { name: "Fill", kind: "rect", width: 168, height: 4, cornerRadius: 2, fillSemantic: "color/semantic/actions/primary/bg/default" }, { name: "ThumbMin", kind: "ellipse", width: 20, height: 20, fillSemantic: "color/semantic/surface/default", strokeSemantic: "color/semantic/actions/primary/bg/default", strokeWeight: 2 }, { name: "ThumbMax", kind: "ellipse", width: 20, height: 20, fillSemantic: "color/semantic/surface/default", strokeSemantic: "color/semantic/actions/primary/bg/default", strokeWeight: 2 }] },
2621
- ],
2622
- },
2623
- variantProperties: [
2624
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
2625
- { name: "State", values: ["Default", "Hover", "Active", "Disabled"], defaultValue: "Default" },
2626
- ],
2627
- tokenBindings: [
2628
- { nodePath: "TrackContainer.Fill", property: "fills", semanticToken: "color/semantic/actions/primary/bg/default" },
2629
- { nodePath: "TrackContainer.ThumbMin", property: "strokes", semanticToken: "color/semantic/actions/primary/bg/default" },
2630
- { nodePath: "TrackContainer.ThumbMax", property: "strokes", semanticToken: "color/semantic/actions/primary/bg/default" },
2631
- ],
2632
- };
2633
-
2634
- const INLINEEDIT: ComponentBlueprint = {
2635
- name: "InlineEdit",
2636
- category: "data",
2637
- description: "Click-to-edit text field that toggles between read and edit modes",
2638
- root: {
2639
- name: "InlineEdit",
2640
- kind: "frame",
2641
- layoutMode: "HORIZONTAL",
2642
- primaryAxisSizing: "AUTO",
2643
- counterAxisSizing: "AUTO",
2644
- itemSpacing: 4,
2645
- counterAxisAlign: "CENTER",
2646
- paddingX: 4,
2647
- paddingY: 4,
2648
- cornerRadius: 4,
2649
- children: [
2650
- { name: "Value", kind: "text", textContent: "Click to edit", textPreset: "body/md", textFillSemantic: "color/semantic/text/primary" },
2651
- { name: "EditIcon", kind: "frame", width: 14, height: 14, fillSemantic: "color/semantic/icon/secondary", opacity: 0, iconSlot: { defaultIcon: "icon/action/edit", required: true, size: "xs", colorToken: "color/semantic/icon/secondary", decorative: true } },
2652
- ],
2653
- },
2654
- variantProperties: [
2655
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2656
- { name: "State", values: ["ReadMode", "EditMode", "Saving", "Error"], defaultValue: "ReadMode" },
2657
- ],
2658
- tokenBindings: [],
2659
- iconSlots: [
2660
- { nodePath: "EditIcon", propName: "editIcon", defaultIcon: "icon/action/edit", required: true },
2661
- ],
2662
- };
2663
-
2664
- // ─── Batch 6: Final ─────────────────────────────────────────────────────────
2665
-
2666
- const STATUSDOT: ComponentBlueprint = {
2667
- name: "StatusDot",
2668
- category: "core",
2669
- description: "Colored dot indicator for status with required text label",
2670
- root: {
2671
- name: "StatusDot",
2672
- kind: "frame",
2673
- layoutMode: "HORIZONTAL",
2674
- primaryAxisSizing: "AUTO",
2675
- counterAxisSizing: "AUTO",
2676
- itemSpacing: 6,
2677
- counterAxisAlign: "CENTER",
2678
- children: [
2679
- { name: "Dot", kind: "ellipse", width: 10, height: 10, fillSemantic: "color/semantic/feedback/success/text" },
2680
- { name: "Label", kind: "text", textContent: "Online", textPreset: "body/sm", textFillSemantic: "color/semantic/text/primary" },
2681
- ],
2682
- },
2683
- variantProperties: [
2684
- { name: "Status", values: ["success", "warning", "error", "info", "neutral", "offline", "online"], defaultValue: "success" },
2685
- { name: "Size", values: ["sm", "md"], defaultValue: "md" },
2686
- ],
2687
- tokenBindings: [
2688
- { nodePath: "Dot", property: "fills", semanticToken: "color/semantic/feedback/success/text" },
2689
- ],
2690
- };
2691
-
2692
- const RATING: ComponentBlueprint = {
2693
- name: "Rating",
2694
- category: "forms",
2695
- description: "Star-based rating input for user feedback or read-only display",
2696
- root: {
2697
- name: "Rating",
2698
- kind: "frame",
2699
- layoutMode: "HORIZONTAL",
2700
- primaryAxisSizing: "AUTO",
2701
- counterAxisSizing: "AUTO",
2702
- itemSpacing: 4,
2703
- counterAxisAlign: "CENTER",
2704
- children: [
2705
- { name: "Star1", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/feedback/warning/text", iconSlot: { defaultIcon: "icon/toggle/star", required: true, size: "md", colorToken: "color/semantic/feedback/warning/text", decorative: false } },
2706
- { name: "Star2", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/feedback/warning/text", iconSlot: { defaultIcon: "icon/toggle/star", required: true, size: "md", colorToken: "color/semantic/feedback/warning/text", decorative: false } },
2707
- { name: "Star3", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/feedback/warning/text", iconSlot: { defaultIcon: "icon/toggle/star", required: true, size: "md", colorToken: "color/semantic/feedback/warning/text", decorative: false } },
2708
- { name: "Star4", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/border/default", iconSlot: { defaultIcon: "icon/toggle/star", required: true, size: "md", colorToken: "color/semantic/border/default", decorative: false } },
2709
- { name: "Star5", kind: "frame", width: 24, height: 24, fillSemantic: "color/semantic/border/default", iconSlot: { defaultIcon: "icon/toggle/star", required: true, size: "md", colorToken: "color/semantic/border/default", decorative: false } },
2710
- { name: "Value", kind: "text", textContent: "3.0", textPreset: "label/sm", textFillSemantic: "color/semantic/text/secondary" },
2711
- ],
2712
- },
2713
- variantProperties: [
2714
- { name: "Size", values: ["sm", "md", "lg"], defaultValue: "md" },
2715
- { name: "State", values: ["Interactive", "ReadOnly", "Disabled"], defaultValue: "Interactive" },
2716
- ],
2717
- tokenBindings: [
2718
- { nodePath: "Star1", property: "fills", semanticToken: "color/semantic/feedback/warning/text" },
2719
- { nodePath: "Star4", property: "fills", semanticToken: "color/semantic/border/default" },
2720
- ],
2721
- iconSlots: [
2722
- { nodePath: "Star1", propName: "star1Icon", defaultIcon: "icon/toggle/star", required: true },
2723
- { nodePath: "Star2", propName: "star2Icon", defaultIcon: "icon/toggle/star", required: true },
2724
- { nodePath: "Star3", propName: "star3Icon", defaultIcon: "icon/toggle/star", required: true },
2725
- { nodePath: "Star4", propName: "star4Icon", defaultIcon: "icon/toggle/star", required: true },
2726
- { nodePath: "Star5", propName: "star5Icon", defaultIcon: "icon/toggle/star", required: true },
2727
- ],
2728
- };
2729
-
2730
- // ─── Aggregate ──────────────────────────────────────────────────────────────
2731
-
2732
- export const COMPONENT_BLUEPRINTS: ComponentBlueprint[] = [
2733
- // Original 17
2734
- BUTTON, INPUT, SELECT, CHECKBOX, TOGGLE, RADIO,
2735
- CARD, MODAL, TOAST, BADGE, AVATAR, TOOLTIP,
2736
- TABS, BREADCRUMB, TAG, NAVBAR, TABLE,
2737
- // Batch 1: Gap-fill + new Tier 1
2738
- ACCORDION, SLIDER, ALERT, CHIP, PROGRESS, SIDENAVIGATION,
2739
- ICON, LINK, MENU, SPINNER,
2740
- // Batch 2: Tier 2 Forms
2741
- TEXTAREA, SEARCH, COMBOBOX, DATEPICKER, NUMBERINPUT, FORM,
2742
- // Batch 3: Nav + Data + Layout
2743
- PAGINATION, LIST, TREEVIEW, TYPOGRAPHY, DIVIDER, SKELETON,
2744
- // Batch 4: Overlay + Remaining
2745
- POPOVER, DROPDOWNMENU, AVATARGROUP, GRID, EMPTYSTATE, BANNER,
2746
- // Batch 5: Tier 3
2747
- DRAWER, SEGMENTEDCONTROL, STEPPER, FILEUPLOADER, INLINEMESSAGE,
2748
- TOOLBAR, CALENDAR, TIMEPICKER, RANGESLIDER, INLINEEDIT,
2749
- // Batch 6: Final
2750
- STATUSDOT, RATING,
2751
- ];
2752
-
2753
- /**
2754
- * Get blueprints filtered by category.
2755
- */
2756
- export function getBlueprintsByCategory(
2757
- categories: Array<"core" | "forms" | "navigation" | "data" | "feedback" | "overlay" | "layout">
2758
- ): ComponentBlueprint[] {
2759
- return COMPONENT_BLUEPRINTS.filter((b) => categories.includes(b.category));
2760
- }
2761
-
2762
- /**
2763
- * Get a single blueprint by name.
2764
- */
2765
- export function getBlueprint(name: string): ComponentBlueprint | undefined {
2766
- return COMPONENT_BLUEPRINTS.find((b) => b.name.toLowerCase() === name.toLowerCase());
2767
- }