back to gallery
design language·whimsi-collage-storybook

WhimsiCollage Storybook

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md source of truth for most agents and apps.

the spec

specification

philosophy
summary
A contemporary storybook interface language that borrows from picture-book illustration, handmade collage, and Nordic whimsical scene building. Screens feel like curated spreads: warm, tactile, optimistic, and emotionally literate without becoming juvenile. Functionality is presented as narrative props inside an illustrated world rather than abstract enterprise widgets.
values
child-friendly warmth without babyish simplificationnarrative worldbuilding through interface structurevisible craft, texture, and hand-touched imperfectiongentle emotional guidance through color and shapefriendly discoverability through characterful affordances
anti-values
×sterile product minimalism×hard mechanical geometry as the dominant motif×hyper-glossy futurism×crowded dashboard compression×mascot overload that replaces information design
tokens
borders4 items
accent width
4px
character
soft hand-drawn outlines with slightly imperfect rhythm and occasional stitched emphasis
default width
2px
style
dashed
colors12 items
accent
#E95F7A
background
#F8F1E4
border
#5F564A
error
#C95A43
info
#6D8FD6
muted
#7C7A70
primary
#3B6B58
secondary
#F3A66E
success
#4E8D67
surface
#FFF9F0
text
#30403B
warning
#D99A2B
motion3 items
duration
220ms
easing
cubic-bezier(0.22, 1, 0.36, 1)
philosophy
snappy lifts and tiny collage rotations, never opacity-only fades
radii5 items
full
9999px
lg
24px
md
24px
none
0px
sm
24px
shadows3 items
lg
0 22px 0 rgba(95,86,74,0.12)
md
0 12px 0 rgba(95,86,74,0.14)
sm
0 4px 0 rgba(95,86,74,0.16)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces3 items
bg pattern
noise
card style
warm paper cards with grain, offset underlays, and patch-like overlays
treatment
paper
typography10 items
base size
16px
body font
Averia Serif Libre
display letter spacing
-0.035em
display line height
1.12
google fonts url
https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@400;700&family=IBM+Plex+Mono:wght@400;500&family=Sour+Gummy:wght@400;500;700&display=swap
heading font
Sour Gummy
letter spacing
-0.02em
line height
1.55
mono font
IBM Plex Mono
scale ratio
1.25
rules
composition
Compose every screen as a story spread: a strong hero vignette, one or two secondary narrative pockets, and a clear path that feels like reading left-to-right through illustrated terrain. Dense data should be broken into themed patches rather than uniform cards.
density
Moderate density with generous breathing room. Interfaces can feel busy in detail but never cramped in layout. Texture and embellishment should live inside a disciplined macro-grid.
hierarchy
Hierarchy comes from scale, color patches, and elevation layers rather than pure typography. Headings sit on cloud or sticker backings. Important actions become large friendly shapes. Supporting facts tuck into caption-like ribbons.
signature patterns
every major card uses a pseudo-element offset underlay in a second color, creating a pasted collage shadow layersection titles sit inside irregular blob backplates rather than plain text rowsinteractive controls use hand-drawn dashed outlines and rounded pebble silhouettes with slight rotation variancescene dividers and ribbons use scalloped or wavy edges to evoke illustrated landscape layerssmall informational badges appear as floating sticker circles or seed-shaped pills overlapping container corners
layout
breakpoints

Large at 1200px+, medium at 900px-1199px, small below 900px with an additional compact refinement below 640px.

grid
Desktop uses a spread-like 12-column composition with two narrative halves and wide interior gutter; tablet shifts to stacked story bands; mobile becomes a vertical tale with pocket modules and preserved overlap accents.
whitespace
Use roomy outer margins, deep section padding, and intentional overlap between layers. Leave space around decorative patches so texture supports readability instead of crowding it.
guidance
do
  • pair warm neutrals with berry, moss, apricot, and sky accents in a clustered, desaturated palette
  • treat forms, menus, and metrics as story props embedded in a specific narrative scene
  • use asymmetry and layered offsets while maintaining a stable left-to-right reading flow
  • preserve tactile edge details, grain, and irregular dashed borders across components
  • let illustration-friendly iconography and labels soften task-heavy interactions
  • make one panel dominant and let smaller pockets tuck around it like a picture-book spread
  • style every control as a pebble, sticker, ribbon, or paper patch with explicit focus states
avoid
  • flatten everything into identical white cards or a generic SaaS component inventory
  • use neon saturation or toy-store primaries as the default palette
  • default to sharp corners, strict hairlines, glassmorphism, or mechanical grey borders
  • turn the page into a literal children app full of oversized mascots
  • sacrifice legibility for texture or decorative overlap
  • mix arbitrary corner radii; use 24px for containers and 9999px only for pills
  • hide the collage identity in illustrations only; the CSS structure must carry it
