@jack200714/mafw 4.5.1 → 4.5.2

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 (320) hide show
  1. package/README.md +5 -2
  2. package/bin/mafw.js +16 -14
  3. package/package.json +1 -7
  4. package/.opencode/mafw/.backup-v61/parametric/base-skill-manifest.yaml +0 -2
  5. package/.opencode/mafw/STATUS.md +0 -6
  6. package/.opencode/mafw/ledger.md +0 -20
  7. package/.opencode/mafw/memory/.harmonic_index.json +0 -28
  8. package/.opencode/mafw/memory/.review_queue.json +0 -1
  9. package/.opencode/mafw/memory/tier3/parametric.json +0 -13
  10. package/.opencode/mafw/memory/tier3/test-goal.json +0 -19
  11. package/.opencode/mafw/memory-index.json +0 -6
  12. package/.opencode/mafw/parametric/base-skill-manifest.yaml +0 -2
  13. package/.opencode/mafw/waves.json +0 -4
  14. package/.opencode/opencode.json +0 -3
  15. package/.opencode/plugins/mafw-plugin.ts +0 -8
  16. package/.opencode/skills/banner-design/SKILL.md +0 -196
  17. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +0 -118
  18. package/.opencode/skills/brand/SKILL.md +0 -97
  19. package/.opencode/skills/brand/references/approval-checklist.md +0 -169
  20. package/.opencode/skills/brand/references/asset-organization.md +0 -157
  21. package/.opencode/skills/brand/references/brand-guideline-template.md +0 -140
  22. package/.opencode/skills/brand/references/color-palette-management.md +0 -186
  23. package/.opencode/skills/brand/references/consistency-checklist.md +0 -94
  24. package/.opencode/skills/brand/references/logo-usage-rules.md +0 -185
  25. package/.opencode/skills/brand/references/messaging-framework.md +0 -85
  26. package/.opencode/skills/brand/references/typography-specifications.md +0 -214
  27. package/.opencode/skills/brand/references/update.md +0 -118
  28. package/.opencode/skills/brand/references/visual-identity.md +0 -96
  29. package/.opencode/skills/brand/references/voice-framework.md +0 -88
  30. package/.opencode/skills/brand/scripts/extract-colors.cjs +0 -341
  31. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +0 -349
  32. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +0 -248
  33. package/.opencode/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +0 -52
  34. package/.opencode/skills/brand/scripts/validate-asset.cjs +0 -387
  35. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +0 -275
  36. package/.opencode/skills/design/SKILL.md +0 -313
  37. package/.opencode/skills/design/data/cip/deliverables.csv +0 -51
  38. package/.opencode/skills/design/data/cip/industries.csv +0 -21
  39. package/.opencode/skills/design/data/cip/mockup-contexts.csv +0 -21
  40. package/.opencode/skills/design/data/cip/styles.csv +0 -21
  41. package/.opencode/skills/design/data/icon/styles.csv +0 -16
  42. package/.opencode/skills/design/data/logo/colors.csv +0 -56
  43. package/.opencode/skills/design/data/logo/industries.csv +0 -56
  44. package/.opencode/skills/design/data/logo/styles.csv +0 -56
  45. package/.opencode/skills/design/references/banner-sizes-and-styles.md +0 -118
  46. package/.opencode/skills/design/references/cip-deliverable-guide.md +0 -95
  47. package/.opencode/skills/design/references/cip-design.md +0 -121
  48. package/.opencode/skills/design/references/cip-prompt-engineering.md +0 -84
  49. package/.opencode/skills/design/references/cip-style-guide.md +0 -68
  50. package/.opencode/skills/design/references/design-routing.md +0 -207
  51. package/.opencode/skills/design/references/icon-design.md +0 -122
  52. package/.opencode/skills/design/references/logo-color-psychology.md +0 -101
  53. package/.opencode/skills/design/references/logo-design.md +0 -92
  54. package/.opencode/skills/design/references/logo-prompt-engineering.md +0 -158
  55. package/.opencode/skills/design/references/logo-style-guide.md +0 -109
  56. package/.opencode/skills/design/references/slides-copywriting-formulas.md +0 -84
  57. package/.opencode/skills/design/references/slides-create.md +0 -4
  58. package/.opencode/skills/design/references/slides-html-template.md +0 -295
  59. package/.opencode/skills/design/references/slides-layout-patterns.md +0 -137
  60. package/.opencode/skills/design/references/slides-strategies.md +0 -94
  61. package/.opencode/skills/design/references/slides.md +0 -42
  62. package/.opencode/skills/design/references/social-photos-design.md +0 -329
  63. package/.opencode/skills/design/scripts/cip/core.py +0 -215
  64. package/.opencode/skills/design/scripts/cip/generate.py +0 -484
  65. package/.opencode/skills/design/scripts/cip/render-html.py +0 -424
  66. package/.opencode/skills/design/scripts/cip/search.py +0 -127
  67. package/.opencode/skills/design/scripts/icon/generate.py +0 -487
  68. package/.opencode/skills/design/scripts/logo/core.py +0 -175
  69. package/.opencode/skills/design/scripts/logo/generate.py +0 -362
  70. package/.opencode/skills/design/scripts/logo/search.py +0 -114
  71. package/.opencode/skills/design-system/SKILL.md +0 -244
  72. package/.opencode/skills/design-system/data/slide-backgrounds.csv +0 -11
  73. package/.opencode/skills/design-system/data/slide-charts.csv +0 -26
  74. package/.opencode/skills/design-system/data/slide-color-logic.csv +0 -14
  75. package/.opencode/skills/design-system/data/slide-copy.csv +0 -26
  76. package/.opencode/skills/design-system/data/slide-layout-logic.csv +0 -16
  77. package/.opencode/skills/design-system/data/slide-layouts.csv +0 -26
  78. package/.opencode/skills/design-system/data/slide-strategies.csv +0 -16
  79. package/.opencode/skills/design-system/data/slide-typography.csv +0 -15
  80. package/.opencode/skills/design-system/references/component-specs.md +0 -236
  81. package/.opencode/skills/design-system/references/component-tokens.md +0 -214
  82. package/.opencode/skills/design-system/references/primitive-tokens.md +0 -203
  83. package/.opencode/skills/design-system/references/semantic-tokens.md +0 -215
  84. package/.opencode/skills/design-system/references/states-and-variants.md +0 -241
  85. package/.opencode/skills/design-system/references/tailwind-integration.md +0 -251
  86. package/.opencode/skills/design-system/references/token-architecture.md +0 -224
  87. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +0 -99
  88. package/.opencode/skills/design-system/scripts/fetch-background.py +0 -317
  89. package/.opencode/skills/design-system/scripts/generate-slide.py +0 -770
  90. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +0 -205
  91. package/.opencode/skills/design-system/scripts/html-token-validator.py +0 -327
  92. package/.opencode/skills/design-system/scripts/search-slides.py +0 -218
  93. package/.opencode/skills/design-system/scripts/slide-token-validator.py +0 -35
  94. package/.opencode/skills/design-system/scripts/slide_search_core.py +0 -453
  95. package/.opencode/skills/design-system/scripts/tests/test_validate_tokens.py +0 -48
  96. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +0 -246
  97. package/.opencode/skills/design-system/templates/design-tokens-starter.json +0 -143
  98. package/.opencode/skills/frontend-design/LICENSE.txt +0 -21
  99. package/.opencode/skills/frontend-design/SKILL.md +0 -115
  100. package/.opencode/skills/mafw-automation-interview/SKILL.md +0 -43
  101. package/.opencode/skills/mafw-cli-scanner/SKILL.md +0 -37
  102. package/.opencode/skills/mafw-compression-verifier/SKILL.md +0 -52
  103. package/.opencode/skills/mafw-desktop-inspector/SKILL.md +0 -170
  104. package/.opencode/skills/mafw-execute/SKILL.md +0 -62
  105. package/.opencode/skills/mafw-gateway-restart/SKILL.md +0 -87
  106. package/.opencode/skills/mafw-github-scanner/SKILL.md +0 -38
  107. package/.opencode/skills/mafw-goal/SKILL.md +0 -76
  108. package/.opencode/skills/mafw-interview/SKILL.md +0 -68
  109. package/.opencode/skills/mafw-memory-extractor/SKILL.md +0 -65
  110. package/.opencode/skills/mafw-plan/SKILL.md +0 -58
  111. package/.opencode/skills/mafw-review/SKILL.md +0 -85
  112. package/.opencode/skills/runtime-plugin-authoring/SKILL.md +0 -791
  113. package/.opencode/skills/slides/SKILL.md +0 -40
  114. package/.opencode/skills/slides/references/copywriting-formulas.md +0 -84
  115. package/.opencode/skills/slides/references/create.md +0 -4
  116. package/.opencode/skills/slides/references/html-template.md +0 -295
  117. package/.opencode/skills/slides/references/layout-patterns.md +0 -137
  118. package/.opencode/skills/slides/references/slide-strategies.md +0 -94
  119. package/.opencode/skills/ui-styling/LICENSE.txt +0 -202
  120. package/.opencode/skills/ui-styling/SKILL.md +0 -324
  121. package/.opencode/skills/ui-styling/references/canvas-design-system.md +0 -320
  122. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +0 -471
  123. package/.opencode/skills/ui-styling/references/shadcn-components.md +0 -424
  124. package/.opencode/skills/ui-styling/references/shadcn-theming.md +0 -373
  125. package/.opencode/skills/ui-styling/references/tailwind-customization.md +0 -483
  126. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +0 -382
  127. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +0 -455
  128. package/.opencode/skills/ui-styling/scripts/requirements.txt +0 -17
  129. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +0 -308
  130. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +0 -473
  131. package/.opencode/skills/ui-styling/scripts/tests/coverage-ui.json +0 -1
  132. package/.opencode/skills/ui-styling/scripts/tests/requirements.txt +0 -3
  133. package/.opencode/skills/ui-styling/scripts/tests/test_shadcn_add.py +0 -266
  134. package/.opencode/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +0 -394
  135. package/.opencode/skills/ui-ux-pro-max/SKILL.md +0 -388
  136. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
  137. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +0 -26
  138. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +0 -193
  139. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
  140. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +0 -106
  141. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +0 -35
  142. package/.opencode/skills/ui-ux-pro-max/data/motion.csv +0 -17
  143. package/.opencode/skills/ui-ux-pro-max/data/products.csv +0 -193
  144. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  145. package/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +0 -51
  146. package/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
  147. package/.opencode/skills/ui-ux-pro-max/data/stacks/avalonia.csv +0 -57
  148. package/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  149. package/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  150. package/.opencode/skills/ui-ux-pro-max/data/stacks/javafx.csv +0 -76
  151. package/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  152. package/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +0 -51
  153. package/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  154. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -71
  155. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  156. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  157. package/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
  158. package/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  159. package/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  160. package/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  161. package/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +0 -54
  162. package/.opencode/skills/ui-ux-pro-max/data/stacks/uno.csv +0 -60
  163. package/.opencode/skills/ui-ux-pro-max/data/stacks/uwp.csv +0 -56
  164. package/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  165. package/.opencode/skills/ui-ux-pro-max/data/stacks/winui.csv +0 -60
  166. package/.opencode/skills/ui-ux-pro-max/data/stacks/wpf.csv +0 -57
  167. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +0 -85
  168. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +0 -75
  169. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
  170. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  171. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +0 -464
  172. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +0 -1479
  173. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +0 -162
  174. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_core.py +0 -134
  175. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_design_system_mode.py +0 -159
  176. package/.opencode/skills/ui-ux-pro-max/scripts/validate_data.py +0 -114
  177. package/dist/hooks/bash-python-guide.d.ts +0 -4
  178. package/dist/hooks/bash-python-guide.d.ts.map +0 -1
  179. package/dist/hooks/bash-python-guide.js +0 -67
  180. package/dist/hooks/bash-python-guide.js.map +0 -1
  181. package/dist/hooks/handoff.d.ts +0 -9
  182. package/dist/hooks/handoff.d.ts.map +0 -1
  183. package/dist/hooks/handoff.js +0 -8
  184. package/dist/hooks/handoff.js.map +0 -1
  185. package/dist/hooks/hook-manager.d.ts +0 -32
  186. package/dist/hooks/hook-manager.d.ts.map +0 -1
  187. package/dist/hooks/hook-manager.js +0 -91
  188. package/dist/hooks/hook-manager.js.map +0 -1
  189. package/dist/hooks/llm-after.d.ts +0 -8
  190. package/dist/hooks/llm-after.d.ts.map +0 -1
  191. package/dist/hooks/llm-after.js +0 -8
  192. package/dist/hooks/llm-after.js.map +0 -1
  193. package/dist/hooks/media-ingest.d.ts +0 -43
  194. package/dist/hooks/media-ingest.d.ts.map +0 -1
  195. package/dist/hooks/media-ingest.js +0 -269
  196. package/dist/hooks/media-ingest.js.map +0 -1
  197. package/dist/hooks/memory-guide.d.ts +0 -3
  198. package/dist/hooks/memory-guide.d.ts.map +0 -1
  199. package/dist/hooks/memory-guide.js +0 -47
  200. package/dist/hooks/memory-guide.js.map +0 -1
  201. package/dist/hooks/observation-capture.d.ts +0 -17
  202. package/dist/hooks/observation-capture.d.ts.map +0 -1
  203. package/dist/hooks/observation-capture.js +0 -20
  204. package/dist/hooks/observation-capture.js.map +0 -1
  205. package/dist/hooks/session-compacting.d.ts +0 -6
  206. package/dist/hooks/session-compacting.d.ts.map +0 -1
  207. package/dist/hooks/session-compacting.js +0 -6
  208. package/dist/hooks/session-compacting.js.map +0 -1
  209. package/dist/hooks/session-ending.d.ts +0 -20
  210. package/dist/hooks/session-ending.d.ts.map +0 -1
  211. package/dist/hooks/session-ending.js +0 -113
  212. package/dist/hooks/session-ending.js.map +0 -1
  213. package/dist/hooks/session-recall.d.ts +0 -2
  214. package/dist/hooks/session-recall.d.ts.map +0 -1
  215. package/dist/hooks/session-recall.js +0 -103
  216. package/dist/hooks/session-recall.js.map +0 -1
  217. package/dist/hooks/session-start.d.ts +0 -9
  218. package/dist/hooks/session-start.d.ts.map +0 -1
  219. package/dist/hooks/session-start.js +0 -42
  220. package/dist/hooks/session-start.js.map +0 -1
  221. package/dist/hooks/tool-before.d.ts +0 -10
  222. package/dist/hooks/tool-before.d.ts.map +0 -1
  223. package/dist/hooks/tool-before.js +0 -6
  224. package/dist/hooks/tool-before.js.map +0 -1
  225. package/dist/hooks/tool-executed.d.ts +0 -19
  226. package/dist/hooks/tool-executed.d.ts.map +0 -1
  227. package/dist/hooks/tool-executed.js +0 -12
  228. package/dist/hooks/tool-executed.js.map +0 -1
  229. package/dist/hooks/user-profile.d.ts +0 -2
  230. package/dist/hooks/user-profile.d.ts.map +0 -1
  231. package/dist/hooks/user-profile.js +0 -30
  232. package/dist/hooks/user-profile.js.map +0 -1
  233. package/dist/hooks/user-prompt.d.ts +0 -9
  234. package/dist/hooks/user-prompt.d.ts.map +0 -1
  235. package/dist/hooks/user-prompt.js +0 -8
  236. package/dist/hooks/user-prompt.js.map +0 -1
  237. package/dist/hooks/voice-guide.d.ts +0 -8
  238. package/dist/hooks/voice-guide.d.ts.map +0 -1
  239. package/dist/hooks/voice-guide.js +0 -101
  240. package/dist/hooks/voice-guide.js.map +0 -1
  241. package/dist/plugin.d.ts +0 -55
  242. package/dist/plugin.d.ts.map +0 -1
  243. package/dist/plugin.js +0 -342
  244. package/dist/plugin.js.map +0 -1
  245. package/dist/tools/add-memory.d.ts +0 -17
  246. package/dist/tools/add-memory.d.ts.map +0 -1
  247. package/dist/tools/add-memory.js +0 -60
  248. package/dist/tools/add-memory.js.map +0 -1
  249. package/dist/tools/media-ask.d.ts +0 -14
  250. package/dist/tools/media-ask.d.ts.map +0 -1
  251. package/dist/tools/media-ask.js +0 -224
  252. package/dist/tools/media-ask.js.map +0 -1
  253. package/dist/tools/media-speak.d.ts +0 -16
  254. package/dist/tools/media-speak.d.ts.map +0 -1
  255. package/dist/tools/media-speak.js +0 -78
  256. package/dist/tools/media-speak.js.map +0 -1
  257. package/dist/tools/media-upload.d.ts +0 -14
  258. package/dist/tools/media-upload.d.ts.map +0 -1
  259. package/dist/tools/media-upload.js +0 -155
  260. package/dist/tools/media-upload.js.map +0 -1
  261. package/dist/tools/python-exec.d.ts +0 -13
  262. package/dist/tools/python-exec.d.ts.map +0 -1
  263. package/dist/tools/python-exec.js +0 -99
  264. package/dist/tools/python-exec.js.map +0 -1
  265. package/dist/tools/python-restart.d.ts +0 -11
  266. package/dist/tools/python-restart.d.ts.map +0 -1
  267. package/dist/tools/python-restart.js +0 -33
  268. package/dist/tools/python-restart.js.map +0 -1
  269. package/dist/utils/circuit-breaker.d.ts +0 -23
  270. package/dist/utils/circuit-breaker.d.ts.map +0 -1
  271. package/dist/utils/circuit-breaker.js +0 -75
  272. package/dist/utils/circuit-breaker.js.map +0 -1
  273. package/dist/utils/config-loader.d.ts +0 -20
  274. package/dist/utils/config-loader.d.ts.map +0 -1
  275. package/dist/utils/config-loader.js +0 -194
  276. package/dist/utils/config-loader.js.map +0 -1
  277. package/dist/utils/fallback.d.ts +0 -7
  278. package/dist/utils/fallback.d.ts.map +0 -1
  279. package/dist/utils/fallback.js +0 -20
  280. package/dist/utils/fallback.js.map +0 -1
  281. package/dist/utils/git.d.ts +0 -24
  282. package/dist/utils/git.d.ts.map +0 -1
  283. package/dist/utils/git.js +0 -71
  284. package/dist/utils/git.js.map +0 -1
  285. package/dist/utils/github.d.ts +0 -37
  286. package/dist/utils/github.d.ts.map +0 -1
  287. package/dist/utils/github.js +0 -53
  288. package/dist/utils/github.js.map +0 -1
  289. package/dist/utils/global-path.d.ts +0 -2
  290. package/dist/utils/global-path.d.ts.map +0 -1
  291. package/dist/utils/global-path.js +0 -32
  292. package/dist/utils/global-path.js.map +0 -1
  293. package/dist/utils/logger.d.ts +0 -6
  294. package/dist/utils/logger.d.ts.map +0 -1
  295. package/dist/utils/logger.js +0 -69
  296. package/dist/utils/logger.js.map +0 -1
  297. package/dist/utils/obs-capture.d.ts +0 -7
  298. package/dist/utils/obs-capture.d.ts.map +0 -1
  299. package/dist/utils/obs-capture.js +0 -49
  300. package/dist/utils/obs-capture.js.map +0 -1
  301. package/dist/utils/retry.d.ts +0 -11
  302. package/dist/utils/retry.d.ts.map +0 -1
  303. package/dist/utils/retry.js +0 -45
  304. package/dist/utils/retry.js.map +0 -1
  305. package/dist/utils/self-wiring.d.ts +0 -13
  306. package/dist/utils/self-wiring.d.ts.map +0 -1
  307. package/dist/utils/self-wiring.js +0 -86
  308. package/dist/utils/self-wiring.js.map +0 -1
  309. package/dist/utils/state.d.ts +0 -106
  310. package/dist/utils/state.d.ts.map +0 -1
  311. package/dist/utils/state.js +0 -166
  312. package/dist/utils/state.js.map +0 -1
  313. package/dist/utils/status.d.ts +0 -47
  314. package/dist/utils/status.d.ts.map +0 -1
  315. package/dist/utils/status.js +0 -147
  316. package/dist/utils/status.js.map +0 -1
  317. package/dist/utils/ttl-map.d.ts +0 -17
  318. package/dist/utils/ttl-map.d.ts.map +0 -1
  319. package/dist/utils/ttl-map.js +0 -67
  320. package/dist/utils/ttl-map.js.map +0 -1
