@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,223 +0,0 @@
1
- /**
2
- * divider.ts — Gold-standard design knowledge for Divider components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const dividerKnowledge: ComponentKnowledge = {
7
- description:
8
- "Horizontal or vertical separator line | Visually divides content sections | Supports solid, dashed, and labeled variants",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Default",
13
- visualChange: "A thin line rendered in the divider color token; no interactive feedback",
14
- opacity: "1",
15
- cursorWeb: "default",
16
- usage: "Standard resting state — divider is a non-interactive decorative or semantic separator",
17
- },
18
- {
19
- state: "With Label",
20
- visualChange: "Line is split into two segments with centered text label between them; label has a background fill matching the surface",
21
- opacity: "1",
22
- cursorWeb: "default",
23
- usage: "Divider carries a textual label such as 'OR', 'Section Title', or a date grouping",
24
- },
25
- {
26
- state: "Decorative",
27
- visualChange: "Identical to default visually; marked as aria-hidden for assistive technologies",
28
- opacity: "1",
29
- cursorWeb: "default",
30
- usage: "Divider is purely visual — it does not represent a semantic content boundary",
31
- },
32
- ],
33
-
34
- propertyDescriptions: {
35
- orientation: "Direction of the divider line — 'horizontal' (default, full-width) or 'vertical' (full-height, used in toolbars and inline layouts)",
36
- type: "Line style — 'solid' (continuous line) or 'dashed' (dashed/dotted pattern)",
37
- spacing: "Vertical margin (horizontal divider) or horizontal margin (vertical divider) applied above and below/left and right; uses spacing tokens",
38
- label: "Optional centered text rendered in the middle of the divider line; splits the line into two segments",
39
- inset: "When true, the divider is indented from the start edge (e.g. aligned with content in a list, not full-width)",
40
- decorative: "When true, the divider has aria-hidden='true' and is not announced by screen readers; when false, uses role='separator'",
41
- color: "Override token for the divider line color; defaults to $divider-color",
42
- thickness: "Line thickness in pixels; defaults to 1px; 2px for emphasis dividers",
43
- },
44
-
45
- sizeSpecifications: [
46
- {
47
- size: "Default",
48
- height: "1px (horizontal) / 100% (vertical)",
49
- paddingLR: "0px",
50
- fontSize: "12px (label only)",
51
- iconSize: "N/A",
52
- borderRadius: "0px",
53
- },
54
- {
55
- size: "Thick",
56
- height: "2px (horizontal) / 100% (vertical)",
57
- paddingLR: "0px",
58
- fontSize: "12px (label only)",
59
- iconSize: "N/A",
60
- borderRadius: "0px",
61
- },
62
- {
63
- size: "Inset",
64
- height: "1px",
65
- paddingLR: "16px start inset",
66
- fontSize: "12px (label only)",
67
- iconSize: "N/A",
68
- borderRadius: "0px",
69
- },
70
- ],
71
-
72
- designTokenBindings: [
73
- {
74
- property: "Line Color",
75
- tokenName: "$divider-color",
76
- role: "Default color for the divider line",
77
- fallback: "#E4E7EC",
78
- },
79
- {
80
- property: "Line Color Subtle",
81
- tokenName: "$divider-color-subtle",
82
- role: "Lighter divider for less prominent separation",
83
- fallback: "#F2F4F7",
84
- },
85
- {
86
- property: "Line Color Strong",
87
- tokenName: "$divider-color-strong",
88
- role: "Darker divider for high-emphasis separation",
89
- fallback: "#D0D5DD",
90
- },
91
- {
92
- property: "Label Text Color",
93
- tokenName: "$divider-label-text",
94
- role: "Text color for the optional centered label",
95
- fallback: "#667085",
96
- },
97
- {
98
- property: "Label Background",
99
- tokenName: "$divider-label-bg",
100
- role: "Background behind the label to mask the line; should match the surface color",
101
- fallback: "#FFFFFF",
102
- },
103
- {
104
- property: "Label Font Family",
105
- tokenName: "$font-family-sans",
106
- role: "Typeface for the optional label text",
107
- fallback: "Inter, system-ui, sans-serif",
108
- },
109
- {
110
- property: "Spacing Default",
111
- tokenName: "$spacing-md",
112
- role: "Default margin above and below a horizontal divider",
113
- fallback: "16px",
114
- },
115
- {
116
- property: "Spacing Compact",
117
- tokenName: "$spacing-sm",
118
- role: "Reduced spacing for compact layouts",
119
- fallback: "8px",
120
- },
121
- {
122
- property: "Spacing Spacious",
123
- tokenName: "$spacing-lg",
124
- role: "Increased spacing for major section breaks",
125
- fallback: "24px",
126
- },
127
- ],
128
-
129
- structureRules: [
130
- "Horizontal divider is a full-width block element with a fixed height (1px or 2px) and background-color fill",
131
- "Vertical divider is an inline or flex-item element with a fixed width (1px or 2px) and auto height matching its container",
132
- "Label variant uses a horizontal Auto Layout with the line as two flex-grow segments and the label centered between them",
133
- "Label text has horizontal padding ($spacing-sm) and a background fill matching the surface to create the visual gap effect",
134
- "Inset divider has a start margin (margin-left in LTR) matching the content indentation of adjacent list items",
135
- "Divider does not have any interactive areas — it is a purely visual or semantic element",
136
- "In Figma, divider is a 1px-height frame with fill-container width; vertical variant is a 1px-width frame with fill-container height",
137
- "Dashed variant uses CSS border-style:dashed or SVG stroke-dasharray for the line pattern",
138
- ],
139
-
140
- typeHierarchyRules: [
141
- "Label text uses Caption size (12px) with Regular (400) weight for subtlety",
142
- "Label text uses uppercase or sentence case depending on context — uppercase for 'OR' separators, sentence case for section titles",
143
- "Label text color should be de-emphasized (secondary/muted) to avoid competing with surrounding content",
144
- "Label text should never wrap — keep labels short (1-3 words maximum)",
145
- ],
146
-
147
- interactionRules: [
148
- { event: "None", trigger: "N/A", action: "Dividers are non-interactive — no hover, click, focus, or keyboard events apply" },
149
- { event: "Resize", trigger: "Parent container width/height changes", action: "Horizontal divider stretches to fill container width; vertical divider stretches to fill container height" },
150
- { event: "Theme Change", trigger: "Light/dark mode toggle", action: "Divider color updates to the resolved value of the $divider-color token for the new theme" },
151
- ],
152
-
153
- contentGuidance: [
154
- "Use dividers sparingly — whitespace alone is often sufficient to separate content sections",
155
- "Horizontal dividers are ideal between list items, form groups, or major content sections",
156
- "Vertical dividers work well in toolbars, header navigation, and inline element groups",
157
- "Labeled dividers are useful for 'OR' separators in forms (e.g. between sign-in methods), date groupings in feeds, or section headers in settings",
158
- "Inset dividers should align with the start of text content in lists, not the leading icon/avatar",
159
- "Do not use dividers inside cards — the card boundary itself provides sufficient separation",
160
- "Use the subtle color variant when the divider should be barely visible (e.g. within dense data tables)",
161
- ],
162
-
163
- responsiveBehaviour: [
164
- { breakpoint: "Mobile (<768px)", behavior: "Full-width horizontal dividers; inset value may reduce; vertical dividers in toolbars remain" },
165
- { breakpoint: "Tablet (768-1023px)", behavior: "Standard behavior; spacing tokens apply as specified" },
166
- { breakpoint: "Desktop (1024-1439px)", behavior: "Standard behavior; dividers respect container max-width constraints" },
167
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Dividers remain within content max-width; do not stretch to full viewport width" },
168
- ],
169
-
170
- accessibilitySpec: {
171
- intro:
172
- "Dividers can be semantic (representing a thematic content break) or decorative (purely visual). The correct ARIA treatment depends on the divider's purpose in context.",
173
- requirements: [
174
- { requirement: "Semantic Role", level: "A", notes: "Semantic dividers must use <hr> element or role='separator' to announce a content boundary to screen readers" },
175
- { requirement: "Decorative Hiding", level: "A", notes: "Decorative dividers must have aria-hidden='true' so they are invisible to assistive technologies" },
176
- { requirement: "Orientation", level: "A", notes: "Vertical separators must have aria-orientation='vertical' when using role='separator'" },
177
- { requirement: "Label Accessibility", level: "A", notes: "Labeled dividers should associate the label text with the separator via aria-label or visible text" },
178
- { requirement: "Contrast Ratio", level: "AA", notes: "Divider line must have at least 3:1 contrast against the adjacent surface (WCAG 1.4.11 non-text contrast)" },
179
- { requirement: "Not Focusable", level: "A", notes: "Dividers must not be in the tab order — they are not interactive elements" },
180
- ],
181
- outro: [
182
- "When a divider is used between sections of a page, the <hr> element is preferred as it provides native semantics without ARIA",
183
- "Decorative dividers within a list should be treated as presentational and excluded from the list item count",
184
- "Test with screen readers to ensure decorative dividers are truly invisible and semantic ones are announced as 'separator'",
185
- ],
186
- },
187
-
188
- qaAcceptanceCriteria: [
189
- { check: "Visual Regression", platform: "All", expectedResult: "Divider renders at correct thickness, color, and spacing for each variant" },
190
- { check: "Horizontal Full-width", platform: "All", expectedResult: "Line spans the full container width; no gaps or overflow" },
191
- { check: "Vertical Full-height", platform: "All", expectedResult: "Line spans the full container height in flex layouts; no collapse to 0px" },
192
- { check: "Inset Alignment", platform: "All", expectedResult: "Inset divider aligns with text content, not leading icon/avatar" },
193
- { check: "Label Rendering", platform: "All", expectedResult: "Label centered between two line segments; background masks the line behind the text" },
194
- { check: "Dashed Style", platform: "All", expectedResult: "Dashed pattern renders consistently across browsers; dash length and gap are uniform" },
195
- { check: "Spacing Tokens", platform: "All", expectedResult: "Margin above and below matches the specified spacing token value" },
196
- { check: "Theme Switching", platform: "Web", expectedResult: "Divider color updates correctly when switching between light and dark themes" },
197
- { check: "Semantic Role", platform: "Web", expectedResult: "Semantic dividers have <hr> or role='separator'; decorative ones have aria-hidden='true'" },
198
- { check: "Screen Reader", platform: "Web", expectedResult: "Semantic dividers announced as 'separator'; decorative dividers not announced" },
199
- { check: "Not Focusable", platform: "Web", expectedResult: "Divider is not reachable via Tab key navigation" },
200
- { check: "Contrast", platform: "All", expectedResult: "Divider line passes 3:1 non-text contrast against adjacent surfaces" },
201
- { check: "RTL Support", platform: "Web", expectedResult: "Inset direction mirrors; label position remains centered; no layout issues" },
202
- ],
203
-
204
- dos: [
205
- "Use horizontal dividers to create clear visual separation between major content sections",
206
- "Use the semantic <hr> element when the divider represents a thematic break in content",
207
- "Use aria-hidden='true' for purely decorative dividers that have no semantic meaning",
208
- "Match the inset value to the text indentation of adjacent content (e.g. list items with leading icons)",
209
- "Use consistent spacing tokens above and below dividers throughout the application",
210
- "Use the subtle color variant for dividers within dense or information-heavy layouts",
211
- "Keep labeled dividers concise — one to three words maximum",
212
- ],
213
-
214
- donts: [
215
- "Do not overuse dividers — whitespace and grouping often provide sufficient visual separation",
216
- "Do not use dividers inside card components — the card border already provides a boundary",
217
- "Do not use thick (2px+) dividers as a styling device — they should be used sparingly for emphasis only",
218
- "Do not make dividers focusable or interactive — they are display-only elements",
219
- "Do not use dividers as the sole means of grouping content — pair with headings or spacing for clarity",
220
- "Do not change divider colors to brand colors unless the design system explicitly defines such tokens",
221
- "Do not use full-width dividers when inset dividers would better align with the content structure",
222
- ],
223
- };
@@ -1,255 +0,0 @@
1
- /**
2
- * drawer.ts — Gold-standard design knowledge for Drawer (slide-in panel) components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const drawerKnowledge: ComponentKnowledge = {
7
- description:
8
- "Slide-in surface panel | Anchored to viewport edge | Secondary content or navigation container",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Closed",
13
- visualChange: "Drawer is fully off-screen; overlay is removed from the DOM or set to display:none",
14
- opacity: "0",
15
- cursorWeb: "default",
16
- usage: "Default resting state — drawer content is not visible and does not block interaction",
17
- },
18
- {
19
- state: "Opening",
20
- visualChange: "Drawer slides in from the anchored edge with eased transition; overlay fades in simultaneously",
21
- opacity: "0 → 1 (animated)",
22
- cursorWeb: "default",
23
- usage: "Transition state triggered by programmatic open call or user action",
24
- },
25
- {
26
- state: "Open",
27
- visualChange: "Drawer is fully visible at its target width/height; overlay covers remaining viewport area",
28
- opacity: "1",
29
- cursorWeb: "default",
30
- usage: "Content is accessible and interactive; focus is trapped within the drawer",
31
- },
32
- {
33
- state: "Closing",
34
- visualChange: "Drawer slides out toward its anchored edge; overlay fades out simultaneously",
35
- opacity: "1 → 0 (animated)",
36
- cursorWeb: "default",
37
- usage: "Transition state triggered by close button, Escape key, or overlay click",
38
- },
39
- {
40
- state: "Focus-Within",
41
- visualChange: "No visual change on the drawer itself; focus ring appears on the focused interactive element inside",
42
- opacity: "1",
43
- cursorWeb: "default",
44
- usage: "An element inside the drawer receives keyboard focus via Tab navigation",
45
- },
46
- ],
47
-
48
- propertyDescriptions: {
49
- side: "Edge from which the drawer slides in — 'left', 'right', or 'bottom'; determines translate direction and anchor position",
50
- size: "Width (for left/right) or height (for bottom) of the drawer panel — accepts 'small' (320px), 'medium' (480px), 'large' (640px), or custom pixel value",
51
- title: "Heading text rendered in the drawer header; provides context for the panel content and is used as the accessible label",
52
- showOverlay: "When true, a semi-transparent backdrop covers the viewport behind the drawer to indicate modal behavior",
53
- closeOnOverlayClick: "When true, clicking the overlay backdrop closes the drawer; should be false for critical flows requiring explicit dismissal",
54
- closeOnEscape: "When true, pressing the Escape key closes the drawer; standard UX expectation for modal-like surfaces",
55
- open: "Controlled boolean that determines whether the drawer is visible; parent component manages this state",
56
- onClose: "Callback invoked when the drawer requests closure via close button, Escape, or overlay click",
57
- children: "React node or slot content rendered inside the drawer body area below the header",
58
- footer: "Optional slot for action buttons (e.g. Save, Cancel) pinned to the bottom of the drawer",
59
- },
60
-
61
- sizeSpecifications: [
62
- {
63
- size: "Small",
64
- height: "100vh",
65
- paddingLR: "16px",
66
- fontSize: "14px",
67
- iconSize: "20px",
68
- borderRadius: "0px",
69
- },
70
- {
71
- size: "Medium",
72
- height: "100vh",
73
- paddingLR: "24px",
74
- fontSize: "14px",
75
- iconSize: "20px",
76
- borderRadius: "0px",
77
- },
78
- {
79
- size: "Large",
80
- height: "100vh",
81
- paddingLR: "32px",
82
- fontSize: "14px",
83
- iconSize: "20px",
84
- borderRadius: "0px",
85
- },
86
- {
87
- size: "Bottom Sheet",
88
- height: "auto (max 80vh)",
89
- paddingLR: "24px",
90
- fontSize: "14px",
91
- iconSize: "20px",
92
- borderRadius: "12px 12px 0 0",
93
- },
94
- ],
95
-
96
- designTokenBindings: [
97
- {
98
- property: "Background",
99
- tokenName: "$drawer-surface-bg",
100
- role: "Drawer panel background color",
101
- fallback: "#FFFFFF",
102
- },
103
- {
104
- property: "Overlay",
105
- tokenName: "$overlay-bg",
106
- role: "Semi-transparent backdrop behind the drawer",
107
- fallback: "rgba(0, 0, 0, 0.5)",
108
- },
109
- {
110
- property: "Header Text",
111
- tokenName: "$drawer-title-color",
112
- role: "Title text color in the drawer header",
113
- fallback: "#101828",
114
- },
115
- {
116
- property: "Border",
117
- tokenName: "$drawer-border",
118
- role: "Subtle border on the leading edge opposite to the anchor side",
119
- fallback: "#E4E7EC",
120
- },
121
- {
122
- property: "Shadow",
123
- tokenName: "$shadow-drawer",
124
- role: "Elevation shadow cast by the drawer panel onto the page content",
125
- fallback: "-4px 0 24px rgba(0, 0, 0, 0.12)",
126
- },
127
- {
128
- property: "Close Icon",
129
- tokenName: "$icon-secondary",
130
- role: "Color of the close (X) button icon in the header",
131
- fallback: "#667085",
132
- },
133
- {
134
- property: "Transition Duration",
135
- tokenName: "$transition-drawer",
136
- role: "Slide animation duration for open and close",
137
- fallback: "300ms ease-in-out",
138
- },
139
- {
140
- property: "Focus Ring",
141
- tokenName: "$focus-ring",
142
- role: "Keyboard focus indicator for interactive elements inside the drawer",
143
- fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
144
- },
145
- {
146
- property: "Z-Index",
147
- tokenName: "$z-drawer",
148
- role: "Stacking order to ensure drawer sits above page content but below alerts",
149
- fallback: "1000",
150
- },
151
- ],
152
-
153
- structureRules: [
154
- "Drawer is rendered as a fixed-position element anchored to the specified viewport edge",
155
- "Container uses vertical Auto Layout: Header → Body (scrollable) → Footer (optional, pinned)",
156
- "Header contains title text (left-aligned) and close button (right-aligned) in a horizontal row",
157
- "Body area has overflow-y: auto to handle content taller than the viewport",
158
- "Footer is sticky to the bottom and separated from the body by a subtle top border",
159
- "Overlay is a sibling element rendered behind the drawer with position: fixed covering the full viewport",
160
- "When side is 'bottom', the drawer anchors to the bottom edge and uses border-radius on top corners only",
161
- "Drawer width for left/right should never exceed 90vw to prevent fully covering the trigger page",
162
- "Scroll lock is applied to the document body when the drawer is open to prevent background scrolling",
163
- ],
164
-
165
- typeHierarchyRules: [
166
- "Title uses heading level appropriate to page context (typically h2) with font-weight 600 (SemiBold)",
167
- "Body text follows standard body typography — 14px/20px regular weight",
168
- "Footer action buttons follow the standard button typography rules",
169
- "Section headings within the drawer body use 12px uppercase labels or 14px SemiBold depending on DS",
170
- ],
171
-
172
- interactionRules: [
173
- { event: "Open", trigger: "Programmatic call or trigger button click", action: "Drawer slides in from the anchored edge; overlay fades in; focus moves to the first focusable element or close button" },
174
- { event: "Close (Button)", trigger: "Click/tap on close (X) button in header", action: "Drawer slides out; overlay fades out; focus returns to the element that triggered the drawer" },
175
- { event: "Close (Escape)", trigger: "Escape key pressed while drawer is open", action: "If closeOnEscape is true, drawer closes and focus returns to trigger element" },
176
- { event: "Close (Overlay)", trigger: "Click/tap on the overlay backdrop", action: "If closeOnOverlayClick is true, drawer closes and focus returns to trigger element" },
177
- { event: "Tab Navigation", trigger: "Tab key while drawer is open", action: "Focus cycles through interactive elements inside the drawer — focus trap prevents escape to background" },
178
- { event: "Swipe (Mobile)", trigger: "Horizontal swipe in the direction of the anchor edge", action: "Drawer begins closing if swipe distance exceeds threshold (50% of drawer width)" },
179
- { event: "Scroll", trigger: "Scroll inside the drawer body", action: "Body content scrolls vertically; header and footer remain fixed" },
180
- ],
181
-
182
- contentGuidance: [
183
- "Use drawers for secondary tasks that relate to the main page content — filters, settings, details panels",
184
- "Title should clearly describe the drawer purpose: 'Filter Results', 'User Details', 'Settings'",
185
- "Keep drawer content focused — if it requires extensive interaction, consider a full page instead",
186
- "Footer actions should follow the button hierarchy: primary action on the right, secondary on the left",
187
- "Avoid nesting drawers — if the content requires a sub-panel, use an accordion or inline expansion",
188
- "Provide a visible close mechanism (X button) in addition to Escape and overlay click",
189
- "For forms inside drawers, warn users about unsaved changes before allowing close",
190
- ],
191
-
192
- responsiveBehaviour: [
193
- { breakpoint: "Mobile (<768px)", behavior: "Left/right drawers expand to full viewport width (100vw); bottom drawers remain partial height with drag handle" },
194
- { breakpoint: "Tablet (768-1023px)", behavior: "Drawers use their configured size up to 80vw maximum; overlay is always shown" },
195
- { breakpoint: "Desktop (1024-1439px)", behavior: "Standard drawer sizes apply; overlay can be optional for persistent/pinned drawers" },
196
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Drawer sizes remain fixed — do not scale with viewport; consider persistent sidebar pattern instead" },
197
- ],
198
-
199
- accessibilitySpec: {
200
- intro:
201
- "Drawers function as modal dialogs anchored to viewport edges. Proper ARIA roles, focus management, and keyboard interaction are essential for screen reader and keyboard-only users.",
202
- requirements: [
203
- { requirement: "Role", level: "A", notes: "Drawer container must have role='dialog' and aria-modal='true' when overlay is shown" },
204
- { requirement: "Accessible Name", level: "A", notes: "Use aria-labelledby pointing to the title element, or aria-label if no visible title" },
205
- { requirement: "Focus Trap", level: "A", notes: "Tab and Shift+Tab must cycle within the drawer; focus must not escape to background content" },
206
- { requirement: "Focus on Open", level: "A", notes: "On open, move focus to the first focusable element or the close button" },
207
- { requirement: "Focus on Close", level: "A", notes: "On close, return focus to the element that triggered the drawer" },
208
- { requirement: "Escape to Close", level: "A", notes: "Pressing Escape must close the drawer when closeOnEscape is true" },
209
- { requirement: "Scroll Lock", level: "AA", notes: "Background content must not scroll while the drawer is open; use aria-hidden='true' on main content" },
210
- { requirement: "Contrast", level: "AA", notes: "All text inside the drawer must meet 4.5:1 contrast ratio; close icon must meet 3:1 non-text contrast" },
211
- { requirement: "Reduced Motion", level: "AAA", notes: "Respect prefers-reduced-motion by disabling slide animation and showing/hiding instantly" },
212
- ],
213
- outro: [
214
- "Announce drawer open/close to screen readers using aria-live or by managing focus",
215
- "Ensure the overlay is not focusable — it should only be a click target for dismissal",
216
- "Test with VoiceOver, NVDA, and JAWS to verify focus trap and announcement behavior",
217
- ],
218
- },
219
-
220
- qaAcceptanceCriteria: [
221
- { check: "Open Animation", platform: "Web", expectedResult: "Drawer slides in from the correct edge with smooth eased transition" },
222
- { check: "Close Animation", platform: "Web", expectedResult: "Drawer slides out toward its anchor edge; overlay fades out simultaneously" },
223
- { check: "Overlay Click", platform: "Web", expectedResult: "Clicking overlay closes drawer when closeOnOverlayClick is true; does nothing when false" },
224
- { check: "Escape Key", platform: "Web", expectedResult: "Pressing Escape closes drawer when closeOnEscape is true" },
225
- { check: "Focus Trap", platform: "Web", expectedResult: "Tab cycling stays within drawer boundaries; Shift+Tab wraps to last element" },
226
- { check: "Focus Restoration", platform: "Web", expectedResult: "Focus returns to trigger element after drawer closes" },
227
- { check: "Scroll Lock", platform: "Web", expectedResult: "Background page does not scroll while drawer is open" },
228
- { check: "Body Scroll", platform: "Web", expectedResult: "Long content inside drawer scrolls vertically; header/footer remain fixed" },
229
- { check: "Side Variants", platform: "All", expectedResult: "Drawer renders correctly from left, right, and bottom edges" },
230
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces 'dialog' role, title, and interactive elements in reading order" },
231
- { check: "Responsive Width", platform: "Mobile", expectedResult: "Drawer expands to full width on mobile viewports" },
232
- { check: "Reduced Motion", platform: "Web", expectedResult: "Animation is disabled when prefers-reduced-motion is set" },
233
- { check: "RTL Support", platform: "Web", expectedResult: "Left drawer becomes right drawer and vice versa in RTL locales" },
234
- ],
235
-
236
- dos: [
237
- "Use drawers for contextual secondary content that relates to the current page",
238
- "Always provide a visible close button in the drawer header",
239
- "Return focus to the trigger element when the drawer closes",
240
- "Implement a proper focus trap to prevent keyboard users from reaching background content",
241
- "Use the overlay to communicate modality and provide a click-to-dismiss affordance",
242
- "Apply scroll lock on the document body to prevent background scrolling",
243
- "Use consistent drawer sizes across the application for visual predictability",
244
- ],
245
-
246
- donts: [
247
- "Do not use drawers for primary content that should be on the main page",
248
- "Do not nest drawers inside other drawers — use in-panel navigation instead",
249
- "Do not omit the close button — relying solely on Escape or overlay click is insufficient",
250
- "Do not allow background content to be interactive while the drawer is open",
251
- "Do not use drawers for simple confirmations — use a modal dialog instead",
252
- "Do not make drawers wider than 90% of the viewport width",
253
- "Do not skip focus management — failing to trap focus breaks keyboard accessibility",
254
- ],
255
- };