back to gallery
design language·stationery-store

Stationery Store

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
Stationery Store translates the bright order of a Japanese bungu aisle into product software: white shelf planes, disciplined gridded browsing, tactile paper labels, and small bursts of category color used like aisle markers rather than decoration. The system is cheerful but not childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry.
values
Shelf order: products and controls line up like stock on a clean retail fixture, with browsing rhythm created by rows, gutters, and consistent sightlines.Tactile labeling: metadata appears as physical tags, stickers, and small paper slips rather than generic SaaS chips.Bright restraint: warm white surfaces dominate while a few desaturated category colors punctuate wayfinding and state.Retail clarity: prices, counts, availability, and actions are legible at a glance without decorative clutter.Snappy handling: hover and focus states feel like lifting a product from a shelf, quick and tactile.Friendly precision: forms, tables, and filters remain exact but use approachable shapes and paper-store details.
anti-values
×Generic analytics dashboards or component catalog layouts with abstract cards.×Rainbow maximalism where every control competes for attention.×Dark dramatic surfaces that contradict a well-lit shop floor.×Browser-default form elements or unstyled commerce controls.×Soft pastel scrapbooking that loses the crispness of retail signage.
tokens
borders4 items
accent width
3px
character
near-invisible warm hairlines plus separate flat category rails for aisle markers
default width
1px
style
solid
colors12 items
accent
#D8A529
background
#F6F3EE
border
#E7DFD4
error
#B8423D
info
#4A7896
muted
#6F6860
primary
#D94F45
secondary
#3F6FA8
success
#3F7A55
surface
#FFFFFF
text
#211D1A
warning
#B87922
motion3 items
duration
180ms
easing
cubic-bezier(0.2, 0.8, 0.2, 1)
philosophy
snappy retail handling: cards lift 2px, buttons press 1px, drawers slide without bounce
radii5 items
full
9999px
lg
16px
md
16px
none
0px
sm
0px
shadows3 items
lg
0 18px 42px rgba(33,29,26,0.10)
md
0 8px 24px rgba(33,29,26,0.08)
sm
0 1px 2px rgba(33,29,26,0.05)
spacing2 items
scale
0, 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
unit
4px
surfaces3 items
bg pattern
subtle 24px paper-dot grid at 18% opacity
card style
white 16px shelf cards with uniform hairline border and restrained shadow
treatment
warm paper shelves with flat white cards, tiny paper-grain radial dots, and no gradients
typography8 items
base size
16px
body font
IBM Plex Sans
google fonts url
https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
heading font
Fraunces
letter spacing
-0.02em
line height
1.56
mono font
IBM Plex Mono
scale ratio
1.24
rules
composition
Keep the interface scene-specific: a fictional stationery buying workspace, not a dashboard or component inventory.Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows.Limit brand accents to red, blue, and ochre; status colors appear only in alerts and inventory labels.Place category color in tabs, header rails, and tiny tags, never as large background fields.Separate dense inventory information from spacious browsing moments using a minimum 8:1 spacing range.Use flat paper texture and clipped tag shapes as structural identity so the system survives palette swaps.
density
Comfortable browsing by default with dense inventory tables nested in the procurement drawer; related label clusters sit at 4–8px while sections breathe at 64–96px.
hierarchy
Fraunces display headings use -0.04em tracking and 1.1 line-height for shop-sign presence.IBM Plex Sans body copy uses -0.02em tracking and 1.56 line-height for precise retail legibility.IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata.Header rails and active tabs provide wayfinding before color-filled buttons do.Tables are compact and ruled like inventory sheets while cards remain airy like shelves.
signature patterns
Price-tag badges are built with clip-path polygon notches plus ::before punch holes, using mono numerals and paper shadows for tactile retail metadata.Aisle-marker section headers use a detached .category-rail 3px flat bar under the heading, avoiding banned one-sided borders on rounded components.Shelf-grid cards use CSS grid with a .featured-card spanning columns and rows, breaking equal-card monotony while keeping strict product alignment.Paper-dot background texture uses radial-gradient microdots on the shop floor and is repeated consistently behind shelves and drawer areas.Retail pickup motion applies translateY(-2px) hover lift and translateY(1px) active press with the same 180ms cubic-bezier timing across cards and controls.
layout
density
Comfortable retail browsing with one dense inventory sheet; the scene uses 4px label gaps, 16px control groups, 32px card gutters, and 96px section breathing for an 24:1 rhythm.
grid
break
featured shelf card spans 2 columns on desktop
columns
12 desktop, 8 tablet, 4 mobile
gutter
24px desktop, 20px tablet, 16px mobile
max width
1320px
responsive
desktop
1440px full shelf workspace with side order drawer
mobile
375px single-column product flow with sticky action bar and condensed filters
tablet
768px two-column shelf and drawer below
whitespace
Outer margins are generous like store aisles, while tag clusters are tight like labels attached to products. Card padding is 24px and major scene bands are separated by 64px or more.
guidance
do
  • Use warm white cards on a warm shop-floor background with near-invisible borders.
  • Keep category colors attached to tabs, rails, and tags rather than broad panels.
  • Use Fraunces for display signage and IBM Plex Sans for all transactional text.
  • Build price and SKU metadata as notched paper tags with mono numerals.
  • Break repeated grids with one featured shelf product or inset procurement panel.
  • Style every input, select, checkbox, radio, toggle, tab, and pagination control explicitly.
