@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,289 +0,0 @@
1
- /**
2
- * Knowledge: Toggle Switch
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const toggleKnowledge: ComponentKnowledge = {
7
- description:
8
- "Binary switch control | Immediate state change | On/Off preference toggle",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Off",
13
- visualChange: "Track is neutral/muted; thumb is positioned to the left",
14
- opacity: "1",
15
- cursorWeb: "pointer",
16
- usage: "Default inactive state — the associated setting is disabled",
17
- },
18
- {
19
- state: "On",
20
- visualChange:
21
- "Track fills with primary color; thumb slides to the right",
22
- opacity: "1",
23
- cursorWeb: "pointer",
24
- usage: "Active state — the associated setting is enabled",
25
- },
26
- {
27
- state: "Disabled (off)",
28
- visualChange:
29
- "Track and thumb are muted; no pointer events; off position",
30
- opacity: "0.4",
31
- cursorWeb: "not-allowed",
32
- usage: "Toggle is inactive and cannot be changed by the user",
33
- },
34
- {
35
- state: "Disabled (on)",
36
- visualChange:
37
- "Track shows muted primary; thumb on right; no pointer events",
38
- opacity: "0.4",
39
- cursorWeb: "not-allowed",
40
- usage: "Toggle is active but locked and cannot be changed",
41
- },
42
- {
43
- state: "Focus",
44
- visualChange: "Focus ring appears around the track or thumb",
45
- opacity: "1",
46
- cursorWeb: "pointer",
47
- usage: "Toggle has keyboard focus and can be operated with Space",
48
- },
49
- {
50
- state: "Hover",
51
- visualChange: "Subtle background tint or shadow on the track",
52
- opacity: "1",
53
- cursorWeb: "pointer",
54
- usage: "Pointer is over the toggle, indicating interactivity",
55
- },
56
- ],
57
-
58
- propertyDescriptions: {
59
- checked: "Boolean indicating whether the toggle is on (true) or off (false)",
60
- disabled: "Prevents interaction and visually mutes the component",
61
- label: "Descriptive text adjacent to the toggle explaining its purpose",
62
- labelPosition:
63
- "Placement of the label relative to the toggle: 'start' (left/above) or 'end' (right/below)",
64
- size: "Visual size variant: small, medium, or large",
65
- },
66
-
67
- sizeSpecifications: [
68
- {
69
- size: "Small",
70
- height: "16px",
71
- paddingLR: "2px",
72
- fontSize: "12px",
73
- iconSize: "12px",
74
- borderRadius: "8px",
75
- },
76
- {
77
- size: "Medium",
78
- height: "20px",
79
- paddingLR: "2px",
80
- fontSize: "14px",
81
- iconSize: "14px",
82
- borderRadius: "10px",
83
- },
84
- {
85
- size: "Large",
86
- height: "24px",
87
- paddingLR: "3px",
88
- fontSize: "16px",
89
- iconSize: "16px",
90
- borderRadius: "12px",
91
- },
92
- ],
93
-
94
- designTokenBindings: [
95
- {
96
- property: "background-color (track off)",
97
- tokenName: "toggle/track/bg/off",
98
- role: "Track background when toggle is off",
99
- fallback: "#C6C6C6",
100
- },
101
- {
102
- property: "background-color (track on)",
103
- tokenName: "toggle/track/bg/on",
104
- role: "Track background when toggle is on",
105
- fallback: "#0F62FE",
106
- },
107
- {
108
- property: "background-color (thumb)",
109
- tokenName: "toggle/thumb/bg",
110
- role: "Thumb circle fill color",
111
- fallback: "#FFFFFF",
112
- },
113
- {
114
- property: "box-shadow (focus)",
115
- tokenName: "toggle/focus-ring",
116
- role: "Focus ring outline on keyboard focus",
117
- fallback: "0 0 0 2px #0F62FE",
118
- },
119
- {
120
- property: "color (label)",
121
- tokenName: "toggle/label/color",
122
- role: "Label text color adjacent to the toggle",
123
- fallback: "#161616",
124
- },
125
- ],
126
-
127
- structureRules: [
128
- "The toggle consists of a track (pill shape) and a thumb (circle) that slides between left and right positions",
129
- "The label is a sibling element positioned to the start or end of the track depending on labelPosition",
130
- "Track width is approximately 1.75x its height to allow clear thumb travel",
131
- "The thumb diameter equals the track height minus internal padding on both sides",
132
- "No additional icons or text are placed inside the track by default",
133
- ],
134
-
135
- typeHierarchyRules: [
136
- "Label uses the component's base font size at regular weight",
137
- "If a description or sub-label is present, it uses one step smaller font size at regular weight",
138
- "Label and toggle are vertically center-aligned",
139
- ],
140
-
141
- interactionRules: [
142
- {
143
- event: "click",
144
- trigger: "User clicks the track, thumb, or label",
145
- action:
146
- "Toggle state flips immediately (on to off or off to on); onChange fires",
147
- },
148
- {
149
- event: "keydown (Space)",
150
- trigger: "User presses Space while the toggle is focused",
151
- action: "Toggle state flips; same behavior as click",
152
- },
153
- {
154
- event: "drag",
155
- trigger: "User drags the thumb horizontally across the track",
156
- action:
157
- "Thumb follows the pointer; state commits when released past the midpoint",
158
- },
159
- {
160
- event: "change",
161
- trigger: "Toggle state changes by any method",
162
- action:
163
- "Effect takes place immediately — no form submission required",
164
- },
165
- ],
166
-
167
- contentGuidance: [
168
- "Label should clearly describe the setting being controlled (e.g. 'Enable notifications')",
169
- "Use positive framing — the label describes what happens when the toggle is on",
170
- "Avoid double negatives (e.g. 'Disable auto-save' is confusing when toggled off)",
171
- "If the toggle controls a destructive or irreversible action, pair it with a confirmation dialog",
172
- "Toggles imply an immediate effect — do not use them for choices that require a Save button",
173
- ],
174
-
175
- responsiveBehaviour: [
176
- {
177
- breakpoint: "< 480px",
178
- behavior:
179
- "Toggle and label are placed on a single row; label may wrap to a second line if needed",
180
- },
181
- {
182
- breakpoint: "480px – 1024px",
183
- behavior:
184
- "Toggle and label sit inline within settings cards or form rows",
185
- },
186
- {
187
- breakpoint: "> 1024px",
188
- behavior:
189
- "Toggle may appear in dense settings panels; size stays consistent across breakpoints",
190
- },
191
- ],
192
-
193
- accessibilitySpec: {
194
- intro:
195
- "The toggle must use role=\"switch\" so assistive technology announces it as a binary on/off control with immediate effect.",
196
- requirements: [
197
- {
198
- requirement:
199
- "Element has role=\"switch\" with aria-checked reflecting the current state (true/false)",
200
- level: "A",
201
- notes: "WCAG 4.1.2 – Name, Role, Value",
202
- },
203
- {
204
- requirement:
205
- "An accessible name is provided via a visible label linked by htmlFor/id or aria-labelledby",
206
- level: "A",
207
- notes: "WCAG 1.3.1 – Info and Relationships",
208
- },
209
- {
210
- requirement:
211
- "State change is announced immediately by screen readers when toggled",
212
- level: "A",
213
- notes: "WCAG 4.1.2 – users must perceive the state change",
214
- },
215
- {
216
- requirement:
217
- "Focus indicator is visible with at least 3:1 contrast against adjacent colors",
218
- level: "AA",
219
- notes: "WCAG 2.4.7 – Focus Visible",
220
- },
221
- {
222
- requirement:
223
- "Track and thumb contrast meet 3:1 non-text UI requirement in both on and off states",
224
- level: "AA",
225
- notes: "WCAG 1.4.11 – Non-text Contrast",
226
- },
227
- ],
228
- outro: [
229
- "Test with VoiceOver and NVDA: focus the toggle, press Space, and verify the state announcement changes",
230
- "Ensure the change takes effect immediately without requiring a separate submit action",
231
- "Verify that disabled toggles are announced as dimmed/unavailable and cannot be operated",
232
- ],
233
- },
234
-
235
- qaAcceptanceCriteria: [
236
- {
237
- check: "Toggle animation",
238
- platform: "Web / Mobile",
239
- expectedResult:
240
- "Thumb slides smoothly between on and off positions; track color transitions within 150ms",
241
- },
242
- {
243
- check: "Disabled state",
244
- platform: "Web / Mobile",
245
- expectedResult:
246
- "Clicking or pressing Space on a disabled toggle has no effect; cursor shows not-allowed",
247
- },
248
- {
249
- check: "Keyboard operation",
250
- platform: "Web",
251
- expectedResult:
252
- "Space key toggles the state; Tab moves focus to/from the toggle",
253
- },
254
- {
255
- check: "Screen reader announcement",
256
- platform: "Web",
257
- expectedResult:
258
- "VoiceOver/NVDA reads label, role as 'switch', and current state ('on' or 'off')",
259
- },
260
- {
261
- check: "Drag behavior",
262
- platform: "Web / Mobile",
263
- expectedResult:
264
- "Dragging the thumb past the midpoint commits the state change; releasing before midpoint reverts",
265
- },
266
- {
267
- check: "Immediate effect",
268
- platform: "Web / Mobile",
269
- expectedResult:
270
- "Toggling fires the onChange callback immediately without waiting for form submission",
271
- },
272
- ],
273
-
274
- dos: [
275
- "Use toggles for binary settings that take effect immediately",
276
- "Provide a clear label that describes the 'on' state",
277
- "Animate the thumb transition for visual feedback",
278
- "Maintain consistent sizing with adjacent form controls",
279
- "Ensure both on and off track colors have sufficient contrast against the background",
280
- ],
281
-
282
- donts: [
283
- "Do not use a toggle when a checkbox with a Save button is more appropriate",
284
- "Do not use a toggle for multi-option choices — use radio buttons or a select instead",
285
- "Do not place the toggle inside a scrollable container where drag conflicts with scroll",
286
- "Do not remove the label — a standalone toggle without text is not self-explanatory",
287
- "Do not change the toggle's semantics to behave like a button that triggers navigation",
288
- ],
289
- };
@@ -1,267 +0,0 @@
1
- /**
2
- * toolbar.ts — Gold-standard design knowledge for Toolbar components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const toolbarKnowledge: ComponentKnowledge = {
7
- description:
8
- "Horizontal action bar | Grouped controls container | Provides quick access to contextual actions and tools",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Default",
13
- visualChange: "Toolbar renders as a horizontal bar with evenly spaced action items in their resting state",
14
- opacity: "1",
15
- cursorWeb: "default",
16
- usage: "Standard resting state — all toolbar items are interactive and ready for activation",
17
- },
18
- {
19
- state: "Item Hover",
20
- visualChange: "Individual toolbar item background shifts to a subtle hover tint; icon/text color may intensify",
21
- opacity: "1",
22
- cursorWeb: "pointer",
23
- usage: "Mouse cursor enters a specific toolbar item's hit area",
24
- },
25
- {
26
- state: "Item Active/Pressed",
27
- visualChange: "Item background darkens further; slight depression effect for tactile feedback",
28
- opacity: "1",
29
- cursorWeb: "pointer",
30
- usage: "Mouse button is held down on a toolbar item",
31
- },
32
- {
33
- state: "Item Selected/Toggled",
34
- visualChange: "Item has filled background or bottom indicator bar; icon/text uses active/primary color",
35
- opacity: "1",
36
- cursorWeb: "default",
37
- usage: "A toggle-type toolbar item is in its active/on state (e.g. Bold, Italic formatting)",
38
- },
39
- {
40
- state: "Item Disabled",
41
- visualChange: "Individual item icon and text are muted; no hover or click response",
42
- opacity: "0.4",
43
- cursorWeb: "not-allowed",
44
- usage: "A specific action is unavailable in the current context (e.g. Undo with no history)",
45
- },
46
- {
47
- state: "Item Focus",
48
- visualChange: "2px focus ring around the focused item; achieved via arrow key or Tab navigation",
49
- opacity: "1",
50
- cursorWeb: "pointer",
51
- usage: "A toolbar item receives keyboard focus via the roving tabindex pattern",
52
- },
53
- {
54
- state: "Overflow",
55
- visualChange: "Items that do not fit are hidden; an overflow menu button (three dots) appears at the end",
56
- opacity: "1",
57
- cursorWeb: "pointer",
58
- usage: "Container is too narrow to display all items — excess items move to an overflow dropdown",
59
- },
60
- ],
61
-
62
- propertyDescriptions: {
63
- items: "Array of toolbar item objects, each with a label, icon, onClick handler, type (button/toggle/separator), and optional disabled flag",
64
- size: "Dimensional preset — Small, Medium, or Large — controlling item height, icon size, and padding",
65
- overflow: "Overflow behavior — 'visible' keeps all items visible (may overflow container) or 'menu' moves excess items to a dropdown",
66
- orientation: "Layout direction — 'horizontal' (default) for standard toolbars or 'vertical' for sidebar tool palettes",
67
- ariaLabel: "Accessible label for the toolbar — describes the toolbar purpose (e.g. 'Text formatting', 'Drawing tools')",
68
- variant: "Visual style — 'solid' with background fill, 'subtle' with transparent background, or 'outlined' with border",
69
- groupSeparator: "When true, renders visual dividers between logical groups of toolbar items",
70
- },
71
-
72
- sizeSpecifications: [
73
- {
74
- size: "Small",
75
- height: "32px",
76
- paddingLR: "4px",
77
- fontSize: "12px",
78
- iconSize: "16px",
79
- borderRadius: "6px",
80
- },
81
- {
82
- size: "Medium",
83
- height: "40px",
84
- paddingLR: "6px",
85
- fontSize: "14px",
86
- iconSize: "20px",
87
- borderRadius: "8px",
88
- },
89
- {
90
- size: "Large",
91
- height: "48px",
92
- paddingLR: "8px",
93
- fontSize: "16px",
94
- iconSize: "24px",
95
- borderRadius: "10px",
96
- },
97
- ],
98
-
99
- designTokenBindings: [
100
- {
101
- property: "Toolbar Background",
102
- tokenName: "$toolbar-bg",
103
- role: "Background fill of the toolbar container",
104
- fallback: "#FFFFFF",
105
- },
106
- {
107
- property: "Toolbar Border",
108
- tokenName: "$toolbar-border",
109
- role: "Border around or below the toolbar for definition",
110
- fallback: "#E4E7EC",
111
- },
112
- {
113
- property: "Item Default Color",
114
- tokenName: "$toolbar-item-color",
115
- role: "Icon and text color for toolbar items in default state",
116
- fallback: "#667085",
117
- },
118
- {
119
- property: "Item Hover Background",
120
- tokenName: "$toolbar-item-hover-bg",
121
- role: "Background tint on individual item hover",
122
- fallback: "#F2F4F7",
123
- },
124
- {
125
- property: "Item Active Background",
126
- tokenName: "$toolbar-item-active-bg",
127
- role: "Background fill when an item is pressed or actively toggled",
128
- fallback: "#E4E7EC",
129
- },
130
- {
131
- property: "Item Selected Color",
132
- tokenName: "$toolbar-item-selected-color",
133
- role: "Icon and text color for a selected/toggled-on item",
134
- fallback: "#2563EB",
135
- },
136
- {
137
- property: "Item Selected Background",
138
- tokenName: "$toolbar-item-selected-bg",
139
- role: "Background fill for a selected/toggled-on item",
140
- fallback: "#EFF8FF",
141
- },
142
- {
143
- property: "Separator",
144
- tokenName: "$toolbar-separator",
145
- role: "Color of the vertical divider line between item groups",
146
- fallback: "#E4E7EC",
147
- },
148
- {
149
- property: "Focus Ring",
150
- tokenName: "$focus-ring",
151
- role: "Keyboard focus indicator around the focused toolbar item",
152
- fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
153
- },
154
- {
155
- property: "Shadow",
156
- tokenName: "$shadow-toolbar",
157
- role: "Optional subtle shadow for floating toolbar variants",
158
- fallback: "0 1px 3px rgba(0, 0, 0, 0.1)",
159
- },
160
- ],
161
-
162
- structureRules: [
163
- "Toolbar container uses horizontal Auto Layout (or vertical for sidebar variant) with items as direct children",
164
- "Items within a logical group have $spacing-2xs (2px) gap; groups are separated by a visual divider",
165
- "Separators are 1px vertical lines (horizontal toolbar) or 1px horizontal lines (vertical toolbar) using the separator token",
166
- "Each item is a square or near-square button containing an icon centered both horizontally and vertically",
167
- "Items with labels render the label below (horizontal) or beside (vertical) the icon in a compact arrangement",
168
- "Overflow menu button is always the last visible item and uses a three-dot (ellipsis) icon",
169
- "Overflow dropdown menu inherits the menu component pattern with the hidden items listed as menu items",
170
- "Toolbar container has minimal internal padding (4-8px) to keep it compact",
171
- "Toolbar should not wrap to multiple lines — use the overflow pattern when items exceed container width",
172
- ],
173
-
174
- typeHierarchyRules: [
175
- "Item labels (when shown) use Medium weight (500) at one size smaller than the size preset fontSize",
176
- "Labels are optional — icon-only toolbars are the most common pattern",
177
- "Tooltip text for icon-only items uses Regular weight (400) at 12px",
178
- "Overflow menu item text uses Regular weight (400) at the standard menu item font size",
179
- ],
180
-
181
- interactionRules: [
182
- { event: "Click (Button Item)", trigger: "Pointer up on a button-type toolbar item", action: "Fire the item's onClick handler; provide brief visual active feedback" },
183
- { event: "Click (Toggle Item)", trigger: "Pointer up on a toggle-type toolbar item", action: "Toggle the item's selected state; update visual treatment; fire onChange" },
184
- { event: "Hover", trigger: "Pointer enters a toolbar item", action: "Item background transitions to hover tint; tooltip appears after delay" },
185
- { event: "Focus (Tab)", trigger: "Tab key reaches the toolbar", action: "Focus lands on the first (or last-focused) item in the toolbar; focus ring appears" },
186
- { event: "Arrow Right", trigger: "Right arrow while focused (horizontal)", action: "Move focus to the next item; skip separators; wrap from last to first" },
187
- { event: "Arrow Left", trigger: "Left arrow while focused (horizontal)", action: "Move focus to the previous item; skip separators; wrap from first to last" },
188
- { event: "Arrow Down", trigger: "Down arrow while focused (vertical)", action: "Move focus to the next item in a vertical toolbar" },
189
- { event: "Arrow Up", trigger: "Up arrow while focused (vertical)", action: "Move focus to the previous item in a vertical toolbar" },
190
- { event: "Home", trigger: "Home key while focused", action: "Move focus to the first interactive item in the toolbar" },
191
- { event: "End", trigger: "End key while focused", action: "Move focus to the last interactive item in the toolbar" },
192
- { event: "Overflow Toggle", trigger: "Click on the overflow menu button", action: "Open a dropdown menu containing the hidden overflow items" },
193
- ],
194
-
195
- contentGuidance: [
196
- "Group related actions together — separate groups with visual dividers",
197
- "Limit toolbar to 5-12 visible items — use overflow for additional actions",
198
- "Icon-only toolbars must have tooltips on every item for discoverability",
199
- "Use familiar, standard icons — avoid custom icons that require learning",
200
- "Place the most frequently used actions at the beginning (left for horizontal, top for vertical)",
201
- "Toggle items should have a clear selected vs. unselected visual distinction",
202
- "Overflow menu should preserve the same item order as the visible toolbar",
203
- ],
204
-
205
- responsiveBehaviour: [
206
- { breakpoint: "Mobile (<768px)", behavior: "Toolbar items collapse aggressively into overflow menu; only 3-4 most important items remain visible" },
207
- { breakpoint: "Tablet (768-1023px)", behavior: "Most items visible; overflow handles 2-3 least-used items; touch targets are 44px minimum" },
208
- { breakpoint: "Desktop (1024-1439px)", behavior: "All items visible in most cases; overflow activates only for very dense toolbars" },
209
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Toolbar width remains capped at container width; items do not spread to fill extra space" },
210
- ],
211
-
212
- accessibilitySpec: {
213
- intro:
214
- "Toolbars group related controls for quick access. The WAI-ARIA toolbar pattern requires proper role assignment, arrow key navigation, and accessible names for all items.",
215
- requirements: [
216
- { requirement: "Role", level: "A", notes: "Container must have role='toolbar' with aria-label or aria-labelledby describing the toolbar purpose" },
217
- { requirement: "Orientation", level: "A", notes: "Use aria-orientation='horizontal' or 'vertical' to inform screen readers of the navigation axis" },
218
- { requirement: "Roving Tabindex", level: "A", notes: "Only one item has tabindex='0' at a time; arrow keys move focus; Tab exits the toolbar" },
219
- { requirement: "Item Labels", level: "A", notes: "Icon-only items require aria-label; toggle items need aria-pressed='true'/'false'" },
220
- { requirement: "Disabled Items", level: "A", notes: "Disabled items have aria-disabled='true'; they remain in the arrow key navigation but are not activatable" },
221
- { requirement: "Keyboard Activation", level: "A", notes: "Enter and Space activate the focused toolbar item; toggle items change aria-pressed" },
222
- { requirement: "Contrast", level: "AA", notes: "All item icons meet 3:1 non-text contrast; labels meet 4.5:1 text contrast" },
223
- { requirement: "Touch Target", level: "AA", notes: "Each toolbar item has a minimum 44x44px touch area" },
224
- ],
225
- outro: [
226
- "Test with screen readers to verify role='toolbar' is announced, along with the toolbar label and item count",
227
- "Verify arrow keys navigate between items and wrap at boundaries",
228
- "Ensure overflow menu items are announced with their original labels and states",
229
- ],
230
- },
231
-
232
- qaAcceptanceCriteria: [
233
- { check: "Default Render", platform: "All", expectedResult: "Toolbar displays all items in a horizontal row with correct spacing and separators" },
234
- { check: "Item Hover", platform: "Web", expectedResult: "Individual items show hover background tint on pointer enter" },
235
- { check: "Item Click", platform: "All", expectedResult: "Button items fire onClick; toggle items change selected state and fire onChange" },
236
- { check: "Toggle State", platform: "All", expectedResult: "Toggled-on items show filled/selected visual; toggled-off items show default treatment" },
237
- { check: "Arrow Key Navigation", platform: "Web", expectedResult: "Left/Right arrows move focus between items; Home/End jump to first/last" },
238
- { check: "Tab Behavior", platform: "Web", expectedResult: "Tab enters toolbar on the last-focused item; next Tab exits to the next focusable element" },
239
- { check: "Disabled Item", platform: "All", expectedResult: "Disabled items show muted visuals; not clickable; included in arrow key navigation but not activatable" },
240
- { check: "Overflow Menu", platform: "Web", expectedResult: "Excess items move to overflow dropdown; dropdown opens on overflow button click" },
241
- { check: "Separator Rendering", platform: "All", expectedResult: "Visual dividers appear between groups; correct color and spacing" },
242
- { check: "Tooltip", platform: "Web", expectedResult: "Tooltips appear on hover/focus for icon-only items with correct label text" },
243
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces toolbar role, label, item labels, toggle states, and disabled states" },
244
- { check: "Vertical Orientation", platform: "All", expectedResult: "Items stack vertically; Up/Down arrows navigate; aria-orientation is 'vertical'" },
245
- { check: "RTL Support", platform: "Web", expectedResult: "Item order mirrors; arrow key direction reverses; separators position correctly" },
246
- ],
247
-
248
- dos: [
249
- "Use role='toolbar' with a descriptive aria-label for the toolbar container",
250
- "Group related actions and separate groups with visual dividers",
251
- "Implement roving tabindex for single-Tab-stop keyboard navigation",
252
- "Provide tooltips for all icon-only toolbar items",
253
- "Use the overflow pattern when items exceed the available container width",
254
- "Give toggle items a clear selected/unselected visual distinction with aria-pressed",
255
- "Place the most frequently used actions first (leftmost or topmost)",
256
- ],
257
-
258
- donts: [
259
- "Do not use a toolbar for navigation — use a navbar or tab bar instead",
260
- "Do not allow the toolbar to wrap to multiple rows — use overflow instead",
261
- "Do not make toolbar items smaller than the 44x44px minimum touch target",
262
- "Do not use text-only toolbar items without icons — toolbars are primarily icon-driven",
263
- "Do not mix unrelated actions in the same toolbar — separate into distinct toolbars",
264
- "Do not use the toolbar pattern for a simple button group — toolbars imply the WAI-ARIA toolbar pattern",
265
- "Do not hide the overflow indicator when items are clipped — users need to discover hidden actions",
266
- ],
267
- };