back to gallery
design language·elemental-tech-neutrals

Elemental Tech Neutrals

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
Elemental Tech Neutrals is a production-first palette system for modern digital products that balances mineral value discipline, clay warmth, graphite authority, sand tactility, and restrained botanical undertones with one precise digital accent reserved for interaction and state. It treats neutral surfaces as durable product infrastructure rather than background filler.
values
crisp neutral hierarchywarm cool surface balancesemantic token readinessaccessibility before atmospheredigital accent restraint
anti-values
×beige mush without value steps×decorative chroma spread across every card×hue swapping between light and dark modes×low-contrast graphite text on clay fields
tokens
borders4 items
accent width
2px
character
crisp graphite-clay separators with high-value step between adjacent surfaces
default width
1px
style
solid
colors12 items
accent
#1F8BFF
background
#F4F0E7
border
#BDB4A4
error
#B8423A
info
#326B8C
muted
#6E716B
primary
#24313A
secondary
#8E7963
success
#31785B
surface
#FFFCF4
text
#1B2024
warning
#A66B16
motion3 items
duration
160ms
easing
cubic-bezier(0.2, 0, 0.1, 1)
philosophy
fast utilitarian confirmation; focus and selected states change by value and border before color
radii5 items
full
9999px
lg
10px
md
6px
none
0
sm
3px
shadows3 items
lg
0 24px 80px rgba(36,49,58,0.16)
md
0 10px 30px rgba(36,49,58,0.10)
sm
0 1px 0 rgba(36,49,58,0.12)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
low-opacity mineral grain plus sparse contour lines on non-interactive background areas
card style
flat cards with visible 1px borders, topographic corner ticks, and narrow accent rule only for selected states
treatment
matte mineral planes with warm clay insets and cool graphite navigation zones
typography8 items
base size
16px
body font
Source Sans 3
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap
heading font
IBM Plex Sans
letter spacing
-0.01em
line height
1.52
mono font
IBM Plex Mono
scale ratio
1.22
rules
composition
Build product screens from a cool graphite command rail, warm sand work surface, and crisp white-mineral cards. Maintain visible gutters and role-based planes so neutral layers do not collapse into beige mush.
density

Moderately dense enterprise/editorial density with 8px rhythm, compact controls, generous section gutters, and no ornamental whitespace padding.

hierarchy
Lead with dense but calm typographic hierarchy: IBM Plex Sans headings, Source Sans body labels, and IBM Plex Mono for tokens, measurements, IDs, contrast ratios, and operational metadata.
signature patterns
Mineral stratum cards use a 1px border, inset top value band, and tiny corner coordinate marks drawn with pseudo-elements.Clay audit strips sit beside forms and tables as semantic role labels, using warm fill and graphite text instead of badges everywhere.Digital accent appears as narrow rules, focus halos, selected row pips, and one primary CTA fill, never as broad decorative gradients.Data panels separate neutral qualitative content from chromatic quantitative marks with patterned lines for colorblind-safe comparison.
layout
breakpoints

mobile 375px single-column, tablet 768px two-zone stack, desktop 1200px+ rail plus content matrix

grid

12-column desktop grid with 280px graphite rail, 24px gutters, and card interiors aligned to an 8px baseline.

whitespace

Whitespace is functional separation: 16px inside controls, 24px between cards, 32px between operational zones.

guidance
do
  • Use named semantic roles for surface, surface-warm, surface-cool, text, border, action, focus, and status before adding component colors.
  • Verify 4.5:1 text contrast and 3:1 UI boundaries for every neutral pairing in both light and dark modes.
  • Keep the digital accent for primary action, keyboard focus, active navigation, and urgent live state markers.
  • Use pattern, value, and labels for chart categories so data remains colorblind safe.
avoid
  • Do not wash entire screens in beige or use adjacent neutrals with indistinct values.
  • Do not introduce multiple saturated brand hues for decorative variety.
  • Do not swap hue families in dark mode; invert tones and preserve token roles.
  • Do not place text directly over grain, contour lines, or gradients.