avoid
  • Do not use Poppins, Inter, Roboto, or other default AI-tell typography.
  • Do not make three equal cards in a row without a dominant featured shelf item.
  • Do not combine one-sided accent borders with rounded cards or buttons.
  • Do not use saturated rainbow fills or more than three brand accent colors.
  • Do not create a generic analytics dashboard, CRM view, or component catalog.
  • Do not leave native browser select, checkbox, or radio styling visible.
imagery
hero image direction

top-down stationery tray with paper clips, washi rolls, and reorder slips on warm white

icon style

simple filled pictograms in one color with squared terminals

illustration style

flat photographed paper swatches, sticker sheets, and clipped label silhouettes; no decorative icons beyond filled retail pictograms

image gen prompts
top-down Japanese stationery procurement tray, warm white paper, subtle shadows, no text
generative
animation philosophy

functional retail snap, not decorative motion

shader palette

warm paper, muted red, muted blue, ochre

techniques
CSS radial microdot paper texturesmall sticky-note hover offsetsoptional canvas confetti disabled by default
katagami spec
# Stationery Store

## Philosophy

Stationery Store translates the bright order of a Japanese bungu aisle into product software: white shelf planes, disciplined gridded browsing, tactile paper labels, and small bursts of category color used like aisle markers rather than decoration. The system is cheerful but not childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry.

### Values

- Shelf order: products and controls line up like stock on a clean retail fixture, with browsing rhythm created by rows, gutters, and consistent sightlines.
- Tactile labeling: metadata appears as physical tags, stickers, and small paper slips rather than generic SaaS chips.
- Bright restraint: warm white surfaces dominate while a few desaturated category colors punctuate wayfinding and state.
- Retail clarity: prices, counts, availability, and actions are legible at a glance without decorative clutter.
- Snappy handling: hover and focus states feel like lifting a product from a shelf, quick and tactile.
- Friendly precision: forms, tables, and filters remain exact but use approachable shapes and paper-store details.

### Anti-Values

- Generic analytics dashboards or component catalog layouts with abstract cards.
- Rainbow maximalism where every control competes for attention.
- Dark dramatic surfaces that contradict a well-lit shop floor.
- Browser-default form elements or unstyled commerce controls.
- Soft pastel scrapbooking that loses the crispness of retail signage.

### Visual Character

- Use #F6F3EE shop-floor background behind #FFFFFF shelf cards with subtle rgba(29,24,20,0.08) rules, so surfaces read as bright paper displays rather than gray SaaS panels.
- Section headers carry a separate flat 3px category rail placed below the title, never a one-sided border on rounded cards, creating visible aisle-marker wayfinding in CSS.
- Metadata badges use price-tag geometry with a clipped notch and circular punch made by pseudo-elements, pairing IBM Plex Mono numerals with warm paper colors.
- Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards align to strict shelf rows, preserving retail order without equal-card monotony.
- Interactions use transform: translateY(-2px) and a 180ms cubic-bezier retail snap, making cards and buttons feel physically picked up from the shelf.

## Tokens

### Borders

