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 screens as poster-like spreads: one dominant display column, cured-slab modules, and the confetti speckle threading the gutters. Read tables top-down; give dashboards a breathing depth rail instead of a boxed sidebar.
Lead with Syne display and mono labels. The primary action is a single teal capsule; magenta answers; chrome is held for the finale. Status lives in flat mono chips.
Medium-high inside modules, airy between them. Balance density across the canvas — never a crowded cluster beside a starved void.
A contained max width (~1200-1440px) with generous outer margin. The dashboard runs a breathing depth rail on the left instead of a boxed sidebar; cards read as poured slabs, not identical boxes.
Four art-directed bands: wide (~1920+), desktop (1440), tablet (768-1024, its own considered layout), and mobile (390, single column). Oversized display headlines shrink with clamp() and wrap — never clipping the 390px edge.
Compact inside clusters, generous between modules, always padded above titles; the speckle keeps the negative space alive without competing with text.
graniglia
Polished terrazzo inlay — any subject built from densely packed electric aggregate chips in a warm bone matrix, with speckle grit and a soft gloss. Subjects range across faces, places, objects and animals.
One full-bleed hero per landing via var(--hero-image), with swappable --plate-N slots woven through the film. Copy and imagery never share the same ground — text sits on bone, imagery fills its own slab.
Photographic renders, pastel washes, more than four inks, text in the image.
# Coriandoli ## Philosophy Coriandoli is the Memphis soul in a new body. It keeps the loud, playful, anti-neutral energy of postmodern graphic interfaces and rebuilds it in polished terrazzo: confetti caught mid-throw and cured into a set, glossy slab. The old language fenced every card with a thick black keyline; Coriandoli throws the outline away — a surface's edge is now a poured rim of aggregate chips, dense at the perimeter and thinning inward, so you read a boundary without a single drawn stroke. ### Values - Playful energy as structure, not decoration - Boundaries poured from aggregate, never drawn as borders - Three electric inks spent like a highlighter on a bright bone ground - Loud and legible: high contrast, one strict scale, real hierarchy - Motion that pours, settles, and cures ### Anti-Values - Corporate neutrality and invisible chrome - Grey borders, heavy keylines, and boxed navigation - Muddy pastel washes and gradient fills - Photoreal depth or skeuomorphic imitation ### Visual Character - Every surface is a cured terrazzo slab edged by a poured rim of aggregate chips, with a soft polished sheen and no line border. - A fine terrazzo speckle of electric chips scatters across the bone ground as one page-wide field, without touching text legibility. - Live work carries a cure meter whose aggregate fill climbs from scattered to SET; at 100% the slab reads polished. - Type pairs an extended postmodern display face with a clean grotesk body and a mono for labels, in two-extreme scale jumps. - A single continuous squiggle recurs as the divider ornament in teal and magenta, tying the page into one system. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#F4EEE1` | | surface | `#FCFAF3` | | surface_solid | `#FBF7EE` | | text | `#141210` | | muted | `#6E655A` | | border | `#E7DECB` | | accent | `#12C7C4` | | accent_2 | `#FF3D93` | | accent_soft | `#F6CE1B` | | on_accent | `#141210` | | success | `#16B57A` | | warning | `#F6A609` | | error | `#FF4D6A` | | info | `#3F9BFF` | ### Typography - **Base Size**: 17px - **Body Font**: Archivo - **Heading Font**: Syne - **Mono Font**: Space Mono - **Heading Weight**: 800 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Scale Ratio**: 1.28 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&family=Syne:wght@600;700;800&display=swap ### Radii - **None**: 0px - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 0 2px 6px rgba(20,18,16,0.10) - **Md**: 0 8px 22px rgba(20,18,16,0.12) - **Lg**: 0 22px 50px rgba(20,18,16,0.16) ### Spacing - **Base**: 8px - **Scale**: ["4px","8px","12px","16px","24px","32px","48px","72px"] ### Surfaces - **Treatment**: polished terrazzo (seminato) - **Card Style**: cured terrazzo slabs edged by a poured chip rim — dense at the perimeter, thinning inward — with a soft polished sheen; no line border - **Bg Pattern**: terrazzo speckle (fine electric chips scattered in the bone matrix) ### Borders - **Default Width**: 0px - **Accent Width**: 0px - **Style**: none - **Character**: No line borders anywhere. Boundaries are poured chip-scatter rims; aggregate density defines the edge, never a stroke. ### Motion - **Duration**: 220ms - **Easing**: cubic-bezier(0.2, 0.9, 0.2, 1) - **Philosophy**: snappy pours that settle — chips scatter fast, then cure to rest ## Rules ### Composition Compose screens as poster-like spreads: one dominant display column, cured-slab modules, and the confetti speckle threading the gutters. Read tables top-down; give dashboards a breathing depth rail instead of a boxed sidebar. ### Hierarchy Lead with Syne display and mono labels. The primary action is a single teal capsule; magenta answers; chrome is held for the finale. Status lives in flat mono chips. ### Density Medium-high inside modules, airy between them. Balance density across the canvas — never a crowded cluster beside a starved void. ### Signature Patterns - Every card is a cured slab edged by a poured chip rim, no drawn border. - A fine terrazzo speckle recurs page-wide as one background system. - Live work carries a cure meter that climbs from scattered chips to SET. - Navigation breathes on space as a depth rail, never a boxed sidebar or pill bar. - Buttons and status are toy-bright capsules with centred labels that never wrap. ## Layout ### Grid A contained max width (~1200-1440px) with generous outer margin. The dashboard runs a breathing depth rail on the left instead of a boxed sidebar; cards read as poured slabs, not identical boxes. ### Breakpoints Four art-directed bands: wide (~1920+), desktop (1440), tablet (768-1024, its own considered layout), and mobile (390, single column). Oversized display headlines shrink with clamp() and wrap — never clipping the 390px edge. ### Whitespace Compact inside clusters, generous between modules, always padded above titles; the speckle keeps the negative space alive without competing with text. ## Guidance ### Do - Bound every surface with a poured chip rim; let aggregate density read as the edge. - Spend the three inks like a highlighter and keep bone the dominant field. - Let the speckle and squiggle recur as one page-wide ornament system. - Keep body copy at 17px and put readouts, calls, and status in mono. ### Don't - Draw a border, keyline, or single accent edge on any card. - Wash the background with pastel tints or gradient fills. - Box the navigation into a floating card or pill bar. - Let the speckle or chip rim compete with body-text legibility. ## Imagery Direction ### Pairs With graniglia ### Summary Polished terrazzo inlay — any subject built from densely packed electric aggregate chips in a warm bone matrix, with speckle grit and a soft gloss. Subjects range across faces, places, objects and animals. ### Usage One full-bleed hero per landing via var(--hero-image), with swappable --plate-N slots woven through the film. Copy and imagery never share the same ground — text sits on bone, imagery fills its own slab. ### Avoid Photographic renders, pastel washes, more than four inks, text in the image.
---
version: "alpha"
name: "Coriandoli"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#F4EEE1"
surface: "#FCFAF3"
surface_solid: "#FBF7EE"
text: "#141210"
muted: "#6E655A"
border: "#E7DECB"
accent: "#12C7C4"
accent_2: "#FF3D93"
accent_soft: "#F6CE1B"
on_accent: "#141210"
success: "#16B57A"
warning: "#F6A609"
error: "#FF4D6A"
info: "#3F9BFF"
typography:
headline-lg:
fontFamily: "Syne"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Syne"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Archivo"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Space Mono"
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: "72px"
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"
---
# Coriandoli
## Overview
Coriandoli is the Memphis soul in a new body. It keeps the loud, playful, anti-neutral energy of postmodern graphic interfaces and rebuilds it in polished terrazzo: confetti caught mid-throw and cured into a set, glossy slab. The old language fenced every card with a thick black keyline; Coriandoli throws the outline away — a surface's edge is now a poured rim of aggregate chips, dense at the perimeter and thinning inward, so you read a boundary without a single drawn stroke.
### Values
- Playful energy as structure, not decoration
- Boundaries poured from aggregate, never drawn as borders
- Three electric inks spent like a highlighter on a bright bone ground
- Loud and legible: high contrast, one strict scale, real hierarchy
- Motion that pours, settles, and cures
### Anti-Values
- Corporate neutrality and invisible chrome
- Grey borders, heavy keylines, and boxed navigation
- Muddy pastel washes and gradient fills
- Photoreal depth or skeuomorphic imitation
### Visual Character
- Every surface is a cured terrazzo slab edged by a poured rim of aggregate chips, with a soft polished sheen and no line border.
- A fine terrazzo speckle of electric chips scatters across the bone ground as one page-wide field, without touching text legibility.
- Live work carries a cure meter whose aggregate fill climbs from scattered to SET; at 100% the slab reads polished.
- Type pairs an extended postmodern display face with a clean grotesk body and a mono for labels, in two-extreme scale jumps.
- A single continuous squiggle recurs as the divider ornament in teal and magenta, tying the page into one system.
## 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 | `#F4EEE1` |
| surface | `#FCFAF3` |
| surface_solid | `#FBF7EE` |
| text | `#141210` |
| muted | `#6E655A` |
| border | `#E7DECB` |
| accent | `#12C7C4` |
| accent_2 | `#FF3D93` |
| accent_soft | `#F6CE1B` |
| on_accent | `#141210` |
| success | `#16B57A` |
| warning | `#F6A609` |
| error | `#FF4D6A` |
| info | `#3F9BFF` |
## Typography
- **Headline-Lg**: Syne, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Syne, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Archivo, 17px, weight 400, line-height 1.5.
- **Label-Md**: Space 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**: `72px`
### Grid
A contained max width (~1200-1440px) with generous outer margin. The dashboard runs a breathing depth rail on the left instead of a boxed sidebar; cards read as poured slabs, not identical boxes.
### Breakpoints
Four art-directed bands: wide (~1920+), desktop (1440), tablet (768-1024, its own considered layout), and mobile (390, single column). Oversized display headlines shrink with clamp() and wrap — never clipping the 390px edge.
### Whitespace
Compact inside clusters, generous between modules, always padded above titles; the speckle keeps the negative space alive without competing with text.
## Elevation & Depth
### Shadows
- **Sm**: 0 2px 6px rgba(20,18,16,0.10)
- **Md**: 0 8px 22px rgba(20,18,16,0.12)
- **Lg**: 0 22px 50px rgba(20,18,16,0.16)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: polished terrazzo (seminato)
- **Card Style**: cured terrazzo slabs edged by a poured chip rim — dense at the perimeter, thinning inward — with a soft polished sheen; no line border
- **Bg Pattern**: terrazzo speckle (fine electric chips scattered in the bone matrix)
### Borders
- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: No line borders anywhere. Boundaries are poured chip-scatter rims; aggregate density defines the edge, never a stroke.
## Components
### Composition
Compose screens as poster-like spreads: one dominant display column, cured-slab modules, and the confetti speckle threading the gutters. Read tables top-down; give dashboards a breathing depth rail instead of a boxed sidebar.
### Hierarchy
Lead with Syne display and mono labels. The primary action is a single teal capsule; magenta answers; chrome is held for the finale. Status lives in flat mono chips.
### Density
Medium-high inside modules, airy between them. Balance density across the canvas — never a crowded cluster beside a starved void.
### Signature Patterns
- Every card is a cured slab edged by a poured chip rim, no drawn border.
- A fine terrazzo speckle recurs page-wide as one background system.
- Live work carries a cure meter that climbs from scattered chips to SET.
- Navigation breathes on space as a depth rail, never a boxed sidebar or pill bar.
- Buttons and status are toy-bright capsules with centred labels that never wrap.
## 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-019f8af2-875f-74a3-9a4d-19fe1ca2c790/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 Bound every surface with a poured chip rim; let aggregate density read as the edge.
- Do Spend the three inks like a highlighter and keep bone the dominant field.
- Do Let the speckle and squiggle recur as one page-wide ornament system.
- Do Keep body copy at 17px and put readouts, calls, and status in mono.
- Don't Draw a border, keyline, or single accent edge on any card.
- Don't Wash the background with pastel tints or gradient fills.
- Don't Box the navigation into a floating card or pill bar.
- Don't Let the speckle or chip rim compete with body-text legibility.
## Imagery Direction
### Pairs With
graniglia
### Summary
Polished terrazzo inlay — any subject built from densely packed electric aggregate chips in a warm bone matrix, with speckle grit and a soft gloss. Subjects range across faces, places, objects and animals.
### Usage
One full-bleed hero per landing via var(--hero-image), with swappable --plate-N slots woven through the film. Copy and imagery never share the same ground — text sits on bone, imagery fills its own slab.
### Avoid
Photographic renders, pastel washes, more than four inks, text in the image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "coriandoli",
"type": "registry:theme",
"title": "Coriandoli shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EEE1",
"foreground": "#141210",
"card": "#FCFAF3",
"card-foreground": "#141210",
"popover": "#FCFAF3",
"popover-foreground": "#141210",
"primary": "#141210",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6E655A",
"muted-foreground": "#141210",
"accent": "#12C7C4",
"accent-foreground": "#ffffff",
"destructive": "#FF4D6A",
"border": "#E7DECB",
"input": "#E7DECB",
"ring": "#12C7C4",
"chart-1": "#141210",
"chart-2": "#f4f4f5",
"chart-3": "#12C7C4",
"chart-4": "#16B57A",
"chart-5": "#F6A609",
"sidebar": "#FCFAF3",
"sidebar-foreground": "#141210",
"sidebar-primary": "#141210",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3F9BFF",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#E7DECB",
"sidebar-ring": "#12C7C4",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#141210",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#12C7C4",
"accent-foreground": "#ffffff",
"destructive": "#FF4D6A",
"border": "#303642",
"input": "#303642",
"ring": "#12C7C4",
"chart-1": "#141210",
"chart-2": "#f4f4f5",
"chart-3": "#12C7C4",
"chart-4": "#16B57A",
"chart-5": "#F6A609",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#141210",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#12C7C4",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#12C7C4",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019f8af2-875f-74a3-9a4d-19fe1ca2c790",
"slug": "coriandoli",
"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 Coriandoliand 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: #F4EEE1;
--foreground: #141210;
--card: #FCFAF3;
--card-foreground: #141210;
--popover: #FCFAF3;
--popover-foreground: #141210;
--primary: #141210;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6E655A;
--muted-foreground: #141210;
--accent: #12C7C4;
--accent-foreground: #ffffff;
--destructive: #FF4D6A;
--border: #E7DECB;
--input: #E7DECB;
--ring: #12C7C4;
--chart-1: #141210;
--chart-2: #f4f4f5;
--chart-3: #12C7C4;
--chart-4: #16B57A;
--chart-5: #F6A609;
--sidebar: #FCFAF3;
--sidebar-foreground: #141210;
--sidebar-primary: #141210;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3F9BFF;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #E7DECB;
--sidebar-ring: #12C7C4;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #141210;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #12C7C4;
--accent-foreground: #ffffff;
--destructive: #FF4D6A;
--border: #303642;
--input: #303642;
--ring: #12C7C4;
--chart-1: #141210;
--chart-2: #f4f4f5;
--chart-3: #12C7C4;
--chart-4: #16B57A;
--chart-5: #F6A609;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #141210;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #12C7C4;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #12C7C4;
--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 CoriandoliShadcnKit() {
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">Coriandoli</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": "coriandoli",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Coriandoli",
"description": "Memphis play caught mid-throw and cured into polished terrazzo. No borders — a surface's edge is a poured rim of aggregate chips, dense at the perimeter and thinning inward, on a bright bone ground. Three electric inks are spent like a highlighter; live work cures from scattered chips to a set, glossy slab.",
"cssVars": {
"theme": {
"font-sans": "\"Archivo\", system-ui, sans-serif",
"font-serif": "\"Syne\", system-ui, sans-serif",
"font-mono": "\"Space Mono\", ui-monospace, monospace",
"radius": "1rem"
},
"light": {
"background": "#F4EEE1",
"foreground": "#141210",
"card": "#FCFAF3",
"card-foreground": "#141210",
"popover": "#FCFAF3",
"popover-foreground": "#141210",
"primary": "#12C7C4",
"primary-foreground": "#141210",
"secondary": "#FBF7EE",
"secondary-foreground": "#141210",
"muted": "#EDE6D6",
"muted-foreground": "#6E655A",
"accent": "#FF3D93",
"accent-foreground": "#ffffff",
"destructive": "#FF4D6A",
"destructive-foreground": "#ffffff",
"border": "transparent",
"input": "#FBF7EE",
"ring": "#12C7C4",
"chart-1": "#12C7C4",
"chart-2": "#FF3D93",
"chart-3": "#F6CE1B",
"chart-4": "#16B57A",
"chart-5": "#3F9BFF",
"radius": "1rem"
},
"dark": {
"background": "#171310",
"foreground": "#F4EEE1",
"card": "#211B16",
"card-foreground": "#F4EEE1",
"popover": "#211B16",
"popover-foreground": "#F4EEE1",
"primary": "#2BD8D3",
"primary-foreground": "#0E1211",
"secondary": "#2A2119",
"secondary-foreground": "#F4EEE1",
"muted": "#2A2119",
"muted-foreground": "#B7AA97",
"accent": "#FF5CA5",
"accent-foreground": "#180810",
"destructive": "#FF6B82",
"destructive-foreground": "#1A0A0D",
"border": "transparent",
"input": "#2A2119",
"ring": "#2BD8D3"
}
},
"visualProfile": {
"family": "terrazzo-aggregate",
"material": "polished Venetian terrazzo — electric geometric chips suspended in a warm bone matrix",
"contour": "cured slabs edged by a poured aggregate rim, dense at the perimeter and thinning inward",
"border": "none — the boundary is a poured chip rim, never a drawn stroke",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "pour, settle, and cure — snappy then set",
"density": "medium-high inside modules, airy between",
"accents": ["#12C7C4", "#FF3D93", "#F6CE1B"]
},
"notes": "Coriandoli reimagines Memphis postmodern graphics as polished terrazzo. Every surface is a cured slab bounded by a poured rim of aggregate chips — no line borders. Three electric inks (teal lead, magenta answer, chrome finale) are spent like a highlighter on bone; live states carry a cure meter whose aggregate fill climbs to SET. Focus is a two-tone chip-cluster ring, never an outline. Buttons and status are toy-bright capsules with centred labels that never wrap. All radii are 0 / 16px / 24px / 9999px."
}
# Coriandoli — shadcn/ui Components
> Component recipes for the Coriandoli design language.
> Author: `katagami-agent`
> Schema: `component-recipes-v1`
Memphis play, caught mid-throw and cured into polished terrazzo. Coriandoli keeps the loud,
anti-neutral soul of Memphis postmodern graphics and gives it a new body: every surface is a
cured terrazzo slab, and its boundary is a **poured chip rim** — aggregate chips crowding the
perimeter and thinning inward — never a drawn border. Three electric inks (teal, magenta, chrome)
are spent like a highlighter on a bright bone ground, and live work carries a **cure meter** that
climbs from scattered chips to SET.
## ShadSync visual profile
The renderer follows this `visualProfile` so every generated primitive looks like Coriandoli, not a
generic house chassis:
- **family**: `terrazzo-aggregate`
- **material**: polished Venetian terrazzo — electric chips suspended in a warm bone matrix
- **contour**: cured slabs edged by a poured aggregate rim (dense at the edge, thinning inward)
- **border**: none — the boundary is a poured chip rim, never a stroke
- **underlay**: true (fine terrazzo speckle across the ground)
- **grain**: true
- **stickerBadges**: false
- **motion**: pour, settle, and cure — snappy then set
- **density**: medium-high inside modules, airy between
- **accents**: `#12C7C4` teal · `#FF3D93` magenta · `#F6CE1B` chrome
Radii come only from `0 / 16px / 24px / 9999px`. Shadows are soft and agree with the corner radius —
a polished slab lifted off the bone, never a hard offset keyline. Focus is a two-tone chip-cluster
ring (teal core, magenta halo), never an outline.
## Signature component recipes
Each primitive carries the poured-rim + cured-slab identity. Buttons and chips never wrap; the
layout stacks or shrinks first.
- **button** — Toy-bright capsule (`9999px`), centred label that never wraps. Teal primary leads;
magenta and chrome support; ghost is a bone slab; disabled dims to muted. Hover lifts 2px.
- **card** — A cured slab at `24px` with a poured chip rim on all four edges (no border, never
nested) and a soft shadow that matches the radius.
- **input** — Polished-slab field at `16px` with a soft inset; focus draws the two-tone chip-cluster
ring. No visible browser default.
- **textarea** — Taller polished-slab field; same inset and chip-cluster focus ring; resizes
vertically.
- **select** — Slab trigger with a hand-drawn chevron; the open menu is a cured slab in its own soft
aura, hovered items take a faint teal wash.
- **dialog** — A cured slab floated in a soft aura with a poured rim; no hard bordered box, no grey
scrim rectangle.
- **sheet** — Slides in from the edge as a cured slab with a poured rim and soft aura.
- **tabs** — Underlined chip tabs that breathe on space; the active trigger rises to a bone slab
with a soft shadow. Never a boxed pill bar.
- **badge** — A flat mono chip in a semantic ink with a small left bead: teal Poured, green Set,
amber Curing, red Cracked, blue Scheduled, magenta Live.
- **separator** — Expressed as a single Coriandoli squiggle or a hairline shadow seam, never a grey
rule line.
- **checkbox** — A small slab well that fills teal and shows an ink check when selected.
- **switch** — A slab well that fills teal and lifts its knob when checked.
- **slider** — Slab track with a teal fill and a proud round grip carrying a magenta core.
- **tooltip** — A small cured chip floating in a soft aura; ink text, no border.
- **dropdown-menu** — A cured-slab menu in its own aura; hovered items take a faint teal wash.
- **table** — Soft rows with no rules, mono readings, a teal wash on hover; scrolls inside its slab
on mobile.
## Preview shots
The renderable preview scenes live in `preview-shots.json` (`renderable-v1`, three product scenes
covering all sixteen primitives): a festival-ops overview dashboard, a new-programme form panel, and
a load-the-programme dialog. Each scene names what it `mustShow` and what to `avoid`, so the render
stays on the poured-rim, cured-slab identity.
## Copy-paste component example
A primary action and a cured-slab card, using the theme tokens from `export.json`
(installed under `@/components/ui/`):
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
export function ZoneCard() {
return (
<Card className="rounded-[24px] shadow-md">
<CardHeader className="flex items-center justify-between">
<CardTitle className="font-[Syne] tracking-tight">Piazza Grande</CardTitle>
<Badge className="bg-primary text-primary-foreground rounded-full">Poured</Badge>
</CardHeader>
<CardContent>
<p className="text-muted-foreground">
Main stage, brass at 18:00, confetti cannons on the downbeat.
</p>
{/* cure meter: aggregate fill climbs to SET */}
<div className="mt-4 h-3.5 rounded-full bg-secondary overflow-hidden">
<div className="h-full rounded-full bg-primary" style={{ width: "62%" }} />
</div>
<Button className="mt-6 rounded-full">Pour the programme</Button>
</CardContent>
</Card>
)
}
```
The button is a single teal capsule (`bg-primary`), its label centred and never wrapping; the card is
a cured slab with a soft, radius-matched shadow and no border — the poured chip rim and terrazzo
speckle come from the renderer following the `visualProfile`.
{
"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": "coriandoli",
"name": "Coriandoli",
"slug": "coriandoli"
},
"installCommand": "npx shadcn@latest add https://katagami.ai/r/coriandoli.json",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"No borders anywhere — a surface's edge is a poured chip rim: aggregate chips dense at the perimeter and thinning inward.",
"Every surface is a cured terrazzo slab on a bright bone ground, with a fine electric speckle threading the gutters.",
"Three electric inks — teal lead (#12C7C4), magenta answer (#FF3D93), chrome finale (#F6CE1B) — are spent like a highlighter, never used to coat.",
"Live work carries a cure meter whose aggregate fill climbs from scattered chips to SET; focus is a two-tone chip-cluster ring, never an outline.",
"Radii only from 0 / 16px / 24px / 9999px; buttons and chips are toy-bright capsules with centred labels that never wrap."
],
"visualProfile": {
"family": "terrazzo-aggregate",
"material": "polished Venetian terrazzo — electric chips suspended in a warm bone matrix",
"contour": "cured slabs edged by a poured aggregate rim, dense at the edge and thinning inward",
"border": "none",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "pour, settle, and cure",
"density": "medium-high inside modules, airy between",
"accents": ["#12C7C4", "#FF3D93", "#F6CE1B"]
},
"tokens": {
"bg": "#F4EEE1",
"surface": "#FCFAF3",
"text": "#141210",
"muted": "#6E655A",
"border": "transparent",
"accent": "#12C7C4",
"accent2": "#FF3D93",
"accentSoft": "#F6CE1B",
"onAccent": "#141210",
"success": "#16B57A",
"warning": "#F6A609",
"error": "#FF4D6A",
"info": "#3F9BFF",
"radiusControl": "16px",
"radiusCard": "24px",
"radiusPill": "9999px",
"fontSans": "\"Archivo\", system-ui, sans-serif",
"fontSerif": "\"Syne\", system-ui, sans-serif",
"fontMono": "\"Space Mono\", ui-monospace, monospace"
},
"shots": [
{
"id": "festival-ops-overview",
"title": "Festival ops overview dashboard",
"viewport": "desktop",
"primitives": ["card", "tabs", "badge", "table", "button", "separator", "tooltip", "dropdown-menu"],
"composition": "A four-up row of cured-slab metric tiles each carrying a cure meter, a wide call-sheet table beside a narrower signals feed, and a zone-cure bar list below; a breathing depth rail on the left, never a boxed sidebar.",
"mustShow": [
"cured slabs edged by a poured chip rim, no drawn border",
"cure meters whose aggregate fill climbs to SET",
"flat mono status chips with a small left bead",
"table rows with no rules, a teal wash on hover"
],
"avoid": ["any drawn border or rule line", "a boxed or pill navigation bar", "pastel background washes"],
"scene": {
"headline": "Festa di Mezza Estate",
"description": "Pour day; four of six zones set, doors in three hours forty.",
"stats": [
{"label": "RSVPs poured", "value": "8,240", "delta": "SET 82%"},
{"label": "Crews on call", "value": "64", "delta": "SET 70%"},
{"label": "Confetti loaded", "value": "100%", "delta": "18 cannons armed"},
{"label": "Permits cleared", "value": "5 / 6", "delta": "south wall curing"}
]
}
},
{
"id": "new-programme-form",
"title": "New-programme form panel",
"viewport": "desktop",
"primitives": ["input", "textarea", "select", "slider", "switch", "checkbox", "button", "tooltip"],
"composition": "A cured slab holding a stack of polished-slab fields: a text input, a select, a textarea, a crowd-cap slider, two toggles, a checkbox/radio group, and a primary + ghost button pair.",
"mustShow": [
"every editable field as a polished slab with a soft inset, no border",
"focus drawing a two-tone chip-cluster ring, not an outline",
"the slider fill running teal with a magenta-core grip",
"one clearly primary teal capsule, the rest quiet"
],
"avoid": ["visible browser default controls", "borders on inputs", "more than one loud button"],
"scene": {
"headline": "Pour a festa",
"description": "Set the programme, crews and confetti before the first call.",
"fields": [
{"label": "Event name", "placeholder": "Festa di Mezza Estate…", "type": "input"},
{"label": "Crew size", "value": "Standard — 20 hands", "type": "select"},
{"label": "Programme note", "placeholder": "Parade steps off at the fountain…", "type": "textarea"},
{"label": "Crowd cap", "value": "56%", "type": "slider"},
{"label": "Confetti at finale", "value": "on", "type": "switch"}
]
}
},
{
"id": "load-the-programme-dialog",
"title": "Load-the-programme dialog",
"viewport": "desktop",
"primitives": ["dialog", "sheet", "input", "button", "badge", "separator"],
"composition": "A cured-slab modal floated in a soft aura with a poured rim: a header over a body with a programme-name input and a primary teal button.",
"mustShow": [
"the modal floating in a soft-shadow aura with a poured chip rim",
"the input as a polished slab, no border",
"the confirm button a single teal capsule",
"a flat mono status chip on the header"
],
"avoid": ["a hard bordered dialog box", "a grey scrim rectangle", "emoji on the buttons"],
"scene": {
"headline": "Load the programme",
"description": "Six zones selected for pour day; the run sheet locks once you open doors.",
"rows": [
{"name": "Programme", "value": "Mezza Estate — long pour"},
{"name": "Confetti", "value": "18 cannons, armed at the downbeat"},
{"name": "Doors", "value": "18:00, waitlist opens after"}
]
}
}
],
"componentRecipes": [
{"primitive": "button", "intent": "Toy-bright capsule: teal primary, magenta and chrome support, bone ghost, dimmed disabled; label centred, never wraps."},
{"primitive": "card", "intent": "Cured slab at 24px with a poured chip rim on all four edges; no border, never nested; soft radius-matched shadow."},
{"primitive": "input", "intent": "Polished slab at 16px with a soft inset; focus draws a two-tone chip-cluster ring, no outline."},
{"primitive": "textarea", "intent": "Taller polished slab; same inset and chip-cluster focus ring; resizes vertically."},
{"primitive": "select", "intent": "Slab trigger with a hand-drawn chevron; the open menu is a cured slab in a soft aura, teal wash on hover."},
{"primitive": "dialog", "intent": "Cured slab floated in a soft aura with a poured rim; no hard bordered box, no grey scrim rectangle."},
{"primitive": "sheet", "intent": "Slides in from the edge as a cured slab with a poured rim and soft aura."},
{"primitive": "tabs", "intent": "Underlined chip tabs breathing on space; the active trigger rises to a bone slab; never a boxed pill bar."},
{"primitive": "badge", "intent": "Flat mono chip in a semantic ink with a small left bead: Poured, Set, Curing, Cracked, Scheduled, Live."},
{"primitive": "separator", "intent": "A single Coriandoli squiggle or a hairline shadow seam, never a grey rule line."},
{"primitive": "checkbox", "intent": "Small slab well that fills teal and shows an ink check when selected."},
{"primitive": "switch", "intent": "Slab well that fills teal and lifts its knob when checked."},
{"primitive": "slider", "intent": "Slab track with a teal fill and a proud round grip carrying a magenta core."},
{"primitive": "tooltip", "intent": "A small cured chip floating in a soft aura; ink text, no border."},
{"primitive": "dropdown-menu", "intent": "Cured-slab menu in its own aura; hovered items take a faint teal wash."},
{"primitive": "table", "intent": "Soft rows with no rules, mono readings, teal wash on hover; scrolls inside its slab on mobile."}
],
"qualityRules": {
"do": [
"Bound every surface with a poured chip rim; let aggregate density read as the edge.",
"Spend the three inks like a highlighter and keep bone the dominant field.",
"Give live work a cure meter that climbs from scattered chips to SET.",
"Match every shadow's softness to its corner radius."
],
"dont": [
"Draw a border, rule, or single accent edge anywhere.",
"Wash a surface with pastel tint or coat it in saturated accent.",
"Box the navigation into a floating card or pill bar.",
"Use any radius outside 0 / 16px / 24px / 9999px."
]
}
}