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.
specification
philosophy
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
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
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.
layout
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.
- 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
- 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
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
- 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 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
top-down stationery tray with paper clips, washi rolls, and reorder slips on warm white
simple filled pictograms in one color with squared terminals
flat photographed paper swatches, sticker sheets, and clipped label silhouettes; no decorative icons beyond filled retail pictograms
generative
functional retail snap, not decorative motion
warm paper, muted red, muted blue, ochre
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"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
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
implementation kit
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
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table: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;
}
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>
);
}
{
"$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"
]
}
}
}
# 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."
}
{
"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."
]
}
}