@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,382 +0,0 @@
1
- # Tailwind CSS Responsive Design
2
-
3
- Mobile-first breakpoints, responsive utilities, and adaptive layouts.
4
-
5
- ## Mobile-First Approach
6
-
7
- Tailwind uses mobile-first responsive design. Base styles apply to all screen sizes, then use breakpoint prefixes to override at larger sizes.
8
-
9
- ```html
10
- <!-- Base: 1 column (mobile)
11
- sm: 2 columns (tablet)
12
- lg: 4 columns (desktop) -->
13
- <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4">
14
- <div>Item 1</div>
15
- <div>Item 2</div>
16
- <div>Item 3</div>
17
- <div>Item 4</div>
18
- </div>
19
- ```
20
-
21
- ## Breakpoint System
22
-
23
- **Default breakpoints:**
24
-
25
- | Prefix | Min Width | CSS Media Query |
26
- |--------|-----------|-----------------|
27
- | `sm:` | 640px | `@media (min-width: 640px)` |
28
- | `md:` | 768px | `@media (min-width: 768px)` |
29
- | `lg:` | 1024px | `@media (min-width: 1024px)` |
30
- | `xl:` | 1280px | `@media (min-width: 1280px)` |
31
- | `2xl:` | 1536px | `@media (min-width: 1536px)` |
32
-
33
- ## Responsive Patterns
34
-
35
- ### Layout Changes
36
-
37
- ```html
38
- <!-- Vertical on mobile, horizontal on desktop -->
39
- <div class="flex flex-col lg:flex-row gap-4">
40
- <div>Left</div>
41
- <div>Right</div>
42
- </div>
43
-
44
- <!-- 1 column -> 2 columns -> 3 columns -->
45
- <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
46
- <div>Item 1</div>
47
- <div>Item 2</div>
48
- <div>Item 3</div>
49
- </div>
50
- ```
51
-
52
- ### Visibility
53
-
54
- ```html
55
- <!-- Hide on mobile, show on desktop -->
56
- <div class="hidden lg:block">
57
- Desktop only content
58
- </div>
59
-
60
- <!-- Show on mobile, hide on desktop -->
61
- <div class="block lg:hidden">
62
- Mobile only content
63
- </div>
64
-
65
- <!-- Different content per breakpoint -->
66
- <div class="lg:hidden">Mobile menu</div>
67
- <div class="hidden lg:flex">Desktop navigation</div>
68
- ```
69
-
70
- ### Typography
71
-
72
- ```html
73
- <!-- Responsive text sizes -->
74
- <h1 class="text-2xl md:text-4xl lg:text-6xl font-bold">
75
- Heading scales with screen size
76
- </h1>
77
-
78
- <p class="text-sm md:text-base lg:text-lg">
79
- Body text scales appropriately
80
- </p>
81
- ```
82
-
83
- ### Spacing
84
-
85
- ```html
86
- <!-- Responsive padding -->
87
- <div class="p-4 md:p-6 lg:p-8">
88
- More padding on larger screens
89
- </div>
90
-
91
- <!-- Responsive gap -->
92
- <div class="flex gap-2 md:gap-4 lg:gap-6">
93
- <div>Item 1</div>
94
- <div>Item 2</div>
95
- </div>
96
- ```
97
-
98
- ### Width
99
-
100
- ```html
101
- <!-- Full width on mobile, constrained on desktop -->
102
- <div class="w-full lg:w-1/2 xl:w-1/3">
103
- Responsive width
104
- </div>
105
-
106
- <!-- Responsive max-width -->
107
- <div class="max-w-sm md:max-w-2xl lg:max-w-4xl mx-auto">
108
- Centered with responsive max width
109
- </div>
110
- ```
111
-
112
- ## Common Responsive Layouts
113
-
114
- ### Sidebar Layout
115
-
116
- ```html
117
- <div class="flex flex-col lg:flex-row min-h-screen">
118
- <!-- Sidebar: Full width on mobile, fixed on desktop -->
119
- <aside class="w-full lg:w-64 bg-gray-100 p-4">
120
- Sidebar
121
- </aside>
122
-
123
- <!-- Main content -->
124
- <main class="flex-1 p-4 md:p-8">
125
- Main content
126
- </main>
127
- </div>
128
- ```
129
-
130
- ### Card Grid
131
-
132
- ```html
133
- <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 md:gap-6">
134
- <div class="bg-white rounded-lg shadow p-6">Card 1</div>
135
- <div class="bg-white rounded-lg shadow p-6">Card 2</div>
136
- <div class="bg-white rounded-lg shadow p-6">Card 3</div>
137
- <div class="bg-white rounded-lg shadow p-6">Card 4</div>
138
- </div>
139
- ```
140
-
141
- ### Hero Section
142
-
143
- ```html
144
- <section class="py-12 md:py-20 lg:py-32">
145
- <div class="container mx-auto px-4">
146
- <div class="flex flex-col lg:flex-row items-center gap-8 lg:gap-12">
147
- <div class="flex-1 text-center lg:text-left">
148
- <h1 class="text-4xl md:text-5xl lg:text-6xl font-bold mb-4">
149
- Hero Title
150
- </h1>
151
- <p class="text-lg md:text-xl mb-6">
152
- Hero description
153
- </p>
154
- <button class="px-6 py-3 md:px-8 md:py-4">
155
- CTA Button
156
- </button>
157
- </div>
158
- <div class="flex-1">
159
- <img src="hero.jpg" class="w-full rounded-lg" />
160
- </div>
161
- </div>
162
- </div>
163
- </section>
164
- ```
165
-
166
- ### Navigation
167
-
168
- ```html
169
- <nav class="bg-white shadow">
170
- <div class="container mx-auto px-4">
171
- <div class="flex items-center justify-between h-16">
172
- <div class="text-xl font-bold">Logo</div>
173
-
174
- <!-- Desktop navigation -->
175
- <div class="hidden md:flex gap-6">
176
- <a href="#">Home</a>
177
- <a href="#">About</a>
178
- <a href="#">Services</a>
179
- <a href="#">Contact</a>
180
- </div>
181
-
182
- <!-- Mobile menu button -->
183
- <button class="md:hidden">
184
- <svg class="w-6 h-6">...</svg>
185
- </button>
186
- </div>
187
- </div>
188
- </nav>
189
- ```
190
-
191
- ## Max-Width Queries
192
-
193
- Apply styles only below certain breakpoint using `max-*:` prefix:
194
-
195
- ```html
196
- <!-- Only on mobile and tablet (below 1024px) -->
197
- <div class="max-lg:text-center">
198
- Centered on mobile/tablet, left-aligned on desktop
199
- </div>
200
-
201
- <!-- Only on mobile (below 640px) -->
202
- <div class="max-sm:hidden">
203
- Hidden only on mobile
204
- </div>
205
- ```
206
-
207
- Available: `max-sm:` `max-md:` `max-lg:` `max-xl:` `max-2xl:`
208
-
209
- ## Range Queries
210
-
211
- Apply styles between breakpoints:
212
-
213
- ```html
214
- <!-- Only on tablets (between md and lg) -->
215
- <div class="md:block lg:hidden">
216
- Visible only on tablets
217
- </div>
218
-
219
- <!-- Between sm and xl -->
220
- <div class="sm:grid-cols-2 xl:grid-cols-4">
221
- 2 columns on tablet, 4 on extra large
222
- </div>
223
- ```
224
-
225
- ## Container Queries
226
-
227
- Style elements based on parent container width:
228
-
229
- ```html
230
- <div class="@container">
231
- <div class="@md:grid-cols-2 @lg:grid-cols-3">
232
- Responds to parent width, not viewport
233
- </div>
234
- </div>
235
- ```
236
-
237
- Container query breakpoints: `@sm:` `@md:` `@lg:` `@xl:` `@2xl:`
238
-
239
- ## Custom Breakpoints
240
-
241
- Define custom breakpoints in theme:
242
-
243
- ```css
244
- @theme {
245
- --breakpoint-3xl: 120rem; /* 1920px */
246
- --breakpoint-tablet: 48rem; /* 768px */
247
- }
248
- ```
249
-
250
- ```html
251
- <div class="tablet:grid-cols-2 3xl:grid-cols-6">
252
- Uses custom breakpoints
253
- </div>
254
- ```
255
-
256
- ## Responsive State Variants
257
-
258
- Combine responsive with hover/focus:
259
-
260
- ```html
261
- <!-- Hover effect only on desktop -->
262
- <button class="lg:hover:scale-105">
263
- Scale on hover (desktop only)
264
- </button>
265
-
266
- <!-- Different hover colors per breakpoint -->
267
- <a class="hover:text-blue-600 lg:hover:text-purple-600">
268
- Link
269
- </a>
270
- ```
271
-
272
- ## Best Practices
273
-
274
- ### 1. Mobile-First Design
275
-
276
- Start with mobile styles, add complexity at larger breakpoints:
277
-
278
- ```html
279
- <!-- Good: Mobile first -->
280
- <div class="text-base md:text-lg lg:text-xl">
281
-
282
- <!-- Avoid: Desktop first -->
283
- <div class="text-xl lg:text-base">
284
- ```
285
-
286
- ### 2. Consistent Breakpoint Usage
287
-
288
- Use same breakpoints across related elements:
289
-
290
- ```html
291
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-6 lg:gap-8">
292
- Spacing scales with layout
293
- </div>
294
- ```
295
-
296
- ### 3. Test at Breakpoint Boundaries
297
-
298
- Test at exact breakpoint widths (640px, 768px, 1024px, etc.) to catch edge cases.
299
-
300
- ### 4. Use Container for Content Width
301
-
302
- ```html
303
- <div class="container mx-auto px-4 sm:px-6 lg:px-8">
304
- <div class="max-w-7xl">
305
- Content with consistent max width
306
- </div>
307
- </div>
308
- ```
309
-
310
- ### 5. Progressive Enhancement
311
-
312
- Ensure core functionality works on mobile, enhance for larger screens:
313
-
314
- ```html
315
- <!-- Core layout works on mobile -->
316
- <div class="p-4">
317
- <!-- Enhanced spacing on desktop -->
318
- <div class="lg:p-8">
319
- Content
320
- </div>
321
- </div>
322
- ```
323
-
324
- ### 6. Avoid Too Many Breakpoints
325
-
326
- Use 2-3 breakpoints per element for maintainability:
327
-
328
- ```html
329
- <!-- Good: 2 breakpoints -->
330
- <div class="grid-cols-1 md:grid-cols-2 lg:grid-cols-4">
331
-
332
- <!-- Avoid: Too many breakpoints -->
333
- <div class="grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6">
334
- ```
335
-
336
- ## Common Responsive Utilities
337
-
338
- ### Responsive Display
339
-
340
- ```html
341
- <div class="block md:flex lg:grid">
342
- Changes display type per breakpoint
343
- </div>
344
- ```
345
-
346
- ### Responsive Position
347
-
348
- ```html
349
- <div class="relative lg:absolute">
350
- Positioned differently per breakpoint
351
- </div>
352
- ```
353
-
354
- ### Responsive Order
355
-
356
- ```html
357
- <div class="flex flex-col">
358
- <div class="order-2 lg:order-1">First on desktop</div>
359
- <div class="order-1 lg:order-2">First on mobile</div>
360
- </div>
361
- ```
362
-
363
- ### Responsive Overflow
364
-
365
- ```html
366
- <div class="overflow-auto lg:overflow-visible">
367
- Scrollable on mobile, expanded on desktop
368
- </div>
369
- ```
370
-
371
- ## Testing Checklist
372
-
373
- - [ ] Test at 320px (small mobile)
374
- - [ ] Test at 640px (mobile breakpoint)
375
- - [ ] Test at 768px (tablet breakpoint)
376
- - [ ] Test at 1024px (desktop breakpoint)
377
- - [ ] Test at 1280px (large desktop breakpoint)
378
- - [ ] Test landscape orientation
379
- - [ ] Verify touch targets (min 44x44px)
380
- - [ ] Check text readability at all sizes
381
- - [ ] Verify navigation works on mobile
382
- - [ ] Test with browser zoom