@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,270 +0,0 @@
1
- /**
2
- * popover.ts — Gold-standard design knowledge for Popover components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const popoverKnowledge: ComponentKnowledge = {
7
- description:
8
- "Interactive floating panel | Triggered by click | Displays rich content in context",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Closed",
13
- visualChange: "Popover panel is not rendered or is hidden; trigger element appears in its default state",
14
- opacity: "0",
15
- cursorWeb: "pointer",
16
- usage: "Default resting state — popover content is not visible to the user",
17
- },
18
- {
19
- state: "Open",
20
- visualChange: "Floating panel appears adjacent to the trigger with optional arrow; background overlay may dim surrounding content",
21
- opacity: "1",
22
- cursorWeb: "default",
23
- usage: "User has clicked the trigger and the popover content is displayed for interaction",
24
- },
25
- {
26
- state: "Opening (Animating In)",
27
- visualChange: "Panel fades in and scales from 95% to 100% over the transition duration; origin matches placement direction",
28
- opacity: "0 → 1",
29
- cursorWeb: "default",
30
- usage: "Transition state between closed and fully open — content becomes visible progressively",
31
- },
32
- {
33
- state: "Closing (Animating Out)",
34
- visualChange: "Panel fades out and scales from 100% to 95% over the transition duration; pointer-events disabled during animation",
35
- opacity: "1 → 0",
36
- cursorWeb: "default",
37
- usage: "Transition state between open and fully closed — content is being dismissed",
38
- },
39
- {
40
- state: "Focus Within",
41
- visualChange: "Focus ring appears on the currently focused interactive element inside the popover panel",
42
- opacity: "1",
43
- cursorWeb: "default",
44
- usage: "Keyboard user is navigating interactive content within the popover",
45
- },
46
- {
47
- state: "Trigger Focused",
48
- visualChange: "2px focus ring offset by 2px from the trigger element edge, using $focus-ring token",
49
- opacity: "1",
50
- cursorWeb: "pointer",
51
- usage: "Trigger element receives keyboard focus via Tab; popover does not open on focus alone",
52
- },
53
- ],
54
-
55
- propertyDescriptions: {
56
- trigger: "The element that, when clicked, opens the popover panel; can be a button, icon button, or any interactive element",
57
- placement: "Preferred position of the popover relative to its trigger — top, bottom, left, right, or auto (flips to avoid viewport clipping)",
58
- hasArrow: "When true renders a triangular arrow/caret connecting the popover panel to its trigger element for visual association",
59
- offset: "Distance in pixels between the trigger element and the popover panel edge; default is 8px",
60
- closeOnClickOutside: "When true the popover dismisses if the user clicks anywhere outside the panel boundaries; default is true",
61
- closeOnEscape: "When true pressing the Escape key dismisses the popover and returns focus to the trigger; default is true",
62
- isOpen: "Controlled open state — when provided the component operates in controlled mode and ignores internal toggle logic",
63
- onOpenChange: "Callback fired when the popover opens or closes; receives the new boolean open state as its argument",
64
- initialFocus: "Ref or selector for the element that receives focus when the popover opens; defaults to the first focusable element",
65
- returnFocusOnClose: "When true focus returns to the trigger element after the popover is dismissed; default is true",
66
- trapFocus: "When true keyboard focus is trapped within the popover panel, preventing Tab from leaving until dismissed",
67
- role: "ARIA role applied to the popover panel — typically 'dialog' for interactive content; defaults to 'dialog'",
68
- },
69
-
70
- sizeSpecifications: [
71
- {
72
- size: "Small",
73
- height: "auto (min 80px)",
74
- paddingLR: "12px",
75
- fontSize: "12px",
76
- iconSize: "16px",
77
- borderRadius: "8px",
78
- },
79
- {
80
- size: "Medium",
81
- height: "auto (min 120px)",
82
- paddingLR: "16px",
83
- fontSize: "14px",
84
- iconSize: "20px",
85
- borderRadius: "10px",
86
- },
87
- {
88
- size: "Large",
89
- height: "auto (min 160px)",
90
- paddingLR: "20px",
91
- fontSize: "16px",
92
- iconSize: "24px",
93
- borderRadius: "12px",
94
- },
95
- ],
96
-
97
- designTokenBindings: [
98
- {
99
- property: "Background",
100
- tokenName: "$popover-bg",
101
- role: "Panel surface color — elevated above the page surface",
102
- fallback: "#FFFFFF",
103
- },
104
- {
105
- property: "Border",
106
- tokenName: "$popover-border",
107
- role: "Subtle border separating popover from surrounding content",
108
- fallback: "#E5E7EB",
109
- },
110
- {
111
- property: "Shadow",
112
- tokenName: "$shadow-popover",
113
- role: "Elevation shadow giving the popover a floating appearance",
114
- fallback: "0 4px 16px rgba(0,0,0,0.12)",
115
- },
116
- {
117
- property: "Arrow Fill",
118
- tokenName: "$popover-arrow-bg",
119
- role: "Arrow/caret fill matching the panel background",
120
- fallback: "#FFFFFF",
121
- },
122
- {
123
- property: "Arrow Border",
124
- tokenName: "$popover-arrow-border",
125
- role: "Arrow border matching the panel border for visual continuity",
126
- fallback: "#E5E7EB",
127
- },
128
- {
129
- property: "Text Color",
130
- tokenName: "$popover-text",
131
- role: "Default text color for content within the popover panel",
132
- fallback: "#1F2937",
133
- },
134
- {
135
- property: "Overlay",
136
- tokenName: "$overlay-light",
137
- role: "Optional backdrop overlay behind the popover for modal-like behavior",
138
- fallback: "rgba(0,0,0,0.05)",
139
- },
140
- {
141
- property: "Radius",
142
- tokenName: "$radius-popover",
143
- role: "Corner rounding applied to the floating panel",
144
- fallback: "10px",
145
- },
146
- {
147
- property: "Transition",
148
- tokenName: "$transition-popover",
149
- role: "Entry and exit animation timing for the floating panel",
150
- fallback: "200ms ease-out",
151
- },
152
- {
153
- property: "Focus Ring",
154
- tokenName: "$focus-ring",
155
- role: "Keyboard focus indicator ring for interactive elements inside the popover",
156
- fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
157
- },
158
- {
159
- property: "Z-Index",
160
- tokenName: "$z-popover",
161
- role: "Stacking context for the floating panel above page content",
162
- fallback: "1000",
163
- },
164
- ],
165
-
166
- structureRules: [
167
- "Popover consists of a trigger slot and a floating panel — trigger is inline, panel is portaled to the body",
168
- "Panel uses vertical Auto Layout with top alignment and content wrapping",
169
- "Arrow element is absolutely positioned relative to the panel edge closest to the trigger",
170
- "Panel is positioned using a floating-UI library (Floating UI or Popper.js) for collision-aware placement",
171
- "Content area supports arbitrary children: text, form fields, buttons, lists, or custom components",
172
- "Maximum height is constrained to viewport height minus offset; overflow-y auto enables scrolling for tall content",
173
- "Panel width defaults to the size preset but can be overridden by content; max-width is capped at 90vw on mobile",
174
- "Popover is rendered via a portal to avoid clipping by parent overflow or stacking context issues",
175
- ],
176
-
177
- typeHierarchyRules: [
178
- "Popover headings use font-weight Semi-Bold (600) at the size-appropriate font scale",
179
- "Body text within the popover uses Regular (400) weight at one step below heading size",
180
- "Action links or buttons within the popover follow the standard button typography rules",
181
- "Text uses sentence case throughout — no all-caps except for very short labels (e.g., 'NEW')",
182
- "Line height within the popover body should be comfortable at 1.5 for readability",
183
- ],
184
-
185
- interactionRules: [
186
- { event: "Click Trigger", trigger: "pointerup on trigger element", action: "Toggle popover open/closed state; animate panel in or out" },
187
- { event: "Click Outside", trigger: "pointerdown outside panel and trigger", action: "Close the popover if closeOnClickOutside is true" },
188
- { event: "Escape Key", trigger: "Escape key pressed while popover is open", action: "Close the popover and return focus to the trigger element" },
189
- { event: "Tab Key", trigger: "Tab key pressed within popover", action: "Move focus to next focusable element; if trapFocus is true, cycle within panel" },
190
- { event: "Shift+Tab", trigger: "Shift+Tab pressed on first focusable element", action: "If trapFocus is true, wrap to last focusable element; otherwise close and focus trigger" },
191
- { event: "Focus Trigger", trigger: "Tab key focuses the trigger", action: "Show focus ring on trigger; do not open popover (click-only activation)" },
192
- { event: "Scroll Parent", trigger: "User scrolls the page while popover is open", action: "Reposition popover to maintain alignment; close if trigger scrolls out of view" },
193
- { event: "Resize Viewport", trigger: "Window resize event", action: "Recalculate placement; flip to opposite side if current placement clips viewport" },
194
- ],
195
-
196
- contentGuidance: [
197
- "Popover content should be concise and contextual — avoid placing full forms; use a modal for complex workflows",
198
- "Include a clear heading if the popover contains more than a single paragraph of text",
199
- "Provide explicit close affordance (X button or 'Done' action) in addition to click-outside and Escape dismissal",
200
- "Limit popover content to a single focused task or piece of information — do not stack multiple concerns",
201
- "Avoid nesting popovers inside popovers; use progressive disclosure with a different pattern if deeper context is needed",
202
- "Action buttons within the popover should follow the same Do/Don't rules as standalone buttons",
203
- "Popover is distinct from Tooltip: tooltips are hover-triggered, non-interactive, and text-only; popovers are click-triggered and interactive",
204
- ],
205
-
206
- responsiveBehaviour: [
207
- { breakpoint: "Mobile (<768px)", behavior: "Popover may convert to a bottom sheet or full-width panel anchored to the bottom of the viewport" },
208
- { breakpoint: "Tablet (768-1023px)", behavior: "Standard floating popover with auto placement; max-width constrained to 90% of viewport" },
209
- { breakpoint: "Desktop (1024-1439px)", behavior: "Floating popover positioned relative to trigger with standard offset and arrow" },
210
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Popover size remains capped at large preset — does not scale with viewport width" },
211
- ],
212
-
213
- accessibilitySpec: {
214
- intro:
215
- "Popovers contain interactive content and must implement a full dialog-like accessibility pattern with focus management and keyboard dismissal.",
216
- requirements: [
217
- { requirement: "ARIA Role", level: "A", notes: "Trigger uses aria-haspopup='dialog'; panel uses role='dialog' for interactive content" },
218
- { requirement: "ARIA Expanded", level: "A", notes: "Trigger must set aria-expanded='true' when popover is open, 'false' when closed" },
219
- { requirement: "ARIA Controls", level: "A", notes: "Trigger must reference the popover panel id via aria-controls attribute" },
220
- { requirement: "Focus Management", level: "A", notes: "Focus moves to the first focusable element inside the popover when it opens" },
221
- { requirement: "Focus Trap", level: "A", notes: "Tab and Shift+Tab must cycle within the popover when trapFocus is enabled" },
222
- { requirement: "Return Focus", level: "A", notes: "When the popover closes, focus must return to the trigger element that opened it" },
223
- { requirement: "Escape Dismissal", level: "A", notes: "Pressing Escape must close the popover from any focus position within the panel" },
224
- { requirement: "Contrast Ratio", level: "AA", notes: "All text within the popover must meet 4.5:1 contrast against the panel background" },
225
- { requirement: "Touch Target", level: "AA", notes: "Trigger and interactive elements inside the popover must have 44x44px minimum touch area" },
226
- { requirement: "Screen Reader Announcement", level: "A", notes: "Opening the popover should announce the dialog label to screen readers via aria-labelledby" },
227
- ],
228
- outro: [
229
- "Ensure that the popover does not trap keyboard users if trapFocus is disabled — Tab should exit gracefully and close the popover",
230
- "Test with VoiceOver, NVDA, and JAWS to verify that the popover is announced as a dialog and dismissal is communicated",
231
- "Avoid auto-opening popovers on page load as they disrupt screen reader navigation flow",
232
- ],
233
- },
234
-
235
- qaAcceptanceCriteria: [
236
- { check: "Open on Click", platform: "Web", expectedResult: "Popover panel appears on trigger click with correct placement relative to trigger" },
237
- { check: "Close on Click Outside", platform: "Web", expectedResult: "Popover dismisses when clicking outside the panel boundaries" },
238
- { check: "Close on Escape", platform: "Web", expectedResult: "Popover dismisses when Escape is pressed; focus returns to trigger" },
239
- { check: "Focus Trap", platform: "Web", expectedResult: "Tab cycles through focusable elements within the popover without escaping" },
240
- { check: "Arrow Rendering", platform: "Web", expectedResult: "Arrow points toward the trigger and repositions with placement changes" },
241
- { check: "Viewport Collision", platform: "Web", expectedResult: "Popover flips to opposite placement when it would clip the viewport edge" },
242
- { check: "Animation", platform: "Web", expectedResult: "Smooth fade-in/scale-up on open; fade-out/scale-down on close; no layout shift" },
243
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces role='dialog', accessible name, and content on open" },
244
- { check: "Keyboard Navigation", platform: "Web", expectedResult: "Tab moves through interactive elements inside the popover in DOM order" },
245
- { check: "Nested Scrolling", platform: "Web", expectedResult: "Long popover content scrolls within the panel; page scroll is optionally locked" },
246
- { check: "RTL Support", platform: "Web", expectedResult: "Placement and arrow mirror correctly in RTL locales; left becomes right" },
247
- { check: "Mobile Adaptation", platform: "Mobile", expectedResult: "Converts to bottom sheet on viewports below 768px with swipe-to-dismiss" },
248
- { check: "Contrast", platform: "All", expectedResult: "All text and interactive elements pass 4.5:1 contrast against panel background" },
249
- ],
250
-
251
- dos: [
252
- "Use popovers for contextual information or small interactive tasks tied to a specific trigger",
253
- "Always provide an explicit close button inside the popover for touch and accessibility users",
254
- "Ensure focus moves into the popover on open and returns to the trigger on close",
255
- "Use the arrow indicator to clearly associate the popover with its trigger element",
256
- "Keep popover content focused on a single task — avoid cramming multiple unrelated actions",
257
- "Use the auto placement option to handle edge cases where the preferred side clips the viewport",
258
- "Match popover background and border tokens to the rest of the design system for visual consistency",
259
- ],
260
-
261
- donts: [
262
- "Do not use a popover for simple text hints — use a Tooltip instead (hover-triggered, non-interactive)",
263
- "Do not nest popovers inside other popovers — escalate to a modal for deeper context",
264
- "Do not open popovers on hover — hover-triggered floating panels should use the Tooltip pattern",
265
- "Do not place full multi-step forms inside a popover — use a modal or dedicated page instead",
266
- "Do not auto-open a popover on page load without user action — this disrupts focus and screen readers",
267
- "Do not remove Escape key dismissal — it is a WCAG requirement for dialog-like floating content",
268
- "Do not allow the popover to be clipped by parent containers — always render via a portal",
269
- ],
270
- };
@@ -1,251 +0,0 @@
1
- /**
2
- * progress.ts — Gold-standard design knowledge for Progress Bar / Spinner / Loading Indicator components
3
- */
4
- import type { ComponentKnowledge } from "../types.js";
5
-
6
- export const progressKnowledge: ComponentKnowledge = {
7
- description:
8
- "Completion indicator | Loading feedback | Process status visualizer",
9
-
10
- stateSpecifications: [
11
- {
12
- state: "Determinate",
13
- visualChange: "Filled track proportional to the completion percentage; label shows percent or fraction",
14
- opacity: "1",
15
- cursorWeb: "default",
16
- usage: "The total work is known and progress can be calculated as a percentage",
17
- },
18
- {
19
- state: "Indeterminate",
20
- visualChange: "Animated looping bar or spinning circle with no percentage label",
21
- opacity: "1",
22
- cursorWeb: "default",
23
- usage: "The total work is unknown — show activity without a specific completion value",
24
- },
25
- {
26
- state: "Completed",
27
- visualChange: "Track fully filled; optional checkmark icon or success color replaces the progress bar",
28
- opacity: "1",
29
- cursorWeb: "default",
30
- usage: "The operation has finished successfully — 100% reached",
31
- },
32
- {
33
- state: "Error",
34
- visualChange: "Track pauses at the failure point; color shifts to error/danger token; error icon may appear",
35
- opacity: "1",
36
- cursorWeb: "default",
37
- usage: "The operation encountered an error and cannot continue",
38
- },
39
- {
40
- state: "Paused",
41
- visualChange: "Animation stops; track fill uses a muted or desaturated version of the progress color",
42
- opacity: "0.7",
43
- cursorWeb: "default",
44
- usage: "The operation is paused and waiting for user action to resume",
45
- },
46
- {
47
- state: "Buffering",
48
- visualChange: "Striped or hatched pattern animating in the track ahead of the filled portion",
49
- opacity: "1",
50
- cursorWeb: "default",
51
- usage: "Content is buffering (e.g. media loading) — shows both loaded and buffered amounts",
52
- },
53
- ],
54
-
55
- propertyDescriptions: {
56
- value: "Current progress value from 0 to max; null or undefined triggers indeterminate mode",
57
- max: "Maximum value representing 100% completion; defaults to 100",
58
- variant: "Visual style — Linear (horizontal bar) or Circular (ring/spinner)",
59
- label: "Optional text label displayed alongside or inside the progress indicator",
60
- showPercentage: "When true, renders the calculated percentage value as a text label",
61
- size: "Dimensional preset controlling track height/diameter — Small, Medium, Large",
62
- color: "Semantic color — primary, success, warning, error — controls the filled track color",
63
- },
64
-
65
- sizeSpecifications: [
66
- {
67
- size: "Small",
68
- height: "4px",
69
- paddingLR: "0px",
70
- fontSize: "11px",
71
- iconSize: "14px",
72
- borderRadius: "2px",
73
- },
74
- {
75
- size: "Medium",
76
- height: "8px",
77
- paddingLR: "0px",
78
- fontSize: "13px",
79
- iconSize: "16px",
80
- borderRadius: "4px",
81
- },
82
- {
83
- size: "Large",
84
- height: "12px",
85
- paddingLR: "0px",
86
- fontSize: "14px",
87
- iconSize: "20px",
88
- borderRadius: "6px",
89
- },
90
- {
91
- size: "Circular Small",
92
- height: "24px",
93
- paddingLR: "0px",
94
- fontSize: "0px",
95
- iconSize: "24px",
96
- borderRadius: "50%",
97
- },
98
- {
99
- size: "Circular Medium",
100
- height: "40px",
101
- paddingLR: "0px",
102
- fontSize: "12px",
103
- iconSize: "40px",
104
- borderRadius: "50%",
105
- },
106
- {
107
- size: "Circular Large",
108
- height: "64px",
109
- paddingLR: "0px",
110
- fontSize: "16px",
111
- iconSize: "64px",
112
- borderRadius: "50%",
113
- },
114
- ],
115
-
116
- designTokenBindings: [
117
- {
118
- property: "Track Background",
119
- tokenName: "$progress-track-bg",
120
- role: "Unfilled track background color — subtle neutral",
121
- fallback: "#E5E7EB",
122
- },
123
- {
124
- property: "Fill Color",
125
- tokenName: "$progress-fill",
126
- role: "Filled portion color representing completed progress",
127
- fallback: "#2563EB",
128
- },
129
- {
130
- property: "Fill Success",
131
- tokenName: "$progress-fill-success",
132
- role: "Filled color used when progress reaches 100% or success state",
133
- fallback: "#22C55E",
134
- },
135
- {
136
- property: "Fill Error",
137
- tokenName: "$progress-fill-error",
138
- role: "Filled color when progress encounters an error",
139
- fallback: "#EF4444",
140
- },
141
- {
142
- property: "Label Color",
143
- tokenName: "$progress-label",
144
- role: "Percentage or descriptive label text color",
145
- fallback: "#374151",
146
- },
147
- {
148
- property: "Animation Duration",
149
- tokenName: "$progress-animation-duration",
150
- role: "Duration of the indeterminate loop or determinate transition animation",
151
- fallback: "1.5s",
152
- },
153
- {
154
- property: "Border Radius",
155
- tokenName: "$radius-progress",
156
- role: "Corner rounding on the linear progress track and fill",
157
- fallback: "4px",
158
- },
159
- ],
160
-
161
- structureRules: [
162
- "Linear progress uses a container div with a nested fill div whose width is percentage-based",
163
- "Both track and fill elements have matching border-radius for smooth rounded ends",
164
- "Circular progress uses an SVG with a background circle (track) and a foreground circle (fill) using stroke-dasharray",
165
- "Percentage label is positioned to the right of linear bars or centered inside circular indicators",
166
- "Indeterminate linear animation uses a CSS keyframe translating a gradient across the track",
167
- "Indeterminate circular animation uses a CSS keyframe rotating the SVG stroke",
168
- "Progress container has no interactive elements — it is purely a visual indicator",
169
- ],
170
-
171
- typeHierarchyRules: [
172
- "Percentage label uses tabular (monospace) figures so width doesn't shift as numbers change",
173
- "Font weight is Medium (500) for percentage labels and Regular (400) for descriptive labels",
174
- "Descriptive labels (e.g. 'Uploading file...') appear above or below the bar, not inside it",
175
- "Percentage text inside circular indicators is centered and sized relative to the ring diameter",
176
- "Label text uses sentence case — 'Uploading files', not 'UPLOADING FILES'",
177
- ],
178
-
179
- interactionRules: [
180
- { event: "Value Update", trigger: "value prop changes", action: "Animate the fill width/stroke smoothly from the previous value to the new value" },
181
- { event: "Completion", trigger: "value reaches max", action: "Transition to completed state; optionally show success icon and announce completion" },
182
- { event: "Error", trigger: "error prop set to true", action: "Pause animation; shift fill color to error token; show error icon if configured" },
183
- { event: "Retry", trigger: "User clicks retry action on error state", action: "Reset fill to last known value; resume animation; clear error state" },
184
- { event: "Indeterminate Start", trigger: "value is null/undefined", action: "Start continuous animation loop; hide percentage label" },
185
- { event: "Visibility Change", trigger: "Component enters/exits viewport", action: "Pause animation when off-screen to reduce CPU usage; resume when visible" },
186
- ],
187
-
188
- contentGuidance: [
189
- "Use determinate progress when the total work is known — file uploads, multi-step wizards, data processing",
190
- "Use indeterminate progress when the duration is unpredictable — API calls, initial page loads",
191
- "Include a descriptive label for long operations: 'Uploading 3 of 12 files...'",
192
- "Avoid showing percentage for indeterminate progress — it creates false expectations",
193
- "Consider adding a time estimate for long operations: 'About 2 minutes remaining'",
194
- "Use success feedback (checkmark, color change) when progress completes to confirm the outcome",
195
- ],
196
-
197
- responsiveBehaviour: [
198
- { breakpoint: "Mobile (<768px)", behavior: "Linear bars span full container width; circular indicators use Small or Medium size" },
199
- { breakpoint: "Tablet (768-1023px)", behavior: "Standard sizing; percentage labels visible for determinate progress" },
200
- { breakpoint: "Desktop (1024-1439px)", behavior: "All sizes and variants available; inline labels next to linear bars" },
201
- { breakpoint: "Ultra-wide (>=1440px)", behavior: "Progress bar widths capped at a reasonable max-width to avoid overly long bars" },
202
- { breakpoint: "Inline Context", behavior: "Small linear bar (4px) used inline within table cells, cards, or list items" },
203
- ],
204
-
205
- accessibilitySpec: {
206
- intro:
207
- "Progress indicators must communicate current status to assistive technologies using ARIA attributes and live regions for dynamic updates.",
208
- requirements: [
209
- { requirement: "Role", level: "A", notes: "Use role='progressbar' with aria-valuenow, aria-valuemin (0), and aria-valuemax" },
210
- { requirement: "Indeterminate Mode", level: "A", notes: "Omit aria-valuenow when indeterminate; add aria-label describing the operation" },
211
- { requirement: "Label", level: "A", notes: "Provide aria-label or aria-labelledby describing what is progressing (e.g. 'File upload progress')" },
212
- { requirement: "Live Updates", level: "AA", notes: "Use aria-live='polite' to announce significant milestones (25%, 50%, 75%, 100%)" },
213
- { requirement: "Contrast", level: "AA", notes: "Fill-to-track: 3:1 non-text contrast minimum; label text-to-background: 4.5:1" },
214
- { requirement: "Reduced Motion", level: "AAA", notes: "Respect prefers-reduced-motion: replace animations with static fill updates" },
215
- ],
216
- outro: [
217
- "Announce completion and error states to screen readers via aria-live assertive region",
218
- "Do not rely solely on color to communicate progress state — supplement with labels or icons",
219
- ],
220
- },
221
-
222
- qaAcceptanceCriteria: [
223
- { check: "Determinate Fill", platform: "All", expectedResult: "Fill width matches the value/max ratio; smooth transition on value change" },
224
- { check: "Indeterminate Animation", platform: "All", expectedResult: "Continuous animation loops without freezing; no percentage label shown" },
225
- { check: "Completion State", platform: "All", expectedResult: "Fill reaches 100%; success color or icon displayed; screen reader announces completion" },
226
- { check: "Error State", platform: "All", expectedResult: "Fill pauses; error color applied; error icon visible; retry action available" },
227
- { check: "Reduced Motion", platform: "Web", expectedResult: "Animations replaced with static updates when prefers-reduced-motion is active" },
228
- { check: "Screen Reader", platform: "Web", expectedResult: "Announces role, current value, label, and milestone changes via aria-live" },
229
- { check: "Circular Variant", platform: "All", expectedResult: "SVG ring renders correctly; stroke-dasharray proportional to value; centered label if configured" },
230
- ],
231
-
232
- dos: [
233
- "Use determinate progress when the completion percentage can be calculated",
234
- "Use indeterminate progress for unpredictable operations — never show a fake percentage",
235
- "Include a descriptive label for context: what is loading and why",
236
- "Animate value transitions smoothly for a polished user experience",
237
- "Respect prefers-reduced-motion by replacing animations with static fills",
238
- "Use semantic ARIA attributes — role='progressbar' with aria-valuenow and aria-valuemax",
239
- "Announce completion and error states to screen readers",
240
- ],
241
-
242
- donts: [
243
- "Do not use a spinner when a determinate progress bar would be more informative",
244
- "Do not display percentage labels on indeterminate progress — it misleads users",
245
- "Do not leave progress indicators on screen after the operation completes — remove or transition to success state",
246
- "Do not use progress bars for navigation or step indicators — use a stepper component instead",
247
- "Do not animate progress backwards unless representing a genuine decrease (e.g. storage usage)",
248
- "Do not make progress indicators interactive — they are read-only status displays",
249
- "Do not use red/error colors for normal progress — reserve them for actual error states",
250
- ],
251
- };