@jack200714/mafw 4.5.1 → 4.8.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 (330) hide show
  1. package/README.md +5 -2
  2. package/bin/mafw.js +16 -14
  3. package/gateway/dist/index.js +52 -38
  4. package/gateway/dist/media/media-plugin-loader.js +0 -12
  5. package/gateway/dist/plugins/hub.js +153 -19
  6. package/gateway/dist/routes/plugins.js +15 -5
  7. package/gateway/dist/runtime/event-broadcast.js +33 -0
  8. package/gateway/dist/runtime/loader.js +23 -13
  9. package/gateway/dist/usage/builtin-plugins/gateway.js +25 -3
  10. package/gateway/dist/usage/plugin-loader.js +0 -11
  11. package/gateway/package.json +2 -2
  12. package/package.json +1 -7
  13. package/packages/tui/dist/cli.js +8 -3
  14. package/.opencode/mafw/.backup-v61/parametric/base-skill-manifest.yaml +0 -2
  15. package/.opencode/mafw/STATUS.md +0 -6
  16. package/.opencode/mafw/ledger.md +0 -20
  17. package/.opencode/mafw/memory/.harmonic_index.json +0 -28
  18. package/.opencode/mafw/memory/.review_queue.json +0 -1
  19. package/.opencode/mafw/memory/tier3/parametric.json +0 -13
  20. package/.opencode/mafw/memory/tier3/test-goal.json +0 -19
  21. package/.opencode/mafw/memory-index.json +0 -6
  22. package/.opencode/mafw/parametric/base-skill-manifest.yaml +0 -2
  23. package/.opencode/mafw/waves.json +0 -4
  24. package/.opencode/opencode.json +0 -3
  25. package/.opencode/plugins/mafw-plugin.ts +0 -8
  26. package/.opencode/skills/banner-design/SKILL.md +0 -196
  27. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +0 -118
  28. package/.opencode/skills/brand/SKILL.md +0 -97
  29. package/.opencode/skills/brand/references/approval-checklist.md +0 -169
  30. package/.opencode/skills/brand/references/asset-organization.md +0 -157
  31. package/.opencode/skills/brand/references/brand-guideline-template.md +0 -140
  32. package/.opencode/skills/brand/references/color-palette-management.md +0 -186
  33. package/.opencode/skills/brand/references/consistency-checklist.md +0 -94
  34. package/.opencode/skills/brand/references/logo-usage-rules.md +0 -185
  35. package/.opencode/skills/brand/references/messaging-framework.md +0 -85
  36. package/.opencode/skills/brand/references/typography-specifications.md +0 -214
  37. package/.opencode/skills/brand/references/update.md +0 -118
  38. package/.opencode/skills/brand/references/visual-identity.md +0 -96
  39. package/.opencode/skills/brand/references/voice-framework.md +0 -88
  40. package/.opencode/skills/brand/scripts/extract-colors.cjs +0 -341
  41. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +0 -349
  42. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +0 -248
  43. package/.opencode/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +0 -52
  44. package/.opencode/skills/brand/scripts/validate-asset.cjs +0 -387
  45. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +0 -275
  46. package/.opencode/skills/design/SKILL.md +0 -313
  47. package/.opencode/skills/design/data/cip/deliverables.csv +0 -51
  48. package/.opencode/skills/design/data/cip/industries.csv +0 -21
  49. package/.opencode/skills/design/data/cip/mockup-contexts.csv +0 -21
  50. package/.opencode/skills/design/data/cip/styles.csv +0 -21
  51. package/.opencode/skills/design/data/icon/styles.csv +0 -16
  52. package/.opencode/skills/design/data/logo/colors.csv +0 -56
  53. package/.opencode/skills/design/data/logo/industries.csv +0 -56
  54. package/.opencode/skills/design/data/logo/styles.csv +0 -56
  55. package/.opencode/skills/design/references/banner-sizes-and-styles.md +0 -118
  56. package/.opencode/skills/design/references/cip-deliverable-guide.md +0 -95
  57. package/.opencode/skills/design/references/cip-design.md +0 -121
  58. package/.opencode/skills/design/references/cip-prompt-engineering.md +0 -84
  59. package/.opencode/skills/design/references/cip-style-guide.md +0 -68
  60. package/.opencode/skills/design/references/design-routing.md +0 -207
  61. package/.opencode/skills/design/references/icon-design.md +0 -122
  62. package/.opencode/skills/design/references/logo-color-psychology.md +0 -101
  63. package/.opencode/skills/design/references/logo-design.md +0 -92
  64. package/.opencode/skills/design/references/logo-prompt-engineering.md +0 -158
  65. package/.opencode/skills/design/references/logo-style-guide.md +0 -109
  66. package/.opencode/skills/design/references/slides-copywriting-formulas.md +0 -84
  67. package/.opencode/skills/design/references/slides-create.md +0 -4
  68. package/.opencode/skills/design/references/slides-html-template.md +0 -295
  69. package/.opencode/skills/design/references/slides-layout-patterns.md +0 -137
  70. package/.opencode/skills/design/references/slides-strategies.md +0 -94
  71. package/.opencode/skills/design/references/slides.md +0 -42
  72. package/.opencode/skills/design/references/social-photos-design.md +0 -329
  73. package/.opencode/skills/design/scripts/cip/core.py +0 -215
  74. package/.opencode/skills/design/scripts/cip/generate.py +0 -484
  75. package/.opencode/skills/design/scripts/cip/render-html.py +0 -424
  76. package/.opencode/skills/design/scripts/cip/search.py +0 -127
  77. package/.opencode/skills/design/scripts/icon/generate.py +0 -487
  78. package/.opencode/skills/design/scripts/logo/core.py +0 -175
  79. package/.opencode/skills/design/scripts/logo/generate.py +0 -362
  80. package/.opencode/skills/design/scripts/logo/search.py +0 -114
  81. package/.opencode/skills/design-system/SKILL.md +0 -244
  82. package/.opencode/skills/design-system/data/slide-backgrounds.csv +0 -11
  83. package/.opencode/skills/design-system/data/slide-charts.csv +0 -26
  84. package/.opencode/skills/design-system/data/slide-color-logic.csv +0 -14
  85. package/.opencode/skills/design-system/data/slide-copy.csv +0 -26
  86. package/.opencode/skills/design-system/data/slide-layout-logic.csv +0 -16
  87. package/.opencode/skills/design-system/data/slide-layouts.csv +0 -26
  88. package/.opencode/skills/design-system/data/slide-strategies.csv +0 -16
  89. package/.opencode/skills/design-system/data/slide-typography.csv +0 -15
  90. package/.opencode/skills/design-system/references/component-specs.md +0 -236
  91. package/.opencode/skills/design-system/references/component-tokens.md +0 -214
  92. package/.opencode/skills/design-system/references/primitive-tokens.md +0 -203
  93. package/.opencode/skills/design-system/references/semantic-tokens.md +0 -215
  94. package/.opencode/skills/design-system/references/states-and-variants.md +0 -241
  95. package/.opencode/skills/design-system/references/tailwind-integration.md +0 -251
  96. package/.opencode/skills/design-system/references/token-architecture.md +0 -224
  97. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +0 -99
  98. package/.opencode/skills/design-system/scripts/fetch-background.py +0 -317
  99. package/.opencode/skills/design-system/scripts/generate-slide.py +0 -770
  100. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +0 -205
  101. package/.opencode/skills/design-system/scripts/html-token-validator.py +0 -327
  102. package/.opencode/skills/design-system/scripts/search-slides.py +0 -218
  103. package/.opencode/skills/design-system/scripts/slide-token-validator.py +0 -35
  104. package/.opencode/skills/design-system/scripts/slide_search_core.py +0 -453
  105. package/.opencode/skills/design-system/scripts/tests/test_validate_tokens.py +0 -48
  106. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +0 -246
  107. package/.opencode/skills/design-system/templates/design-tokens-starter.json +0 -143
  108. package/.opencode/skills/frontend-design/LICENSE.txt +0 -21
  109. package/.opencode/skills/frontend-design/SKILL.md +0 -115
  110. package/.opencode/skills/mafw-automation-interview/SKILL.md +0 -43
  111. package/.opencode/skills/mafw-cli-scanner/SKILL.md +0 -37
  112. package/.opencode/skills/mafw-compression-verifier/SKILL.md +0 -52
  113. package/.opencode/skills/mafw-desktop-inspector/SKILL.md +0 -170
  114. package/.opencode/skills/mafw-execute/SKILL.md +0 -62
  115. package/.opencode/skills/mafw-gateway-restart/SKILL.md +0 -87
  116. package/.opencode/skills/mafw-github-scanner/SKILL.md +0 -38
  117. package/.opencode/skills/mafw-goal/SKILL.md +0 -76
  118. package/.opencode/skills/mafw-interview/SKILL.md +0 -68
  119. package/.opencode/skills/mafw-memory-extractor/SKILL.md +0 -65
  120. package/.opencode/skills/mafw-plan/SKILL.md +0 -58
  121. package/.opencode/skills/mafw-review/SKILL.md +0 -85
  122. package/.opencode/skills/runtime-plugin-authoring/SKILL.md +0 -791
  123. package/.opencode/skills/slides/SKILL.md +0 -40
  124. package/.opencode/skills/slides/references/copywriting-formulas.md +0 -84
  125. package/.opencode/skills/slides/references/create.md +0 -4
  126. package/.opencode/skills/slides/references/html-template.md +0 -295
  127. package/.opencode/skills/slides/references/layout-patterns.md +0 -137
  128. package/.opencode/skills/slides/references/slide-strategies.md +0 -94
  129. package/.opencode/skills/ui-styling/LICENSE.txt +0 -202
  130. package/.opencode/skills/ui-styling/SKILL.md +0 -324
  131. package/.opencode/skills/ui-styling/references/canvas-design-system.md +0 -320
  132. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +0 -471
  133. package/.opencode/skills/ui-styling/references/shadcn-components.md +0 -424
  134. package/.opencode/skills/ui-styling/references/shadcn-theming.md +0 -373
  135. package/.opencode/skills/ui-styling/references/tailwind-customization.md +0 -483
  136. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +0 -382
  137. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +0 -455
  138. package/.opencode/skills/ui-styling/scripts/requirements.txt +0 -17
  139. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +0 -308
  140. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +0 -473
  141. package/.opencode/skills/ui-styling/scripts/tests/coverage-ui.json +0 -1
  142. package/.opencode/skills/ui-styling/scripts/tests/requirements.txt +0 -3
  143. package/.opencode/skills/ui-styling/scripts/tests/test_shadcn_add.py +0 -266
  144. package/.opencode/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +0 -394
  145. package/.opencode/skills/ui-ux-pro-max/SKILL.md +0 -388
  146. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
  147. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +0 -26
  148. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +0 -193
  149. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
  150. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +0 -106
  151. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +0 -35
  152. package/.opencode/skills/ui-ux-pro-max/data/motion.csv +0 -17
  153. package/.opencode/skills/ui-ux-pro-max/data/products.csv +0 -193
  154. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  155. package/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +0 -51
  156. package/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
  157. package/.opencode/skills/ui-ux-pro-max/data/stacks/avalonia.csv +0 -57
  158. package/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  159. package/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  160. package/.opencode/skills/ui-ux-pro-max/data/stacks/javafx.csv +0 -76
  161. package/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  162. package/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +0 -51
  163. package/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  164. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -71
  165. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  166. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  167. package/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
  168. package/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  169. package/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  170. package/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  171. package/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +0 -54
  172. package/.opencode/skills/ui-ux-pro-max/data/stacks/uno.csv +0 -60
  173. package/.opencode/skills/ui-ux-pro-max/data/stacks/uwp.csv +0 -56
  174. package/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  175. package/.opencode/skills/ui-ux-pro-max/data/stacks/winui.csv +0 -60
  176. package/.opencode/skills/ui-ux-pro-max/data/stacks/wpf.csv +0 -57
  177. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +0 -85
  178. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +0 -75
  179. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
  180. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  181. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +0 -464
  182. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +0 -1479
  183. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +0 -162
  184. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_core.py +0 -134
  185. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_design_system_mode.py +0 -159
  186. package/.opencode/skills/ui-ux-pro-max/scripts/validate_data.py +0 -114
  187. package/dist/hooks/bash-python-guide.d.ts +0 -4
  188. package/dist/hooks/bash-python-guide.d.ts.map +0 -1
  189. package/dist/hooks/bash-python-guide.js +0 -67
  190. package/dist/hooks/bash-python-guide.js.map +0 -1
  191. package/dist/hooks/handoff.d.ts +0 -9
  192. package/dist/hooks/handoff.d.ts.map +0 -1
  193. package/dist/hooks/handoff.js +0 -8
  194. package/dist/hooks/handoff.js.map +0 -1
  195. package/dist/hooks/hook-manager.d.ts +0 -32
  196. package/dist/hooks/hook-manager.d.ts.map +0 -1
  197. package/dist/hooks/hook-manager.js +0 -91
  198. package/dist/hooks/hook-manager.js.map +0 -1
  199. package/dist/hooks/llm-after.d.ts +0 -8
  200. package/dist/hooks/llm-after.d.ts.map +0 -1
  201. package/dist/hooks/llm-after.js +0 -8
  202. package/dist/hooks/llm-after.js.map +0 -1
  203. package/dist/hooks/media-ingest.d.ts +0 -43
  204. package/dist/hooks/media-ingest.d.ts.map +0 -1
  205. package/dist/hooks/media-ingest.js +0 -269
  206. package/dist/hooks/media-ingest.js.map +0 -1
  207. package/dist/hooks/memory-guide.d.ts +0 -3
  208. package/dist/hooks/memory-guide.d.ts.map +0 -1
  209. package/dist/hooks/memory-guide.js +0 -47
  210. package/dist/hooks/memory-guide.js.map +0 -1
  211. package/dist/hooks/observation-capture.d.ts +0 -17
  212. package/dist/hooks/observation-capture.d.ts.map +0 -1
  213. package/dist/hooks/observation-capture.js +0 -20
  214. package/dist/hooks/observation-capture.js.map +0 -1
  215. package/dist/hooks/session-compacting.d.ts +0 -6
  216. package/dist/hooks/session-compacting.d.ts.map +0 -1
  217. package/dist/hooks/session-compacting.js +0 -6
  218. package/dist/hooks/session-compacting.js.map +0 -1
  219. package/dist/hooks/session-ending.d.ts +0 -20
  220. package/dist/hooks/session-ending.d.ts.map +0 -1
  221. package/dist/hooks/session-ending.js +0 -113
  222. package/dist/hooks/session-ending.js.map +0 -1
  223. package/dist/hooks/session-recall.d.ts +0 -2
  224. package/dist/hooks/session-recall.d.ts.map +0 -1
  225. package/dist/hooks/session-recall.js +0 -103
  226. package/dist/hooks/session-recall.js.map +0 -1
  227. package/dist/hooks/session-start.d.ts +0 -9
  228. package/dist/hooks/session-start.d.ts.map +0 -1
  229. package/dist/hooks/session-start.js +0 -42
  230. package/dist/hooks/session-start.js.map +0 -1
  231. package/dist/hooks/tool-before.d.ts +0 -10
  232. package/dist/hooks/tool-before.d.ts.map +0 -1
  233. package/dist/hooks/tool-before.js +0 -6
  234. package/dist/hooks/tool-before.js.map +0 -1
  235. package/dist/hooks/tool-executed.d.ts +0 -19
  236. package/dist/hooks/tool-executed.d.ts.map +0 -1
  237. package/dist/hooks/tool-executed.js +0 -12
  238. package/dist/hooks/tool-executed.js.map +0 -1
  239. package/dist/hooks/user-profile.d.ts +0 -2
  240. package/dist/hooks/user-profile.d.ts.map +0 -1
  241. package/dist/hooks/user-profile.js +0 -30
  242. package/dist/hooks/user-profile.js.map +0 -1
  243. package/dist/hooks/user-prompt.d.ts +0 -9
  244. package/dist/hooks/user-prompt.d.ts.map +0 -1
  245. package/dist/hooks/user-prompt.js +0 -8
  246. package/dist/hooks/user-prompt.js.map +0 -1
  247. package/dist/hooks/voice-guide.d.ts +0 -8
  248. package/dist/hooks/voice-guide.d.ts.map +0 -1
  249. package/dist/hooks/voice-guide.js +0 -101
  250. package/dist/hooks/voice-guide.js.map +0 -1
  251. package/dist/plugin.d.ts +0 -55
  252. package/dist/plugin.d.ts.map +0 -1
  253. package/dist/plugin.js +0 -342
  254. package/dist/plugin.js.map +0 -1
  255. package/dist/tools/add-memory.d.ts +0 -17
  256. package/dist/tools/add-memory.d.ts.map +0 -1
  257. package/dist/tools/add-memory.js +0 -60
  258. package/dist/tools/add-memory.js.map +0 -1
  259. package/dist/tools/media-ask.d.ts +0 -14
  260. package/dist/tools/media-ask.d.ts.map +0 -1
  261. package/dist/tools/media-ask.js +0 -224
  262. package/dist/tools/media-ask.js.map +0 -1
  263. package/dist/tools/media-speak.d.ts +0 -16
  264. package/dist/tools/media-speak.d.ts.map +0 -1
  265. package/dist/tools/media-speak.js +0 -78
  266. package/dist/tools/media-speak.js.map +0 -1
  267. package/dist/tools/media-upload.d.ts +0 -14
  268. package/dist/tools/media-upload.d.ts.map +0 -1
  269. package/dist/tools/media-upload.js +0 -155
  270. package/dist/tools/media-upload.js.map +0 -1
  271. package/dist/tools/python-exec.d.ts +0 -13
  272. package/dist/tools/python-exec.d.ts.map +0 -1
  273. package/dist/tools/python-exec.js +0 -99
  274. package/dist/tools/python-exec.js.map +0 -1
  275. package/dist/tools/python-restart.d.ts +0 -11
  276. package/dist/tools/python-restart.d.ts.map +0 -1
  277. package/dist/tools/python-restart.js +0 -33
  278. package/dist/tools/python-restart.js.map +0 -1
  279. package/dist/utils/circuit-breaker.d.ts +0 -23
  280. package/dist/utils/circuit-breaker.d.ts.map +0 -1
  281. package/dist/utils/circuit-breaker.js +0 -75
  282. package/dist/utils/circuit-breaker.js.map +0 -1
  283. package/dist/utils/config-loader.d.ts +0 -20
  284. package/dist/utils/config-loader.d.ts.map +0 -1
  285. package/dist/utils/config-loader.js +0 -194
  286. package/dist/utils/config-loader.js.map +0 -1
  287. package/dist/utils/fallback.d.ts +0 -7
  288. package/dist/utils/fallback.d.ts.map +0 -1
  289. package/dist/utils/fallback.js +0 -20
  290. package/dist/utils/fallback.js.map +0 -1
  291. package/dist/utils/git.d.ts +0 -24
  292. package/dist/utils/git.d.ts.map +0 -1
  293. package/dist/utils/git.js +0 -71
  294. package/dist/utils/git.js.map +0 -1
  295. package/dist/utils/github.d.ts +0 -37
  296. package/dist/utils/github.d.ts.map +0 -1
  297. package/dist/utils/github.js +0 -53
  298. package/dist/utils/github.js.map +0 -1
  299. package/dist/utils/global-path.d.ts +0 -2
  300. package/dist/utils/global-path.d.ts.map +0 -1
  301. package/dist/utils/global-path.js +0 -32
  302. package/dist/utils/global-path.js.map +0 -1
  303. package/dist/utils/logger.d.ts +0 -6
  304. package/dist/utils/logger.d.ts.map +0 -1
  305. package/dist/utils/logger.js +0 -69
  306. package/dist/utils/logger.js.map +0 -1
  307. package/dist/utils/obs-capture.d.ts +0 -7
  308. package/dist/utils/obs-capture.d.ts.map +0 -1
  309. package/dist/utils/obs-capture.js +0 -49
  310. package/dist/utils/obs-capture.js.map +0 -1
  311. package/dist/utils/retry.d.ts +0 -11
  312. package/dist/utils/retry.d.ts.map +0 -1
  313. package/dist/utils/retry.js +0 -45
  314. package/dist/utils/retry.js.map +0 -1
  315. package/dist/utils/self-wiring.d.ts +0 -13
  316. package/dist/utils/self-wiring.d.ts.map +0 -1
  317. package/dist/utils/self-wiring.js +0 -86
  318. package/dist/utils/self-wiring.js.map +0 -1
  319. package/dist/utils/state.d.ts +0 -106
  320. package/dist/utils/state.d.ts.map +0 -1
  321. package/dist/utils/state.js +0 -166
  322. package/dist/utils/state.js.map +0 -1
  323. package/dist/utils/status.d.ts +0 -47
  324. package/dist/utils/status.d.ts.map +0 -1
  325. package/dist/utils/status.js +0 -147
  326. package/dist/utils/status.js.map +0 -1
  327. package/dist/utils/ttl-map.d.ts +0 -17
  328. package/dist/utils/ttl-map.d.ts.map +0 -1
  329. package/dist/utils/ttl-map.js +0 -67
  330. package/dist/utils/ttl-map.js.map +0 -1