katagami spec
# Elemental Tech Neutrals

## Philosophy

Elemental Tech Neutrals is a production-first palette system for modern digital products that balances mineral value discipline, clay warmth, graphite authority, sand tactility, and restrained botanical undertones with one precise digital accent reserved for interaction and state. It treats neutral surfaces as durable product infrastructure rather than background filler.

### Values

- crisp neutral hierarchy
- warm cool surface balance
- semantic token readiness
- accessibility before atmosphere
- digital accent restraint

### Anti-Values

- beige mush without value steps
- decorative chroma spread across every card
- hue swapping between light and dark modes
- low-contrast graphite text on clay fields

### Visual Character

- Layer warm sand and clay panels against cooler mineral and graphite rails using explicit CSS variables for every surface role.
- Use 1px graphite-clay borders plus 2px high-contrast focus rings so UI boundaries remain visible without heavy shadows.
- Reserve a single cobalt-cyan digital accent for CTAs, selected tabs, active rows, and status pips rather than broad fills.
- Apply fine mineral grain and subtle contour-line underlays only on large background planes, never on text-bearing controls.
- Invert tonal values for dark mode while keeping the same hue families, preserving named roles instead of swapping palette intent.

## Tokens

### Borders

- **Accent Width**: 2px
- **Character**: crisp graphite-clay separators with high-value step between adjacent surfaces
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#1F8BFF` |
| background | `#F4F0E7` |
| border | `#BDB4A4` |
| error | `#B8423A` |
| info | `#326B8C` |
| muted | `#6E716B` |
| primary | `#24313A` |
| secondary | `#8E7963` |
| success | `#31785B` |
| surface | `#FFFCF4` |
| text | `#1B2024` |
| warning | `#A66B16` |

### Motion

- **Duration**: 160ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Philosophy**: fast utilitarian confirmation; focus and selected states change by value and border before color

### Radii

- **Full**: 9999px
- **Lg**: 10px
- **Md**: 6px
- **None**: 0
- **Sm**: 3px

### Shadows

- **Lg**: 0 24px 80px rgba(36,49,58,0.16)
- **Md**: 0 10px 30px rgba(36,49,58,0.10)
- **Sm**: 0 1px 0 rgba(36,49,58,0.12)

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64]

### Surfaces

- **Bg Pattern**: low-opacity mineral grain plus sparse contour lines on non-interactive background areas
- **Card Style**: flat cards with visible 1px borders, topographic corner ticks, and narrow accent rule only for selected states
- **Treatment**: matte mineral planes with warm clay insets and cool graphite navigation zones

### Typography

- **Base Size**: 16px
- **Body Font**: Source Sans 3
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap
- **Heading Font**: IBM Plex Sans
- **Letter Spacing**: -0.01em
- **Line Height**: 1.52
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.22

## Rules

### Composition

Build product screens from a cool graphite command rail, warm sand work surface, and crisp white-mineral cards. Maintain visible gutters and role-based planes so neutral layers do not collapse into beige mush.

### Density

Moderately dense enterprise/editorial density with 8px rhythm, compact controls, generous section gutters, and no ornamental whitespace padding.

### Hierarchy

Lead with dense but calm typographic hierarchy: IBM Plex Sans headings, Source Sans body labels, and IBM Plex Mono for tokens, measurements, IDs, contrast ratios, and operational metadata.

### Signature Patterns

- Mineral stratum cards use a 1px border, inset top value band, and tiny corner coordinate marks drawn with pseudo-elements.
- Clay audit strips sit beside forms and tables as semantic role labels, using warm fill and graphite text instead of badges everywhere.
- Digital accent appears as narrow rules, focus halos, selected row pips, and one primary CTA fill, never as broad decorative gradients.
- Data panels separate neutral qualitative content from chromatic quantitative marks with patterned lines for colorblind-safe comparison.

## Layout

### Breakpoints

mobile 375px single-column, tablet 768px two-zone stack, desktop 1200px+ rail plus content matrix

### Grid

