shadcn-ui-expert
Develop high-quality, accessible React components using shadcn-ui, Tailwind CSS, and Radix UI. Use when building forms, layouts, dialogs, tables, or any UI components. Supports Next.js, Vite, Remix, Astro, and more. Integrates with shadcn MCP server for component discovery and installation.
By majesteitbart · 440 installs
npx skills add majesteitbart/talentmatcher --skill shadcn-ui-expert
Source repository · Upstream listing
shadcn ui Expert
shadcn ui is a collection of beautifully designed, accessible React components built with TypeScript, Tailwind CSS, and Radix UI primitives. This skill guides you through component selection, implementation, customization, and best practices.
Quick Start
Installation
First, initialize shadcn ui in your project:
This creates a components.json file for configuration. Choose your framework:
Next.js (App Router recommended)
Vite
Remix
Astro
Laravel
Gatsby
React Router
TanStack Router/Start
Installing Components
Use the CLI to install individual components:
Or ask me directly to "add a login form" I can use the MCP server to handle installation with natural language.
Component Categories
Form & Input Components
Use for : Data collection, user input, validation
form Complex forms with React Hook Form
input Text fields
textarea Multi line text
select Dropdown selections
checkbox Boolean inputs
radio group Single selection from options
switch Toggle boolean states
date picker Date selection
combobox Searchable select with autocomplete
Layout & Navigation
Use for : App structure, navigation flows, content organization
sidebar Collapsible side navigation
tabs Tabbed content
accordion Collapsible sections
breadcrumb Navigation path
navigation menu Dropdown menus
scroll area Custom scrollable regions
Overlays & Dialogs
Use for : Modals, confirmations, floating content
dialog Modal dialogs
alert dialog Confirmation prompts
drawer Mobile friendly side panels
popover Floating popovers
tooltip Hover information
dropdown menu Menu dropdowns
context menu Right click menus
Data Display
Use for : Showing structured data
table Basic HTML tables
data table Advanced tables with sorting/filtering/pagination
avatar User profile images
badge Status labels
card Content containers
Feedback & Status
Use for : User feedback, loading states, alerts
alert Alert messages
toast Notifications
progress Progress bars
skeleton Loading placeholders
spinner Loading indicators
Component Selection Guide
Ask yourself these questions to choose the right component:
1. What is the user interacting with?
Text input → use input
Choosing from options → use select or combobox
Yes/no decision → use checkbox or switch
Multiple fields → use form
2. How should it be displayed?
Inline with other content → input , select
Centered on screen → dialog
Slide from side → drawer
Information tooltip → tooltip
3. What's the context?
Inside a form → use field component with form
Standalone button → use button
Inside a table → use table row cell or data table
4. Does it need validation?
Yes → combine form + field + React Hook Form
No → use simple components ( input , select )
Common Implementation Patterns
Basic Form with Validation
Dialog Pattern
Styling & Customization
All components use Tailwind CSS for styling. Customize appearance through:
1. Tailwind Classes
Add classes directly to components:
2. CSS Variables (Theme Colors)
shadcn/ui uses CSS variables for theming. Edit app/globals.css :
3. Dark Mode
Enable dark mode in your framework:
Next.js : Configure in next.config.js
Vite : Add dark class detection in tailwind.config.js
Components automatically respond to dark class
4. Component Variants
Many components have built in variants:
Composition & Best Practices
1. Composition Over Customization
Combine small components rather than modifying large ones:
2. Use Type Safety
Leverage TypeScript for prop safety:
3. Accessibility Built in
shadcn/ui uses Radix UI primitives with accessibility built in:
Keyboard navigation
ARIA attributes
Screen reader support
Focus management
Just use components correctly; accessibility comes free.
4. Performance
Components are small and modular
Tree shakeable
No runtime overhead beyond Radix UI
Use React.memo for frequently rerendered components if needed
Framework Specific Notes
Next.js
Use shadcn ui@latest add form for React Hook Form integration
Combine with Server Actions for form submissions
Dark mode works via next themes
Vite
Ensure tailwind.config.js includes component paths
Use Vite's HMR for fast development
Remix
Forms work with remix form actions
Use route transitions for optimistic updates
Common Customization Tasks
Changing Primary Color
Edit components.json during init or manually update CSS variables in globals.css .
Adding Custom Components
Create your own components in components/ui/ following shadcn/ui patterns:
Theming for Multiple Brands
Use CSS variable layers:
Validation & Forms
With React Hook Form + Zod
Best practice for complex forms with client side validation:
With TanStack Form
Alternative for advanced form requirements:
Ask me for specific form patterns (login, signup, multi step, etc.)
Troubleshooting
Components Not Styling Correctly
✅ Verify Tailwind is configured in tailwind.config.js
✅ Check components.json has correct path setting
✅ Run npm install after adding components
TypeScript Errors
✅ Ensure components are imported from /components/ui/name
✅ Components have proper TypeScript support built in
Form Validation Not Working
✅ Install zod and @hookform/resolvers
✅ Use zodResolver with useForm
Next Steps
For detailed guidance on specific tasks:
[COMPONENT GUIDE.md](COMPONENT GUIDE.md) Deep dive into each component
[FORMS GUIDE.md](FORMS GUIDE.md) Building complex forms
[PATTERNS.md](PATTERNS.md) Common UI patterns and combinations
[CUSTOMIZATION.md](CUSTOMIZATION.md) Theming and styling guide
Resources
[shadcn/ui Documentation](https://ui.shadcn.com)
[Radix UI Primitives](https://www.radix ui.com)
[Tailwind CSS](https://tailwindcss.com)
[React Hook Form](https://react hook form.com)
[Zod Validation](https://zod.dev)