- **Accent Width**: 3px
- **Character**: near-invisible warm hairlines plus separate flat category rails for aisle markers
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#D8A529` |
| background | `#F6F3EE` |
| border | `#E7DFD4` |
| error | `#B8423D` |
| info | `#4A7896` |
| muted | `#6F6860` |
| primary | `#D94F45` |
| secondary | `#3F6FA8` |
| success | `#3F7A55` |
| surface | `#FFFFFF` |
| text | `#211D1A` |
| warning | `#B87922` |

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: snappy retail handling: cards lift 2px, buttons press 1px, drawers slide without bounce

### Radii

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

### Shadows

- **Lg**: 0 18px 42px rgba(33,29,26,0.10)
- **Md**: 0 8px 24px rgba(33,29,26,0.08)
- **Sm**: 0 1px 2px rgba(33,29,26,0.05)

### Spacing

- **Scale**: ["0","4px","8px","12px","16px","24px","32px","48px","64px","96px","128px"]
- **Unit**: 4px

### Surfaces

- **Bg Pattern**: subtle 24px paper-dot grid at 18% opacity
- **Card Style**: white 16px shelf cards with uniform hairline border and restrained shadow
- **Treatment**: warm paper shelves with flat white cards, tiny paper-grain radial dots, and no gradients

### Typography

- **Base Size**: 16px
- **Body Font**: IBM Plex Sans
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- **Heading Font**: Fraunces
- **Letter Spacing**: -0.02em
- **Line Height**: 1.56
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.24

## Rules

### Composition

- Keep the interface scene-specific: a fictional stationery buying workspace, not a dashboard or component inventory.
- Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows.
- Limit brand accents to red, blue, and ochre; status colors appear only in alerts and inventory labels.
- Place category color in tabs, header rails, and tiny tags, never as large background fields.
- Separate dense inventory information from spacious browsing moments using a minimum 8:1 spacing range.
- Use flat paper texture and clipped tag shapes as structural identity so the system survives palette swaps.

### Density

Comfortable browsing by default with dense inventory tables nested in the procurement drawer; related label clusters sit at 4–8px while sections breathe at 64–96px.

### Hierarchy

- Fraunces display headings use -0.04em tracking and 1.1 line-height for shop-sign presence.
- IBM Plex Sans body copy uses -0.02em tracking and 1.56 line-height for precise retail legibility.
- IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata.
- Header rails and active tabs provide wayfinding before color-filled buttons do.
- Tables are compact and ruled like inventory sheets while cards remain airy like shelves.

### Signature Patterns

- Price-tag badges are built with clip-path polygon notches plus ::before punch holes, using mono numerals and paper shadows for tactile retail metadata.
- Aisle-marker section headers use a detached .category-rail 3px flat bar under the heading, avoiding banned one-sided borders on rounded components.
- Shelf-grid cards use CSS grid with a .featured-card spanning columns and rows, breaking equal-card monotony while keeping strict product alignment.
- Paper-dot background texture uses radial-gradient microdots on the shop floor and is repeated consistently behind shelves and drawer areas.
- Retail pickup motion applies translateY(-2px) hover lift and translateY(1px) active press with the same 180ms cubic-bezier timing across cards and controls.

## Layout

### Density

Comfortable retail browsing with one dense inventory sheet; the scene uses 4px label gaps, 16px control groups, 32px card gutters, and 96px section breathing for an 24:1 rhythm.

### Grid

- **Break**: featured shelf card spans 2 columns on desktop
- **Columns**: 12 desktop, 8 tablet, 4 mobile
- **Gutter**: 24px desktop, 20px tablet, 16px mobile
- **Max Width**: 1320px

### Responsive

- **Desktop**: 1440px full shelf workspace with side order drawer
- **Mobile**: 375px single-column product flow with sticky action bar and condensed filters
- **Tablet**: 768px two-column shelf and drawer below

### Whitespace

Outer margins are generous like store aisles, while tag clusters are tight like labels attached to products. Card padding is 24px and major scene bands are separated by 64px or more.

## Guidance

### Do

- Use warm white cards on a warm shop-floor background with near-invisible borders.
- Keep category colors attached to tabs, rails, and tags rather than broad panels.
- Use Fraunces for display signage and IBM Plex Sans for all transactional text.
- Build price and SKU metadata as notched paper tags with mono numerals.
- Break repeated grids with one featured shelf product or inset procurement panel.
- Style every input, select, checkbox, radio, toggle, tab, and pagination control explicitly.

