Platform-Native Adaptive Color
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
specification
philosophy
tokens
borders4 items
- accent width
- 3px
- character
- native hairlines, visible focus rings, and status-side rails rather than heavy outlines
- default width
- 1px
- style
- solid with patterned secondary state cues where meaning matters
colors12 items
motion3 items
- duration
- 160ms
- easing
- cubic-bezier(0.2, 0, 0, 1)
- philosophy
- short native-feeling feedback for focus, hover, sheet entrance, and segmented-control changes; no ornamental color cycling
radii5 items
- full
- 9999px
- lg
- 16px
- md
- 10px
- none
- 0
- sm
- 6px
shadows3 items
- lg
- 0 18px 48px rgba(29,29,31,0.14)
- md
- 0 8px 24px rgba(29,29,31,0.10)
- sm
- 0 1px 2px rgba(29,29,31,0.08)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- quiet system-gray canvas with optional very faint grid only for product orientation
- card style
- white or charcoal cards with 1px hairline border, compact header row, and small semantic state chips
- treatment
- adaptive neutral planes with semantic accent strips and no decorative brand wash
typography8 items
- base size
- 16px
- body font
- Inter
- google fonts url
- https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- heading font
- Inter
- letter spacing
- -0.011em
- line height
- 1.5
- mono font
- IBM Plex Mono
- scale ratio
- 1.2
rules
Compose screens as credible product workspaces: left navigation, top status toolbar, dense cards, tables, and editors arranged on a neutral canvas with clear semantic states.
Balanced enterprise density: compact controls and tables with enough whitespace for scannability, not oversized landing-page blocks.
Use typography, spacing, separators, elevation, icon labels, and position first; color reinforces role and state but never becomes the only hierarchy mechanism.
layout
mobile 375px, tablet 768px, desktop 1200px, wide 1440px
12-column desktop product grid with a persistent navigation rail, 8px spacing base, and card/table modules that collapse cleanly on small screens.
Use consistent 16/24/32px gutters, tight 8/12px control internals, and larger quiet margins only around major workspace zones.
guidance
- Reference semantic tokens such as primary, success, warning, error, info, surface, border, and muted in every component recipe.
- Provide icons, labels, patterns, or text for status so users are not forced to infer meaning from color alone.
- Tune neutral ramps and contrast separately for light and dark modes, including increased-contrast overrides where possible.
- Reserve saturated chroma for actions, statuses, selection, chart series, and explicit brand moments.
- Do not invent rainbow-only roles for ordinary cards, nav items, or inputs.
- Do not tint every control with brand blue or green; familiar neutral affordances are part of the language.
- Do not use low-contrast placeholder text, disabled controls, or gray borders that disappear on dark backgrounds.
- Do not build decorative gradients unless they are editorial exceptions outside core product components.
katagami spec
# Platform-Native Adaptive Color ## Philosophy A restrained, platform-native palette system for production digital products: semantic system blues and greens, disciplined neutrals, legible status colors, and adaptive light/dark appearances that feel credible on Apple- and Material-like surfaces without copying either literally. ### Values - Production credibility over novelty - Semantic color roles before brand color names - Accessible contrast and non-color state cues - Adaptive light and dark appearances - Neutral foundations with controlled chroma ### Anti-Values - Rainbow role inflation for ordinary interface states - Brand-tinted basics that make controls harder to recognize - Low-contrast gray-on-gray panels - Using color as the only carrier of status or priority ### Visual Character - Use CSS custom properties for semantic roles, with light and dark values switched by media query rather than component-specific hard-coded hex colors. - Build most surfaces from near-neutral gray ramps with 1px separators, subtle inset hairlines, and only small blue or green accents for primary actions and success states. - Pair every colored status mark with an icon, label, border pattern, or text treatment so warnings, errors, and charts remain understandable without hue alone. - Keep component geometry familiar: rounded rectangles, system-like focus rings, restrained shadows, and density levels that resemble native platform controls. ## Tokens ### Borders - **Accent Width**: 3px - **Character**: native hairlines, visible focus rings, and status-side rails rather than heavy outlines - **Default Width**: 1px - **Style**: solid with patterned secondary state cues where meaning matters ### Colors | Name | Value | |------|-------| | accent | `#5E5CE6` | | background | `#F7F8FA` | | border | `#D7DAE0` | | error | `#D92D20` | | info | `#2563EB` | | muted | `#6B7280` | | primary | `#0A84FF` | | secondary | `#30D158` | | success | `#12805C` | | surface | `#FFFFFF` | | text | `#1D1D1F` | | warning | `#B7791F` | ### Motion - **Duration**: 160ms - **Easing**: cubic-bezier(0.2, 0, 0, 1) - **Philosophy**: short native-feeling feedback for focus, hover, sheet entrance, and segmented-control changes; no ornamental color cycling ### Radii - **Full**: 9999px - **Lg**: 16px - **Md**: 10px - **None**: 0 - **Sm**: 6px ### Shadows - **Lg**: 0 18px 48px rgba(29,29,31,0.14) - **Md**: 0 8px 24px rgba(29,29,31,0.10) - **Sm**: 0 1px 2px rgba(29,29,31,0.08) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: quiet system-gray canvas with optional very faint grid only for product orientation - **Card Style**: white or charcoal cards with 1px hairline border, compact header row, and small semantic state chips - **Treatment**: adaptive neutral planes with semantic accent strips and no decorative brand wash ### Typography - **Base Size**: 16px - **Body Font**: Inter - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap - **Heading Font**: Inter - **Letter Spacing**: -0.011em - **Line Height**: 1.5 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.2 ## Rules ### Composition Compose screens as credible product workspaces: left navigation, top status toolbar, dense cards, tables, and editors arranged on a neutral canvas with clear semantic states. ### Density Balanced enterprise density: compact controls and tables with enough whitespace for scannability, not oversized landing-page blocks. ### Hierarchy Use typography, spacing, separators, elevation, icon labels, and position first; color reinforces role and state but never becomes the only hierarchy mechanism. ### Signature Patterns - Semantic side rails use a 3px tokenized accent border plus label text and icon so colored meaning is always paired with a second cue. - Adaptive control clusters use system-blue focus rings, neutral fills, and pressed states that work in both light and dark themes via CSS variables. - Status and chart tokens are split from brand tokens, using blue, green, amber, red, violet, and teal only for explicit semantic or data roles. - Dark mode keeps chroma lower and surfaces layered through neutral luminance steps, preventing glowing neon panels or over-branded affordances. ## Layout ### Breakpoints mobile 375px, tablet 768px, desktop 1200px, wide 1440px ### Grid 12-column desktop product grid with a persistent navigation rail, 8px spacing base, and card/table modules that collapse cleanly on small screens. ### Whitespace Use consistent 16/24/32px gutters, tight 8/12px control internals, and larger quiet margins only around major workspace zones. ## Guidance ### Do - Reference semantic tokens such as primary, success, warning, error, info, surface, border, and muted in every component recipe. - Provide icons, labels, patterns, or text for status so users are not forced to infer meaning from color alone. - Tune neutral ramps and contrast separately for light and dark modes, including increased-contrast overrides where possible. - Reserve saturated chroma for actions, statuses, selection, chart series, and explicit brand moments. ### Don't - Do not invent rainbow-only roles for ordinary cards, nav items, or inputs. - Do not tint every control with brand blue or green; familiar neutral affordances are part of the language. - Do not use low-contrast placeholder text, disabled controls, or gray borders that disappear on dark backgrounds. - Do not build decorative gradients unless they are editorial exceptions outside core product components.
DESIGN.md
---
version: "alpha"
name: "Platform-Native Adaptive Color"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#5E5CE6"
background: "#F7F8FA"
border: "#D7DAE0"
error: "#D92D20"
info: "#2563EB"
muted: "#6B7280"
primary: "#0A84FF"
secondary: "#30D158"
success: "#12805C"
surface: "#FFFFFF"
text: "#1D1D1F"
warning: "#B7791F"
typography:
headline-lg:
fontFamily: "Inter"
fontSize: "1.728rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.011em"
headline-md:
fontFamily: "Inter"
fontSize: "1.44rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.011em"
body-md:
fontFamily: "Inter"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.011em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "16px"
md: "10px"
none: "0px"
sm: "6px"
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"
---
# Platform-Native Adaptive Color
## Overview
A restrained, platform-native palette system for production digital products: semantic system blues and greens, disciplined neutrals, legible status colors, and adaptive light/dark appearances that feel credible on Apple- and Material-like surfaces without copying either literally.
### Values
- Production credibility over novelty
- Semantic color roles before brand color names
- Accessible contrast and non-color state cues
- Adaptive light and dark appearances
- Neutral foundations with controlled chroma
### Anti-Values
- Rainbow role inflation for ordinary interface states
- Brand-tinted basics that make controls harder to recognize
- Low-contrast gray-on-gray panels
- Using color as the only carrier of status or priority
### Visual Character
- Use CSS custom properties for semantic roles, with light and dark values switched by media query rather than component-specific hard-coded hex colors.
- Build most surfaces from near-neutral gray ramps with 1px separators, subtle inset hairlines, and only small blue or green accents for primary actions and success states.
- Pair every colored status mark with an icon, label, border pattern, or text treatment so warnings, errors, and charts remain understandable without hue alone.
- Keep component geometry familiar: rounded rectangles, system-like focus rings, restrained shadows, and density levels that resemble native platform controls.
## 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 | `#5E5CE6` |
| background | `#F7F8FA` |
| border | `#D7DAE0` |
| error | `#D92D20` |
| info | `#2563EB` |
| muted | `#6B7280` |
| primary | `#0A84FF` |
| secondary | `#30D158` |
| success | `#12805C` |
| surface | `#FFFFFF` |
| text | `#1D1D1F` |
| warning | `#B7791F` |
## Typography
- **Headline-Lg**: Inter, 1.728rem, weight 700, line-height 1.1.
- **Headline-Md**: Inter, 1.44rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
### Breakpoints
mobile 375px, tablet 768px, desktop 1200px, wide 1440px
### Grid
12-column desktop product grid with a persistent navigation rail, 8px spacing base, and card/table modules that collapse cleanly on small screens.
### Whitespace
Use consistent 16/24/32px gutters, tight 8/12px control internals, and larger quiet margins only around major workspace zones.
## Elevation & Depth
### Shadows
- **Lg**: 0 18px 48px rgba(29,29,31,0.14)
- **Md**: 0 8px 24px rgba(29,29,31,0.10)
- **Sm**: 0 1px 2px rgba(29,29,31,0.08)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `16px`
- **Md**: `10px`
- **None**: `0px`
- **Sm**: `6px`
### Surfaces
- **Bg Pattern**: quiet system-gray canvas with optional very faint grid only for product orientation
- **Card Style**: white or charcoal cards with 1px hairline border, compact header row, and small semantic state chips
- **Treatment**: adaptive neutral planes with semantic accent strips and no decorative brand wash
### Borders
- **Accent Width**: 3px
- **Character**: native hairlines, visible focus rings, and status-side rails rather than heavy outlines
- **Default Width**: 1px
- **Style**: solid with patterned secondary state cues where meaning matters
## Components
### Composition
Compose screens as credible product workspaces: left navigation, top status toolbar, dense cards, tables, and editors arranged on a neutral canvas with clear semantic states.
### Density
Balanced enterprise density: compact controls and tables with enough whitespace for scannability, not oversized landing-page blocks.
### Hierarchy
Use typography, spacing, separators, elevation, icon labels, and position first; color reinforces role and state but never becomes the only hierarchy mechanism.
### Signature Patterns
- Semantic side rails use a 3px tokenized accent border plus label text and icon so colored meaning is always paired with a second cue.
- Adaptive control clusters use system-blue focus rings, neutral fills, and pressed states that work in both light and dark themes via CSS variables.
- Status and chart tokens are split from brand tokens, using blue, green, amber, red, violet, and teal only for explicit semantic or data roles.
- Dark mode keeps chroma lower and surfaces layered through neutral luminance steps, preventing glowing neon panels or over-branded affordances.
## 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-019ea9b5-03c8-7be0-a172-fc613a20eeab/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 Reference semantic tokens such as primary, success, warning, error, info, surface, border, and muted in every component recipe.
- Do Provide icons, labels, patterns, or text for status so users are not forced to infer meaning from color alone.
- Do Tune neutral ramps and contrast separately for light and dark modes, including increased-contrast overrides where possible.
- Do Reserve saturated chroma for actions, statuses, selection, chart series, and explicit brand moments.
- Don't Do not invent rainbow-only roles for ordinary cards, nav items, or inputs.
- Don't Do not tint every control with brand blue or green; familiar neutral affordances are part of the language.
- Don't Do not use low-contrast placeholder text, disabled controls, or gray borders that disappear on dark backgrounds.
- Don't Do not build decorative gradients unless they are editorial exceptions outside core product components.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "platform-native-adaptive-color",
"type": "registry:theme",
"title": "Platform-Native Adaptive Color shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F8FA",
"foreground": "#1D1D1F",
"card": "#FFFFFF",
"card-foreground": "#1D1D1F",
"popover": "#FFFFFF",
"popover-foreground": "#1D1D1F",
"primary": "#0A84FF",
"primary-foreground": "#ffffff",
"secondary": "#30D158",
"secondary-foreground": "#ffffff",
"muted": "#6B7280",
"muted-foreground": "#1D1D1F",
"accent": "#5E5CE6",
"accent-foreground": "#ffffff",
"destructive": "#D92D20",
"border": "#D7DAE0",
"input": "#D7DAE0",
"ring": "#5E5CE6",
"chart-1": "#0A84FF",
"chart-2": "#30D158",
"chart-3": "#5E5CE6",
"chart-4": "#12805C",
"chart-5": "#B7791F",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#1D1D1F",
"sidebar-primary": "#0A84FF",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2563EB",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D7DAE0",
"sidebar-ring": "#5E5CE6",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0A84FF",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#5E5CE6",
"accent-foreground": "#ffffff",
"destructive": "#D92D20",
"border": "#303642",
"input": "#303642",
"ring": "#5E5CE6",
"chart-1": "#0A84FF",
"chart-2": "#30D158",
"chart-3": "#5E5CE6",
"chart-4": "#12805C",
"chart-5": "#B7791F",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0A84FF",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5E5CE6",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#5E5CE6",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b5-03c8-7be0-a172-fc613a20eeab",
"slug": "platform-native-adaptive-color",
"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: #F7F8FA;
--foreground: #1D1D1F;
--card: #FFFFFF;
--card-foreground: #1D1D1F;
--popover: #FFFFFF;
--popover-foreground: #1D1D1F;
--primary: #0A84FF;
--primary-foreground: #ffffff;
--secondary: #30D158;
--secondary-foreground: #ffffff;
--muted: #6B7280;
--muted-foreground: #1D1D1F;
--accent: #5E5CE6;
--accent-foreground: #ffffff;
--destructive: #D92D20;
--border: #D7DAE0;
--input: #D7DAE0;
--ring: #5E5CE6;
--chart-1: #0A84FF;
--chart-2: #30D158;
--chart-3: #5E5CE6;
--chart-4: #12805C;
--chart-5: #B7791F;
--sidebar: #FFFFFF;
--sidebar-foreground: #1D1D1F;
--sidebar-primary: #0A84FF;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2563EB;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #D7DAE0;
--sidebar-ring: #5E5CE6;
--radius: 10px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #0A84FF;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #5E5CE6;
--accent-foreground: #ffffff;
--destructive: #D92D20;
--border: #303642;
--input: #303642;
--ring: #5E5CE6;
--chart-1: #0A84FF;
--chart-2: #30D158;
--chart-3: #5E5CE6;
--chart-4: #12805C;
--chart-5: #B7791F;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #0A84FF;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #5E5CE6;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #5E5CE6;
--radius: 10px;
}
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 PlatformNativeAdaptiveColorShadcnKit() {
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">Platform-Native Adaptive Color</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": "platform-native-adaptive-color",
"type": "registry:theme",
"title": "Platform-Native Adaptive Color shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F8FA",
"foreground": "#1D1D1F",
"card": "#FFFFFF",
"card-foreground": "#1D1D1F",
"popover": "#FFFFFF",
"popover-foreground": "#1D1D1F",
"primary": "#0A84FF",
"primary-foreground": "#ffffff",
"secondary": "#30D158",
"secondary-foreground": "#ffffff",
"muted": "#6B7280",
"muted-foreground": "#1D1D1F",
"accent": "#5E5CE6",
"accent-foreground": "#ffffff",
"destructive": "#D92D20",
"border": "#D7DAE0",
"input": "#D7DAE0",
"ring": "#5E5CE6",
"chart-1": "#0A84FF",
"chart-2": "#30D158",
"chart-3": "#5E5CE6",
"chart-4": "#12805C",
"chart-5": "#B7791F",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#1D1D1F",
"sidebar-primary": "#0A84FF",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2563EB",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D7DAE0",
"sidebar-ring": "#5E5CE6",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0A84FF",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#5E5CE6",
"accent-foreground": "#ffffff",
"destructive": "#D92D20",
"border": "#303642",
"input": "#303642",
"ring": "#5E5CE6",
"chart-1": "#0A84FF",
"chart-2": "#30D158",
"chart-3": "#5E5CE6",
"chart-4": "#12805C",
"chart-5": "#B7791F",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0A84FF",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5E5CE6",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#5E5CE6",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b5-03c8-7be0-a172-fc613a20eeab",
"slug": "platform-native-adaptive-color",
"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"
]
}
}
}
# Platform-Native Adaptive Color shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate a restrained platform-native adaptive palette into shadcn/ui without over-branding basic affordances. Components reference semantic tokens only, preserve neutral foundations, and pair all color states with labels, icons, borders, or patterns.
## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, table.
## Token cues
Use primary for default action/focus, secondary/success for valid completion, warning/error/info for explicit states, surface/background/border/muted for structure. Do not create component-local rainbow roles.
## Visual character to preserve
Adaptive CSS variables; native hairline borders; compact rounded controls; 3px semantic side rails; visible focus rings; status labels that include text and icon cues; low-chroma dark mode.
## ShadSync visual profile
family: platform-native; material: adaptive-neutral; contour: rounded-rect; border: hairline-plus-semantic-rail; underlay: false; grain: false; stickerBadges: false; motion: native-160ms; density: balanced-compact; accents: blue, green, amber, red, violet, teal.
## Signature component recipes
- button: neutral outline by default; primary uses bg-primary text-primary-foreground; focus-visible ring-primary/25; destructive only for destructive intent.
- card: bg-card border-border rounded-lg shadow-sm; optional border-l-4 semantic rail for state cards.
- input, textarea, select: neutral surface, 1px border, rounded-md, placeholder-muted, focus ring plus border-primary.
- dialog and sheet: surface panel, neutral overlay, compact title rows, semantic footer actions; no decorative gradient panel.
- tabs: segmented-control style on muted background with selected tab on surface and text-primary.
- badge: include icon or text prefix; success/warning/error/info variants have border and label cue.
- separator: hairline neutral divider; never use colored separators except semantic rail.
- checkbox, switch, slider: familiar native geometry; checked state primary or success only when semantically valid.
- tooltip and dropdown-menu: surface, hairline border, shadow-md, compact spacing.
- table: readable row separators, muted uppercase headers, status badge cells with icon plus text.
## Preview shots
application-shell, detail-editor, and data-operations must look like product screens, not inventories.
## Implementation contract
Import local primitives from `@/components/ui/*`. Use the Katagami DESIGN.with-shadcn.md, shadcn.json, shadcn-components.md, and shadcn-shots.json files. Do not invent a second component system.
## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
import { Input } from "@/components/ui/input"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
export function NativeAdaptiveReleaseCard() {
return <Card className="border-l-4 border-l-primary shadow-sm">
<CardHeader className="space-y-1"><CardTitle>Deployment queue</CardTitle></CardHeader>
<CardContent className="space-y-4">
<div className="flex gap-2"><Input value="Semantic tokens only" readOnly /><Button>Approve</Button></div>
<Table><TableHeader><TableRow><TableHead>Service</TableHead><TableHead>Status</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>Payment API</TableCell><TableCell><Badge variant="outline">● Ready</Badge></TableCell></TableRow></TableBody></Table>
</CardContent>
</Card>
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to button."
},
{
"component": "card",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to card."
},
{
"component": "input",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to input."
},
{
"component": "textarea",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to textarea."
},
{
"component": "select",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to select."
},
{
"component": "dialog",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to dialog."
},
{
"component": "sheet",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to sheet."
},
{
"component": "tabs",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to tabs."
},
{
"component": "badge",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to badge."
},
{
"component": "separator",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to separator."
},
{
"component": "checkbox",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to checkbox."
},
{
"component": "switch",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to switch."
},
{
"component": "slider",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to slider."
},
{
"component": "tooltip",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to tooltip."
},
{
"component": "dropdown-menu",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to dropdown-menu."
},
{
"component": "table",
"recipe": "Use semantic tokens, neutral surfaces, visible focus rings, compact rounded geometry, and redundant state cues appropriate to table."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"rainbow nav",
"color-only status",
"decorative gradients"
],
"composition": "Navigation rail, top toolbar, metric cards with semantic side rails, and release table.",
"id": "application-shell",
"mustShowStates": [
"primary action focus",
"success badge",
"warning badge",
"error badge",
"info row"
],
"primitives": [
"button",
"card",
"badge",
"separator",
"dropdown-menu",
"table",
"tooltip"
],
"scene": {
"actions": [
"Approve release",
"Export report"
],
"description": "A credible product shell using semantic color roles and neutral platform surfaces.",
"eyebrow": "Operations workspace",
"headline": "Adaptive release cockpit",
"rows": [
{
"owner": "Kim",
"service": "Payment API",
"status": "Ready"
},
{
"owner": "Mina",
"service": "Identity sync",
"status": "Blocked"
}
],
"stats": [
{
"label": "Healthy services",
"state": "success",
"value": "42"
},
{
"label": "Needs review",
"state": "warning",
"value": "7"
},
{
"label": "Blocked",
"state": "error",
"value": "2"
}
]
}
},
{
"avoid": [
"brand-tinted fields",
"missing labels",
"low contrast placeholders"
],
"composition": "Policy detail editor with segmented tabs, form controls, toggles, and a confirmation dialog.",
"id": "detail-editor",
"mustShowStates": [
"focus ring",
"disabled neutral",
"warning helper text",
"success confirmation"
],
"primitives": [
"input",
"textarea",
"select",
"tabs",
"checkbox",
"switch",
"slider",
"dialog",
"sheet",
"button",
"badge"
],
"scene": {
"actions": [
"Save policy",
"Open sheet"
],
"description": "Form controls stay neutral until focus or explicit state changes require color.",
"eyebrow": "Policy editor",
"fields": [
{
"label": "Primary reviewer",
"value": "Operations design"
},
{
"label": "Risk level",
"value": "Warning — manual check required"
},
{
"label": "Notes",
"value": "Use semantic tokens only."
}
],
"headline": "Review semantic release policy"
}
},
{
"avoid": [
"unlabelled chart hues",
"neon dark mode",
"decorative rainbow series"
],
"composition": "Data operations table with colorblind-safe statuses and patterned chart cues.",
"id": "data-operations",
"mustShowStates": [
"chart series with labels",
"striped warning/error marks",
"selected row",
"dropdown action"
],
"primitives": [
"card",
"table",
"badge",
"separator",
"button",
"dropdown-menu",
"tooltip"
],
"scene": {
"actions": [
"Filter",
"Download CSV"
],
"description": "Series use distinct hues, labels, and patterns rather than hue alone.",
"eyebrow": "Data safety",
"headline": "Chart-safe operations review",
"rows": [
{
"metric": "Latency",
"series": "Info blue",
"value": "128ms"
},
{
"metric": "Retry risk",
"series": "Warning amber striped",
"value": "7 jobs"
},
{
"metric": "Failures",
"series": "Error red striped",
"value": "2 jobs"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"blue",
"green",
"amber",
"red",
"violet",
"teal"
],
"border": "hairline-plus-semantic-rail",
"contour": "rounded-rect",
"density": "balanced-compact",
"family": "platform-native",
"grain": false,
"material": "adaptive-neutral",
"motion": "native-160ms",
"stickerBadges": false,
"underlay": false
}
}