Market Kiln Wayfinding
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
specification
philosophy
tokens
borders4 items
- accent width
- 4px
- character
- thin neutral rule with one offset pigment edge indicating provenance, status, or selected state
- default width
- 1px
- style
- solid
colors12 items
motion3 items
- duration
- 160ms
- easing
- cubic-bezier(0.2, 0, 0.1, 1)
- philosophy
- fast sign-system feedback: pigment rails slide 2px, focus rings snap on, no playful bouncing or cultural caricature
radii5 items
- full
- 9999px
- lg
- 10px
- md
- 6px
- none
- 0
- sm
- 3px
shadows3 items
- lg
- 0 22px 60px rgba(28,37,34,0.18)
- md
- 0 10px 28px rgba(31,91,115,0.13)
- sm
- 0 1px 0 rgba(28,37,34,0.12)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- subtle 8px tile grid plus occasional horizontal sign bands
- card style
- flat cards with civic rule borders, offset pigment rails, and low shadow only for raised sheets
- treatment
- warm matte limestone background with off-white paper panels and tiny non-photographic speckle
typography8 items
- base size
- 16px
- body font
- IBM Plex Sans
- google fonts url
- https://fonts.googleapis.com/css2?family=Anek+Latin:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- heading font
- Anek Latin
- letter spacing
- -0.012em
- line height
- 1.52
- mono font
- IBM Plex Mono
- scale ratio
- 1.22
rules
Use a stable product grid like civic signage: left navigation, a top route band, and content modules aligned to 8px tile increments. Pigment is grouped into purposeful rails and swatch wells rather than spread everywhere.
Medium-high density is acceptable for design operations: compact rows, visible metadata, and narrow controls, balanced by generous section gutters and neutral reading areas.
Headlines use condensed Anek Latin with numeric labels in IBM Plex Mono. Product actions, contrast scores, and provenance warnings are surfaced in compact badges before any large decorative color field.
layout
desktop 1200px+, tablet 768-1199px with collapsible nav, mobile below 640px stacked with sticky route band
12-column desktop grid with a 248px navigation rail, 8px tile baseline, and modular cards that span 3, 4, 6, or 8 columns.
Neutral gutters of 24-48px protect reading zones; saturated fields stay compact and never surround long-form text.
guidance
- Document every editorial color alias with source category, intended product role, and misuse boundary.
- Pair cultural chroma with limestone, paper, ink, and clay neutrals to maintain accessible contrast.
- Provide light and dark semantic mappings, chart-safe variants, and non-hue encodings for data visualization.
- Use saturated colors for navigation, provenance, calls to action, and editorial emphasis—not large reading surfaces.
- Do not combine unrelated regional cues into a fantasy ethnic palette.
- Do not use pigment names as stereotypes, jokes, or decorative labels without provenance.
- Do not rely on hue alone for alerts, charts, selection, or disabled states.
- Do not ship aliases that cannot map back to stable primitive ramps.
katagami spec
# Market Kiln Wayfinding ## Philosophy A production-ready palette language for local cultural chroma: ceramic glaze depth, market awning warmth, festival-pigment accents, and civic-signage clarity translated into respectful digital product tokens with provenance notes, neutral scaffolding, and contrast-safe pairings. ### Values - Local cues become documented token aliases rather than decorative stereotypes - Warm and cool chroma are disciplined by a strong neutral foundation - Accessibility and semantic readiness are treated as cultural respect, not afterthoughts - Editorial richness coexists with enterprise-grade tables, charts, and dark mode ### Anti-Values - Random exotic color mixing without provenance or usage boundaries - Chroma applied to body surfaces where it harms readability or data interpretation - Single-mode palettes that collapse in dark UI or wide-gamut displays - Folkloric ornament pasted onto controls without product purpose ### Visual Character - CSS uses warm limestone and ink neutrals for the page and cards, reserving saturated glaze, marigold, tomato, and leaf hues for rails, badges, chart chips, and stateful controls. - Cards carry a thin civic-sign border with one thicker offset color stripe, implemented through pseudo-elements rather than heavy decorative frames. - Swatches appear as tiled OKLCH-ready color wells with small provenance labels, contrast-pair annotations, and semantic-token aliases visible inside the component. - Layouts combine a municipal wayfinding grid with market-stall bands: sticky side navigation, horizontal sign strips, compact data tables, and controlled bursts of pigment. ## Tokens ### Borders - **Accent Width**: 4px - **Character**: thin neutral rule with one offset pigment edge indicating provenance, status, or selected state - **Default Width**: 1px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#D89A21` | | background | `#F4EFE4` | | border | `#CFC2A8` | | error | `#A9342B` | | info | `#2B6F8F` | | muted | `#756F64` | | primary | `#1F5B73` | | secondary | `#B84A32` | | success | `#2E6B4F` | | surface | `#FFF9EC` | | text | `#1C2522` | | warning | `#C77B16` | ### Motion - **Duration**: 160ms - **Easing**: cubic-bezier(0.2, 0, 0.1, 1) - **Philosophy**: fast sign-system feedback: pigment rails slide 2px, focus rings snap on, no playful bouncing or cultural caricature ### Radii - **Full**: 9999px - **Lg**: 10px - **Md**: 6px - **None**: 0 - **Sm**: 3px ### Shadows - **Lg**: 0 22px 60px rgba(28,37,34,0.18) - **Md**: 0 10px 28px rgba(31,91,115,0.13) - **Sm**: 0 1px 0 rgba(28,37,34,0.12) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: subtle 8px tile grid plus occasional horizontal sign bands - **Card Style**: flat cards with civic rule borders, offset pigment rails, and low shadow only for raised sheets - **Treatment**: warm matte limestone background with off-white paper panels and tiny non-photographic speckle ### Typography - **Base Size**: 16px - **Body Font**: IBM Plex Sans - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Anek+Latin:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap - **Heading Font**: Anek Latin - **Letter Spacing**: -0.012em - **Line Height**: 1.52 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.22 ## Rules ### Composition Use a stable product grid like civic signage: left navigation, a top route band, and content modules aligned to 8px tile increments. Pigment is grouped into purposeful rails and swatch wells rather than spread everywhere. ### Density Medium-high density is acceptable for design operations: compact rows, visible metadata, and narrow controls, balanced by generous section gutters and neutral reading areas. ### Hierarchy Headlines use condensed Anek Latin with numeric labels in IBM Plex Mono. Product actions, contrast scores, and provenance warnings are surfaced in compact badges before any large decorative color field. ### Signature Patterns - Offset pigment rails on cards and active tabs, built with ::before strips that map to semantic status or regional-material provenance categories. - Contrast-safe swatch tiles that show primitive token, editorial alias, allowed foreground, and WCAG role inside the colored well or adjacent neutral label. - Civic route bands: horizontal header strips with arrow-notched labels, mono identifiers, and restrained accent blocks for wayfinding across palette documentation. - Data-viz safety panels pair saturated chips with hatch marks and text labels so colorblind users never rely on hue alone. ## Layout ### Breakpoints desktop 1200px+, tablet 768-1199px with collapsible nav, mobile below 640px stacked with sticky route band ### Grid 12-column desktop grid with a 248px navigation rail, 8px tile baseline, and modular cards that span 3, 4, 6, or 8 columns. ### Whitespace Neutral gutters of 24-48px protect reading zones; saturated fields stay compact and never surround long-form text. ## Guidance ### Do - Document every editorial color alias with source category, intended product role, and misuse boundary. - Pair cultural chroma with limestone, paper, ink, and clay neutrals to maintain accessible contrast. - Provide light and dark semantic mappings, chart-safe variants, and non-hue encodings for data visualization. - Use saturated colors for navigation, provenance, calls to action, and editorial emphasis—not large reading surfaces. ### Don't - Do not combine unrelated regional cues into a fantasy ethnic palette. - Do not use pigment names as stereotypes, jokes, or decorative labels without provenance. - Do not rely on hue alone for alerts, charts, selection, or disabled states. - Do not ship aliases that cannot map back to stable primitive ramps.
DESIGN.md
---
version: "alpha"
name: "Market Kiln Wayfinding"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#D89A21"
background: "#F4EFE4"
border: "#CFC2A8"
error: "#A9342B"
info: "#2B6F8F"
muted: "#756F64"
primary: "#1F5B73"
secondary: "#B84A32"
success: "#2E6B4F"
surface: "#FFF9EC"
text: "#1C2522"
warning: "#C77B16"
typography:
headline-lg:
fontFamily: "Anek Latin"
fontSize: "1.816rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.012em"
headline-md:
fontFamily: "Anek Latin"
fontSize: "1.488rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.012em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.52
letterSpacing: "-0.012em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "10px"
md: "6px"
none: "0px"
sm: "3px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Market Kiln Wayfinding
## Overview
A production-ready palette language for local cultural chroma: ceramic glaze depth, market awning warmth, festival-pigment accents, and civic-signage clarity translated into respectful digital product tokens with provenance notes, neutral scaffolding, and contrast-safe pairings.
### Values
- Local cues become documented token aliases rather than decorative stereotypes
- Warm and cool chroma are disciplined by a strong neutral foundation
- Accessibility and semantic readiness are treated as cultural respect, not afterthoughts
- Editorial richness coexists with enterprise-grade tables, charts, and dark mode
### Anti-Values
- Random exotic color mixing without provenance or usage boundaries
- Chroma applied to body surfaces where it harms readability or data interpretation
- Single-mode palettes that collapse in dark UI or wide-gamut displays
- Folkloric ornament pasted onto controls without product purpose
### Visual Character
- CSS uses warm limestone and ink neutrals for the page and cards, reserving saturated glaze, marigold, tomato, and leaf hues for rails, badges, chart chips, and stateful controls.
- Cards carry a thin civic-sign border with one thicker offset color stripe, implemented through pseudo-elements rather than heavy decorative frames.
- Swatches appear as tiled OKLCH-ready color wells with small provenance labels, contrast-pair annotations, and semantic-token aliases visible inside the component.
- Layouts combine a municipal wayfinding grid with market-stall bands: sticky side navigation, horizontal sign strips, compact data tables, and controlled bursts of pigment.
## 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 | `#D89A21` |
| background | `#F4EFE4` |
| border | `#CFC2A8` |
| error | `#A9342B` |
| info | `#2B6F8F` |
| muted | `#756F64` |
| primary | `#1F5B73` |
| secondary | `#B84A32` |
| success | `#2E6B4F` |
| surface | `#FFF9EC` |
| text | `#1C2522` |
| warning | `#C77B16` |
## Typography
- **Headline-Lg**: Anek Latin, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Anek Latin, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.52.
- **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
desktop 1200px+, tablet 768-1199px with collapsible nav, mobile below 640px stacked with sticky route band
### Grid
12-column desktop grid with a 248px navigation rail, 8px tile baseline, and modular cards that span 3, 4, 6, or 8 columns.
### Whitespace
Neutral gutters of 24-48px protect reading zones; saturated fields stay compact and never surround long-form text.
## Elevation & Depth
### Shadows
- **Lg**: 0 22px 60px rgba(28,37,34,0.18)
- **Md**: 0 10px 28px rgba(31,91,115,0.13)
- **Sm**: 0 1px 0 rgba(28,37,34,0.12)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `10px`
- **Md**: `6px`
- **None**: `0px`
- **Sm**: `3px`
### Surfaces
- **Bg Pattern**: subtle 8px tile grid plus occasional horizontal sign bands
- **Card Style**: flat cards with civic rule borders, offset pigment rails, and low shadow only for raised sheets
- **Treatment**: warm matte limestone background with off-white paper panels and tiny non-photographic speckle
### Borders
- **Accent Width**: 4px
- **Character**: thin neutral rule with one offset pigment edge indicating provenance, status, or selected state
- **Default Width**: 1px
- **Style**: solid
## Components
### Composition
Use a stable product grid like civic signage: left navigation, a top route band, and content modules aligned to 8px tile increments. Pigment is grouped into purposeful rails and swatch wells rather than spread everywhere.
### Density
Medium-high density is acceptable for design operations: compact rows, visible metadata, and narrow controls, balanced by generous section gutters and neutral reading areas.
### Hierarchy
Headlines use condensed Anek Latin with numeric labels in IBM Plex Mono. Product actions, contrast scores, and provenance warnings are surfaced in compact badges before any large decorative color field.
### Signature Patterns
- Offset pigment rails on cards and active tabs, built with ::before strips that map to semantic status or regional-material provenance categories.
- Contrast-safe swatch tiles that show primitive token, editorial alias, allowed foreground, and WCAG role inside the colored well or adjacent neutral label.
- Civic route bands: horizontal header strips with arrow-notched labels, mono identifiers, and restrained accent blocks for wayfinding across palette documentation.
- Data-viz safety panels pair saturated chips with hatch marks and text labels so colorblind users never rely on hue alone.
## 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-019ea9b2-8835-7702-b990-8543080bdc55/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 Document every editorial color alias with source category, intended product role, and misuse boundary.
- Do Pair cultural chroma with limestone, paper, ink, and clay neutrals to maintain accessible contrast.
- Do Provide light and dark semantic mappings, chart-safe variants, and non-hue encodings for data visualization.
- Do Use saturated colors for navigation, provenance, calls to action, and editorial emphasis—not large reading surfaces.
- Don't Do not combine unrelated regional cues into a fantasy ethnic palette.
- Don't Do not use pigment names as stereotypes, jokes, or decorative labels without provenance.
- Don't Do not rely on hue alone for alerts, charts, selection, or disabled states.
- Don't Do not ship aliases that cannot map back to stable primitive ramps.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "market-kiln-wayfinding",
"type": "registry:theme",
"title": "Market Kiln Wayfinding shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE4",
"foreground": "#1C2522",
"card": "#FFF9EC",
"card-foreground": "#1C2522",
"popover": "#FFF9EC",
"popover-foreground": "#1C2522",
"primary": "#1F5B73",
"primary-foreground": "#ffffff",
"secondary": "#B84A32",
"secondary-foreground": "#ffffff",
"muted": "#756F64",
"muted-foreground": "#1C2522",
"accent": "#D89A21",
"accent-foreground": "#ffffff",
"destructive": "#A9342B",
"border": "#CFC2A8",
"input": "#CFC2A8",
"ring": "#D89A21",
"chart-1": "#1F5B73",
"chart-2": "#B84A32",
"chart-3": "#D89A21",
"chart-4": "#2E6B4F",
"chart-5": "#C77B16",
"sidebar": "#FFF9EC",
"sidebar-foreground": "#1C2522",
"sidebar-primary": "#1F5B73",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2B6F8F",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#CFC2A8",
"sidebar-ring": "#D89A21",
"radius": "6px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1F5B73",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D89A21",
"accent-foreground": "#ffffff",
"destructive": "#A9342B",
"border": "#303642",
"input": "#303642",
"ring": "#D89A21",
"chart-1": "#1F5B73",
"chart-2": "#B84A32",
"chart-3": "#D89A21",
"chart-4": "#2E6B4F",
"chart-5": "#C77B16",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1F5B73",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D89A21",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D89A21",
"radius": "6px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b2-8835-7702-b990-8543080bdc55",
"slug": "market-kiln-wayfinding",
"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: #F4EFE4;
--foreground: #1C2522;
--card: #FFF9EC;
--card-foreground: #1C2522;
--popover: #FFF9EC;
--popover-foreground: #1C2522;
--primary: #1F5B73;
--primary-foreground: #ffffff;
--secondary: #B84A32;
--secondary-foreground: #ffffff;
--muted: #756F64;
--muted-foreground: #1C2522;
--accent: #D89A21;
--accent-foreground: #ffffff;
--destructive: #A9342B;
--border: #CFC2A8;
--input: #CFC2A8;
--ring: #D89A21;
--chart-1: #1F5B73;
--chart-2: #B84A32;
--chart-3: #D89A21;
--chart-4: #2E6B4F;
--chart-5: #C77B16;
--sidebar: #FFF9EC;
--sidebar-foreground: #1C2522;
--sidebar-primary: #1F5B73;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2B6F8F;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #CFC2A8;
--sidebar-ring: #D89A21;
--radius: 6px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #1F5B73;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #D89A21;
--accent-foreground: #ffffff;
--destructive: #A9342B;
--border: #303642;
--input: #303642;
--ring: #D89A21;
--chart-1: #1F5B73;
--chart-2: #B84A32;
--chart-3: #D89A21;
--chart-4: #2E6B4F;
--chart-5: #C77B16;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #1F5B73;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #D89A21;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #D89A21;
--radius: 6px;
}
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 MarketKilnWayfindingShadcnKit() {
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">Market Kiln Wayfinding</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": "market-kiln-wayfinding",
"type": "registry:theme",
"title": "Market Kiln Wayfinding shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE4",
"foreground": "#1C2522",
"card": "#FFF9EC",
"card-foreground": "#1C2522",
"popover": "#FFF9EC",
"popover-foreground": "#1C2522",
"primary": "#1F5B73",
"primary-foreground": "#ffffff",
"secondary": "#B84A32",
"secondary-foreground": "#ffffff",
"muted": "#756F64",
"muted-foreground": "#1C2522",
"accent": "#D89A21",
"accent-foreground": "#ffffff",
"destructive": "#A9342B",
"border": "#CFC2A8",
"input": "#CFC2A8",
"ring": "#D89A21",
"chart-1": "#1F5B73",
"chart-2": "#B84A32",
"chart-3": "#D89A21",
"chart-4": "#2E6B4F",
"chart-5": "#C77B16",
"sidebar": "#FFF9EC",
"sidebar-foreground": "#1C2522",
"sidebar-primary": "#1F5B73",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2B6F8F",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#CFC2A8",
"sidebar-ring": "#D89A21",
"radius": "6px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1F5B73",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D89A21",
"accent-foreground": "#ffffff",
"destructive": "#A9342B",
"border": "#303642",
"input": "#303642",
"ring": "#D89A21",
"chart-1": "#1F5B73",
"chart-2": "#B84A32",
"chart-3": "#D89A21",
"chart-4": "#2E6B4F",
"chart-5": "#C77B16",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1F5B73",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D89A21",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D89A21",
"radius": "6px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b2-8835-7702-b990-8543080bdc55",
"slug": "market-kiln-wayfinding",
"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"
]
}
}
}
# Market Kiln Wayfinding shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate local cultural chroma into shadcn/ui product primitives without inventing a second component system. The preview should feel like a palette provenance console: warm neutral scaffolding, civic route bands, offset pigment rails, compact swatch evidence, and explicit accessibility states.
## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, and table from `@/components/ui/*`.
## Token cues
Use limestone background `{colors.background}`, paper cards `{colors.surface}`, ink text `{colors.text}`, glaze primary `{colors.primary}`, tomato secondary `{colors.secondary}`, marigold accent `{colors.accent}`, and neutral borders `{colors.border}`. Keep radius scale tight: cards 10px, controls 6px, badges full.
## Visual character to preserve
Thin civic borders, one offset pigment rail, visible token/provenance labels, data-viz hatches or text labels, and restrained saturated color. Never turn the language into a festival collage.
## ShadSync visual profile
family: civic-market-token-system; material: matte-limestone-paper; contour: rectilinear-with-small-radius; border: thin-neutral-plus-pigment-rail; underlay: subtle-tile-grid; grain: low speckle; stickerBadges: restrained provenance pills; motion: snap-rail-2px; density: medium-high; accents: glaze, tomato, marigold, leaf.
## Signature component recipes
- button: primary uses glaze fill, ink border, marigold inset-left rail; secondary is paper with tomato rail; focus ring marigold 2px.
- card: paper surface, 1px border, 4px `before:` rail; card header includes mono route code badge.
- input: limestone field, neutral border, compact label, marigold focus ring, helper text for allowed aliases.
- textarea: same as input with provenance-note placeholder and no saturated background.
- select: paper trigger with mono selected token and glaze chevron treatment.
- dialog: raised paper panel, glaze rail, warning badges for misuse boundaries, no backdrop blur overload.
- sheet: side provenance inspector with sticky route band and compact evidence rows.
- tabs: active tab shows offset tomato or glaze rail; inactive tabs remain neutral.
- badge: pill with small color dot plus text label; never hue alone.
- separator: 1px neutral rule with optional short marigold segment for section starts.
- checkbox: square 6px control, glaze checked fill, visible label.
- switch: neutral track, glaze thumb for on, text label adjacent.
- slider: neutral track, marigold filled segment, numeric mono output.
- tooltip: ink surface with paper text and provenance caveat.
- dropdown-menu: paper menu, compact rows, active item left rail.
- table: dense rows, mono token columns, chip plus label for chart colors.
## Preview shots
application-shell shows route navigation and swatch approval metrics; detail-editor shows alias provenance editing; data-operations shows chart-token safety table.
## Implementation contract
Import local shadcn primitives from `@/components/ui/*`. Use Tailwind arbitrary values only to express the language tokens and rails; preserve accessible labels and non-hue states.
## 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"
export function ProvenanceCard() {
return (
<Card className="relative overflow-hidden rounded-[10px] border-[#CFC2A8] bg-[#FFF9EC] before:absolute before:inset-y-0 before:left-0 before:w-1 before:bg-[#1F5B73]">
<CardHeader className="pl-6">
<Badge className="w-fit rounded-full border-[#CFC2A8] bg-[#F4EFE4] font-mono text-[#1C2522]">GLAZE / AA</Badge>
<CardTitle className="font-[Anek_Latin] text-2xl tracking-[-0.012em]">Civic glaze primary</CardTitle>
</CardHeader>
<CardContent className="pl-6 text-[#756F64]">Documented primitive with allowed foreground and misuse notes.</CardContent>
<Button className="ml-6 mb-6 rounded-[6px] border border-[#1C2522] bg-[#1F5B73] text-[#FFF9EC] shadow-[inset_4px_0_#D89A21]">Approve route</Button>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to button."
},
{
"component": "card",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to card."
},
{
"component": "input",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to input."
},
{
"component": "textarea",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to textarea."
},
{
"component": "select",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to select."
},
{
"component": "dialog",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to dialog."
},
{
"component": "sheet",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to sheet."
},
{
"component": "tabs",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to tabs."
},
{
"component": "badge",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to badge."
},
{
"component": "separator",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to separator."
},
{
"component": "checkbox",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to checkbox."
},
{
"component": "switch",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to switch."
},
{
"component": "slider",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to slider."
},
{
"component": "tooltip",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to tooltip."
},
{
"component": "dropdown-menu",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to dropdown-menu."
},
{
"component": "table",
"recipe": "Use warm neutral surfaces, compact spacing, visible labels, and the Market Kiln rail/focus treatment appropriate to table."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"generic SaaS blue-only dashboard",
"decorative cultural collage"
],
"composition": "Left civic route navigation, top status band, swatch approval cards, and release metrics.",
"id": "application-shell",
"mustShowStates": [
"active tab with glaze rail",
"AA badge with text",
"primary and secondary buttons",
"tooltip caveat"
],
"primitives": [
"button",
"card",
"tabs",
"badge",
"separator",
"table",
"tooltip"
],
"scene": {
"actions": [
"Approve token route",
"Open provenance notes"
],
"description": "Design ops reviews primitive ramps, editorial aliases, and contrast-safe pairings before release.",
"eyebrow": "WAYFINDING / TOKEN REVIEW",
"headline": "Approve local chroma aliases for product use",
"stats": [
{
"label": "AA pairs",
"value": "31"
},
{
"label": "Aliases documented",
"value": "96%"
},
{
"label": "Chart hatches",
"value": "8"
}
]
}
},
{
"avoid": [
"unnamed pigment fields",
"hue-only validation"
],
"composition": "A sheet-style provenance editor with fields, misuse checklist, contrast threshold slider, and dark-mode switch.",
"id": "detail-editor",
"mustShowStates": [
"focused marigold input",
"checked misuse guardrail",
"open provenance dialog",
"enabled dark mapping switch"
],
"primitives": [
"input",
"textarea",
"select",
"dialog",
"sheet",
"checkbox",
"switch",
"slider",
"badge"
],
"scene": {
"actions": [
"Save alias",
"Request local review"
],
"description": "Capture source category, approved foregrounds, local review owner, and prohibited naming.",
"eyebrow": "ALIAS PROVENANCE",
"fields": [
{
"label": "Primitive token",
"value": "accent.500"
},
{
"label": "Source category",
"value": "festival pigment / route marker"
},
{
"label": "Misuse boundary",
"value": "not a decorative ethnic label"
}
],
"headline": "Edit Marigold Route 500"
}
},
{
"avoid": [
"rainbow chart inventory",
"color-only success or error"
],
"composition": "Dense operations table for chart tokens with color chips, hatch names, labels, and status badges.",
"id": "data-operations",
"mustShowStates": [
"dropdown active row rail",
"chart chip with text label",
"error badge for undocumented alias",
"neutral table lines"
],
"primitives": [
"table",
"dropdown-menu",
"badge",
"card",
"separator",
"button",
"select"
],
"scene": {
"actions": [
"Export chart tokens",
"Filter unsafe"
],
"description": "Every saturated chip has a label, hatch, and semantic role for colorblind-safe analytics.",
"eyebrow": "DATA-VIZ SAFETY",
"headline": "Chart tokens require non-hue cues",
"rows": [
{
"cue": "diagonal hatch",
"status": "ready",
"token": "chart.glaze"
},
{
"cue": "square marker",
"status": "exception",
"token": "chart.tomato"
},
{
"cue": "dot marker",
"status": "ready",
"token": "chart.marigold"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"glaze blue",
"market tomato",
"marigold route",
"leaf verified"
],
"border": "thin-neutral-plus-offset-pigment-rail",
"contour": "rectilinear-small-radius",
"density": "medium-high",
"family": "civic-market-token-system",
"grain": true,
"material": "matte-limestone-paper",
"motion": "snap-rail-2px",
"stickerBadges": true,
"underlay": true
}
}