### Don't

- Do not use Poppins, Inter, Roboto, or other default AI-tell typography.
- Do not make three equal cards in a row without a dominant featured shelf item.
- Do not combine one-sided accent borders with rounded cards or buttons.
- Do not use saturated rainbow fills or more than three brand accent colors.
- Do not create a generic analytics dashboard, CRM view, or component catalog.
- Do not leave native browser select, checkbox, or radio styling visible.

### Accessibility

- **Color**: category labels always include text, never color alone
- **Contrast**: AA contrast for body text and controls
- **Focus**: 2px warm blue outline with 3px offset
- **Motion**: prefers-reduced-motion disables transforms

### Usage Context

- **Ideal For**: ["stationery procurement","curated retail catalogs","creative inventory tools","paper goods ordering"]
- **Poor Fit For**: ["dark enterprise consoles","luxury minimal campaigns","high-frequency trading dashboards"]

## Imagery Direction

### Hero Image Direction

top-down stationery tray with paper clips, washi rolls, and reorder slips on warm white

### Icon Style

simple filled pictograms in one color with squared terminals

### Illustration Style

flat photographed paper swatches, sticker sheets, and clipped label silhouettes; no decorative icons beyond filled retail pictograms

### Image Gen Prompts

- top-down Japanese stationery procurement tray, warm white paper, subtle shadows, no text

## Generative Canvas

### Animation Philosophy

functional retail snap, not decorative motion

### Shader Palette

warm paper, muted red, muted blue, ochre

### Techniques

- CSS radial microdot paper texture
- small sticky-note hover offsets
- optional canvas confetti disabled by default
DESIGN.md
---
version: "alpha"
name: "Stationery Store"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#D8A529"
  background: "#F6F3EE"
  border: "#E7DFD4"
  error: "#B8423D"
  info: "#4A7896"
  muted: "#6F6860"
  primary: "#D94F45"
  secondary: "#3F6FA8"
  success: "#3F7A55"
  surface: "#FFFFFF"
  text: "#211D1A"
  warning: "#B87922"
typography:
  headline-lg:
    fontFamily: "Fraunces"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Fraunces"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "16px"
  md: "16px"
  none: "0px"
  sm: "0px"
spacing:
  xs: "0px"
  sm: "4px"
  md: "8px"
  lg: "12px"
  xl: "16px"
  2xl: "24px"
  3xl: "32px"
  4xl: "48px"
  step-8: "64px"
  step-9: "96px"
  step-10: "128px"
  unit: "4px"
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: "#000000"
    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"
---

# Stationery Store

## Overview

Stationery Store translates the bright order of a Japanese bungu aisle into product software: white shelf planes, disciplined gridded browsing, tactile paper labels, and small bursts of category color used like aisle markers rather than decoration. The system is cheerful but not childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry.

### Values

- Shelf order: products and controls line up like stock on a clean retail fixture, with browsing rhythm created by rows, gutters, and consistent sightlines.
- Tactile labeling: metadata appears as physical tags, stickers, and small paper slips rather than generic SaaS chips.
- Bright restraint: warm white surfaces dominate while a few desaturated category colors punctuate wayfinding and state.
- Retail clarity: prices, counts, availability, and actions are legible at a glance without decorative clutter.
- Snappy handling: hover and focus states feel like lifting a product from a shelf, quick and tactile.
- Friendly precision: forms, tables, and filters remain exact but use approachable shapes and paper-store details.

### Anti-Values

- Generic analytics dashboards or component catalog layouts with abstract cards.
- Rainbow maximalism where every control competes for attention.
- Dark dramatic surfaces that contradict a well-lit shop floor.
- Browser-default form elements or unstyled commerce controls.
- Soft pastel scrapbooking that loses the crispness of retail signage.

### Visual Character

- Use #F6F3EE shop-floor background behind #FFFFFF shelf cards with subtle rgba(29,24,20,0.08) rules, so surfaces read as bright paper displays rather than gray SaaS panels.
- Section headers carry a separate flat 3px category rail placed below the title, never a one-sided border on rounded cards, creating visible aisle-marker wayfinding in CSS.
- Metadata badges use price-tag geometry with a clipped notch and circular punch made by pseudo-elements, pairing IBM Plex Mono numerals with warm paper colors.
- Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards align to strict shelf rows, preserving retail order without equal-card monotony.
- Interactions use transform: translateY(-2px) and a 180ms cubic-bezier retail snap, making cards and buttons feel physically picked up from the shelf.

