Aya Kasuri Ledger
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
specification
philosophy
tokens
borders4 items
- accent width
- 3px
- character
- Borders behave like loom threads: pale continuous rules for structure and one narrow accent thread for state.
- default width
- 1px
- style
- solid hairline plus gradient seam overlays
colors12 items
motion3 items
- duration
- 140ms
- easing
- cubic-bezier(0.2, 0, 0.1, 1)
- philosophy
- Motion is an editorial acknowledgement only: selected seams darken, row strips slide 2px, and panels settle without bounce.
radii5 items
- full
- 9999px
- lg
- 10px
- md
- 6px
- none
- 0
- sm
- 3px
shadows3 items
- lg
- 0 18px 48px rgba(36,39,34,0.08)
- md
- 0 8px 24px rgba(36,39,34,0.055)
- sm
- 0 1px 0 rgba(36,39,34,0.04)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Subtle repeating linear gradients at 80px and 24px intervals create woven grid registration without reading as wallpaper.
- card style
- Squared 6px modules with hairline border, no decorative glow, slight top inset rule, and thread-strip status on the inline-start edge.
- treatment
- Low-contrast warm paper surfaces: background #F6F3EC, primary panels #FBFAF6, and nested bands #F0EDE4 separated by hairline warp/weft rules.
typography8 items
- base size
- 16px
- body font
- Noto Sans JP
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+JP:wght@400;500;600;700&family=Zen+Kaku+Gothic+New:wght@500;700&display=swap
- heading font
- Zen Kaku Gothic New
- letter spacing
- -0.01em
- line height
- 1.52
- mono font
- IBM Plex Mono
- scale ratio
- 1.18
rules
Compose screens as a working product surface: persistent navigation, a dense context rail, a central table or text ledger, and a side detail pane aligned to the same woven grid.
High information density is encouraged, with compact rows, short labels, and tight module gaps, but every cluster must have a visible seam and readable line height.
Hierarchy is built through surface adjacency, thread strips, type weight, rule density, and small caps labels rather than large hero type or saturated blocks.
layout
Mobile 375px single woven column; tablet 768px two-column ledger with collapsible context rail; desktop 1200px+ full shell with rail, table, and detail pane.
Desktop uses a 12-column 80px warp grid with 24px weft rhythm; modules may span 2, 3, 5, or 7 columns to avoid equal-card monotony.
Whitespace is measured as quiet gutters and row breathing, not empty display space; use 8-16px internal padding for dense cells and 24px between major bands.
guidance
- Use the grid, hairline seams, and thread strips consistently so weaving is visible in structure.
- Keep accent colors sparse and semantic: rust for selection/emphasis, indigo for info, green for resolved, ochre for caution.
- Design real product modules with text, tables, notes, filters, and linked detail rather than isolated component samples.
- Use tabular numerals and monospaced IDs for operational data so dense rows remain scannable.
- Do not add literal fabric textures, skeuomorphism, bright gradients, or woven illustrations behind content.
- Do not turn the scene into a generic analytics dashboard with oversized charts and KPI tiles.
- Do not over-round panels or add heavy shadows; surface hierarchy must stay quiet and editorial.
- Do not use accent fills for every badge; most state should be carried by a narrow thread and text.
katagami spec
# Aya Kasuri Ledger ## Philosophy Aya Kasuri Ledger is a calm, dense product language for text-heavy operational tools where many small facts are woven into a legible textile-like grid. It borrows from Japanese kasuri and quiet editorial systems without becoming decorative: structure, alignment, restrained surface shifts, and sparse status threads carry the identity. ### Values - Treat density as care: more context can appear on screen when spacing, type rhythm, and module seams are disciplined. - Make weaving structural rather than ornamental by using crossing gridlines, threaded section markers, and interlaced metadata lanes. - Prefer low-contrast light surfaces with accent color reserved for selection, status, and data emphasis. - Let emptiness appear as measured breathing room between dense modules, not as large blank hero space. ### Anti-Values - Avoid dashboard spectacle: no KPI carnival, glass cards, neon analytics, or gratuitous chart decoration. - Avoid generic white SaaS blandness where every module is the same rounded card with identical shadow and spacing. - Avoid literal textile backgrounds that reduce the weaving reference to wallpaper instead of information structure. ### Visual Character - A 12-column app grid uses faint vertical warp rules and horizontal weft dividers implemented as 1px border-image style linear gradients. - Dense modules sit on adjacent off-white surfaces with squared 6px corners, hairline borders, and almost no shadow so hierarchy comes from seams and inset bands. - Metadata, status, and selected rows use narrow colored thread strips on the inline-start edge rather than filled badges or loud backgrounds. - Tables and detail panes use alternating micro-tints every fourth row plus small monospaced reference codes to create a woven scan rhythm. - Headings are compact Japanese gothic sans with restrained letter spacing, paired with low-contrast captions and precise numeric tabular alignment. ## Tokens ### Borders - **Accent Width**: 3px - **Character**: Borders behave like loom threads: pale continuous rules for structure and one narrow accent thread for state. - **Default Width**: 1px - **Style**: solid hairline plus gradient seam overlays ### Colors | Name | Value | |------|-------| | accent | `#B66A4A` | | background | `#F6F3EC` | | border | `#D8D2C5` | | error | `#A9473F` | | info | `#4F6F8A` | | muted | `#74786F` | | primary | `#2F4A43` | | secondary | `#7A7468` | | success | `#4F7A58` | | surface | `#FBFAF6` | | text | `#242722` | | warning | `#B5853B` | ### Motion - **Duration**: 140ms - **Easing**: cubic-bezier(0.2, 0, 0.1, 1) - **Philosophy**: Motion is an editorial acknowledgement only: selected seams darken, row strips slide 2px, and panels settle without bounce. ### Radii - **Full**: 9999px - **Lg**: 10px - **Md**: 6px - **None**: 0 - **Sm**: 3px ### Shadows - **Lg**: 0 18px 48px rgba(36,39,34,0.08) - **Md**: 0 8px 24px rgba(36,39,34,0.055) - **Sm**: 0 1px 0 rgba(36,39,34,0.04) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Subtle repeating linear gradients at 80px and 24px intervals create woven grid registration without reading as wallpaper. - **Card Style**: Squared 6px modules with hairline border, no decorative glow, slight top inset rule, and thread-strip status on the inline-start edge. - **Treatment**: Low-contrast warm paper surfaces: background #F6F3EC, primary panels #FBFAF6, and nested bands #F0EDE4 separated by hairline warp/weft rules. ### Typography - **Base Size**: 16px - **Body Font**: Noto Sans JP - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+JP:wght@400;500;600;700&family=Zen+Kaku+Gothic+New:wght@500;700&display=swap - **Heading Font**: Zen Kaku Gothic New - **Letter Spacing**: -0.01em - **Line Height**: 1.52 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.18 ## Rules ### Composition Compose screens as a working product surface: persistent navigation, a dense context rail, a central table or text ledger, and a side detail pane aligned to the same woven grid. ### Density High information density is encouraged, with compact rows, short labels, and tight module gaps, but every cluster must have a visible seam and readable line height. ### Hierarchy Hierarchy is built through surface adjacency, thread strips, type weight, rule density, and small caps labels rather than large hero type or saturated blocks. ### Signature Patterns - Warp-weft page underlay: two subtle repeating-linear-gradients define vertical and horizontal registration lines across the shell. - Thread strip state coding: selected, warning, success, and info states appear as 3px inline-start strips with restrained text color changes. - Interlaced context bands: related modules share alternating top and left border weights so the eye can follow relationships across panels. - Every-fourth-row tinting: dense tables use a barely visible cycle tint plus monospaced lot codes to create scan rhythm without zebra glare. - Knot markers: tiny square corner marks at module intersections signal pinned notes, changed fields, or unresolved links. ## Layout ### Breakpoints Mobile 375px single woven column; tablet 768px two-column ledger with collapsible context rail; desktop 1200px+ full shell with rail, table, and detail pane. ### Grid Desktop uses a 12-column 80px warp grid with 24px weft rhythm; modules may span 2, 3, 5, or 7 columns to avoid equal-card monotony. ### Whitespace Whitespace is measured as quiet gutters and row breathing, not empty display space; use 8-16px internal padding for dense cells and 24px between major bands. ## Guidance ### Do - Use the grid, hairline seams, and thread strips consistently so weaving is visible in structure. - Keep accent colors sparse and semantic: rust for selection/emphasis, indigo for info, green for resolved, ochre for caution. - Design real product modules with text, tables, notes, filters, and linked detail rather than isolated component samples. - Use tabular numerals and monospaced IDs for operational data so dense rows remain scannable. ### Don't - Do not add literal fabric textures, skeuomorphism, bright gradients, or woven illustrations behind content. - Do not turn the scene into a generic analytics dashboard with oversized charts and KPI tiles. - Do not over-round panels or add heavy shadows; surface hierarchy must stay quiet and editorial. - Do not use accent fills for every badge; most state should be carried by a narrow thread and text. ### Accessibility Maintain AA contrast for text, never rely on color alone for status, pair every thread strip with labels or icons, and keep keyboard focus visible as a 2px offset outline in primary green.
DESIGN.md
---
version: "alpha"
name: "Aya Kasuri Ledger"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#B66A4A"
background: "#F6F3EC"
border: "#D8D2C5"
error: "#A9473F"
info: "#4F6F8A"
muted: "#74786F"
primary: "#2F4A43"
secondary: "#7A7468"
success: "#4F7A58"
surface: "#FBFAF6"
text: "#242722"
warning: "#B5853B"
typography:
headline-lg:
fontFamily: "Zen Kaku Gothic New"
fontSize: "1.643rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Zen Kaku Gothic New"
fontSize: "1.392rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "Noto Sans JP"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.52
letterSpacing: "-0.01em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "10px"
md: "6px"
none: "0px"
sm: "3px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Aya Kasuri Ledger
## Overview
Aya Kasuri Ledger is a calm, dense product language for text-heavy operational tools where many small facts are woven into a legible textile-like grid. It borrows from Japanese kasuri and quiet editorial systems without becoming decorative: structure, alignment, restrained surface shifts, and sparse status threads carry the identity.
### Values
- Treat density as care: more context can appear on screen when spacing, type rhythm, and module seams are disciplined.
- Make weaving structural rather than ornamental by using crossing gridlines, threaded section markers, and interlaced metadata lanes.
- Prefer low-contrast light surfaces with accent color reserved for selection, status, and data emphasis.
- Let emptiness appear as measured breathing room between dense modules, not as large blank hero space.
### Anti-Values
- Avoid dashboard spectacle: no KPI carnival, glass cards, neon analytics, or gratuitous chart decoration.
- Avoid generic white SaaS blandness where every module is the same rounded card with identical shadow and spacing.
- Avoid literal textile backgrounds that reduce the weaving reference to wallpaper instead of information structure.
### Visual Character
- A 12-column app grid uses faint vertical warp rules and horizontal weft dividers implemented as 1px border-image style linear gradients.
- Dense modules sit on adjacent off-white surfaces with squared 6px corners, hairline borders, and almost no shadow so hierarchy comes from seams and inset bands.
- Metadata, status, and selected rows use narrow colored thread strips on the inline-start edge rather than filled badges or loud backgrounds.
- Tables and detail panes use alternating micro-tints every fourth row plus small monospaced reference codes to create a woven scan rhythm.
- Headings are compact Japanese gothic sans with restrained letter spacing, paired with low-contrast captions and precise numeric tabular alignment.
## 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 | `#B66A4A` |
| background | `#F6F3EC` |
| border | `#D8D2C5` |
| error | `#A9473F` |
| info | `#4F6F8A` |
| muted | `#74786F` |
| primary | `#2F4A43` |
| secondary | `#7A7468` |
| success | `#4F7A58` |
| surface | `#FBFAF6` |
| text | `#242722` |
| warning | `#B5853B` |
## Typography
- **Headline-Lg**: Zen Kaku Gothic New, 1.643rem, weight 700, line-height 1.1.
- **Headline-Md**: Zen Kaku Gothic New, 1.392rem, weight 600, line-height 1.15.
- **Body-Md**: Noto Sans JP, 16px, weight 400, line-height 1.52.
- **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`
### Breakpoints
Mobile 375px single woven column; tablet 768px two-column ledger with collapsible context rail; desktop 1200px+ full shell with rail, table, and detail pane.
### Grid
Desktop uses a 12-column 80px warp grid with 24px weft rhythm; modules may span 2, 3, 5, or 7 columns to avoid equal-card monotony.
### Whitespace
Whitespace is measured as quiet gutters and row breathing, not empty display space; use 8-16px internal padding for dense cells and 24px between major bands.
## Elevation & Depth
### Shadows
- **Lg**: 0 18px 48px rgba(36,39,34,0.08)
- **Md**: 0 8px 24px rgba(36,39,34,0.055)
- **Sm**: 0 1px 0 rgba(36,39,34,0.04)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `10px`
- **Md**: `6px`
- **None**: `0px`
- **Sm**: `3px`
### Surfaces
- **Bg Pattern**: Subtle repeating linear gradients at 80px and 24px intervals create woven grid registration without reading as wallpaper.
- **Card Style**: Squared 6px modules with hairline border, no decorative glow, slight top inset rule, and thread-strip status on the inline-start edge.
- **Treatment**: Low-contrast warm paper surfaces: background #F6F3EC, primary panels #FBFAF6, and nested bands #F0EDE4 separated by hairline warp/weft rules.
### Borders
- **Accent Width**: 3px
- **Character**: Borders behave like loom threads: pale continuous rules for structure and one narrow accent thread for state.
- **Default Width**: 1px
- **Style**: solid hairline plus gradient seam overlays
## Components
### Composition
Compose screens as a working product surface: persistent navigation, a dense context rail, a central table or text ledger, and a side detail pane aligned to the same woven grid.
### Density
High information density is encouraged, with compact rows, short labels, and tight module gaps, but every cluster must have a visible seam and readable line height.
### Hierarchy
Hierarchy is built through surface adjacency, thread strips, type weight, rule density, and small caps labels rather than large hero type or saturated blocks.
### Signature Patterns
- Warp-weft page underlay: two subtle repeating-linear-gradients define vertical and horizontal registration lines across the shell.
- Thread strip state coding: selected, warning, success, and info states appear as 3px inline-start strips with restrained text color changes.
- Interlaced context bands: related modules share alternating top and left border weights so the eye can follow relationships across panels.
- Every-fourth-row tinting: dense tables use a barely visible cycle tint plus monospaced lot codes to create scan rhythm without zebra glare.
- Knot markers: tiny square corner marks at module intersections signal pinned notes, changed fields, or unresolved links.
## 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-019ed834-4200-7eb0-b2fd-d189a4b385fe/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 the grid, hairline seams, and thread strips consistently so weaving is visible in structure.
- Do Keep accent colors sparse and semantic: rust for selection/emphasis, indigo for info, green for resolved, ochre for caution.
- Do Design real product modules with text, tables, notes, filters, and linked detail rather than isolated component samples.
- Do Use tabular numerals and monospaced IDs for operational data so dense rows remain scannable.
- Don't Do not add literal fabric textures, skeuomorphism, bright gradients, or woven illustrations behind content.
- Don't Do not turn the scene into a generic analytics dashboard with oversized charts and KPI tiles.
- Don't Do not over-round panels or add heavy shadows; surface hierarchy must stay quiet and editorial.
- Don't Do not use accent fills for every badge; most state should be carried by a narrow thread and text.
### Accessibility
Maintain AA contrast for text, never rely on color alone for status, pair every thread strip with labels or icons, and keep keyboard focus visible as a 2px offset outline in primary green.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "aya-kasuri-ledger",
"type": "registry:theme",
"title": "Aya Kasuri Ledger shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F6F3EC",
"foreground": "#242722",
"card": "#FBFAF6",
"card-foreground": "#242722",
"popover": "#FBFAF6",
"popover-foreground": "#242722",
"primary": "#2F4A43",
"primary-foreground": "#ffffff",
"secondary": "#7A7468",
"secondary-foreground": "#ffffff",
"muted": "#74786F",
"muted-foreground": "#242722",
"accent": "#B66A4A",
"accent-foreground": "#ffffff",
"destructive": "#A9473F",
"border": "#D8D2C5",
"input": "#D8D2C5",
"ring": "#B66A4A",
"chart-1": "#2F4A43",
"chart-2": "#7A7468",
"chart-3": "#B66A4A",
"chart-4": "#4F7A58",
"chart-5": "#B5853B",
"sidebar": "#FBFAF6",
"sidebar-foreground": "#242722",
"sidebar-primary": "#2F4A43",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#4F6F8A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D2C5",
"sidebar-ring": "#B66A4A",
"radius": "6px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#2F4A43",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B66A4A",
"accent-foreground": "#ffffff",
"destructive": "#A9473F",
"border": "#303642",
"input": "#303642",
"ring": "#B66A4A",
"chart-1": "#2F4A43",
"chart-2": "#7A7468",
"chart-3": "#B66A4A",
"chart-4": "#4F7A58",
"chart-5": "#B5853B",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#2F4A43",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B66A4A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#B66A4A",
"radius": "6px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ed834-4200-7eb0-b2fd-d189a4b385fe",
"slug": "aya-kasuri-ledger",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- base8px
- xs4px
- sm8px
- md12px
- lg16px
- xl24px
- 2xl32px
- 3xl48px
- 4xl64px
Shape
implementation kit
DESIGN.md with shadcn
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #F6F3EC;
--foreground: #242722;
--card: #FBFAF6;
--card-foreground: #242722;
--popover: #FBFAF6;
--popover-foreground: #242722;
--primary: #2F4A43;
--primary-foreground: #ffffff;
--secondary: #7A7468;
--secondary-foreground: #ffffff;
--muted: #74786F;
--muted-foreground: #242722;
--accent: #B66A4A;
--accent-foreground: #ffffff;
--destructive: #A9473F;
--border: #D8D2C5;
--input: #D8D2C5;
--ring: #B66A4A;
--chart-1: #2F4A43;
--chart-2: #7A7468;
--chart-3: #B66A4A;
--chart-4: #4F7A58;
--chart-5: #B5853B;
--sidebar: #FBFAF6;
--sidebar-foreground: #242722;
--sidebar-primary: #2F4A43;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #4F6F8A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #D8D2C5;
--sidebar-ring: #B66A4A;
--radius: 6px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #2F4A43;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #B66A4A;
--accent-foreground: #ffffff;
--destructive: #A9473F;
--border: #303642;
--input: #303642;
--ring: #B66A4A;
--chart-1: #2F4A43;
--chart-2: #7A7468;
--chart-3: #B66A4A;
--chart-4: #4F7A58;
--chart-5: #B5853B;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #2F4A43;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #B66A4A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #B66A4A;
--radius: 6px;
}
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 AyaKasuriLedgerShadcnKit() {
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">Aya Kasuri Ledger</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": "aya-kasuri-ledger",
"type": "registry:theme",
"title": "Aya Kasuri Ledger shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F6F3EC",
"foreground": "#242722",
"card": "#FBFAF6",
"card-foreground": "#242722",
"popover": "#FBFAF6",
"popover-foreground": "#242722",
"primary": "#2F4A43",
"primary-foreground": "#ffffff",
"secondary": "#7A7468",
"secondary-foreground": "#ffffff",
"muted": "#74786F",
"muted-foreground": "#242722",
"accent": "#B66A4A",
"accent-foreground": "#ffffff",
"destructive": "#A9473F",
"border": "#D8D2C5",
"input": "#D8D2C5",
"ring": "#B66A4A",
"chart-1": "#2F4A43",
"chart-2": "#7A7468",
"chart-3": "#B66A4A",
"chart-4": "#4F7A58",
"chart-5": "#B5853B",
"sidebar": "#FBFAF6",
"sidebar-foreground": "#242722",
"sidebar-primary": "#2F4A43",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#4F6F8A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D2C5",
"sidebar-ring": "#B66A4A",
"radius": "6px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#2F4A43",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B66A4A",
"accent-foreground": "#ffffff",
"destructive": "#A9473F",
"border": "#303642",
"input": "#303642",
"ring": "#B66A4A",
"chart-1": "#2F4A43",
"chart-2": "#7A7468",
"chart-3": "#B66A4A",
"chart-4": "#4F7A58",
"chart-5": "#B5853B",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#2F4A43",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B66A4A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#B66A4A",
"radius": "6px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ed834-4200-7eb0-b2fd-d189a4b385fe",
"slug": "aya-kasuri-ledger",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
# Aya Kasuri Ledger shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ed834-4200-7eb0-b2fd-d189a4b385fe`
Slug: `aya-kasuri-ledger`
## Intent
Aya Kasuri Ledger is a calm, dense product language for text-heavy operational tools where many small facts are woven into a legible textile-like grid. It borrows from Japanese kasuri and quiet editorial systems without becoming decorative: structure, alignment, restrained surface shifts, and sparse status threads carry the identity.
## 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": "#B66A4A",
"background": "#F6F3EC",
"border": "#D8D2C5",
"error": "#A9473F",
"info": "#4F6F8A",
"muted": "#74786F",
"primary": "#2F4A43",
"secondary": "#7A7468",
"success": "#4F7A58",
"surface": "#FBFAF6",
"text": "#242722",
"warning": "#B5853B"
}
Typography:
{
"base_size": "16px",
"body_font": "Noto Sans JP",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+JP:wght@400;500;600;700&family=Zen+Kaku+Gothic+New:wght@500;700&display=swap",
"heading_font": "Zen Kaku Gothic New",
"letter_spacing": "-0.01em",
"line_height": 1.52,
"mono_font": "IBM Plex Mono",
"scale_ratio": 1.18
}
## Visual character to preserve
- A 12-column app grid uses faint vertical warp rules and horizontal weft dividers implemented as 1px border-image style linear gradients.
- Dense modules sit on adjacent off-white surfaces with squared 6px corners, hairline borders, and almost no shadow so hierarchy comes from seams and inset bands.
- Metadata, status, and selected rows use narrow colored thread strips on the inline-start edge rather than filled badges or loud backgrounds.
- Tables and detail panes use alternating micro-tints every fourth row plus small monospaced reference codes to create a woven scan rhythm.
- Headings are compact Japanese gothic sans with restrained letter spacing, paired with low-contrast captions and precise numeric tabular alignment.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "still",
"density": "dense",
"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/aya-kasuri-ledger/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 the grid, hairline seams, and thread strips consistently so weaving is visible in structure.; Keep accent colors sparse and semantic: rust for selection/emphasis, indigo for info, green for resolved, ochre for caution.; Design real product modules with text, tables, notes, filters, and linked detail rather than isolated component samples.; Use tabular numerals and monospaced IDs for operational data so dense rows remain scannable.
- Do not: Do not add literal fabric textures, skeuomorphism, bright gradients, or woven illustrations behind content.; Do not turn the scene into a generic analytics dashboard with oversized charts and KPI tiles.; Do not over-round panels or add heavy shadows; surface hierarchy must stay quiet and editorial.; Do not use accent fills for every badge; most state should be carried by a narrow thread and text.
## 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 AyaKasuriLedgerShadcnKit() {
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">Aya Kasuri Ledger</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
```
## Layout notes
{
"breakpoints": "Mobile 375px single woven column; tablet 768px two-column ledger with collapsible context rail; desktop 1200px+ full shell with rail, table, and detail pane.",
"grid": "Desktop uses a 12-column 80px warp grid with 24px weft rhythm; modules may span 2, 3, 5, or 7 columns to avoid equal-card monotony.",
"whitespace": "Whitespace is measured as quiet gutters and row breathing, not empty display space; use 8-16px internal padding for dense cells and 24px between major bands."
}
{
"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-019ed834-4200-7eb0-b2fd-d189a4b385fe",
"name": "Aya Kasuri Ledger",
"slug": "aya-kasuri-ledger"
},
"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": [
"A 12-column app grid uses faint vertical warp rules and horizontal weft dividers implemented as 1px border-image style linear gradients.",
"Dense modules sit on adjacent off-white surfaces with squared 6px corners, hairline borders, and almost no shadow so hierarchy comes from seams and inset bands.",
"Metadata, status, and selected rows use narrow colored thread strips on the inline-start edge rather than filled badges or loud backgrounds.",
"Tables and detail panes use alternating micro-tints every fourth row plus small monospaced reference codes to create a woven scan rhythm.",
"Headings are compact Japanese gothic sans with restrained letter spacing, paired with low-contrast captions and precise numeric tabular alignment."
],
"visualProfile": {
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": true,
"motion": "still",
"density": "dense",
"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": "Aya Kasuri Ledger 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 the grid, hairline seams, and thread strips consistently so weaving is visible in structure.",
"Keep accent colors sparse and semantic: rust for selection/emphasis, indigo for info, green for resolved, ochre for caution.",
"Design real product modules with text, tables, notes, filters, and linked detail rather than isolated component samples.",
"Use tabular numerals and monospaced IDs for operational data so dense rows remain scannable."
],
"dont": [
"Do not add literal fabric textures, skeuomorphism, bright gradients, or woven illustrations behind content.",
"Do not turn the scene into a generic analytics dashboard with oversized charts and KPI tiles.",
"Do not over-round panels or add heavy shadows; surface hierarchy must stay quiet and editorial.",
"Do not use accent fills for every badge; most state should be carried by a narrow thread and text."
]
}
}