katagami spec
# WhimsiCollage Storybook

## Philosophy

A contemporary storybook interface language that borrows from picture-book illustration, handmade collage, and Nordic whimsical scene building. Screens feel like curated spreads: warm, tactile, optimistic, and emotionally literate without becoming juvenile. Functionality is presented as narrative props inside an illustrated world rather than abstract enterprise widgets.

### Values

- child-friendly warmth without babyish simplification
- narrative worldbuilding through interface structure
- visible craft, texture, and hand-touched imperfection
- gentle emotional guidance through color and shape
- friendly discoverability through characterful affordances

### Anti-Values

- sterile product minimalism
- hard mechanical geometry as the dominant motif
- hyper-glossy futurism
- crowded dashboard compression
- mascot overload that replaces information design

### Visual Character

- layered torn-paper surfaces with offset color underlays that make each card feel collaged by hand
- large rounded blob and pebble silhouettes instead of strict rectangles for panels, buttons, charts, and image frames
- soft pencil-like dashed or hand-drawn borders with uneven edge treatment around interactive regions
- spread-inspired compositions with wide gutters, scene bands, and illustrated environmental landmarks that guide the eye like a picture-book page turn
- sticker and badge accents that look like pasted labels or stamped seals floating above the main surface

## Tokens

### Borders

- **Accent Width**: 4px
- **Character**: soft hand-drawn outlines with slightly imperfect rhythm and occasional stitched emphasis
- **Default Width**: 2px
- **Style**: dashed

### Colors

| Name | Value |
|------|-------|
| accent | `#E95F7A` |
| background | `#F8F1E4` |
| border | `#5F564A` |
| error | `#C95A43` |
| info | `#6D8FD6` |
| muted | `#7C7A70` |
| primary | `#3B6B58` |
| secondary | `#F3A66E` |
| success | `#4E8D67` |
| surface | `#FFF9F0` |
| text | `#30403B` |
| warning | `#D99A2B` |

### Motion

- **Duration**: 220ms
- **Easing**: cubic-bezier(0.22, 1, 0.36, 1)
- **Philosophy**: snappy lifts and tiny collage rotations, never opacity-only fades

### Radii

- **Full**: 9999px
- **Lg**: 24px
- **Md**: 24px
- **None**: 0px
- **Sm**: 24px

### Shadows

- **Lg**: 0 22px 0 rgba(95,86,74,0.12)
- **Md**: 0 12px 0 rgba(95,86,74,0.14)
- **Sm**: 0 4px 0 rgba(95,86,74,0.16)

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96]

### Surfaces

- **Bg Pattern**: noise
- **Card Style**: warm paper cards with grain, offset underlays, and patch-like overlays
- **Treatment**: paper

### Typography

- **Base Size**: 16px
- **Body Font**: Averia Serif Libre
- **Display Letter Spacing**: -0.035em
- **Display Line Height**: 1.12
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@400;700&family=IBM+Plex+Mono:wght@400;500&family=Sour+Gummy:wght@400;500;700&display=swap
- **Heading Font**: Sour Gummy
- **Letter Spacing**: -0.02em
- **Line Height**: 1.55
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.25

## Rules

### Composition

Compose every screen as a story spread: a strong hero vignette, one or two secondary narrative pockets, and a clear path that feels like reading left-to-right through illustrated terrain. Dense data should be broken into themed patches rather than uniform cards.

### Density

Moderate density with generous breathing room. Interfaces can feel busy in detail but never cramped in layout. Texture and embellishment should live inside a disciplined macro-grid.

### Hierarchy

Hierarchy comes from scale, color patches, and elevation layers rather than pure typography. Headings sit on cloud or sticker backings. Important actions become large friendly shapes. Supporting facts tuck into caption-like ribbons.

### Signature Patterns

- every major card uses a pseudo-element offset underlay in a second color, creating a pasted collage shadow layer
- section titles sit inside irregular blob backplates rather than plain text rows
- interactive controls use hand-drawn dashed outlines and rounded pebble silhouettes with slight rotation variance
- scene dividers and ribbons use scalloped or wavy edges to evoke illustrated landscape layers
- small informational badges appear as floating sticker circles or seed-shaped pills overlapping container corners

## Layout

### Breakpoints

Large at 1200px+, medium at 900px-1199px, small below 900px with an additional compact refinement below 640px.

### Grid

Desktop uses a spread-like 12-column composition with two narrative halves and wide interior gutter; tablet shifts to stacked story bands; mobile becomes a vertical tale with pocket modules and preserved overlap accents.

### Whitespace

Use roomy outer margins, deep section padding, and intentional overlap between layers. Leave space around decorative patches so texture supports readability instead of crowding it.

## Guidance