## 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 | `#D8A529` |
| background | `#F6F3EE` |
| border | `#E7DFD4` |
| error | `#B8423D` |
| info | `#4A7896` |
| muted | `#6F6860` |
| primary | `#D94F45` |
| secondary | `#3F6FA8` |
| success | `#3F7A55` |
| surface | `#FFFFFF` |
| text | `#211D1A` |
| warning | `#B87922` |

## Typography

- **Headline-Lg**: Fraunces, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Xs**: `0px`
- **Sm**: `4px`
- **Md**: `8px`
- **Lg**: `12px`
- **Xl**: `16px`
- **2xl**: `24px`
- **3xl**: `32px`
- **4xl**: `48px`
- **Step-8**: `64px`
- **Step-9**: `96px`
- **Step-10**: `128px`
- **Unit**: `4px`

### Density

Comfortable retail browsing with one dense inventory sheet; the scene uses 4px label gaps, 16px control groups, 32px card gutters, and 96px section breathing for an 24:1 rhythm.

### Grid

- **Break**: featured shelf card spans 2 columns on desktop
- **Columns**: 12 desktop, 8 tablet, 4 mobile
- **Gutter**: 24px desktop, 20px tablet, 16px mobile
- **Max Width**: 1320px

### Responsive

- **Desktop**: 1440px full shelf workspace with side order drawer
- **Mobile**: 375px single-column product flow with sticky action bar and condensed filters
- **Tablet**: 768px two-column shelf and drawer below

### Whitespace

Outer margins are generous like store aisles, while tag clusters are tight like labels attached to products. Card padding is 24px and major scene bands are separated by 64px or more.

## Elevation & Depth

### Shadows

- **Lg**: 0 18px 42px rgba(33,29,26,0.10)
- **Md**: 0 8px 24px rgba(33,29,26,0.08)
- **Sm**: 0 1px 2px rgba(33,29,26,0.05)

## Shapes

### Rounded

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

### Surfaces

- **Bg Pattern**: subtle 24px paper-dot grid at 18% opacity
- **Card Style**: white 16px shelf cards with uniform hairline border and restrained shadow
- **Treatment**: warm paper shelves with flat white cards, tiny paper-grain radial dots, and no gradients

### Borders

- **Accent Width**: 3px
- **Character**: near-invisible warm hairlines plus separate flat category rails for aisle markers
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

- Keep the interface scene-specific: a fictional stationery buying workspace, not a dashboard or component inventory.
- Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows.
- Limit brand accents to red, blue, and ochre; status colors appear only in alerts and inventory labels.
- Place category color in tabs, header rails, and tiny tags, never as large background fields.
- Separate dense inventory information from spacious browsing moments using a minimum 8:1 spacing range.
- Use flat paper texture and clipped tag shapes as structural identity so the system survives palette swaps.

### Density

Comfortable browsing by default with dense inventory tables nested in the procurement drawer; related label clusters sit at 4–8px while sections breathe at 64–96px.

### Hierarchy

- Fraunces display headings use -0.04em tracking and 1.1 line-height for shop-sign presence.
- IBM Plex Sans body copy uses -0.02em tracking and 1.56 line-height for precise retail legibility.
- IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata.
- Header rails and active tabs provide wayfinding before color-filled buttons do.
- Tables are compact and ruled like inventory sheets while cards remain airy like shelves.

### Signature Patterns

- Price-tag badges are built with clip-path polygon notches plus ::before punch holes, using mono numerals and paper shadows for tactile retail metadata.
- Aisle-marker section headers use a detached .category-rail 3px flat bar under the heading, avoiding banned one-sided borders on rounded components.
- Shelf-grid cards use CSS grid with a .featured-card spanning columns and rows, breaking equal-card monotony while keeping strict product alignment.
- Paper-dot background texture uses radial-gradient microdots on the shop floor and is repeated consistently behind shelves and drawer areas.
- Retail pickup motion applies translateY(-2px) hover lift and translateY(1px) active press with the same 180ms cubic-bezier timing across cards and controls.

