@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,256 +0,0 @@
1
- /**
2
- * skeleton.ts — Gold-standard design knowledge for Skeleton components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const skeletonKnowledge: ComponentKnowledge = {
7
- description:
8
- "Loading placeholder | Previews the shape and layout of content before it loads | Supports text, circle, rectangle, and card patterns with shimmer or pulse animation",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Default",
13
- visualChange: "Placeholder shapes rendered in a neutral gray fill with animated shimmer or pulse effect",
14
- opacity: "1",
15
- cursorWeb: "default",
16
- usage: "Content is loading — skeleton approximates the final layout to reduce perceived wait time",
17
- },
18
- {
19
- state: "Loaded",
20
- visualChange: "Skeleton elements are removed and replaced by actual content; transition may include a brief fade-in",
21
- opacity: "1",
22
- cursorWeb: "default",
23
- usage: "Data has finished loading — skeleton is no longer needed and must be removed from the DOM or hidden",
24
- },
25
- {
26
- state: "Error",
27
- visualChange: "Skeleton may remain briefly before being replaced by an error state or empty state component",
28
- opacity: "1",
29
- cursorWeb: "default",
30
- usage: "Data fetch failed — skeleton should be replaced with an error message, not left indefinitely",
31
- },
32
- ],
33
-
34
- propertyDescriptions: {
35
- type: "Shape variant — 'text' (rectangular bars simulating text lines), 'circle' (round placeholder for avatars), 'rect' (generic rectangle), 'card' (full card layout with multiple placeholder elements)",
36
- animation: "Animation style — 'shimmer' (left-to-right gradient sweep) or 'pulse' (opacity fade in/out)",
37
- width: "Width of the skeleton element; can be a fixed value (e.g. '200px'), percentage ('100%'), or 'auto' to match parent",
38
- height: "Height of the skeleton element; for text type, this is the line height; for circle, this equals width",
39
- lines: "Number of text lines to render (text type only); last line is typically shorter (75% width) to simulate natural text",
40
- borderRadius: "Corner rounding of the skeleton shape; circle type forces 50%; text and rect use small radius; card uses card radius",
41
- speed: "Animation cycle duration in milliseconds; controls how fast the shimmer or pulse repeats; default 1500ms",
42
- count: "Number of skeleton instances to render in a repeated layout (e.g. 3 list item skeletons)",
43
- },
44
-
45
- sizeSpecifications: [
46
- {
47
- size: "Text Line",
48
- height: "12-16px per line",
49
- paddingLR: "0px",
50
- fontSize: "N/A",
51
- iconSize: "N/A",
52
- borderRadius: "4px",
53
- },
54
- {
55
- size: "Circle Small",
56
- height: "32px",
57
- paddingLR: "0px",
58
- fontSize: "N/A",
59
- iconSize: "N/A",
60
- borderRadius: "50%",
61
- },
62
- {
63
- size: "Circle Medium",
64
- height: "40px",
65
- paddingLR: "0px",
66
- fontSize: "N/A",
67
- iconSize: "N/A",
68
- borderRadius: "50%",
69
- },
70
- {
71
- size: "Circle Large",
72
- height: "48px",
73
- paddingLR: "0px",
74
- fontSize: "N/A",
75
- iconSize: "N/A",
76
- borderRadius: "50%",
77
- },
78
- {
79
- size: "Rectangle",
80
- height: "variable",
81
- paddingLR: "0px",
82
- fontSize: "N/A",
83
- iconSize: "N/A",
84
- borderRadius: "6px",
85
- },
86
- {
87
- size: "Card",
88
- height: "variable",
89
- paddingLR: "16px internal",
90
- fontSize: "N/A",
91
- iconSize: "N/A",
92
- borderRadius: "8px",
93
- },
94
- ],
95
-
96
- designTokenBindings: [
97
- {
98
- property: "Base Color",
99
- tokenName: "$skeleton-base",
100
- role: "Static background fill for the skeleton placeholder shape",
101
- fallback: "#E4E7EC",
102
- },
103
- {
104
- property: "Shimmer Highlight",
105
- tokenName: "$skeleton-shimmer",
106
- role: "Lighter color used for the shimmer gradient sweep highlight",
107
- fallback: "#F2F4F7",
108
- },
109
- {
110
- property: "Pulse Min Opacity",
111
- tokenName: "$skeleton-pulse-min",
112
- role: "Minimum opacity during the pulse animation cycle",
113
- fallback: "0.4",
114
- },
115
- {
116
- property: "Pulse Max Opacity",
117
- tokenName: "$skeleton-pulse-max",
118
- role: "Maximum opacity during the pulse animation cycle",
119
- fallback: "1",
120
- },
121
- {
122
- property: "Animation Duration",
123
- tokenName: "$skeleton-duration",
124
- role: "Duration of one full shimmer or pulse animation cycle",
125
- fallback: "1500ms",
126
- },
127
- {
128
- property: "Animation Easing",
129
- tokenName: "$skeleton-easing",
130
- role: "Easing function for the animation; linear for shimmer, ease-in-out for pulse",
131
- fallback: "linear",
132
- },
133
- {
134
- property: "Border Radius Text",
135
- tokenName: "$radius-sm",
136
- role: "Corner rounding for text line skeletons",
137
- fallback: "4px",
138
- },
139
- {
140
- property: "Border Radius Rect",
141
- tokenName: "$radius-md",
142
- role: "Corner rounding for rectangle skeletons",
143
- fallback: "6px",
144
- },
145
- {
146
- property: "Border Radius Card",
147
- tokenName: "$radius-card",
148
- role: "Corner rounding for card skeleton matching actual card component",
149
- fallback: "8px",
150
- },
151
- {
152
- property: "Spacing Between Lines",
153
- tokenName: "$spacing-xs",
154
- role: "Vertical gap between text line skeletons",
155
- fallback: "8px",
156
- },
157
- ],
158
-
159
- structureRules: [
160
- "Each skeleton element is a simple div with background-color and optional border-radius — no text content or interactive elements",
161
- "Text type renders multiple horizontal bars stacked vertically with $spacing-xs gap between lines",
162
- "The last text line should be 60-75% width to simulate the natural end of a text paragraph",
163
- "Circle type uses equal width and height with border-radius 50% to form a perfect circle",
164
- "Card type composes multiple skeleton elements: a rect for the image area, circle for avatar, and text lines for content",
165
- "Shimmer animation uses a CSS gradient that translates from left to right across the element",
166
- "Pulse animation uses a CSS keyframe that oscillates opacity between $skeleton-pulse-min and $skeleton-pulse-max",
167
- "Skeleton elements should match the approximate dimensions and layout of the content they replace to prevent layout shift",
168
- "When count > 1, render multiple skeleton instances with the same layout as the final repeated content (e.g. list items)",
169
- ],
170
-
171
- typeHierarchyRules: [
172
- "Skeleton has no text content — all typography rules are N/A",
173
- "Text line skeleton height should approximate the font-size + line-height of the content it replaces",
174
- "Heading skeleton lines should be taller and wider than body text skeleton lines to match visual hierarchy",
175
- "Label skeleton lines should be shorter in width than body text lines to approximate label length",
176
- ],
177
-
178
- interactionRules: [
179
- { event: "None", trigger: "N/A", action: "Skeleton elements are non-interactive — no hover, click, focus, or keyboard events" },
180
- { event: "Content Load", trigger: "Data becomes available", action: "Replace skeleton with actual content; optionally animate the transition with a fade-in" },
181
- { event: "Prefers Reduced Motion", trigger: "User OS setting prefers-reduced-motion: reduce", action: "Disable shimmer/pulse animation; show static skeleton with base color only" },
182
- { event: "Timeout", trigger: "Content fails to load within a reasonable time", action: "Replace skeleton with an error state or retry action — do not leave skeleton indefinitely" },
183
- ],
184
-
185
- contentGuidance: [
186
- "Use skeleton loading instead of spinners when the layout of the incoming content is predictable",
187
- "Match skeleton shapes to the actual content layout as closely as possible to reduce layout shift on load",
188
- "Use text type skeletons for paragraphs, descriptions, and data fields with known line counts",
189
- "Use circle type skeletons for avatars and profile images",
190
- "Use rect type skeletons for images, thumbnails, and custom-sized content blocks",
191
- "Use card type skeletons for card components, combining image, avatar, and text placeholders",
192
- "Always set a loading timeout — never leave skeletons displayed indefinitely if content fails to load",
193
- "Prefer shimmer animation for primary content areas; pulse for smaller or secondary elements",
194
- ],
195
-
196
- responsiveBehaviour: [
197
- { breakpoint: "Mobile (<768px)", behavior: "Skeleton widths adapt to container; text lines are full-width; circle sizes may reduce to sm" },
198
- { breakpoint: "Tablet (768-1023px)", behavior: "Standard skeleton layout; card skeletons may shift from grid to stack" },
199
- { breakpoint: "Desktop (1024-1439px)", behavior: "Full skeleton layout matching the final content grid; multiple card skeletons in a row" },
200
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Skeleton layout respects content max-width constraints; does not stretch to fill viewport" },
201
- ],
202
-
203
- accessibilitySpec: {
204
- intro:
205
- "Skeleton elements must be invisible to assistive technologies while the loading state is clearly communicated to screen readers through the parent container's ARIA attributes.",
206
- requirements: [
207
- { requirement: "Aria Busy", level: "A", notes: "The parent container of skeleton content must have aria-busy='true' while loading, removed when content appears" },
208
- { requirement: "Aria Hidden", level: "A", notes: "Individual skeleton elements must have aria-hidden='true' so they are not announced by screen readers" },
209
- { requirement: "Live Region", level: "AA", notes: "An aria-live='polite' region should announce when content has finished loading (e.g. 'Content loaded')" },
210
- { requirement: "Reduced Motion", level: "AA", notes: "Animation must respect prefers-reduced-motion media query; show static skeleton when motion is reduced" },
211
- { requirement: "Loading Announcement", level: "A", notes: "Screen readers should be informed that content is loading via aria-busy or a visually hidden 'Loading...' text" },
212
- { requirement: "Not Focusable", level: "A", notes: "Skeleton elements must not be in the tab order — they are placeholder visuals only" },
213
- ],
214
- outro: [
215
- "When skeleton is replaced by content, ensure focus management is handled correctly — focus should move to the first interactive element of the loaded content if triggered by a user action",
216
- "Do not use skeleton as the only loading indicator for critical actions — pair with a screen reader announcement",
217
- "Test with screen readers to verify that skeletons are truly invisible and the loading state is communicated through the parent aria-busy",
218
- ],
219
- },
220
-
221
- qaAcceptanceCriteria: [
222
- { check: "Visual Regression", platform: "All", expectedResult: "Skeleton shapes render at correct dimensions, color, and border-radius for each type" },
223
- { check: "Shimmer Animation", platform: "Web", expectedResult: "Gradient sweeps left-to-right smoothly; animation loops infinitely; no visual glitches" },
224
- { check: "Pulse Animation", platform: "Web", expectedResult: "Opacity oscillates between min and max values; timing is smooth with ease-in-out" },
225
- { check: "Reduced Motion", platform: "Web", expectedResult: "Animation disabled when prefers-reduced-motion: reduce is set; static skeleton displayed" },
226
- { check: "Text Line Layout", platform: "All", expectedResult: "Multiple lines stacked with correct spacing; last line is shorter (60-75% width)" },
227
- { check: "Circle Shape", platform: "All", expectedResult: "Perfect circle rendered; width equals height; border-radius is 50%" },
228
- { check: "Card Composition", platform: "All", expectedResult: "Card skeleton includes image rect, avatar circle, and text lines in correct layout" },
229
- { check: "Content Replacement", platform: "Web", expectedResult: "Skeleton removed cleanly when data loads; no layout shift between skeleton and content" },
230
- { check: "Aria Busy", platform: "Web", expectedResult: "Parent container has aria-busy='true' during loading; removed after content appears" },
231
- { check: "Aria Hidden", platform: "Web", expectedResult: "Skeleton elements have aria-hidden='true'; not announced by screen readers" },
232
- { check: "Screen Reader", platform: "Web", expectedResult: "Loading state announced; 'Content loaded' announced when skeleton is replaced" },
233
- { check: "Not Focusable", platform: "Web", expectedResult: "Tab key skips all skeleton elements; no focus trap during loading" },
234
- { check: "Timeout Handling", platform: "All", expectedResult: "Error state or retry action displayed if content does not load within timeout" },
235
- ],
236
-
237
- dos: [
238
- "Use skeleton loading for predictable content layouts where the shape of the final content is known",
239
- "Match skeleton dimensions to the actual content as closely as possible to minimize layout shift",
240
- "Set aria-busy='true' on the parent container while skeleton is visible",
241
- "Mark individual skeleton elements with aria-hidden='true'",
242
- "Respect prefers-reduced-motion by disabling shimmer/pulse animation for users who prefer reduced motion",
243
- "Use consistent animation speed across all skeletons on the same page for visual cohesion",
244
- "Always provide a timeout and fallback for skeleton states — never display indefinitely",
245
- ],
246
-
247
- donts: [
248
- "Do not use skeleton for content with unpredictable layouts — use a spinner or progress indicator instead",
249
- "Do not make skeleton elements focusable or interactive — they are visual placeholders only",
250
- "Do not leave skeletons visible indefinitely — always transition to content, error, or empty state",
251
- "Do not animate skeleton elements when the user has prefers-reduced-motion enabled",
252
- "Do not use skeleton as a design element or decorative pattern — it is strictly a loading indicator",
253
- "Do not render hundreds of skeleton elements simultaneously — virtualize or limit to visible viewport",
254
- "Do not place skeleton elements inside aria-live regions directly — use the parent container's aria-busy instead",
255
- ],
256
- };
@@ -1,232 +0,0 @@
1
- /**
2
- * slider.ts — Gold-standard design knowledge for Slider components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const sliderKnowledge: ComponentKnowledge = {
7
- description:
8
- "Continuous value selector | Range input control | Numeric value adjuster",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Default",
13
- visualChange: "Track bar with filled portion and thumb positioned at current value",
14
- opacity: "1",
15
- cursorWeb: "pointer",
16
- usage: "Resting state — slider is interactive and displays the current value",
17
- },
18
- {
19
- state: "Hover",
20
- visualChange: "Thumb scales up slightly (1.15x) and gains a subtle shadow; track highlight brightens",
21
- opacity: "1",
22
- cursorWeb: "grab",
23
- usage: "Mouse cursor enters the thumb or track hit area",
24
- },
25
- {
26
- state: "Active / Dragging",
27
- visualChange: "Thumb scales to 1.2x with pronounced shadow; value tooltip appears above thumb",
28
- opacity: "1",
29
- cursorWeb: "grabbing",
30
- usage: "User is actively dragging the thumb along the track",
31
- },
32
- {
33
- state: "Focus",
34
- visualChange: "2px focus ring around the thumb element, offset by 2px",
35
- opacity: "1",
36
- cursorWeb: "pointer",
37
- usage: "Thumb receives keyboard focus via Tab key",
38
- },
39
- {
40
- state: "Disabled",
41
- visualChange: "Track, fill, and thumb switch to muted/disabled tokens; no interaction possible",
42
- opacity: "0.4",
43
- cursorWeb: "not-allowed",
44
- usage: "Slider value cannot be changed due to form state or permissions",
45
- },
46
- {
47
- state: "Error",
48
- visualChange: "Track or thumb border switches to error token; helper text shows validation message",
49
- opacity: "1",
50
- cursorWeb: "pointer",
51
- usage: "Current value is outside an acceptable range or fails validation",
52
- },
53
- ],
54
-
55
- propertyDescriptions: {
56
- value: "Current numeric value of the slider; must be between min and max",
57
- min: "Minimum allowed value — the left/bottom end of the track",
58
- max: "Maximum allowed value — the right/top end of the track",
59
- step: "Increment amount for each keyboard arrow press or tick mark; 0 allows continuous values",
60
- disabled: "When true the slider is non-interactive: muted visuals, aria-disabled='true'",
61
- showValue: "When true, a label or tooltip displays the current numeric value near the thumb",
62
- range: "When true, two thumbs define a value range (min-thumb and max-thumb) instead of a single value",
63
- },
64
-
65
- sizeSpecifications: [
66
- {
67
- size: "Small",
68
- height: "24px",
69
- paddingLR: "8px",
70
- fontSize: "11px",
71
- iconSize: "12px",
72
- borderRadius: "999px",
73
- },
74
- {
75
- size: "Medium",
76
- height: "32px",
77
- paddingLR: "12px",
78
- fontSize: "12px",
79
- iconSize: "16px",
80
- borderRadius: "999px",
81
- },
82
- {
83
- size: "Large",
84
- height: "40px",
85
- paddingLR: "16px",
86
- fontSize: "14px",
87
- iconSize: "20px",
88
- borderRadius: "999px",
89
- },
90
- ],
91
-
92
- designTokenBindings: [
93
- {
94
- property: "Track Background",
95
- tokenName: "$slider-track-bg",
96
- role: "Unfilled portion of the track bar",
97
- fallback: "#E4E7EC",
98
- },
99
- {
100
- property: "Track Fill",
101
- tokenName: "$slider-track-fill",
102
- role: "Filled/active portion of the track from min to current value",
103
- fallback: "#2563EB",
104
- },
105
- {
106
- property: "Thumb Background",
107
- tokenName: "$slider-thumb-bg",
108
- role: "Circular draggable handle fill color",
109
- fallback: "#FFFFFF",
110
- },
111
- {
112
- property: "Thumb Border",
113
- tokenName: "$slider-thumb-border",
114
- role: "Border around the thumb for definition against track and page",
115
- fallback: "#2563EB",
116
- },
117
- {
118
- property: "Thumb Shadow",
119
- tokenName: "$shadow-slider-thumb",
120
- role: "Elevation shadow on the thumb during hover and drag",
121
- fallback: "0 2px 6px rgba(0,0,0,0.15)",
122
- },
123
- {
124
- property: "Focus Ring",
125
- tokenName: "$focus-ring",
126
- role: "Keyboard focus indicator around the thumb",
127
- fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
128
- },
129
- {
130
- property: "Value Label",
131
- tokenName: "$slider-value-text",
132
- role: "Text color for the current value label or tooltip",
133
- fallback: "#344054",
134
- },
135
- ],
136
-
137
- structureRules: [
138
- "Track is a horizontal bar with border-radius 999px (fully rounded); height is 4px (sm), 6px (md), or 8px (lg)",
139
- "Thumb is a circle centered vertically on the track; diameter is 16px (sm), 20px (md), or 24px (lg)",
140
- "Fill region extends from the track start (min) to the thumb center position",
141
- "Value tooltip floats above the thumb during drag; connected by a small arrow pointer",
142
- "Dual-thumb range mode places two thumbs on the track; fill region spans between them",
143
- "Tick marks are evenly spaced vertical lines on the track when step is defined and showTicks is true",
144
- "Min and max labels are positioned at the track endpoints below the bar",
145
- ],
146
-
147
- typeHierarchyRules: [
148
- "Value label uses Tabular Nums (monospaced digits) to prevent layout shift as numbers change",
149
- "Min/max labels use Regular weight (400) at a font-size one step below the value label",
150
- "Value tooltip text uses Medium weight (500) on a dark background",
151
- "Font variant: tabular-nums ensures digit columns stay aligned during drag",
152
- "Labels use sentence case; units (%, px, etc.) are appended after a thin space",
153
- ],
154
-
155
- interactionRules: [
156
- { event: "Drag", trigger: "pointerdown on thumb then pointermove", action: "Update value proportionally to horizontal pointer position along track" },
157
- { event: "Track Click", trigger: "pointerup on track (not thumb)", action: "Snap thumb to clicked position; update value immediately" },
158
- { event: "Arrow Right/Up", trigger: "Right or Up arrow while focused", action: "Increment value by one step; clamp at max" },
159
- { event: "Arrow Left/Down", trigger: "Left or Down arrow while focused", action: "Decrement value by one step; clamp at min" },
160
- { event: "Home", trigger: "Home key while focused", action: "Set value to min" },
161
- { event: "End", trigger: "End key while focused", action: "Set value to max" },
162
- { event: "Page Up/Down", trigger: "PageUp or PageDown while focused", action: "Increment or decrement by 10% of the range" },
163
- ],
164
-
165
- contentGuidance: [
166
- "Always show min and max labels so users understand the value range",
167
- "Display the current numeric value near the thumb or in an adjacent text field",
168
- "Pair the slider with an input field for users who prefer typing exact values",
169
- "Use clear units of measurement (%, px, ms) appended to the value",
170
- "Provide a descriptive label above the slider explaining what the value controls",
171
- "For range sliders, label both the min-thumb and max-thumb values clearly",
172
- ],
173
-
174
- responsiveBehaviour: [
175
- { breakpoint: "Mobile (<768px)", behavior: "Slider fills full container width; thumb size increases to 28px for touch; value tooltip shown during drag" },
176
- { breakpoint: "Tablet (768-1023px)", behavior: "Slider spans available width within form layout; standard thumb size" },
177
- { breakpoint: "Desktop (1024-1439px)", behavior: "Slider constrained by parent container; hover states fully active" },
178
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Slider max-width capped to prevent overly long tracks (~480px)" },
179
- ],
180
-
181
- accessibilitySpec: {
182
- intro:
183
- "Sliders must communicate their value, range, and orientation to assistive technology. Full keyboard control is required.",
184
- requirements: [
185
- { requirement: "role='slider'", level: "A", notes: "The thumb element must have role='slider' for screen reader identification" },
186
- { requirement: "aria-valuenow", level: "A", notes: "Must reflect the current numeric value of the slider in real time" },
187
- { requirement: "aria-valuemin / aria-valuemax", level: "A", notes: "Define the permissible range so screen readers can announce bounds" },
188
- { requirement: "aria-valuetext", level: "A", notes: "Provide a human-readable value string when the numeric value alone is insufficient (e.g., '50%')" },
189
- { requirement: "Keyboard Control", level: "A", notes: "Arrow keys adjust by step; Home/End jump to min/max; PageUp/PageDown by 10%" },
190
- { requirement: "Contrast", level: "AA", notes: "Thumb boundary must meet 3:1 against track and page; fill color must meet 3:1 against track" },
191
- { requirement: "Touch Target", level: "AA", notes: "Thumb touch target is at least 44x44px regardless of visual size" },
192
- ],
193
- outro: [
194
- "For dual-thumb range sliders, each thumb must be independently focusable with its own aria-valuenow",
195
- "Announce value changes to screen readers using aria-live or by updating aria-valuenow during drag",
196
- ],
197
- },
198
-
199
- qaAcceptanceCriteria: [
200
- { check: "Drag Tracking", platform: "Web", expectedResult: "Thumb follows pointer precisely during drag; value updates in real time" },
201
- { check: "Track Click", platform: "Web", expectedResult: "Clicking the track snaps thumb to click position; no animation delay" },
202
- { check: "Keyboard Step", platform: "Web", expectedResult: "Arrow keys increment/decrement by configured step; Home/End reach min/max" },
203
- { check: "Value Clamping", platform: "All", expectedResult: "Value never exceeds min or max bounds via any input method" },
204
- { check: "Range Mode", platform: "All", expectedResult: "Two thumbs independently draggable; cannot cross each other; fill spans between them" },
205
- { check: "Value Display", platform: "All", expectedResult: "Current value shown in tooltip during drag and/or in a persistent label" },
206
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces role, current value, min, max, and value changes" },
207
- { check: "Disabled State", platform: "All", expectedResult: "Muted visuals; drag, click, and keyboard have no effect; aria-disabled='true'" },
208
- { check: "Focus Ring", platform: "Web", expectedResult: "Focus ring visible around thumb on keyboard focus; hidden on mouse interaction" },
209
- { check: "Touch Accuracy", platform: "Mobile", expectedResult: "Thumb enlarged to 28px; drag tracking accurate with finger input" },
210
- { check: "RTL Support", platform: "Web", expectedResult: "Track direction reverses; min is on the right; keyboard arrows behave correctly" },
211
- ],
212
-
213
- dos: [
214
- "Always display min and max labels at the track endpoints",
215
- "Show the current value in a tooltip or adjacent label during interaction",
216
- "Pair sliders with a text input for precise value entry",
217
- "Use appropriate step values to avoid meaningless precision (e.g., step=1 for integers)",
218
- "Ensure the thumb is large enough for comfortable touch interaction (44px minimum)",
219
- "Use the filled track region to give visual feedback about the selected value",
220
- "Support both pointer drag and keyboard arrow keys for value adjustment",
221
- ],
222
-
223
- donts: [
224
- "Do not use sliders for fewer than 5 possible values — use radio buttons or a stepper instead",
225
- "Do not hide the min/max range — users need context to choose meaningful values",
226
- "Do not allow the dual-thumb handles to cross or overlap each other",
227
- "Do not use sliders for non-numeric selections (e.g., categories or text options)",
228
- "Do not make the track too short — minimum 120px to allow fine-grained control",
229
- "Do not remove the filled track region — it provides essential spatial feedback",
230
- "Do not ignore keyboard accessibility — arrow keys, Home, End, and Page keys are required",
231
- ],
232
- };