### Do

- pair warm neutrals with berry, moss, apricot, and sky accents in a clustered, desaturated palette
- treat forms, menus, and metrics as story props embedded in a specific narrative scene
- use asymmetry and layered offsets while maintaining a stable left-to-right reading flow
- preserve tactile edge details, grain, and irregular dashed borders across components
- let illustration-friendly iconography and labels soften task-heavy interactions
- make one panel dominant and let smaller pockets tuck around it like a picture-book spread
- style every control as a pebble, sticker, ribbon, or paper patch with explicit focus states

### Don't

- flatten everything into identical white cards or a generic SaaS component inventory
- use neon saturation or toy-store primaries as the default palette
- default to sharp corners, strict hairlines, glassmorphism, or mechanical grey borders
- turn the page into a literal children app full of oversized mascots
- sacrifice legibility for texture or decorative overlap
- mix arbitrary corner radii; use 24px for containers and 9999px only for pills
- hide the collage identity in illustrations only; the CSS structure must carry it

### Accessibility

Maintain AA contrast on all copy, use large friendly hit targets, visible focus rings in moss or berry, and keep texture behind text low contrast.

### Usage Context

Best for family learning tools, museum education planning, creative classroom software, gentle wellness journeys, and community storytelling products where complex tasks benefit from warmth and narrative context.
DESIGN.md
---
version: "alpha"
name: "WhimsiCollage Storybook"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#E95F7A"
  background: "#F8F1E4"
  border: "#5F564A"
  error: "#C95A43"
  info: "#6D8FD6"
  muted: "#7C7A70"
  primary: "#3B6B58"
  secondary: "#F3A66E"
  success: "#4E8D67"
  surface: "#FFF9F0"
  text: "#30403B"
  warning: "#D99A2B"
typography:
  headline-lg:
    fontFamily: "Sour Gummy"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Sour Gummy"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Averia Serif Libre"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.55
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "24px"
  md: "24px"
  none: "0px"
  sm: "24px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# WhimsiCollage Storybook

## Overview

A contemporary storybook interface language that borrows from picture-book illustration, handmade collage, and Nordic whimsical scene building. Screens feel like curated spreads: warm, tactile, optimistic, and emotionally literate without becoming juvenile. Functionality is presented as narrative props inside an illustrated world rather than abstract enterprise widgets.

### Values

- child-friendly warmth without babyish simplification
- narrative worldbuilding through interface structure
- visible craft, texture, and hand-touched imperfection
- gentle emotional guidance through color and shape
- friendly discoverability through characterful affordances

### Anti-Values

- sterile product minimalism
- hard mechanical geometry as the dominant motif
- hyper-glossy futurism
- crowded dashboard compression
- mascot overload that replaces information design

### Visual Character

- layered torn-paper surfaces with offset color underlays that make each card feel collaged by hand
- large rounded blob and pebble silhouettes instead of strict rectangles for panels, buttons, charts, and image frames
- soft pencil-like dashed or hand-drawn borders with uneven edge treatment around interactive regions
- spread-inspired compositions with wide gutters, scene bands, and illustrated environmental landmarks that guide the eye like a picture-book page turn
- sticker and badge accents that look like pasted labels or stamped seals floating above the main surface

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| accent | `#E95F7A` |
| background | `#F8F1E4` |
| border | `#5F564A` |
| error | `#C95A43` |
| info | `#6D8FD6` |
| muted | `#7C7A70` |
| primary | `#3B6B58` |
| secondary | `#F3A66E` |
| success | `#4E8D67` |
| surface | `#FFF9F0` |
| text | `#30403B` |
| warning | `#D99A2B` |

## Typography