## 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-019dacd7-2e7a-7970-9ec1-96d453a4b028/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 Use warm white cards on a warm shop-floor background with near-invisible borders.
- Do Keep category colors attached to tabs, rails, and tags rather than broad panels.
- Do Use Fraunces for display signage and IBM Plex Sans for all transactional text.
- Do Build price and SKU metadata as notched paper tags with mono numerals.
- Do Break repeated grids with one featured shelf product or inset procurement panel.
- Do Style every input, select, checkbox, radio, toggle, tab, and pagination control explicitly.
- Don't Do not use Poppins, Inter, Roboto, or other default AI-tell typography.
- Don't Do not make three equal cards in a row without a dominant featured shelf item.
- Don't Do not combine one-sided accent borders with rounded cards or buttons.
- Don't Do not use saturated rainbow fills or more than three brand accent colors.
- Don't Do not create a generic analytics dashboard, CRM view, or component catalog.
- Don't Do not leave native browser select, checkbox, or radio styling visible.

### Accessibility

- **Color**: category labels always include text, never color alone
- **Contrast**: AA contrast for body text and controls
- **Focus**: 2px warm blue outline with 3px offset
- **Motion**: prefers-reduced-motion disables transforms

### Usage Context

- **Ideal For**: ["stationery procurement","curated retail catalogs","creative inventory tools","paper goods ordering"]
- **Poor Fit For**: ["dark enterprise consoles","luxury minimal campaigns","high-frequency trading dashboards"]

## Imagery Direction

### Hero Image Direction

top-down stationery tray with paper clips, washi rolls, and reorder slips on warm white

### Icon Style

simple filled pictograms in one color with squared terminals

### Illustration Style

flat photographed paper swatches, sticker sheets, and clipped label silhouettes; no decorative icons beyond filled retail pictograms

### Image Gen Prompts

- top-down Japanese stationery procurement tray, warm white paper, subtle shadows, no text

## Generative Canvas

### Animation Philosophy

functional retail snap, not decorative motion

### Shader Palette

warm paper, muted red, muted blue, ochre

### Techniques