12-column desktop grid with 280px graphite rail, 24px gutters, and card interiors aligned to an 8px baseline.

### Whitespace

Whitespace is functional separation: 16px inside controls, 24px between cards, 32px between operational zones.

## Guidance

### Do

- Use named semantic roles for surface, surface-warm, surface-cool, text, border, action, focus, and status before adding component colors.
- Verify 4.5:1 text contrast and 3:1 UI boundaries for every neutral pairing in both light and dark modes.
- Keep the digital accent for primary action, keyboard focus, active navigation, and urgent live state markers.
- Use pattern, value, and labels for chart categories so data remains colorblind safe.

### Don't

- Do not wash entire screens in beige or use adjacent neutrals with indistinct values.
- Do not introduce multiple saturated brand hues for decorative variety.
- Do not swap hue families in dark mode; invert tones and preserve token roles.
- Do not place text directly over grain, contour lines, or gradients.
DESIGN.md
---
version: "alpha"
name: "Elemental Tech Neutrals"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#1F8BFF"
  background: "#F4F0E7"
  border: "#BDB4A4"
  error: "#B8423A"
  info: "#326B8C"
  muted: "#6E716B"
  primary: "#24313A"
  secondary: "#8E7963"
  success: "#31785B"
  surface: "#FFFCF4"
  text: "#1B2024"
  warning: "#A66B16"
typography:
  headline-lg:
    fontFamily: "IBM Plex Sans"
    fontSize: "1.816rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "1.488rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "Source Sans 3"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.52
    letterSpacing: "-0.01em"
  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"
---

# Elemental Tech Neutrals

## Overview

Elemental Tech Neutrals is a production-first palette system for modern digital products that balances mineral value discipline, clay warmth, graphite authority, sand tactility, and restrained botanical undertones with one precise digital accent reserved for interaction and state. It treats neutral surfaces as durable product infrastructure rather than background filler.

### Values

- crisp neutral hierarchy
- warm cool surface balance
- semantic token readiness
- accessibility before atmosphere
- digital accent restraint

### Anti-Values

- beige mush without value steps
- decorative chroma spread across every card
- hue swapping between light and dark modes
- low-contrast graphite text on clay fields

### Visual Character

- Layer warm sand and clay panels against cooler mineral and graphite rails using explicit CSS variables for every surface role.
- Use 1px graphite-clay borders plus 2px high-contrast focus rings so UI boundaries remain visible without heavy shadows.
- Reserve a single cobalt-cyan digital accent for CTAs, selected tabs, active rows, and status pips rather than broad fills.
- Apply fine mineral grain and subtle contour-line underlays only on large background planes, never on text-bearing controls.
- Invert tonal values for dark mode while keeping the same hue families, preserving named roles instead of swapping palette intent.

## 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 | `#1F8BFF` |
| background | `#F4F0E7` |
| border | `#BDB4A4` |
| error | `#B8423A` |
| info | `#326B8C` |
| muted | `#6E716B` |
| primary | `#24313A` |
| secondary | `#8E7963` |
| success | `#31785B` |
| surface | `#FFFCF4` |
| text | `#1B2024` |
| warning | `#A66B16` |

## Typography

- **Headline-Lg**: IBM Plex Sans, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: IBM Plex Sans, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Source Sans 3, 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

mobile 375px single-column, tablet 768px two-zone stack, desktop 1200px+ rail plus content matrix

### Grid

12-column desktop grid with 280px graphite rail, 24px gutters, and card interiors aligned to an 8px baseline.

### Whitespace

Whitespace is functional separation: 16px inside controls, 24px between cards, 32px between operational zones.

## Elevation & Depth

### Shadows

- **Lg**: 0 24px 80px rgba(36,49,58,0.16)
- **Md**: 0 10px 30px rgba(36,49,58,0.10)
- **Sm**: 0 1px 0 rgba(36,49,58,0.12)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `10px`
- **Md**: `6px`
- **None**: `0px`
- **Sm**: `3px`

### Surfaces