- **Headline-Lg**: Sour Gummy, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Sour Gummy, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Averia Serif Libre, 16px, weight 400, line-height 1.55.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`

### Breakpoints

Large at 1200px+, medium at 900px-1199px, small below 900px with an additional compact refinement below 640px.

### Grid

Desktop uses a spread-like 12-column composition with two narrative halves and wide interior gutter; tablet shifts to stacked story bands; mobile becomes a vertical tale with pocket modules and preserved overlap accents.

### Whitespace

Use roomy outer margins, deep section padding, and intentional overlap between layers. Leave space around decorative patches so texture supports readability instead of crowding it.

## Elevation & Depth

### Shadows

- **Lg**: 0 22px 0 rgba(95,86,74,0.12)
- **Md**: 0 12px 0 rgba(95,86,74,0.14)
- **Sm**: 0 4px 0 rgba(95,86,74,0.16)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `24px`
- **Md**: `24px`
- **None**: `0px`
- **Sm**: `24px`

### Surfaces

- **Bg Pattern**: noise
- **Card Style**: warm paper cards with grain, offset underlays, and patch-like overlays
- **Treatment**: paper

### Borders

- **Accent Width**: 4px
- **Character**: soft hand-drawn outlines with slightly imperfect rhythm and occasional stitched emphasis
- **Default Width**: 2px
- **Style**: dashed

## Components

### Composition

Compose every screen as a story spread: a strong hero vignette, one or two secondary narrative pockets, and a clear path that feels like reading left-to-right through illustrated terrain. Dense data should be broken into themed patches rather than uniform cards.

### Density

Moderate density with generous breathing room. Interfaces can feel busy in detail but never cramped in layout. Texture and embellishment should live inside a disciplined macro-grid.

### Hierarchy

Hierarchy comes from scale, color patches, and elevation layers rather than pure typography. Headings sit on cloud or sticker backings. Important actions become large friendly shapes. Supporting facts tuck into caption-like ribbons.

### Signature Patterns

- every major card uses a pseudo-element offset underlay in a second color, creating a pasted collage shadow layer
- section titles sit inside irregular blob backplates rather than plain text rows
- interactive controls use hand-drawn dashed outlines and rounded pebble silhouettes with slight rotation variance
- scene dividers and ribbons use scalloped or wavy edges to evoke illustrated landscape layers
- small informational badges appear as floating sticker circles or seed-shaped pills overlapping container corners

## shadcn/ui Usage

When the target app uses shadcn/ui, copy DESIGN.md with shadcn instead of the plain DESIGN.md. It contains the same Katagami design-language source plus the shadcn/ui primitives, imports, theme variables, component recipes, and preview-shot guidance.

DESIGN.md with shadcn: `/language/en-019d9bba-3cb4-7072-ab23-7914ed75c93e/DESIGN.with-shadcn.md`.

The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.

Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do pair warm neutrals with berry, moss, apricot, and sky accents in a clustered, desaturated palette
- Do treat forms, menus, and metrics as story props embedded in a specific narrative scene
- Do use asymmetry and layered offsets while maintaining a stable left-to-right reading flow
- Do preserve tactile edge details, grain, and irregular dashed borders across components
- Do let illustration-friendly iconography and labels soften task-heavy interactions
- Do make one panel dominant and let smaller pockets tuck around it like a picture-book spread
- Do style every control as a pebble, sticker, ribbon, or paper patch with explicit focus states
- Don't flatten everything into identical white cards or a generic SaaS component inventory
- Don't use neon saturation or toy-store primaries as the default palette
- Don't default to sharp corners, strict hairlines, glassmorphism, or mechanical grey borders
- Don't turn the page into a literal children app full of oversized mascots
- Don't sacrifice legibility for texture or decorative overlap
- Don't mix arbitrary corner radii; use 24px for containers and 9999px only for pills
- Don't hide the collage identity in illustrations only; the CSS structure must carry it

### Accessibility

Maintain AA contrast on all copy, use large friendly hit targets, visible focus rings in moss or berry, and keep texture behind text low contrast.

### Usage Context

Best for family learning tools, museum education planning, creative classroom software, gentle wellness journeys, and community storytelling products where complex tasks benefit from warmth and narrative context.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "whimsi-collage-storybook",
  "type": "registry:theme",
  "title": "WhimsiCollage Storybook shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F8F1E4",
      "foreground": "#30403B",
      "card": "#FFF9F0",
      "card-foreground": "#30403B",
      "popover": "#FFF9F0",
      "popover-foreground": "#30403B",
      "primary": "#3B6B58",
      "primary-foreground": "#ffffff",
      "secondary": "#F3A66E",
      "secondary-foreground": "#ffffff",
      "muted": "#7C7A70",
      "muted-foreground": "#30403B",
      "accent": "#E95F7A",
      "accent-foreground": "#ffffff",
      "destructive": "#C95A43",
      "border": "#5F564A",
      "input": "#5F564A",
      "ring": "#E95F7A",
      "chart-1": "#3B6B58",
      "chart-2": "#F3A66E",
      "chart-3": "#E95F7A",
      "chart-4": "#4E8D67",
      "chart-5": "#D99A2B",
      "sidebar": "#FFF9F0",
      "sidebar-foreground": "#30403B",
      "sidebar-primary": "#3B6B58",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#6D8FD6",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#5F564A",
      "sidebar-ring": "#E95F7A",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#3B6B58",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#E95F7A",
      "accent-foreground": "#ffffff",
      "destructive": "#C95A43",
      "border": "#303642",
      "input": "#303642",
      "ring": "#E95F7A",
      "chart-1": "#3B6B58",
      "chart-2": "#F3A66E",
      "chart-3": "#E95F7A",
      "chart-4": "#4E8D67",
      "chart-5": "#D99A2B",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#3B6B58",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#E95F7A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#E95F7A",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019d9bba-3cb4-7072-ab23-7914ed75c93e",
    "slug": "whimsi-collage-storybook",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "display_letter_spacing",
        "display_line_height",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · whimsi-collage-storybook
DESIGN.md

at a glance

Palette

Typography

headline-lgSour Gummy · 31px · 700

The quick brown fox jumps

headline-mdSour Gummy · 25px · 600

The quick brown fox jumps

body-mdAveria Serif Libre · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px
  • step-896px

Shape

full9999px
lg24px
md24px
none0px
sm24px
shadcn/ui

implementation kit

needs agent-authored kitcompatibility fallback
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutedwarningerror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

DESIGN.md with shadcn

Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #F8F1E4;
  --foreground: #30403B;
  --card: #FFF9F0;
  --card-foreground: #30403B;
  --popover: #FFF9F0;
  --popover-foreground: #30403B;
  --primary: #3B6B58;
  --primary-foreground: #ffffff;
  --secondary: #F3A66E;
  --secondary-foreground: #ffffff;
  --muted: #7C7A70;
  --muted-foreground: #30403B;
  --accent: #E95F7A;
  --accent-foreground: #ffffff;
  --destructive: #C95A43;
  --border: #5F564A;
  --input: #5F564A;
  --ring: #E95F7A;
  --chart-1: #3B6B58;
  --chart-2: #F3A66E;
  --chart-3: #E95F7A;
  --chart-4: #4E8D67;
  --chart-5: #D99A2B;
  --sidebar: #FFF9F0;
  --sidebar-foreground: #30403B;
  --sidebar-primary: #3B6B58;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #6D8FD6;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #5F564A;
  --sidebar-ring: #E95F7A;
  --radius: 24px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #3B6B58;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #E95F7A;
  --accent-foreground: #ffffff;
  --destructive: #C95A43;
  --border: #303642;
  --input: #303642;
  --ring: #E95F7A;
  --chart-1: #3B6B58;
  --chart-2: #F3A66E;
  --chart-3: #E95F7A;
  --chart-4: #4E8D67;
  --chart-5: #D99A2B;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #3B6B58;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #E95F7A;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #E95F7A;
  --radius: 24px;
}
tsx starter
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";

export function WhimsicollageStorybookShadcnKit() {
  return (
    <section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
      <div className="flex items-start justify-between gap-4">
        <div>
          <Badge variant="outline">shadcn/ui</Badge>
          <h2 className="mt-3 text-2xl font-semibold tracking-tight">WhimsiCollage Storybook</h2>
          <p className="mt-1 max-w-xl text-sm text-muted-foreground">
            Use the Katagami registry theme, then compose these shadcn primitives
            with the language-specific component recipes.
          </p>
        </div>
        <Button>Apply theme</Button>
      </div>

      <Tabs defaultValue="components">
        <TabsList>
          <TabsTrigger value="components">Components</TabsTrigger>
          <TabsTrigger value="states">States</TabsTrigger>
          <TabsTrigger value="export">Export</TabsTrigger>
        </TabsList>
      </Tabs>

      <Card>
        <CardHeader>
          <CardTitle>Component recipe</CardTitle>
          <CardDescription>
            Replace this starter content with the agent-authored product scene
            from components.md and preview-shots.json.
          </CardDescription>
        </CardHeader>
        <CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
          <Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
          <Button variant="secondary">Preview state</Button>
        </CardContent>
        <CardFooter className="justify-between">
          <Badge>Ready</Badge>
          <Button variant="outline">Copy recipe</Button>
        </CardFooter>
      </Card>
    </section>
  );
}
theme JSONstored + verified
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "cssVars": {
    "dark": {
      "accent": "#E95F7A",
      "accent-foreground": "#ffffff",
      "background": "#0f1115",
      "border": "#303642",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "chart-1": "#3B6B58",
      "chart-2": "#F3A66E",
      "chart-3": "#E95F7A",
      "chart-4": "#4E8D67",
      "chart-5": "#D99A2B",
      "destructive": "#C95A43",
      "foreground": "#f8fafc",
      "input": "#303642",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#3B6B58",
      "primary-foreground": "#ffffff",
      "radius": "24px",
      "ring": "#E95F7A",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "sidebar": "#181b22",
      "sidebar-accent": "#E95F7A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#3B6B58",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-ring": "#E95F7A"
    },
    "light": {
      "accent": "#E95F7A",
      "accent-foreground": "#ffffff",
      "background": "#F8F1E4",
      "border": "#5F564A",
      "card": "#FFF9F0",
      "card-foreground": "#30403B",
      "chart-1": "#3B6B58",
      "chart-2": "#F3A66E",
      "chart-3": "#E95F7A",
      "chart-4": "#4E8D67",
      "chart-5": "#D99A2B",
      "destructive": "#C95A43",
      "foreground": "#30403B",
      "input": "#5F564A",
      "muted": "#7C7A70",
      "muted-foreground": "#30403B",
      "popover": "#FFF9F0",
      "popover-foreground": "#30403B",
      "primary": "#3B6B58",
      "primary-foreground": "#ffffff",
      "radius": "24px",
      "ring": "#E95F7A",
      "secondary": "#F3A66E",
      "secondary-foreground": "#ffffff",
      "sidebar": "#FFF9F0",
      "sidebar-accent": "#6D8FD6",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#5F564A",
      "sidebar-foreground": "#30403B",
      "sidebar-primary": "#3B6B58",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-ring": "#E95F7A"
    },
    "theme": {}
  },
  "meta": {
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "languageId": "en-019d9bba-3cb4-7072-ab23-7914ed75c93e",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "display_letter_spacing",
        "display_line_height",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    },
    "slug": "whimsi-collage-storybook",
    "source": "katagami"
  },
  "name": "whimsi-collage-storybook",
  "title": "WhimsiCollage Storybook shadcn Theme",
  "type": "registry:theme"
}
component recipescompatibility fallback
# WhimsiCollage Storybook shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019d9bba-3cb4-7072-ab23-7914ed75c93e`
Slug: `whimsi-collage-storybook`

