@sarjallab09/figma-intelligence 1.0.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 (286) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +327 -0
  3. package/bin/cli.js +859 -0
  4. package/design-bridge/.env.example +5 -0
  5. package/design-bridge/bridge.js +196 -0
  6. package/design-bridge/lib/assets.js +367 -0
  7. package/design-bridge/lib/prompt.js +85 -0
  8. package/design-bridge/lib/server.js +66 -0
  9. package/design-bridge/lib/stitch.js +37 -0
  10. package/design-bridge/lib/tokens.js +82 -0
  11. package/design-bridge/package-lock.json +579 -0
  12. package/design-bridge/package.json +19 -0
  13. package/figma-bridge-plugin/README.md +97 -0
  14. package/figma-bridge-plugin/anthropic-chat-runner.js +192 -0
  15. package/figma-bridge-plugin/bridge-relay.js +2363 -0
  16. package/figma-bridge-plugin/chat-runner.js +459 -0
  17. package/figma-bridge-plugin/code.js +1528 -0
  18. package/figma-bridge-plugin/codex-runner.js +505 -0
  19. package/figma-bridge-plugin/component-schemas.js +110 -0
  20. package/figma-bridge-plugin/content-context.js +869 -0
  21. package/figma-bridge-plugin/create-button.js +216 -0
  22. package/figma-bridge-plugin/gemini-cli-runner.js +291 -0
  23. package/figma-bridge-plugin/gemini-runner.js +187 -0
  24. package/figma-bridge-plugin/html-to-figma.js +927 -0
  25. package/figma-bridge-plugin/knowledge-hub/.gitkeep +0 -0
  26. package/figma-bridge-plugin/knowledge-hub/uspec-references/anatomy-spec.md +159 -0
  27. package/figma-bridge-plugin/knowledge-hub/uspec-references/api-spec.md +162 -0
  28. package/figma-bridge-plugin/knowledge-hub/uspec-references/color-spec.md +148 -0
  29. package/figma-bridge-plugin/knowledge-hub/uspec-references/full-spec-template.md +314 -0
  30. package/figma-bridge-plugin/knowledge-hub/uspec-references/property-spec.md +175 -0
  31. package/figma-bridge-plugin/knowledge-hub/uspec-references/screen-reader-spec.md +180 -0
  32. package/figma-bridge-plugin/knowledge-hub/uspec-references/structure-spec.md +165 -0
  33. package/figma-bridge-plugin/manifest.json +21 -0
  34. package/figma-bridge-plugin/package-lock.json +1936 -0
  35. package/figma-bridge-plugin/package.json +20 -0
  36. package/figma-bridge-plugin/perplexity-runner.js +188 -0
  37. package/figma-bridge-plugin/references/SKILL.md +178 -0
  38. package/figma-bridge-plugin/references/anatomy-spec.md +159 -0
  39. package/figma-bridge-plugin/references/api-spec.md +162 -0
  40. package/figma-bridge-plugin/references/color-spec.md +148 -0
  41. package/figma-bridge-plugin/references/full-spec-template.md +314 -0
  42. package/figma-bridge-plugin/references/property-spec.md +175 -0
  43. package/figma-bridge-plugin/references/screen-reader-spec.md +180 -0
  44. package/figma-bridge-plugin/references/structure-spec.md +165 -0
  45. package/figma-bridge-plugin/shared-prompt-config.js +604 -0
  46. package/figma-bridge-plugin/spec-helpers/build-table.js +269 -0
  47. package/figma-bridge-plugin/spec-helpers/classify-elements.js +189 -0
  48. package/figma-bridge-plugin/spec-helpers/index.js +35 -0
  49. package/figma-bridge-plugin/spec-helpers/parse-figma-link.js +49 -0
  50. package/figma-bridge-plugin/spec-helpers/position-markers.js +158 -0
  51. package/figma-bridge-plugin/stitch-auth.js +322 -0
  52. package/figma-bridge-plugin/stitch-runner.js +1427 -0
  53. package/figma-bridge-plugin/token-resolver.js +107 -0
  54. package/figma-bridge-plugin/ui.html +4467 -0
  55. package/figma-intelligence-layer/.env.example +39 -0
  56. package/figma-intelligence-layer/docs/local-image-generation.md +60 -0
  57. package/figma-intelligence-layer/examples/comfyui-workflow-template.example.json +101 -0
  58. package/figma-intelligence-layer/jest.config.js +14 -0
  59. package/figma-intelligence-layer/mcp-config.json +19 -0
  60. package/figma-intelligence-layer/package-lock.json +5892 -0
  61. package/figma-intelligence-layer/package.json +48 -0
  62. package/figma-intelligence-layer/scripts/setup-comfyui-local.sh +67 -0
  63. package/figma-intelligence-layer/scripts/start-comfyui.sh +33 -0
  64. package/figma-intelligence-layer/src/index.ts +2233 -0
  65. package/figma-intelligence-layer/src/shared/auto-layout-validator.ts +404 -0
  66. package/figma-intelligence-layer/src/shared/cache.ts +187 -0
  67. package/figma-intelligence-layer/src/shared/color-operations.ts +533 -0
  68. package/figma-intelligence-layer/src/shared/color-utils.ts +138 -0
  69. package/figma-intelligence-layer/src/shared/component-script-builder.ts +413 -0
  70. package/figma-intelligence-layer/src/shared/component-templates.ts +2767 -0
  71. package/figma-intelligence-layer/src/shared/concept-taxonomy.ts +694 -0
  72. package/figma-intelligence-layer/src/shared/decision-log.ts +128 -0
  73. package/figma-intelligence-layer/src/shared/design-system-context.ts +568 -0
  74. package/figma-intelligence-layer/src/shared/design-system-intelligence.ts +131 -0
  75. package/figma-intelligence-layer/src/shared/design-system-matcher.ts +184 -0
  76. package/figma-intelligence-layer/src/shared/design-system-normalizers.ts +196 -0
  77. package/figma-intelligence-layer/src/shared/design-system-tokens.ts +295 -0
  78. package/figma-intelligence-layer/src/shared/dtcg-validator.ts +530 -0
  79. package/figma-intelligence-layer/src/shared/enrichment-pipeline.ts +671 -0
  80. package/figma-intelligence-layer/src/shared/figma-bridge.ts +1408 -0
  81. package/figma-intelligence-layer/src/shared/font-config.ts +126 -0
  82. package/figma-intelligence-layer/src/shared/icon-catalog.ts +360 -0
  83. package/figma-intelligence-layer/src/shared/icon-fetch.ts +80 -0
  84. package/figma-intelligence-layer/src/shared/prototype-script-builder.ts +162 -0
  85. package/figma-intelligence-layer/src/shared/response-compression.ts +440 -0
  86. package/figma-intelligence-layer/src/shared/semantic-token-catalog.ts +324 -0
  87. package/figma-intelligence-layer/src/shared/token-binder.ts +505 -0
  88. package/figma-intelligence-layer/src/shared/token-math.ts +427 -0
  89. package/figma-intelligence-layer/src/shared/token-naming.ts +468 -0
  90. package/figma-intelligence-layer/src/shared/token-utils.ts +420 -0
  91. package/figma-intelligence-layer/src/shared/types.ts +346 -0
  92. package/figma-intelligence-layer/src/shared/typography-presets.ts +94 -0
  93. package/figma-intelligence-layer/src/shared/unsplash.ts +165 -0
  94. package/figma-intelligence-layer/src/shared/vision-client.ts +607 -0
  95. package/figma-intelligence-layer/src/shared/vision-provider-anthropic.ts +334 -0
  96. package/figma-intelligence-layer/src/shared/vision-provider-openai.ts +446 -0
  97. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotate-handler.ts +782 -0
  98. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotate-renderer.ts +496 -0
  99. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/a11y-annotation-kit.ts +230 -0
  100. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/colorblind-sim.ts +66 -0
  101. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/index.ts +810 -0
  102. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-analyzer.ts +1191 -0
  103. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-figma-page.ts +1346 -0
  104. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/keyboard-sr-order-handler.ts +148 -0
  105. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/vpat-figma-page.ts +499 -0
  106. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/vpat-report.ts +910 -0
  107. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/wcag-checker.ts +989 -0
  108. package/figma-intelligence-layer/src/tools/phase1-vision/a11y-audit/wcag-criteria.ts +1160 -0
  109. package/figma-intelligence-layer/src/tools/phase1-vision/design-from-ref/index.ts +424 -0
  110. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/component-recognizer.ts +38 -0
  111. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/ds-matcher.ts +111 -0
  112. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/font-matcher.ts +114 -0
  113. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/icon-resolver.ts +103 -0
  114. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/index.ts +1060 -0
  115. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/layout-segmenter.ts +18 -0
  116. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/token-inferencer.ts +39 -0
  117. package/figma-intelligence-layer/src/tools/phase1-vision/screen-cloner/vision-pipeline.ts +58 -0
  118. package/figma-intelligence-layer/src/tools/phase1-vision/sketch-to-design/index.ts +298 -0
  119. package/figma-intelligence-layer/src/tools/phase1-vision/visual-audit/index.ts +197 -0
  120. package/figma-intelligence-layer/src/tools/phase2-accuracy/component-audit/index.ts +494 -0
  121. package/figma-intelligence-layer/src/tools/phase2-accuracy/intent-translator/index.ts +356 -0
  122. package/figma-intelligence-layer/src/tools/phase2-accuracy/layout-intelligence/container-patterns.ts +123 -0
  123. package/figma-intelligence-layer/src/tools/phase2-accuracy/layout-intelligence/index.ts +663 -0
  124. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/built-in-rules.yaml +56 -0
  125. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/index.ts +614 -0
  126. package/figma-intelligence-layer/src/tools/phase2-accuracy/lint-rules/rule-engine.ts +113 -0
  127. package/figma-intelligence-layer/src/tools/phase2-accuracy/theme-generator/color-theory.ts +178 -0
  128. package/figma-intelligence-layer/src/tools/phase2-accuracy/theme-generator/index.ts +470 -0
  129. package/figma-intelligence-layer/src/tools/phase2-accuracy/variant-expander/index.ts +429 -0
  130. package/figma-intelligence-layer/src/tools/phase2-accuracy/variant-expander/token-override-maps.ts +226 -0
  131. package/figma-intelligence-layer/src/tools/phase3-generation/ai-image-insert/index.ts +535 -0
  132. package/figma-intelligence-layer/src/tools/phase3-generation/component-archaeologist/index.ts +660 -0
  133. package/figma-intelligence-layer/src/tools/phase3-generation/component-archaeologist/pattern-fingerprints.ts +209 -0
  134. package/figma-intelligence-layer/src/tools/phase3-generation/composition-builder/index.ts +540 -0
  135. package/figma-intelligence-layer/src/tools/phase3-generation/figma-animated-build.ts +391 -0
  136. package/figma-intelligence-layer/src/tools/phase3-generation/page-architect/index.ts +2019 -0
  137. package/figma-intelligence-layer/src/tools/phase3-generation/page-architect/screen-templates.ts +131 -0
  138. package/figma-intelligence-layer/src/tools/phase3-generation/prototype-map/index.ts +381 -0
  139. package/figma-intelligence-layer/src/tools/phase3-generation/prototype-wire/index.ts +565 -0
  140. package/figma-intelligence-layer/src/tools/phase3-generation/swarm-build/index.ts +764 -0
  141. package/figma-intelligence-layer/src/tools/phase3-generation/system-drift/index.ts +535 -0
  142. package/figma-intelligence-layer/src/tools/phase3-generation/unsplash-search/index.ts +84 -0
  143. package/figma-intelligence-layer/src/tools/phase3-generation/url-to-frame/index.ts +401 -0
  144. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/css-animations.ts +68 -0
  145. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/framer-motion.ts +78 -0
  146. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/code-generators/swift-animations.ts +93 -0
  147. package/figma-intelligence-layer/src/tools/phase4-sync/animation-specifier/index.ts +596 -0
  148. package/figma-intelligence-layer/src/tools/phase4-sync/ci-check/index.ts +462 -0
  149. package/figma-intelligence-layer/src/tools/phase4-sync/export-tokens/index.ts +1470 -0
  150. package/figma-intelligence-layer/src/tools/phase4-sync/generate-component-code/index.ts +829 -0
  151. package/figma-intelligence-layer/src/tools/phase4-sync/handoff-spec/index.ts +702 -0
  152. package/figma-intelligence-layer/src/tools/phase4-sync/icon-library-sync/index.ts +483 -0
  153. package/figma-intelligence-layer/src/tools/phase4-sync/sync-from-code/index.ts +501 -0
  154. package/figma-intelligence-layer/src/tools/phase4-sync/sync-from-code/storybook-parser.ts +106 -0
  155. package/figma-intelligence-layer/src/tools/phase4-sync/watch-docs/index.ts +676 -0
  156. package/figma-intelligence-layer/src/tools/phase4-sync/webhook-listener/index.ts +560 -0
  157. package/figma-intelligence-layer/src/tools/phase5-governance/apg-doc/index.ts +1043 -0
  158. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/component-detection.ts +620 -0
  159. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/anatomy.ts +331 -0
  160. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/color-tokens.ts +77 -0
  161. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/properties.ts +54 -0
  162. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/snapshot.ts +287 -0
  163. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/spacing.ts +71 -0
  164. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/states.ts +43 -0
  165. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/extractors/typography.ts +71 -0
  166. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/index.ts +221 -0
  167. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/_default.ts +166 -0
  168. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/accordion.ts +232 -0
  169. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/alert.ts +234 -0
  170. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/avatar-group.ts +270 -0
  171. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/avatar.ts +249 -0
  172. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/badge.ts +231 -0
  173. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/banner.ts +293 -0
  174. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/breadcrumb.ts +240 -0
  175. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/button.ts +243 -0
  176. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/calendar.ts +307 -0
  177. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/card.ts +143 -0
  178. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/checkbox.ts +227 -0
  179. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/chip.ts +233 -0
  180. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/combobox.ts +282 -0
  181. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/datepicker.ts +276 -0
  182. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/divider.ts +223 -0
  183. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/drawer.ts +255 -0
  184. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/dropdown-menu.ts +289 -0
  185. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/empty-state.ts +261 -0
  186. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/file-uploader.ts +290 -0
  187. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/form.ts +265 -0
  188. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/grid.ts +238 -0
  189. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/icon.ts +255 -0
  190. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/index.ts +128 -0
  191. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/inline-edit.ts +286 -0
  192. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/inline-message.ts +255 -0
  193. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/input.ts +330 -0
  194. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/link.ts +247 -0
  195. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/list.ts +250 -0
  196. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/menu.ts +247 -0
  197. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/modal.ts +144 -0
  198. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/navbar.ts +264 -0
  199. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/navigation.ts +251 -0
  200. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/number-input.ts +261 -0
  201. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/pagination.ts +248 -0
  202. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/popover.ts +270 -0
  203. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/progress.ts +251 -0
  204. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/radio.ts +142 -0
  205. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/range-slider.ts +282 -0
  206. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/rating.ts +250 -0
  207. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/search.ts +258 -0
  208. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/segmented-control.ts +265 -0
  209. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/select.ts +319 -0
  210. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/skeleton.ts +256 -0
  211. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/slider.ts +232 -0
  212. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/spinner.ts +239 -0
  213. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/status-dot.ts +252 -0
  214. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/stepper.ts +270 -0
  215. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/table.ts +244 -0
  216. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tabs.ts +143 -0
  217. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tag.ts +243 -0
  218. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/textarea.ts +259 -0
  219. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/time-picker.ts +293 -0
  220. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toast.ts +144 -0
  221. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toggle.ts +289 -0
  222. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/toolbar.ts +267 -0
  223. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/tooltip.ts +232 -0
  224. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/treeview.ts +257 -0
  225. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/knowledge/typography.ts +319 -0
  226. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/legacy-compat.ts +121 -0
  227. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/anatomy-diagram.ts +430 -0
  228. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/figma-page.ts +312 -0
  229. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/json.ts +129 -0
  230. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/markdown.ts +78 -0
  231. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/renderers/visual-doc.ts +2333 -0
  232. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/accessibility.ts +100 -0
  233. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/anatomy.ts +32 -0
  234. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/color-tokens.ts +59 -0
  235. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/content-guidance.ts +18 -0
  236. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/design-tokens.ts +53 -0
  237. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/interaction-rules.ts +19 -0
  238. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/overview.ts +91 -0
  239. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/properties-api.ts +71 -0
  240. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/qa-criteria.ts +19 -0
  241. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/related-components.ts +110 -0
  242. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/responsive.ts +19 -0
  243. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/size-specs.ts +67 -0
  244. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/spacing-structure.ts +58 -0
  245. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/state-specs.ts +79 -0
  246. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/states.ts +50 -0
  247. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/type-hierarchy.ts +33 -0
  248. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/typography.ts +55 -0
  249. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/usage-guidelines.ts +73 -0
  250. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/sections/variants.ts +81 -0
  251. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec/types.ts +409 -0
  252. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/index.ts +198 -0
  253. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/renderer.ts +701 -0
  254. package/figma-intelligence-layer/src/tools/phase5-governance/component-spec-sheet/types.ts +88 -0
  255. package/figma-intelligence-layer/src/tools/phase5-governance/decision-log/index.ts +135 -0
  256. package/figma-intelligence-layer/src/tools/phase5-governance/design-decision-log/index.ts +491 -0
  257. package/figma-intelligence-layer/src/tools/phase5-governance/ds-primitives/index.ts +416 -0
  258. package/figma-intelligence-layer/src/tools/phase5-governance/ds-scaffolder/index.ts +722 -0
  259. package/figma-intelligence-layer/src/tools/phase5-governance/ds-variables/index.ts +449 -0
  260. package/figma-intelligence-layer/src/tools/phase5-governance/health-report/index.ts +393 -0
  261. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/index.ts +406 -0
  262. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/figma-page.ts +292 -0
  263. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/json.ts +24 -0
  264. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/markdown.ts +172 -0
  265. package/figma-intelligence-layer/src/tools/phase5-governance/taxonomy-docs/renderers/naming-guide.ts +409 -0
  266. package/figma-intelligence-layer/src/tools/phase5-governance/token-analytics/index.ts +594 -0
  267. package/figma-intelligence-layer/src/tools/phase5-governance/token-docs/index.ts +710 -0
  268. package/figma-intelligence-layer/src/tools/phase5-governance/token-migrate/index.ts +458 -0
  269. package/figma-intelligence-layer/src/tools/phase5-governance/token-naming/index.ts +134 -0
  270. package/figma-intelligence-layer/tests/apg-doc.test.ts +101 -0
  271. package/figma-intelligence-layer/tests/design-system-context.test.ts +152 -0
  272. package/figma-intelligence-layer/tests/design-system-matcher.test.ts +144 -0
  273. package/figma-intelligence-layer/tests/figma-bridge.test.ts +83 -0
  274. package/figma-intelligence-layer/tests/generate-image-and-insert.test.ts +56 -0
  275. package/figma-intelligence-layer/tests/screen-cloner-regression.test.ts +69 -0
  276. package/figma-intelligence-layer/tests/smoke.test.ts +174 -0
  277. package/figma-intelligence-layer/tests/spec-generator.test.ts +127 -0
  278. package/figma-intelligence-layer/tests/token-migrate.test.ts +21 -0
  279. package/figma-intelligence-layer/tests/token-naming.test.ts +30 -0
  280. package/figma-intelligence-layer/tsconfig.json +19 -0
  281. package/package.json +35 -0
  282. package/scripts/clean-existing-chunks.js +179 -0
  283. package/scripts/connect-ai-tool.js +490 -0
  284. package/scripts/convert-hub-pdfs.js +425 -0
  285. package/scripts/figma-mcp-status.js +349 -0
  286. package/scripts/register-codex-mcp.js +96 -0
