@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,232 +0,0 @@
1
- /**
2
- * tooltip.ts — Gold-standard design knowledge for Tooltip components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const tooltipKnowledge: ComponentKnowledge = {
7
- description:
8
- "Contextual hint | Hover-triggered information overlay | Supplementary label",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Hidden",
13
- visualChange: "Tooltip is not rendered in the DOM or has opacity 0 and pointer-events none",
14
- opacity: "0",
15
- cursorWeb: "default",
16
- usage: "Default state — tooltip is invisible until triggered by hover or focus",
17
- },
18
- {
19
- state: "Visible",
20
- visualChange: "Tooltip fades in with arrow pointer anchored to the trigger element; positioned above/below/left/right",
21
- opacity: "1",
22
- cursorWeb: "default",
23
- usage: "User hovers or focuses the trigger element after the configured delay",
24
- },
25
- {
26
- state: "Entering",
27
- visualChange: "Tooltip fades in over 150ms with a subtle scale-up from 0.95 to 1.0",
28
- opacity: "0 → 1",
29
- cursorWeb: "default",
30
- usage: "Transition state during the show animation after delay completes",
31
- },
32
- {
33
- state: "Exiting",
34
- visualChange: "Tooltip fades out over 100ms; faster than entry for responsive feel",
35
- opacity: "1 → 0",
36
- cursorWeb: "default",
37
- usage: "Mouse leaves the trigger or focus moves away",
38
- },
39
- {
40
- state: "Repositioned",
41
- visualChange: "Tooltip flips to an alternate placement when clipped by viewport edge",
42
- opacity: "1",
43
- cursorWeb: "default",
44
- usage: "Automatic collision detection repositions the tooltip to stay fully visible",
45
- },
46
- {
47
- state: "Persistent (Focus)",
48
- visualChange: "Tooltip remains visible while the trigger element retains keyboard focus",
49
- opacity: "1",
50
- cursorWeb: "default",
51
- usage: "Keyboard user tabs to the trigger — tooltip stays until focus leaves",
52
- },
53
- ],
54
-
55
- propertyDescriptions: {
56
- content: "Plain text string displayed inside the tooltip; must be concise and non-interactive",
57
- placement: "Preferred position relative to the trigger — top, bottom, left, or right; auto-flips on collision",
58
- delayShow: "Milliseconds to wait after hover/focus before showing the tooltip (default 300ms)",
59
- delayHide: "Milliseconds to wait after hover/focus leaves before hiding (default 100ms)",
60
- hasArrow: "When true, a triangular pointer connects the tooltip bubble to its trigger element",
61
- maxWidth: "Maximum width before text wraps; prevents overly wide tooltips (default 240px)",
62
- triggerElement: "The interactive element that activates the tooltip on hover or focus",
63
- },
64
-
65
- sizeSpecifications: [
66
- {
67
- size: "Small",
68
- height: "24px",
69
- paddingLR: "8px",
70
- fontSize: "11px",
71
- iconSize: "12px",
72
- borderRadius: "4px",
73
- },
74
- {
75
- size: "Medium",
76
- height: "32px",
77
- paddingLR: "12px",
78
- fontSize: "12px",
79
- iconSize: "14px",
80
- borderRadius: "6px",
81
- },
82
- {
83
- size: "Large",
84
- height: "auto",
85
- paddingLR: "16px",
86
- fontSize: "13px",
87
- iconSize: "16px",
88
- borderRadius: "8px",
89
- },
90
- ],
91
-
92
- designTokenBindings: [
93
- {
94
- property: "Background",
95
- tokenName: "$tooltip-bg",
96
- role: "Dark fill for the tooltip bubble ensuring contrast with light pages",
97
- fallback: "#1D2939",
98
- },
99
- {
100
- property: "Text Color",
101
- tokenName: "$tooltip-text",
102
- role: "Light text on dark background for readability",
103
- fallback: "#FFFFFF",
104
- },
105
- {
106
- property: "Arrow Fill",
107
- tokenName: "$tooltip-arrow",
108
- role: "Matches the tooltip background to create a seamless pointer",
109
- fallback: "#1D2939",
110
- },
111
- {
112
- property: "Border Radius",
113
- tokenName: "$radius-tooltip",
114
- role: "Corner rounding for the tooltip bubble",
115
- fallback: "6px",
116
- },
117
- {
118
- property: "Shadow",
119
- tokenName: "$shadow-tooltip",
120
- role: "Subtle elevation shadow to lift tooltip above content",
121
- fallback: "0 4px 12px rgba(0,0,0,0.15)",
122
- },
123
- {
124
- property: "Font Family",
125
- tokenName: "$font-family-sans",
126
- role: "Tooltip text typeface matching the system font stack",
127
- fallback: "Inter, system-ui, sans-serif",
128
- },
129
- {
130
- property: "Z-Index",
131
- tokenName: "$z-tooltip",
132
- role: "Stacking order above all page content and below modals",
133
- fallback: "1070",
134
- },
135
- ],
136
-
137
- structureRules: [
138
- "Tooltip renders in a portal at the document root to avoid clipping by parent overflow",
139
- "Arrow element is a rotated square (45°) positioned at the tooltip edge closest to the trigger",
140
- "Tooltip bubble uses padding on all four sides; vertical padding matches $spacing-xs (4px)",
141
- "Text content is a single inline element — no block-level children or interactive elements",
142
- "Positioning is calculated dynamically based on trigger element rect and viewport boundaries",
143
- "Collision detection auto-flips placement (e.g., top → bottom) when space is insufficient",
144
- "Tooltip width is auto-sized to content up to maxWidth, then text wraps",
145
- ],
146
-
147
- typeHierarchyRules: [
148
- "Font size is one step below body text (12px default) — tooltips are supplementary",
149
- "Font weight is Regular (400) — no bold or emphasis within tooltip text",
150
- "Text uses sentence case — capitalize only the first word",
151
- "Line height is 1.4 for comfortable reading when text wraps to multiple lines",
152
- "No rich formatting (bold, italic, links) inside tooltip text — keep it plain",
153
- ],
154
-
155
- interactionRules: [
156
- { event: "Mouse Enter", trigger: "pointerenter on trigger element", action: "Start show delay timer; show tooltip after delayShow ms" },
157
- { event: "Mouse Leave", trigger: "pointerleave from trigger element", action: "Start hide delay timer; hide tooltip after delayHide ms" },
158
- { event: "Focus", trigger: "focusin on trigger element", action: "Show tooltip immediately (no delay) for keyboard users" },
159
- { event: "Blur", trigger: "focusout from trigger element", action: "Hide tooltip immediately" },
160
- { event: "Escape", trigger: "Escape key while tooltip visible", action: "Dismiss tooltip immediately without waiting for delay" },
161
- { event: "Scroll", trigger: "Scroll event on ancestor", action: "Reposition tooltip to maintain alignment; hide if trigger scrolls out of view" },
162
- { event: "Touch", trigger: "Long press on mobile", action: "Show tooltip after 500ms hold; hide on release" },
163
- ],
164
-
165
- contentGuidance: [
166
- "Tooltip text should be a brief label or description — 1 to 2 short sentences maximum",
167
- "Never put essential information in a tooltip — it may be inaccessible to touch and screen reader users",
168
- "Use tooltips for icon-only buttons, truncated text, or supplementary definitions",
169
- "Avoid duplicating the trigger element's visible label — add new information only",
170
- "Do not include interactive content (links, buttons, form fields) inside tooltips",
171
- "Keep text under 80 characters; use a popover for longer content",
172
- ],
173
-
174
- responsiveBehaviour: [
175
- { breakpoint: "Mobile (<768px)", behavior: "Tooltips on hover are inaccessible; use long-press or replace with inline hints" },
176
- { breakpoint: "Tablet (768-1023px)", behavior: "Tooltips work on hover with stylus; ensure touch fallback is available" },
177
- { breakpoint: "Desktop (1024-1439px)", behavior: "Standard hover/focus tooltip behavior; preferred placement honored" },
178
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Tooltip positioning unchanged; max-width prevents overly wide bubbles" },
179
- ],
180
-
181
- accessibilitySpec: {
182
- intro:
183
- "Tooltips provide supplementary information and must be accessible via keyboard and screen readers without requiring hover.",
184
- requirements: [
185
- { requirement: "aria-describedby", level: "A", notes: "Trigger element must reference the tooltip ID via aria-describedby so screen readers announce the hint" },
186
- { requirement: "role='tooltip'", level: "A", notes: "The tooltip container must have role='tooltip' for proper semantic identification" },
187
- { requirement: "Keyboard Dismissal", level: "A", notes: "Escape key must dismiss the tooltip without moving focus" },
188
- { requirement: "Focus Trigger", level: "A", notes: "Tooltip must appear on focus (not just hover) for keyboard-only users" },
189
- { requirement: "Contrast", level: "AA", notes: "Tooltip text to background must meet 4.5:1; tooltip boundary to page must meet 3:1" },
190
- { requirement: "Timing", level: "A", notes: "Tooltip must remain visible while trigger is hovered or focused — no auto-dismiss timer" },
191
- { requirement: "No Interactive Content", level: "A", notes: "Tooltip must not contain focusable or interactive elements; use a popover instead" },
192
- ],
193
- outro: [
194
- "Screen readers should announce the tooltip text as a description of the trigger element",
195
- "Ensure the tooltip does not obscure the trigger element or other critical content",
196
- ],
197
- },
198
-
199
- qaAcceptanceCriteria: [
200
- { check: "Show Delay", platform: "Web", expectedResult: "Tooltip appears after configured delayShow (default 300ms); no instant flash" },
201
- { check: "Hide Delay", platform: "Web", expectedResult: "Tooltip disappears after delayHide (default 100ms) once hover/focus leaves" },
202
- { check: "Placement", platform: "Web", expectedResult: "Tooltip renders at the specified placement (top/bottom/left/right) relative to trigger" },
203
- { check: "Collision Flip", platform: "Web", expectedResult: "Tooltip auto-flips when preferred placement would clip the viewport" },
204
- { check: "Arrow Alignment", platform: "All", expectedResult: "Arrow pointer points directly at the trigger center and matches tooltip background" },
205
- { check: "Keyboard Access", platform: "Web", expectedResult: "Tooltip shows on focus; Escape dismisses; does not trap focus" },
206
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces tooltip text as description of the trigger via aria-describedby" },
207
- { check: "Max Width Wrap", platform: "Web", expectedResult: "Text wraps at maxWidth; tooltip height grows to accommodate wrapped lines" },
208
- { check: "Portal Rendering", platform: "Web", expectedResult: "Tooltip renders in document root portal; not clipped by parent overflow:hidden" },
209
- { check: "Touch Devices", platform: "Mobile", expectedResult: "Long press shows tooltip; release hides it; no hover dependency" },
210
- { check: "Reduced Motion", platform: "Web", expectedResult: "Fade animation disabled when prefers-reduced-motion is set" },
211
- ],
212
-
213
- dos: [
214
- "Use tooltips for short, supplementary hints that clarify an element's purpose",
215
- "Provide tooltips on icon-only buttons with matching aria-label text",
216
- "Keep tooltip text concise — under 80 characters or two short sentences",
217
- "Include a visible arrow pointer connecting the tooltip to its trigger",
218
- "Use a dark background with light text for strong contrast",
219
- "Allow Escape key to dismiss the tooltip at any time",
220
- "Test tooltip positioning near viewport edges to verify collision handling",
221
- ],
222
-
223
- donts: [
224
- "Do not put essential or actionable information inside tooltips",
225
- "Do not include links, buttons, or form elements inside tooltip content",
226
- "Do not use tooltips as a substitute for visible labels or helper text",
227
- "Do not set show delay below 200ms — accidental triggers are disruptive",
228
- "Do not auto-dismiss tooltips on a timer — let the user control visibility",
229
- "Do not rely on hover-only triggers — keyboard and touch users cannot hover",
230
- "Do not allow tooltips to obscure the content they describe",
231
- ],
232
- };
@@ -1,257 +0,0 @@
1
- /**
2
- * treeview.ts — Gold-standard design knowledge for Treeview components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const treeviewKnowledge: ComponentKnowledge = {
7
- description:
8
- "Hierarchical expandable tree | Displays nested parent-child relationships | Supports single and multi-selection with full keyboard navigation",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Expanded",
13
- visualChange: "Chevron icon rotates 90 degrees clockwise; child nodes are revealed with indented layout below the parent",
14
- opacity: "1",
15
- cursorWeb: "pointer",
16
- usage: "Parent node has been opened to show its children — aria-expanded='true'",
17
- },
18
- {
19
- state: "Collapsed",
20
- visualChange: "Chevron icon points to the right (0 degrees); child nodes are hidden from view",
21
- opacity: "1",
22
- cursorWeb: "pointer",
23
- usage: "Parent node is closed — its children are not rendered or are display-none; aria-expanded='false'",
24
- },
25
- {
26
- state: "Selected",
27
- visualChange: "Node row has a tinted background using $treeview-selected-bg; text may use primary accent color",
28
- opacity: "1",
29
- cursorWeb: "pointer",
30
- usage: "Node has been chosen by the user; in multi-select mode a checkbox indicator is shown",
31
- },
32
- {
33
- state: "Disabled",
34
- visualChange: "Node text and icons use muted/disabled tokens; expand/collapse still works but selection is blocked",
35
- opacity: "0.4",
36
- cursorWeb: "not-allowed",
37
- usage: "Individual node is non-selectable due to permissions or unavailability; children may still be accessible",
38
- },
39
- {
40
- state: "Focus",
41
- visualChange: "2px focus ring around the focused node row using $focus-ring token; background may subtly highlight",
42
- opacity: "1",
43
- cursorWeb: "pointer",
44
- usage: "Node receives keyboard focus via Tab entry or arrow key navigation within the tree",
45
- },
46
- ],
47
-
48
- propertyDescriptions: {
49
- data: "Nested array of tree node objects; each node has an id, label, optional icon, optional children array, and optional disabled flag",
50
- selection: "Selection mode — 'single' allows one node selected at a time, 'multi' allows multiple with checkboxes, 'none' disables selection entirely",
51
- expandedKeys: "Controlled array of node IDs that are currently expanded; used for controlled expand/collapse behavior",
52
- onExpand: "Callback fired when a node is expanded or collapsed; receives the node ID and new expanded state",
53
- onSelect: "Callback fired when a node is selected or deselected; receives the node ID and selection state",
54
- size: "Dimensional preset controlling node row height, indent depth, font-size, and icon-size (sm, md, lg)",
55
- defaultExpandedKeys: "Array of node IDs that should be expanded on initial render (uncontrolled mode)",
56
- draggable: "When true, nodes can be reordered via drag-and-drop; fires onMove callback with source and target",
57
- showLines: "When true, renders vertical indent guide lines connecting parent to children for visual hierarchy",
58
- loadOnExpand: "When true, children are loaded asynchronously on expand; shows a spinner in place of children while loading",
59
- },
60
-
61
- sizeSpecifications: [
62
- {
63
- size: "Small",
64
- height: "28px per node",
65
- paddingLR: "8px",
66
- fontSize: "12px",
67
- iconSize: "14px",
68
- borderRadius: "4px",
69
- },
70
- {
71
- size: "Medium",
72
- height: "36px per node",
73
- paddingLR: "12px",
74
- fontSize: "14px",
75
- iconSize: "18px",
76
- borderRadius: "6px",
77
- },
78
- {
79
- size: "Large",
80
- height: "44px per node",
81
- paddingLR: "16px",
82
- fontSize: "16px",
83
- iconSize: "22px",
84
- borderRadius: "8px",
85
- },
86
- ],
87
-
88
- designTokenBindings: [
89
- {
90
- property: "Node Background",
91
- tokenName: "$treeview-node-bg",
92
- role: "Default background for each tree node row",
93
- fallback: "transparent",
94
- },
95
- {
96
- property: "Hover Background",
97
- tokenName: "$treeview-hover-bg",
98
- role: "Background applied on hover for interactive nodes",
99
- fallback: "#F2F4F7",
100
- },
101
- {
102
- property: "Selected Background",
103
- tokenName: "$treeview-selected-bg",
104
- role: "Background tint for selected nodes",
105
- fallback: "#EFF8FF",
106
- },
107
- {
108
- property: "Node Text",
109
- tokenName: "$treeview-node-text",
110
- role: "Primary text color for node labels",
111
- fallback: "#101828",
112
- },
113
- {
114
- property: "Expand Icon",
115
- tokenName: "$treeview-expand-icon",
116
- role: "Color of the chevron/expand toggle icon",
117
- fallback: "#667085",
118
- },
119
- {
120
- property: "Indent Guide",
121
- tokenName: "$treeview-indent-line",
122
- role: "Color of the vertical indent guide lines between parent and children",
123
- fallback: "#E4E7EC",
124
- },
125
- {
126
- property: "Selected Accent",
127
- tokenName: "$treeview-selected-accent",
128
- role: "Accent color for selection indicator (checkmark or left border)",
129
- fallback: "#2563EB",
130
- },
131
- {
132
- property: "Focus Ring",
133
- tokenName: "$focus-ring",
134
- role: "Keyboard focus indicator ring on focused node",
135
- fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
136
- },
137
- {
138
- property: "Indent Width",
139
- tokenName: "$treeview-indent",
140
- role: "Horizontal indent per nesting level",
141
- fallback: "24px",
142
- },
143
- {
144
- property: "Font Family",
145
- tokenName: "$font-family-sans",
146
- role: "Typeface for node labels",
147
- fallback: "Inter, system-ui, sans-serif",
148
- },
149
- ],
150
-
151
- structureRules: [
152
- "Root container has role='tree' and uses vertical Auto Layout with no gap — spacing is handled by node row padding",
153
- "Each node row is a horizontal Auto Layout: indent spacer, expand icon (if parent), optional node icon, label text, optional trailing content",
154
- "Indent spacer width equals nesting depth multiplied by the $treeview-indent token (e.g. depth 2 = 48px)",
155
- "Expand/collapse icon is only rendered for nodes with children; leaf nodes replace it with an equal-width spacer",
156
- "Child nodes are nested inside the parent's vertical stack and are conditionally rendered based on expanded state",
157
- "Multi-select mode adds a checkbox component before the node label; checkbox state mirrors selection state",
158
- "Indent guide lines are absolutely positioned 1px-wide vertical lines from parent expand icon to last child",
159
- "Drag handle appears as a leading grip icon when draggable is true; visible on hover only",
160
- ],
161
-
162
- typeHierarchyRules: [
163
- "Node labels use Regular (400) weight for all items; selected nodes may use Medium (500) for emphasis",
164
- "Font size is consistent across all nesting depths — do not reduce font-size for deeper nodes",
165
- "Labels truncate with ellipsis on overflow; tooltip shows full label on hover for truncated text",
166
- "Expand/collapse icon uses a consistent size regardless of the node label font-size",
167
- ],
168
-
169
- interactionRules: [
170
- { event: "Click Expand Icon", trigger: "pointerup on the chevron/expand toggle", action: "Toggle expanded state of the node; fire onExpand callback" },
171
- { event: "Click Node Label", trigger: "pointerup on the node label or row", action: "Select/deselect the node; fire onSelect callback (if selection != 'none')" },
172
- { event: "Hover", trigger: "pointerenter on a node row", action: "Apply hover background token to the full-width row" },
173
- { event: "Focus", trigger: "Tab enters the tree or arrow key moves focus", action: "Show focus ring on the focused node row" },
174
- { event: "Keydown Arrow Down", trigger: "Down arrow while a node is focused", action: "Move focus to the next visible node (skips collapsed children)" },
175
- { event: "Keydown Arrow Up", trigger: "Up arrow while a node is focused", action: "Move focus to the previous visible node" },
176
- { event: "Keydown Arrow Right", trigger: "Right arrow on a collapsed parent node", action: "Expand the node; if already expanded, move focus to first child" },
177
- { event: "Keydown Arrow Left", trigger: "Left arrow on an expanded parent node", action: "Collapse the node; if already collapsed or on leaf, move focus to parent" },
178
- { event: "Keydown Enter", trigger: "Enter key while a node is focused", action: "Select/activate the focused node (same as click on label)" },
179
- { event: "Keydown Space", trigger: "Space key while a node is focused", action: "Toggle selection on the focused node in multi-select mode" },
180
- { event: "Keydown Home", trigger: "Home key while in tree", action: "Move focus to the first visible node in the tree" },
181
- { event: "Keydown End", trigger: "End key while in tree", action: "Move focus to the last visible node in the tree" },
182
- { event: "Keydown Asterisk", trigger: "* key while a parent node is focused", action: "Expand all sibling nodes at the same level" },
183
- ],
184
-
185
- contentGuidance: [
186
- "Node labels should be concise and descriptive — represent the item clearly (file name, category, section title)",
187
- "Use icons consistently: either all nodes at a level have icons, or none do — avoid mixing",
188
- "Limit nesting depth to 4-5 levels for usability; deeper hierarchies become difficult to navigate",
189
- "Parent nodes with loadable children should show a loading indicator (spinner) during async fetch",
190
- "Use clear expand/collapse affordance — the chevron icon is the standard convention",
191
- "For file-tree patterns, use distinct icons for folders (parent nodes) and files (leaf nodes)",
192
- "Group related items under meaningful parent labels that describe the category or section",
193
- ],
194
-
195
- responsiveBehaviour: [
196
- { breakpoint: "Mobile (<768px)", behavior: "Consider replacing tree with a drill-down navigation pattern; if tree is used, reduce indent width and allow horizontal scroll" },
197
- { breakpoint: "Tablet (768-1023px)", behavior: "Tree fits in sidebar panels; ensure touch targets are at least 44px; indent guides help distinguish depth" },
198
- { breakpoint: "Desktop (1024-1439px)", behavior: "Full tree with standard indent width; ideal for file browsers, settings panels, and navigation sidebars" },
199
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Tree width should be constrained in a sidebar; do not allow the tree to stretch to fill wide content areas" },
200
- ],
201
-
202
- accessibilitySpec: {
203
- intro:
204
- "Treeview is one of the most complex ARIA patterns. It requires precise role assignment, keyboard navigation following the WAI-ARIA TreeView pattern, and correct state management for expanded, selected, and disabled nodes.",
205
- requirements: [
206
- { requirement: "Tree Role", level: "A", notes: "Root container must have role='tree'; each node must have role='treeitem'" },
207
- { requirement: "Expanded State", level: "A", notes: "Parent nodes must have aria-expanded='true' or 'false'; leaf nodes must not have aria-expanded" },
208
- { requirement: "Arrow Key Navigation", level: "A", notes: "Up/Down moves focus between visible nodes; Right expands or enters children; Left collapses or moves to parent" },
209
- { requirement: "Home/End Keys", level: "A", notes: "Home moves focus to first node; End moves to last visible node in the tree" },
210
- { requirement: "Selection State", level: "A", notes: "Selected nodes must have aria-selected='true'; multi-select trees use aria-multiselectable='true' on the root" },
211
- { requirement: "Nesting Structure", level: "A", notes: "Child nodes must be grouped in a role='group' container nested inside the parent treeitem" },
212
- { requirement: "Contrast Ratio", level: "AA", notes: "Node text: 4.5:1; expand icon: 3:1 non-text; selected indicator: 3:1 non-text contrast" },
213
- { requirement: "Touch Target", level: "AA", notes: "Each node row must have at least 44px height for touch interaction; expand icon target at least 24x24px" },
214
- ],
215
- outro: [
216
- "Focus must remain on the correct node after expand/collapse operations — do not reset focus to the root",
217
- "When nodes are loaded asynchronously, use aria-busy='true' on the parent node during loading",
218
- "Type-ahead is recommended: typing a character should move focus to the next node whose label starts with that character",
219
- ],
220
- },
221
-
222
- qaAcceptanceCriteria: [
223
- { check: "Visual Regression", platform: "All", expectedResult: "Tree renders pixel-perfect against baseline for each size variant and nesting depth" },
224
- { check: "Expand/Collapse", platform: "All", expectedResult: "Chevron rotates; children appear/disappear smoothly; aria-expanded updates correctly" },
225
- { check: "Selection State", platform: "All", expectedResult: "Selected nodes show tinted background; aria-selected is true; deselection works" },
226
- { check: "Multi-select", platform: "Web", expectedResult: "Checkboxes appear; Space toggles selection; Ctrl+Click extends selection" },
227
- { check: "Disabled Nodes", platform: "All", expectedResult: "Muted visuals; expand still works; selection is blocked; aria-disabled='true'" },
228
- { check: "Keyboard Down/Up", platform: "Web", expectedResult: "Arrow keys move focus to next/previous visible node; skips collapsed children" },
229
- { check: "Keyboard Right/Left", platform: "Web", expectedResult: "Right expands or enters children; Left collapses or moves to parent; works on all depths" },
230
- { check: "Keyboard Home/End", platform: "Web", expectedResult: "Home focuses first node; End focuses last visible node" },
231
- { check: "Focus Ring", platform: "Web", expectedResult: "Focus ring visible on keyboard navigation; hidden on mouse click (focus-visible)" },
232
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces role 'tree'/'treeitem', expanded state, selected state, level, set size, and position" },
233
- { check: "Indent Guide Lines", platform: "All", expectedResult: "Lines connect parent to children when showLines=true; hidden when false" },
234
- { check: "Async Loading", platform: "Web", expectedResult: "Spinner shown while children load; aria-busy on parent; children appear after fetch" },
235
- { check: "RTL Support", platform: "Web", expectedResult: "Indent direction mirrors; chevron direction swaps; layout alignment correct" },
236
- ],
237
-
238
- dos: [
239
- "Use treeview for hierarchical data: file systems, nested categories, organizational structures",
240
- "Always provide the expand/collapse chevron affordance for parent nodes — do not rely on double-click alone",
241
- "Implement full WAI-ARIA TreeView keyboard pattern including arrow keys, Home, End, and type-ahead",
242
- "Use indent guide lines (showLines) for deep hierarchies to help users track parent-child relationships",
243
- "Pre-expand the most relevant branch on initial load so users see useful content immediately",
244
- "Keep node labels concise and scannable — the hierarchy itself provides context",
245
- "Use consistent icons across the same level of nesting",
246
- ],
247
-
248
- donts: [
249
- "Do not use treeview for flat lists — use a list or menu component instead",
250
- "Do not nest deeper than 5 levels — consider a different navigation pattern for deeply nested data",
251
- "Do not auto-collapse sibling nodes when expanding a node unless explicitly required (accordion tree)",
252
- "Do not use different font sizes for different nesting depths — keep typography consistent",
253
- "Do not render hundreds of nodes without virtualization — performance will degrade significantly",
254
- "Do not make leaf nodes appear as if they are expandable (no chevron on leaf nodes)",
255
- "Do not remove focus from the tree during expand/collapse transitions — focus must remain stable",
256
- ],
257
- };