## Intent

A contemporary storybook interface language that borrows from picture-book illustration, handmade collage, and Nordic whimsical scene building. Screens feel like curated spreads: warm, tactile, optimistic, and emotionally literate without becoming juvenile. Functionality is presented as narrative props inside an illustrated world rather than abstract enterprise widgets.

## Required primitives

- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

## Token cues

Colors:

{
  "accent": "#E95F7A",
  "background": "#F8F1E4",
  "border": "#5F564A",
  "error": "#C95A43",
  "info": "#6D8FD6",
  "muted": "#7C7A70",
  "primary": "#3B6B58",
  "secondary": "#F3A66E",
  "success": "#4E8D67",
  "surface": "#FFF9F0",
  "text": "#30403B",
  "warning": "#D99A2B"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Averia Serif Libre",
  "display_letter_spacing": "-0.035em",
  "display_line_height": 1.12,
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@400;700&family=IBM+Plex+Mono:wght@400;500&family=Sour+Gummy:wght@400;500;700&display=swap",
  "heading_font": "Sour Gummy",
  "letter_spacing": "-0.02em",
  "line_height": 1.55,
  "mono_font": "IBM Plex Mono",
  "scale_ratio": 1.25
}

## Visual character to preserve

- layered torn-paper surfaces with offset color underlays that make each card feel collaged by hand
- large rounded blob and pebble silhouettes instead of strict rectangles for panels, buttons, charts, and image frames
- soft pencil-like dashed or hand-drawn borders with uneven edge treatment around interactive regions
- spread-inspired compositions with wide gutters, scene bands, and illustrated environmental landmarks that guide the eye like a picture-book page turn
- sticker and badge accents that look like pasted labels or stamped seals floating above the main surface

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "blob",
  "border": "dashed",
  "underlay": true,
  "grain": true,
  "stickerBadges": true,
  "motion": "lift",
  "density": "airy",
  "accents": [
    "primary",
    "accent",
    "secondary",
    "muted"
  ]
}

