back to gallerydo avoid
design language·washi-tape-grid
Washi Tape Grid
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
Inspired by Hobonichi Techo planners and Japanese stationery culture, Washi Tape Grid bridges analog craft and digital UI. The interface feels like a beautifully decorated planner page — colorful washi tape strips serve as section dividers and category markers, dot grid backgrounds provide structure, and stamp-like badges mark status. It is functional craft: organized but playful, precise but warm.
values
Functional beauty — every decorative element serves a purposeAnalog warmth — digital interfaces that feel handmade and personalJoyful organization — structure should spark delight, not dreadCraft precision — the care of a hobbyist arranging their planner pageColor as meaning — each tape color carries semantic weightTactile presence — elements feel like they have physical weight and textureSeasonal rhythm — design evolves with time like a living journal
anti-values
×Sterile minimalism — cold, featureless interfaces devoid of personality×Decoration without function — ornament that obscures rather than clarifies×Digital perfection — pixel-perfect rigidity that kills the handmade feel×Monochrome austerity — refusing color when it could communicate meaning
tokens
borders4 items
- dotted stamp
- 2px dotted rgba(45,41,38,0.28)
- focus tape
- 0 0 0 3px rgba(200,95,114,0.25)
- hairline
- 1px solid #e8e2d8
- no one sided on rounded
- Use separate square tape bars or full-width top strips; never a left border on rounded cards.
colors12 items
accent
#c99232
background
#faf9f7
border
#e8e2d8
error
#b84a45
info
#766aa3
muted
#8a847a
primary
#c85f72
secondary
#4f91a6
success
#5f9f76
surface
#ffffff
text
#2d2926
warning
#c9823a
motion6 items
- duration fast
- 150ms
- duration normal
- 300ms
- duration slow
- 500ms
- easing bounce
- cubic-bezier(0.34, 1.56, 0.64, 1)
- easing default
- cubic-bezier(0.4, 0, 0.2, 1)
- easing tape
- cubic-bezier(0.25, 0.46, 0.45, 0.94)
radii3 items
- none
- 0px
- pill
- 9999px
- primary
- 16px
shadows4 items
- lg
- 0 10px 28px rgba(45,41,38,0.08)
- md
- 0 2px 8px rgba(45,41,38,0.06)
- sm
- 0 1px 4px rgba(45,41,38,0.04)
- tape
- 0 1px 2px rgba(45,41,38,0.10)
spacing8 items
- huge
- 96px
- lg
- 24px
- md
- 16px
- sm
- 8px
- unit
- 8px
- xl
- 32px
- xs
- 4px
- xxl
- 48px
surfaces7 items
- card
- #ffffff
- elevated
- #ffffff
- paper
- #faf9f7
- tape blue
- rgba(79,145,166,0.72)
- tape coral
- rgba(200,95,114,0.72)
- tape gold
- rgba(201,146,50,0.72)
- tape green
- rgba(95,159,118,0.72)
typography10 items
- base size
- 16px
- body letter spacing
- -0.02em
- body line height
- 1.55
- display letter spacing
- -0.035em
- display line height
- 1.12
- font body
- Atkinson Hyperlegible
- font heading
- Nunito
- font mono
- JetBrains Mono
- google fonts url
- https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=JetBrains+Mono:wght@500;700&family=Nunito:wght@700;800;900&display=swap
- scale ratio
- 1.2
rules
composition
Build a specific planner application screen, not a component catalog: a dot-grid paper workspace, asymmetrical journal columns, layered task slips, and category washi strips that label real content areas. One oversized dated note creates the compositional break while smaller itinerary and habit slips cluster around it.
density
Comfortable analog density with strong spacing contrast: 8px sticker clusters, 16px content groups, 24px card padding, 48px section separation, and a 96px opening field. Related planner items sit close together while unrelated page regions breathe like a hand-arranged desk.
hierarchy
Hierarchy starts with paper scale and tape thickness: one large daily page dominates, secondary slips are smaller, and tiny sticker-dot rows show status. Nunito display headings carry friendly emphasis, Atkinson Hyperlegible body copy stays readable, and JetBrains Mono stamps provide dated metadata.
signature patterns
Washi tape section dividers: translucent full-width bars 6-8px tall placed at the top of cards or between page regions, with category labels nearby so color has semantic meaning.Stamp badges: small uppercase JetBrains Mono rectangles using dotted borders, 0px internal tape edge, and a restrained -1.5deg rotation for dated approval and status marks.Dot grid paper: repeating-radial-gradient dots at 20px intervals on the cream canvas and selected panels, kept below 0.10 opacity so the planner texture remains usable.Sticker status dots: 8-10px rounded markers paired with text labels for habits, due states, and category legends; never rely on color alone for meaning.Layered stationery depth: white paper cards with one 16px radius, warm hairline border, subtle shadow, and occasional square-ended tape tabs that do not create one-sided rounded borders.
layout
not set
guidance
- Use washi tape strips as functional dividers between content sections with category-meaningful colors
- Apply dot grid background pattern on main surfaces to establish the planner aesthetic
- Use stamp badges with slight rotation for status indicators and date marks
- Assign consistent tape colors to categories throughout the interface
- Keep generous padding inside cards to maintain the planner-page breathing room
- Use Nunito for headings to maintain the friendly rounded character
- Apply bouncy easing (cubic-bezier 0.34, 1.56, 0.64, 1) for interactive feedback
- Use sticker-dot status indicators (8-10px colored circles) for state
- Layer elements with subtle shadows to create the paper-on-desk depth
- Include semi-transparent tape strips at 0.7 opacity for authentic washi feel
- Never use sharp corners — everything should feel rounded like craft paper
- Avoid pure black text — use the dark pencil color #2d2926 instead
- Do not overuse rotation — reserve it for stamp badges only, max -2deg
- Never stack more than 3 tape colors in adjacent proximity
- Avoid heavy drop shadows — keep them warm and paper-like
- Do not use washi tape purely decoratively — each strip must mark a category or section
- Never make the dot grid background too prominent — keep at 0.15 opacity
- Avoid clinical white backgrounds — always use the cream paper #faf9f7 for canvas
- Do not use generic gray for muted elements — use the warm pencil tone #8a847a
katagami spec
# Washi Tape Grid ## Philosophy Inspired by Hobonichi Techo planners and Japanese stationery culture, Washi Tape Grid bridges analog craft and digital UI. The interface feels like a beautifully decorated planner page — colorful washi tape strips serve as section dividers and category markers, dot grid backgrounds provide structure, and stamp-like badges mark status. It is functional craft: organized but playful, precise but warm. ### Values - Functional beauty — every decorative element serves a purpose - Analog warmth — digital interfaces that feel handmade and personal - Joyful organization — structure should spark delight, not dread - Craft precision — the care of a hobbyist arranging their planner page - Color as meaning — each tape color carries semantic weight - Tactile presence — elements feel like they have physical weight and texture - Seasonal rhythm — design evolves with time like a living journal ### Anti-Values - Sterile minimalism — cold, featureless interfaces devoid of personality - Decoration without function — ornament that obscures rather than clarifies - Digital perfection — pixel-perfect rigidity that kills the handmade feel - Monochrome austerity — refusing color when it could communicate meaning ### Visual Character - Cream paper canvas uses a low-contrast 20px dot grid via repeating-radial-gradient, giving every screen a Hobonichi planner texture without harming readability. - Cards use one committed 16px rounded paper radius, warm hairline borders, and small warm shadows so panels feel like layered stationery sheets on a desk. - Functional washi tape strips appear as full-width translucent category bars on section headers and cards, using color to encode journal categories rather than decoration. - Stamp badges use dotted borders, uppercase mono text, and a controlled -1.5deg rotation to create the signed-and-dated planner mark while staying legible. - Sticker status dots and checkbox chips use small rounded color markers paired with labels, making state feel handmade while preserving accessibility. ## Tokens ### Borders - **Dotted Stamp**: 2px dotted rgba(45,41,38,0.28) - **Focus Tape**: 0 0 0 3px rgba(200,95,114,0.25) - **Hairline**: 1px solid #e8e2d8 - **No One Sided On Rounded**: Use separate square tape bars or full-width top strips; never a left border on rounded cards. ### Colors | Name | Value | |------|-------| | accent | `#c99232` | | background | `#faf9f7` | | border | `#e8e2d8` | | error | `#b84a45` | | info | `#766aa3` | | muted | `#8a847a` | | primary | `#c85f72` | | secondary | `#4f91a6` | | success | `#5f9f76` | | surface | `#ffffff` | | text | `#2d2926` | | warning | `#c9823a` | ### Motion - **Duration Fast**: 150ms - **Duration Normal**: 300ms - **Duration Slow**: 500ms - **Easing Bounce**: cubic-bezier(0.34, 1.56, 0.64, 1) - **Easing Default**: cubic-bezier(0.4, 0, 0.2, 1) - **Easing Tape**: cubic-bezier(0.25, 0.46, 0.45, 0.94) ### Radii - **None**: 0px - **Pill**: 9999px - **Primary**: 16px ### Shadows - **Lg**: 0 10px 28px rgba(45,41,38,0.08) - **Md**: 0 2px 8px rgba(45,41,38,0.06) - **Sm**: 0 1px 4px rgba(45,41,38,0.04) - **Tape**: 0 1px 2px rgba(45,41,38,0.10) ### Spacing - **Huge**: 96px - **Lg**: 24px - **Md**: 16px - **Sm**: 8px - **Unit**: 8px - **Xl**: 32px - **Xs**: 4px - **Xxl**: 48px ### Surfaces - **Card**: #ffffff - **Elevated**: #ffffff - **Paper**: #faf9f7 - **Tape Blue**: rgba(79,145,166,0.72) - **Tape Coral**: rgba(200,95,114,0.72) - **Tape Gold**: rgba(201,146,50,0.72) - **Tape Green**: rgba(95,159,118,0.72) ### Typography - **Base Size**: 16px - **Body Letter Spacing**: -0.02em - **Body Line Height**: 1.55 - **Display Letter Spacing**: -0.035em - **Display Line Height**: 1.12 - **Font Body**: Atkinson Hyperlegible - **Font Heading**: Nunito - **Font Mono**: JetBrains Mono - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=JetBrains+Mono:wght@500;700&family=Nunito:wght@700;800;900&display=swap - **Scale Ratio**: 1.2 ## Rules ### Composition Build a specific planner application screen, not a component catalog: a dot-grid paper workspace, asymmetrical journal columns, layered task slips, and category washi strips that label real content areas. One oversized dated note creates the compositional break while smaller itinerary and habit slips cluster around it. ### Density Comfortable analog density with strong spacing contrast: 8px sticker clusters, 16px content groups, 24px card padding, 48px section separation, and a 96px opening field. Related planner items sit close together while unrelated page regions breathe like a hand-arranged desk. ### Hierarchy Hierarchy starts with paper scale and tape thickness: one large daily page dominates, secondary slips are smaller, and tiny sticker-dot rows show status. Nunito display headings carry friendly emphasis, Atkinson Hyperlegible body copy stays readable, and JetBrains Mono stamps provide dated metadata. ### Signature Patterns - Washi tape section dividers: translucent full-width bars 6-8px tall placed at the top of cards or between page regions, with category labels nearby so color has semantic meaning. - Stamp badges: small uppercase JetBrains Mono rectangles using dotted borders, 0px internal tape edge, and a restrained -1.5deg rotation for dated approval and status marks. - Dot grid paper: repeating-radial-gradient dots at 20px intervals on the cream canvas and selected panels, kept below 0.10 opacity so the planner texture remains usable. - Sticker status dots: 8-10px rounded markers paired with text labels for habits, due states, and category legends; never rely on color alone for meaning. - Layered stationery depth: white paper cards with one 16px radius, warm hairline border, subtle shadow, and occasional square-ended tape tabs that do not create one-sided rounded borders. ## Guidance ### Do - Use washi tape strips as functional dividers between content sections with category-meaningful colors - Apply dot grid background pattern on main surfaces to establish the planner aesthetic - Use stamp badges with slight rotation for status indicators and date marks - Assign consistent tape colors to categories throughout the interface - Keep generous padding inside cards to maintain the planner-page breathing room - Use Nunito for headings to maintain the friendly rounded character - Apply bouncy easing (cubic-bezier 0.34, 1.56, 0.64, 1) for interactive feedback - Use sticker-dot status indicators (8-10px colored circles) for state - Layer elements with subtle shadows to create the paper-on-desk depth - Include semi-transparent tape strips at 0.7 opacity for authentic washi feel ### Don't - Never use sharp corners — everything should feel rounded like craft paper - Avoid pure black text — use the dark pencil color #2d2926 instead - Do not overuse rotation — reserve it for stamp badges only, max -2deg - Never stack more than 3 tape colors in adjacent proximity - Avoid heavy drop shadows — keep them warm and paper-like - Do not use washi tape purely decoratively — each strip must mark a category or section - Never make the dot grid background too prominent — keep at 0.15 opacity - Avoid clinical white backgrounds — always use the cream paper #faf9f7 for canvas - Do not use generic gray for muted elements — use the warm pencil tone #8a847a ### Usage Context Ideal for personal productivity tools, planners, journals, habit trackers, note-taking apps, creative portfolios, and any interface where users benefit from joyful organization. Works best in apps where content is categorized and chronological. ### Accessibility Maintain WCAG AA contrast (4.5:1 minimum) between text and backgrounds. Tape colors must not be the only way to distinguish categories — pair with icons or text labels. Dot grid must remain subtle enough not to interfere with readability. Stamp badge rotation must not exceed 2deg to maintain legibility. All interactive elements need visible focus states using the tape highlight pattern.
DESIGN.md
---
version: "alpha"
name: "Washi Tape Grid"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#c99232"
background: "#faf9f7"
border: "#e8e2d8"
error: "#b84a45"
info: "#766aa3"
muted: "#8a847a"
primary: "#c85f72"
secondary: "#4f91a6"
success: "#5f9f76"
surface: "#ffffff"
text: "#2d2926"
warning: "#c9823a"
typography:
headline-lg:
fontFamily: "Inter"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Inter"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Inter"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Inter"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
pill: "9999px"
primary: "16px"
spacing:
huge: "96px"
lg: "24px"
md: "16px"
sm: "8px"
unit: "8px"
xl: "32px"
xs: "4px"
xxl: "48px"
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.none}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
height: "44px"
---
# Washi Tape Grid
## Overview
Inspired by Hobonichi Techo planners and Japanese stationery culture, Washi Tape Grid bridges analog craft and digital UI. The interface feels like a beautifully decorated planner page — colorful washi tape strips serve as section dividers and category markers, dot grid backgrounds provide structure, and stamp-like badges mark status. It is functional craft: organized but playful, precise but warm.
### Values
- Functional beauty — every decorative element serves a purpose
- Analog warmth — digital interfaces that feel handmade and personal
- Joyful organization — structure should spark delight, not dread
- Craft precision — the care of a hobbyist arranging their planner page
- Color as meaning — each tape color carries semantic weight
- Tactile presence — elements feel like they have physical weight and texture
- Seasonal rhythm — design evolves with time like a living journal
### Anti-Values
- Sterile minimalism — cold, featureless interfaces devoid of personality
- Decoration without function — ornament that obscures rather than clarifies
- Digital perfection — pixel-perfect rigidity that kills the handmade feel
- Monochrome austerity — refusing color when it could communicate meaning
### Visual Character
- Cream paper canvas uses a low-contrast 20px dot grid via repeating-radial-gradient, giving every screen a Hobonichi planner texture without harming readability.
- Cards use one committed 16px rounded paper radius, warm hairline borders, and small warm shadows so panels feel like layered stationery sheets on a desk.
- Functional washi tape strips appear as full-width translucent category bars on section headers and cards, using color to encode journal categories rather than decoration.
- Stamp badges use dotted borders, uppercase mono text, and a controlled -1.5deg rotation to create the signed-and-dated planner mark while staying legible.
- Sticker status dots and checkbox chips use small rounded color markers paired with labels, making state feel handmade while preserving accessibility.
## 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 | `#c99232` |
| background | `#faf9f7` |
| border | `#e8e2d8` |
| error | `#b84a45` |
| info | `#766aa3` |
| muted | `#8a847a` |
| primary | `#c85f72` |
| secondary | `#4f91a6` |
| success | `#5f9f76` |
| surface | `#ffffff` |
| text | `#2d2926` |
| warning | `#c9823a` |
## Typography
- **Headline-Lg**: Inter, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Inter, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 16px, weight 400, line-height 1.5.
- **Label-Md**: Inter, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Huge**: `96px`
- **Lg**: `24px`
- **Md**: `16px`
- **Sm**: `8px`
- **Unit**: `8px`
- **Xl**: `32px`
- **Xs**: `4px`
- **Xxl**: `48px`
## Elevation & Depth
### Shadows
- **Lg**: 0 10px 28px rgba(45,41,38,0.08)
- **Md**: 0 2px 8px rgba(45,41,38,0.06)
- **Sm**: 0 1px 4px rgba(45,41,38,0.04)
- **Tape**: 0 1px 2px rgba(45,41,38,0.10)
## Shapes
### Rounded
- **None**: `0px`
- **Pill**: `9999px`
- **Primary**: `16px`
### Surfaces
- **Card**: #ffffff
- **Elevated**: #ffffff
- **Paper**: #faf9f7
- **Tape Blue**: rgba(79,145,166,0.72)
- **Tape Coral**: rgba(200,95,114,0.72)
- **Tape Gold**: rgba(201,146,50,0.72)
- **Tape Green**: rgba(95,159,118,0.72)
### Borders
- **Dotted Stamp**: 2px dotted rgba(45,41,38,0.28)
- **Focus Tape**: 0 0 0 3px rgba(200,95,114,0.25)
- **Hairline**: 1px solid #e8e2d8
- **No One Sided On Rounded**: Use separate square tape bars or full-width top strips; never a left border on rounded cards.
## Components
### Composition
Build a specific planner application screen, not a component catalog: a dot-grid paper workspace, asymmetrical journal columns, layered task slips, and category washi strips that label real content areas. One oversized dated note creates the compositional break while smaller itinerary and habit slips cluster around it.
### Density
Comfortable analog density with strong spacing contrast: 8px sticker clusters, 16px content groups, 24px card padding, 48px section separation, and a 96px opening field. Related planner items sit close together while unrelated page regions breathe like a hand-arranged desk.
### Hierarchy
Hierarchy starts with paper scale and tape thickness: one large daily page dominates, secondary slips are smaller, and tiny sticker-dot rows show status. Nunito display headings carry friendly emphasis, Atkinson Hyperlegible body copy stays readable, and JetBrains Mono stamps provide dated metadata.
### Signature Patterns
- Washi tape section dividers: translucent full-width bars 6-8px tall placed at the top of cards or between page regions, with category labels nearby so color has semantic meaning.
- Stamp badges: small uppercase JetBrains Mono rectangles using dotted borders, 0px internal tape edge, and a restrained -1.5deg rotation for dated approval and status marks.
- Dot grid paper: repeating-radial-gradient dots at 20px intervals on the cream canvas and selected panels, kept below 0.10 opacity so the planner texture remains usable.
- Sticker status dots: 8-10px rounded markers paired with text labels for habits, due states, and category legends; never rely on color alone for meaning.
- Layered stationery depth: white paper cards with one 16px radius, warm hairline border, subtle shadow, and occasional square-ended tape tabs that do not create one-sided rounded borders.
## 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-019dacd4-1685-7143-8c26-86dc0e9cc098/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 washi tape strips as functional dividers between content sections with category-meaningful colors
- Do Apply dot grid background pattern on main surfaces to establish the planner aesthetic
- Do Use stamp badges with slight rotation for status indicators and date marks
- Do Assign consistent tape colors to categories throughout the interface
- Do Keep generous padding inside cards to maintain the planner-page breathing room
- Do Use Nunito for headings to maintain the friendly rounded character
- Do Apply bouncy easing (cubic-bezier 0.34, 1.56, 0.64, 1) for interactive feedback
- Do Use sticker-dot status indicators (8-10px colored circles) for state
- Do Layer elements with subtle shadows to create the paper-on-desk depth
- Do Include semi-transparent tape strips at 0.7 opacity for authentic washi feel
- Don't Never use sharp corners — everything should feel rounded like craft paper
- Don't Avoid pure black text — use the dark pencil color #2d2926 instead
- Don't Do not overuse rotation — reserve it for stamp badges only, max -2deg
- Don't Never stack more than 3 tape colors in adjacent proximity
- Don't Avoid heavy drop shadows — keep them warm and paper-like
- Don't Do not use washi tape purely decoratively — each strip must mark a category or section
- Don't Never make the dot grid background too prominent — keep at 0.15 opacity
- Don't Avoid clinical white backgrounds — always use the cream paper #faf9f7 for canvas
- Don't Do not use generic gray for muted elements — use the warm pencil tone #8a847a
### Usage Context
Ideal for personal productivity tools, planners, journals, habit trackers, note-taking apps, creative portfolios, and any interface where users benefit from joyful organization. Works best in apps where content is categorized and chronological.
### Accessibility
Maintain WCAG AA contrast (4.5:1 minimum) between text and backgrounds. Tape colors must not be the only way to distinguish categories — pair with icons or text labels. Dot grid must remain subtle enough not to interfere with readability. Stamp badge rotation must not exceed 2deg to maintain legibility. All interactive elements need visible focus states using the tape highlight pattern.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "washi-tape-grid",
"type": "registry:theme",
"title": "Washi Tape Grid shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#faf9f7",
"foreground": "#2d2926",
"card": "#ffffff",
"card-foreground": "#2d2926",
"popover": "#ffffff",
"popover-foreground": "#2d2926",
"primary": "#c85f72",
"primary-foreground": "#ffffff",
"secondary": "#4f91a6",
"secondary-foreground": "#ffffff",
"muted": "#8a847a",
"muted-foreground": "#2d2926",
"accent": "#c99232",
"accent-foreground": "#ffffff",
"destructive": "#b84a45",
"border": "#e8e2d8",
"input": "#e8e2d8",
"ring": "#c99232",
"chart-1": "#c85f72",
"chart-2": "#4f91a6",
"chart-3": "#c99232",
"chart-4": "#5f9f76",
"chart-5": "#c9823a",
"sidebar": "#ffffff",
"sidebar-foreground": "#2d2926",
"sidebar-primary": "#c85f72",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#766aa3",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#e8e2d8",
"sidebar-ring": "#c99232",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#c85f72",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#c99232",
"accent-foreground": "#ffffff",
"destructive": "#b84a45",
"border": "#303642",
"input": "#303642",
"ring": "#c99232",
"chart-1": "#c85f72",
"chart-2": "#4f91a6",
"chart-3": "#c99232",
"chart-4": "#5f9f76",
"chart-5": "#c9823a",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#c85f72",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#c99232",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#c99232",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacd4-1685-7143-8c26-86dc0e9cc098",
"slug": "washi-tape-grid",
"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": [
"dotted_stamp",
"focus_tape",
"hairline",
"no_one_sided_on_rounded"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration_fast",
"duration_normal",
"duration_slow",
"easing_bounce",
"easing_default",
"easing_tape"
],
"radii": [
"none",
"pill",
"primary"
],
"shadows": [
"lg",
"md",
"sm",
"tape"
],
"spacing": [
"huge",
"lg",
"md",
"sm",
"unit",
"xl",
"xs",
"xxl"
],
"surfaces": [
"card",
"elevated",
"paper",
"tape_blue",
"tape_coral",
"tape_gold",
"tape_green"
],
"typography": [
"base_size",
"body_letter_spacing",
"body_line_height",
"display_letter_spacing",
"display_line_height",
"font_body",
"font_heading",
"font_mono",
"google_fonts_url",
"scale_ratio"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · washi-tape-grid
DESIGN.md
at a glance
Typography
headline-lgInter · 31px · 700
The quick brown fox jumps
headline-mdInter · 25px · 600
The quick brown fox jumps
body-mdInter · 16px · 400
The quick brown fox jumps
label-mdInter · 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
- huge96px
- lg24px
- md16px
- sm8px
- unit8px
- xl32px
- xs4px
- xxl48px
Shape
none0px
pill9999px
primary16px
shadcn/ui
implementation kit
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 tabletheme css
:root {
--background: #faf9f7;
--foreground: #2d2926;
--card: #ffffff;
--card-foreground: #2d2926;
--popover: #ffffff;
--popover-foreground: #2d2926;
--primary: #c85f72;
--primary-foreground: #ffffff;
--secondary: #4f91a6;
--secondary-foreground: #ffffff;
--muted: #8a847a;
--muted-foreground: #2d2926;
--accent: #c99232;
--accent-foreground: #ffffff;
--destructive: #b84a45;
--border: #e8e2d8;
--input: #e8e2d8;
--ring: #c99232;
--chart-1: #c85f72;
--chart-2: #4f91a6;
--chart-3: #c99232;
--chart-4: #5f9f76;
--chart-5: #c9823a;
--sidebar: #ffffff;
--sidebar-foreground: #2d2926;
--sidebar-primary: #c85f72;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #766aa3;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #e8e2d8;
--sidebar-ring: #c99232;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #c85f72;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #c99232;
--accent-foreground: #ffffff;
--destructive: #b84a45;
--border: #303642;
--input: #303642;
--ring: #c99232;
--chart-1: #c85f72;
--chart-2: #4f91a6;
--chart-3: #c99232;
--chart-4: #5f9f76;
--chart-5: #c9823a;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #c85f72;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #c99232;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #c99232;
--radius: 0.625rem;
}
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 WashiTapeGridShadcnKit() {
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">Washi Tape Grid</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": "washi-tape-grid",
"type": "registry:theme",
"title": "Washi Tape Grid shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#faf9f7",
"foreground": "#2d2926",
"card": "#ffffff",
"card-foreground": "#2d2926",
"popover": "#ffffff",
"popover-foreground": "#2d2926",
"primary": "#c85f72",
"primary-foreground": "#ffffff",
"secondary": "#4f91a6",
"secondary-foreground": "#ffffff",
"muted": "#8a847a",
"muted-foreground": "#2d2926",
"accent": "#c99232",
"accent-foreground": "#ffffff",
"destructive": "#b84a45",
"border": "#e8e2d8",
"input": "#e8e2d8",
"ring": "#c99232",
"chart-1": "#c85f72",
"chart-2": "#4f91a6",
"chart-3": "#c99232",
"chart-4": "#5f9f76",
"chart-5": "#c9823a",
"sidebar": "#ffffff",
"sidebar-foreground": "#2d2926",
"sidebar-primary": "#c85f72",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#766aa3",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#e8e2d8",
"sidebar-ring": "#c99232",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#c85f72",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#c99232",
"accent-foreground": "#ffffff",
"destructive": "#b84a45",
"border": "#303642",
"input": "#303642",
"ring": "#c99232",
"chart-1": "#c85f72",
"chart-2": "#4f91a6",
"chart-3": "#c99232",
"chart-4": "#5f9f76",
"chart-5": "#c9823a",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#c85f72",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#c99232",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#c99232",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacd4-1685-7143-8c26-86dc0e9cc098",
"slug": "washi-tape-grid",
"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": [
"dotted_stamp",
"focus_tape",
"hairline",
"no_one_sided_on_rounded"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration_fast",
"duration_normal",
"duration_slow",
"easing_bounce",
"easing_default",
"easing_tape"
],
"radii": [
"none",
"pill",
"primary"
],
"shadows": [
"lg",
"md",
"sm",
"tape"
],
"spacing": [
"huge",
"lg",
"md",
"sm",
"unit",
"xl",
"xs",
"xxl"
],
"surfaces": [
"card",
"elevated",
"paper",
"tape_blue",
"tape_coral",
"tape_gold",
"tape_green"
],
"typography": [
"base_size",
"body_letter_spacing",
"body_line_height",
"display_letter_spacing",
"display_line_height",
"font_body",
"font_heading",
"font_mono",
"google_fonts_url",
"scale_ratio"
]
}
}
}
component recipescompatibility fallback
# Washi Tape Grid shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dacd4-1685-7143-8c26-86dc0e9cc098`
Slug: `washi-tape-grid`
## Intent
Inspired by Hobonichi Techo planners and Japanese stationery culture, Washi Tape Grid bridges analog craft and digital UI. The interface feels like a beautifully decorated planner page — colorful washi tape strips serve as section dividers and category markers, dot grid backgrounds provide structure, and stamp-like badges mark status. It is functional craft: organized but playful, precise but warm.
## 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": "#c99232",
"background": "#faf9f7",
"border": "#e8e2d8",
"error": "#b84a45",
"info": "#766aa3",
"muted": "#8a847a",
"primary": "#c85f72",
"secondary": "#4f91a6",
"success": "#5f9f76",
"surface": "#ffffff",
"text": "#2d2926",
"warning": "#c9823a"
}
Typography:
{
"base_size": "16px",
"body_letter_spacing": "-0.02em",
"body_line_height": "1.55",
"display_letter_spacing": "-0.035em",
"display_line_height": "1.12",
"font_body": "Atkinson Hyperlegible",
"font_heading": "Nunito",
"font_mono": "JetBrains Mono",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=JetBrains+Mono:wght@500;700&family=Nunito:wght@700;800;900&display=swap",
"scale_ratio": "1.2"
}
## Visual character to preserve
- Cream paper canvas uses a low-contrast 20px dot grid via repeating-radial-gradient, giving every screen a Hobonichi planner texture without harming readability.
- Cards use one committed 16px rounded paper radius, warm hairline borders, and small warm shadows so panels feel like layered stationery sheets on a desk.
- Functional washi tape strips appear as full-width translucent category bars on section headers and cards, using color to encode journal categories rather than decoration.
- Stamp badges use dotted borders, uppercase mono text, and a controlled -1.5deg rotation to create the signed-and-dated planner mark while staying legible.
- Sticker status dots and checkbox chips use small rounded color markers paired with labels, making state feel handmade while preserving accessibility.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "still",
"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/washi-tape-grid/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 washi tape strips as functional dividers between content sections with category-meaningful colors; Apply dot grid background pattern on main surfaces to establish the planner aesthetic; Use stamp badges with slight rotation for status indicators and date marks; Assign consistent tape colors to categories throughout the interface; Keep generous padding inside cards to maintain the planner-page breathing room; Use Nunito for headings to maintain the friendly rounded character; Apply bouncy easing (cubic-bezier 0.34, 1.56, 0.64, 1) for interactive feedback; Use sticker-dot status indicators (8-10px colored circles) for state; Layer elements with subtle shadows to create the paper-on-desk depth; Include semi-transparent tape strips at 0.7 opacity for authentic washi feel
- Do not: Never use sharp corners — everything should feel rounded like craft paper; Avoid pure black text — use the dark pencil color #2d2926 instead; Do not overuse rotation — reserve it for stamp badges only, max -2deg; Never stack more than 3 tape colors in adjacent proximity; Avoid heavy drop shadows — keep them warm and paper-like; Do not use washi tape purely decoratively — each strip must mark a category or section; Never make the dot grid background too prominent — keep at 0.15 opacity; Avoid clinical white backgrounds — always use the cream paper #faf9f7 for canvas; Do not use generic gray for muted elements — use the warm pencil tone #8a847a
## 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 WashiTapeGridShadcnKit() {
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">Washi Tape Grid</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
Defined by the Katagami source fields.
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-019dacd4-1685-7143-8c26-86dc0e9cc098",
"name": "Washi Tape Grid",
"slug": "washi-tape-grid"
},
"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": [
"Cream paper canvas uses a low-contrast 20px dot grid via repeating-radial-gradient, giving every screen a Hobonichi planner texture without harming readability.",
"Cards use one committed 16px rounded paper radius, warm hairline borders, and small warm shadows so panels feel like layered stationery sheets on a desk.",
"Functional washi tape strips appear as full-width translucent category bars on section headers and cards, using color to encode journal categories rather than decoration.",
"Stamp badges use dotted borders, uppercase mono text, and a controlled -1.5deg rotation to create the signed-and-dated planner mark while staying legible.",
"Sticker status dots and checkbox chips use small rounded color markers paired with labels, making state feel handmade while preserving accessibility."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "still",
"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": "Washi Tape Grid 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 washi tape strips as functional dividers between content sections with category-meaningful colors",
"Apply dot grid background pattern on main surfaces to establish the planner aesthetic",
"Use stamp badges with slight rotation for status indicators and date marks",
"Assign consistent tape colors to categories throughout the interface",
"Keep generous padding inside cards to maintain the planner-page breathing room",
"Use Nunito for headings to maintain the friendly rounded character",
"Apply bouncy easing (cubic-bezier 0.34, 1.56, 0.64, 1) for interactive feedback",
"Use sticker-dot status indicators (8-10px colored circles) for state",
"Layer elements with subtle shadows to create the paper-on-desk depth",
"Include semi-transparent tape strips at 0.7 opacity for authentic washi feel"
],
"dont": [
"Never use sharp corners — everything should feel rounded like craft paper",
"Avoid pure black text — use the dark pencil color #2d2926 instead",
"Do not overuse rotation — reserve it for stamp badges only, max -2deg",
"Never stack more than 3 tape colors in adjacent proximity",
"Avoid heavy drop shadows — keep them warm and paper-like",
"Do not use washi tape purely decoratively — each strip must mark a category or section",
"Never make the dot grid background too prominent — keep at 0.15 opacity",
"Avoid clinical white backgrounds — always use the cream paper #faf9f7 for canvas",
"Do not use generic gray for muted elements — use the warm pencil tone #8a847a"
]
}
}
related
More like this
Buncho Scrapbookshares japanese-ma · paper-texture · asymmetric-spaceBungu Minimalshares japanese-ma · paper-texture · asymmetric-spaceFusen Boardshares japanese-ma · paper-texture · asymmetric-spaceInk Wash Motionshares japanese-ma · paper-texture · asymmetric-spaceJapanese Stationery Grid Systemshares japanese-ma · paper-texture · asymmetric-spaceKukan Press Gridshares japanese-ma · paper-texture · asymmetric-space