@@ -1,215 +0,0 @@
1
- # Semantic Tokens
2
-
3
- Purpose-based aliases referencing primitive tokens.
4
-
5
- ## Color Semantics
6
-
7
- ### Background & Foreground
8
-
9
- ```css
10
- :root {
11
- /* Page background */
12
- --color-background: var(--color-gray-50);
13
- --color-foreground: var(--color-gray-900);
14
-
15
- /* Card/surface background */
16
- --color-card: white;
17
- --color-card-foreground: var(--color-gray-900);
18
-
19
- /* Popover/dropdown */
20
- --color-popover: white;
21
- --color-popover-foreground: var(--color-gray-900);
22
- }
23
- ```
24
-
25
- ### Primary
26
-
27
- ```css
28
- :root {
29
- --color-primary: var(--color-blue-600);
30
- --color-primary-hover: var(--color-blue-700);
31
- --color-primary-active: var(--color-blue-800);
32
- --color-primary-foreground: white;
33
- }
34
- ```
35
-
36
- ### Secondary
37
-
38
- ```css
39
- :root {
40
- --color-secondary: var(--color-gray-100);
41
- --color-secondary-hover: var(--color-gray-200);
42
- --color-secondary-foreground: var(--color-gray-900);
43
- }
44
- ```
45
-
46
- ### Muted
47
-
48
- ```css
49
- :root {
50
- --color-muted: var(--color-gray-100);
51
- --color-muted-foreground: var(--color-gray-500);
52
- }
53
- ```
54
-
55
- ### Accent
56
-
57
- ```css
58
- :root {
59
- --color-accent: var(--color-gray-100);
60
- --color-accent-foreground: var(--color-gray-900);
61
- }
62
- ```
63
-
64
- ### Destructive
65
-
66
- ```css
67
- :root {
68
- --color-destructive: var(--color-red-600);
69
- --color-destructive-hover: var(--color-red-700);
70
- --color-destructive-foreground: white;
71
- }
72
- ```
73
-
74
- ### Status Colors
75
-
76
- ```css
77
- :root {
78
- --color-success: var(--color-green-600);
79
- --color-success-foreground: white;
80
-
81
- --color-warning: var(--color-yellow-500);
82
- --color-warning-foreground: var(--color-gray-900);
83
-
84
- --color-error: var(--color-red-600);
85
- --color-error-foreground: white;
86
-
87
- --color-info: var(--color-blue-500);
88
- --color-info-foreground: white;
89
- }
90
- ```
91
-
92
- ### Border & Ring
93
-
94
- ```css
95
- :root {
96
- --color-border: var(--color-gray-200);
97
- --color-input: var(--color-gray-200);
98
- --color-ring: var(--color-blue-500);
99
- }
100
- ```
101
-
102
- ## Spacing Semantics
103
-
104
- ```css
105
- :root {
106
- /* Component internal spacing */
107
- --spacing-component-xs: var(--space-1);
108
- --spacing-component-sm: var(--space-2);
109
- --spacing-component: var(--space-3);
110
- --spacing-component-lg: var(--space-4);
111
-
112
- /* Section spacing */
113
- --spacing-section-sm: var(--space-8);
114
- --spacing-section: var(--space-12);
115
- --spacing-section-lg: var(--space-16);
116
-
117
- /* Page margins */
118
- --spacing-page-x: var(--space-4);
119
- --spacing-page-y: var(--space-6);
120
- }
121
- ```
122
-
123
- ## Typography Semantics
124
-
125
- ```css
126
- :root {
127
- /* Headings */
128
- --font-heading: var(--font-size-2xl);
129
- --font-heading-lg: var(--font-size-3xl);
130
- --font-heading-xl: var(--font-size-4xl);
131
-
132
- /* Body */
133
- --font-body: var(--font-size-base);
134
- --font-body-sm: var(--font-size-sm);
135
- --font-body-lg: var(--font-size-lg);
136
-
137
- /* Labels & Captions */
138
- --font-label: var(--font-size-sm);
139
- --font-caption: var(--font-size-xs);
140
- }
141
- ```
142
-
143
- ## Interactive States
144
-
145
- ```css
146
- :root {
147
- /* Focus ring */
148
- --ring-width: 2px;
149
- --ring-offset: 2px;
150
- --ring-color: var(--color-ring);
151
-
152
- /* Opacity for disabled */
153
- --opacity-disabled: 0.5;
154
-
155
- /* Transitions */
156
- --transition-colors: color, background-color, border-color;
157
- --transition-transform: transform;
158
- --transition-all: all;
159
- }
160
- ```
161
-
162
- ## Dark Mode Overrides
163
-
164
- ```css
165
- .dark {
166
- --color-background: var(--color-gray-950);
167
- --color-foreground: var(--color-gray-50);
168
-
169
- --color-card: var(--color-gray-900);
170
- --color-card-foreground: var(--color-gray-50);
171
-
172
- --color-popover: var(--color-gray-900);
173
- --color-popover-foreground: var(--color-gray-50);
174
-
175
- --color-muted: var(--color-gray-800);
176
- --color-muted-foreground: var(--color-gray-400);
177
-
178
- --color-secondary: var(--color-gray-800);
179
- --color-secondary-foreground: var(--color-gray-50);
180
-
181
- --color-accent: var(--color-gray-800);
182
- --color-accent-foreground: var(--color-gray-50);
183
-
184
- --color-border: var(--color-gray-800);
185
- --color-input: var(--color-gray-800);
186
- }
187
- ```
188
-
189
- ## Usage Patterns
190
-
191
- ### Applying Semantic Tokens
192
-
193
- ```css
194
- /* Good - uses semantic tokens */
195
- .card {
196
- background: var(--color-card);
197
- color: var(--color-card-foreground);
198
- border: 1px solid var(--color-border);
199
- }
200
-
201
- /* Bad - uses primitive tokens directly */
202
- .card {
203
- background: var(--color-gray-50);
204
- color: var(--color-gray-900);
205
- }
206
- ```
207
-
208
- ### Theme Switching
209
-
210
- Semantic tokens enable instant theme switching:
211
-
212
- ```js
213
- // Toggle dark mode
214
- document.documentElement.classList.toggle('dark');
215
- ```
@@ -1,241 +0,0 @@
1
- # States and Variants
2
-
3
- Component state definitions and variant patterns.
4
-
5
- ## Interactive States
6
-
7
- ### State Definitions
8
-
9
- | State | Trigger | Visual Change |
10
- |-------|---------|---------------|
11
- | default | None | Base appearance |
12
- | hover | Mouse over | Slight color shift |
13
- | focus | Tab/click | Focus ring |
14
- | active | Mouse down | Darkest color |
15
- | disabled | disabled attr | Reduced opacity |
16
- | loading | Async action | Spinner + opacity |
17
-
18
- ### State Priority
19
-
20
- When multiple states apply, priority (highest to lowest):
21
-
22
- 1. disabled
23
- 2. loading
24
- 3. active
25
- 4. focus
26
- 5. hover
27
- 6. default
28
-
29
- ### State Transitions
30
-
31
- ```css
32
- /* Standard transition for interactive elements */
33
- .interactive {
34
- transition-property: color, background-color, border-color, box-shadow;
35
- transition-duration: var(--duration-fast);
36
- transition-timing-function: ease-in-out;
37
- }
38
- ```
39
-
40
- | Transition | Duration | Easing |
41
- |------------|----------|--------|
42
- | Color changes | 150ms | ease-in-out |
43
- | Background | 150ms | ease-in-out |
44
- | Transform | 200ms | ease-out |
45
- | Opacity | 150ms | ease |
46
- | Shadow | 200ms | ease-out |
47
-
48
- ## Focus States
49
-
50
- ### Focus Ring Spec
51
-
52
- ```css
53
- /* Standard focus ring */
54
- .focusable:focus-visible {
55
- outline: none;
56
- box-shadow: 0 0 0 var(--ring-offset) var(--color-background),
57
- 0 0 0 calc(var(--ring-offset) + var(--ring-width)) var(--ring-color);
58
- }
59
- ```
60
-
61
- | Property | Value |
62
- |----------|-------|
63
- | Ring width | 2px |
64
- | Ring offset | 2px |
65
- | Ring color | primary (blue-500) |
66
- | Offset color | background |
67
-
68
- ### Focus Within
69
-
70
- ```css
71
- /* Container focus when child is focused */
72
- .container:focus-within {
73
- border-color: var(--color-ring);
74
- }
75
- ```
76
-
77
- ## Disabled States
78
-
79
- ### Visual Treatment
80
-
81
- ```css
82
- .disabled {
83
- opacity: var(--opacity-disabled); /* 0.5 */
84
- pointer-events: none;
85
- cursor: not-allowed;
86
- }
87
- ```
88
-
89
- | Property | Disabled Value |
90
- |----------|----------------|
91
- | Opacity | 50% |
92
- | Pointer events | none |
93
- | Cursor | not-allowed |
94
- | Background | muted |
95
- | Color | muted-foreground |
96
-
97
- ### Accessibility
98
-
99
- - Use `aria-disabled="true"` for semantic disabled
100
- - Use `disabled` attribute for form elements
101
- - Maintain sufficient contrast (3:1 minimum)
102
-
103
- ## Loading States
104
-
105
- ### Spinner Placement
106
-
107
- | Component | Spinner Position |
108
- |-----------|------------------|
109
- | Button | Replace icon or center |
110
- | Input | Trailing position |
111
- | Card | Center overlay |
112
- | Page | Center of viewport |
113
-
114
- ### Loading Treatment
115
-
116
- ```css
117
- .loading {
118
- position: relative;
119
- pointer-events: none;
120
- }
121
-
122
- .loading::after {
123
- content: '';
124
- /* spinner styles */
125
- }
126
-
127
- .loading > * {
128
- opacity: 0.7;
129
- }
130
- ```
131
-
132
- ## Error States
133
-
134
- ### Visual Indicators
135
-
136
- ```css
137
- .error {
138
- border-color: var(--color-error);
139
- color: var(--color-error);
140
- }
141
-
142
- .error:focus-visible {
143
- box-shadow: 0 0 0 2px var(--color-background),
144
- 0 0 0 4px var(--color-error);
145
- }
146
- ```
147
-
148
- | Element | Error Treatment |
149
- |---------|-----------------|
150
- | Input border | red-500 |
151
- | Input focus ring | red/20% |
152
- | Helper text | red-600 |
153
- | Icon | red-500 |
154
-
155
- ### Error Messages
156
-
157
- - Position below input
158
- - Use error color
159
- - Include icon for accessibility
160
- - Clear on valid input
161
-
162
- ## Variant Patterns
163
-
164
- ### Color Variants
165
-
166
- ```css
167
- /* Pattern for color variants */
168
- .component {
169
- --component-bg: var(--color-primary);
170
- --component-fg: var(--color-primary-foreground);
171
- background: var(--component-bg);
172
- color: var(--component-fg);
173
- }
174
-
175
- .component.secondary {
176
- --component-bg: var(--color-secondary);
177
- --component-fg: var(--color-secondary-foreground);
178
- }
179
-
180
- .component.destructive {
181
- --component-bg: var(--color-destructive);
182
- --component-fg: var(--color-destructive-foreground);
183
- }
184
- ```
185
-
186
- ### Size Variants
187
-
188
- ```css
189
- /* Pattern for size variants */
190
- .component {
191
- --component-height: 40px;
192
- --component-padding: var(--space-4);
193
- --component-font: var(--font-size-sm);
194
- }
195
-
196
- .component.sm {
197
- --component-height: 32px;
198
- --component-padding: var(--space-3);
199
- --component-font: var(--font-size-xs);
200
- }
201
-
202
- .component.lg {
203
- --component-height: 48px;
204
- --component-padding: var(--space-6);
205
- --component-font: var(--font-size-base);
206
- }
207
- ```
208
-
209
- ## Accessibility Requirements
210
-
211
- ### Color Contrast
212
-
213
- | Element | Minimum Ratio |
214
- |---------|---------------|
215
- | Normal text | 4.5:1 |
216
- | Large text (18px+) | 3:1 |
217
- | UI components | 3:1 |
218
- | Focus indicator | 3:1 |
219
-
220
- ### State Indicators
221
-
222
- - Never rely on color alone
223
- - Use icons, text, or patterns
224
- - Ensure focus is visible
225
- - Provide loading announcements
226
-
227
- ### ARIA States
228
-
229
- ```html
230
- <!-- Disabled -->
231
- <button disabled aria-disabled="true">Submit</button>
232
-
233
- <!-- Loading -->
234
- <button aria-busy="true" aria-describedby="loading-text">
235
- <span id="loading-text" class="sr-only">Loading...</span>
236
- </button>
237
-
238
- <!-- Error -->
239
- <input aria-invalid="true" aria-describedby="error-msg">
240
- <span id="error-msg" role="alert">Error message</span>
241
- ```
@@ -1,251 +0,0 @@
1
- # Tailwind Integration
2
-
3
- Map design system tokens to Tailwind CSS configuration.
4
-
5
- ## CSS Variables Setup
6
-
7
- ### Base Layer
8
-
9
- ```css
10
- /* globals.css */
11
- @tailwind base;
12
- @tailwind components;
13
- @tailwind utilities;
14
-
15
- @layer base {
16
- :root {
17
- /* Primitives */
18
- --color-blue-600: 37 99 235; /* HSL: 217 91% 60% */
19
-
20
- /* Semantic */
21
- --background: 0 0% 100%;
22
- --foreground: 222 47% 11%;
23
- --primary: 217 91% 60%;
24
- --primary-foreground: 0 0% 100%;
25
- --secondary: 220 14% 96%;
26
- --secondary-foreground: 222 47% 11%;
27
- --muted: 220 14% 96%;
28
- --muted-foreground: 220 9% 46%;
29
- --accent: 220 14% 96%;
30
- --accent-foreground: 222 47% 11%;
31
- --destructive: 0 84% 60%;
32
- --destructive-foreground: 0 0% 100%;
33
- --border: 220 13% 91%;
34
- --input: 220 13% 91%;
35
- --ring: 217 91% 60%;
36
- --radius: 0.5rem;
37
- }
38
-
39
- .dark {
40
- --background: 222 47% 4%;
41
- --foreground: 210 40% 98%;
42
- --primary: 217 91% 60%;
43
- --primary-foreground: 0 0% 100%;
44
- --secondary: 217 33% 17%;
45
- --secondary-foreground: 210 40% 98%;
46
- --muted: 217 33% 17%;
47
- --muted-foreground: 215 20% 65%;
48
- --accent: 217 33% 17%;
49
- --accent-foreground: 210 40% 98%;
50
- --destructive: 0 62% 30%;
51
- --destructive-foreground: 0 0% 100%;
52
- --border: 217 33% 17%;
53
- --input: 217 33% 17%;
54
- --ring: 217 91% 60%;
55
- }
56
- }
57
- ```
58
-
59
- ## Tailwind Config
60
-
61
- ### tailwind.config.ts
62
-
63
- ```typescript
64
- import type { Config } from 'tailwindcss'
65
-
66
- const config: Config = {
67
- darkMode: ['class'],
68
- content: ['./src/**/*.{ts,tsx}'],
69
- theme: {
70
- extend: {
71
- colors: {
72
- background: 'hsl(var(--background))',
73
- foreground: 'hsl(var(--foreground))',
74
- primary: {
75
- DEFAULT: 'hsl(var(--primary))',
76
- foreground: 'hsl(var(--primary-foreground))',
77
- },
78
- secondary: {
79
- DEFAULT: 'hsl(var(--secondary))',
80
- foreground: 'hsl(var(--secondary-foreground))',
81
- },
82
- muted: {
83
- DEFAULT: 'hsl(var(--muted))',
84
- foreground: 'hsl(var(--muted-foreground))',
85
- },
86
- accent: {
87
- DEFAULT: 'hsl(var(--accent))',
88
- foreground: 'hsl(var(--accent-foreground))',
89
- },
90
- destructive: {
91
- DEFAULT: 'hsl(var(--destructive))',
92
- foreground: 'hsl(var(--destructive-foreground))',
93
- },
94
- border: 'hsl(var(--border))',
95
- input: 'hsl(var(--input))',
96
- ring: 'hsl(var(--ring))',
97
- card: {
98
- DEFAULT: 'hsl(var(--card))',
99
- foreground: 'hsl(var(--card-foreground))',
100
- },
101
- },
102
- borderRadius: {
103
- lg: 'var(--radius)',
104
- md: 'calc(var(--radius) - 2px)',
105
- sm: 'calc(var(--radius) - 4px)',
106
- },
107
- },
108
- },
109
- plugins: [],
110
- }
111
-
112
- export default config
113
- ```
114
-
115
- ## HSL Format Benefits
116
-
117
- Using HSL without function allows opacity modifiers:
118
-
119
- ```tsx
120
- // With HSL format (space-separated)
121
- <div className="bg-primary/50"> // 50% opacity
122
- <div className="text-primary/80"> // 80% opacity
123
-
124
- // CSS output
125
- background-color: hsl(217 91% 60% / 0.5);
126
- ```
127
-
128
- ## Component Classes
129
-
130
- ### Button Example
131
-
132
- ```css
133
- @layer components {
134
- .btn {
135
- @apply inline-flex items-center justify-center
136
- rounded-md font-medium
137
- transition-colors
138
- focus-visible:outline-none focus-visible:ring-2
139
- focus-visible:ring-ring focus-visible:ring-offset-2
140
- disabled:pointer-events-none disabled:opacity-50;
141
- }
142
-
143
- .btn-default {
144
- @apply bg-primary text-primary-foreground
145
- hover:bg-primary/90;
146
- }
147
-
148
- .btn-secondary {
149
- @apply bg-secondary text-secondary-foreground
150
- hover:bg-secondary/80;
151
- }
152
-
153
- .btn-outline {
154
- @apply border border-input bg-background
155
- hover:bg-accent hover:text-accent-foreground;
156
- }
157
-
158
- .btn-ghost {
159
- @apply hover:bg-accent hover:text-accent-foreground;
160
- }
161
-
162
- .btn-destructive {
163
- @apply bg-destructive text-destructive-foreground
164
- hover:bg-destructive/90;
165
- }
166
-
167
- /* Sizes */
168
- .btn-sm { @apply h-8 px-3 text-xs; }
169
- .btn-md { @apply h-10 px-4 text-sm; }
170
- .btn-lg { @apply h-12 px-6 text-base; }
171
- }
172
- ```
173
-
174
- ## Spacing Integration
175
-
176
- ```typescript
177
- // tailwind.config.ts
178
- theme: {
179
- extend: {
180
- spacing: {
181
- // Map to CSS variables if needed
182
- 'section': 'var(--spacing-section)',
183
- 'component': 'var(--spacing-component)',
184
- }
185
- }
186
- }
187
- ```
188
-
189
- ## Animation Tokens
190
-
191
- ```typescript
192
- // tailwind.config.ts
193
- theme: {
194
- extend: {
195
- transitionDuration: {
196
- fast: '150ms',
197
- normal: '200ms',
198
- slow: '300ms',
199
- },
200
- keyframes: {
201
- 'accordion-down': {
202
- from: { height: '0' },
203
- to: { height: 'var(--radix-accordion-content-height)' },
204
- },
205
- 'accordion-up': {
206
- from: { height: 'var(--radix-accordion-content-height)' },
207
- to: { height: '0' },
208
- },
209
- },
210
- animation: {
211
- 'accordion-down': 'accordion-down 0.2s ease-out',
212
- 'accordion-up': 'accordion-up 0.2s ease-out',
213
- },
214
- }
215
- }
216
- ```
217
-
218
- ## Dark Mode Toggle
219
-
220
- ```typescript
221
- // Toggle dark mode
222
- function toggleDarkMode() {
223
- document.documentElement.classList.toggle('dark')
224
- }
225
-
226
- // System preference
227
- if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
228
- document.documentElement.classList.add('dark')
229
- }
230
- ```
231
-
232
- ## shadcn/ui Alignment
233
-
234
- This configuration aligns with shadcn/ui conventions:
235
-
236
- - Same CSS variable naming
237
- - Same HSL format
238
- - Same color scale structure
239
- - Compatible with `npx shadcn@latest add` commands
240
-
241
- ### Using with shadcn/ui
242
-
243
- ```bash
244
- # Initialize (uses same token structure)
245
- npx shadcn@latest init
246
-
247
- # Add components (styled with these tokens)
248
- npx shadcn@latest add button card input
249
- ```
250
-
251
- Components will automatically use your design system tokens.