## Signature component recipes

### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.

### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.

### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.

### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.

### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.

## Preview shots

- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.

## Implementation contract

- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/whimsi-collage-storybook/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: pair warm neutrals with berry, moss, apricot, and sky accents in a clustered, desaturated palette; treat forms, menus, and metrics as story props embedded in a specific narrative scene; use asymmetry and layered offsets while maintaining a stable left-to-right reading flow; preserve tactile edge details, grain, and irregular dashed borders across components; let illustration-friendly iconography and labels soften task-heavy interactions; make one panel dominant and let smaller pockets tuck around it like a picture-book spread; style every control as a pebble, sticker, ribbon, or paper patch with explicit focus states
- Do not: flatten everything into identical white cards or a generic SaaS component inventory; use neon saturation or toy-store primaries as the default palette; default to sharp corners, strict hairlines, glassmorphism, or mechanical grey borders; turn the page into a literal children app full of oversized mascots; sacrifice legibility for texture or decorative overlap; mix arbitrary corner radii; use 24px for containers and 9999px only for pills; hide the collage identity in illustrations only; the CSS structure must carry it

## Copy-paste component example

This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.

```tsx
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";

export function WhimsicollageStorybookShadcnKit() {
  return (
    <section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
      <div className="flex items-start justify-between gap-4">
        <div>
          <Badge variant="outline">shadcn/ui</Badge>
          <h2 className="mt-3 text-2xl font-semibold tracking-tight">WhimsiCollage Storybook</h2>
          <p className="mt-1 max-w-xl text-sm text-muted-foreground">
            Use the Katagami registry theme, then compose these shadcn primitives
            with the language-specific component recipes.
          </p>
        </div>
        <Button>Apply theme</Button>
      </div>

      <Tabs defaultValue="components">
        <TabsList>
          <TabsTrigger value="components">Components</TabsTrigger>
          <TabsTrigger value="states">States</TabsTrigger>
          <TabsTrigger value="export">Export</TabsTrigger>
        </TabsList>
      </Tabs>

      <Card>
        <CardHeader>
          <CardTitle>Component recipe</CardTitle>
          <CardDescription>
            Replace this starter content with the agent-authored product scene
            from components.md and preview-shots.json.
          </CardDescription>
        </CardHeader>
        <CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
          <Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
          <Button variant="secondary">Preview state</Button>
        </CardContent>
        <CardFooter className="justify-between">
          <Badge>Ready</Badge>
          <Button variant="outline">Copy recipe</Button>
        </CardFooter>
      </Card>
    </section>
  );
}
```

