shadcn Design Patterns
Framework-agnostic design patterns for building beautiful, accessible UIs with shadcn's design philosophy.
When to Use This Skill
- Planning page or screen layouts
- Choosing the right component for a task
- Designing forms, dialogs, or complex interactions
- Making design decisions (colors, spacing, hierarchy)
- Building consistent, accessible UIs
Pair with implementation skills (ui-shadcn-flutter, shadcn-ui, etc.) for concrete code.
Core Philosophy
- Minimalism - Clean, uncluttered interfaces
- Composability - Build complex UIs from simple primitives
- Accessibility-first - ARIA patterns, keyboard navigation
- Semantic color - Named colors convey meaning (primary, destructive, muted)
- Consistent spacing - Systematic gaps using scaling multipliers
- Beautiful defaults - Components look good out-of-the-box
Quick Color Guide
Semantic colors:
primary - Main actions, submit buttons, CTAs
secondary - Supporting actions
destructive - Delete, remove, dangerous actions
muted - Subdued content, secondary text, disabled states
accent - Highlights, selection, badges
Pairing rule: Always pair colors (primary + primaryForeground, card + cardForeground, etc.)
Quick Spacing Guide
Use systematic spacing:
8px - Tight (within elements)
16px - Standard (between sections)
24px - Loose (major sections)
32px - Wide (page sections)
Component Selection Guide
Dialog vs Sheet vs Popover
Use Dialog when:
- Requires user's full attention (confirmation, critical info)
- User must respond before continuing
- Content is self-contained
- Small to medium content (fits viewport)
Use Sheet when:
- Large amount of content (scrollable)
- Contextual to current page
- Can be dismissed easily
- Forms, filters, settings panels
Use Popover when:
- Small, contextual information
- Doesn't block interaction with page
- Hover cards, tooltips with rich content
- Quick actions (color picker, date picker)
Card vs OutlinedContainer
Card vs OutlinedContainer:
- Card: Elevated content, prominent grouping
- OutlinedContainer: Subtle borders, nested containers
Alert vs Toast:
- Alert: Inline, persistent messages
- Toast: Temporary notifications, auto-dismiss
Sheet vs Dialog vs Popover:
- Sheet: Large scrollable content, side/bottom panels
- Dialog: Modal, requires attention, blocking
- Popover: Small contextual content, non-blocking
Reference Documentation
For detailed patterns:
- design-guide.md - Color system, spacing, accessibility, composition
- layout-patterns.md - Forms, pages, modals, lists, tables
Rules
✅ DO:
- Use semantic colors (primary, destructive, muted)
- Pair colors correctly (primary + primaryForeground)
- Compose complex UIs from simple primitives
- Follow accessibility patterns (keyboard, focus, labels)
- Use consistent spacing throughout
- Provide empty states and loading states
- Make dangerous actions explicit (confirmation dialogs)
❌ DON'T:
- Use arbitrary colors outside the system
- Mix color pairings (e.g., primary bg + muted text)
- Create giant custom components (compose instead)
- Skip keyboard navigation support
- Use inconsistent spacing values
- Hide important actions behind multiple clicks
- Make destructive actions easy to trigger accidentally
Pair with Implementation Skills
This skill provides design patterns. For concrete implementation:
- Flutter: Use
ui-shadcn-flutter skill for Flutter widget APIs
- React: Use standard shadcn/ui component documentation
- Other frameworks: Adapt patterns to available shadcn implementation
primitives
- Follow accessibility patterns
- Use consistent spacing
- Provide empty states
- Confirm dangerous actions
❌ DON'T:
- Use arbitrary colors
- Mix color pairings
- Create giant monolithic components
- Skip keyboard navigation
- Use inconsistent spacing
- Make destructive actions easy to trigger
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: shadcn-design-patterns3description: Design beautiful UIs following shadcn/ui principles. Use when planning layouts, choosing components, composing forms/dialogs/pages, or making design decisions. Framework-agnostic patterns for shadcn implementations (React, Flutter, Vue, etc.). Use when this capability is needed.4---56# shadcn Design Patterns78Framework-agnostic design patterns for building beautiful, accessible UIs with shadcn's design philosophy.910## When to Use This Skill1112- Planning page or screen layouts13- Choosing the right component for a task14- Designing forms, dialogs, or complex interactions15- Making design decisions (colors, spacing, hierarchy)16- Building consistent, accessible UIs1718**Pair with implementation skills** (ui-shadcn-flutter, shadcn-ui, etc.) for concrete code.1920---2122## Core Philosophy23241. **Minimalism** - Clean, uncluttered interfaces252. **Composability** - Build complex UIs from simple primitives263. **Accessibility-first** - ARIA patterns, keyboard navigation274. **Semantic color** - Named colors convey meaning (primary, destructive, muted)285. **Consistent spacing** - Systematic gaps using scaling multipliers296. **Beautiful defaults** - Components look good out-of-the-box3031---3233## Quick Color Guide3435**Semantic colors:**36- `primary` - Main actions, submit buttons, CTAs37- `secondary` - Supporting actions38- `destructive` - Delete, remove, dangerous actions39- `muted` - Subdued content, secondary text, disabled states40- `accent` - Highlights, selection, badges4142**Pairing rule:** Always pair colors (primary + primaryForeground, card + cardForeground, etc.)4344---4546## Quick Spacing Guide4748Use systematic spacing:49- `8px` - Tight (within elements)50- `16px` - Standard (between sections)51- `24px` - Loose (major sections)52- `32px` - Wide (page sections)5354## Component Selection Guide5556### Dialog vs Sheet vs Popover5758**Use Dialog when:**59- Requires user's full attention (confirmation, critical info)60- User must respond before continuing61- Content is self-contained62- Small to medium content (fits viewport)6364**Use Sheet when:**65- Large amount of content (scrollable)66- Contextual to current page67- Can be dismissed easily68- Forms, filters, settings panels6970**Use Popover when:**71- Small, contextual information72- Doesn't block interaction with page73- Hover cards, tooltips with rich content74- Quick actions (color picker, date picker)7576### Card vs OutlinedContainer7778**Card vs OutlinedContainer:**79- Card: Elevated content, prominent grouping80- OutlinedContainer: Subtle borders, nested containers8182**Alert vs Toast:**83- Alert: Inline, persistent messages84- Toast: Temporary notifications, auto-dismiss8586**Sheet vs Dialog vs Popover:**87- Sheet: Large scrollable content, side/bottom panels88- Dialog: Modal, requires attention, blocking89- Popover: Small contextual content, non-blocking9091---9293## Reference Documentation9495For detailed patterns:9697- **[design-guide.md](references/design-guide.md)** - Color system, spacing, accessibility, composition98- **[layout-patterns.md](references/layout-patterns.md)** - Forms, pages, modals, lists, tables99100## Rules101102✅ **DO:**103- Use semantic colors (primary, destructive, muted)104- Pair colors correctly (primary + primaryForeground)105- Compose complex UIs from simple primitives106- Follow accessibility patterns (keyboard, focus, labels)107- Use consistent spacing throughout108- Provide empty states and loading states109- Make dangerous actions explicit (confirmation dialogs)110111❌ **DON'T:**112- Use arbitrary colors outside the system113- Mix color pairings (e.g., primary bg + muted text)114- Create giant custom components (compose instead)115- Skip keyboard navigation support116- Use inconsistent spacing values117- Hide important actions behind multiple clicks118- Make destructive actions easy to trigger accidentally119120---121122## Pair with Implementation Skills123124This skill provides **design patterns**. For concrete implementation:125126- **Flutter**: Use `ui-shadcn-flutter` skill for Flutter widget APIs127- **React**: Use standard shadcn/ui component documentation128- **Other frameworks**: Adapt patterns to available shadcn implementation129primitives130- Follow accessibility patterns131- Use consistent spacing132- Provide empty states133- Confirm dangerous actions134135❌ **DON'T:**136- Use arbitrary colors137- Mix color pairings138- Create giant monolithic components139- Skip keyboard navigation140- Use inconsistent spacing141- Make destructive actions easy to trigger142143---144> Converted and distributed by [TomeVault](https://tomevault.io/claim/dj2695) — claim your Tome and manage your conversions.145<!-- tomevault:4.0:skill_md:2026-04-13 -->