Market Mirage Atelier
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
specification
philosophy
tokens
borders4 items
- accent width
- 3px
- character
- inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo
- default width
- 1.5px
- style
- solid with occasional dashed separators
colors12 items
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(.2,.8,.2,1)
- philosophy
- small tactile lifts and dye-swatch reveals; no essential information appears only through motion
radii5 items
- full
- 9999px
- lg
- 28px
- md
- 14px
- none
- 0
- sm
- 6px
shadows3 items
- lg
- 0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5)
- md
- 0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18)
- sm
- 0 2px 0 rgba(36,24,18,0.22)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- radial spice-bloom gradients plus repeating micro-dash market ledger lines
- card style
- rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
- treatment
- warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture
typography8 items
- base size
- 16px
- body font
- Source Serif 4
- google fonts url
- https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,600..800,70,1&family=IBM+Plex+Mono:wght@500;600&family=Source+Serif+4:opsz,wght@8..60,400..700&display=swap
- heading font
- Fraunces
- letter spacing
- -0.015em
- line height
- 1.58
- mono font
- IBM Plex Mono
- scale ratio
- 1.25
rules
Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid.
Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text.
Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps.
layout
mobile 375px, tablet 768px, desktop 1180px, wide 1440px
Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile.
Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards.
guidance
- Use #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast.
- Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons.
- Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger.
- Do not place muted brown body text on saturated orange or plum fields.
- Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment.
- Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
katagami spec
# Market Mirage Atelier ## Philosophy A WCAG-aware cultural editorial palette system that blends local market provenance, tender vintage warmth, sensory surrealism, and balanced-bold commercial contrast into legible product and publishing screens. ### Values - local provenance made visible through named pigment roles - expressive color that remains readable in editorial UI - tender warmth balanced by confident commercial accents - surreal sensory atmosphere grounded in practical accessibility pairings ### Anti-Values - generic neon trend sampling without provenance - low-contrast mood boards that cannot become usable interfaces - token sets that rely on color alone to communicate state ### Visual Character - Layer warm parchment backgrounds with cream paper cards, subtle radial dye blooms, and fine grain overlays using CSS gradients and blend modes. - Use high-contrast ink typography on all long-form editorial surfaces, reserving paprika, plum, and indigo pigments for framed accents and short labels. - Build asymmetrical magazine grids with bordered provenance tags, offset image wells, and rounded ticket-like panels that remain structurally aligned. - Pair every saturated color block with explicit iconography, labels, borders, or pattern marks so meaning never depends on hue alone. ## Tokens ### Borders - **Accent Width**: 3px - **Character**: inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo - **Default Width**: 1.5px - **Style**: solid with occasional dashed separators ### Colors | Name | Value | |------|-------| | accent | `#B85B2C` | | background | `#F6E4C8` | | border | `#8A6A4B` | | error | `#8C1D2C` | | info | `#243F73` | | muted | `#6A5848` | | primary | `#7F2A1D` | | secondary | `#3F4E2A` | | success | `#315C36` | | surface | `#FFF7E8` | | text | `#241812` | | warning | `#9B5A12` | ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: small tactile lifts and dye-swatch reveals; no essential information appears only through motion ### Radii - **Full**: 9999px - **Lg**: 28px - **Md**: 14px - **None**: 0 - **Sm**: 6px ### Shadows - **Lg**: 0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5) - **Md**: 0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18) - **Sm**: 0 2px 0 rgba(36,24,18,0.22) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: radial spice-bloom gradients plus repeating micro-dash market ledger lines - **Card Style**: rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels - **Treatment**: warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture ### Typography - **Base Size**: 16px - **Body Font**: Source Serif 4 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,600..800,70,1&family=IBM+Plex+Mono:wght@500;600&family=Source+Serif+4:opsz,wght@8..60,400..700&display=swap - **Heading Font**: Fraunces - **Letter Spacing**: -0.015em - **Line Height**: 1.58 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.25 ## Rules ### Composition Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid. ### Density Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text. ### Hierarchy Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps. ### Signature Patterns - Dye-bloom underlays sit behind hero cards as radial gradients clipped by rounded rectangles, never behind dense paragraphs. - Provenance tags use mono uppercase text, small pictogram marks, and bordered cream badges so origin metadata is legible without relying on color. - Ticket-frame panels combine a 3px accent side rule, dashed internal separator, and offset warm shadow to evoke vintage market labels. - State colors are paired with icons, labels, patterned fills, and visible borders to satisfy color-independent accessibility constraints. ## Layout ### Breakpoints mobile 375px, tablet 768px, desktop 1180px, wide 1440px ### Grid Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile. ### Whitespace Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards. ## Guidance ### Do - Use #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast. - Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons. - Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger. ### Don't - Do not place muted brown body text on saturated orange or plum fields. - Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment. - Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
DESIGN.md
---
version: "alpha"
name: "Market Mirage Atelier"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#B85B2C"
background: "#F6E4C8"
border: "#8A6A4B"
error: "#8C1D2C"
info: "#243F73"
muted: "#6A5848"
primary: "#7F2A1D"
secondary: "#3F4E2A"
success: "#315C36"
surface: "#FFF7E8"
text: "#241812"
warning: "#9B5A12"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.015em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.015em"
body-md:
fontFamily: "Source Serif 4"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.58
letterSpacing: "-0.015em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "28px"
md: "14px"
none: "0px"
sm: "6px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#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 Mirage Atelier
## Overview
A WCAG-aware cultural editorial palette system that blends local market provenance, tender vintage warmth, sensory surrealism, and balanced-bold commercial contrast into legible product and publishing screens.
### Values
- local provenance made visible through named pigment roles
- expressive color that remains readable in editorial UI
- tender warmth balanced by confident commercial accents
- surreal sensory atmosphere grounded in practical accessibility pairings
### Anti-Values
- generic neon trend sampling without provenance
- low-contrast mood boards that cannot become usable interfaces
- token sets that rely on color alone to communicate state
### Visual Character
- Layer warm parchment backgrounds with cream paper cards, subtle radial dye blooms, and fine grain overlays using CSS gradients and blend modes.
- Use high-contrast ink typography on all long-form editorial surfaces, reserving paprika, plum, and indigo pigments for framed accents and short labels.
- Build asymmetrical magazine grids with bordered provenance tags, offset image wells, and rounded ticket-like panels that remain structurally aligned.
- Pair every saturated color block with explicit iconography, labels, borders, or pattern marks so meaning never depends on hue alone.
## 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 | `#B85B2C` |
| background | `#F6E4C8` |
| border | `#8A6A4B` |
| error | `#8C1D2C` |
| info | `#243F73` |
| muted | `#6A5848` |
| primary | `#7F2A1D` |
| secondary | `#3F4E2A` |
| success | `#315C36` |
| surface | `#FFF7E8` |
| text | `#241812` |
| warning | `#9B5A12` |
## Typography
- **Headline-Lg**: Fraunces, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Source Serif 4, 16px, weight 400, line-height 1.58.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
### Breakpoints
mobile 375px, tablet 768px, desktop 1180px, wide 1440px
### Grid
Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile.
### Whitespace
Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards.
## Elevation & Depth
### Shadows
- **Lg**: 0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5)
- **Md**: 0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18)
- **Sm**: 0 2px 0 rgba(36,24,18,0.22)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `28px`
- **Md**: `14px`
- **None**: `0px`
- **Sm**: `6px`
### Surfaces
- **Bg Pattern**: radial spice-bloom gradients plus repeating micro-dash market ledger lines
- **Card Style**: rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
- **Treatment**: warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture
### Borders
- **Accent Width**: 3px
- **Character**: inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo
- **Default Width**: 1.5px
- **Style**: solid with occasional dashed separators
## Components
### Composition
Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid.
### Density
Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text.
### Hierarchy
Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps.
### Signature Patterns
- Dye-bloom underlays sit behind hero cards as radial gradients clipped by rounded rectangles, never behind dense paragraphs.
- Provenance tags use mono uppercase text, small pictogram marks, and bordered cream badges so origin metadata is legible without relying on color.
- Ticket-frame panels combine a 3px accent side rule, dashed internal separator, and offset warm shadow to evoke vintage market labels.
- State colors are paired with icons, labels, patterned fills, and visible borders to satisfy color-independent accessibility constraints.
## 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-019ea9a4-d5cf-7de2-b14a-0320940808db/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 Use #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast.
- Do Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons.
- Do Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger.
- Don't Do not place muted brown body text on saturated orange or plum fields.
- Don't Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment.
- Don't Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "market-mirage-atelier",
"type": "registry:theme",
"title": "Market Mirage Atelier shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F6E4C8",
"foreground": "#241812",
"card": "#FFF7E8",
"card-foreground": "#241812",
"popover": "#FFF7E8",
"popover-foreground": "#241812",
"primary": "#7F2A1D",
"primary-foreground": "#ffffff",
"secondary": "#3F4E2A",
"secondary-foreground": "#ffffff",
"muted": "#6A5848",
"muted-foreground": "#241812",
"accent": "#B85B2C",
"accent-foreground": "#ffffff",
"destructive": "#8C1D2C",
"border": "#8A6A4B",
"input": "#8A6A4B",
"ring": "#B85B2C",
"chart-1": "#7F2A1D",
"chart-2": "#3F4E2A",
"chart-3": "#B85B2C",
"chart-4": "#315C36",
"chart-5": "#9B5A12",
"sidebar": "#FFF7E8",
"sidebar-foreground": "#241812",
"sidebar-primary": "#7F2A1D",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#243F73",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#8A6A4B",
"sidebar-ring": "#B85B2C",
"radius": "14px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#7F2A1D",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B85B2C",
"accent-foreground": "#ffffff",
"destructive": "#8C1D2C",
"border": "#303642",
"input": "#303642",
"ring": "#B85B2C",
"chart-1": "#7F2A1D",
"chart-2": "#3F4E2A",
"chart-3": "#B85B2C",
"chart-4": "#315C36",
"chart-5": "#9B5A12",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#7F2A1D",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B85B2C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#B85B2C",
"radius": "14px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a4-d5cf-7de2-b14a-0320940808db",
"slug": "market-mirage-atelier",
"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
Market Mirage Atelier
Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.
Accessible cultural color stories
Coordinate market-inspired pigments into legible editorial systems.
Paprika stamp usage rule
Tune saturation, surface pairing, and non-color cues before publishing.
Palette release checks
Audit provenance, contrast, and semantic cue coverage across editorial modules.
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: #F6E4C8;
--foreground: #241812;
--card: #FFF7E8;
--card-foreground: #241812;
--popover: #FFF7E8;
--popover-foreground: #241812;
--primary: #7F2A1D;
--primary-foreground: #ffffff;
--secondary: #3F4E2A;
--secondary-foreground: #ffffff;
--muted: #6A5848;
--muted-foreground: #241812;
--accent: #B85B2C;
--accent-foreground: #ffffff;
--destructive: #8C1D2C;
--border: #8A6A4B;
--input: #8A6A4B;
--ring: #B85B2C;
--chart-1: #7F2A1D;
--chart-2: #3F4E2A;
--chart-3: #B85B2C;
--chart-4: #315C36;
--chart-5: #9B5A12;
--sidebar: #FFF7E8;
--sidebar-foreground: #241812;
--sidebar-primary: #7F2A1D;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #243F73;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #8A6A4B;
--sidebar-ring: #B85B2C;
--radius: 14px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #7F2A1D;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #B85B2C;
--accent-foreground: #ffffff;
--destructive: #8C1D2C;
--border: #303642;
--input: #303642;
--ring: #B85B2C;
--chart-1: #7F2A1D;
--chart-2: #3F4E2A;
--chart-3: #B85B2C;
--chart-4: #315C36;
--chart-5: #9B5A12;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #7F2A1D;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #B85B2C;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #B85B2C;
--radius: 14px;
}
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 MarketMirageAtelierShadcnKit() {
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 Mirage Atelier</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-mirage-atelier",
"type": "registry:theme",
"title": "Market Mirage Atelier shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F6E4C8",
"foreground": "#241812",
"card": "#FFF7E8",
"card-foreground": "#241812",
"popover": "#FFF7E8",
"popover-foreground": "#241812",
"primary": "#7F2A1D",
"primary-foreground": "#ffffff",
"secondary": "#3F4E2A",
"secondary-foreground": "#ffffff",
"muted": "#6A5848",
"muted-foreground": "#241812",
"accent": "#B85B2C",
"accent-foreground": "#ffffff",
"destructive": "#8C1D2C",
"border": "#8A6A4B",
"input": "#8A6A4B",
"ring": "#B85B2C",
"chart-1": "#7F2A1D",
"chart-2": "#3F4E2A",
"chart-3": "#B85B2C",
"chart-4": "#315C36",
"chart-5": "#9B5A12",
"sidebar": "#FFF7E8",
"sidebar-foreground": "#241812",
"sidebar-primary": "#7F2A1D",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#243F73",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#8A6A4B",
"sidebar-ring": "#B85B2C",
"radius": "14px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#7F2A1D",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B85B2C",
"accent-foreground": "#ffffff",
"destructive": "#8C1D2C",
"border": "#303642",
"input": "#303642",
"ring": "#B85B2C",
"chart-1": "#7F2A1D",
"chart-2": "#3F4E2A",
"chart-3": "#B85B2C",
"chart-4": "#315C36",
"chart-5": "#9B5A12",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#7F2A1D",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B85B2C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#B85B2C",
"radius": "14px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a4-d5cf-7de2-b14a-0320940808db",
"slug": "market-mirage-atelier",
"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 Mirage Atelier shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate the Market Mirage Atelier palette into accessible editorial product screens: parchment reading surfaces, ticket-frame cards, mono provenance tags, paprika/olive/indigo accents, and explicit state labels.
## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, table.
## Token cues
Use background #F6E4C8, surface #FFF7E8, text #241812, primary paprika #7F2A1D, secondary olive #3F4E2A, accent clay #B85B2C, info indigo #243F73, and border #8A6A4B. Long text belongs on cream or parchment with ink foreground.
## Visual character to preserve
Warm parchment fields, subtle dye blooms, ticket frames with offset shadows, mono provenance badges, and color-independent status affordances.
## ShadSync visual profile
family: cultural-editorial; material: parchment-paper; contour: rounded-ticket; border: ink-solid-plus-dashed; underlay: true; grain: true; stickerBadges: true; motion: tactile-lift; density: balanced-editorial; accents: paprika, olive, clay, indigo.
## Signature component recipes
- button: Use rounded-full, 2px ink border, 3px drop shadow. Primary uses paprika background with cream text; secondary uses cream with ink text. Include icon or action verb.
- card: Use cream background, 1.5px border, 22px-28px radius, offset clay or indigo underlay for feature cards.
- input: Cream field, ink text, border #8A6A4B, focus-visible indigo ring; labels are uppercase IBM Plex Mono.
- textarea: Same as input; use parchment inset for editorial notes and never place muted text on clay.
- select: Same as input with visible chevron and label; include helper copy for palette constraints.
- dialog: Cream ticket panel over parchment scrim with paprika side rule and explicit close button.
- sheet: Use ledger-like side panel with dashed separators and provenance tags.
- tabs: Cream tabs with active indigo fill and text label, not color-only active indication.
- badge: Mono uppercase pill with icon/pictogram, ink border, and role text.
- separator: Dashed #8A6A4B for internal provenance breaks; solid for major editorial frames.
- checkbox: Ink border, indigo focus ring, check icon plus adjacent explicit label.
- switch: Olive on-state with text label and visible knob; do not rely on green alone.
- slider: Ink rail, paprika active range, numeric value label, and tick marks.
- tooltip: Indigo or ink panel with cream text and short explanatory copy.
- dropdown-menu: Cream menu with border, shadow, mono section labels, and clear focus states.
- table: Editorial ledger rows, dashed dividers, readable 16px minimum type, status cells include icon and word.
## Preview shots
application-shell, detail-editor, data-operations.
## Implementation contract
Import local primitives from `@/components/ui/*`. Preserve contrast pairings and pair hue with icons, labels, borders, or pattern marks. Do not invent another component system.
## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
import { Input } from "@/components/ui/input"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
export function MarketMiragePanel() {
return (
<Card className="rounded-[28px] border-2 border-[#8A6A4B] bg-[#FFF7E8] text-[#241812] shadow-[0_14px_30px_rgba(80,43,22,.18),0_3px_0_rgba(36,24,18,.18)]">
<CardHeader className="border-b border-dashed border-[#8A6A4B]">
<Badge className="w-fit rounded-full border border-[#8A6A4B] bg-[#F6E4C8] font-mono uppercase text-[#241812]">✦ Provenance safe</Badge>
<CardTitle className="font-serif text-4xl tracking-tight">Palette contrast matrix</CardTitle>
</CardHeader>
<CardContent className="space-y-4 p-6">
<Input aria-label="Story region" defaultValue="coastal produce archive" className="rounded-[14px] border-[#8A6A4B] bg-[#FFF7E8] focus-visible:ring-[#243F73]" />
<Button className="rounded-full border-2 border-[#241812] bg-[#7F2A1D] text-[#FFF7E8] shadow-[0_3px_0_#241812]">◆ Apply AA pairings</Button>
<Table><TableHeader><TableRow><TableHead>Role</TableHead><TableHead>Pairing</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>Body</TableCell><TableCell>Ink on cream</TableCell></TableRow></TableBody></Table>
</CardContent>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"generic beige dashboard",
"color-only status chips"
],
"composition": "Magazine-like palette command center with hero contrast summary, provenance side rail, and ledger table.",
"id": "application-shell",
"mustShowStates": [
"active tab has indigo fill plus underline label",
"warning row uses icon and text label",
"primary CTA uses paprika with cream text"
],
"primitives": [
"button",
"card",
"badge",
"separator",
"tabs",
"tooltip",
"dropdown-menu",
"table"
],
"scene": {
"actions": [
"Apply AA pairings",
"Open provenance map"
],
"description": "Coordinate market-inspired pigments into legible editorial systems.",
"eyebrow": "2026 palette desk",
"headline": "Accessible cultural color stories",
"rows": [
{
"background": "Cream",
"foreground": "Ink",
"role": "Feature essay",
"state": "Safe"
},
{
"background": "Paprika",
"foreground": "Cream",
"role": "CTA",
"state": "Large text"
},
{
"background": "Indigo",
"foreground": "Cream",
"role": "Info note",
"state": "Icon + label"
}
],
"stats": [
{
"label": "Body pairs",
"value": "7:1 target"
},
{
"label": "Accent roles",
"value": "12 tokens"
},
{
"label": "Sources",
"value": "6 forecasts"
}
]
}
},
{
"avoid": [
"low contrast placeholder text",
"unlabeled icon-only controls"
],
"composition": "Palette role editor with ticket-frame form, explicit contrast warnings, and sensory provenance fields.",
"id": "detail-editor",
"mustShowStates": [
"focus ring in indigo",
"checkbox has visible check and label",
"switch includes on/off text"
],
"primitives": [
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"button",
"badge"
],
"scene": {
"actions": [
"Save role",
"Preview story"
],
"description": "Tune saturation, surface pairing, and non-color cues before publishing.",
"eyebrow": "Role editor",
"fields": [
{
"label": "Role name",
"value": "Paprika stamp CTA"
},
{
"label": "Allowed foreground",
"value": "Cream text / icon required"
},
{
"label": "Provenance note",
"value": "Market spice label, not alert red"
}
],
"headline": "Paprika stamp usage rule",
"stats": [
{
"label": "Contrast",
"value": "AA large"
},
{
"label": "Cue count",
"value": "3"
}
]
}
},
{
"avoid": [
"spreadsheet monotony",
"states conveyed by red or green alone"
],
"composition": "Operations review table for palette governance with sheet details and accessible state treatments.",
"id": "data-operations",
"mustShowStates": [
"selected rows show checkbox plus tinted border",
"error includes label and icon",
"dropdown focus is visibly outlined"
],
"primitives": [
"table",
"sheet",
"badge",
"separator",
"button",
"tooltip",
"checkbox",
"dropdown-menu"
],
"scene": {
"actions": [
"Approve release",
"Export tokens"
],
"description": "Audit provenance, contrast, and semantic cue coverage across editorial modules.",
"eyebrow": "Governance ledger",
"headline": "Palette release checks",
"rows": [
{
"contrast": "Pass",
"cue": "text + border",
"module": "Hero essay"
},
{
"contrast": "Review",
"cue": "icon + label",
"module": "Warning note"
},
{
"contrast": "Pass",
"cue": "pattern + word",
"module": "Data badge"
}
],
"stats": [
{
"label": "Modules",
"value": "18"
},
{
"label": "Needs review",
"value": "2"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"paprika #7F2A1D",
"olive #3F4E2A",
"clay #B85B2C",
"indigo #243F73"
],
"border": "solid-ink-frames-with-dashed-ledger-separators",
"contour": "rounded-ticket-panels",
"density": "balanced-editorial",
"family": "cultural-editorial-palette-system",
"grain": true,
"material": "parchment-paper-and-ink",
"motion": "tactile-lift-and-dye-swatch-reveal",
"stickerBadges": true,
"underlay": true
}
}