- Use a consistent spacing scale (e.g., multiples of 4:
4px, 8px, 16pxβ¦) - Stick to a fixed set of colors (with clear
primary,secondary,accent,neutral,success,error,warning, etc.) - Define a typography scale (e.g.,
text-xs,sm,base,lg,xl,2xl, etc.) - Use fixed border-radius sizes (e.g.,
rounded,rounded-md,rounded-xl, etc.) - Create and reuse components (e.g., Button, Input, Card, Modal) across the design
- Define z-index layers (e.g., base content, modals, toasts)
- Use simple box-based layouts (easy to translate to
flex,grid,space-x,space-y) - Clearly separate sections using padding/margin (e.g.,
px-6 py-8) - Align items using
flex,items-center,justify-betweenpatterns - Use grid-based columns when needed (Tailwindβs
grid-cols-X)
- Stick to Tailwind spacing scale (
0, 1, 2, 4, 6, 8, 10, 12, 16...which maps topx-1, px-2, etc.) - Avoid arbitrary spacing (e.g., no 17px margin)
- Use relative units when possible (e.g.,
%,em,rem) for responsiveness
- Design mobile-first or adaptive breakpoints (
sm,md,lg,xl,2xl) - Ensure no fixed-width containers; use flexible layouts (
w-full,max-w-7xl, etc.) - Show how components behave at different breakpoints (optional: separate artboards or annotations)
- Use Tailwind-aligned font sizes (
text-sm,text-base,text-xl, etc.) - Use consistent font weights (
font-light,font-normal,font-semibold,font-bold) - Avoid excessive letter spacing or custom font styles unless critical
-
Design UI components with all states:
- Default
- Hover
- Focus
- Active
- Disabled
- Error
-
Buttons: show variants (primary, secondary, outline, ghost, etc.)
-
Inputs: show filled, focused, error, success
-
Modals/Toasts: show open and dismissed states
-
Include loading spinners, skeletons, empty states if needed
- Design for both light and dark themes, or annotate if dark mode is not required
- Avoid hardcoded colors; ensure contrast works in both modes
- Label colors semantically (e.g.,
text-primary, not#1A202C)
- Provide clear layer naming in Figma (or design tool)
- Use Tailwind utility labels in components if possible
- Avoid raster assets unless necessary (use SVGs or icon libraries like Lucide)
- Use 8pt grid system to match Tailwind spacing logic
- Group reusable components into a component library
- Annotate tricky interactions (e.g., drag/drop, transitions)
- Use Tailwind-friendly transitions (
transition-all,duration-300,ease-in-out) - Keep animations minimal and performant
- Optional: document motion specs for key components
-
Use token-based naming for:
- Colors (
color-primary,color-muted) - Spacing (
spacing-sm,spacing-lg) - Typography (
font-body,font-heading)
- Colors (
-
Match token values with Tailwind config for easy integration
- β Tailwind CSS for Figma
- β Design Lint (for checking inconsistencies)
- β Measure (for spacing visualization)
- β Iconify (for Tailwind-compatible icons like Lucide or Heroicons)