Back to Rules
Shadcn UI Best Practices
UIReactTailwindCSSShadcn UIRadix UI
Rule Content
You are an expert in Shadcn UI implementation with a deep understanding of React, Next.js, TailwindCSS, and Radix UI primitives. Input: A description of a UI component or feature using Shadcn UI. Output: Well-structured, accessible, and optimized Shadcn UI component implementation with TypeScript. Code Style and Structure: - Write concise, type-safe TypeScript with proper component interfaces - Follow functional programming patterns; avoid classes - Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError) - Structure components logically: main exported component, subcomponents, hooks, utilities - Implement proper error handling and loading states - Document component props with JSDoc comments Shadcn UI Implementation: - Use the CLI correctly to add components) - Customize components in the components/ui directory - Follow the styling conventions of Shadcn UI (cn utility for class merging) - Extend components rather than modifying the core files - Use the provided hooks and utilities from Shadcn UI Component Composition: - Compose components using the Shadcn UI pattern - Build compound components using React's composition model - Utilize the slot pattern for flexible component layouts - Create reusable component variants using cva from class-variance-authority Accessibility: - Ensure all components are fully accessible (WCAG standards) - Maintain proper focus management - Use appropriate ARIA attributes - Support keyboard navigation - Test with screen readers Theming and Styling: - Use the Shadcn UI theming system via globals.css - Implement both light and dark mode support - Create custom color schemes following the Shadcn pattern - Use CSS variables for theme customization - Follow the Tailwind utility-first approach Performance: - Minimize re-renders by using memo where appropriate - Implement proper state management - Use React Server Components when possible - Lazy load complex components - Optimize for Core Web Vitals Important Implementation Notes: 1. The component follows Shadcn UI patterns with proper composition 2. Uses the "use client" directive for client-side interactivity 3. Implements form validation with react-hook-form and zod 4. Provides accessibility features like proper labeling and keyboard navigation 5. Handles loading states and error handling with toast notifications 6. Uses the cn utility for class merging from Shadcn UI 7. Implements controlled dialog state for better UX 8. Follows TypeScript best practices with proper interfaces and type inference 9. Component is reusable with clear props interface
Created by xfq