Chroma Aperture Surfaces
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
- 2px
- character
- Cool hairline borders define neutral surfaces; accent borders appear only as full focus rings or inset aperture rims, never as left rails.
- default width
- 1px
- style
- solid
colors12 items
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(0.2, 0.8, 0.2, 1)
- philosophy
- Small optical transitions: apertures brighten, rings tighten, and cards lift two pixels; avoid bouncy or theatrical movement.
radii5 items
- full
- 9999px
- lg
- 22px
- md
- 16px
- none
- 0
- sm
- 10px
shadows3 items
- lg
- 0 36px 90px rgba(34, 42, 52, 0.14), 0 0 0 1px rgba(221, 225, 231, 0.88)
- md
- 0 18px 44px rgba(34, 42, 52, 0.10), 0 0 0 1px rgba(221, 225, 231, 0.82)
- sm
- 0 1px 2px rgba(17, 19, 24, 0.06), 0 0 0 1px rgba(221, 225, 231, 0.72)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Plain luminous neutral field with a soft radial light bloom behind the main product surface; no square grid and no repeated dot texture.
- card style
- 22px rounded white cards with one-pixel cool borders, interior padding of 24-32px, shallow hardware shadows, and no colored side rail.
- treatment
- Warm porcelain background with white product panels, subtle top-light gradients, and localized chroma aperture wells for active state.
typography8 items
- base size
- 16px
- body font
- Host Grotesk
- google fonts url
- https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- heading font
- Host Grotesk
- letter spacing
- -0.025em
- line height
- 1.48
- mono font
- IBM Plex Mono
- scale ratio
- 1.22
rules
Compose as a product-first workspace: a dominant white work surface, a secondary context panel, and a few floating color apertures that clarify current mode without becoming decoration.
Medium-low density with generous 24-32px internal padding, readable 16px controls, and compact metadata only when it supports the task.
Lead with one large heading and one decisive action row; use chroma only for the active path, selected state, focus, or important status so visual attention remains calm.
layout
Mobile 375px, tablet 768px, desktop 1200px and above with max content width near 1240px.
Use an asymmetric 12-column layout on desktop with a wide product canvas and a narrower context column; mobile stacks into one column.
Whitespace is a material feature: keep broad outer margins, 24px card gaps, and open header breathing room around chroma accents.
guidance
- Use a restrained three-hue chroma relationship: mineral green for constructive flow, coral-orange for human urgency, and blue-violet for intelligence or navigation.
- Keep most surfaces white or warm neutral and let color appear in apertures, focus rings, selected tabs, status lenses, and one primary action.
- Make application scenes specific to product workflows such as device calibration, creative review, health scheduling, or inventory approvals.
- Maintain full text contrast and pair every color state with labels, icons, or position.
- Do not use rainbow palettes, arbitrary confetti, startup blobs, neon cyberpunk glows, or color merely as garnish.
- Do not use square-grid backgrounds, default repeated dotted notebook texture, or textbook-page imitation.
- Do not put decorative side rails or left stripes on cards, buttons, rows, or panels.
- Do not make the scene a generic analytics dashboard or a template SaaS admin shell.
katagami spec
# Chroma Aperture Surfaces ## Philosophy Chroma Aperture Surfaces is a premium product interface language where calm white hardware-like planes are punctuated by a few optically tuned color apertures that carry state, navigation, and product memory rather than decoration. ### Values - Neutral product surfaces must stay quiet enough for data entry, review, and decision work. - Color is structural: it marks live context, priority, focus, and completion rather than acting as garnish. - Freshness comes from unexpected hue relationships held inside disciplined geometry and generous spacing. - Every component should feel machined, spacious, and directly usable on a modern device screen. ### Anti-Values - Rainbow systems, confetti, blob gradients, neon cyberpunk, and color used merely to prove colorfulness. - Decorative left rails, square-grid backgrounds, repeated dotted notebook texture, and generic admin dashboard composition. - Mixed arbitrary radii or uncommitted soft-card styling that makes the interface feel templated. ### Visual Character - Use large white and warm-porcelain panels with 22px committed radii, one-pixel cool borders, and soft vertical shadows that read as product hardware surfaces. - Place color in inset aperture wells: rounded rectangular recesses, small circular status lenses, and focus rings using translucent radial CSS gradients rather than side stripes. - Build hierarchy with oversized calm typography, tight negative letter spacing, wide section gutters, and sparse metadata chips instead of dense dashboard modules. - Use a neutral page field with subtle top-to-bottom luminosity and no square grid, no default dot texture, and no decorative wallpaper motif. - Reserve the strongest chroma for one active decision path at a time, balancing cool mineral green with warm coral-orange and a deep blue-violet support hue. ## Tokens ### Borders - **Accent Width**: 2px - **Character**: Cool hairline borders define neutral surfaces; accent borders appear only as full focus rings or inset aperture rims, never as left rails. - **Default Width**: 1px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#625BFF` | | background | `#F7F6F2` | | border | `#DDE1E7` | | error | `#D84B3A` | | info | `#3D66E8` | | muted | `#747B86` | | primary | `#18A878` | | secondary | `#FF6A4A` | | success | `#159A69` | | surface | `#FFFFFF` | | text | `#111318` | | warning | `#D89219` | ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1) - **Philosophy**: Small optical transitions: apertures brighten, rings tighten, and cards lift two pixels; avoid bouncy or theatrical movement. ### Radii - **Full**: 9999px - **Lg**: 22px - **Md**: 16px - **None**: 0 - **Sm**: 10px ### Shadows - **Lg**: 0 36px 90px rgba(34, 42, 52, 0.14), 0 0 0 1px rgba(221, 225, 231, 0.88) - **Md**: 0 18px 44px rgba(34, 42, 52, 0.10), 0 0 0 1px rgba(221, 225, 231, 0.82) - **Sm**: 0 1px 2px rgba(17, 19, 24, 0.06), 0 0 0 1px rgba(221, 225, 231, 0.72) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Plain luminous neutral field with a soft radial light bloom behind the main product surface; no square grid and no repeated dot texture. - **Card Style**: 22px rounded white cards with one-pixel cool borders, interior padding of 24-32px, shallow hardware shadows, and no colored side rail. - **Treatment**: Warm porcelain background with white product panels, subtle top-light gradients, and localized chroma aperture wells for active state. ### Typography - **Base Size**: 16px - **Body Font**: Host Grotesk - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap - **Heading Font**: Host Grotesk - **Letter Spacing**: -0.025em - **Line Height**: 1.48 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.22 ## Rules ### Composition Compose as a product-first workspace: a dominant white work surface, a secondary context panel, and a few floating color apertures that clarify current mode without becoming decoration. ### Density Medium-low density with generous 24-32px internal padding, readable 16px controls, and compact metadata only when it supports the task. ### Hierarchy Lead with one large heading and one decisive action row; use chroma only for the active path, selected state, focus, or important status so visual attention remains calm. ### Signature Patterns - Inset aperture wells use radial-gradient color pools clipped inside rounded rectangles to identify the active module without side stripes. - Status lenses are small circular gradient dots paired with text labels and soft outer glows so state is visible but not confetti-like. - Primary actions use a full-surface chroma fill with a tiny white specular highlight and neutral companion buttons instead of multi-colored button sets. - Focus states draw complete two-pixel chroma rings with a four-pixel translucent halo around inputs, selects, and interactive cards. - Data rows use porcelain capsules and right-aligned chroma temperature marks inside the cell, never decorative rails on the row edge. ## Layout ### Breakpoints Mobile 375px, tablet 768px, desktop 1200px and above with max content width near 1240px. ### Grid Use an asymmetric 12-column layout on desktop with a wide product canvas and a narrower context column; mobile stacks into one column. ### Whitespace Whitespace is a material feature: keep broad outer margins, 24px card gaps, and open header breathing room around chroma accents. ## Guidance ### Do - Use a restrained three-hue chroma relationship: mineral green for constructive flow, coral-orange for human urgency, and blue-violet for intelligence or navigation. - Keep most surfaces white or warm neutral and let color appear in apertures, focus rings, selected tabs, status lenses, and one primary action. - Make application scenes specific to product workflows such as device calibration, creative review, health scheduling, or inventory approvals. - Maintain full text contrast and pair every color state with labels, icons, or position. ### Don't - Do not use rainbow palettes, arbitrary confetti, startup blobs, neon cyberpunk glows, or color merely as garnish. - Do not use square-grid backgrounds, default repeated dotted notebook texture, or textbook-page imitation. - Do not put decorative side rails or left stripes on cards, buttons, rows, or panels. - Do not make the scene a generic analytics dashboard or a template SaaS admin shell.
DESIGN.md
---
version: "alpha"
name: "Chroma Aperture Surfaces"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#625BFF"
background: "#F7F6F2"
border: "#DDE1E7"
error: "#D84B3A"
info: "#3D66E8"
muted: "#747B86"
primary: "#18A878"
secondary: "#FF6A4A"
success: "#159A69"
surface: "#FFFFFF"
text: "#111318"
warning: "#D89219"
typography:
headline-lg:
fontFamily: "Host Grotesk"
fontSize: "1.816rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.025em"
headline-md:
fontFamily: "Host Grotesk"
fontSize: "1.488rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.025em"
body-md:
fontFamily: "Host Grotesk"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.48
letterSpacing: "-0.025em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "22px"
md: "16px"
none: "0px"
sm: "10px"
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: "#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"
---
# Chroma Aperture Surfaces
## Overview
Chroma Aperture Surfaces is a premium product interface language where calm white hardware-like planes are punctuated by a few optically tuned color apertures that carry state, navigation, and product memory rather than decoration.
### Values
- Neutral product surfaces must stay quiet enough for data entry, review, and decision work.
- Color is structural: it marks live context, priority, focus, and completion rather than acting as garnish.
- Freshness comes from unexpected hue relationships held inside disciplined geometry and generous spacing.
- Every component should feel machined, spacious, and directly usable on a modern device screen.
### Anti-Values
- Rainbow systems, confetti, blob gradients, neon cyberpunk, and color used merely to prove colorfulness.
- Decorative left rails, square-grid backgrounds, repeated dotted notebook texture, and generic admin dashboard composition.
- Mixed arbitrary radii or uncommitted soft-card styling that makes the interface feel templated.
### Visual Character
- Use large white and warm-porcelain panels with 22px committed radii, one-pixel cool borders, and soft vertical shadows that read as product hardware surfaces.
- Place color in inset aperture wells: rounded rectangular recesses, small circular status lenses, and focus rings using translucent radial CSS gradients rather than side stripes.
- Build hierarchy with oversized calm typography, tight negative letter spacing, wide section gutters, and sparse metadata chips instead of dense dashboard modules.
- Use a neutral page field with subtle top-to-bottom luminosity and no square grid, no default dot texture, and no decorative wallpaper motif.
- Reserve the strongest chroma for one active decision path at a time, balancing cool mineral green with warm coral-orange and a deep blue-violet support hue.
## 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 | `#625BFF` |
| background | `#F7F6F2` |
| border | `#DDE1E7` |
| error | `#D84B3A` |
| info | `#3D66E8` |
| muted | `#747B86` |
| primary | `#18A878` |
| secondary | `#FF6A4A` |
| success | `#159A69` |
| surface | `#FFFFFF` |
| text | `#111318` |
| warning | `#D89219` |
## Typography
- **Headline-Lg**: Host Grotesk, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Host Grotesk, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Host Grotesk, 16px, weight 400, line-height 1.48.
- **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, tablet 768px, desktop 1200px and above with max content width near 1240px.
### Grid
Use an asymmetric 12-column layout on desktop with a wide product canvas and a narrower context column; mobile stacks into one column.
### Whitespace
Whitespace is a material feature: keep broad outer margins, 24px card gaps, and open header breathing room around chroma accents.
## Elevation & Depth
### Shadows
- **Lg**: 0 36px 90px rgba(34, 42, 52, 0.14), 0 0 0 1px rgba(221, 225, 231, 0.88)
- **Md**: 0 18px 44px rgba(34, 42, 52, 0.10), 0 0 0 1px rgba(221, 225, 231, 0.82)
- **Sm**: 0 1px 2px rgba(17, 19, 24, 0.06), 0 0 0 1px rgba(221, 225, 231, 0.72)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `22px`
- **Md**: `16px`
- **None**: `0px`
- **Sm**: `10px`
### Surfaces
- **Bg Pattern**: Plain luminous neutral field with a soft radial light bloom behind the main product surface; no square grid and no repeated dot texture.
- **Card Style**: 22px rounded white cards with one-pixel cool borders, interior padding of 24-32px, shallow hardware shadows, and no colored side rail.
- **Treatment**: Warm porcelain background with white product panels, subtle top-light gradients, and localized chroma aperture wells for active state.
### Borders
- **Accent Width**: 2px
- **Character**: Cool hairline borders define neutral surfaces; accent borders appear only as full focus rings or inset aperture rims, never as left rails.
- **Default Width**: 1px
- **Style**: solid
## Components
### Composition
Compose as a product-first workspace: a dominant white work surface, a secondary context panel, and a few floating color apertures that clarify current mode without becoming decoration.
### Density
Medium-low density with generous 24-32px internal padding, readable 16px controls, and compact metadata only when it supports the task.
### Hierarchy
Lead with one large heading and one decisive action row; use chroma only for the active path, selected state, focus, or important status so visual attention remains calm.
### Signature Patterns
- Inset aperture wells use radial-gradient color pools clipped inside rounded rectangles to identify the active module without side stripes.
- Status lenses are small circular gradient dots paired with text labels and soft outer glows so state is visible but not confetti-like.
- Primary actions use a full-surface chroma fill with a tiny white specular highlight and neutral companion buttons instead of multi-colored button sets.
- Focus states draw complete two-pixel chroma rings with a four-pixel translucent halo around inputs, selects, and interactive cards.
- Data rows use porcelain capsules and right-aligned chroma temperature marks inside the cell, never decorative rails on the row edge.
## 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-019e464b-a095-7e21-9d7c-b231bfcb2c18/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 a restrained three-hue chroma relationship: mineral green for constructive flow, coral-orange for human urgency, and blue-violet for intelligence or navigation.
- Do Keep most surfaces white or warm neutral and let color appear in apertures, focus rings, selected tabs, status lenses, and one primary action.
- Do Make application scenes specific to product workflows such as device calibration, creative review, health scheduling, or inventory approvals.
- Do Maintain full text contrast and pair every color state with labels, icons, or position.
- Don't Do not use rainbow palettes, arbitrary confetti, startup blobs, neon cyberpunk glows, or color merely as garnish.
- Don't Do not use square-grid backgrounds, default repeated dotted notebook texture, or textbook-page imitation.
- Don't Do not put decorative side rails or left stripes on cards, buttons, rows, or panels.
- Don't Do not make the scene a generic analytics dashboard or a template SaaS admin shell.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "chroma-aperture-surfaces",
"type": "registry:theme",
"title": "Chroma Aperture Surfaces shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F6F2",
"foreground": "#111318",
"card": "#FFFFFF",
"card-foreground": "#111318",
"popover": "#FFFFFF",
"popover-foreground": "#111318",
"primary": "#18A878",
"primary-foreground": "#ffffff",
"secondary": "#FF6A4A",
"secondary-foreground": "#ffffff",
"muted": "#747B86",
"muted-foreground": "#111318",
"accent": "#625BFF",
"accent-foreground": "#ffffff",
"destructive": "#D84B3A",
"border": "#DDE1E7",
"input": "#DDE1E7",
"ring": "#625BFF",
"chart-1": "#18A878",
"chart-2": "#FF6A4A",
"chart-3": "#625BFF",
"chart-4": "#159A69",
"chart-5": "#D89219",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#111318",
"sidebar-primary": "#18A878",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3D66E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#DDE1E7",
"sidebar-ring": "#625BFF",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#18A878",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#625BFF",
"accent-foreground": "#ffffff",
"destructive": "#D84B3A",
"border": "#303642",
"input": "#303642",
"ring": "#625BFF",
"chart-1": "#18A878",
"chart-2": "#FF6A4A",
"chart-3": "#625BFF",
"chart-4": "#159A69",
"chart-5": "#D89219",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#18A878",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#625BFF",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#625BFF",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e464b-a095-7e21-9d7c-b231bfcb2c18",
"slug": "chroma-aperture-surfaces",
"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: #F7F6F2;
--foreground: #111318;
--card: #FFFFFF;
--card-foreground: #111318;
--popover: #FFFFFF;
--popover-foreground: #111318;
--primary: #18A878;
--primary-foreground: #ffffff;
--secondary: #FF6A4A;
--secondary-foreground: #ffffff;
--muted: #747B86;
--muted-foreground: #111318;
--accent: #625BFF;
--accent-foreground: #ffffff;
--destructive: #D84B3A;
--border: #DDE1E7;
--input: #DDE1E7;
--ring: #625BFF;
--chart-1: #18A878;
--chart-2: #FF6A4A;
--chart-3: #625BFF;
--chart-4: #159A69;
--chart-5: #D89219;
--sidebar: #FFFFFF;
--sidebar-foreground: #111318;
--sidebar-primary: #18A878;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3D66E8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #DDE1E7;
--sidebar-ring: #625BFF;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #18A878;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #625BFF;
--accent-foreground: #ffffff;
--destructive: #D84B3A;
--border: #303642;
--input: #303642;
--ring: #625BFF;
--chart-1: #18A878;
--chart-2: #FF6A4A;
--chart-3: #625BFF;
--chart-4: #159A69;
--chart-5: #D89219;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #18A878;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #625BFF;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #625BFF;
--radius: 16px;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function ChromaApertureSurfacesShadcnKit() {
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">Chroma Aperture Surfaces</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",
"cssVars": {
"dark": {
"accent": "#625BFF",
"accent-foreground": "#ffffff",
"background": "#0f1115",
"border": "#303642",
"card": "#181b22",
"card-foreground": "#f8fafc",
"chart-1": "#18A878",
"chart-2": "#FF6A4A",
"chart-3": "#625BFF",
"chart-4": "#159A69",
"chart-5": "#D89219",
"destructive": "#D84B3A",
"foreground": "#f8fafc",
"input": "#303642",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#18A878",
"primary-foreground": "#ffffff",
"radius": "16px",
"ring": "#625BFF",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"sidebar": "#181b22",
"sidebar-accent": "#625BFF",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#18A878",
"sidebar-primary-foreground": "#ffffff",
"sidebar-ring": "#625BFF"
},
"light": {
"accent": "#625BFF",
"accent-foreground": "#ffffff",
"background": "#F7F6F2",
"border": "#DDE1E7",
"card": "#FFFFFF",
"card-foreground": "#111318",
"chart-1": "#18A878",
"chart-2": "#FF6A4A",
"chart-3": "#625BFF",
"chart-4": "#159A69",
"chart-5": "#D89219",
"destructive": "#D84B3A",
"foreground": "#111318",
"input": "#DDE1E7",
"muted": "#747B86",
"muted-foreground": "#111318",
"popover": "#FFFFFF",
"popover-foreground": "#111318",
"primary": "#18A878",
"primary-foreground": "#ffffff",
"radius": "16px",
"ring": "#625BFF",
"secondary": "#FF6A4A",
"secondary-foreground": "#ffffff",
"sidebar": "#FFFFFF",
"sidebar-accent": "#3D66E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#DDE1E7",
"sidebar-foreground": "#111318",
"sidebar-primary": "#18A878",
"sidebar-primary-foreground": "#ffffff",
"sidebar-ring": "#625BFF"
},
"theme": {}
},
"meta": {
"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",
"languageId": "en-019e464b-a095-7e21-9d7c-b231bfcb2c18",
"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"
]
},
"slug": "chroma-aperture-surfaces",
"source": "katagami"
},
"name": "chroma-aperture-surfaces",
"title": "Chroma Aperture Surfaces shadcn Theme",
"type": "registry:theme"
}
# Chroma Aperture Surfaces shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019e464b-a095-7e21-9d7c-b231bfcb2c18`
Slug: `chroma-aperture-surfaces`
## Intent
Chroma Aperture Surfaces is a premium product interface language where calm white hardware-like planes are punctuated by a few optically tuned color apertures that carry state, navigation, and product memory rather than decoration.
## 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": "#625BFF",
"background": "#F7F6F2",
"border": "#DDE1E7",
"error": "#D84B3A",
"info": "#3D66E8",
"muted": "#747B86",
"primary": "#18A878",
"secondary": "#FF6A4A",
"success": "#159A69",
"surface": "#FFFFFF",
"text": "#111318",
"warning": "#D89219"
}
Typography:
{
"base_size": "16px",
"body_font": "Host Grotesk",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap",
"heading_font": "Host Grotesk",
"letter_spacing": "-0.025em",
"line_height": 1.48,
"mono_font": "IBM Plex Mono",
"scale_ratio": 1.22
}
## Visual character to preserve
- Use large white and warm-porcelain panels with 22px committed radii, one-pixel cool borders, and soft vertical shadows that read as product hardware surfaces.
- Place color in inset aperture wells: rounded rectangular recesses, small circular status lenses, and focus rings using translucent radial CSS gradients rather than side stripes.
- Build hierarchy with oversized calm typography, tight negative letter spacing, wide section gutters, and sparse metadata chips instead of dense dashboard modules.
- Use a neutral page field with subtle top-to-bottom luminosity and no square grid, no default dot texture, and no decorative wallpaper motif.
- Reserve the strongest chroma for one active decision path at a time, balancing cool mineral green with warm coral-orange and a deep blue-violet support hue.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "lift",
"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/chroma-aperture-surfaces/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 a restrained three-hue chroma relationship: mineral green for constructive flow, coral-orange for human urgency, and blue-violet for intelligence or navigation.; Keep most surfaces white or warm neutral and let color appear in apertures, focus rings, selected tabs, status lenses, and one primary action.; Make application scenes specific to product workflows such as device calibration, creative review, health scheduling, or inventory approvals.; Maintain full text contrast and pair every color state with labels, icons, or position.
- Do not: Do not use rainbow palettes, arbitrary confetti, startup blobs, neon cyberpunk glows, or color merely as garnish.; Do not use square-grid backgrounds, default repeated dotted notebook texture, or textbook-page imitation.; Do not put decorative side rails or left stripes on cards, buttons, rows, or panels.; Do not make the scene a generic analytics dashboard or a template SaaS admin shell.
## 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 ChromaApertureSurfacesShadcnKit() {
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">Chroma Aperture Surfaces</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, tablet 768px, desktop 1200px and above with max content width near 1240px.",
"grid": "Use an asymmetric 12-column layout on desktop with a wide product canvas and a narrower context column; mobile stacks into one column.",
"whitespace": "Whitespace is a material feature: keep broad outer margins, 24px card gaps, and open header breathing room around chroma accents."
}
{
"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-019e464b-a095-7e21-9d7c-b231bfcb2c18",
"name": "Chroma Aperture Surfaces",
"slug": "chroma-aperture-surfaces"
},
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Use large white and warm-porcelain panels with 22px committed radii, one-pixel cool borders, and soft vertical shadows that read as product hardware surfaces.",
"Place color in inset aperture wells: rounded rectangular recesses, small circular status lenses, and focus rings using translucent radial CSS gradients rather than side stripes.",
"Build hierarchy with oversized calm typography, tight negative letter spacing, wide section gutters, and sparse metadata chips instead of dense dashboard modules.",
"Use a neutral page field with subtle top-to-bottom luminosity and no square grid, no default dot texture, and no decorative wallpaper motif.",
"Reserve the strongest chroma for one active decision path at a time, balancing cool mineral green with warm coral-orange and a deep blue-violet support hue."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"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": "Chroma Aperture Surfaces 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 a restrained three-hue chroma relationship: mineral green for constructive flow, coral-orange for human urgency, and blue-violet for intelligence or navigation.",
"Keep most surfaces white or warm neutral and let color appear in apertures, focus rings, selected tabs, status lenses, and one primary action.",
"Make application scenes specific to product workflows such as device calibration, creative review, health scheduling, or inventory approvals.",
"Maintain full text contrast and pair every color state with labels, icons, or position."
],
"dont": [
"Do not use rainbow palettes, arbitrary confetti, startup blobs, neon cyberpunk glows, or color merely as garnish.",
"Do not use square-grid backgrounds, default repeated dotted notebook texture, or textbook-page imitation.",
"Do not put decorative side rails or left stripes on cards, buttons, rows, or panels.",
"Do not make the scene a generic analytics dashboard or a template SaaS admin shell."
]
}
}