@0xsown/vibe-code-fe 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/bin/index.js +181 -0
  2. package/package.json +32 -0
  3. package/skills/claude-md-improver/SKILL.md +179 -0
  4. package/skills/claude-md-improver/references/quality-criteria.md +109 -0
  5. package/skills/claude-md-improver/references/templates.md +253 -0
  6. package/skills/claude-md-improver/references/update-guidelines.md +150 -0
  7. package/skills/find-skills/SKILL.md +133 -0
  8. package/skills/frontend-design/LICENSE.txt +177 -0
  9. package/skills/frontend-design/SKILL.md +42 -0
  10. package/skills/next-best-practices/SKILL.md +153 -0
  11. package/skills/next-best-practices/async-patterns.md +87 -0
  12. package/skills/next-best-practices/bundling.md +180 -0
  13. package/skills/next-best-practices/data-patterns.md +297 -0
  14. package/skills/next-best-practices/debug-tricks.md +105 -0
  15. package/skills/next-best-practices/directives.md +73 -0
  16. package/skills/next-best-practices/error-handling.md +227 -0
  17. package/skills/next-best-practices/file-conventions.md +140 -0
  18. package/skills/next-best-practices/font.md +245 -0
  19. package/skills/next-best-practices/functions.md +108 -0
  20. package/skills/next-best-practices/hydration-error.md +91 -0
  21. package/skills/next-best-practices/image.md +173 -0
  22. package/skills/next-best-practices/metadata.md +301 -0
  23. package/skills/next-best-practices/parallel-routes.md +287 -0
  24. package/skills/next-best-practices/route-handlers.md +146 -0
  25. package/skills/next-best-practices/rsc-boundaries.md +159 -0
  26. package/skills/next-best-practices/runtime-selection.md +39 -0
  27. package/skills/next-best-practices/scripts.md +141 -0
  28. package/skills/next-best-practices/self-hosting.md +371 -0
  29. package/skills/next-best-practices/suspense-boundaries.md +67 -0
  30. package/skills/next-cache-components/SKILL.md +411 -0
  31. package/skills/shadcn-ui/README.md +248 -0
  32. package/skills/shadcn-ui/SKILL.md +326 -0
  33. package/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  34. package/skills/shadcn-ui/examples/data-table.tsx +313 -0
  35. package/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  36. package/skills/shadcn-ui/resources/component-catalog.md +481 -0
  37. package/skills/shadcn-ui/resources/customization-guide.md +516 -0
  38. package/skills/shadcn-ui/resources/migration-guide.md +463 -0
  39. package/skills/shadcn-ui/resources/setup-guide.md +412 -0
  40. package/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  41. package/skills/supabase-postgres-best-practices/AGENTS.md +68 -0
  42. package/skills/supabase-postgres-best-practices/CLAUDE.md +68 -0
  43. package/skills/supabase-postgres-best-practices/README.md +116 -0
  44. package/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  45. package/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  46. package/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  47. package/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  48. package/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  49. package/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  50. package/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  51. package/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  52. package/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  53. package/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  54. package/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  55. package/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  56. package/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  57. package/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  58. package/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  59. package/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  60. package/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  61. package/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  62. package/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  63. package/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  64. package/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  65. package/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  66. package/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  67. package/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  68. package/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  69. package/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  70. package/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  71. package/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  72. package/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  73. package/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  74. package/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  75. package/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  76. package/skills/tailwind-design-system/SKILL.md +874 -0
  77. package/skills/vercel-composition-patterns/AGENTS.md +946 -0
  78. package/skills/vercel-composition-patterns/README.md +60 -0
  79. package/skills/vercel-composition-patterns/SKILL.md +89 -0
  80. package/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  81. package/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  82. package/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  83. package/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  84. package/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  85. package/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  86. package/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  87. package/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  88. package/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  89. package/skills/vercel-react-best-practices/README.md +123 -0
  90. package/skills/vercel-react-best-practices/SKILL.md +136 -0
  91. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  92. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  93. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  94. package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  95. package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  96. package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  97. package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  98. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  99. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  100. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  101. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  102. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  103. package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  104. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  105. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  106. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  107. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  108. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  109. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  110. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  111. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  112. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  113. package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  114. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  115. package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  116. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  117. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  118. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  119. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  120. package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  121. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  122. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  123. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  124. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  125. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  126. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  127. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  128. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  129. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  130. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  131. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  132. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  133. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  134. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  135. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  136. package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  137. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  138. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  139. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  140. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  141. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  142. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  143. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  144. package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  145. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  146. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  147. package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  148. package/skills/vercel-react-native-skills/AGENTS.md +2897 -0
  149. package/skills/vercel-react-native-skills/README.md +165 -0
  150. package/skills/vercel-react-native-skills/SKILL.md +121 -0
  151. package/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
  152. package/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  153. package/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
  154. package/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
  155. package/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
  156. package/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
  157. package/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
  158. package/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
  159. package/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
  160. package/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
  161. package/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  162. package/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  163. package/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
  164. package/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
  165. package/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
  166. package/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  167. package/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  168. package/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
  169. package/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  170. package/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  171. package/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
  172. package/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
  173. package/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
  174. package/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  175. package/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  176. package/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
  177. package/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
  178. package/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
  179. package/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
  180. package/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
  181. package/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
  182. package/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
  183. package/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
  184. package/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  185. package/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  186. package/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
  187. package/skills/web-design-guidelines/SKILL.md +39 -0
  188. package/templates/AGENTS.md +31 -0
  189. package/templates/CLAUDE.md +31 -0