- **Bg Pattern**: low-opacity mineral grain plus sparse contour lines on non-interactive background areas
- **Card Style**: flat cards with visible 1px borders, topographic corner ticks, and narrow accent rule only for selected states
- **Treatment**: matte mineral planes with warm clay insets and cool graphite navigation zones

### Borders

- **Accent Width**: 2px
- **Character**: crisp graphite-clay separators with high-value step between adjacent surfaces
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Build product screens from a cool graphite command rail, warm sand work surface, and crisp white-mineral cards. Maintain visible gutters and role-based planes so neutral layers do not collapse into beige mush.

### Density

Moderately dense enterprise/editorial density with 8px rhythm, compact controls, generous section gutters, and no ornamental whitespace padding.

### Hierarchy

Lead with dense but calm typographic hierarchy: IBM Plex Sans headings, Source Sans body labels, and IBM Plex Mono for tokens, measurements, IDs, contrast ratios, and operational metadata.

### Signature Patterns

- Mineral stratum cards use a 1px border, inset top value band, and tiny corner coordinate marks drawn with pseudo-elements.
- Clay audit strips sit beside forms and tables as semantic role labels, using warm fill and graphite text instead of badges everywhere.
- Digital accent appears as narrow rules, focus halos, selected row pips, and one primary CTA fill, never as broad decorative gradients.
- Data panels separate neutral qualitative content from chromatic quantitative marks with patterned lines for colorblind-safe comparison.

## 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-019ea9b1-5d38-7800-b9df-aef305e833bf/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 named semantic roles for surface, surface-warm, surface-cool, text, border, action, focus, and status before adding component colors.
- Do Verify 4.5:1 text contrast and 3:1 UI boundaries for every neutral pairing in both light and dark modes.
- Do Keep the digital accent for primary action, keyboard focus, active navigation, and urgent live state markers.
- Do Use pattern, value, and labels for chart categories so data remains colorblind safe.
- Don't Do not wash entire screens in beige or use adjacent neutrals with indistinct values.
- Don't Do not introduce multiple saturated brand hues for decorative variety.
- Don't Do not swap hue families in dark mode; invert tones and preserve token roles.
- Don't Do not place text directly over grain, contour lines, or gradients.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "elemental-tech-neutrals",
  "type": "registry:theme",
  "title": "Elemental Tech Neutrals shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4F0E7",
      "foreground": "#1B2024",
      "card": "#FFFCF4",
      "card-foreground": "#1B2024",
      "popover": "#FFFCF4",
      "popover-foreground": "#1B2024",
      "primary": "#24313A",
      "primary-foreground": "#ffffff",
      "secondary": "#8E7963",
      "secondary-foreground": "#ffffff",
      "muted": "#6E716B",
      "muted-foreground": "#1B2024",
      "accent": "#1F8BFF",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423A",
      "border": "#BDB4A4",
      "input": "#BDB4A4",
      "ring": "#1F8BFF",
      "chart-1": "#24313A",
      "chart-2": "#8E7963",
      "chart-3": "#1F8BFF",
      "chart-4": "#31785B",
      "chart-5": "#A66B16",
      "sidebar": "#FFFCF4",
      "sidebar-foreground": "#1B2024",
      "sidebar-primary": "#24313A",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#326B8C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#BDB4A4",
      "sidebar-ring": "#1F8BFF",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#24313A",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#1F8BFF",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423A",
      "border": "#303642",
      "input": "#303642",
      "ring": "#1F8BFF",
      "chart-1": "#24313A",
      "chart-2": "#8E7963",
      "chart-3": "#1F8BFF",
      "chart-4": "#31785B",
      "chart-5": "#A66B16",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#24313A",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1F8BFF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#1F8BFF",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9b1-5d38-7800-b9df-aef305e833bf",
    "slug": "elemental-tech-neutrals",
    "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 · elemental-tech-neutrals
DESIGN.md

at a glance

Palette

Typography

headline-lgIBM Plex Sans · 29px · 700

The quick brown fox jumps

headline-mdIBM Plex Sans · 24px · 600

The quick brown fox jumps

