Signal Clay Status System
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
- 4px
- character
- Neutral borders are clay-gray; stateful borders become saturated rails or focus rings paired with pale washes.
- default width
- 1px
- style
- solid
colors12 items
motion3 items
- duration
- 140ms
- easing
- cubic-bezier(.2,0,.1,1)
- philosophy
- Motion is functional: focus rings snap in, selected rows settle with a short color fade, dialogs lift 4px with no decorative bounce.
radii5 items
- full
- 9999px
- lg
- 14px
- md
- 8px
- none
- 0
- sm
- 4px
shadows3 items
- lg
- 0 22px 56px rgba(45,34,22,0.16)
- md
- 0 10px 24px rgba(45,34,22,0.10)
- sm
- 0 1px 0 rgba(22,19,15,0.08)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Subtle 16px dot grid in low-opacity umber and horizontal threshold rules to help dense operational screens align.
- card style
- Cards use 1px clay borders, flat tops, a tiny 4px semantic rail when stateful, and restrained warm shadows only for active overlays.
- treatment
- Warm neutral canvas with raised ivory cards, sand panels, and semantic state washes below saturated accents.
typography8 items
- base size
- 16px
- body font
- Source Sans 3
- google fonts url
- https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Source+Sans+3:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap
- heading font
- Atkinson Hyperlegible
- letter spacing
- -0.01em
- line height
- 1.55
- mono font
- IBM Plex Mono
- scale ratio
- 1.2
rules
Use a calm app-shell composition with a warm neutral page, one dense data region, and a right-side status inspector. Saturated colors appear as rails, rings, badges, dots, and command surfaces rather than full-bleed decoration.
Medium-high product density with 8px baseline spacing, compact rows, readable 16px body text, and generous separation around decision-critical state clusters.
Hierarchy comes from contrast, measured spacing, and role-specific color mapping: black text for primary content, muted brown for metadata, blue for action/focus, green/orange/red/blue state rails for success-warning-danger-info.
layout
mobile <= 640px, tablet 641px-1024px, desktop >= 1025px
Compact but not cramped; status evidence, controls, and data rows fit operational screens while maintaining AA contrast and keyboard-visible focus.
Desktop uses a 12-column shell: 220px navigation, 1fr operational table, and 340px semantic inspector; tablet becomes 8 columns with inspector below; mobile becomes one column with sticky action bar.
Whitespace is deliberately quiet: 24-32px around major panels, 8-12px inside dense rows, and extra 16px before any destructive or warning cluster so state changes are not missed.
guidance
- Map every raw hex to semantic tokens before applying it in components or charts.
- Use saturated color for focus, selected, success, warning, danger, and info states while keeping base surfaces warm and muted.
- Pair color with labels, icons, rails, or pattern so users are not forced to infer state from hue alone.
- Test every foreground/background pairing in light and dark behavior, especially warning text and disabled controls.
- Do not use low-contrast pastel chips for warning or danger states.
- Do not flood whole dashboards with accent blue; reserve it for action, focus, and selection.
- Do not use neutral gray as the only disabled or inactive cue without opacity and text changes.
- Do not mix primitive palette names into product copy; users should see intent labels, not token jargon.
katagami spec
# Signal Clay Status System ## Philosophy Signal Clay Status System is a restrained product-UI palette language that uses warm neutral foundations, muted clay surfaces, and deliberately high-contrast signal colors for focus, selection, success, warning, danger, and information states. It borrows from official design-system practices around semantic roles, dynamic light/dark behavior, and accessible state mapping while keeping the visual field calm enough for dense operational work. ### Values - Warm neutrality as the default reading environment, with chroma reserved for state and intent rather than decoration. - Accessible contrast first: text, focus rings, selected rows, and destructive states remain legible in both light and dark themes. - Primitive-to-semantic mapping: raw colors are never used directly when a role token such as surface, accent, success, warning, danger, or info can carry the meaning. - Resilient state behavior where hover, active, disabled, selected, and focus treatments are visible without relying on hue alone. ### Anti-Values - No rainbow dashboards, decorative gradient floods, low-contrast pastel status chips, or chroma used merely to fill empty space. - No single-brand accent overwhelming semantic status colors; product action and system state must remain visually separable. - No brittle light-only palette assumptions, translucent text, or invisible focus outlines on colored surfaces. ### Visual Character - CSS uses a warm neutral five-step background stack: page ochre, raised ivory cards, muted sand panels, clay-tinted selected rows, and ink text for 7:1-plus reading contrast. - Every semantic state is rendered as a paired token: a saturated high-contrast left rail or ring plus a pale warm wash, so status remains recognizable without filling the whole component. - Interactive controls use thick two-color focus treatment: a near-black inner border and a saturated outer ring offset by 2px, making keyboard position visible on light and dark surfaces. - Charts, tables, and cards reserve saturation for tiny structural accents such as rail bars, selection ticks, status dots, and command buttons while large surfaces stay low-chroma. - Dark mode is expressed by inverting the neutral stack to umber and charcoal while preserving the same semantic hues at adjusted luminance, rather than simply dimming the light palette. ## Tokens ### Borders - **Accent Width**: 4px - **Character**: Neutral borders are clay-gray; stateful borders become saturated rails or focus rings paired with pale washes. - **Default Width**: 1px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#005FCC` | | background | `#F4EFE6` | | border | `#CFC3B2` | | error | `#C1121F` | | info | `#006EB8` | | muted | `#8B7C6B` | | primary | `#0E1111` | | secondary | `#6B5A49` | | success | `#007A4D` | | surface | `#FFFDF8` | | text | `#16130F` | | warning | `#B45F00` | ### Motion - **Duration**: 140ms - **Easing**: cubic-bezier(.2,0,.1,1) - **Philosophy**: Motion is functional: focus rings snap in, selected rows settle with a short color fade, dialogs lift 4px with no decorative bounce. ### Radii - **Full**: 9999px - **Lg**: 14px - **Md**: 8px - **None**: 0 - **Sm**: 4px ### Shadows - **Lg**: 0 22px 56px rgba(45,34,22,0.16) - **Md**: 0 10px 24px rgba(45,34,22,0.10) - **Sm**: 0 1px 0 rgba(22,19,15,0.08) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Subtle 16px dot grid in low-opacity umber and horizontal threshold rules to help dense operational screens align. - **Card Style**: Cards use 1px clay borders, flat tops, a tiny 4px semantic rail when stateful, and restrained warm shadows only for active overlays. - **Treatment**: Warm neutral canvas with raised ivory cards, sand panels, and semantic state washes below saturated accents. ### Typography - **Base Size**: 16px - **Body Font**: Source Sans 3 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Source+Sans+3:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap - **Heading Font**: Atkinson Hyperlegible - **Letter Spacing**: -0.01em - **Line Height**: 1.55 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.2 ## Rules ### Composition Use a calm app-shell composition with a warm neutral page, one dense data region, and a right-side status inspector. Saturated colors appear as rails, rings, badges, dots, and command surfaces rather than full-bleed decoration. ### Density Medium-high product density with 8px baseline spacing, compact rows, readable 16px body text, and generous separation around decision-critical state clusters. ### Hierarchy Hierarchy comes from contrast, measured spacing, and role-specific color mapping: black text for primary content, muted brown for metadata, blue for action/focus, green/orange/red/blue state rails for success-warning-danger-info. ### Signature Patterns - Semantic rail cards: each status card has a 4px saturated left rail, a pale tint background, and an explicit text label so hue never carries meaning alone. - Contrast ledger rows: table rows include a small state dot, text status, and selected-row clay wash with an accent-blue check rail for resilient selection. - Dual-ring focus: controls, tabs, and table selections use a dark inner stroke plus offset saturated outer ring to stay visible against neutral or colored surfaces. - Token map strip: the interface includes a primitive-to-semantic mapping band showing base, surface, accent, and intent tokens as restrained chips with contrast notes. ## Layout ### Breakpoints mobile <= 640px, tablet 641px-1024px, desktop >= 1025px ### Density Compact but not cramped; status evidence, controls, and data rows fit operational screens while maintaining AA contrast and keyboard-visible focus. ### Grid Desktop uses a 12-column shell: 220px navigation, 1fr operational table, and 340px semantic inspector; tablet becomes 8 columns with inspector below; mobile becomes one column with sticky action bar. ### Whitespace Whitespace is deliberately quiet: 24-32px around major panels, 8-12px inside dense rows, and extra 16px before any destructive or warning cluster so state changes are not missed. ## Guidance ### Do - Map every raw hex to semantic tokens before applying it in components or charts. - Use saturated color for focus, selected, success, warning, danger, and info states while keeping base surfaces warm and muted. - Pair color with labels, icons, rails, or pattern so users are not forced to infer state from hue alone. - Test every foreground/background pairing in light and dark behavior, especially warning text and disabled controls. ### Don't - Do not use low-contrast pastel chips for warning or danger states. - Do not flood whole dashboards with accent blue; reserve it for action, focus, and selection. - Do not use neutral gray as the only disabled or inactive cue without opacity and text changes. - Do not mix primitive palette names into product copy; users should see intent labels, not token jargon. ### Accessibility Target WCAG AA or better: primary text on background exceeds 12:1, accent-blue focus on warm surfaces exceeds 4.5:1, and each semantic state includes a label, rail, or icon in addition to hue. ### Usage Context Best for admin consoles, health/safety tools, government-service forms, financial operations, observability products, and any product UI where semantic state clarity matters more than brand spectacle.
DESIGN.md
---
version: "alpha"
name: "Signal Clay Status System"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#005FCC"
background: "#F4EFE6"
border: "#CFC3B2"
error: "#C1121F"
info: "#006EB8"
muted: "#8B7C6B"
primary: "#0E1111"
secondary: "#6B5A49"
success: "#007A4D"
surface: "#FFFDF8"
text: "#16130F"
warning: "#B45F00"
typography:
headline-lg:
fontFamily: "Atkinson Hyperlegible"
fontSize: "1.728rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Atkinson Hyperlegible"
fontSize: "1.44rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "Source Sans 3"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.01em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "14px"
md: "8px"
none: "0px"
sm: "4px"
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"
---
# Signal Clay Status System
## Overview
Signal Clay Status System is a restrained product-UI palette language that uses warm neutral foundations, muted clay surfaces, and deliberately high-contrast signal colors for focus, selection, success, warning, danger, and information states. It borrows from official design-system practices around semantic roles, dynamic light/dark behavior, and accessible state mapping while keeping the visual field calm enough for dense operational work.
### Values
- Warm neutrality as the default reading environment, with chroma reserved for state and intent rather than decoration.
- Accessible contrast first: text, focus rings, selected rows, and destructive states remain legible in both light and dark themes.
- Primitive-to-semantic mapping: raw colors are never used directly when a role token such as surface, accent, success, warning, danger, or info can carry the meaning.
- Resilient state behavior where hover, active, disabled, selected, and focus treatments are visible without relying on hue alone.
### Anti-Values
- No rainbow dashboards, decorative gradient floods, low-contrast pastel status chips, or chroma used merely to fill empty space.
- No single-brand accent overwhelming semantic status colors; product action and system state must remain visually separable.
- No brittle light-only palette assumptions, translucent text, or invisible focus outlines on colored surfaces.
### Visual Character
- CSS uses a warm neutral five-step background stack: page ochre, raised ivory cards, muted sand panels, clay-tinted selected rows, and ink text for 7:1-plus reading contrast.
- Every semantic state is rendered as a paired token: a saturated high-contrast left rail or ring plus a pale warm wash, so status remains recognizable without filling the whole component.
- Interactive controls use thick two-color focus treatment: a near-black inner border and a saturated outer ring offset by 2px, making keyboard position visible on light and dark surfaces.
- Charts, tables, and cards reserve saturation for tiny structural accents such as rail bars, selection ticks, status dots, and command buttons while large surfaces stay low-chroma.
- Dark mode is expressed by inverting the neutral stack to umber and charcoal while preserving the same semantic hues at adjusted luminance, rather than simply dimming the light palette.
## 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 | `#005FCC` |
| background | `#F4EFE6` |
| border | `#CFC3B2` |
| error | `#C1121F` |
| info | `#006EB8` |
| muted | `#8B7C6B` |
| primary | `#0E1111` |
| secondary | `#6B5A49` |
| success | `#007A4D` |
| surface | `#FFFDF8` |
| text | `#16130F` |
| warning | `#B45F00` |
## Typography
- **Headline-Lg**: Atkinson Hyperlegible, 1.728rem, weight 700, line-height 1.1.
- **Headline-Md**: Atkinson Hyperlegible, 1.44rem, weight 600, line-height 1.15.
- **Body-Md**: Source Sans 3, 16px, weight 400, line-height 1.55.
- **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 <= 640px, tablet 641px-1024px, desktop >= 1025px
### Density
Compact but not cramped; status evidence, controls, and data rows fit operational screens while maintaining AA contrast and keyboard-visible focus.
### Grid
Desktop uses a 12-column shell: 220px navigation, 1fr operational table, and 340px semantic inspector; tablet becomes 8 columns with inspector below; mobile becomes one column with sticky action bar.
### Whitespace
Whitespace is deliberately quiet: 24-32px around major panels, 8-12px inside dense rows, and extra 16px before any destructive or warning cluster so state changes are not missed.
## Elevation & Depth
### Shadows
- **Lg**: 0 22px 56px rgba(45,34,22,0.16)
- **Md**: 0 10px 24px rgba(45,34,22,0.10)
- **Sm**: 0 1px 0 rgba(22,19,15,0.08)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `14px`
- **Md**: `8px`
- **None**: `0px`
- **Sm**: `4px`
### Surfaces
- **Bg Pattern**: Subtle 16px dot grid in low-opacity umber and horizontal threshold rules to help dense operational screens align.
- **Card Style**: Cards use 1px clay borders, flat tops, a tiny 4px semantic rail when stateful, and restrained warm shadows only for active overlays.
- **Treatment**: Warm neutral canvas with raised ivory cards, sand panels, and semantic state washes below saturated accents.
### Borders
- **Accent Width**: 4px
- **Character**: Neutral borders are clay-gray; stateful borders become saturated rails or focus rings paired with pale washes.
- **Default Width**: 1px
- **Style**: solid
## Components
### Composition
Use a calm app-shell composition with a warm neutral page, one dense data region, and a right-side status inspector. Saturated colors appear as rails, rings, badges, dots, and command surfaces rather than full-bleed decoration.
### Density
Medium-high product density with 8px baseline spacing, compact rows, readable 16px body text, and generous separation around decision-critical state clusters.
### Hierarchy
Hierarchy comes from contrast, measured spacing, and role-specific color mapping: black text for primary content, muted brown for metadata, blue for action/focus, green/orange/red/blue state rails for success-warning-danger-info.
### Signature Patterns
- Semantic rail cards: each status card has a 4px saturated left rail, a pale tint background, and an explicit text label so hue never carries meaning alone.
- Contrast ledger rows: table rows include a small state dot, text status, and selected-row clay wash with an accent-blue check rail for resilient selection.
- Dual-ring focus: controls, tabs, and table selections use a dark inner stroke plus offset saturated outer ring to stay visible against neutral or colored surfaces.
- Token map strip: the interface includes a primitive-to-semantic mapping band showing base, surface, accent, and intent tokens as restrained chips with contrast notes.
## 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-019ea9a1-d843-7ff1-b0c4-ede277c53f14/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 Map every raw hex to semantic tokens before applying it in components or charts.
- Do Use saturated color for focus, selected, success, warning, danger, and info states while keeping base surfaces warm and muted.
- Do Pair color with labels, icons, rails, or pattern so users are not forced to infer state from hue alone.
- Do Test every foreground/background pairing in light and dark behavior, especially warning text and disabled controls.
- Don't Do not use low-contrast pastel chips for warning or danger states.
- Don't Do not flood whole dashboards with accent blue; reserve it for action, focus, and selection.
- Don't Do not use neutral gray as the only disabled or inactive cue without opacity and text changes.
- Don't Do not mix primitive palette names into product copy; users should see intent labels, not token jargon.
### Accessibility
Target WCAG AA or better: primary text on background exceeds 12:1, accent-blue focus on warm surfaces exceeds 4.5:1, and each semantic state includes a label, rail, or icon in addition to hue.
### Usage Context
Best for admin consoles, health/safety tools, government-service forms, financial operations, observability products, and any product UI where semantic state clarity matters more than brand spectacle.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "signal-clay-status-system",
"type": "registry:theme",
"title": "Signal Clay Status System shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE6",
"foreground": "#16130F",
"card": "#FFFDF8",
"card-foreground": "#16130F",
"popover": "#FFFDF8",
"popover-foreground": "#16130F",
"primary": "#0E1111",
"primary-foreground": "#ffffff",
"secondary": "#6B5A49",
"secondary-foreground": "#ffffff",
"muted": "#8B7C6B",
"muted-foreground": "#16130F",
"accent": "#005FCC",
"accent-foreground": "#ffffff",
"destructive": "#C1121F",
"border": "#CFC3B2",
"input": "#CFC3B2",
"ring": "#005FCC",
"chart-1": "#0E1111",
"chart-2": "#6B5A49",
"chart-3": "#005FCC",
"chart-4": "#007A4D",
"chart-5": "#B45F00",
"sidebar": "#FFFDF8",
"sidebar-foreground": "#16130F",
"sidebar-primary": "#0E1111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#006EB8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#CFC3B2",
"sidebar-ring": "#005FCC",
"radius": "8px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0E1111",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#005FCC",
"accent-foreground": "#ffffff",
"destructive": "#C1121F",
"border": "#303642",
"input": "#303642",
"ring": "#005FCC",
"chart-1": "#0E1111",
"chart-2": "#6B5A49",
"chart-3": "#005FCC",
"chart-4": "#007A4D",
"chart-5": "#B45F00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0E1111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#005FCC",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#005FCC",
"radius": "8px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a1-d843-7ff1-b0c4-ede277c53f14",
"slug": "signal-clay-status-system",
"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: #F4EFE6;
--foreground: #16130F;
--card: #FFFDF8;
--card-foreground: #16130F;
--popover: #FFFDF8;
--popover-foreground: #16130F;
--primary: #0E1111;
--primary-foreground: #ffffff;
--secondary: #6B5A49;
--secondary-foreground: #ffffff;
--muted: #8B7C6B;
--muted-foreground: #16130F;
--accent: #005FCC;
--accent-foreground: #ffffff;
--destructive: #C1121F;
--border: #CFC3B2;
--input: #CFC3B2;
--ring: #005FCC;
--chart-1: #0E1111;
--chart-2: #6B5A49;
--chart-3: #005FCC;
--chart-4: #007A4D;
--chart-5: #B45F00;
--sidebar: #FFFDF8;
--sidebar-foreground: #16130F;
--sidebar-primary: #0E1111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #006EB8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #CFC3B2;
--sidebar-ring: #005FCC;
--radius: 8px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #0E1111;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #005FCC;
--accent-foreground: #ffffff;
--destructive: #C1121F;
--border: #303642;
--input: #303642;
--ring: #005FCC;
--chart-1: #0E1111;
--chart-2: #6B5A49;
--chart-3: #005FCC;
--chart-4: #007A4D;
--chart-5: #B45F00;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #0E1111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #005FCC;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #005FCC;
--radius: 8px;
}
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 SignalClayStatusSystemShadcnKit() {
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">Signal Clay Status System</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": "signal-clay-status-system",
"type": "registry:theme",
"title": "Signal Clay Status System shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE6",
"foreground": "#16130F",
"card": "#FFFDF8",
"card-foreground": "#16130F",
"popover": "#FFFDF8",
"popover-foreground": "#16130F",
"primary": "#0E1111",
"primary-foreground": "#ffffff",
"secondary": "#6B5A49",
"secondary-foreground": "#ffffff",
"muted": "#8B7C6B",
"muted-foreground": "#16130F",
"accent": "#005FCC",
"accent-foreground": "#ffffff",
"destructive": "#C1121F",
"border": "#CFC3B2",
"input": "#CFC3B2",
"ring": "#005FCC",
"chart-1": "#0E1111",
"chart-2": "#6B5A49",
"chart-3": "#005FCC",
"chart-4": "#007A4D",
"chart-5": "#B45F00",
"sidebar": "#FFFDF8",
"sidebar-foreground": "#16130F",
"sidebar-primary": "#0E1111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#006EB8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#CFC3B2",
"sidebar-ring": "#005FCC",
"radius": "8px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0E1111",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#005FCC",
"accent-foreground": "#ffffff",
"destructive": "#C1121F",
"border": "#303642",
"input": "#303642",
"ring": "#005FCC",
"chart-1": "#0E1111",
"chart-2": "#6B5A49",
"chart-3": "#005FCC",
"chart-4": "#007A4D",
"chart-5": "#B45F00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0E1111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#005FCC",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#005FCC",
"radius": "8px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a1-d843-7ff1-b0c4-ede277c53f14",
"slug": "signal-clay-status-system",
"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"
]
}
}
}
# Signal Clay Status System shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ea9a1-d843-7ff1-b0c4-ede277c53f14`
Slug: `signal-clay-status-system`
## Intent
Signal Clay Status System is a restrained product-UI palette language that uses warm neutral foundations, muted clay surfaces, and deliberately high-contrast signal colors for focus, selection, success, warning, danger, and information states. It borrows from official design-system practices around semantic roles, dynamic light/dark behavior, and accessible state mapping while keeping the visual field calm enough for dense operational work.
## 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": "#005FCC",
"background": "#F4EFE6",
"border": "#CFC3B2",
"error": "#C1121F",
"info": "#006EB8",
"muted": "#8B7C6B",
"primary": "#0E1111",
"secondary": "#6B5A49",
"success": "#007A4D",
"surface": "#FFFDF8",
"text": "#16130F",
"warning": "#B45F00"
}
Typography:
{
"base_size": "16px",
"body_font": "Source Sans 3",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Source+Sans+3:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap",
"heading_font": "Atkinson Hyperlegible",
"letter_spacing": "-0.01em",
"line_height": 1.55,
"mono_font": "IBM Plex Mono",
"scale_ratio": 1.2
}
## Visual character to preserve
- CSS uses a warm neutral five-step background stack: page ochre, raised ivory cards, muted sand panels, clay-tinted selected rows, and ink text for 7:1-plus reading contrast.
- Every semantic state is rendered as a paired token: a saturated high-contrast left rail or ring plus a pale warm wash, so status remains recognizable without filling the whole component.
- Interactive controls use thick two-color focus treatment: a near-black inner border and a saturated outer ring offset by 2px, making keyboard position visible on light and dark surfaces.
- Charts, tables, and cards reserve saturation for tiny structural accents such as rail bars, selection ticks, status dots, and command buttons while large surfaces stay low-chroma.
- Dark mode is expressed by inverting the neutral stack to umber and charcoal while preserving the same semantic hues at adjusted luminance, rather than simply dimming the light palette.
## ShadSync visual profile
{
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"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/signal-clay-status-system/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: Map every raw hex to semantic tokens before applying it in components or charts.; Use saturated color for focus, selected, success, warning, danger, and info states while keeping base surfaces warm and muted.; Pair color with labels, icons, rails, or pattern so users are not forced to infer state from hue alone.; Test every foreground/background pairing in light and dark behavior, especially warning text and disabled controls.
- Do not: Do not use low-contrast pastel chips for warning or danger states.; Do not flood whole dashboards with accent blue; reserve it for action, focus, and selection.; Do not use neutral gray as the only disabled or inactive cue without opacity and text changes.; Do not mix primitive palette names into product copy; users should see intent labels, not token jargon.
## 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 SignalClayStatusSystemShadcnKit() {
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">Signal Clay Status System</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 <= 640px, tablet 641px-1024px, desktop >= 1025px",
"density": "Compact but not cramped; status evidence, controls, and data rows fit operational screens while maintaining AA contrast and keyboard-visible focus.",
"grid": "Desktop uses a 12-column shell: 220px navigation, 1fr operational table, and 340px semantic inspector; tablet becomes 8 columns with inspector below; mobile becomes one column with sticky action bar.",
"whitespace": "Whitespace is deliberately quiet: 24-32px around major panels, 8-12px inside dense rows, and extra 16px before any destructive or warning cluster so state changes are not missed."
}
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"primitive": "button",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "card",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "input",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "textarea",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "select",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "dialog",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "sheet",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "tabs",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "badge",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "separator",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "checkbox",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "switch",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "slider",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "tooltip",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "dropdown-menu",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
},
{
"primitive": "table",
"recipe": "Use Signal Clay tokens, warm neutral surfaces, clay borders, visible accent focus ring, compact spacing, and semantic rails/dots/labels when stateful."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"components": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"table",
"dropdown-menu"
],
"id": "application-shell",
"scene": {
"actions": [
"Review selected",
"Export ledger"
],
"description": "Dense but calm dashboard showing muted chroma surfaces and high-contrast state accents.",
"eyebrow": "Command center",
"headline": "Semantic operations queue",
"rows": [
{
"name": "Gateway audit",
"owner": "Ops",
"rail": "warning",
"status": "Warning"
},
{
"name": "Payment hold",
"owner": "Risk",
"rail": "error",
"status": "Danger"
},
{
"name": "Profile sync",
"owner": "Platform",
"rail": "success",
"status": "Success"
}
],
"stats": [
{
"label": "Open",
"state": "info",
"value": "128"
},
{
"label": "At risk",
"state": "warning",
"value": "17"
},
{
"label": "Resolved",
"state": "success",
"value": "91%"
}
]
},
"title": "Operations shell",
"visualIntent": "Warm neutral desktop console with navigation, data table, selected clay row, semantic rails, and right status inspector."
},
{
"components": [
"dialog",
"sheet",
"textarea",
"input",
"checkbox",
"switch",
"slider",
"tooltip",
"separator",
"button",
"badge"
],
"id": "detail-editor",
"scene": {
"actions": [
"Save policy",
"Escalate warning"
],
"description": "A focused edit view where every semantic color is paired with labels and structural affordances.",
"eyebrow": "Detail editor",
"fields": [
{
"label": "Policy name",
"value": "Semantic contrast audit"
},
{
"label": "Owner",
"value": "Design systems"
},
{
"label": "Warning threshold",
"value": "AA below target"
}
],
"headline": "Threshold policy review",
"stats": [
{
"label": "Focus visible",
"state": "success",
"value": "Pass"
},
{
"label": "Risk",
"state": "warning",
"value": "Medium"
}
]
},
"title": "Status detail editor",
"visualIntent": "Ivory form panel with explicit warning copy, dual focus treatment, and destructive area separated by whitespace."
},
{
"components": [
"table",
"card",
"badge",
"button",
"select",
"separator",
"tabs",
"tooltip"
],
"id": "data-operations",
"scene": {
"actions": [
"Apply mapping",
"View contrast notes"
],
"description": "Operational rows prove the palette supports muted chroma with high-contrast accents.",
"eyebrow": "Data ledger",
"headline": "Primitive-to-semantic mapping",
"rows": [
{
"hex": "#005FCC",
"state": "info",
"token": "accent",
"usage": "focus/action"
},
{
"hex": "#B45F00",
"state": "warning",
"token": "warning",
"usage": "threshold rail"
},
{
"hex": "#C1121F",
"state": "error",
"token": "error",
"usage": "destructive label"
}
],
"stats": [
{
"label": "AA pairs",
"state": "success",
"value": "12/12"
}
]
},
"title": "Data operations ledger",
"visualIntent": "Compact table rows with status dots, text states, selected wash, accent check rail, and token map strip."
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"accent-blue focus rails",
"success green status",
"warning orange thresholds",
"danger red destructive states",
"info cyan notices"
],
"border": "one-pixel-clay-plus-four-pixel-state-rail",
"contour": "measured-radius",
"density": "compact-operational",
"family": "warm-semantic-product",
"grain": "subtle-umber-dot-grid",
"material": "matte-clay-neutral",
"motion": "functional-short-fade-slide",
"stickerBadges": true,
"underlay": true
}
}