@@ -0,0 +1,463 @@
1
+ # Migration Guide to shadcn/ui
2
+
3
+ This guide helps you migrate from other UI libraries to shadcn/ui.
4
+
5
+ ## Why Migrate to shadcn/ui?
6
+
7
+ - **Full ownership**: Code lives in your project, not node_modules
8
+ - **Customizable**: Modify any component to fit your needs
9
+ - **No breaking changes**: Update components individually
10
+ - **Smaller bundles**: Only include what you use
11
+ - **Modern stack**: Built with Radix UI and Tailwind CSS
12
+ - **Type-safe**: Full TypeScript support
13
+
14
+ ## Migration Strategies
15
+
16
+ ### Strategy 1: Incremental Migration (Recommended)
17
+
18
+ Gradually replace components over time:
19
+
20
+ 1. Install shadcn/ui alongside existing library
21
+ 2. Replace components page by page or feature by feature
22
+ 3. Remove old library once migration is complete
23
+
24
+ **Pros**: Low risk, can be done alongside feature work
25
+ **Cons**: Temporary bundle size increase
26
+
27
+ ### Strategy 2: Big Bang Migration
28
+
29
+ Replace all components at once:
30
+
31
+ 1. Set up shadcn/ui
32
+ 2. Create component mapping document
33
+ 3. Replace all components in one effort
34
+ 4. Test thoroughly
35
+
36
+ **Pros**: Clean cutover, no mixed UI
37
+ **Cons**: High risk, requires dedicated time
38
+
39
+ ## Internal Migrations (shadcn specific)
40
+
41
+ ### RTL Support Migration
42
+ If you need to support RTL languages (like Arabic or Hebrew) in an existing shadcn/ui project:
43
+
44
+ ```bash
45
+ npx shadcn@latest migrate rtl
46
+ ```
47
+
48
+ This CLI command transforms your components to use **logical properties**:
49
+ - `ml-4` -> `ms-4` (margin-start)
50
+ - `pl-4` -> `ps-4` (padding-start)
51
+ - `text-left` -> `text-start`
52
+
53
+ It ensures your UI adapts correctly to layout direction without manual refactoring.
54
+
55
+ ## From Material-UI (MUI)
56
+
57
+ ### Component Mapping
58
+
59
+ | MUI Component | shadcn/ui Equivalent | Notes |
60
+ |---------------|----------------------|-------|
61
+ | Button | Button | Similar API |
62
+ | TextField | Input + Label | Separate components |
63
+ | Select | Select | Different structure |
64
+ | Dialog | Dialog | Similar concept |
65
+ | Drawer | Sheet | Side panel |
66
+ | Card | Card | Very similar |
67
+ | Table | Table | Use with TanStack Table |
68
+ | Checkbox | Checkbox | Similar API |
69
+ | Switch | Switch | Similar API |
70
+ | Tabs | Tabs | Similar structure |
71
+ | Tooltip | Tooltip | Simpler API |
72
+ | Menu | Dropdown Menu | Different trigger model |
73
+ | Snackbar | Toast | Different implementation |
74
+ | Autocomplete | Combobox | Use with Command |
75
+
76
+ ### Key Differences
77
+
78
+ **1. Import Structure**
79
+ ```tsx
80
+ // MUI
81
+ import Button from '@mui/material/Button'
82
+
83
+ // shadcn/ui
84
+ import { Button } from '@/components/ui/button'
85
+ ```
86
+
87
+ **2. Form Components**
88
+ ```tsx
89
+ // MUI
90
+ <TextField
91
+ label="Email"
92
+ value={email}
93
+ onChange={(e) => setEmail(e.target.value)}
94
+ error={!!errors.email}
95
+ helperText={errors.email}
96
+ />
97
+
98
+ // shadcn/ui
99
+ <div className="space-y-2">
100
+ <Label htmlFor="email">Email</Label>
101
+ <Input
102
+ id="email"
103
+ value={email}
104
+ onChange={(e) => setEmail(e.target.value)}
105
+ />
106
+ {errors.email && (
107
+ <p className="text-sm text-destructive">{errors.email}</p>
108
+ )}
109
+ </div>
110
+
111
+ // Or with Form component
112
+ <FormField
113
+ control={form.control}
114
+ name="email"
115
+ render={({ field }) => (
116
+ <FormItem>
117
+ <FormLabel>Email</FormLabel>
118
+ <FormControl>
119
+ <Input {...field} />
120
+ </FormControl>
121
+ <FormMessage />
122
+ </FormItem>
123
+ )}
124
+ />
125
+ ```
126
+
127
+ **3. Theming**
128
+ ```tsx
129
+ // MUI
130
+ import { ThemeProvider, createTheme } from '@mui/material/styles'
131
+
132
+ const theme = createTheme({
133
+ palette: {
134
+ primary: { main: '#1976d2' },
135
+ },
136
+ })
137
+
138
+ <ThemeProvider theme={theme}>
139
+ <App />
140
+ </ThemeProvider>
141
+
142
+ // shadcn/ui
143
+ // Edit globals.css
144
+ :root {
145
+ --primary: 215 100% 50%;
146
+ }
147
+ ```
148
+
149
+ **4. Styling Approach**
150
+ ```tsx
151
+ // MUI (sx prop)
152
+ <Button sx={{ px: 4, py: 2, borderRadius: 2 }}>
153
+ Click me
154
+ </Button>
155
+
156
+ // shadcn/ui (Tailwind classes)
157
+ <Button className="px-4 py-2 rounded-lg">
158
+ Click me
159
+ </Button>
160
+ ```
161
+
162
+ ### Migration Example: Login Form
163
+
164
+ **Before (MUI)**:
165
+ ```tsx
166
+ import { TextField, Button, Box } from '@mui/material'
167
+
168
+ export function LoginForm() {
169
+ return (
170
+ <Box component="form" sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
171
+ <TextField label="Email" type="email" required />
172
+ <TextField label="Password" type="password" required />
173
+ <Button variant="contained" type="submit">
174
+ Sign In
175
+ </Button>
176
+ </Box>
177
+ )
178
+ }
179
+ ```
180
+
181
+ **After (shadcn/ui)**:
182
+ ```tsx
183
+ import { Input } from '@/components/ui/input'
184
+ import { Label } from '@/components/ui/label'
185
+ import { Button } from '@/components/ui/button'
186
+
187
+ export function LoginForm() {
188
+ return (
189
+ <form className="flex flex-col gap-4">
190
+ <div className="space-y-2">
191
+ <Label htmlFor="email">Email</Label>
192
+ <Input id="email" type="email" required />
193
+ </div>
194
+ <div className="space-y-2">
195
+ <Label htmlFor="password">Password</Label>
196
+ <Input id="password" type="password" required />
197
+ </div>
198
+ <Button type="submit">Sign In</Button>
199
+ </form>
200
+ )
201
+ }
202
+ ```
203
+
204
+ ## From Chakra UI
205
+
206
+ ### Component Mapping
207
+
208
+ | Chakra UI | shadcn/ui | Notes |
209
+ |-----------|-----------|-------|
210
+ | Button | Button | Similar variants |
211
+ | Input | Input | More basic |
212
+ | Select | Select | Different structure |
213
+ | Modal | Dialog | Similar concept |
214
+ | Drawer | Sheet | Very similar |
215
+ | Box | div | Use Tailwind classes |
216
+ | Flex | div | Use flex utilities |
217
+ | Stack | div | Use space-y-* classes |
218
+ | Text | p/span | Use typography classes |
219
+ | Heading | h1/h2/etc | Use typography classes |
220
+ | useToast | useToast | Different API |
221
+ | Menu | Dropdown Menu | Similar |
222
+
223
+ ### Key Differences
224
+
225
+ **1. Layout Components**
226
+ ```tsx
227
+ // Chakra UI
228
+ <Stack spacing={4} direction="column">
229
+ <Box>Item 1</Box>
230
+ <Box>Item 2</Box>
231
+ </Stack>
232
+
233
+ // shadcn/ui
234
+ <div className="flex flex-col space-y-4">
235
+ <div>Item 1</div>
236
+ <div>Item 2</div>
237
+ </div>
238
+ ```
239
+
240
+ **2. Responsive Styles**
241
+ ```tsx
242
+ // Chakra UI
243
+ <Box display={{ base: 'block', md: 'flex' }} />
244
+
245
+ // shadcn/ui
246
+ <div className="block md:flex" />
247
+ ```
248
+
249
+ **3. Color Mode**
250
+ ```tsx
251
+ // Chakra UI
252
+ import { useColorMode } from '@chakra-ui/react'
253
+
254
+ const { colorMode, toggleColorMode } = useColorMode()
255
+
256
+ // shadcn/ui (with next-themes)
257
+ import { useTheme } from 'next-themes'
258
+
259
+ const { theme, setTheme } = useTheme()
260
+ ```
261
+
262
+ ## From Ant Design
263
+
264
+ ### Component Mapping
265
+
266
+ | Ant Design | shadcn/ui | Notes |
267
+ |------------|-----------|-------|
268
+ | Button | Button | Similar |
269
+ | Input | Input | More basic |
270
+ | Form | Form | Different approach |
271
+ | Table | Table | Use TanStack Table |
272
+ | Modal | Dialog | Similar |
273
+ | Drawer | Sheet | Similar |
274
+ | Select | Select | Different API |
275
+ | DatePicker | Calendar + Popover | More manual |
276
+ | Menu | Navigation Menu | Different |
277
+ | message | Toast | Different API |
278
+ | notification | Toast | Similar concept |
279
+
280
+ ### Key Differences
281
+
282
+ **1. Form Handling**
283
+ ```tsx
284
+ // Ant Design
285
+ <Form
286
+ form={form}
287
+ onFinish={onSubmit}
288
+ >
289
+ <Form.Item name="email" rules={[{ required: true }]}>
290
+ <Input />
291
+ </Form.Item>
292
+ <Form.Item>
293
+ <Button type="primary" htmlType="submit">Submit</Button>
294
+ </Form.Item>
295
+ </Form>
296
+
297
+ // shadcn/ui (with react-hook-form)
298
+ <Form {...form}>
299
+ <form onSubmit={form.handleSubmit(onSubmit)}>
300
+ <FormField
301
+ control={form.control}
302
+ name="email"
303
+ render={({ field }) => (
304
+ <FormItem>
305
+ <FormControl>
306
+ <Input {...field} />
307
+ </FormControl>
308
+ <FormMessage />
309
+ </FormItem>
310
+ )}
311
+ />
312
+ <Button type="submit">Submit</Button>
313
+ </form>
314
+ </Form>
315
+ ```
316
+
317
+ **2. Notifications**
318
+ ```tsx
319
+ // Ant Design
320
+ import { message } from 'antd'
321
+
322
+ message.success('Success!')
323
+
324
+ // shadcn/ui
325
+ import { useToast } from '@/components/ui/use-toast'
326
+
327
+ const { toast } = useToast()
328
+
329
+ toast({
330
+ title: "Success!",
331
+ description: "Operation completed.",
332
+ })
333
+ ```
334
+
335
+ ## From Bootstrap
336
+
337
+ ### Component Mapping
338
+
339
+ | Bootstrap | shadcn/ui | Notes |
340
+ |-----------|-----------|-------|
341
+ | btn | Button | Similar variants |
342
+ | form-control | Input | Similar |
343
+ | card | Card | Very similar structure |
344
+ | modal | Dialog | Different API |
345
+ | dropdown | Dropdown Menu | Similar concept |
346
+ | nav/navbar | Navigation Menu | Different |
347
+ | alert | Alert | Similar |
348
+ | badge | Badge | Similar |
349
+ | table | Table | Use with TanStack Table |
350
+
351
+ ### Key Differences
352
+
353
+ **1. Class-Based vs Component-Based**
354
+ ```tsx
355
+ // Bootstrap
356
+ <button className="btn btn-primary btn-lg">
357
+ Click me
358
+ </button>
359
+
360
+ // shadcn/ui
361
+ <Button variant="default" size="lg">
362
+ Click me
363
+ </Button>
364
+ ```
365
+
366
+ **2. Cards**
367
+ ```html
368
+ <!-- Bootstrap -->
369
+ <div class="card">
370
+ <div class="card-header">Title</div>
371
+ <div class="card-body">Content</div>
372
+ <div class="card-footer">Footer</div>
373
+ </div>
374
+
375
+ <!-- shadcn/ui -->
376
+ <Card>
377
+ <CardHeader>
378
+ <CardTitle>Title</CardTitle>
379
+ </CardHeader>
380
+ <CardContent>Content</CardContent>
381
+ <CardFooter>Footer</CardFooter>
382
+ </Card>
383
+ ```
384
+
385
+ ## Migration Checklist
386
+
387
+ ### Before Migration
388
+
389
+ - [ ] Audit current component usage
390
+ - [ ] Set up shadcn/ui in a test branch
391
+ - [ ] Create component mapping document
392
+ - [ ] Plan migration order (start with simple components)
393
+ - [ ] Set up Tailwind CSS properly
394
+ - [ ] Configure path aliases
395
+
396
+ ### During Migration
397
+
398
+ - [ ] Install shadcn/ui components as needed
399
+ - [ ] Replace components incrementally
400
+ - [ ] Update styling to use Tailwind classes
401
+ - [ ] Test each page/feature after migration
402
+ - [ ] Update tests to match new components
403
+ - [ ] Handle form validation (switch to react-hook-form + zod)
404
+ - [ ] Migrate theme/color variables
405
+
406
+ ### After Migration
407
+
408
+ - [ ] Remove old UI library dependencies
409
+ - [ ] Clean up unused imports
410
+ - [ ] Optimize bundle size
411
+ - [ ] Update documentation
412
+ - [ ] Review and update design system
413
+ - [ ] Train team on new components
414
+
415
+ ## Common Pitfalls
416
+
417
+ ### 1. Not Setting Up Tailwind Properly
418
+
419
+ shadcn/ui requires Tailwind. Ensure:
420
+ - `tailwind.config.js` includes correct content paths
421
+ - CSS variables are defined in `globals.css`
422
+ - Tailwind plugins are installed (e.g., `tailwindcss-animate`)
423
+
424
+ ### 2. Forgetting Path Aliases
425
+
426
+ Components use `@/` imports. Configure:
427
+ - `tsconfig.json` with path aliases
428
+ - Vite/Next.js config for runtime resolution
429
+
430
+ ### 3. Trying to Match Old Library Exactly
431
+
432
+ Don't force shadcn/ui to work like your old library. Embrace the new patterns:
433
+ - Use composition over configuration
434
+ - Leverage Tailwind utilities
435
+ - Create wrapper components for custom needs
436
+
437
+ ### 4. Not Using Form Libraries
438
+
439
+ shadcn/ui form components are basic. For complex forms, use:
440
+ - `react-hook-form` for form state
441
+ - `zod` for validation
442
+ - shadcn's `Form` component for integration
443
+
444
+ ### 5. Ignoring Accessibility
445
+
446
+ While shadcn/ui is accessible by default, custom modifications can break this. Test with:
447
+ - Keyboard navigation
448
+ - Screen readers
449
+ - ARIA attribute validation
450
+
451
+ ## Getting Help
452
+
453
+ - **Discord**: [shadcn/ui Discord](https://discord.com/invite/vNvTqVaWm6)
454
+ - **GitHub Discussions**: [shadcn/ui Discussions](https://github.com/shadcn-ui/ui/discussions)
455
+ - **Documentation**: [ui.shadcn.com](https://ui.shadcn.com)
456
+
457
+ ## Next Steps
458
+
459
+ After migration:
460
+ 1. Review the [Customization Guide](./customization-guide.md)
461
+ 2. Explore the [Component Catalog](./component-catalog.md)
462
+ 3. Check out [Examples](../examples/)
463
+ 4. Consider building a component library on top of shadcn/ui