@@ -1,483 +0,0 @@
1
- # Tailwind CSS Customization
2
-
3
- Config file structure, custom utilities, plugins, and theme extensions.
4
-
5
- ## @theme Directive
6
-
7
- Modern approach to customize Tailwind using CSS:
8
-
9
- ```css
10
- @import "tailwindcss";
11
-
12
- @theme {
13
- /* Custom colors */
14
- --color-brand-50: oklch(0.97 0.02 264);
15
- --color-brand-500: oklch(0.55 0.22 264);
16
- --color-brand-900: oklch(0.25 0.15 264);
17
-
18
- /* Custom fonts */
19
- --font-display: "Satoshi", "Inter", sans-serif;
20
- --font-body: "Inter", system-ui, sans-serif;
21
-
22
- /* Custom spacing */
23
- --spacing-18: calc(var(--spacing) * 18);
24
- --spacing-navbar: 4.5rem;
25
-
26
- /* Custom breakpoints */
27
- --breakpoint-3xl: 120rem;
28
- --breakpoint-tablet: 48rem;
29
-
30
- /* Custom shadows */
31
- --shadow-glow: 0 0 20px rgba(139, 92, 246, 0.3);
32
-
33
- /* Custom radius */
34
- --radius-large: 1.5rem;
35
- }
36
- ```
37
-
38
- **Usage:**
39
- ```html
40
- <div class="bg-brand-500 font-display shadow-glow rounded-large">
41
- Custom themed element
42
- </div>
43
-
44
- <div class="tablet:grid-cols-2 3xl:grid-cols-6">
45
- Custom breakpoints
46
- </div>
47
- ```
48
-
49
- ## Color Customization
50
-
51
- ### Custom Color Palette
52
-
53
- ```css
54
- @theme {
55
- /* Full color scale */
56
- --color-primary-50: oklch(0.98 0.02 250);
57
- --color-primary-100: oklch(0.95 0.05 250);
58
- --color-primary-200: oklch(0.90 0.10 250);
59
- --color-primary-300: oklch(0.85 0.15 250);
60
- --color-primary-400: oklch(0.75 0.18 250);
61
- --color-primary-500: oklch(0.65 0.22 250);
62
- --color-primary-600: oklch(0.55 0.22 250);
63
- --color-primary-700: oklch(0.45 0.20 250);
64
- --color-primary-800: oklch(0.35 0.18 250);
65
- --color-primary-900: oklch(0.25 0.15 250);
66
- --color-primary-950: oklch(0.15 0.10 250);
67
- }
68
- ```
69
-
70
- ### Semantic Colors
71
-
72
- ```css
73
- @theme {
74
- --color-success: oklch(0.65 0.18 145);
75
- --color-warning: oklch(0.75 0.15 85);
76
- --color-error: oklch(0.60 0.22 25);
77
- --color-info: oklch(0.65 0.18 240);
78
- }
79
- ```
80
-
81
- ```html
82
- <div class="bg-success text-white">Success message</div>
83
- <div class="border-error">Error state</div>
84
- ```
85
-
86
- ## Typography Customization
87
-
88
- ### Custom Fonts
89
-
90
- ```css
91
- @theme {
92
- --font-sans: "Inter", system-ui, sans-serif;
93
- --font-serif: "Merriweather", Georgia, serif;
94
- --font-mono: "JetBrains Mono", Consolas, monospace;
95
- --font-display: "Playfair Display", serif;
96
- }
97
- ```
98
-
99
- ```html
100
- <h1 class="font-display">Display heading</h1>
101
- <p class="font-sans">Body text</p>
102
- <code class="font-mono">Code block</code>
103
- ```
104
-
105
- ### Custom Font Sizes
106
-
107
- ```css
108
- @theme {
109
- --font-size-xs: 0.75rem;
110
- --font-size-sm: 0.875rem;
111
- --font-size-base: 1rem;
112
- --font-size-lg: 1.125rem;
113
- --font-size-xl: 1.25rem;
114
- --font-size-2xl: 1.5rem;
115
- --font-size-3xl: 1.875rem;
116
- --font-size-4xl: 2.25rem;
117
- --font-size-5xl: 3rem;
118
- --font-size-jumbo: 4rem;
119
- }
120
- ```
121
-
122
- ## Spacing Customization
123
-
124
- ```css
125
- @theme {
126
- /* Add custom spacing values */
127
- --spacing-13: calc(var(--spacing) * 13);
128
- --spacing-15: calc(var(--spacing) * 15);
129
- --spacing-18: calc(var(--spacing) * 18);
130
-
131
- /* Named spacing */
132
- --spacing-header: 4rem;
133
- --spacing-footer: 3rem;
134
- --spacing-section: 6rem;
135
- }
136
- ```
137
-
138
- ```html
139
- <div class="p-18">Custom padding</div>
140
- <section class="py-section">Section spacing</section>
141
- ```
142
-
143
- ## Custom Utilities
144
-
145
- Create reusable utility classes:
146
-
147
- ```css
148
- @utility content-auto {
149
- content-visibility: auto;
150
- }
151
-
152
- @utility tab-* {
153
- tab-size: var(--tab-size-*);
154
- }
155
-
156
- @utility glass {
157
- background: rgba(255, 255, 255, 0.1);
158
- backdrop-filter: blur(10px);
159
- border: 1px solid rgba(255, 255, 255, 0.2);
160
- }
161
- ```
162
-
163
- **Usage:**
164
- ```html
165
- <div class="content-auto">Optimized rendering</div>
166
- <pre class="tab-4">Code with 4-space tabs</pre>
167
- <div class="glass">Glassmorphism effect</div>
168
- ```
169
-
170
- ## Custom Variants
171
-
172
- Create custom state variants:
173
-
174
- ```css
175
- @custom-variant theme-midnight (&:where([data-theme="midnight"] *));
176
- @custom-variant aria-checked (&[aria-checked="true"]);
177
- @custom-variant required (&:required);
178
- ```
179
-
180
- **Usage:**
181
- ```html
182
- <div data-theme="midnight">
183
- <div class="theme-midnight:bg-navy-900">
184
- Applies in midnight theme
185
- </div>
186
- </div>
187
-
188
- <input class="required:border-red-500" required />
189
- ```
190
-
191
- ## Layer Organization
192
-
193
- Organize CSS into layers:
194
-
195
- ```css
196
- @layer base {
197
- h1 {
198
- @apply text-4xl font-bold tracking-tight;
199
- }
200
-
201
- h2 {
202
- @apply text-3xl font-semibold;
203
- }
204
-
205
- a {
206
- @apply text-blue-600 hover:text-blue-700 underline-offset-4 hover:underline;
207
- }
208
-
209
- body {
210
- @apply bg-background text-foreground antialiased;
211
- }
212
- }
213
-
214
- @layer components {
215
- .btn {
216
- @apply px-4 py-2 rounded-lg font-medium transition-colors;
217
- }
218
-
219
- .btn-primary {
220
- @apply bg-blue-600 text-white hover:bg-blue-700;
221
- }
222
-
223
- .btn-secondary {
224
- @apply bg-gray-200 text-gray-900 hover:bg-gray-300;
225
- }
226
-
227
- .card {
228
- @apply bg-white rounded-xl shadow-md p-6 hover:shadow-lg transition-shadow;
229
- }
230
-
231
- .input {
232
- @apply w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent;
233
- }
234
- }
235
-
236
- @layer utilities {
237
- .text-balance {
238
- text-wrap: balance;
239
- }
240
-
241
- .scrollbar-hide {
242
- -ms-overflow-style: none;
243
- scrollbar-width: none;
244
- }
245
- .scrollbar-hide::-webkit-scrollbar {
246
- display: none;
247
- }
248
- }
249
- ```
250
-
251
- ## @apply Directive
252
-
253
- Extract repeated utility patterns:
254
-
255
- ```css
256
- .btn-primary {
257
- @apply bg-blue-600 hover:bg-blue-700 active:bg-blue-800 text-white font-semibold px-6 py-3 rounded-lg shadow-md hover:shadow-lg transition-all duration-200 focus:outline-none focus:ring-4 focus:ring-blue-300;
258
- }
259
-
260
- .input-field {
261
- @apply w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:bg-gray-100 disabled:cursor-not-allowed;
262
- }
263
-
264
- .section-container {
265
- @apply container mx-auto px-4 sm:px-6 lg:px-8 max-w-7xl;
266
- }
267
- ```
268
-
269
- **Usage:**
270
- ```html
271
- <button class="btn-primary">Click me</button>
272
- <input class="input-field" />
273
- <div class="section-container">Content</div>
274
- ```
275
-
276
- ## Plugins
277
-
278
- ### Official Plugins
279
-
280
- ```bash
281
- npm install -D @tailwindcss/typography @tailwindcss/forms @tailwindcss/container-queries
282
- ```
283
-
284
- ```javascript
285
- // tailwind.config.js
286
- export default {
287
- plugins: [
288
- require('@tailwindcss/typography'),
289
- require('@tailwindcss/forms'),
290
- require('@tailwindcss/container-queries'),
291
- ],
292
- }
293
- ```
294
-
295
- **Typography plugin:**
296
- ```html
297
- <article class="prose lg:prose-xl">
298
- <h1>Styled article</h1>
299
- <p>Automatically styled prose content</p>
300
- </article>
301
- ```
302
-
303
- **Forms plugin:**
304
- ```html
305
- <!-- Automatically styled form elements -->
306
- <input type="text" />
307
- <select></select>
308
- <textarea></textarea>
309
- ```
310
-
311
- ### Custom Plugin
312
-
313
- ```javascript
314
- // tailwind.config.js
315
- const plugin = require('tailwindcss/plugin')
316
-
317
- export default {
318
- plugins: [
319
- plugin(function({ addUtilities, addComponents, theme }) {
320
- // Add utilities
321
- addUtilities({
322
- '.text-shadow': {
323
- textShadow: '2px 2px 4px rgba(0, 0, 0, 0.1)',
324
- },
325
- '.text-shadow-lg': {
326
- textShadow: '4px 4px 8px rgba(0, 0, 0, 0.2)',
327
- },
328
- })
329
-
330
- // Add components
331
- addComponents({
332
- '.card-custom': {
333
- backgroundColor: theme('colors.white'),
334
- borderRadius: theme('borderRadius.lg'),
335
- padding: theme('spacing.6'),
336
- boxShadow: theme('boxShadow.md'),
337
- },
338
- })
339
- }),
340
- ],
341
- }
342
- ```
343
-
344
- ## Configuration Examples
345
-
346
- ### Complete Tailwind Config
347
-
348
- ```javascript
349
- // tailwind.config.ts
350
- import type { Config } from 'tailwindcss'
351
-
352
- const config: Config = {
353
- darkMode: ["class"],
354
- content: [
355
- './pages/**/*.{ts,tsx}',
356
- './components/**/*.{ts,tsx}',
357
- './app/**/*.{ts,tsx}',
358
- ],
359
- theme: {
360
- container: {
361
- center: true,
362
- padding: "2rem",
363
- screens: {
364
- "2xl": "1400px",
365
- },
366
- },
367
- extend: {
368
- colors: {
369
- border: "hsl(var(--border))",
370
- input: "hsl(var(--input))",
371
- ring: "hsl(var(--ring))",
372
- background: "hsl(var(--background))",
373
- foreground: "hsl(var(--foreground))",
374
- primary: {
375
- DEFAULT: "hsl(var(--primary))",
376
- foreground: "hsl(var(--primary-foreground))",
377
- },
378
- brand: {
379
- 50: '#f0f9ff',
380
- 500: '#3b82f6',
381
- 900: '#1e3a8a',
382
- },
383
- },
384
- fontFamily: {
385
- sans: ['Inter', 'system-ui', 'sans-serif'],
386
- display: ['Playfair Display', 'serif'],
387
- },
388
- spacing: {
389
- '18': '4.5rem',
390
- '88': '22rem',
391
- '128': '32rem',
392
- },
393
- borderRadius: {
394
- lg: "var(--radius)",
395
- md: "calc(var(--radius) - 2px)",
396
- sm: "calc(var(--radius) - 4px)",
397
- },
398
- keyframes: {
399
- "slide-in": {
400
- "0%": { transform: "translateX(-100%)" },
401
- "100%": { transform: "translateX(0)" },
402
- },
403
- },
404
- animation: {
405
- "slide-in": "slide-in 0.5s ease-out",
406
- },
407
- },
408
- },
409
- plugins: [require("tailwindcss-animate")],
410
- }
411
-
412
- export default config
413
- ```
414
-
415
- ## Dark Mode Configuration
416
-
417
- ```javascript
418
- // tailwind.config.js
419
- export default {
420
- darkMode: ["class"], // or "media" for automatic
421
- // ...
422
- }
423
- ```
424
-
425
- **Usage:**
426
- ```html
427
- <!-- Class-based -->
428
- <html class="dark">
429
- <div class="bg-white dark:bg-gray-900">
430
- Responds to .dark class
431
- </div>
432
- </html>
433
-
434
- <!-- Media query-based -->
435
- <div class="bg-white dark:bg-gray-900">
436
- Responds to system preference automatically
437
- </div>
438
- ```
439
-
440
- ## Content Configuration
441
-
442
- Specify files to scan for classes:
443
-
444
- ```javascript
445
- // tailwind.config.js
446
- export default {
447
- content: [
448
- "./src/**/*.{js,jsx,ts,tsx}",
449
- "./app/**/*.{js,jsx,ts,tsx}",
450
- "./components/**/*.{js,jsx,ts,tsx}",
451
- "./pages/**/*.{js,jsx,ts,tsx}",
452
- ],
453
- // ...
454
- }
455
- ```
456
-
457
- ### Safelist
458
-
459
- Preserve dynamic classes:
460
-
461
- ```javascript
462
- export default {
463
- safelist: [
464
- 'bg-red-500',
465
- 'bg-green-500',
466
- 'bg-blue-500',
467
- {
468
- pattern: /bg-(red|green|blue)-(100|500|900)/,
469
- },
470
- ],
471
- }
472
- ```
473
-
474
- ## Best Practices
475
-
476
- 1. **Use @theme for simple customizations**: Prefer CSS-based customization
477
- 2. **Extract components sparingly**: Use @apply only for truly repeated patterns
478
- 3. **Leverage design tokens**: Define custom tokens in @theme
479
- 4. **Layer organization**: Keep base, components, and utilities separate
480
- 5. **Plugin for complex logic**: Use plugins for advanced customizations
481
- 6. **Test dark mode**: Ensure custom colors work in both themes
482
- 7. **Document custom utilities**: Add comments explaining custom classes
483
- 8. **Semantic naming**: Use descriptive names (primary not blue)