Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Compose each screen as molded trays pressed from a single continuous field, not boxed cards scattered on a canvas. Broad raised shells hold regions; inside them, data and controls sit in inset wells so the interface reads as a landscape of convex and concave forms.
Use depth before colour: the strongest action is the most raised element, secondary content sits flush, editable areas recess inward. The two accents are spent only on primary fills, progress, active tabs, and status beads.
Comfortable density with generous cushion around every cluster; rounded containment preserves the single-material illusion.
Desktop centres a contained column inside a molded shell; the landing hero alone spans the full viewport. A twelve-ish column rhythm resolves into halves and thirds that shrink with minmax(0,1fr) so nothing overflows.
The tablet band (768-1024) is designed on its own: the console rail turns horizontal, metric rows relax to two-up, split panels stack. Below 768 everything becomes a single cushioned column; tables drop the head row and reflow to label/value pairs.
Padded and air-cushioned: 24-32px within trays on desktop, ~20px on tablet, 16px on phone. Avoid narrow gutters that break the single-material illusion.
Every image is molded from the same pale putty as the interface: soft embossed bas-relief, one continuous material, delicate paired highlight and shadow from a top-left light, with faint mint and periwinkle glow beads. Soft operational relief, never sharp photo-real imagery.
embossed bas-relief in a single pale blue-grey material with top-left illumination and faint accent glow beads
cameo-relief
fl-019f7070-6b0f-7fb1-8a24-99a1c0bf4c89
# Cameo ## Philosophy Cameo carves an interface out of one continuous material. Actions rise as cushioned pillows, editable fields sink into inset wells, and status glows as a small light bead — so hierarchy reads by relief before it reads by colour. Calm, tactile, low-friction, never toy-like. ### Values - one continuous surface over fragmented panels - depth as hierarchy - quiet tactility - gentle contrast with legible text - calm productivity ### Anti-Values - hard skeletal borders - high-noise ornament - harsh contrast spikes - flat severity - aggressive motion ### Visual Character - all primary containers are pressed from a single pale field using paired highlight and shadow relief instead of borders - controls alternate between raised pillows and inset wells to signal clickable versus editable surfaces - geometry stays on one legal radius set (0/16/24/full), with capsule buttons, chips and tabs - status reads as a small luminous light bead aligned left, never a saturated fill - the soft modal floats in a blurred accent aura with a raised header over a recessed body ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#e7edf5` | | surface | `#eef3f9` | | surface_solid | `#eef3f9` | | text | `#2b3550` | | muted | `#7d89a6` | | border | `#d6deea` | | accent | `#7f8cff` | | accent_2 | `#7de3c3` | | accent_soft | `#dfe4ff` | | on_accent | `#ffffff` | | success | `#3fae8b` | | warning | `#d59544` | | error | `#d76079` | | info | `#5aa2df` | ### Typography - **Base Size**: 17px - **Body Font**: "Manrope", sans-serif - **Heading Font**: "Red Hat Display", sans-serif - **Mono Font**: "IBM Plex Mono", monospace - **Heading Weight**: 800 - **Heading Transform**: none - **Letter Spacing**: -0.01em - **Line Height**: 1.55 - **Scale Ratio**: 1.2 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&family=Red+Hat+Display:wght@500;700;800&display=swap ### Radii - **None**: 0px - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: -4px -4px 10px var(--hi), 4px 4px 12px var(--lo) - **Md**: -8px -8px 18px var(--hi), 9px 9px 20px var(--lo) - **Lg**: -14px -14px 30px var(--hi), 14px 14px 32px var(--lo) ### Spacing - **Base**: 8px - **Scale**: ["4px","8px","12px","16px","24px","32px","48px","64px"] ### Surfaces - **Treatment**: molded - **Card Style**: raised outer shell pressed from one field with inset internal wells; no borders - **Bg Pattern**: none ### Borders - **Default Width**: 0px - **Accent Width**: 0px - **Style**: none - **Character**: borders are replaced by tonal seams and shadow relief; a control never carries a visible outline or accent edge ### Motion - **Duration**: 220ms - **Easing**: cubic-bezier(0.22, 1, 0.36, 1) - **Philosophy**: deliberate ## Rules ### Composition Compose each screen as molded trays pressed from a single continuous field, not boxed cards scattered on a canvas. Broad raised shells hold regions; inside them, data and controls sit in inset wells so the interface reads as a landscape of convex and concave forms. ### Hierarchy Use depth before colour: the strongest action is the most raised element, secondary content sits flush, editable areas recess inward. The two accents are spent only on primary fills, progress, active tabs, and status beads. ### Density Comfortable density with generous cushion around every cluster; rounded containment preserves the single-material illusion. ### Signature Patterns - every major module uses paired outer shadows plus a subtle inner highlight to create a molded raised shell - inputs, selects, search bars, and progress tracks sit inside concave inset wells built with inset box-shadows - active tabs and toggles sink inward and lift a faint accent halo instead of a hard fill or underline - alerts and status chips carry a small embedded circular light bead aligned to the left edge - modal panels float inside a blurred accent aura with a nested raised header and inset body ## Layout ### Grid Desktop centres a contained column inside a molded shell; the landing hero alone spans the full viewport. A twelve-ish column rhythm resolves into halves and thirds that shrink with minmax(0,1fr) so nothing overflows. ### Breakpoints The tablet band (768-1024) is designed on its own: the console rail turns horizontal, metric rows relax to two-up, split panels stack. Below 768 everything becomes a single cushioned column; tables drop the head row and reflow to label/value pairs. ### Whitespace Padded and air-cushioned: 24-32px within trays on desktop, ~20px on tablet, 16px on phone. Avoid narrow gutters that break the single-material illusion. ## Guidance ### Do - Keep one top-left light source across every highlight and shadow. - Put related controls inside shared wells to reinforce the single-material illusion. - Spend the accents sparingly, on active state and status beads. - Use large radii and generous padding to keep the surface soft. - Keep text high-contrast even when surfaces sit quiet. ### Don't - Draw a hard border or an accent edge on any container. - Flood a panel with a saturated accent fill. - Mix light directions or inconsistent relief depths. - Compress spacing until forms lose their cushion. - Rely on colour where depth can communicate state. ## Imagery Direction ### Summary Every image is molded from the same pale putty as the interface: soft embossed bas-relief, one continuous material, delicate paired highlight and shadow from a top-left light, with faint mint and periwinkle glow beads. Soft operational relief, never sharp photo-real imagery. ### Technique embossed bas-relief in a single pale blue-grey material with top-left illumination and faint accent glow beads ### Pairs With cameo-relief ### Hero Image File Id fl-019f7070-6b0f-7fb1-8a24-99a1c0bf4c89 ### Reference Image File Ids - fl-019f7070-6f4e-7520-99bb-01a9d1d8be72 - fl-019f7070-73c7-7520-b07c-b034ea79056e - fl-019f7070-79a1-7302-861a-35c602ab9f7f - fl-019f7070-7cad-7081-b8bd-9089452bc1f7
---
version: "alpha"
name: "Cameo"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#e7edf5"
surface: "#eef3f9"
surface_solid: "#eef3f9"
text: "#2b3550"
muted: "#7d89a6"
border: "#d6deea"
accent: "#7f8cff"
accent_2: "#7de3c3"
accent_soft: "#dfe4ff"
on_accent: "#ffffff"
success: "#3fae8b"
warning: "#d59544"
error: "#d76079"
info: "#5aa2df"
typography:
headline-lg:
fontFamily: "\"Red Hat Display\", sans-serif"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "\"Red Hat Display\", sans-serif"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "\"Manrope\", sans-serif"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.01em"
label-md:
fontFamily: "\"IBM Plex Mono\", monospace"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_solid:
backgroundColor: "{colors.surface_solid}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_soft:
backgroundColor: "{colors.accent_soft}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Cameo
## Overview
Cameo carves an interface out of one continuous material. Actions rise as cushioned pillows, editable fields sink into inset wells, and status glows as a small light bead — so hierarchy reads by relief before it reads by colour. Calm, tactile, low-friction, never toy-like.
### Values
- one continuous surface over fragmented panels
- depth as hierarchy
- quiet tactility
- gentle contrast with legible text
- calm productivity
### Anti-Values
- hard skeletal borders
- high-noise ornament
- harsh contrast spikes
- flat severity
- aggressive motion
### Visual Character
- all primary containers are pressed from a single pale field using paired highlight and shadow relief instead of borders
- controls alternate between raised pillows and inset wells to signal clickable versus editable surfaces
- geometry stays on one legal radius set (0/16/24/full), with capsule buttons, chips and tabs
- status reads as a small luminous light bead aligned left, never a saturated fill
- the soft modal floats in a blurred accent aura with a raised header over a recessed body
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| bg | `#e7edf5` |
| surface | `#eef3f9` |
| surface_solid | `#eef3f9` |
| text | `#2b3550` |
| muted | `#7d89a6` |
| border | `#d6deea` |
| accent | `#7f8cff` |
| accent_2 | `#7de3c3` |
| accent_soft | `#dfe4ff` |
| on_accent | `#ffffff` |
| success | `#3fae8b` |
| warning | `#d59544` |
| error | `#d76079` |
| info | `#5aa2df` |
## Typography
- **Headline-Lg**: "Red Hat Display", sans-serif, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: "Red Hat Display", sans-serif, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: "Manrope", sans-serif, 17px, weight 400, line-height 1.5.
- **Label-Md**: "IBM Plex Mono", monospace, 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`
### Grid
Desktop centres a contained column inside a molded shell; the landing hero alone spans the full viewport. A twelve-ish column rhythm resolves into halves and thirds that shrink with minmax(0,1fr) so nothing overflows.
### Breakpoints
The tablet band (768-1024) is designed on its own: the console rail turns horizontal, metric rows relax to two-up, split panels stack. Below 768 everything becomes a single cushioned column; tables drop the head row and reflow to label/value pairs.
### Whitespace
Padded and air-cushioned: 24-32px within trays on desktop, ~20px on tablet, 16px on phone. Avoid narrow gutters that break the single-material illusion.
## Elevation & Depth
### Shadows
- **Sm**: -4px -4px 10px var(--hi), 4px 4px 12px var(--lo)
- **Md**: -8px -8px 18px var(--hi), 9px 9px 20px var(--lo)
- **Lg**: -14px -14px 30px var(--hi), 14px 14px 32px var(--lo)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: molded
- **Card Style**: raised outer shell pressed from one field with inset internal wells; no borders
- **Bg Pattern**: none
### Borders
- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: borders are replaced by tonal seams and shadow relief; a control never carries a visible outline or accent edge
## Components
### Composition
Compose each screen as molded trays pressed from a single continuous field, not boxed cards scattered on a canvas. Broad raised shells hold regions; inside them, data and controls sit in inset wells so the interface reads as a landscape of convex and concave forms.
### Hierarchy
Use depth before colour: the strongest action is the most raised element, secondary content sits flush, editable areas recess inward. The two accents are spent only on primary fills, progress, active tabs, and status beads.
### Density
Comfortable density with generous cushion around every cluster; rounded containment preserves the single-material illusion.
### Signature Patterns
- every major module uses paired outer shadows plus a subtle inner highlight to create a molded raised shell
- inputs, selects, search bars, and progress tracks sit inside concave inset wells built with inset box-shadows
- active tabs and toggles sink inward and lift a faint accent halo instead of a hard fill or underline
- alerts and status chips carry a small embedded circular light bead aligned to the left edge
- modal panels float inside a blurred accent aura with a nested raised header and inset body
## 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-019f7072-1382-74a2-ac5f-6554ed5a6854/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 Keep one top-left light source across every highlight and shadow.
- Do Put related controls inside shared wells to reinforce the single-material illusion.
- Do Spend the accents sparingly, on active state and status beads.
- Do Use large radii and generous padding to keep the surface soft.
- Do Keep text high-contrast even when surfaces sit quiet.
- Don't Draw a hard border or an accent edge on any container.
- Don't Flood a panel with a saturated accent fill.
- Don't Mix light directions or inconsistent relief depths.
- Don't Compress spacing until forms lose their cushion.
- Don't Rely on colour where depth can communicate state.
## Imagery Direction
### Summary
Every image is molded from the same pale putty as the interface: soft embossed bas-relief, one continuous material, delicate paired highlight and shadow from a top-left light, with faint mint and periwinkle glow beads. Soft operational relief, never sharp photo-real imagery.
### Technique
embossed bas-relief in a single pale blue-grey material with top-left illumination and faint accent glow beads
### Pairs With
cameo-relief
### Hero Image File Id
fl-019f7070-6b0f-7fb1-8a24-99a1c0bf4c89
### Reference Image File Ids
- fl-019f7070-6f4e-7520-99bb-01a9d1d8be72
- fl-019f7070-73c7-7520-b07c-b034ea79056e
- fl-019f7070-79a1-7302-861a-35c602ab9f7f
- fl-019f7070-7cad-7081-b8bd-9089452bc1f7
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "cameo",
"type": "registry:theme",
"title": "Cameo shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#e7edf5",
"foreground": "#2b3550",
"card": "#eef3f9",
"card-foreground": "#2b3550",
"popover": "#eef3f9",
"popover-foreground": "#2b3550",
"primary": "#2b3550",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#7d89a6",
"muted-foreground": "#2b3550",
"accent": "#7f8cff",
"accent-foreground": "#ffffff",
"destructive": "#d76079",
"border": "#d6deea",
"input": "#d6deea",
"ring": "#7f8cff",
"chart-1": "#2b3550",
"chart-2": "#f4f4f5",
"chart-3": "#7f8cff",
"chart-4": "#3fae8b",
"chart-5": "#d59544",
"sidebar": "#eef3f9",
"sidebar-foreground": "#2b3550",
"sidebar-primary": "#2b3550",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5aa2df",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#d6deea",
"sidebar-ring": "#7f8cff",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#2b3550",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#7f8cff",
"accent-foreground": "#ffffff",
"destructive": "#d76079",
"border": "#303642",
"input": "#303642",
"ring": "#7f8cff",
"chart-1": "#2b3550",
"chart-2": "#f4f4f5",
"chart-3": "#7f8cff",
"chart-4": "#3fae8b",
"chart-5": "#d59544",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#2b3550",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#7f8cff",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#7f8cff",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019f7072-1382-74a2-ac5f-6554ed5a6854",
"slug": "cameo",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_soft",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_solid",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Cameoand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #e7edf5;
--foreground: #2b3550;
--card: #eef3f9;
--card-foreground: #2b3550;
--popover: #eef3f9;
--popover-foreground: #2b3550;
--primary: #2b3550;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #7d89a6;
--muted-foreground: #2b3550;
--accent: #7f8cff;
--accent-foreground: #ffffff;
--destructive: #d76079;
--border: #d6deea;
--input: #d6deea;
--ring: #7f8cff;
--chart-1: #2b3550;
--chart-2: #f4f4f5;
--chart-3: #7f8cff;
--chart-4: #3fae8b;
--chart-5: #d59544;
--sidebar: #eef3f9;
--sidebar-foreground: #2b3550;
--sidebar-primary: #2b3550;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #5aa2df;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #d6deea;
--sidebar-ring: #7f8cff;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #2b3550;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #7f8cff;
--accent-foreground: #ffffff;
--destructive: #d76079;
--border: #303642;
--input: #303642;
--ring: #7f8cff;
--chart-1: #2b3550;
--chart-2: #f4f4f5;
--chart-3: #7f8cff;
--chart-4: #3fae8b;
--chart-5: #d59544;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #2b3550;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #7f8cff;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #7f8cff;
--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 CameoShadcnKit() {
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">Cameo</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": "cameo",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Cameo",
"description": "A calm interface pressed from one continuous material: actions rise as cushioned pillows, editable fields sink into inset wells, and status glows as a small light bead. Depth carries the hierarchy before colour does.",
"cssVars": {
"theme": {
"font-sans": "Manrope, sans-serif",
"font-heading": "\"Red Hat Display\", sans-serif",
"font-mono": "\"IBM Plex Mono\", monospace",
"radius": "24px"
},
"light": {
"background": "#e7edf5",
"foreground": "#2b3550",
"card": "#eef3f9",
"card-foreground": "#2b3550",
"popover": "#eef3f9",
"popover-foreground": "#2b3550",
"primary": "#7f8cff",
"primary-foreground": "#ffffff",
"secondary": "#7de3c3",
"secondary-foreground": "#20423a",
"muted": "#dfe4ee",
"muted-foreground": "#7d89a6",
"accent": "#7de3c3",
"accent-foreground": "#20423a",
"destructive": "#d76079",
"destructive-foreground": "#ffffff",
"success": "#3fae8b",
"warning": "#d59544",
"info": "#5aa2df",
"border": "transparent",
"input": "#dfe8f2",
"ring": "#7f8cff",
"radius": "24px"
},
"dark": {
"background": "#20263a",
"foreground": "#e5eaf4",
"card": "#262d44",
"card-foreground": "#e5eaf4",
"popover": "#262d44",
"popover-foreground": "#e5eaf4",
"primary": "#9aa4ff",
"primary-foreground": "#161b2b",
"secondary": "#7de3c3",
"secondary-foreground": "#12291f",
"muted": "#2c3450",
"muted-foreground": "#9aa6c4",
"accent": "#7de3c3",
"accent-foreground": "#12291f",
"destructive": "#e2778c",
"destructive-foreground": "#161b2b",
"success": "#5cc6a3",
"warning": "#e0a55c",
"info": "#78b4ea",
"border": "transparent",
"input": "#222941",
"ring": "#9aa4ff",
"radius": "24px"
}
},
"visualProfile": {
"family": "neumorphic",
"material": "single continuous molded surface",
"contour": "cushioned",
"border": "none",
"underlay": true,
"grain": false,
"stickerBadges": false,
"motion": "deliberate",
"density": "comfortable",
"accents": ["#7f8cff", "#7de3c3"]
},
"notes": "Cameo has no borders — every edge is a paired highlight/shadow relief pressed from the background. Buttons and chips are full-radius capsules; cards and wells use 24px. Primary is the periwinkle fill; mint answers on active/progress state. Status reads as a small left-aligned light bead, never a saturated fill. Shadows must follow one top-left light source and agree with the corner radius; the renderer should express raised (convex) elements for actions and inset (concave) wells for inputs."
}
# Cameo — shadcn/ui Components
Author: `katagami-agent`
Cameo dresses shadcn/ui as a single continuous molded material. There are no borders: every edge is a paired highlight-and-shadow relief pressed from the background. Actions rise as cushioned capsule pillows, editable controls sink into inset wells, and status reads as a small left-aligned light bead. Depth carries the hierarchy before colour does.
## ShadSync visual profile
| Property | Value | What it means for the renderer |
|---|---|---|
| family | `neumorphic` | Molded, single-material surface — not flat cards, not glass. |
| material | single continuous molded surface | Regions are pressed from one field, never boxed cards on a canvas. |
| contour | `cushioned` | Large radii, soft cushioned edges. |
| border | `none` | No outlines, no accent edges — relief only. |
| underlay | `true` | A blurred accent aura sits under overlays (dialog, sheet). |
| grain | `false` | Smooth matte surface, no texture noise. |
| stickerBadges | `false` | Badges are quiet capsules with a light bead, not stickers. |
| motion | `deliberate` | 220ms, cubic-bezier(0.22, 1, 0.36, 1); press sinks inward. |
| density | `comfortable` | Generous cushion around every cluster. |
| accents | `#7f8cff`, `#7de3c3` | Periwinkle leads; mint answers on active/progress state. |
One top-left light source governs every shadow. Raised (convex) = act; inset (concave) = edit; light bead = status. Radii come only from `{0, 16, 24, 9999}`.
## Signature component recipes
- **Button** — full-radius capsule pressed up from the surface; rest raised, hover lifts, `:active` sinks to an inset. Primary carries the periwinkle fill; every other variant stays in the base material. Label centred, never wraps.
- **Input / Textarea / Select** — recess into an inset well (concave). Focus keeps the inset and adds a soft periwinkle ring; no visible border ever.
- **Card** — a raised molded shell (`shadow-md`), 24px radius, no border, no accent edge.
- **Tabs** — capsule tabs that sink inward and lift a faint accent halo when active, rather than a hard underline.
- **Badge** — quiet capsule with a small left light bead; semantic colour lives only in the bead.
- **Switch / Checkbox** — recessed track/box that pops raised when on; mint fill on the switch, periwinkle tick on the box.
- **Slider** — recessed track, gradient periwinkle-to-mint fill, raised capsule knob.
- **Dialog / Sheet** — float in a blurred accent aura (`underlay`) with a raised header over a recessed body.
- **Table** — borderless; row seams are shadow relief, not lines.
- **Tooltip / Dropdown** — small raised shells with the same cushioned relief.
## Preview shots
The renderable preview scenes live in `preview-shots.json` (`renderable-v1`, all 16 primitives across three product scenes). Each shot names what must show — the raised/inset relief, the light-bead status, the capsule geometry — and what to avoid: hard borders, saturated fills, mixed light directions.
- **Continuity console** — dashboard scene: metric shells, recessed chart, borderless table, status chips.
- **Schedule dialog** — overlay scene: soft modal in an accent aura, form wells, primary pillow.
- **Control well** — form scene: inputs, switches, slider, checkboxes, all recessed.
## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Input } from "@/components/ui/input"
import { Badge } from "@/components/ui/badge"
export function SyncCard() {
return (
<Card className="rounded-[24px] border-0 shadow-[-8px_-8px_18px_var(--hi),9px_9px_20px_var(--lo)] p-7">
<CardHeader className="p-0 pb-4">
<CardTitle className="font-heading tracking-tight">Continuity sync</CardTitle>
</CardHeader>
<CardContent className="p-0 space-y-4">
<div className="flex items-center gap-2">
<Badge className="rounded-full border-0 gap-2">
<span className="h-2.5 w-2.5 rounded-full bg-[--success] shadow-[0_0_10px_var(--success)]" />
stable
</Badge>
</div>
{/* Input recesses into an inset well */}
<Input
placeholder="Search regions"
className="rounded-[16px] border-0 bg-[--input] shadow-[inset_-5px_-5px_10px_var(--hi),inset_6px_6px_12px_var(--lo)]"
/>
{/* Primary pillow — the only saturated fill */}
<Button className="h-[50px] rounded-full border-0 bg-primary text-primary-foreground">
Launch sync
</Button>
</CardContent>
</Card>
)
}
```
All primitives resolve from `@/components/ui/` and inherit the Cameo tokens in `export.json`. Keep every element on the `{0, 16, 24, 9999}` radius set, never add a border, and let one top-left light source press the whole surface.
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"author": "katagami-agent",
"requiresVisualProfile": true,
"language": {
"id": "cameo",
"name": "Cameo",
"slug": "cameo"
},
"installCommand": "npx shadcn@latest add https://katagami.ai/r/cameo.json",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"No borders anywhere — every edge is a paired highlight/shadow relief pressed from the background.",
"Raised (convex) elements mean act; inset (concave) wells mean edit; a small left-aligned light bead means status.",
"Buttons, chips, tabs and toggles are full-radius capsules; cards and wells use 24px; inputs use 16px.",
"One top-left light source governs every shadow, and shadow softness agrees with the corner radius.",
"Primary is the periwinkle fill (#7f8cff); mint (#7de3c3) answers on active and progress state; semantics live only in beads."
],
"visualProfile": {
"family": "neumorphic",
"material": "single continuous molded surface",
"contour": "cushioned",
"border": "none",
"underlay": true,
"grain": false,
"stickerBadges": false,
"motion": "deliberate",
"density": "comfortable",
"accents": ["#7f8cff", "#7de3c3"]
},
"tokens": {
"background": "#e7edf5",
"surface": "#eef3f9",
"foreground": "#2b3550",
"muted": "#7d89a6",
"primary": "#7f8cff",
"primaryForeground": "#ffffff",
"secondary": "#7de3c3",
"success": "#3fae8b",
"warning": "#d59544",
"error": "#d76079",
"info": "#5aa2df",
"radius": "24px",
"radiusInput": "16px",
"radiusPill": "9999px",
"fontSans": "Manrope, sans-serif",
"fontHeading": "\"Red Hat Display\", sans-serif",
"fontMono": "\"IBM Plex Mono\", monospace",
"shadowRaised": "-8px -8px 18px rgba(255,255,255,0.9), 9px 9px 20px rgba(120,135,170,0.35)",
"shadowInset": "inset -5px -5px 10px rgba(255,255,255,0.9), inset 6px 6px 12px rgba(120,135,170,0.35)"
},
"shots": [
{
"id": "continuity-console",
"title": "Continuity console",
"viewport": "desktop",
"primitives": ["card", "button", "badge", "table", "tabs", "separator", "dropdown-menu", "tooltip"],
"composition": "A molded dashboard: a row of raised metric shells above a recessed activity chart and a borderless region table. Capsule tabs switch views; a dropdown sits in the top bar.",
"mustShow": [
"raised metric shells with no borders",
"borderless table whose row seams are shadow relief",
"status chips carrying a left light bead",
"one primary periwinkle pillow button in the top bar"
],
"avoid": ["hard borders", "saturated accent fills on panels", "mixed light directions"],
"scene": {
"headline": "Continuity console",
"description": "One material, one light — every region pressed from the same field.",
"stats": [
{"label": "Material continuity", "value": "92%", "state": "success"},
{"label": "Active regions", "value": "18", "state": "success"},
{"label": "Gesture latency", "value": "18ms", "state": "info"},
{"label": "Review queue", "value": "6", "state": "warning"}
]
}
},
{
"id": "schedule-dialog",
"title": "Schedule the continuity sync",
"viewport": "desktop",
"primitives": ["dialog", "button", "input", "select", "badge", "separator"],
"composition": "A soft modal floating in a blurred accent aura, a raised header over a recessed body holding two form wells and a primary pillow to confirm.",
"mustShow": [
"modal sitting in a blurred periwinkle aura (underlay)",
"raised header over a recessed body well",
"inputs recessed into inset wells",
"primary periwinkle pillow as the confirm action"
],
"avoid": ["opaque black scrim", "bordered dialog", "flat buttons"],
"scene": {
"headline": "Schedule the continuity sync",
"description": "A raised header and recessed body preserve the single-material illusion while beads communicate state.",
"fields": [
{"label": "Region", "value": "Northwest node", "control": "select"},
{"label": "Window", "value": "After the coastal relay clears", "control": "input"}
]
}
},
{
"id": "control-well",
"title": "Control well",
"viewport": "mobile",
"primitives": ["switch", "checkbox", "slider", "textarea", "input", "tabs", "tooltip"],
"composition": "A single molded column of recessed controls: toggles, checkboxes, a pressure slider, and an operator note textarea — every editable surface sunk into a well.",
"mustShow": [
"recessed toggle track with a raised knob, mint fill when on",
"pressure slider with a periwinkle-to-mint gradient fill and raised knob",
"checkbox wells that pop raised when selected",
"textarea recessed into an inset well"
],
"avoid": ["browser-default controls", "hard borders", "cramped spacing"],
"scene": {
"headline": "Control well",
"description": "Every editable surface recesses into the material.",
"rows": [
{"label": "Ambient lift", "value": "on"},
{"label": "Quiet mode", "value": "off"},
{"label": "Pressure sensitivity", "value": "64%"}
]
}
}
],
"componentRecipes": [
{"primitive": "button", "intent": "Full-radius capsule pressed up from the surface; rest raised, hover lifts, active sinks to an inset. Primary carries the periwinkle fill."},
{"primitive": "card", "intent": "A raised molded shell at 24px radius, no border and no accent edge, one top-left light source."},
{"primitive": "input", "intent": "Recessed into an inset well; focus keeps the inset and adds a soft periwinkle ring, never a border."},
{"primitive": "textarea", "intent": "A taller inset well; resize handle only, no visible outline."},
{"primitive": "select", "intent": "Inset well with a chevron on the right; the menu is a small raised shell."},
{"primitive": "dialog", "intent": "Floats in a blurred accent aura with a raised header over a recessed body."},
{"primitive": "sheet", "intent": "Slides in as a raised molded panel with the same cushioned relief and aura."},
{"primitive": "tabs", "intent": "Capsule tabs that sink inward and lift a faint accent halo when active, not a hard underline."},
{"primitive": "badge", "intent": "Quiet capsule with a small left light bead; semantic colour lives only in the bead."},
{"primitive": "separator", "intent": "A shadow-relief seam rather than a line — inset hairline of highlight over shadow."},
{"primitive": "checkbox", "intent": "A recessed box that pops raised when checked, with a periwinkle tick."},
{"primitive": "switch", "intent": "Recessed track, raised knob, mint fill when on."},
{"primitive": "slider", "intent": "Recessed track, periwinkle-to-mint gradient fill, raised capsule knob."},
{"primitive": "tooltip", "intent": "A small raised shell with cushioned relief and muted text."},
{"primitive": "dropdown-menu", "intent": "A raised shell menu; the active item sinks to an inset with an accent halo."},
{"primitive": "table", "intent": "Borderless; row seams are shadow relief, status shown as chips with a light bead."}
],
"qualityRules": {
"do": [
"Press every region from one continuous material with a single top-left light source.",
"Use raised relief for actions and inset wells for anything editable.",
"Keep radii on the {0, 16, 24, 9999} set and let shadow softness agree with the radius.",
"Spend the two accents sparingly; carry status in a small light bead."
],
"dont": [
"Draw a border or an accent edge on any element.",
"Flood a panel with a saturated accent fill.",
"Mix light directions or inconsistent relief depths.",
"Let a button or chip label wrap, or leave any control at a browser default."
]
}
}