name: ss-component description: Generate a new UI component following the StyleSeed design conventions argument-hint: [component-name] [description] allowed-tools: Read, Write, Edit, Grep, Glob, Bash
UI Component Generator
Generate a new component: $0 Description: $ARGUMENTS
Instructions
-
First, read the design system seed for context:
- Read
CLAUDE.mdfor component conventions - Read
css/theme.cssfor available design tokens - Read
components/ui/button.tsxas a reference pattern
- Read
-
Follow these conventions strictly:
- Use
functiondeclaration (notconst) - Add
data-slot="component-name"attribute - Use
cn()from@/components/ui/utilsfor all className merging - Use
React.ComponentProps<>for prop typing - Always support
classNameprop for overrides - Use CVA (
class-variance-authority) if the component has variants - Use semantic color tokens (
bg-card,text-foreground) — never inline hex
- Use
-
Design token usage:
- Colors:
text-foreground,bg-card,text-brand,text-muted-foreground,border-border - Shadows:
shadow-[var(--shadow-card)],shadow-[var(--shadow-elevated)] - Radius:
rounded-md,rounded-lg,rounded-2xl - Spacing: multiples of 6px (
p-1.5,p-3,p-6) - Motion:
duration-[var(--duration-fast)],ease-[var(--ease-default)]
- Colors:
-
Typography rules:
- Display (36-48px):
leading-none tracking-[-0.02em] - Heading (18-24px):
leading-snug tracking-[-0.01em] - Body (14-17px):
leading-normal(default tracking) - Caption uppercase (10-13px):
tracking-[0.05em] - Use
size-*shorthand instead ofw-* h-* - Use
ms-*/me-*instead ofml-*/mr-*(logical properties)
- Display (36-48px):
-
Accessibility requirements:
- Minimum touch target: 44x44px (
min-h-11 min-w-11) - Support
aria-*attributes passthrough - Use
focus-visible:ring-2 focus-visible:ring-ringfor keyboard focus - Respect
prefers-reduced-motionfor animations
- Minimum touch target: 44x44px (
-
Export the component as a named export (not default)
-
Place the file in the appropriate directory:
- Primitive/reusable →
src/components/ui/ - Composed pattern →
src/components/patterns/
- Primitive/reusable →