@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,326 @@
1
+ ---
2
+ name: shadcn-ui
3
+ description: Expert guidance for integrating and building applications with shadcn/ui components, including component discovery, installation, customization, and best practices.
4
+ allowed-tools:
5
+ - "shadcn*:*"
6
+ - "mcp_shadcn*"
7
+ - "Read"
8
+ - "Write"
9
+ - "Bash"
10
+ - "web_fetch"
11
+ ---
12
+
13
+ # shadcn/ui Component Integration
14
+
15
+ You are a frontend engineer specialized in building applications with shadcn/ui—a collection of beautifully designed, accessible, and customizable components built with Radix UI or Base UI and Tailwind CSS. You help developers discover, integrate, and customize components following best practices.
16
+
17
+ ## Core Principles
18
+
19
+ shadcn/ui is **not a component library**—it's a collection of reusable components that you copy into your project. This gives you:
20
+ - **Full ownership**: Components live in your codebase, not node_modules
21
+ - **Complete customization**: Modify styling, behavior, and structure freely, including choosing between Radix UI or Base UI primitives
22
+ - **No version lock-in**: Update components selectively at your own pace
23
+ - **Zero runtime overhead**: No library bundle, just the code you need
24
+
25
+ ## Component Discovery and Installation
26
+
27
+ ### 1. Browse Available Components
28
+
29
+ Use the shadcn MCP tools to explore the component catalog and Registry Directory:
30
+ - **List all components**: Use `list_components` to see the complete catalog
31
+ - **Get component metadata**: Use `get_component_metadata` to understand props, dependencies, and usage
32
+ - **View component demos**: Use `get_component_demo` to see implementation examples
33
+
34
+ ### 2. Component Installation
35
+
36
+ There are two approaches to adding components:
37
+
38
+ **A. Direct Installation (Recommended)**
39
+ ```bash
40
+ npx shadcn@latest add [component-name]
41
+ ```
42
+
43
+ This command:
44
+ - Downloads the component source code (adapting to your config: Radix vs Base UI)
45
+ - Installs required dependencies
46
+ - Places files in `components/ui/`
47
+ - Updates your `components.json` config
48
+
49
+ **B. Manual Integration**
50
+ 1. Use `get_component` to retrieve the source code
51
+ 2. Create the file in `components/ui/[component-name].tsx`
52
+ 3. Install peer dependencies manually
53
+ 4. Adjust imports if needed
54
+
55
+ ### 3. Registry and Custom Registries
56
+
57
+ If working with a custom registry (defined in `components.json`) or exploring the Registry Directory:
58
+ - Use `get_project_registries` to list available registries
59
+ - Use `list_items_in_registries` to see registry-specific components
60
+ - Use `view_items_in_registries` for detailed component information
61
+ - Use `search_items_in_registries` to find specific components
62
+
63
+ ## Project Setup
64
+
65
+ ### Initial Configuration
66
+
67
+ For **new projects**, use the `create` command to customize everything (style, fonts, component library):
68
+
69
+ ```bash
70
+ npx shadcn@latest create
71
+ ```
72
+
73
+ For **existing projects**, initialize configuration:
74
+
75
+ ```bash
76
+ npx shadcn@latest init
77
+ ```
78
+
79
+ This creates `components.json` with your configuration:
80
+ - **style**: default, new-york (classic) OR choose new visual styles like Vega, Nova, Maia, Lyra, Mira
81
+ - **baseColor**: slate, gray, zinc, neutral, stone
82
+ - **cssVariables**: true/false for CSS variable usage
83
+ - **tailwind config**: paths to Tailwind files
84
+ - **aliases**: import path shortcuts
85
+ - **rsc**: Use React Server Components (yes/no)
86
+ - **rtl**: Enable RTL support (optional)
87
+
88
+ ### Required Dependencies
89
+
90
+ shadcn/ui components require:
91
+ - **React** (18+)
92
+ - **Tailwind CSS** (3.0+)
93
+ - **Primitives**: Radix UI OR Base UI (depending on your choice)
94
+ - **class-variance-authority** (for variant styling)
95
+ - **clsx** and **tailwind-merge** (for class composition)
96
+
97
+ ## Component Architecture
98
+
99
+ ### File Structure
100
+ ```
101
+ src/
102
+ ├── components/
103
+ │ ├── ui/ # shadcn components
104
+ │ │ ├── button.tsx
105
+ │ │ ├── card.tsx
106
+ │ │ └── dialog.tsx
107
+ │ └── [custom]/ # your composed components
108
+ │ └── user-card.tsx
109
+ ├── lib/
110
+ │ └── utils.ts # cn() utility
111
+ └── app/
112
+ └── page.tsx
113
+ ```
114
+
115
+ ### The `cn()` Utility
116
+
117
+ All shadcn components use the `cn()` helper for class merging:
118
+
119
+ ```typescript
120
+ import { clsx, type ClassValue } from "clsx"
121
+ import { twMerge } from "tailwind-merge"
122
+
123
+ export function cn(...inputs: ClassValue[]) {
124
+ return twMerge(clsx(inputs))
125
+ }
126
+ ```
127
+
128
+ This allows you to:
129
+ - Override default styles without conflicts
130
+ - Conditionally apply classes
131
+ - Merge Tailwind classes intelligently
132
+
133
+ ## Customization Best Practices
134
+
135
+ ### 1. Theme Customization
136
+
137
+ Edit your Tailwind config and CSS variables in `app/globals.css`:
138
+
139
+ ```css
140
+ @layer base {
141
+ :root {
142
+ --background: 0 0% 100%;
143
+ --foreground: 222.2 84% 4.9%;
144
+ --primary: 221.2 83.2% 53.3%;
145
+ /* ... more variables */
146
+ }
147
+
148
+ .dark {
149
+ --background: 222.2 84% 4.9%;
150
+ --foreground: 210 40% 98%;
151
+ /* ... dark mode overrides */
152
+ }
153
+ }
154
+ ```
155
+
156
+ ### 2. Component Variants
157
+
158
+ Use `class-variance-authority` (cva) for variant logic:
159
+
160
+ ```typescript
161
+ import { cva } from "class-variance-authority"
162
+
163
+ const buttonVariants = cva(
164
+ "inline-flex items-center justify-center rounded-md",
165
+ {
166
+ variants: {
167
+ variant: {
168
+ default: "bg-primary text-primary-foreground",
169
+ outline: "border border-input",
170
+ },
171
+ size: {
172
+ default: "h-10 px-4 py-2",
173
+ sm: "h-9 rounded-md px-3",
174
+ },
175
+ },
176
+ defaultVariants: {
177
+ variant: "default",
178
+ size: "default",
179
+ },
180
+ }
181
+ )
182
+ ```
183
+
184
+ ### 3. Extending Components
185
+
186
+ Create wrapper components in `components/` (not `components/ui/`):
187
+
188
+ ```typescript
189
+ // components/custom-button.tsx
190
+ import { Button } from "@/components/ui/button"
191
+ import { Loader2 } from "lucide-react"
192
+
193
+ export function LoadingButton({
194
+ loading,
195
+ children,
196
+ ...props
197
+ }: ButtonProps & { loading?: boolean }) {
198
+ return (
199
+ <Button disabled={loading} {...props}>
200
+ {loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
201
+ {children}
202
+ </Button>
203
+ )
204
+ }
205
+ ```
206
+
207
+ ## Blocks and Complex Components
208
+
209
+ shadcn/ui provides complete UI blocks (authentication forms, dashboards, etc.):
210
+
211
+ 1. **List available blocks**: Use `list_blocks` with optional category filter
212
+ 2. **Get block source**: Use `get_block` with the block name
213
+ 3. **Install blocks**: Many blocks include multiple component files
214
+
215
+ Blocks are organized by category:
216
+ - **calendar**: Calendar interfaces
217
+ - **dashboard**: Dashboard layouts
218
+ - **login**: Authentication flows
219
+ - **sidebar**: Navigation sidebars
220
+ - **products**: E-commerce components
221
+
222
+ ## Accessibility
223
+
224
+ All shadcn/ui components are built on Radix UI primitives, ensuring:
225
+ - **Keyboard navigation**: Full keyboard support out of the box
226
+ - **Screen reader support**: Proper ARIA attributes
227
+ - **Focus management**: Logical focus flow
228
+ - **Disabled states**: Proper disabled and aria-disabled handling
229
+
230
+ When customizing, maintain accessibility:
231
+ - Keep ARIA attributes
232
+ - Preserve keyboard handlers
233
+ - Test with screen readers
234
+ - Maintain focus indicators
235
+
236
+ ## Common Patterns
237
+
238
+ ### Form Building
239
+ ```typescript
240
+ import { Button } from "@/components/ui/button"
241
+ import { Input } from "@/components/ui/input"
242
+ import { Label } from "@/components/ui/label"
243
+
244
+ // Use with react-hook-form for validation
245
+ import { useForm } from "react-hook-form"
246
+ ```
247
+
248
+ ### Dialog/Modal Patterns
249
+ ```typescript
250
+ import {
251
+ Dialog,
252
+ DialogContent,
253
+ DialogDescription,
254
+ DialogHeader,
255
+ DialogTitle,
256
+ DialogTrigger,
257
+ } from "@/components/ui/dialog"
258
+ ```
259
+
260
+ ### Data Display
261
+ ```typescript
262
+ import {
263
+ Table,
264
+ TableBody,
265
+ TableCell,
266
+ TableHead,
267
+ TableHeader,
268
+ TableRow,
269
+ } from "@/components/ui/table"
270
+ ```
271
+
272
+ ## Troubleshooting
273
+
274
+ ### Import Errors
275
+ - Check `components.json` for correct alias configuration
276
+ - Verify `tsconfig.json` includes the `@` path alias:
277
+ ```json
278
+ {
279
+ "compilerOptions": {
280
+ "paths": {
281
+ "@/*": ["./src/*"]
282
+ }
283
+ }
284
+ }
285
+ ```
286
+
287
+ ### Style Conflicts
288
+ - Ensure Tailwind CSS is properly configured
289
+ - Check that `globals.css` is imported in your root layout
290
+ - Verify CSS variable names match between components and theme
291
+
292
+ ### Missing Dependencies
293
+ - Run component installation via CLI to auto-install deps
294
+ - Manually check `package.json` for required Radix UI packages
295
+ - Use `get_component_metadata` to see dependency lists
296
+
297
+ ### Version Compatibility
298
+ - shadcn/ui v4 requires React 18+ and Next.js 13+ (if using Next.js)
299
+ - Some components require specific Radix UI versions
300
+ - Check documentation for breaking changes between versions
301
+
302
+ ## Validation and Quality
303
+
304
+ Before committing components:
305
+ 1. **Type check**: Run `tsc --noEmit` to verify TypeScript
306
+ 2. **Lint**: Run your linter to catch style issues
307
+ 3. **Test accessibility**: Use tools like axe DevTools
308
+ 4. **Visual QA**: Test in light and dark modes
309
+ 5. **Responsive check**: Verify behavior at different breakpoints
310
+
311
+ ## Resources
312
+
313
+ Refer to the following resource files for detailed guidance:
314
+ - `resources/setup-guide.md` - Step-by-step project initialization
315
+ - `resources/component-catalog.md` - Complete component reference
316
+ - `resources/customization-guide.md` - Theming and variant patterns
317
+ - `resources/migration-guide.md` - Upgrading from other UI libraries
318
+
319
+ ## Examples
320
+
321
+ See the `examples/` directory for:
322
+ - Complete component implementations
323
+ - Form patterns with validation
324
+ - Dashboard layouts
325
+ - Authentication flows
326
+ - Data table implementations
@@ -0,0 +1,177 @@
1
+ // Example: Authentication Layout with shadcn/ui
2
+ // Demonstrates: Layout composition, card usage, form integration
3
+
4
+ "use client"
5
+
6
+ import { Button } from "@/components/ui/button"
7
+ import {
8
+ Card,
9
+ CardContent,
10
+ CardDescription,
11
+ CardFooter,
12
+ CardHeader,
13
+ CardTitle,
14
+ } from "@/components/ui/card"
15
+ import { Input } from "@/components/ui/input"
16
+ import { Label } from "@/components/ui/label"
17
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
18
+ import { useState } from "react"
19
+
20
+ export function AuthLayout() {
21
+ const [isLoading, setIsLoading] = useState<boolean>(false)
22
+
23
+ async function onSubmit(event: React.FormEvent<HTMLFormElement>) {
24
+ event.preventDefault()
25
+ setIsLoading(true)
26
+
27
+ // Simulate API call
28
+ setTimeout(() => {
29
+ setIsLoading(false)
30
+ }, 2000)
31
+ }
32
+
33
+ return (
34
+ <div className="flex min-h-screen items-center justify-center bg-muted/40">
35
+ <Tabs defaultValue="login" className="w-[400px]">
36
+ <TabsList className="grid w-full grid-cols-2">
37
+ <TabsTrigger value="login">Login</TabsTrigger>
38
+ <TabsTrigger value="register">Register</TabsTrigger>
39
+ </TabsList>
40
+
41
+ <TabsContent value="login">
42
+ <Card>
43
+ <CardHeader>
44
+ <CardTitle>Login</CardTitle>
45
+ <CardDescription>
46
+ Enter your credentials to access your account.
47
+ </CardDescription>
48
+ </CardHeader>
49
+ <form onSubmit={onSubmit}>
50
+ <CardContent className="space-y-4">
51
+ <div className="space-y-2">
52
+ <Label htmlFor="email">Email</Label>
53
+ <Input
54
+ id="email"
55
+ type="email"
56
+ placeholder="m@example.com"
57
+ required
58
+ />
59
+ </div>
60
+ <div className="space-y-2">
61
+ <Label htmlFor="password">Password</Label>
62
+ <Input
63
+ id="password"
64
+ type="password"
65
+ required
66
+ />
67
+ </div>
68
+ </CardContent>
69
+ <CardFooter className="flex flex-col space-y-4">
70
+ <Button
71
+ type="submit"
72
+ className="w-full"
73
+ disabled={isLoading}
74
+ >
75
+ {isLoading ? "Signing in..." : "Sign in"}
76
+ </Button>
77
+ <Button
78
+ type="button"
79
+ variant="link"
80
+ className="w-full text-sm text-muted-foreground"
81
+ >
82
+ Forgot password?
83
+ </Button>
84
+ </CardFooter>
85
+ </form>
86
+ </Card>
87
+ </TabsContent>
88
+
89
+ <TabsContent value="register">
90
+ <Card>
91
+ <CardHeader>
92
+ <CardTitle>Create an account</CardTitle>
93
+ <CardDescription>
94
+ Enter your information to create an account.
95
+ </CardDescription>
96
+ </CardHeader>
97
+ <form onSubmit={onSubmit}>
98
+ <CardContent className="space-y-4">
99
+ <div className="space-y-2">
100
+ <Label htmlFor="name">Name</Label>
101
+ <Input
102
+ id="name"
103
+ placeholder="John Doe"
104
+ required
105
+ />
106
+ </div>
107
+ <div className="space-y-2">
108
+ <Label htmlFor="register-email">Email</Label>
109
+ <Input
110
+ id="register-email"
111
+ type="email"
112
+ placeholder="m@example.com"
113
+ required
114
+ />
115
+ </div>
116
+ <div className="space-y-2">
117
+ <Label htmlFor="register-password">Password</Label>
118
+ <Input
119
+ id="register-password"
120
+ type="password"
121
+ required
122
+ />
123
+ </div>
124
+ <div className="space-y-2">
125
+ <Label htmlFor="confirm-password">Confirm Password</Label>
126
+ <Input
127
+ id="confirm-password"
128
+ type="password"
129
+ required
130
+ />
131
+ </div>
132
+ </CardContent>
133
+ <CardFooter>
134
+ <Button
135
+ type="submit"
136
+ className="w-full"
137
+ disabled={isLoading}
138
+ >
139
+ {isLoading ? "Creating account..." : "Create account"}
140
+ </Button>
141
+ </CardFooter>
142
+ </form>
143
+ </Card>
144
+ </TabsContent>
145
+ </Tabs>
146
+ </div>
147
+ )
148
+ }
149
+
150
+ /**
151
+ * Key Patterns Demonstrated:
152
+ *
153
+ * 1. Layout Composition: Centered authentication card with full-height viewport
154
+ * 2. Card Usage: Structured content with header, body, and footer
155
+ * 3. Tabs: Switch between login and register forms
156
+ * 4. Form Structure: Proper labeling and input grouping
157
+ * 5. Loading States: Button disabled state during form submission
158
+ * 6. Responsive Design: Mobile-friendly with max-width constraint
159
+ * 7. Tailwind Utilities: Using spacing, flexbox, and grid utilities
160
+ *
161
+ * Design Choices:
162
+ * - Minimal, clean interface focusing on the task at hand
163
+ * - Proper semantic HTML with form elements
164
+ * - Accessible labels and inputs
165
+ * - Clear visual hierarchy with card components
166
+ * - Loading feedback for better UX
167
+ *
168
+ * Required Dependencies:
169
+ * None beyond React and shadcn/ui components
170
+ *
171
+ * Installation:
172
+ * npx shadcn@latest add card
173
+ * npx shadcn@latest add input
174
+ * npx shadcn@latest add label
175
+ * npx shadcn@latest add button
176
+ * npx shadcn@latest add tabs
177
+ */