@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,424 +0,0 @@
1
- # shadcn/ui Component Reference
2
-
3
- Complete catalog of shadcn/ui components with usage patterns and installation.
4
-
5
- ## Installation
6
-
7
- **Add specific components:**
8
- ```bash
9
- npx shadcn@latest add button
10
- npx shadcn@latest add button card dialog # Multiple
11
- npx shadcn@latest add --all # All components
12
- ```
13
-
14
- Components install to `components/ui/` with automatic dependency management.
15
-
16
- ## Form & Input Components
17
-
18
- ### Button
19
- ```tsx
20
- import { Button } from "@/components/ui/button"
21
-
22
- <Button variant="default">Default</Button>
23
- <Button variant="destructive">Delete</Button>
24
- <Button variant="outline" size="sm">Small Outline</Button>
25
- <Button variant="ghost" size="icon"><Icon /></Button>
26
- <Button variant="link">Link Style</Button>
27
- ```
28
-
29
- Variants: `default | destructive | outline | secondary | ghost | link`
30
- Sizes: `default | sm | lg | icon`
31
-
32
- ### Input
33
- ```tsx
34
- import { Input } from "@/components/ui/input"
35
- import { Label } from "@/components/ui/label"
36
-
37
- <div className="space-y-2">
38
- <Label htmlFor="email">Email</Label>
39
- <Input id="email" type="email" placeholder="you@example.com" />
40
- </div>
41
- ```
42
-
43
- ### Form (with React Hook Form + Zod)
44
- ```tsx
45
- import { useForm } from "react-hook-form"
46
- import { zodResolver } from "@hookform/resolvers/zod"
47
- import * as z from "zod"
48
- import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"
49
- import { Input } from "@/components/ui/input"
50
- import { Button } from "@/components/ui/button"
51
-
52
- const schema = z.object({
53
- username: z.string().min(2).max(50),
54
- email: z.string().email()
55
- })
56
-
57
- function ProfileForm() {
58
- const form = useForm({
59
- resolver: zodResolver(schema),
60
- defaultValues: { username: "", email: "" }
61
- })
62
-
63
- return (
64
- <Form {...form}>
65
- <form onSubmit={form.handleSubmit(console.log)} className="space-y-8">
66
- <FormField control={form.control} name="username" render={({ field }) => (
67
- <FormItem>
68
- <FormLabel>Username</FormLabel>
69
- <FormControl>
70
- <Input placeholder="shadcn" {...field} />
71
- </FormControl>
72
- <FormMessage />
73
- </FormItem>
74
- )} />
75
- <Button type="submit">Submit</Button>
76
- </form>
77
- </Form>
78
- )
79
- }
80
- ```
81
-
82
- ### Select
83
- ```tsx
84
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
85
-
86
- <Select>
87
- <SelectTrigger className="w-[180px]">
88
- <SelectValue placeholder="Theme" />
89
- </SelectTrigger>
90
- <SelectContent>
91
- <SelectItem value="light">Light</SelectItem>
92
- <SelectItem value="dark">Dark</SelectItem>
93
- <SelectItem value="system">System</SelectItem>
94
- </SelectContent>
95
- </Select>
96
- ```
97
-
98
- ### Checkbox
99
- ```tsx
100
- import { Checkbox } from "@/components/ui/checkbox"
101
- import { Label } from "@/components/ui/label"
102
-
103
- <div className="flex items-center space-x-2">
104
- <Checkbox id="terms" />
105
- <Label htmlFor="terms">Accept terms</Label>
106
- </div>
107
- ```
108
-
109
- ### Radio Group
110
- ```tsx
111
- import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
112
- import { Label } from "@/components/ui/label"
113
-
114
- <RadioGroup defaultValue="option-one">
115
- <div className="flex items-center space-x-2">
116
- <RadioGroupItem value="option-one" id="option-one" />
117
- <Label htmlFor="option-one">Option One</Label>
118
- </div>
119
- <div className="flex items-center space-x-2">
120
- <RadioGroupItem value="option-two" id="option-two" />
121
- <Label htmlFor="option-two">Option Two</Label>
122
- </div>
123
- </RadioGroup>
124
- ```
125
-
126
- ### Textarea
127
- ```tsx
128
- import { Textarea } from "@/components/ui/textarea"
129
-
130
- <Textarea placeholder="Type your message here." />
131
- ```
132
-
133
- ### Switch
134
- ```tsx
135
- import { Switch } from "@/components/ui/switch"
136
- import { Label } from "@/components/ui/label"
137
-
138
- <div className="flex items-center space-x-2">
139
- <Switch id="airplane-mode" />
140
- <Label htmlFor="airplane-mode">Airplane Mode</Label>
141
- </div>
142
- ```
143
-
144
- ### Date Picker
145
- ```tsx
146
- import { Calendar } from "@/components/ui/calendar"
147
- import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"
148
- import { Button } from "@/components/ui/button"
149
- import { CalendarIcon } from "lucide-react"
150
- import { format } from "date-fns"
151
- import { useState } from "react"
152
-
153
- const [date, setDate] = useState<Date>()
154
-
155
- <Popover>
156
- <PopoverTrigger asChild>
157
- <Button variant="outline">
158
- <CalendarIcon className="mr-2 h-4 w-4" />
159
- {date ? format(date, "PPP") : "Pick a date"}
160
- </Button>
161
- </PopoverTrigger>
162
- <PopoverContent className="w-auto p-0">
163
- <Calendar mode="single" selected={date} onSelect={setDate} />
164
- </PopoverContent>
165
- </Popover>
166
- ```
167
-
168
- ## Layout & Navigation
169
-
170
- ### Card
171
- ```tsx
172
- import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
173
-
174
- <Card>
175
- <CardHeader>
176
- <CardTitle>Card Title</CardTitle>
177
- <CardDescription>Card Description</CardDescription>
178
- </CardHeader>
179
- <CardContent>
180
- <p>Card Content</p>
181
- </CardContent>
182
- <CardFooter>
183
- <Button>Action</Button>
184
- </CardFooter>
185
- </Card>
186
- ```
187
-
188
- ### Tabs
189
- ```tsx
190
- import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
191
-
192
- <Tabs defaultValue="account">
193
- <TabsList>
194
- <TabsTrigger value="account">Account</TabsTrigger>
195
- <TabsTrigger value="password">Password</TabsTrigger>
196
- </TabsList>
197
- <TabsContent value="account">Account settings</TabsContent>
198
- <TabsContent value="password">Password settings</TabsContent>
199
- </Tabs>
200
- ```
201
-
202
- ### Accordion
203
- ```tsx
204
- import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"
205
-
206
- <Accordion type="single" collapsible>
207
- <AccordionItem value="item-1">
208
- <AccordionTrigger>Is it accessible?</AccordionTrigger>
209
- <AccordionContent>
210
- Yes. It adheres to WAI-ARIA design pattern.
211
- </AccordionContent>
212
- </AccordionItem>
213
- <AccordionItem value="item-2">
214
- <AccordionTrigger>Is it styled?</AccordionTrigger>
215
- <AccordionContent>
216
- Yes. Comes with default styles customizable with Tailwind.
217
- </AccordionContent>
218
- </AccordionItem>
219
- </Accordion>
220
- ```
221
-
222
- ### Navigation Menu
223
- ```tsx
224
- import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger } from "@/components/ui/navigation-menu"
225
-
226
- <NavigationMenu>
227
- <NavigationMenuList>
228
- <NavigationMenuItem>
229
- <NavigationMenuTrigger>Getting Started</NavigationMenuTrigger>
230
- <NavigationMenuContent>
231
- <NavigationMenuLink>Introduction</NavigationMenuLink>
232
- <NavigationMenuLink>Installation</NavigationMenuLink>
233
- </NavigationMenuContent>
234
- </NavigationMenuItem>
235
- </NavigationMenuList>
236
- </NavigationMenu>
237
- ```
238
-
239
- ## Overlays & Dialogs
240
-
241
- ### Dialog
242
- ```tsx
243
- import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"
244
-
245
- <Dialog>
246
- <DialogTrigger asChild>
247
- <Button>Open</Button>
248
- </DialogTrigger>
249
- <DialogContent>
250
- <DialogHeader>
251
- <DialogTitle>Are you sure?</DialogTitle>
252
- <DialogDescription>This action cannot be undone.</DialogDescription>
253
- </DialogHeader>
254
- </DialogContent>
255
- </Dialog>
256
- ```
257
-
258
- ### Drawer
259
- ```tsx
260
- import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from "@/components/ui/drawer"
261
-
262
- <Drawer>
263
- <DrawerTrigger>Open</DrawerTrigger>
264
- <DrawerContent>
265
- <DrawerHeader>
266
- <DrawerTitle>Title</DrawerTitle>
267
- <DrawerDescription>Description</DrawerDescription>
268
- </DrawerHeader>
269
- <DrawerFooter>
270
- <Button>Submit</Button>
271
- <DrawerClose>Cancel</DrawerClose>
272
- </DrawerFooter>
273
- </DrawerContent>
274
- </Drawer>
275
- ```
276
-
277
- ### Popover
278
- ```tsx
279
- import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"
280
-
281
- <Popover>
282
- <PopoverTrigger>Open</PopoverTrigger>
283
- <PopoverContent>Content here</PopoverContent>
284
- </Popover>
285
- ```
286
-
287
- ### Toast
288
- ```tsx
289
- import { useToast } from "@/hooks/use-toast"
290
- import { Button } from "@/components/ui/button"
291
-
292
- const { toast } = useToast()
293
-
294
- <Button onClick={() => {
295
- toast({
296
- title: "Scheduled: Catch up",
297
- description: "Friday, February 10, 2023 at 5:57 PM"
298
- })
299
- }}>
300
- Show Toast
301
- </Button>
302
- ```
303
-
304
- ### Command
305
- ```tsx
306
- import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@/components/ui/command"
307
-
308
- <Command>
309
- <CommandInput placeholder="Type a command or search..." />
310
- <CommandList>
311
- <CommandEmpty>No results found.</CommandEmpty>
312
- <CommandGroup heading="Suggestions">
313
- <CommandItem>Calendar</CommandItem>
314
- <CommandItem>Search Emoji</CommandItem>
315
- <CommandItem>Calculator</CommandItem>
316
- </CommandGroup>
317
- </CommandList>
318
- </Command>
319
- ```
320
-
321
- ### Alert Dialog
322
- ```tsx
323
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog"
324
-
325
- <AlertDialog>
326
- <AlertDialogTrigger asChild>
327
- <Button variant="destructive">Delete</Button>
328
- </AlertDialogTrigger>
329
- <AlertDialogContent>
330
- <AlertDialogHeader>
331
- <AlertDialogTitle>Absolutely sure?</AlertDialogTitle>
332
- <AlertDialogDescription>
333
- This permanently deletes your account and removes data from servers.
334
- </AlertDialogDescription>
335
- </AlertDialogHeader>
336
- <AlertDialogFooter>
337
- <AlertDialogCancel>Cancel</AlertDialogCancel>
338
- <AlertDialogAction>Continue</AlertDialogAction>
339
- </AlertDialogFooter>
340
- </AlertDialogContent>
341
- </AlertDialog>
342
- ```
343
-
344
- ## Feedback & Status
345
-
346
- ### Alert
347
- ```tsx
348
- import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"
349
-
350
- <Alert>
351
- <AlertTitle>Heads up!</AlertTitle>
352
- <AlertDescription>You can add components using CLI.</AlertDescription>
353
- </Alert>
354
-
355
- <Alert variant="destructive">
356
- <AlertTitle>Error</AlertTitle>
357
- <AlertDescription>Session expired. Please log in.</AlertDescription>
358
- </Alert>
359
- ```
360
-
361
- ### Progress
362
- ```tsx
363
- import { Progress } from "@/components/ui/progress"
364
-
365
- <Progress value={33} />
366
- ```
367
-
368
- ### Skeleton
369
- ```tsx
370
- import { Skeleton } from "@/components/ui/skeleton"
371
-
372
- <div className="flex items-center space-x-4">
373
- <Skeleton className="h-12 w-12 rounded-full" />
374
- <div className="space-y-2">
375
- <Skeleton className="h-4 w-[250px]" />
376
- <Skeleton className="h-4 w-[200px]" />
377
- </div>
378
- </div>
379
- ```
380
-
381
- ## Display Components
382
-
383
- ### Table
384
- ```tsx
385
- import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
386
-
387
- <Table>
388
- <TableCaption>Recent invoices</TableCaption>
389
- <TableHeader>
390
- <TableRow>
391
- <TableHead>Invoice</TableHead>
392
- <TableHead>Status</TableHead>
393
- <TableHead>Amount</TableHead>
394
- </TableRow>
395
- </TableHeader>
396
- <TableBody>
397
- <TableRow>
398
- <TableCell>INV001</TableCell>
399
- <TableCell>Paid</TableCell>
400
- <TableCell>$250.00</TableCell>
401
- </TableRow>
402
- </TableBody>
403
- </Table>
404
- ```
405
-
406
- ### Avatar
407
- ```tsx
408
- import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
409
-
410
- <Avatar>
411
- <AvatarImage src="https://github.com/shadcn.png" />
412
- <AvatarFallback>CN</AvatarFallback>
413
- </Avatar>
414
- ```
415
-
416
- ### Badge
417
- ```tsx
418
- import { Badge } from "@/components/ui/badge"
419
-
420
- <Badge>Default</Badge>
421
- <Badge variant="secondary">Secondary</Badge>
422
- <Badge variant="destructive">Destructive</Badge>
423
- <Badge variant="outline">Outline</Badge>
424
- ```