## Layout notes

{
  "breakpoints": "Large at 1200px+, medium at 900px-1199px, small below 900px with an additional compact refinement below 640px.",
  "grid": "Desktop uses a spread-like 12-column composition with two narrative halves and wide interior gutter; tablet shifts to stacked story bands; mobile becomes a vertical tale with pocket modules and preserved overlap accents.",
  "whitespace": "Use roomy outer margins, deep section padding, and intentional overlap between layers. Leave space around decorative patches so texture supports readability instead of crowding it."
}
preview shotscompatibility fallback
{
  "artifact": "katagami:shadcn-preview-shots",
  "version": "preview-shots-v1",
  "generator": "katagami-ui-compatibility-projection",
  "generatedBy": "katagami-ui-projection",
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "renderable": true,
  "language": {
    "id": "en-019d9bba-3cb4-7072-ab23-7914ed75c93e",
    "name": "WhimsiCollage Storybook",
    "slug": "whimsi-collage-storybook"
  },
  "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
  "primitives": [
    "button",
    "card",
    "input",
    "textarea",
    "select",
    "dialog",
    "sheet",
    "tabs",
    "badge",
    "separator",
    "checkbox",
    "switch",
    "slider",
    "tooltip",
    "dropdown-menu",
    "table"
  ],
  "identityNotes": [
    "layered torn-paper surfaces with offset color underlays that make each card feel collaged by hand",
    "large rounded blob and pebble silhouettes instead of strict rectangles for panels, buttons, charts, and image frames",
    "soft pencil-like dashed or hand-drawn borders with uneven edge treatment around interactive regions",
    "spread-inspired compositions with wide gutters, scene bands, and illustrated environmental landmarks that guide the eye like a picture-book page turn",
    "sticker and badge accents that look like pasted labels or stamped seals floating above the main surface"
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "blob",
    "border": "dashed",
    "underlay": true,
    "grain": true,
    "stickerBadges": true,
    "motion": "still",
    "density": "airy",
    "accents": [
      "primary",
      "accent",
      "secondary",
      "muted"
    ]
  },
  "shots": [
    {
      "id": "application-shell",
      "title": "Application shell",
      "viewport": "desktop",
      "primitives": [
        "button",
        "card",
        "input",
        "select",
        "tabs",
        "badge",
        "separator",
        "table"
      ],
      "composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
      "mustShow": [
        "primary and secondary actions",
        "card hierarchy",
        "filterable state",
        "table or list density"
      ],
      "avoid": [
        "component inventory walls",
        "placeholder-only content",
        "generic rounded SaaS chrome"
      ],
      "scene": {
        "eyebrow": "workspace spread",
        "headline": "WhimsiCollage Storybook launch room",
        "description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
        "primaryAction": "Apply theme",
        "secondaryAction": "Review states",
        "stats": [
          {
            "label": "components",
            "value": "16",
            "tone": "accent"
          },
          {
            "label": "states",
            "value": "ready"
          },
          {
            "label": "density",
            "value": "balanced",
            "tone": "warning"
          }
        ],
        "rows": [
          {
            "label": "Primary flow",
            "value": "mapped",
            "status": "active"
          },
          {
            "label": "Token coverage",
            "value": "semantic",
            "status": "synced"
          },
          {
            "label": "Responsive proof",
            "value": "queued",
            "status": "review"
          }
        ],
        "statuses": [
          "Active",
          "Synced",
          "Draft"
        ]
      }
    },
    {
      "id": "detail-editor",
      "title": "Detail editor",
      "viewport": "tablet",
      "primitives": [
        "button",
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet"
      ],
      "composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
      "mustShow": [
        "focus ring",
        "error or destructive state",
        "dialog or sheet treatment",
        "written guidance content"
      ],
      "avoid": [
        "unstyled browser controls",
        "floating cards inside cards",
        "missing labels"
      ],
      "scene": {
        "eyebrow": "editing flow",
        "headline": "Language recipe editor",
        "description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
        "primaryAction": "Save recipe",
        "secondaryAction": "Open sheet",
        "fields": [
          {
            "label": "Component family",
            "value": "Narrative cards"
          },
          {
            "label": "State treatment",
            "value": "Visible focus + validation"
          },
          {
            "label": "Motion",
            "value": "Small lift, no opacity-only fade"
          }
        ],
        "statuses": [
          "Focus",
          "Invalid",
          "Confirmed"
        ]
      }
    },
    {
      "id": "data-operations",
      "title": "Data operations",
      "viewport": "mobile",
      "primitives": [
        "button",
        "tabs",
        "badge",
        "dropdown-menu",
        "table",
        "tooltip",
        "separator"
      ],
      "composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
      "mustShow": [
        "responsive reflow",
        "dense row styling",
        "menu affordance",
        "status badge system"
      ],
      "avoid": [
        "desktop-only tables",
        "text overflow",
        "default shadcn spacing without Katagami character"
      ],
      "scene": {
        "eyebrow": "operations",
        "headline": "Compact review queue",
        "description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
        "primaryAction": "Resolve",
        "secondaryAction": "Filter",
        "rows": [
          {
            "label": "Button hierarchy",
            "value": "approved",
            "status": "ok"
          },
          {
            "label": "Table rhythm",
            "value": "needs pass",
            "status": "watch"
          },
          {
            "label": "Empty state",
            "value": "designed",
            "status": "done"
          }
        ],
        "statuses": [
          "Queued",
          "Blocked",
          "Done"
        ]
      }
    }
  ],
  "componentRecipes": [
    {
      "primitive": "button",
      "intent": "Prove action hierarchy, focus, disabled, and destructive states."
    },
    {
      "primitive": "card",
      "intent": "Carry the language surface, border, elevation, and density rules."
    },
    {
      "primitive": "input",
      "intent": "Show labels, focus rings, validation, and spacing rhythm."
    },
    {
      "primitive": "textarea",
      "intent": "Show longer guidance, validation copy, and writing density."
    },
    {
      "primitive": "select",
      "intent": "Show filtering, selection contrast, and menu trigger styling."
    },
    {
      "primitive": "dialog",
      "intent": "Show centered decision states and overlay treatment."
    },
    {
      "primitive": "sheet",
      "intent": "Show contextual side panels and responsive editing."
    },
    {
      "primitive": "tabs",
      "intent": "Show navigational structure and active/inactive contrast."
    },
    {
      "primitive": "badge",
      "intent": "Show compact status vocabulary and semantic colors."
    },
    {
      "primitive": "separator",
      "intent": "Show section rhythm without generic gray dividers."
    },
    {
      "primitive": "checkbox",
      "intent": "Show binary selection with visible focus and checked states."
    },
    {
      "primitive": "switch",
      "intent": "Show settings toggles and on/off contrast."
    },
    {
      "primitive": "slider",
      "intent": "Show numeric adjustment with track/thumb styling."
    },
    {
      "primitive": "tooltip",
      "intent": "Show concise explanation styling above compact controls."
    },
    {
      "primitive": "dropdown-menu",
      "intent": "Show action menus, destructive items, and grouped choices."
    },
    {
      "primitive": "table",
      "intent": "Show dense operational data, separators, row states, and responsive behavior."
    }
  ],
  "qualityRules": {
    "do": [
      "pair warm neutrals with berry, moss, apricot, and sky accents in a clustered, desaturated palette",
      "treat forms, menus, and metrics as story props embedded in a specific narrative scene",
      "use asymmetry and layered offsets while maintaining a stable left-to-right reading flow",
      "preserve tactile edge details, grain, and irregular dashed borders across components",
      "let illustration-friendly iconography and labels soften task-heavy interactions",
      "make one panel dominant and let smaller pockets tuck around it like a picture-book spread",
      "style every control as a pebble, sticker, ribbon, or paper patch with explicit focus states"
    ],
    "dont": [
      "flatten everything into identical white cards or a generic SaaS component inventory",
      "use neon saturation or toy-store primaries as the default palette",
      "default to sharp corners, strict hairlines, glassmorphism, or mechanical grey borders",
      "turn the page into a literal children app full of oversized mascots",
      "sacrifice legibility for texture or decorative overlap",
      "mix arbitrary corner radii; use 24px for containers and 9999px only for pills",
      "hide the collage identity in illustrations only; the CSS structure must carry it"
    ]
  }
}
related

More like this