body-mdSource Sans 3 · 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: #F4F0E7;
  --foreground: #1B2024;
  --card: #FFFCF4;
  --card-foreground: #1B2024;
  --popover: #FFFCF4;
  --popover-foreground: #1B2024;
  --primary: #24313A;
  --primary-foreground: #ffffff;
  --secondary: #8E7963;
  --secondary-foreground: #ffffff;
  --muted: #6E716B;
  --muted-foreground: #1B2024;
  --accent: #1F8BFF;
  --accent-foreground: #ffffff;
  --destructive: #B8423A;
  --border: #BDB4A4;
  --input: #BDB4A4;
  --ring: #1F8BFF;
  --chart-1: #24313A;
  --chart-2: #8E7963;
  --chart-3: #1F8BFF;
  --chart-4: #31785B;
  --chart-5: #A66B16;
  --sidebar: #FFFCF4;
  --sidebar-foreground: #1B2024;
  --sidebar-primary: #24313A;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #326B8C;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #BDB4A4;
  --sidebar-ring: #1F8BFF;
  --radius: 6px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #24313A;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #1F8BFF;
  --accent-foreground: #ffffff;
  --destructive: #B8423A;
  --border: #303642;
  --input: #303642;
  --ring: #1F8BFF;
  --chart-1: #24313A;
  --chart-2: #8E7963;
  --chart-3: #1F8BFF;
  --chart-4: #31785B;
  --chart-5: #A66B16;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #24313A;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #1F8BFF;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #1F8BFF;
  --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 ElementalTechNeutralsShadcnKit() {
  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">Elemental Tech Neutrals</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": "elemental-tech-neutrals",
  "type": "registry:theme",
  "title": "Elemental Tech Neutrals shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4F0E7",
      "foreground": "#1B2024",
      "card": "#FFFCF4",
      "card-foreground": "#1B2024",
      "popover": "#FFFCF4",
      "popover-foreground": "#1B2024",
      "primary": "#24313A",
      "primary-foreground": "#ffffff",
      "secondary": "#8E7963",
      "secondary-foreground": "#ffffff",
      "muted": "#6E716B",
      "muted-foreground": "#1B2024",
      "accent": "#1F8BFF",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423A",
      "border": "#BDB4A4",
      "input": "#BDB4A4",
      "ring": "#1F8BFF",
      "chart-1": "#24313A",
      "chart-2": "#8E7963",
      "chart-3": "#1F8BFF",
      "chart-4": "#31785B",
      "chart-5": "#A66B16",
      "sidebar": "#FFFCF4",
      "sidebar-foreground": "#1B2024",
      "sidebar-primary": "#24313A",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#326B8C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#BDB4A4",
      "sidebar-ring": "#1F8BFF",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#24313A",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#1F8BFF",
      "accent-foreground": "#ffffff",
      "destructive": "#B8423A",
      "border": "#303642",
      "input": "#303642",
      "ring": "#1F8BFF",
      "chart-1": "#24313A",
      "chart-2": "#8E7963",
      "chart-3": "#1F8BFF",
      "chart-4": "#31785B",
      "chart-5": "#A66B16",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#24313A",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1F8BFF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#1F8BFF",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9b1-5d38-7800-b9df-aef305e833bf",
    "slug": "elemental-tech-neutrals",
    "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
# Elemental Tech Neutrals shadcn/ui Components
Author: `katagami-agent`

## Intent
Translate a mineral/clay/graphite neutral palette into production shadcn/ui screens where surfaces carry the brand and cobalt appears only for decisive interaction, focus, selected navigation, and live state.

## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, and table.

## Token cues
Use background as warm sand, card as mineral, muted as botanical-sand, primary as graphite, accent/ring as #1F8BFF, border as clay-gray. Text must remain graphite or inverted mineral at AA contrast.

## Visual character to preserve
Keep warm/cool surface pairs, 1px crisp borders, narrow accent rules, topographic corner ticks, and IBM Plex Mono metadata. Avoid broad blue panels and beige mush.

## ShadSync visual profile
family: elemental-tech-neutral; material: matte mineral; contour: small-radius rectilinear; border: crisp 1px graphite-clay; underlay: subtle contour/grain only outside controls; grain: fine; stickerBadges: false; motion: 160ms utility; density: compact-balanced; accents: cobalt rule/focus/pip/primary CTA.

## Signature component recipes
- button: default mineral with graphite border; primary cobalt fill; focus-visible 2px cobalt ring; ghost only in graphite rail.
- card: mineral surface, 1px clay border, 10px radius, 6px top stratum band via wrapper class, tiny mono corner coordinate.
- input: mineral field, 1px border, 3px radius, label above, focus ring cobalt with no glow beyond 2px.
- textarea: same as input with vertical rhythm and no decorative background texture.
- select: compact mineral trigger with mono role hint and graphite chevron.
- dialog: mineral panel on graphite translucent overlay, clay audit strip in header, one primary cobalt action.
- sheet: graphite or mineral side plane with semantic section dividers and sticky action footer.
- tabs: active tab gets cobalt top rule and graphite text; inactive remains neutral.
- badge: mostly neutral/clay labels; status badges include icon or text label, never color alone.
- separator: 1px clay-gray line; use 2px only for active structural dividers.
- checkbox: square 3px radius, graphite border, cobalt check/focus.
- switch: graphite track with cobalt thumb only when on; include visible label.
- slider: graphite rail, cobalt active segment, value in IBM Plex Mono.
- tooltip: graphite surface, mineral text, no blur-heavy shadows.
- dropdown-menu: mineral list with selected row pip and warm hover surface.
- table: compact rows, clay separators, selected row left cobalt pip, mono numeric columns.

## Preview shots
Use application-shell, detail-editor, and data-operations scenes. Each shot should show graphite rail, warm sand canvas, mineral cards, clay audit strips, and a single disciplined cobalt accent.

## Implementation contract
Import local primitives from `@/components/ui/*`. Do not invent a second component system. Compose wrappers/classes around primitives to add stratum bands, corner coordinates, and semantic audit strips.

## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Input } from "@/components/ui/input"
import { Badge } from "@/components/ui/badge"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"

export function ElementalTokenAudit() {
  return (
    <Card className="relative overflow-hidden rounded-[10px] border border-border bg-card shadow-sm before:absolute before:inset-x-0 before:top-0 before:h-1.5 before:bg-gradient-to-r before:from-primary before:via-secondary before:to-muted">
      <CardHeader className="pt-6">
        <Badge variant="outline" className="w-fit rounded-[3px] border-border font-mono text-[11px] uppercase tracking-wider">contrast audit</Badge>
        <CardTitle className="font-sans tracking-[-0.025em]">Elemental token mapping</CardTitle>
      </CardHeader>
      <CardContent className="space-y-4">
        <Input defaultValue="surface.warm = sand / clay inset" className="rounded-[3px] border-border focus-visible:ring-[#1F8BFF]" />
        <Table>
          <TableHeader><TableRow><TableHead>Role</TableHead><TableHead>Contrast</TableHead></TableRow></TableHeader>
          <TableBody><TableRow><TableCell><span className="mr-2 inline-block h-2 w-2 rounded-full bg-[#1F8BFF]" />action.primary</TableCell><TableCell className="font-mono">AA</TableCell></TableRow></TableBody>
        </Table>
        <Button className="rounded-[3px] bg-[#1F8BFF] text-white hover:bg-[#0B66C4]">Apply accent</Button>
      </CardContent>
    </Card>
  )
}
```
preview shotsstored
{
  "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": [
        "blue decorative panels",
        "unlabeled status color"
      ],
      "composition": "Graphite command rail, sand canvas, mineral token cards, and a release table with selected cobalt row pip.",
      "id": "application-shell",
      "mustShowStates": [
        "active tab with cobalt rule",
        "primary CTA",
        "neutral badges",
        "tooltip over contrast ratio"
      ],
      "primitives": [
        "button",
        "card",
        "tabs",
        "badge",
        "separator",
        "tooltip",
        "dropdown-menu",
        "table"
      ],
      "scene": {
        "actions": [
          "Export tokens",
          "Apply accent"
        ],
        "description": "A product shell for assigning mineral, clay, graphite, sand, and botanical tokens to UI roles.",
        "eyebrow": "Palette operations",
        "headline": "Semantic neutral deployment",
        "rows": [
          {
            "role": "surface.warm",
            "state": "ready",
            "use": "sand canvas"
          },
          {
            "role": "action.primary",
            "state": "restricted",
            "use": "cobalt CTA"
          },
          {
            "role": "status.success",
            "state": "labelled",
            "use": "botanical label"
          }
        ],
        "stats": [
          {
            "label": "AA text pairs",
            "value": "18"
          },
          {
            "label": "UI boundary pairs",
            "value": "11"
          },
          {
            "label": "accent roles",
            "value": "4"
          }
        ]
      }
    },
    {
      "avoid": [
        "texture behind form text",
        "rounded SaaS blobs"
      ],
      "composition": "Two-column token editor with clay audit strip, mineral form fields, and a graphite-toned right sheet for dark-mode inversion.",
      "id": "detail-editor",
      "mustShowStates": [
        "focused input ring",
        "enabled switch",
        "slider active segment",
        "dialog confirmation"
      ],
      "primitives": [
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet",
        "button",
        "separator"
      ],
      "scene": {
        "actions": [
          "Save role",
          "Open dark preview"
        ],
        "description": "Form controls prove the palette can support real product configuration without losing contrast.",
        "eyebrow": "Token detail",
        "fields": [
          {
            "label": "surface.warm",
            "value": "#F4F0E7"
          },
          {
            "label": "border.default",
            "value": "#BDB4A4"
          },
          {
            "label": "focus.action",
            "value": "#1F8BFF"
          }
        ],
        "headline": "Edit warm/cool surface pair",
        "stats": [
          {
            "label": "Text contrast",
            "value": "15.2"
          },
          {
            "label": "Boundary",
            "value": "3.1"
          }
        ]
      }
    },
    {
      "avoid": [
        "rainbow chart palette",
        "color-only legends"
      ],
      "composition": "Operations dashboard with patterned chart cards and compact table rows using value, pattern, and labels before chroma.",
      "id": "data-operations",
      "mustShowStates": [
        "selected row pip",
        "warning badge with label",
        "dropdown open state",
        "checkbox selected"
      ],
      "primitives": [
        "card",
        "table",
        "badge",
        "separator",
        "button",
        "dropdown-menu",
        "checkbox",
        "tooltip"
      ],
      "scene": {
        "actions": [
          "Review chart tokens",
          "Download audit"
        ],
        "description": "Quantitative marks use graphite lines, clay fills, botanical undertones, and cobalt only for selected comparison.",
        "eyebrow": "Data-viz safety",
        "headline": "Colorblind-safe neutral analytics",
        "rows": [
          {
            "metric": "Activation",
            "pattern": "solid botanical",
            "value": "68%"
          },
          {
            "metric": "Retention",
            "pattern": "clay hatch",
            "value": "55%"
          },
          {
            "metric": "Focus events",
            "pattern": "cobalt pip",
            "value": "14"
          }
        ],
        "stats": [
          {
            "label": "chart hues",
            "value": "4"
          },
          {
            "label": "patterns",
            "value": "3"
          },
          {
            "label": "failures",
            "value": "0"
          }
        ]
      }
    }
  ],
  "version": "preview-shots-v1",
  "visualProfile": {
    "accents": "single cobalt CTA, focus ring, selected pip, and active rule",
    "border": "crisp 1px graphite-clay with 2px focus",
    "contour": "rectilinear small-radius",
    "density": "compact-balanced",
    "family": "elemental-tech-neutral",
    "grain": true,
    "material": "matte mineral and clay",
    "motion": "160ms utility confirmation",
    "stickerBadges": false,
    "underlay": true
  }
}
related

More like this