@@ -0,0 +1,264 @@
1
+ /**
2
+ * navbar.ts — Gold-standard design knowledge for Navbar components
3
+ */
4
+ import type { ComponentKnowledge } from "../types.js";
5
+
6
+ export const navbarKnowledge: ComponentKnowledge = {
7
+ description:
8
+ "Top-level horizontal navigation bar | Site-wide header and branding | AppBar/Header pattern",
9
+
10
+ stateSpecifications: [
11
+ {
12
+ state: "Default",
13
+ visualChange: "Full-width bar with logo, navigation items, and action slots on a solid or transparent background",
14
+ opacity: "1",
15
+ cursorWeb: "default",
16
+ usage: "Resting state — navbar is visible at the top of the viewport with all items accessible",
17
+ },
18
+ {
19
+ state: "Scrolled",
20
+ visualChange: "Background becomes opaque (if transparent), elevation shadow appears via $navbar-shadow token",
21
+ opacity: "1",
22
+ cursorWeb: "default",
23
+ usage: "User has scrolled past the initial viewport — navbar gains visual separation from content below",
24
+ },
25
+ {
26
+ state: "Mobile Collapsed",
27
+ visualChange: "Navigation items hidden; hamburger menu icon visible; logo and essential actions remain",
28
+ opacity: "1",
29
+ cursorWeb: "default",
30
+ usage: "Viewport is below the mobile breakpoint — full navigation is collapsed into a menu trigger",
31
+ },
32
+ {
33
+ state: "Mobile Expanded",
34
+ visualChange: "Drawer or full-height overlay slides in from the side or top; nav items displayed vertically",
35
+ opacity: "1",
36
+ cursorWeb: "default",
37
+ usage: "User has activated the hamburger menu — full navigation is accessible in a mobile-friendly layout",
38
+ },
39
+ {
40
+ state: "Active Item",
41
+ visualChange: "Currently active navigation item has a bottom border indicator or filled background highlight",
42
+ opacity: "1",
43
+ cursorWeb: "default",
44
+ usage: "Indicates which top-level section the user is currently viewing",
45
+ },
46
+ {
47
+ state: "Hover Item",
48
+ visualChange: "Hovered navigation item shows subtle background tint or underline indicator",
49
+ opacity: "1",
50
+ cursorWeb: "pointer",
51
+ usage: "Mouse cursor enters a navigation item's hit area",
52
+ },
53
+ {
54
+ state: "Focus Item",
55
+ visualChange: "2px focus ring offset by 2px from the navigation item, using $focus-ring token",
56
+ opacity: "1",
57
+ cursorWeb: "pointer",
58
+ usage: "A navigation item receives keyboard focus via Tab key",
59
+ },
60
+ ],
61
+
62
+ propertyDescriptions: {
63
+ logo: "Brand logo element rendered in the leading position; accepts an image component, SVG, or text logotype",
64
+ items: "Array of navigation item entries, each containing a label, href, and optional icon or submenu",
65
+ actions: "Trailing slot for action elements — typically search, notifications, user avatar, or CTA buttons",
66
+ sticky: "When true the navbar remains fixed at the top of the viewport during scroll (position: sticky or fixed)",
67
+ transparent: "When true the navbar has a transparent background in its default state; becomes opaque on scroll",
68
+ elevation: "Shadow depth level applied to the navbar — 'none', 'low', 'medium'; overridden by scrolled state",
69
+ mobileBreakpoint: "Viewport width threshold below which the navbar collapses to mobile layout (default: 768px)",
70
+ onMenuToggle: "Callback fired when the mobile hamburger menu is opened or closed; receives the new open state",
71
+ activeItem: "Index or identifier of the currently active navigation item for visual highlighting",
72
+ maxWidth: "Maximum content width within the navbar — content is centered and constrained (default: 1280px)",
73
+ skipLink: "When true, a visually hidden 'Skip to content' link is rendered as the first focusable element",
74
+ position: "Positioning strategy — 'static', 'sticky', or 'fixed' — controls how the navbar behaves during scroll",
75
+ },
76
+
77
+ sizeSpecifications: [
78
+ {
79
+ size: "Compact",
80
+ height: "48px",
81
+ paddingLR: "16px",
82
+ fontSize: "13px",
83
+ iconSize: "18px",
84
+ borderRadius: "0px",
85
+ },
86
+ {
87
+ size: "Default",
88
+ height: "56px",
89
+ paddingLR: "24px",
90
+ fontSize: "14px",
91
+ iconSize: "20px",
92
+ borderRadius: "0px",
93
+ },
94
+ {
95
+ size: "Large",
96
+ height: "64px",
97
+ paddingLR: "32px",
98
+ fontSize: "16px",
99
+ iconSize: "24px",
100
+ borderRadius: "0px",
101
+ },
102
+ ],
103
+
104
+ designTokenBindings: [
105
+ {
106
+ property: "Background",
107
+ tokenName: "$navbar-bg",
108
+ role: "Navbar surface fill color — typically white or dark depending on theme",
109
+ fallback: "#FFFFFF",
110
+ },
111
+ {
112
+ property: "Text Color",
113
+ tokenName: "$navbar-text",
114
+ role: "Navigation item and brand text color",
115
+ fallback: "#1D2939",
116
+ },
117
+ {
118
+ property: "Border Bottom",
119
+ tokenName: "$navbar-border",
120
+ role: "Subtle 1px bottom border separating navbar from page content",
121
+ fallback: "#EAECF0",
122
+ },
123
+ {
124
+ property: "Scroll Shadow",
125
+ tokenName: "$navbar-shadow",
126
+ role: "Elevation shadow applied when the user scrolls past the top of the page",
127
+ fallback: "0 1px 3px rgba(16,24,40,0.1), 0 1px 2px rgba(16,24,40,0.06)",
128
+ },
129
+ {
130
+ property: "Mobile Overlay",
131
+ tokenName: "$navbar-mobile-overlay",
132
+ role: "Semi-transparent backdrop behind the mobile navigation drawer",
133
+ fallback: "rgba(16,24,40,0.6)",
134
+ },
135
+ {
136
+ property: "Focus Ring",
137
+ tokenName: "$focus-ring",
138
+ role: "Keyboard focus indicator ring for navigation items and action buttons",
139
+ fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
140
+ },
141
+ {
142
+ property: "Font Family",
143
+ tokenName: "$font-family-sans",
144
+ role: "Navigation item typeface",
145
+ fallback: "Inter, system-ui, sans-serif",
146
+ },
147
+ {
148
+ property: "Active Indicator",
149
+ tokenName: "$navbar-active-indicator",
150
+ role: "Color of the bottom border or background highlight on the active navigation item",
151
+ fallback: "#2563EB",
152
+ },
153
+ {
154
+ property: "Transition",
155
+ tokenName: "$transition-interactive",
156
+ role: "Smooth transitions for scroll shadow, mobile drawer, and hover states",
157
+ fallback: "200ms ease-in-out",
158
+ },
159
+ ],
160
+
161
+ structureRules: [
162
+ "Outer wrapper uses role='banner' for the site-wide header; contains a <nav> element for the navigation items",
163
+ "Container uses horizontal Auto Layout (flexbox) with space-between distribution and center vertical alignment",
164
+ "Logo slot is the first child; navigation items occupy the center; actions slot is the trailing child",
165
+ "Navigation items are rendered as an <ul>/<li> list within the <nav> element",
166
+ "Mobile hamburger button is visually hidden on desktop and displayed only below the mobile breakpoint",
167
+ "Mobile drawer renders as a separate layer with a backdrop overlay that closes on click-outside or Escape",
168
+ "Skip-to-content link is the first focusable element in the DOM, visually hidden until focused",
169
+ ],
170
+
171
+ typeHierarchyRules: [
172
+ "Navigation item weight is Medium (500) for default items; Semi-Bold (600) for the active item",
173
+ "Text uses sentence case for navigation labels — match section titles exactly",
174
+ "Active indicator (bottom border or background) is 2-3px thick using $navbar-active-indicator token",
175
+ "Logo text uses the brand typeface or is replaced by an image — never both simultaneously",
176
+ "No underline on navigation items — underline is reserved for inline text links",
177
+ "Mobile drawer items use a larger font-size (16px minimum) for touch readability",
178
+ ],
179
+
180
+ interactionRules: [
181
+ { event: "Click Nav Item", trigger: "pointerup on a navigation item", action: "Navigate to the section/page; update active item indicator" },
182
+ { event: "Hover Nav Item", trigger: "pointerenter on a navigation item", action: "Show subtle background tint or underline indicator" },
183
+ { event: "Focus Nav Item", trigger: "Tab key or focus()", action: "Show focus ring; do not trigger navigation" },
184
+ { event: "Keydown Enter", trigger: "Enter key while a nav item is focused", action: "Navigate to the section/page (same as click)" },
185
+ { event: "Hamburger Click", trigger: "pointerup on mobile menu button", action: "Toggle mobile drawer open/closed; fire onMenuToggle callback" },
186
+ { event: "Escape on Drawer", trigger: "Escape key while mobile drawer is open", action: "Close drawer; return focus to hamburger button" },
187
+ { event: "Click Overlay", trigger: "pointerup on the mobile backdrop overlay", action: "Close the mobile drawer" },
188
+ { event: "Scroll", trigger: "Window scroll passes threshold (default: 10px)", action: "Add elevation shadow and opaque background if transparent" },
189
+ ],
190
+
191
+ contentGuidance: [
192
+ "Limit top-level navigation items to 5-7 for cognitive manageability — use dropdowns for deeper hierarchy",
193
+ "Labels should be concise (one to two words) and clearly describe the destination section",
194
+ "Place the most important navigation items first (left-to-right in LTR locales)",
195
+ "Reserve the actions slot for utility actions (search, profile, settings) — not primary navigation",
196
+ "Always include a 'Skip to content' link for keyboard and screen reader users",
197
+ "Logo should link to the homepage — this is a universal convention users expect",
198
+ "Avoid placing too many action items in the trailing slot — prioritize the top 2-3 actions",
199
+ "Mobile drawer should mirror the desktop navigation order for consistency",
200
+ ],
201
+
202
+ responsiveBehaviour: [
203
+ { breakpoint: "Mobile (<768px)", behavior: "Navigation items collapse into hamburger menu; logo and 1-2 essential actions remain visible; drawer opens full-width or as side panel" },
204
+ { breakpoint: "Tablet (768-1023px)", behavior: "Navigation items may remain visible if count is 4 or fewer; otherwise collapse to hamburger; compact height used" },
205
+ { breakpoint: "Desktop (1024-1439px)", behavior: "Full horizontal navigation visible; all items and actions displayed inline; standard spacing" },
206
+ { breakpoint: "Ultra-wide (>=1440px)", behavior: "Navbar content constrained to maxWidth and centered; background extends full width; no proportional scaling" },
207
+ ],
208
+
209
+ accessibilitySpec: {
210
+ intro:
211
+ "The navbar is typically the first interactive region users encounter. Proper landmark roles, skip links, and keyboard navigation are essential for an accessible experience.",
212
+ requirements: [
213
+ { requirement: "Banner Landmark", level: "A", notes: "Use role='banner' on the header wrapper to establish a page-level landmark for assistive technology" },
214
+ { requirement: "Navigation Landmark", level: "A", notes: "Wrap navigation items in <nav> with aria-label='Main navigation' to distinguish from other nav regions" },
215
+ { requirement: "Skip Link", level: "A", notes: "Provide a 'Skip to main content' link as the first focusable element; visible on focus for keyboard users" },
216
+ { requirement: "Keyboard Navigation", level: "A", notes: "All navigation items and actions reachable via Tab; Enter activates links; Escape closes mobile drawer" },
217
+ { requirement: "Mobile Drawer Focus Trap", level: "AA", notes: "When mobile drawer is open, focus is trapped within the drawer; Tab cycles through drawer items only" },
218
+ { requirement: "Contrast Ratio", level: "AA", notes: "Navigation text to background: 4.5:1; active indicator to background: 3:1 non-text contrast" },
219
+ { requirement: "Hamburger Button Label", level: "A", notes: "Mobile menu button must have aria-label='Open menu' and aria-expanded reflecting open/closed state" },
220
+ ],
221
+ outro: [
222
+ "When the mobile drawer closes, return focus to the hamburger button to maintain the user's place",
223
+ "Ensure scroll-triggered visual changes (shadow, opacity) do not cause content reflow or layout shifts",
224
+ ],
225
+ },
226
+
227
+ qaAcceptanceCriteria: [
228
+ { check: "Visual Regression", platform: "All", expectedResult: "Navbar renders pixel-perfect against baseline for each size and state (default, scrolled, mobile)" },
229
+ { check: "Sticky Behavior", platform: "Web", expectedResult: "Navbar remains fixed at top during scroll; content scrolls beneath it without overlap issues" },
230
+ { check: "Scroll Shadow", platform: "Web", expectedResult: "Shadow appears smoothly after scrolling past threshold; disappears when scrolled back to top" },
231
+ { check: "Active Item", platform: "All", expectedResult: "Active navigation item displays indicator; updates correctly on route change" },
232
+ { check: "Hover State", platform: "Web", expectedResult: "Navigation items show background tint or underline on hover with smooth transition" },
233
+ { check: "Focus State", platform: "Web", expectedResult: "Focus ring visible on Tab for all interactive elements; hidden on mouse click (focus-visible)" },
234
+ { check: "Mobile Collapse", platform: "Mobile", expectedResult: "Navigation items hidden below mobileBreakpoint; hamburger icon visible and functional" },
235
+ { check: "Mobile Drawer", platform: "Mobile", expectedResult: "Drawer opens with animation; overlay visible; items navigable; closes on Escape or overlay click" },
236
+ { check: "Skip Link", platform: "Web", expectedResult: "Skip link is hidden until focused; on activation, focus moves to main content region" },
237
+ { check: "Screen Reader", platform: "Web", expectedResult: "Announces 'banner' landmark, 'Main navigation', item count, and active item designation" },
238
+ { check: "Keyboard Navigation", platform: "Web", expectedResult: "Tab moves through items in order; Enter activates; focus trapped in open mobile drawer" },
239
+ { check: "RTL Support", platform: "Web", expectedResult: "Logo moves to right; items reverse order; hamburger icon on left in RTL locales" },
240
+ { check: "Contrast", platform: "All", expectedResult: "All text and indicator colors pass 4.5:1 text and 3:1 non-text contrast ratios" },
241
+ ],
242
+
243
+ dos: [
244
+ "Use role='banner' for the site-wide header and <nav> with aria-label for the navigation region",
245
+ "Always provide a 'Skip to content' link as the first focusable element",
246
+ "Keep top-level navigation items to 5-7 entries for scannability",
247
+ "Ensure the logo links to the homepage as users universally expect",
248
+ "Add elevation (shadow) on scroll to provide visual separation from scrolling content",
249
+ "Trap focus within the mobile drawer when it is open to prevent tabbing to obscured content",
250
+ "Use the sticky or fixed position for the navbar to maintain persistent access to navigation",
251
+ "Mirror the desktop navigation order in the mobile drawer for consistency",
252
+ ],
253
+
254
+ donts: [
255
+ "Do not use the navbar for secondary or contextual navigation — use a sidebar or tabs component instead",
256
+ "Do not remove the focus outline on navigation items without providing an equally visible alternative",
257
+ "Do not auto-hide the navbar on scroll-down without a clear mechanism to bring it back on scroll-up",
258
+ "Do not place more than 3 action items in the trailing slot — prioritize ruthlessly",
259
+ "Do not use the navbar background color as the sole indicator of scrolled state — add shadow or border",
260
+ "Do not allow the mobile drawer to open without a backdrop overlay to provide context separation",
261
+ "Do not make the hamburger menu button smaller than 44x44px touch target",
262
+ "Do not use different navigation structures between desktop and mobile — items must match",
263
+ ],
264
+ };
@@ -0,0 +1,251 @@
1
+ /**
2
+ * navigation.ts — Gold-standard design knowledge for Navigation Bar / Menu components
3
+ */
4
+ import type { ComponentKnowledge } from "../types.js";
5
+
6
+ export const navigationKnowledge: ComponentKnowledge = {
7
+ description:
8
+ "Wayfinding structure | Site navigation bar | Primary route controller",
9
+
10
+ stateSpecifications: [
11
+ {
12
+ state: "Default",
13
+ visualChange: "Horizontal bar with navigation items displayed as text links or icon+text combinations",
14
+ opacity: "1",
15
+ cursorWeb: "default",
16
+ usage: "Standard navigation bar displaying available routes",
17
+ },
18
+ {
19
+ state: "Item Hover",
20
+ visualChange: "Hovered nav item shows subtle background highlight or underline preview",
21
+ opacity: "1",
22
+ cursorWeb: "pointer",
23
+ usage: "Cursor enters a navigation item's hit area",
24
+ },
25
+ {
26
+ state: "Item Active",
27
+ visualChange: "Active item has a bold label, accent-colored underline/indicator, and distinct background",
28
+ opacity: "1",
29
+ cursorWeb: "default",
30
+ usage: "The navigation item matches the current page or route",
31
+ },
32
+ {
33
+ state: "Item Focus",
34
+ visualChange: "2px focus ring visible around the focused navigation item",
35
+ opacity: "1",
36
+ cursorWeb: "pointer",
37
+ usage: "Navigation item receives keyboard focus via Tab key",
38
+ },
39
+ {
40
+ state: "Mobile Collapsed",
41
+ visualChange: "Navigation items hidden; hamburger menu icon visible in the top bar",
42
+ opacity: "1",
43
+ cursorWeb: "pointer",
44
+ usage: "Viewport is below the mobile breakpoint; nav is collapsed to save space",
45
+ },
46
+ {
47
+ state: "Mobile Expanded",
48
+ visualChange: "Full-height overlay or slide-out drawer displaying navigation items vertically",
49
+ opacity: "1",
50
+ cursorWeb: "default",
51
+ usage: "User opened the hamburger menu; all nav items are visible in a drawer",
52
+ },
53
+ {
54
+ state: "Submenu Open",
55
+ visualChange: "Dropdown panel or flyout appears below/beside the parent nav item with nested links",
56
+ opacity: "1",
57
+ cursorWeb: "default",
58
+ usage: "User hovered or clicked a nav item that has child routes",
59
+ },
60
+ ],
61
+
62
+ propertyDescriptions: {
63
+ items: "Array of navigation item objects with label, href/route, icon, and optional children for submenus",
64
+ orientation: "Layout direction — Horizontal (top nav bar) or Vertical (sidebar navigation)",
65
+ activeItem: "Identifier of the currently active navigation item matching the current route",
66
+ collapsible: "When true, the navigation collapses to a hamburger menu below the mobile breakpoint",
67
+ logo: "Optional branding slot rendered at the leading edge of the navigation bar",
68
+ actions: "Optional trailing slot for utility actions (search, notifications, profile avatar)",
69
+ sticky: "When true, the navigation bar remains fixed at the top of the viewport during scroll",
70
+ },
71
+
72
+ sizeSpecifications: [
73
+ {
74
+ size: "Compact",
75
+ height: "48px",
76
+ paddingLR: "16px",
77
+ fontSize: "13px",
78
+ iconSize: "18px",
79
+ borderRadius: "0px",
80
+ },
81
+ {
82
+ size: "Default",
83
+ height: "56px",
84
+ paddingLR: "24px",
85
+ fontSize: "14px",
86
+ iconSize: "20px",
87
+ borderRadius: "0px",
88
+ },
89
+ {
90
+ size: "Large",
91
+ height: "64px",
92
+ paddingLR: "32px",
93
+ fontSize: "15px",
94
+ iconSize: "22px",
95
+ borderRadius: "0px",
96
+ },
97
+ {
98
+ size: "Sidebar Item",
99
+ height: "40px",
100
+ paddingLR: "12px",
101
+ fontSize: "14px",
102
+ iconSize: "20px",
103
+ borderRadius: "8px",
104
+ },
105
+ {
106
+ size: "Mobile Drawer Item",
107
+ height: "48px",
108
+ paddingLR: "16px",
109
+ fontSize: "16px",
110
+ iconSize: "22px",
111
+ borderRadius: "0px",
112
+ },
113
+ ],
114
+
115
+ designTokenBindings: [
116
+ {
117
+ property: "Bar Background",
118
+ tokenName: "$nav-bg",
119
+ role: "Background fill for the navigation bar container",
120
+ fallback: "#FFFFFF",
121
+ },
122
+ {
123
+ property: "Item Text",
124
+ tokenName: "$nav-item-text",
125
+ role: "Default navigation item label color",
126
+ fallback: "#4B5563",
127
+ },
128
+ {
129
+ property: "Item Text Active",
130
+ tokenName: "$nav-item-text-active",
131
+ role: "Active navigation item label color — higher contrast or accent",
132
+ fallback: "#111827",
133
+ },
134
+ {
135
+ property: "Active Indicator",
136
+ tokenName: "$nav-active-indicator",
137
+ role: "Accent color for the active item underline or sidebar highlight",
138
+ fallback: "#2563EB",
139
+ },
140
+ {
141
+ property: "Item Hover Bg",
142
+ tokenName: "$nav-item-hover",
143
+ role: "Subtle background fill on navigation item hover",
144
+ fallback: "#F3F4F6",
145
+ },
146
+ {
147
+ property: "Border Bottom",
148
+ tokenName: "$nav-border",
149
+ role: "Bottom border separating the nav bar from page content",
150
+ fallback: "#E5E7EB",
151
+ },
152
+ {
153
+ property: "Focus Ring",
154
+ tokenName: "$focus-ring",
155
+ role: "Keyboard focus indicator ring for nav items",
156
+ fallback: "0 0 0 2px #FFFFFF, 0 0 0 4px #2E90FA",
157
+ },
158
+ ],
159
+
160
+ structureRules: [
161
+ "Navigation bar uses a <nav> element with an aria-label (e.g. 'Main navigation')",
162
+ "Items are rendered as an unordered list (<ul>) with each item in an <li> containing an <a> or <button>",
163
+ "Horizontal layout uses Auto Layout with space-between for logo/items/actions sections",
164
+ "Active item indicator (underline or side bar) is a pseudo-element or child element — not a border",
165
+ "Mobile hamburger button is positioned in the top-right or top-left of the nav bar",
166
+ "Mobile drawer overlay uses a semi-transparent backdrop (z-index above page content, below modals)",
167
+ "Submenus are rendered as nested <ul> elements positioned absolutely below or beside the parent item",
168
+ ],
169
+
170
+ typeHierarchyRules: [
171
+ "Navigation item labels use Medium weight (500) for default state and Semi-Bold (600) for active state",
172
+ "Text uses sentence case — 'Getting started', not 'Getting Started' or 'GETTING STARTED'",
173
+ "Navigation items are single-line only; long labels should be shortened, never wrapped",
174
+ "Logo text or branding uses a distinct typeface or weight to differentiate from nav items",
175
+ "Submenu items use the same font size as primary items or one step smaller",
176
+ ],
177
+
178
+ interactionRules: [
179
+ { event: "Item Click", trigger: "pointerup on navigation item", action: "Navigate to the associated route; update active state" },
180
+ { event: "Submenu Hover", trigger: "pointerenter on parent item with children", action: "Open submenu dropdown after a 150ms delay to prevent flash on pass-through" },
181
+ { event: "Hamburger Click", trigger: "pointerup on mobile menu button", action: "Toggle mobile drawer open/closed; trap focus within drawer when open" },
182
+ { event: "Escape Key", trigger: "Escape while mobile drawer or submenu is open", action: "Close the drawer/submenu; return focus to the trigger element" },
183
+ { event: "Tab Navigation", trigger: "Tab key through nav items", action: "Move focus linearly through visible items; skip hidden submenus" },
184
+ { event: "Arrow Keys", trigger: "Arrow keys while nav is focused", action: "Horizontal: Left/Right for top nav; Vertical: Up/Down for sidebar and submenus" },
185
+ { event: "Skip Link", trigger: "First Tab press on the page", action: "Reveal 'Skip to main content' link before the navigation" },
186
+ ],
187
+
188
+ contentGuidance: [
189
+ "Limit primary navigation to 5-7 items — more causes cognitive overload and layout issues",
190
+ "Use clear, concise labels that describe the destination: 'Products', 'Pricing', 'Documentation'",
191
+ "Avoid generic labels like 'More', 'Misc', or 'Other' — they provide no wayfinding value",
192
+ "Group related items in submenus rather than overcrowding the primary level",
193
+ "Icons should be used consistently — either all items have icons or none do",
194
+ "Mobile drawer should show all items including those in submenus, with indentation for hierarchy",
195
+ ],
196
+
197
+ responsiveBehaviour: [
198
+ { breakpoint: "Mobile (<768px)", behavior: "Collapse to hamburger menu with full-height drawer; logo and key actions remain visible" },
199
+ { breakpoint: "Tablet (768-1023px)", behavior: "May show priority items inline with overflow in a 'More' dropdown" },
200
+ { breakpoint: "Desktop (1024-1439px)", behavior: "Full horizontal navigation with all primary items visible inline" },
201
+ { breakpoint: "Ultra-wide (>=1440px)", behavior: "Navigation width capped at max-width container; centered on the page" },
202
+ { breakpoint: "Sidebar Mode", behavior: "Vertical navigation docked to the left; may collapse to icon-only rail on narrow viewports" },
203
+ ],
204
+
205
+ accessibilitySpec: {
206
+ intro:
207
+ "Navigation is the primary wayfinding mechanism and must be fully accessible via keyboard, screen readers, and assistive technologies.",
208
+ requirements: [
209
+ { requirement: "Landmark Role", level: "A", notes: "Use <nav> element with aria-label distinguishing multiple nav regions (e.g. 'Main', 'Footer')" },
210
+ { requirement: "Skip Navigation", level: "A", notes: "Provide a 'Skip to main content' link as the first focusable element on the page" },
211
+ { requirement: "Current Page", level: "A", notes: "Active item uses aria-current='page' to announce the current location" },
212
+ { requirement: "Keyboard Navigation", level: "A", notes: "Tab moves through items; arrow keys navigate within menus; Escape closes submenus" },
213
+ { requirement: "Submenu Disclosure", level: "A", notes: "Parent items with submenus use aria-expanded and aria-haspopup='menu'" },
214
+ { requirement: "Contrast Ratio", level: "AA", notes: "Item text-to-background: 4.5:1; active indicator: 3:1 non-text contrast" },
215
+ { requirement: "Focus Trapping", level: "AA", notes: "Mobile drawer traps focus within the drawer until it is closed" },
216
+ ],
217
+ outro: [
218
+ "Ensure mobile drawer close button is the first or last focusable element for easy dismissal",
219
+ "Announce route changes to screen readers via an aria-live region or page title update",
220
+ ],
221
+ },
222
+
223
+ qaAcceptanceCriteria: [
224
+ { check: "Active Indicator", platform: "All", expectedResult: "Current page item shows accent underline/highlight; other items remain in default state" },
225
+ { check: "Mobile Collapse", platform: "Mobile", expectedResult: "Nav collapses to hamburger below breakpoint; drawer opens/closes smoothly" },
226
+ { check: "Sticky Behavior", platform: "Web", expectedResult: "Nav bar remains fixed during scroll; no content hidden behind it (scroll padding applied)" },
227
+ { check: "Submenu Open/Close", platform: "Web", expectedResult: "Submenu opens on hover/click with delay; closes on mouse leave or Escape" },
228
+ { check: "Keyboard Flow", platform: "Web", expectedResult: "Tab traverses all items; arrow keys work within submenus; Escape closes menus" },
229
+ { check: "Skip Link", platform: "Web", expectedResult: "Skip link visible on first Tab; activating it moves focus to main content area" },
230
+ { check: "Screen Reader", platform: "Web", expectedResult: "Announces nav landmark, current page, expanded/collapsed submenu states" },
231
+ ],
232
+
233
+ dos: [
234
+ "Use a <nav> landmark with a descriptive aria-label for every navigation region",
235
+ "Include a 'Skip to main content' link as the first focusable element",
236
+ "Mark the active item with aria-current='page' and a visual indicator",
237
+ "Collapse to a hamburger menu on mobile with a full-height drawer",
238
+ "Use sticky positioning so the nav remains accessible during long page scrolls",
239
+ "Group submenus logically and limit nesting to two levels maximum",
240
+ ],
241
+
242
+ donts: [
243
+ "Do not use more than 7 primary navigation items — prioritize and group into submenus",
244
+ "Do not remove the active state indicator — users need to know where they are",
245
+ "Do not nest menus more than 2 levels deep — it creates confusion and accessibility issues",
246
+ "Do not use the navigation bar for non-navigational actions like form submission",
247
+ "Do not auto-collapse sidebar navigation without providing a toggle to expand it",
248
+ "Do not use different interaction patterns (hover vs click) for submenus across the same nav",
249
+ "Do not place the navigation below the fold or in unexpected positions",
250
+ ],
251
+ };