- CSS radial microdot paper texture
- small sticky-note hover offsets
- optional canvas confetti disabled by default
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "stationery-store",
  "type": "registry:theme",
  "title": "Stationery Store shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F6F3EE",
      "foreground": "#211D1A",
      "card": "#FFFFFF",
      "card-foreground": "#211D1A",
      "popover": "#FFFFFF",
      "popover-foreground": "#211D1A",
      "primary": "#D94F45",
      "primary-foreground": "#ffffff",
      "secondary": "#3F6FA8",
      "secondary-foreground": "#ffffff",
      "muted": "#6F6860",
      "muted-foreground": "#211D1A",
      "accent": "#D8A529",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423D",
      "border": "#E7DFD4",
      "input": "#E7DFD4",
      "ring": "#D8A529",
      "chart-1": "#D94F45",
      "chart-2": "#3F6FA8",
      "chart-3": "#D8A529",
      "chart-4": "#3F7A55",
      "chart-5": "#B87922",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#211D1A",
      "sidebar-primary": "#D94F45",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#4A7896",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#E7DFD4",
      "sidebar-ring": "#D8A529",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#D94F45",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D8A529",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423D",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D8A529",
      "chart-1": "#D94F45",
      "chart-2": "#3F6FA8",
      "chart-3": "#D8A529",
      "chart-4": "#3F7A55",
      "chart-5": "#B87922",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#D94F45",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#D8A529",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D8A529",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019dacd7-2e7a-7970-9ec1-96d453a4b028",
    "slug": "stationery-store",
    "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": [
        "scale",
        "unit"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · stationery-store
DESIGN.md

at a glance

Palette

Typography

headline-lgFraunces · 31px · 700

The quick brown fox jumps

headline-mdFraunces · 25px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 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

  • xs0px
  • sm4px
  • md8px
  • lg12px
  • xl16px
  • 2xl24px
  • 3xl32px
  • 4xl48px
  • step-864px
  • step-996px
  • step-10128px
  • unit4px

Shape

full9999px
lg16px
md16px
none0px
sm0px
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: #F6F3EE;
  --foreground: #211D1A;
  --card: #FFFFFF;
  --card-foreground: #211D1A;
  --popover: #FFFFFF;
  --popover-foreground: #211D1A;
  --primary: #D94F45;
  --primary-foreground: #ffffff;
  --secondary: #3F6FA8;
  --secondary-foreground: #ffffff;
  --muted: #6F6860;
  --muted-foreground: #211D1A;
  --accent: #D8A529;
  --accent-foreground: #ffffff;
  --destructive: #B8423D;
  --border: #E7DFD4;
  --input: #E7DFD4;
  --ring: #D8A529;
  --chart-1: #D94F45;
  --chart-2: #3F6FA8;
  --chart-3: #D8A529;
  --chart-4: #3F7A55;
  --chart-5: #B87922;
  --sidebar: #FFFFFF;
  --sidebar-foreground: #211D1A;
  --sidebar-primary: #D94F45;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #4A7896;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #E7DFD4;
  --sidebar-ring: #D8A529;
  --radius: 16px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #D94F45;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #D8A529;
  --accent-foreground: #ffffff;
  --destructive: #B8423D;
  --border: #303642;
  --input: #303642;
  --ring: #D8A529;
  --chart-1: #D94F45;
  --chart-2: #3F6FA8;
  --chart-3: #D8A529;
  --chart-4: #3F7A55;
  --chart-5: #B87922;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #D94F45;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #D8A529;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #D8A529;
  --radius: 16px;
}
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 StationeryStoreShadcnKit() {
  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">Stationery Store</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 JSONcompatibility fallback
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "stationery-store",
  "type": "registry:theme",
  "title": "Stationery Store shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F6F3EE",
      "foreground": "#211D1A",
      "card": "#FFFFFF",
      "card-foreground": "#211D1A",
      "popover": "#FFFFFF",
      "popover-foreground": "#211D1A",
      "primary": "#D94F45",
      "primary-foreground": "#ffffff",
      "secondary": "#3F6FA8",
      "secondary-foreground": "#ffffff",
      "muted": "#6F6860",
      "muted-foreground": "#211D1A",
      "accent": "#D8A529",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423D",
      "border": "#E7DFD4",
      "input": "#E7DFD4",
      "ring": "#D8A529",
      "chart-1": "#D94F45",
      "chart-2": "#3F6FA8",
      "chart-3": "#D8A529",
      "chart-4": "#3F7A55",
      "chart-5": "#B87922",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#211D1A",
      "sidebar-primary": "#D94F45",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#4A7896",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#E7DFD4",
      "sidebar-ring": "#D8A529",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#D94F45",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D8A529",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423D",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D8A529",
      "chart-1": "#D94F45",
      "chart-2": "#3F6FA8",
      "chart-3": "#D8A529",
      "chart-4": "#3F7A55",
      "chart-5": "#B87922",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#D94F45",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#D8A529",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D8A529",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019dacd7-2e7a-7970-9ec1-96d453a4b028",
    "slug": "stationery-store",
    "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": [
        "scale",
        "unit"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
component recipescompatibility fallback
# Stationery Store shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dacd7-2e7a-7970-9ec1-96d453a4b028`
Slug: `stationery-store`

## Intent

Stationery Store translates the bright order of a Japanese bungu aisle into product software: white shelf planes, disciplined gridded browsing, tactile paper labels, and small bursts of category color used like aisle markers rather than decoration. The system is cheerful but not childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry.

## 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": "#D8A529",
  "background": "#F6F3EE",
  "border": "#E7DFD4",
  "error": "#B8423D",
  "info": "#4A7896",
  "muted": "#6F6860",
  "primary": "#D94F45",
  "secondary": "#3F6FA8",
  "success": "#3F7A55",
  "surface": "#FFFFFF",
  "text": "#211D1A",
  "warning": "#B87922"
}

Typography:

{
  "base_size": "16px",
  "body_font": "IBM Plex Sans",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap",
  "heading_font": "Fraunces",
  "letter_spacing": "-0.02em",
  "line_height": "1.56",
  "mono_font": "IBM Plex Mono",
  "scale_ratio": "1.24"
}

## Visual character to preserve

- Use #F6F3EE shop-floor background behind #FFFFFF shelf cards with subtle rgba(29,24,20,0.08) rules, so surfaces read as bright paper displays rather than gray SaaS panels.
- Section headers carry a separate flat 3px category rail placed below the title, never a one-sided border on rounded cards, creating visible aisle-marker wayfinding in CSS.
- Metadata badges use price-tag geometry with a clipped notch and circular punch made by pseudo-elements, pairing IBM Plex Mono numerals with warm paper colors.
- Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards align to strict shelf rows, preserving retail order without equal-card monotony.
- Interactions use transform: translateY(-2px) and a 180ms cubic-bezier retail snap, making cards and buttons feel physically picked up from the shelf.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "default",
  "border": "solid",
  "underlay": false,
  "grain": true,
  "stickerBadges": true,
  "motion": "lift",
  "density": "balanced",
  "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/stationery-store/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: Use warm white cards on a warm shop-floor background with near-invisible borders.; Keep category colors attached to tabs, rails, and tags rather than broad panels.; Use Fraunces for display signage and IBM Plex Sans for all transactional text.; Build price and SKU metadata as notched paper tags with mono numerals.; Break repeated grids with one featured shelf product or inset procurement panel.; Style every input, select, checkbox, radio, toggle, tab, and pagination control explicitly.
- Do not: Do not use Poppins, Inter, Roboto, or other default AI-tell typography.; Do not make three equal cards in a row without a dominant featured shelf item.; Do not combine one-sided accent borders with rounded cards or buttons.; Do not use saturated rainbow fills or more than three brand accent colors.; Do not create a generic analytics dashboard, CRM view, or component catalog.; Do not leave native browser select, checkbox, or radio styling visible.

## 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 StationeryStoreShadcnKit() {
  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">Stationery Store</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

{
  "density": "Comfortable retail browsing with one dense inventory sheet; the scene uses 4px label gaps, 16px control groups, 32px card gutters, and 96px section breathing for an 24:1 rhythm.",
  "grid": {
    "break": "featured shelf card spans 2 columns on desktop",
    "columns": "12 desktop, 8 tablet, 4 mobile",
    "gutter": "24px desktop, 20px tablet, 16px mobile",
    "max_width": "1320px"
  },
  "responsive": {
    "desktop": "1440px full shelf workspace with side order drawer",
    "mobile": "375px single-column product flow with sticky action bar and condensed filters",
    "tablet": "768px two-column shelf and drawer below"
  },
  "whitespace": "Outer margins are generous like store aisles, while tag clusters are tight like labels attached to products. Card padding is 24px and major scene bands are separated by 64px or more."
}
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-019dacd7-2e7a-7970-9ec1-96d453a4b028",
    "name": "Stationery Store",
    "slug": "stationery-store"
  },
  "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": [
    "Use #F6F3EE shop-floor background behind #FFFFFF shelf cards with subtle rgba(29,24,20,0.08) rules, so surfaces read as bright paper displays rather than gray SaaS panels.",
    "Section headers carry a separate flat 3px category rail placed below the title, never a one-sided border on rounded cards, creating visible aisle-marker wayfinding in CSS.",
    "Metadata badges use price-tag geometry with a clipped notch and circular punch made by pseudo-elements, pairing IBM Plex Mono numerals with warm paper colors.",
    "Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards align to strict shelf rows, preserving retail order without equal-card monotony.",
    "Interactions use transform: translateY(-2px) and a 180ms cubic-bezier retail snap, making cards and buttons feel physically picked up from the shelf."
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "default",
    "border": "solid",
    "underlay": false,
    "grain": true,
    "stickerBadges": true,
    "motion": "lift",
    "density": "balanced",
    "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": "Stationery Store 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": [
      "Use warm white cards on a warm shop-floor background with near-invisible borders.",
      "Keep category colors attached to tabs, rails, and tags rather than broad panels.",
      "Use Fraunces for display signage and IBM Plex Sans for all transactional text.",
      "Build price and SKU metadata as notched paper tags with mono numerals.",
      "Break repeated grids with one featured shelf product or inset procurement panel.",
      "Style every input, select, checkbox, radio, toggle, tab, and pagination control explicitly."
    ],
    "dont": [
      "Do not use Poppins, Inter, Roboto, or other default AI-tell typography.",
      "Do not make three equal cards in a row without a dominant featured shelf item.",
      "Do not combine one-sided accent borders with rounded cards or buttons.",
      "Do not use saturated rainbow fills or more than three brand accent colors.",
      "Do not create a generic analytics dashboard, CRM view, or component catalog.",
      "Do not leave native browser select, checkbox, or radio styling visible."
    ]
  }
}
related

More like this