Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Reading-first asymmetry with discipline: a slim milky rail, a narrow article measure, and supporting surface cards. Hero copy is left-aligned over the calm milky third of the image. Chips and metadata align to text baselines, never float decoratively. Mobile collapses to one clear reading sequence.
Build hierarchy from type scale, weight, line length, and air first. One dew bead (lychee, soda, or mint) marks the single active item, status, or highlight per section. Long-form text always receives the highest contrast. Primary action is one quiet filled lychee pill; secondary actions are quiet milky or text controls.
Airy editorial density with generous gutters and quiet pauses, about 64-96px desktop section spacing. Many data points are allowed only when grouped into soft editorial sections with clear labels.
Dewline cards (warm hairline + white inset highlight, no cast shadow); candy bead anchor (one glossy bead beside a single label, the reserved ornament); milky reading rail (a quiet index with a single blush marker); soda-rule hierarchy (pale soda hairlines and blush markers replace heavy dividers, tabs, and filled panels).
Desktop: a 1180px max-width frame with a slim reading rail (~200px), a narrow article measure, and a supporting surface column (~300px), 24-34px gutters. Tablet collapses the rail; mobile is a single column with preserved 18-24px page margins.
Whitespace is the primary material. Leave large warm off-white fields around headings, between groups, and inside cards; never fill empty space with illustrations or blobs.
Airy: quiet pauses and a readable sequence rather than visual abundance.
On smaller viewports the rail hides or becomes a quiet horizontal index, support cards follow the article, the table drops non-essential columns, and the dew bead stays small so it never competes with text.
sirop
Flat opaque gouache poster prints in a risograph register: hard-stop areas of uniform colour, fine paper grain, glossy round bead highlights, no gradients. Subjects are fresh soda-house still lifes on warm milky paper.
One full-bleed hero per landing, with calm negative space reserved where an overlay sits; feature splits may reuse the hero image.
# Shizuku ## Philosophy Shizuku is a reading-first editorial Katagami language for fresh, dew-bright product and editorial interfaces. It sets the screen as a milky sheet of stationery: warm off-white air carries the work, typography explains the system, and a single dew bead of lychee, soda, or mint marks the one thing that matters in a view. Sweetness arrives in single drops, never a pastel flood; the bead is reserved as the one ornament, never stamped wall to wall. The mood is youthful and gentle, but disciplined, modular, and MUJI-like. ### Values - Reading before decoration — type, measure, and air explain the system before any accent appears. - Milky purity — warm white tonal shifts feel fresh and uncoated rather than sterile. - Controlled sweetness — lychee, soda, and mint appear as single functional drops, never a full pastel palette. - Material honesty — dew, film, and thin packaging suggested through borders, inset light, and tone, not fake heavy glass. - Youthful calm — fresh and gentle, but structure stays disciplined and modular. ### Anti-Values - Rainbow gradients, neon glow, or any palette that turns freshness into spectacle. - Toy-like childishness: oversized bubbles, gummy shadows, stickers, mascots, confetti. - Generic pastel SaaS: equal lavender cards, stock dashboard rhythm, decorative blobs. - Blurred illegibility: body text on busy transparency or low-contrast candy colour. - Bead-as-wallpaper: the signature ornament stamped on every element until it loses meaning. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#FBF8F1` | | surface | `#FFFDF8` | | text | `#3A3833` | | muted | `#6F6257` | | border | `#ECE4D7` | | accent | `#C2667A` | | on_accent | `#FFFDF8` | | success | `#4E9277` | | warning | `#C08A3E` | | error | `#C56A66` | | info | `#5C93AD` | | lychee | `#DFA9B4` | | lychee_deep | `#B0596C` | | soda | `#BFDCEB` | | soda_deep | `#3D7C99` | | mint | `#C9E4D2` | | mint_deep | `#3C7A5E` | | recess | `#F4EFE5` | ### Typography - **Base Size**: 17px - **Body Font**: Sarabun - **Heading Font**: Fraunces - **Mono Font**: IBM Plex Mono - **Heading Weight**: 600 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Sarabun:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap ### Radii - **None**: 0 - **Sm**: 16px - **Md**: 24px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 0 1px 0 rgba(255,255,255,0.92) inset, 0 1px 2px rgba(58,56,51,0.04) - **Md**: 0 1px 0 rgba(255,255,255,0.95) inset, 0 10px 26px rgba(58,56,51,0.055) - **Lg**: 0 1px 0 rgba(255,255,255,0.98) inset, 0 20px 48px rgba(58,56,51,0.07) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Treatment**: tone-based milky containers: #FFFDF8 milk over #FBF8F1 paper with a white inset top highlight; all readable text on solid warm surfaces, never over transparency or candy colour. - **Card Style**: dewline card: 1px warm rice-paper border, 24px radius, white inset dew highlight, no cast shadow and no single accent edge; an optional single dew bead anchored to one corner. - **Bg Pattern**: warm milky paper with at most a faint editorial ruling and a few 1px dew glints; never a full decorative pattern or pastel wash. ### Borders - **Default Width**: 1px - **Accent Width**: 1px - **Style**: solid - **Character**: warm translucent rice-paper hairlines; pale soda hairlines stand in for heavy dividers and rules ### Motion - **Duration**: 200ms - **Easing**: cubic-bezier(.2,.7,.2,1) - **Philosophy**: a small settling breath: opacity and a short translate only, no bouncing candy behaviour; the settled page renders with no JavaScript and animation is layered on top behind an inline-script class; reduced-motion users get instant state changes. ## Rules ### Composition Reading-first asymmetry with discipline: a slim milky rail, a narrow article measure, and supporting surface cards. Hero copy is left-aligned over the calm milky third of the image. Chips and metadata align to text baselines, never float decoratively. Mobile collapses to one clear reading sequence. ### Hierarchy Build hierarchy from type scale, weight, line length, and air first. One dew bead (lychee, soda, or mint) marks the single active item, status, or highlight per section. Long-form text always receives the highest contrast. Primary action is one quiet filled lychee pill; secondary actions are quiet milky or text controls. ### Density Airy editorial density with generous gutters and quiet pauses, about 64-96px desktop section spacing. Many data points are allowed only when grouped into soft editorial sections with clear labels. ### Signature Dewline cards (warm hairline + white inset highlight, no cast shadow); candy bead anchor (one glossy bead beside a single label, the reserved ornament); milky reading rail (a quiet index with a single blush marker); soda-rule hierarchy (pale soda hairlines and blush markers replace heavy dividers, tabs, and filled panels). ## Layout ### Grid Desktop: a 1180px max-width frame with a slim reading rail (~200px), a narrow article measure, and a supporting surface column (~300px), 24-34px gutters. Tablet collapses the rail; mobile is a single column with preserved 18-24px page margins. ### Whitespace Whitespace is the primary material. Leave large warm off-white fields around headings, between groups, and inside cards; never fill empty space with illustrations or blobs. ### Density Airy: quiet pauses and a readable sequence rather than visual abundance. ### Responsive On smaller viewports the rail hides or becomes a quiet horizontal index, support cards follow the article, the table drops non-essential columns, and the dew bead stays small so it never competes with text. ### Breakpoints - **Mobile**: <= 640px - **Tablet**: 641-980px - **Desktop**: >= 981px - **Frame Max**: 1180px (1320px on ultra-wide) ## Guidance ### Do - Start with editorial typography on warm milky white before adding any accent colour. - Use lychee blush for the one primary or active moment, soda blue for information and focus, mint for small success or freshness cues. - Keep translucent material at edges, chips, and the single dew bead while placing all text on solid milky surfaces. - Prefer 1px warm hairlines, inset white highlights, and tonal layers over cast shadows. - Use generous line-height, narrow reading measures, and aligned metadata to reinforce editorial structure. - Let empty space remain empty; the absence of ornament is part of the sweetness. - Use pills and 24px cards consistently (inputs at 16px), avoiding arbitrary radii. ### Don't - Do not use rainbow palettes, neon gradients, or loud multicolour backgrounds. - Do not give a card a single accent edge, or add heavy drop shadows or black glass. - Do not stamp the dew bead on every element until it becomes wallpaper. - Do not put body text over blur, transparency, images, or candy colour. - Do not default to generic pastel SaaS dashboards with many equal cards, or to flat clinical white and warm-cream washes. - Do not exceed three accent families: lychee, soda, and mint. ### Accessibility Maintain WCAG AA for text using #3A3833 or darker on milky surfaces. Treat blush, soda, and mint as supporting colour, never the sole information carrier — always pair with a label. Interactive targets are at least 44px high; focus uses a soft soda ring with offset; reduced-motion users receive instant state changes and the no-JS render shows the full settled page. ## Imagery Direction ### Pairs With sirop ### Summary Flat opaque gouache poster prints in a risograph register: hard-stop areas of uniform colour, fine paper grain, glossy round bead highlights, no gradients. Subjects are fresh soda-house still lifes on warm milky paper. ### Subjects - lychee fruit peeled and whole - a tall clear glass of pale soda with rising effervescence - translucent dew droplets and candy beads catching the light - mint leaves, calamansi, and yuzu citrus cues ### Usage One full-bleed hero per landing, with calm negative space reserved where an overlay sits; feature splits may reuse the hero image.
---
version: "alpha"
name: "Shizuku"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#FBF8F1"
surface: "#FFFDF8"
text: "#3A3833"
muted: "#6F6257"
border: "#ECE4D7"
accent: "#C2667A"
on_accent: "#FFFDF8"
success: "#4E9277"
warning: "#C08A3E"
error: "#C56A66"
info: "#5C93AD"
lychee: "#DFA9B4"
lychee_deep: "#B0596C"
soda: "#BFDCEB"
soda_deep: "#3D7C99"
mint: "#C9E4D2"
mint_deep: "#3C7A5E"
recess: "#F4EFE5"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Sarabun"
fontSize: "17px"
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:
none: "0px"
sm: "16px"
md: "24px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-lychee:
backgroundColor: "{colors.lychee}"
color-reference-lychee_deep:
backgroundColor: "{colors.lychee_deep}"
color-reference-soda:
backgroundColor: "{colors.soda}"
color-reference-soda_deep:
backgroundColor: "{colors.soda_deep}"
color-reference-mint:
backgroundColor: "{colors.mint}"
color-reference-mint_deep:
backgroundColor: "{colors.mint_deep}"
color-reference-recess:
backgroundColor: "{colors.recess}"
button-primary:
backgroundColor: "{colors.accent}"
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"
---
# Shizuku
## Overview
Shizuku is a reading-first editorial Katagami language for fresh, dew-bright product and editorial interfaces. It sets the screen as a milky sheet of stationery: warm off-white air carries the work, typography explains the system, and a single dew bead of lychee, soda, or mint marks the one thing that matters in a view. Sweetness arrives in single drops, never a pastel flood; the bead is reserved as the one ornament, never stamped wall to wall. The mood is youthful and gentle, but disciplined, modular, and MUJI-like.
### Values
- Reading before decoration — type, measure, and air explain the system before any accent appears.
- Milky purity — warm white tonal shifts feel fresh and uncoated rather than sterile.
- Controlled sweetness — lychee, soda, and mint appear as single functional drops, never a full pastel palette.
- Material honesty — dew, film, and thin packaging suggested through borders, inset light, and tone, not fake heavy glass.
- Youthful calm — fresh and gentle, but structure stays disciplined and modular.
### Anti-Values
- Rainbow gradients, neon glow, or any palette that turns freshness into spectacle.
- Toy-like childishness: oversized bubbles, gummy shadows, stickers, mascots, confetti.
- Generic pastel SaaS: equal lavender cards, stock dashboard rhythm, decorative blobs.
- Blurred illegibility: body text on busy transparency or low-contrast candy colour.
- Bead-as-wallpaper: the signature ornament stamped on every element until it loses meaning.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| bg | `#FBF8F1` |
| surface | `#FFFDF8` |
| text | `#3A3833` |
| muted | `#6F6257` |
| border | `#ECE4D7` |
| accent | `#C2667A` |
| on_accent | `#FFFDF8` |
| success | `#4E9277` |
| warning | `#C08A3E` |
| error | `#C56A66` |
| info | `#5C93AD` |
| lychee | `#DFA9B4` |
| lychee_deep | `#B0596C` |
| soda | `#BFDCEB` |
| soda_deep | `#3D7C99` |
| mint | `#C9E4D2` |
| mint_deep | `#3C7A5E` |
| recess | `#F4EFE5` |
## Typography
- **Headline-Lg**: Fraunces, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Sarabun, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Grid
Desktop: a 1180px max-width frame with a slim reading rail (~200px), a narrow article measure, and a supporting surface column (~300px), 24-34px gutters. Tablet collapses the rail; mobile is a single column with preserved 18-24px page margins.
### Whitespace
Whitespace is the primary material. Leave large warm off-white fields around headings, between groups, and inside cards; never fill empty space with illustrations or blobs.
### Density
Airy: quiet pauses and a readable sequence rather than visual abundance.
### Responsive
On smaller viewports the rail hides or becomes a quiet horizontal index, support cards follow the article, the table drops non-essential columns, and the dew bead stays small so it never competes with text.
### Breakpoints
- **Mobile**: <= 640px
- **Tablet**: 641-980px
- **Desktop**: >= 981px
- **Frame Max**: 1180px (1320px on ultra-wide)
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(255,255,255,0.92) inset, 0 1px 2px rgba(58,56,51,0.04)
- **Md**: 0 1px 0 rgba(255,255,255,0.95) inset, 0 10px 26px rgba(58,56,51,0.055)
- **Lg**: 0 1px 0 rgba(255,255,255,0.98) inset, 0 20px 48px rgba(58,56,51,0.07)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `16px`
- **Md**: `24px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: tone-based milky containers: #FFFDF8 milk over #FBF8F1 paper with a white inset top highlight; all readable text on solid warm surfaces, never over transparency or candy colour.
- **Card Style**: dewline card: 1px warm rice-paper border, 24px radius, white inset dew highlight, no cast shadow and no single accent edge; an optional single dew bead anchored to one corner.
- **Bg Pattern**: warm milky paper with at most a faint editorial ruling and a few 1px dew glints; never a full decorative pattern or pastel wash.
### Borders
- **Default Width**: 1px
- **Accent Width**: 1px
- **Style**: solid
- **Character**: warm translucent rice-paper hairlines; pale soda hairlines stand in for heavy dividers and rules
## Components
### Composition
Reading-first asymmetry with discipline: a slim milky rail, a narrow article measure, and supporting surface cards. Hero copy is left-aligned over the calm milky third of the image. Chips and metadata align to text baselines, never float decoratively. Mobile collapses to one clear reading sequence.
### Hierarchy
Build hierarchy from type scale, weight, line length, and air first. One dew bead (lychee, soda, or mint) marks the single active item, status, or highlight per section. Long-form text always receives the highest contrast. Primary action is one quiet filled lychee pill; secondary actions are quiet milky or text controls.
### Density
Airy editorial density with generous gutters and quiet pauses, about 64-96px desktop section spacing. Many data points are allowed only when grouped into soft editorial sections with clear labels.
### Signature
Dewline cards (warm hairline + white inset highlight, no cast shadow); candy bead anchor (one glossy bead beside a single label, the reserved ornament); milky reading rail (a quiet index with a single blush marker); soda-rule hierarchy (pale soda hairlines and blush markers replace heavy dividers, tabs, and filled panels).
## 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-019ef705-26e1-7dc1-a57d-312385ea4137/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 Start with editorial typography on warm milky white before adding any accent colour.
- Do Use lychee blush for the one primary or active moment, soda blue for information and focus, mint for small success or freshness cues.
- Do Keep translucent material at edges, chips, and the single dew bead while placing all text on solid milky surfaces.
- Do Prefer 1px warm hairlines, inset white highlights, and tonal layers over cast shadows.
- Do Use generous line-height, narrow reading measures, and aligned metadata to reinforce editorial structure.
- Do Let empty space remain empty; the absence of ornament is part of the sweetness.
- Do Use pills and 24px cards consistently (inputs at 16px), avoiding arbitrary radii.
- Don't Do not use rainbow palettes, neon gradients, or loud multicolour backgrounds.
- Don't Do not give a card a single accent edge, or add heavy drop shadows or black glass.
- Don't Do not stamp the dew bead on every element until it becomes wallpaper.
- Don't Do not put body text over blur, transparency, images, or candy colour.
- Don't Do not default to generic pastel SaaS dashboards with many equal cards, or to flat clinical white and warm-cream washes.
- Don't Do not exceed three accent families: lychee, soda, and mint.
### Accessibility
Maintain WCAG AA for text using #3A3833 or darker on milky surfaces. Treat blush, soda, and mint as supporting colour, never the sole information carrier — always pair with a label. Interactive targets are at least 44px high; focus uses a soft soda ring with offset; reduced-motion users receive instant state changes and the no-JS render shows the full settled page.
## Imagery Direction
### Pairs With
sirop
### Summary
Flat opaque gouache poster prints in a risograph register: hard-stop areas of uniform colour, fine paper grain, glossy round bead highlights, no gradients. Subjects are fresh soda-house still lifes on warm milky paper.
### Subjects
- lychee fruit peeled and whole
- a tall clear glass of pale soda with rising effervescence
- translucent dew droplets and candy beads catching the light
- mint leaves, calamansi, and yuzu citrus cues
### Usage
One full-bleed hero per landing, with calm negative space reserved where an overlay sits; feature splits may reuse the hero image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "shizuku",
"type": "registry:theme",
"title": "Shizuku shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FBF8F1",
"foreground": "#3A3833",
"card": "#FFFDF8",
"card-foreground": "#3A3833",
"popover": "#FFFDF8",
"popover-foreground": "#3A3833",
"primary": "#3A3833",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6F6257",
"muted-foreground": "#3A3833",
"accent": "#C2667A",
"accent-foreground": "#ffffff",
"destructive": "#C56A66",
"border": "#ECE4D7",
"input": "#ECE4D7",
"ring": "#C2667A",
"chart-1": "#3A3833",
"chart-2": "#f4f4f5",
"chart-3": "#C2667A",
"chart-4": "#4E9277",
"chart-5": "#C08A3E",
"sidebar": "#FFFDF8",
"sidebar-foreground": "#3A3833",
"sidebar-primary": "#3A3833",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5C93AD",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#ECE4D7",
"sidebar-ring": "#C2667A",
"radius": "24px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#3A3833",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#C2667A",
"accent-foreground": "#ffffff",
"destructive": "#C56A66",
"border": "#303642",
"input": "#303642",
"ring": "#C2667A",
"chart-1": "#3A3833",
"chart-2": "#f4f4f5",
"chart-3": "#C2667A",
"chart-4": "#4E9277",
"chart-5": "#C08A3E",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#3A3833",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#C2667A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#C2667A",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef705-26e1-7dc1-a57d-312385ea4137",
"slug": "shizuku",
"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": {
"colors": [
"accent",
"bg",
"border",
"error",
"info",
"lychee",
"lychee_deep",
"mint",
"mint_deep",
"muted",
"on_accent",
"recess",
"soda",
"soda_deep",
"success",
"surface",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"mono_font"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Shizukuand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.
A soda-house desk where every batch is registered to the shelf by rank: fresh, settling, shelved, holding.
A bottling slip proving mono labels, an invalid pressure state, a carry toggle, a chill slider, and a bottle confirm.
A compact queue with rows, menus, tooltips, status chips, and a holding affordance.
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.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #FBF8F1;
--foreground: #3A3833;
--card: #FFFDF8;
--card-foreground: #3A3833;
--popover: #FFFDF8;
--popover-foreground: #3A3833;
--primary: #3A3833;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6F6257;
--muted-foreground: #3A3833;
--accent: #C2667A;
--accent-foreground: #ffffff;
--destructive: #C56A66;
--border: #ECE4D7;
--input: #ECE4D7;
--ring: #C2667A;
--chart-1: #3A3833;
--chart-2: #f4f4f5;
--chart-3: #C2667A;
--chart-4: #4E9277;
--chart-5: #C08A3E;
--sidebar: #FFFDF8;
--sidebar-foreground: #3A3833;
--sidebar-primary: #3A3833;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #5C93AD;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #ECE4D7;
--sidebar-ring: #C2667A;
--radius: 24px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #3A3833;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #C2667A;
--accent-foreground: #ffffff;
--destructive: #C56A66;
--border: #303642;
--input: #303642;
--ring: #C2667A;
--chart-1: #3A3833;
--chart-2: #f4f4f5;
--chart-3: #C2667A;
--chart-4: #4E9277;
--chart-5: #C08A3E;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #3A3833;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #C2667A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #C2667A;
--radius: 24px;
}
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 ShizukuShadcnKit() {
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">Shizuku</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": "shizuku",
"type": "registry:theme",
"title": "Shizuku",
"description": "Reading-first editorial soda interface. Warm milky paper ground, warm ink, and three soda accents poured like refracted candy — a lychee-blush primary, a soda-blue action, a mint success. Fraunces display + Sarabun body; pill and 24px-card geometry; a warm rice-paper hairline and a white inset dew highlight stand in for shadow; one glossy dew bead is the single ornament.",
"cssVars": {
"theme": {
"font-sans": "Sarabun, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"font-display": "Fraunces, Iowan Old Style, Georgia, serif",
"font-heading": "Fraunces, Iowan Old Style, Georgia, serif",
"radius": "24px"
},
"light": {
"background": "#FBF8F1",
"foreground": "#3A3833",
"card": "#FFFDF8",
"card-foreground": "#3A3833",
"popover": "#FFFDF8",
"popover-foreground": "#3A3833",
"primary": "#C2667A",
"primary-foreground": "#FFFDF8",
"secondary": "#F4EFE5",
"secondary-foreground": "#3A3833",
"accent": "#5C93AD",
"accent-foreground": "#FFFDF8",
"muted": "#F4EFE5",
"muted-foreground": "#6F6257",
"destructive": "#C56A66",
"destructive-foreground": "#FFFDF8",
"success": "#4E9277",
"warning": "#C08A3E",
"border": "#ECE4D7",
"input": "#F4EFE5",
"ring": "#5C93AD",
"radius": "24px"
}
}
}
# Shizuku shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-agent`
Slug: `shizuku`
## Intent
Shizuku is a reading-first editorial soda language. Through shadcn/ui its one governing idea —
**sweetness in single drops** — must survive: importance is registered with a single glossy dew
bead beside a label, never a louder colour, a heavier box, or a stamped pattern of beads. The
ground is warm milky paper (`#FBF8F1` over `#FFFDF8` milk), never flat clinical white; type is
Fraunces (display) over Sarabun (body) with IBM Plex Mono for counts and slugs. The accents are
**lychee blush** (the primary pill), **soda blue** (the action / focus), and **mint** (success) —
each poured like refracted candy, never a full pastel flood. Cards are dewline cards: a warm
rice-paper hairline plus a white inset top highlight lift them with no cast shadow and no single
accent edge. Pills and 24px cards; inputs at 16px. Light mode is the point.
## 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:
```json
{ "primary": "#C2667A", "accent": "#5C93AD", "background": "#FBF8F1", "surface": "#FFFDF8", "text": "#3A3833", "muted": "#6F6257", "recess": "#F4EFE5", "success": "#4E9277", "warning": "#C08A3E", "error": "#C56A66", "info": "#5C93AD", "lychee": "#DFA9B4", "soda": "#BFDCEB", "mint": "#C9E4D2", "border": "#ECE4D7" }
```
Typography:
```json
{ "heading_font": "Fraunces", "body_font": "Sarabun", "mono_font": "IBM Plex Mono", "letter_spacing": "-0.02em", "base_size": "17px" }
```
## Visual character to preserve
- The **dew bead**: a focal block carries one glossy translucent bead (lychee, soda, or mint)
beside a single label — freshness read as a single drop, never a stamped pattern.
- **No cast shadow, no accent edge.** Dewline cards are milky, 24px-radius, lifted by a warm
rice-paper hairline plus a white inset top highlight; never a single top/side/bottom accent edge.
- **Pill + 24px-card geometry** (inputs at 16px); soda hairlines and blush markers replace heavy
dividers; the only ground is warm milky paper, never flat white or warm cream.
- Editorial voice: Fraunces display, natural case, `-0.02em` tracking; Sarabun body; IBM Plex Mono
for slugs, counts, pressures, and times.
## ShadSync visual profile
```json
{ "family": "editorial", "material": "paper", "contour": "soft", "border": "hairline", "underlay": false, "grain": false, "stickerBadges": false, "motion": "subtle", "density": "airy", "accents": ["primary", "accent", "success"] }
```
## Signature component recipes
### Button
Primary `Button` = `--primary` (lychee blush) pill on milky paper — the one emphasis; a secondary
variant is a quiet milky/hairline control; link is soda blue. No accent edge; pill radius;
disabled is a flat milky-recess plaque. Buttons in a set share one height and shape, label centred.
### Card
`Card` is a dewline card — milky surface, warm rice-paper hairline, white inset top highlight, 24px
radius, lifted with no cast shadow. A focal card carries one dew bead at a corner; never a single
accent edge, never nested cards.
### Input and Textarea
`Input` / `Textarea` sit on the milky recess (16px radius); focus draws a soda-blue border with a
soft tint ring; an invalid field draws a watermelon-rust border with a rust ring. Mono labels above.
### Select, Tabs, and Table
`Select` filters desks; `Tabs` switch Morning / Noon / Evening with the active leaf lifted on the
surface and marked by a single blush bead; `Table` is the cellar ledger — mono header, Fraunces
slug names, quiet milky zebra (never cream), one status `Badge` per row, a holding empty state, and
pale soda hairlines instead of rules.
### Dialog and Sheet
`Dialog` is a calm notice ("Bottle this batch?") — centred, 24px radius, generous; `Sheet` is the
batch-edit side rail. Both milky, warm hairline, no heavy shadow.
### Badge, Switch, Slider, Tooltip, Separator, Checkbox, Dropdown-menu
`Badge` is a flat status chip on a faint tint (lychee / soda / mint). `Switch` "on" is mint.
`Slider` is a lychee or soda track with a round milky thumb. `Tooltip` is concise Sarabun.
`Separator` is open milky space or a pale soda hairline — never a heavy rule across a card.
`Checkbox` and `dropdown-menu` carry a soda-blue focus and one dew-bead marker.
## Preview shots
- `application-shell`: the morning pour desk — milky reading rail, dewline KPI cards with one bead each, the cellar ledger, a carbonation column chart.
- `detail-editor`: bottle a new batch — labelled fields, an invalid (rust) pressure state, a carry switch, a chill slider, a bottle confirm.
- `data-operations`: the settling queue — rows, dropdown actions, status chips, a holding state.
- Each preview shot carries a renderable `scene` (headline, description, actions, rows/fields/stats).
## Implementation contract
- Start from the local `@/components/ui/*` shadcn primitives; do not create a second component system.
- Apply `/katagami/shadcn/shizuku/registry-theme.json` variables first, then compose with these recipes.
- Keep Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: mark a focal element with one dew bead; keep the ground warm milky paper; reserve the blush
pill for the one primary action; separate by air, the recess surface, a warm hairline, and an
inset highlight.
- Do not: give a card a single accent edge; add a heavy drop shadow or black glass; stamp the bead
on everything; nest cards; default to flat white or warm-cream surfaces.
## Copy-paste component example
This shows the import shape and a real Shizuku 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";
// A batch card: milky, 24px radius, a warm hairline + inset dew highlight (no cast shadow,
// no accent edge); one glossy dew bead marks the focal batch; mono caption for the slug.
export function BatchCard() {
return (
<Card className="relative rounded-3xl border border-[#ECE4D7] bg-card text-card-foreground shadow-[0_1px_0_rgba(255,255,255,0.95)_inset,0_10px_26px_rgba(58,56,51,0.055)]">
<span
aria-hidden
className="absolute right-6 top-6 size-3.5 rounded-full bg-[#DFA9B4]
shadow-[0_1px_0_rgba(255,255,255,0.9)_inset,0_2px_5px_rgba(176,89,108,0.28)]
[background-image:radial-gradient(circle_at_34%_30%,#fff_0_16%,transparent_40%)]"
/>
<CardHeader>
<Badge className="w-fit rounded-full bg-[#FBEFF1] text-[#B0596C]">Fresh</Badge>
<CardTitle className="mt-2 font-[var(--font-display)] text-2xl tracking-tight">
Lychee morning · 14
</CardTitle>
<CardDescription className="font-mono text-xs uppercase tracking-wide">
Tasting room · 3.4 bar · 12 °C
</CardDescription>
</CardHeader>
<CardContent>
<p className="text-base text-muted-foreground">
Bright lychee on the nose, a clean soda finish, one drop of mint to close.
</p>
</CardContent>
<CardFooter className="justify-between">
<span className="font-mono text-xs text-muted-foreground">Batch 14</span>
<Button className="rounded-full">Bottle the batch</Button>
</CardFooter>
</Card>
);
}
```
## Layout notes
```json
{ "grid": "editorial reading-first; a slim milky rail, a narrow article measure, supporting surface cards; airy gutters", "density": "airy; quiet pauses, strong page-edge margins", "radii": "16 (inputs) / 24 (cards) / 9999 (pills)", "no_accent_edge": true, "separators": "air, the milky recess surface, a warm rice-paper hairline, a white inset highlight, a pale soda hairline, one dew bead" }
```
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"author": "katagami-agent",
"generatedBy": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": { "id": "", "name": "Shizuku", "slug": "shizuku" },
"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": [
"Sweetness in single drops — a focal element carries one glossy dew bead beside its label, never a stamped pattern of beads.",
"No cast shadow: dewline cards are lifted by a warm rice-paper hairline plus a white inset top highlight; never give a card a single accent edge.",
"Warm milky paper ground (never flat white), Fraunces display + Sarabun body; lychee blush is the primary pill, soda blue the action, mint the success; pills and 24px cards, square inputs at 16px radius."
],
"visualProfile": {
"family": "editorial",
"material": "paper",
"contour": "soft",
"border": "hairline",
"underlay": false,
"grain": false,
"stickerBadges": false,
"motion": "subtle",
"density": "airy",
"accents": ["primary", "accent", "success"]
},
"shots": [
{
"id": "application-shell",
"title": "The morning pour desk",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "A reading-first soda-house desk: a milky reading rail with a single blush active marker, dewline KPI cards each anchored by one dew bead, a filter row, and the cellar ledger with one status chip per row and a carbonation column chart.",
"mustShow": ["lychee-blush primary pill vs quiet milky secondary", "dewline cards lifted by a warm hairline + inset highlight (no cast shadow, no accent edge)", "lychee + soda + mint status chips on faint tints", "the cellar ledger separated by pale soda hairlines, not heavy rules"],
"avoid": ["a single accent edge on any card", "heavy drop shadows or black glass", "flat clinical white ground or warm-cream washes", "beads stamped on every element"],
"scene": {
"eyebrow": "the pour",
"headline": "The morning pour",
"description": "A soda-house desk where every batch is registered to the shelf by rank: fresh, settling, shelved, holding.",
"primaryAction": "Bottle a batch",
"secondaryAction": "Pressure log",
"stats": [
{ "label": "batches poured", "value": "28", "tone": "primary" },
{ "label": "in the cellar", "value": "6", "tone": "info" },
{ "label": "on the shelf", "value": "3", "tone": "success" }
],
"rows": [
{ "label": "Lychee morning · 14", "value": "Lychee soda · 3.4 bar · 12 °C", "status": "fresh" },
{ "label": "Calamansi · 13", "value": "Calamansi fizz · 3.1 bar · 11 °C", "status": "settling" },
{ "label": "Yuzu mint · 12", "value": "Yuzu mint · 3.6 bar · 10 °C", "status": "shelved" },
{ "label": "Plum spark · 11", "value": "Ume soda · holding", "status": "holding" }
],
"statuses": ["Fresh", "Settling", "Shelved", "Holding"]
}
},
{
"id": "detail-editor",
"title": "Bottle a new batch",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A bottling slip: mono-labelled fields on the milky recess, an invalid (watermelon-rust) pressure state, a carry-to-tomorrow switch, a chill slider, and a bottle-confirm dialog.",
"mustShow": ["soda-blue focus ring on inputs", "an invalid (rust) pressure state", "bottle-confirm dialog as a calm notice", "real soda-house values"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "heavy borders"],
"scene": {
"eyebrow": "bottling",
"headline": "Bottle — the lychee morning",
"description": "A bottling slip proving mono labels, an invalid pressure state, a carry toggle, a chill slider, and a bottle confirm.",
"primaryAction": "Bottle the batch",
"secondaryAction": "Save draft",
"fields": [
{ "label": "Batch name", "value": "Lychee morning, no. 14", "type": "text" },
{ "label": "Pressure (bar)", "value": "— set between 2 and 6 before bottling", "type": "invalid" },
{ "label": "Desk", "value": "Tasting room", "type": "select" },
{ "label": "Carry to tomorrow's pour", "value": "on", "type": "switch" }
],
"statuses": ["Fresh", "Invalid", "Carried"]
}
},
{
"id": "data-operations",
"title": "Settling queue",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow settling queue: stacked editorial rows, per-row dropdown actions, status chips, tooltips, and a holding state.",
"mustShow": ["responsive reflow to a single column", "editorial slug rows in Fraunces", "row action menu with one dew-bead marker", "status chips on faint tints", "a holding state"],
"avoid": ["desktop-only tables", "horizontal overflow", "generic shadcn spacing without Shizuku air"],
"scene": {
"eyebrow": "cellar",
"headline": "Settling queue",
"description": "A compact queue with rows, menus, tooltips, status chips, and a holding affordance.",
"primaryAction": "Bottle",
"secondaryAction": "Filter",
"rows": [
{ "label": "Calamansi · 13", "value": "Cellar", "status": "settling" },
{ "label": "Yuzu mint · 10", "value": "Cellar", "status": "fresh" },
{ "label": "Plum spark · 11", "value": "Cellar", "status": "holding" }
],
"statuses": ["Settling", "Fresh", "Holding"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Hierarchy: lychee-blush pill primary = the one emphasis; quiet milky/hairline secondary; soda-blue text link is navigational; pill shape, no accent edge, one shared height, label centred." },
{ "primitive": "card", "intent": "Dewline card: milky surface, warm rice-paper hairline, white inset top highlight, 24px radius, lifted with no cast shadow and no single accent edge; one focal card carries a single dew bead at a corner." },
{ "primitive": "input", "intent": "Milky recess fill, 16px radius; soda-blue border + soft tint ring on focus, watermelon-rust border + tint ring when invalid; mono label above." },
{ "primitive": "textarea", "intent": "Longer tasting notes with the same focus + invalid rhythm; Sarabun, generous, 16px radius." },
{ "primitive": "select", "intent": "Desk / flavour filtering with a styled chevron, milky recess trigger, clear selection contrast." },
{ "primitive": "dialog", "intent": "A calm 'Bottle this batch?' notice — centred, 24px radius, generous; warm hairline, no heavy shadow." },
{ "primitive": "sheet", "intent": "The batch / archive side rail for contextual editing on the milky surface." },
{ "primitive": "tabs", "intent": "Switch Morning / Noon / Evening; the active leaf lifts on the milky surface, marked by a single blush bead — not an underline rule." },
{ "primitive": "badge", "intent": "Flat status chip on a faint tint: fresh / settling / shelved / holding (lychee / soda / mint)." },
{ "primitive": "separator", "intent": "Open milky space or a pale soda hairline — never a heavy rule across a card." },
{ "primitive": "checkbox", "intent": "Opt-ins with a soda-blue checked state and a clear focus ring." },
{ "primitive": "switch", "intent": "Carry / settings toggle; on is mint, off is a flat milky-recess track." },
{ "primitive": "slider", "intent": "Chill / pressure with a lychee or soda track and a round milky thumb." },
{ "primitive": "tooltip", "intent": "Concise Sarabun notes above compact controls." },
{ "primitive": "dropdown-menu", "intent": "Per-row batch actions with one dew-bead marker and a destructive 'spike' item." },
{ "primitive": "table", "intent": "The cellar ledger: mono header, Fraunces slug rows, quiet milky zebra (never cream), a status chip per row, a holding empty state, pale soda hairlines instead of rules." }
],
"qualityRules": {
"do": [
"Mark a focal element with one glossy dew bead beside its label.",
"Keep the ground warm milky paper; reserve the blush pill for the one primary action.",
"Separate by air, the milky recess surface, a warm hairline, and a white inset highlight.",
"Set slugs, counts, pressures, and times in mono; everything else in Fraunces / Sarabun."
],
"dont": [
"Give a card a single accent edge, or add a heavy drop shadow or black glass.",
"Stamp the bead on every element until it is wallpaper.",
"Nest cards or default to flat clinical white or warm-cream surfaces.",
"Solve hierarchy with many accent colours when air, the rail, and one bead can do the work."
]
}
}