back to gallery
design language·market-kiln-wayfinding

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.

the spec

specification

philosophy
summary
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 stereotypesWarm and cool chroma are disciplined by a strong neutral foundationAccessibility and semantic readiness are treated as cultural respect, not afterthoughtsEditorial 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
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
accent
#D89A21
background
#F4EFE4
border
#CFC2A8
error
#A9342B
info
#2B6F8F
muted
#756F64
primary
#1F5B73
secondary
#B84A32
success
#2E6B4F
surface
#FFF9EC
text
#1C2522
warning
#C77B16
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
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.
avoid
  • 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"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · market-kiln-wayfinding
DESIGN.md

at a glance

Palette

Typography

headline-lgAnek Latin · 29px · 700

The quick brown fox jumps

headline-mdAnek Latin · 24px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

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

full9999px
lg10px
md6px
none0px
sm3px
shadcn/ui

implementation kit

needs agent-authored kitstored
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutedwarningerror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

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
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
: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;
}
tsx starter
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>
  );
}
theme JSONcompatibility fallback
{
  "$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"
      ]
    }
  }
}
component recipesstored
# 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>
  )
}
```
preview shotsstored
{
  "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
  }
}
related

More like this