frontend-design-system
Frontend Design System
Build modern, accessible, responsive web applications using industry-leading design systems and best practices.
Core Capabilities
1. Design System Selection
When users ask "which UI library should I use" or need design system guidance:
Read the comparison guide:
references/design-system-comparison.md
Decision workflow:
- Identify project requirements (bundle size, customization, speed)
- Review comparison table for best match
- Provide installation commands
- Recommend component set for the use case
Quick recommendations:
- Todo apps / Modern SaaS: shadcn/ui + Tailwind
- Quick prototypes: Chakra UI or Mantine
- Enterprise dashboards: Material UI or Ant Design
- Custom designs: Headless UI + Tailwind
- TypeScript-heavy: Mantine
2. Responsive Layout Design
When users need mobile-friendly layouts or responsive components:
Read the patterns guide:
references/responsive-design-patterns.md
Core principles:
- Always use mobile-first approach
- Follow standard breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)
- Use grid for card layouts:
grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 - Use flexbox for navigation:
flex flex-col md:flex-row - Scale typography:
text-sm md:text-base lg:text-lg
3. Tailwind CSS Patterns
When building with Tailwind CSS:
Read Tailwind patterns:
references/tailwind-patterns.md
Common patterns to apply:
- Cards:
rounded-lg border bg-card text-card-foreground shadow-sm p-6 - Buttons:
inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 - Inputs:
flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 - Dark mode:
bg-white dark:bg-slate-950 text-slate-900 dark:text-slate-50
4. shadcn/ui Components
When using shadcn/ui (recommended for most projects):
Read component reference:
references/shadcn-components.md
Essential components for todo apps:
npx shadcn-ui@latest add button card input form dialog badge tabs checkbox
Use provided templates:
- Task card:
assets/todo-card-template.tsx - Task form:
assets/task-form-template.tsx
Pattern: Compose components
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
<Card>
<CardHeader>
<CardTitle>Title</CardTitle>
</CardHeader>
<CardContent>
<p>Content</p>
<Button>Action</Button>
</CardContent>
</Card>
5. Material UI Implementation
When users choose Material UI:
Read MUI patterns:
references/material-ui-patterns.md
Setup theme first:
import { ThemeProvider, createTheme } from '@mui/material/styles'
const theme = createTheme({
palette: {
primary: { main: '#1976d2' },
},
})
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
Use sx prop for styling:
<Box sx={{ p: 2, mt: 4, borderRadius: 2 }}>
6. Chakra UI Implementation
When users choose Chakra UI:
Read Chakra patterns:
references/chakra-ui-patterns.md
Key advantages:
- Style props:
<Box bg="blue.500" p={4} borderRadius="md"> - Dark mode built-in:
useColorMode(),useColorModeValue() - Responsive arrays:
<Box w={['100%', '50%', '33%']}>
Layout with Stack:
<VStack spacing={4} align="stretch">
<Card>Item 1</Card>
<Card>Item 2</Card>
</VStack>
7. Form Design & Validation
When building forms with validation:
Use template:
assets/task-form-template.tsx
Pattern: React Hook Form + Zod
import { useForm } from "react-hook-form"
import { zodResolver } from "@hookform/resolvers/zod"
import * as z from "zod"
const schema = z.object({
title: z.string().min(3),
})
const form = useForm({
resolver: zodResolver(schema),
})
Always include:
- Field labels (
<FormLabel>) - Error messages (
<FormMessage>) - Helper text (
<FormDescription>) - Disabled states for loading
- Proper accessibility attributes
8. Accessibility Patterns
Always apply:
- Semantic HTML:
<button>not<div onClick> - ARIA labels:
aria-label="Delete task" - Screen reader text:
<span className="sr-only">Hidden</span> - Keyboard navigation: Focus states, tab order
- Color contrast: WCAG AA minimum (4.5:1)
- Touch targets: Minimum 44x44px
9. Dark Mode Implementation
Tailwind approach:
<div className="bg-white dark:bg-slate-950">
<p className="text-slate-900 dark:text-slate-50">
// Theme toggle
import { useTheme } from "next-themes"
const { theme, setTheme } = useTheme()
Chakra UI approach:
const { colorMode, toggleColorMode } = useColorMode()
const bg = useColorModeValue('white', 'gray.800')
Material UI approach:
const theme = createTheme({
palette: {
mode: prefersDarkMode ? 'dark' : 'light',
},
})
10. Component Templates
When building todo apps or similar UIs:
Available templates:
-
Task Card (
assets/todo-card-template.tsx)- Includes: Checkbox, priority badges, tags, due dates, dropdown menu
- Variants: Card view, list item view
- Features: Hover states, accessibility
-
Task Form (
assets/task-form-template.tsx)- Includes: Title, description, priority, due date, tags
- Validation: React Hook Form + Zod
- Variants: Dialog form, inline form
Usage:
# Read template
Read: assets/todo-card-template.tsx
# Adapt to project's design system
# Modify imports and styling as needed
Workflow Guide
For New Projects
-
Select Design System
- Read:
references/design-system-comparison.md - Consider: Bundle size, customization needs, team experience
- Provide recommendation with rationale
- Read:
-
Setup Theme/Config
- Install dependencies
- Configure theme (colors, typography, spacing)
- Setup dark mode if needed
-
Build Core Components
- Start with layout (Container, Grid)
- Add navigation
- Implement forms
- Create card/list components
-
Apply Responsive Patterns
- Read:
references/responsive-design-patterns.md - Mobile-first breakpoints
- Test at key viewports
- Read:
-
Add Accessibility
- Semantic HTML
- ARIA labels
- Keyboard navigation
- Screen reader support
For Todo App Specifically
- Choose design system (recommend shadcn/ui)
- Install core components:
npx shadcn-ui@latest add button card input form dialog badge tabs checkbox - Use templates:
- Copy
assets/todo-card-template.tsx - Copy
assets/task-form-template.tsx
- Copy
- Customize colors/spacing to match brand
- Add responsive layouts from
references/responsive-design-patterns.md - Implement dark mode
For Existing Projects
- Audit current design system
- Identify pain points (bundle size, customization limits, etc.)
- If migrating:
- Read comparison guide for alternatives
- Plan incremental migration
- Start with new components
- If optimizing:
- Apply patterns from references
- Improve responsiveness
- Add accessibility features
Quick Reference
Common Tasks
"Make this responsive"
→ Read: references/responsive-design-patterns.md
→ Apply mobile-first breakpoints
→ Use grid/flexbox patterns
"Add dark mode"
→ For Tailwind: Use dark: prefix
→ For Chakra: Use useColorMode()
→ For MUI: Configure theme palette mode
"Which UI library?"
→ Read: references/design-system-comparison.md
→ Provide recommendation based on requirements
"Build a form with validation"
→ Use: assets/task-form-template.tsx
→ Adapt to project's design system
→ Add custom fields as needed
"Create task card"
→ Use: assets/todo-card-template.tsx
→ Modify for specific features
Design Tokens Reference
Spacing scale: 2, 4, 6, 8, 12, 16, 24, 32, 48, 64 (px in 4px increments)
Typography scale: xs (12px), sm (14px), base (16px), lg (18px), xl (20px), 2xl (24px), 3xl (30px)
Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px), 2xl (1536px)
Border radius: sm (4px), md (8px), lg (16px), full (9999px)
Anti-Patterns to Avoid
❌ Desktop-first responsive design (always start mobile) ❌ Hardcoded colors (use design tokens/theme) ❌ Div soup (use semantic HTML) ❌ Missing accessibility (always include ARIA, focus states) ❌ Inconsistent spacing (use design system scale) ❌ Non-interactive elements with onClick (use button/a) ❌ Tiny touch targets on mobile (<44px)
Resources Summary
- Tailwind patterns:
references/tailwind-patterns.md - shadcn/ui components:
references/shadcn-components.md - Material UI patterns:
references/material-ui-patterns.md - Chakra UI patterns:
references/chakra-ui-patterns.md - Design system comparison:
references/design-system-comparison.md - Responsive patterns:
references/responsive-design-patterns.md - Task card template:
assets/todo-card-template.tsx - Task form template:
assets/task-form-template.tsx