Concrete Slab Shock
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
- 5px
- character
- Heavy near-black outlines define every interactive and informational boundary; focus adds a second yellow outside ring plus black outline.
- default width
- 3px
- style
- solid
colors12 items
motion3 items
- duration
- 120ms
- easing
- steps(2, jump-end)
- philosophy
- Interactions snap like printed blocks being shoved across a table: tiny translate offsets, shadow compression, no elastic easing.
radii5 items
- full
- 9999px
- lg
- 4px
- md
- 2px
- none
- 0
- sm
- 0
shadows3 items
- lg
- 10px 10px 0 #050505
- md
- 6px 6px 0 #050505
- sm
- 3px 3px 0 #050505
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Low-opacity concrete speckle and large raw gray zones interrupted by saturated accent blocks.
- card style
- Flat #FFFDF5 rectangles with 3px black borders, square corners, and hard offset shadows.
- treatment
- Paper-white slabs over concrete-gray background, no translucency, no blur, subtle halftone dot field only outside content.
typography8 items
- base size
- 16px
- body font
- Atkinson Hyperlegible
- google fonts url
- https://fonts.googleapis.com/css2?family=Archivo+Black&family=Atkinson+Hyperlegible:wght@400;700&family=IBM+Plex+Mono:wght@500;700&display=swap
- heading font
- Archivo Black
- letter spacing
- -0.01em
- line height
- 1.48
- mono font
- IBM Plex Mono
- scale ratio
- 1.25
rules
Compose screens as asymmetric slab assemblies: one dominant paper command panel, a black navigation rail, stacked concrete data blocks, and accent rectangles that label state or priority.
Moderately dense and operational: tight mono metadata, generous 24px gutters between slabs, and compact controls with visible hit areas.
Hierarchy comes from scale jumps, border weight, filled black bars, and saturated label blocks rather than subtle shade changes; primary actions use yellow fill with black text and 3px outlines.
layout
Mobile < 640px collapses to one column; tablet 640-1023px uses two columns; desktop >= 1024px restores rail plus asymmetric 12-column grid.
Desktop uses a 12-column slab grid with a fixed black left rail, a wide central command panel, and a right stacked telemetry column.
Whitespace is structural gutter space, not airiness: 16px internal padding on compact slabs, 24-32px between major panels, and deliberate hard edges.
guidance
- Use black or white text only on saturated accents unless a contrast check proves another pair works.
- Pair every state color with label text, icon/symbol, border treatment, or position so hue is never the only signal.
- Keep borders thick, shadows hard, and radii nearly square across all components.
- Let one accent color dominate each workflow area; use the remaining accents as small semantic flags.
- Do not add gradients, glass blur, soft drop shadows, thin gray divider lines, or pillowy default SaaS radii.
- Do not place normal-size text on red, blue, or concrete backgrounds without verified 4.5:1 contrast.
- Do not use multiple saturated backgrounds in the same component cluster without black separators and clear hierarchy.
- Do not make brutalism an excuse for broken alignment, unreadable type, or ambiguous affordances.
katagami spec
# Concrete Slab Shock ## Philosophy Concrete Slab Shock is a neo-brutalist interface language for products that need blunt confidence without sacrificing legibility: paper-white working surfaces, raw flat color slabs, concrete grays, thick black contours, hard offset shadows, and role-bound accent blocks whose contrast is checked before they carry meaning. ### Values - Blunt structure over decorative polish - Black-and-white anchors before expressive color - Accessible affordances even when the palette shouts - Flat slabs, hard joins, and visible product decisions ### Anti-Values - Soft glass gradients and low-contrast pastel haze - Color-only states with no border, label, or icon support - Default SaaS rounding and weightless card stacks ### Visual Character - Use 3px solid near-black borders on cards, controls, rails, and data rows with zero or 2px radii so every edge reads as a drawn slab. - Place paper-white panels on concrete-gray page fields with 8px black offset shadows and no blur, creating hard architectural depth. - Reserve saturated yellow, cyan, red, and green for rectangular role-bound blocks that always pair with black or white tested foreground text. - Build section headers as oversized condensed type bands with black rules, uppercase labels, and abrupt color tabs clipped to square corners. ## Tokens ### Borders - **Accent Width**: 5px - **Character**: Heavy near-black outlines define every interactive and informational boundary; focus adds a second yellow outside ring plus black outline. - **Default Width**: 3px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#FF3B30` | | background | `#E7E2D8` | | border | `#050505` | | error | `#B00020` | | info | `#0057D8` | | muted | `#5F615E` | | primary | `#FFDD00` | | secondary | `#00C2FF` | | success | `#007A4D` | | surface | `#FFFDF5` | | text | `#111111` | | warning | `#FFB800` | ### Motion - **Duration**: 120ms - **Easing**: steps(2, jump-end) - **Philosophy**: Interactions snap like printed blocks being shoved across a table: tiny translate offsets, shadow compression, no elastic easing. ### Radii - **Full**: 9999px - **Lg**: 4px - **Md**: 2px - **None**: 0 - **Sm**: 0 ### Shadows - **Lg**: 10px 10px 0 #050505 - **Md**: 6px 6px 0 #050505 - **Sm**: 3px 3px 0 #050505 ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Low-opacity concrete speckle and large raw gray zones interrupted by saturated accent blocks. - **Card Style**: Flat #FFFDF5 rectangles with 3px black borders, square corners, and hard offset shadows. - **Treatment**: Paper-white slabs over concrete-gray background, no translucency, no blur, subtle halftone dot field only outside content. ### Typography - **Base Size**: 16px - **Body Font**: Atkinson Hyperlegible - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo+Black&family=Atkinson+Hyperlegible:wght@400;700&family=IBM+Plex+Mono:wght@500;700&display=swap - **Heading Font**: Archivo Black - **Letter Spacing**: -0.01em - **Line Height**: 1.48 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.25 ## Rules ### Composition Compose screens as asymmetric slab assemblies: one dominant paper command panel, a black navigation rail, stacked concrete data blocks, and accent rectangles that label state or priority. ### Density Moderately dense and operational: tight mono metadata, generous 24px gutters between slabs, and compact controls with visible hit areas. ### Hierarchy Hierarchy comes from scale jumps, border weight, filled black bars, and saturated label blocks rather than subtle shade changes; primary actions use yellow fill with black text and 3px outlines. ### Signature Patterns - Hard-shadow action blocks compress from 6px to 2px offset on press while keeping a 3px black border and square geometry. - Status tags combine color fill, black outline, uppercase mono text, and a symbol so no state depends on hue alone. - Data rows are separated by thick black ledger rules with alternating paper and concrete fills, plus a left accent stripe for priority. - Section titles use oversized Archivo Black text inside black-underlined bands with small cyan or yellow slab tabs bolted to one corner. ## Layout ### Breakpoints Mobile < 640px collapses to one column; tablet 640-1023px uses two columns; desktop >= 1024px restores rail plus asymmetric 12-column grid. ### Grid Desktop uses a 12-column slab grid with a fixed black left rail, a wide central command panel, and a right stacked telemetry column. ### Whitespace Whitespace is structural gutter space, not airiness: 16px internal padding on compact slabs, 24-32px between major panels, and deliberate hard edges. ## Guidance ### Do - Use black or white text only on saturated accents unless a contrast check proves another pair works. - Pair every state color with label text, icon/symbol, border treatment, or position so hue is never the only signal. - Keep borders thick, shadows hard, and radii nearly square across all components. - Let one accent color dominate each workflow area; use the remaining accents as small semantic flags. ### Don't - Do not add gradients, glass blur, soft drop shadows, thin gray divider lines, or pillowy default SaaS radii. - Do not place normal-size text on red, blue, or concrete backgrounds without verified 4.5:1 contrast. - Do not use multiple saturated backgrounds in the same component cluster without black separators and clear hierarchy. - Do not make brutalism an excuse for broken alignment, unreadable type, or ambiguous affordances. ### Accessibility Normal text targets at least 4.5:1, large text and non-text boundaries at least 3:1, focus is a double high-contrast outline, and APCA-style perceptual checks favor black text on yellow/cyan and white text on deep blue/red. ### Usage Context Best for admin consoles, civic operations tools, incident coordination, maker-commerce, rebellious fintech dashboards, and design systems that want impact with accountable affordance clarity.
DESIGN.md
---
version: "alpha"
name: "Concrete Slab Shock"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#FF3B30"
background: "#E7E2D8"
border: "#050505"
error: "#B00020"
info: "#0057D8"
muted: "#5F615E"
primary: "#FFDD00"
secondary: "#00C2FF"
success: "#007A4D"
surface: "#FFFDF5"
text: "#111111"
warning: "#FFB800"
typography:
headline-lg:
fontFamily: "Archivo Black"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Archivo Black"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "Atkinson Hyperlegible"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.48
letterSpacing: "-0.01em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "4px"
md: "2px"
none: "0px"
sm: "0px"
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: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Concrete Slab Shock
## Overview
Concrete Slab Shock is a neo-brutalist interface language for products that need blunt confidence without sacrificing legibility: paper-white working surfaces, raw flat color slabs, concrete grays, thick black contours, hard offset shadows, and role-bound accent blocks whose contrast is checked before they carry meaning.
### Values
- Blunt structure over decorative polish
- Black-and-white anchors before expressive color
- Accessible affordances even when the palette shouts
- Flat slabs, hard joins, and visible product decisions
### Anti-Values
- Soft glass gradients and low-contrast pastel haze
- Color-only states with no border, label, or icon support
- Default SaaS rounding and weightless card stacks
### Visual Character
- Use 3px solid near-black borders on cards, controls, rails, and data rows with zero or 2px radii so every edge reads as a drawn slab.
- Place paper-white panels on concrete-gray page fields with 8px black offset shadows and no blur, creating hard architectural depth.
- Reserve saturated yellow, cyan, red, and green for rectangular role-bound blocks that always pair with black or white tested foreground text.
- Build section headers as oversized condensed type bands with black rules, uppercase labels, and abrupt color tabs clipped to square corners.
## 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 | `#FF3B30` |
| background | `#E7E2D8` |
| border | `#050505` |
| error | `#B00020` |
| info | `#0057D8` |
| muted | `#5F615E` |
| primary | `#FFDD00` |
| secondary | `#00C2FF` |
| success | `#007A4D` |
| surface | `#FFFDF5` |
| text | `#111111` |
| warning | `#FFB800` |
## Typography
- **Headline-Lg**: Archivo Black, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo Black, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Atkinson Hyperlegible, 16px, weight 400, line-height 1.48.
- **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 < 640px collapses to one column; tablet 640-1023px uses two columns; desktop >= 1024px restores rail plus asymmetric 12-column grid.
### Grid
Desktop uses a 12-column slab grid with a fixed black left rail, a wide central command panel, and a right stacked telemetry column.
### Whitespace
Whitespace is structural gutter space, not airiness: 16px internal padding on compact slabs, 24-32px between major panels, and deliberate hard edges.
## Elevation & Depth
### Shadows
- **Lg**: 10px 10px 0 #050505
- **Md**: 6px 6px 0 #050505
- **Sm**: 3px 3px 0 #050505
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `4px`
- **Md**: `2px`
- **None**: `0px`
- **Sm**: `0px`
### Surfaces
- **Bg Pattern**: Low-opacity concrete speckle and large raw gray zones interrupted by saturated accent blocks.
- **Card Style**: Flat #FFFDF5 rectangles with 3px black borders, square corners, and hard offset shadows.
- **Treatment**: Paper-white slabs over concrete-gray background, no translucency, no blur, subtle halftone dot field only outside content.
### Borders
- **Accent Width**: 5px
- **Character**: Heavy near-black outlines define every interactive and informational boundary; focus adds a second yellow outside ring plus black outline.
- **Default Width**: 3px
- **Style**: solid
## Components
### Composition
Compose screens as asymmetric slab assemblies: one dominant paper command panel, a black navigation rail, stacked concrete data blocks, and accent rectangles that label state or priority.
### Density
Moderately dense and operational: tight mono metadata, generous 24px gutters between slabs, and compact controls with visible hit areas.
### Hierarchy
Hierarchy comes from scale jumps, border weight, filled black bars, and saturated label blocks rather than subtle shade changes; primary actions use yellow fill with black text and 3px outlines.
### Signature Patterns
- Hard-shadow action blocks compress from 6px to 2px offset on press while keeping a 3px black border and square geometry.
- Status tags combine color fill, black outline, uppercase mono text, and a symbol so no state depends on hue alone.
- Data rows are separated by thick black ledger rules with alternating paper and concrete fills, plus a left accent stripe for priority.
- Section titles use oversized Archivo Black text inside black-underlined bands with small cyan or yellow slab tabs bolted to one corner.
## 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-019ea9a2-f664-7323-9267-4db4525895e9/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 black or white text only on saturated accents unless a contrast check proves another pair works.
- Do Pair every state color with label text, icon/symbol, border treatment, or position so hue is never the only signal.
- Do Keep borders thick, shadows hard, and radii nearly square across all components.
- Do Let one accent color dominate each workflow area; use the remaining accents as small semantic flags.
- Don't Do not add gradients, glass blur, soft drop shadows, thin gray divider lines, or pillowy default SaaS radii.
- Don't Do not place normal-size text on red, blue, or concrete backgrounds without verified 4.5:1 contrast.
- Don't Do not use multiple saturated backgrounds in the same component cluster without black separators and clear hierarchy.
- Don't Do not make brutalism an excuse for broken alignment, unreadable type, or ambiguous affordances.
### Accessibility
Normal text targets at least 4.5:1, large text and non-text boundaries at least 3:1, focus is a double high-contrast outline, and APCA-style perceptual checks favor black text on yellow/cyan and white text on deep blue/red.
### Usage Context
Best for admin consoles, civic operations tools, incident coordination, maker-commerce, rebellious fintech dashboards, and design systems that want impact with accountable affordance clarity.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "concrete-slab-shock",
"type": "registry:theme",
"title": "Concrete Slab Shock shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#E7E2D8",
"foreground": "#111111",
"card": "#FFFDF5",
"card-foreground": "#111111",
"popover": "#FFFDF5",
"popover-foreground": "#111111",
"primary": "#FFDD00",
"primary-foreground": "#111111",
"secondary": "#00C2FF",
"secondary-foreground": "#ffffff",
"muted": "#5F615E",
"muted-foreground": "#111111",
"accent": "#FF3B30",
"accent-foreground": "#ffffff",
"destructive": "#B00020",
"border": "#050505",
"input": "#050505",
"ring": "#FF3B30",
"chart-1": "#FFDD00",
"chart-2": "#00C2FF",
"chart-3": "#FF3B30",
"chart-4": "#007A4D",
"chart-5": "#FFB800",
"sidebar": "#FFFDF5",
"sidebar-foreground": "#111111",
"sidebar-primary": "#FFDD00",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#0057D8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#050505",
"sidebar-ring": "#FF3B30",
"radius": "2px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#FFDD00",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#FF3B30",
"accent-foreground": "#ffffff",
"destructive": "#B00020",
"border": "#303642",
"input": "#303642",
"ring": "#FF3B30",
"chart-1": "#FFDD00",
"chart-2": "#00C2FF",
"chart-3": "#FF3B30",
"chart-4": "#007A4D",
"chart-5": "#FFB800",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#FFDD00",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#FF3B30",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#FF3B30",
"radius": "2px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a2-f664-7323-9267-4db4525895e9",
"slug": "concrete-slab-shock",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- base8px
- xs4px
- sm8px
- md12px
- lg16px
- xl24px
- 2xl32px
- 3xl48px
- 4xl64px
Shape
implementation kit
DESIGN.md with shadcn
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #E7E2D8;
--foreground: #111111;
--card: #FFFDF5;
--card-foreground: #111111;
--popover: #FFFDF5;
--popover-foreground: #111111;
--primary: #FFDD00;
--primary-foreground: #111111;
--secondary: #00C2FF;
--secondary-foreground: #ffffff;
--muted: #5F615E;
--muted-foreground: #111111;
--accent: #FF3B30;
--accent-foreground: #ffffff;
--destructive: #B00020;
--border: #050505;
--input: #050505;
--ring: #FF3B30;
--chart-1: #FFDD00;
--chart-2: #00C2FF;
--chart-3: #FF3B30;
--chart-4: #007A4D;
--chart-5: #FFB800;
--sidebar: #FFFDF5;
--sidebar-foreground: #111111;
--sidebar-primary: #FFDD00;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #0057D8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #050505;
--sidebar-ring: #FF3B30;
--radius: 2px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #FFDD00;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #FF3B30;
--accent-foreground: #ffffff;
--destructive: #B00020;
--border: #303642;
--input: #303642;
--ring: #FF3B30;
--chart-1: #FFDD00;
--chart-2: #00C2FF;
--chart-3: #FF3B30;
--chart-4: #007A4D;
--chart-5: #FFB800;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #FFDD00;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #FF3B30;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #FF3B30;
--radius: 2px;
}
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 ConcreteSlabShockShadcnKit() {
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">Concrete Slab Shock</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": "concrete-slab-shock",
"type": "registry:theme",
"title": "Concrete Slab Shock shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#E7E2D8",
"foreground": "#111111",
"card": "#FFFDF5",
"card-foreground": "#111111",
"popover": "#FFFDF5",
"popover-foreground": "#111111",
"primary": "#FFDD00",
"primary-foreground": "#111111",
"secondary": "#00C2FF",
"secondary-foreground": "#ffffff",
"muted": "#5F615E",
"muted-foreground": "#111111",
"accent": "#FF3B30",
"accent-foreground": "#ffffff",
"destructive": "#B00020",
"border": "#050505",
"input": "#050505",
"ring": "#FF3B30",
"chart-1": "#FFDD00",
"chart-2": "#00C2FF",
"chart-3": "#FF3B30",
"chart-4": "#007A4D",
"chart-5": "#FFB800",
"sidebar": "#FFFDF5",
"sidebar-foreground": "#111111",
"sidebar-primary": "#FFDD00",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#0057D8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#050505",
"sidebar-ring": "#FF3B30",
"radius": "2px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#FFDD00",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#FF3B30",
"accent-foreground": "#ffffff",
"destructive": "#B00020",
"border": "#303642",
"input": "#303642",
"ring": "#FF3B30",
"chart-1": "#FFDD00",
"chart-2": "#00C2FF",
"chart-3": "#FF3B30",
"chart-4": "#007A4D",
"chart-5": "#FFB800",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#FFDD00",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#FF3B30",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#FF3B30",
"radius": "2px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a2-f664-7323-9267-4db4525895e9",
"slug": "concrete-slab-shock",
"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"
]
}
}
}
# Concrete Slab Shock shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate Concrete Slab Shock into local shadcn/ui primitives that feel like blunt paper slabs: square geometry, 3px black borders, hard 6px offset shadows, saturated role blocks, and explicit accessible state labels.
## 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 `colors.background` concrete field, `colors.surface` paper slabs, `colors.text` ink text, `colors.border` near-black contours, `colors.primary` for the main yellow action, `colors.secondary` for cyan information accents, `colors.error` for deep red errors with white text, `colors.success` for green confirmations, and `colors.warning` for amber caution with black text. Typography uses Archivo Black for display, Atkinson Hyperlegible for body, and IBM Plex Mono for operational labels.
## Visual character to preserve
- 3px solid black borders on every component boundary.
- No blur, no translucency, no gradient, and radii at 0-4px only.
- Hard offset shadows: cards and popovers use `6px 6px 0 #050505`; small controls use `3px 3px 0 #050505`.
- State must include text/symbol support, not only color.
- Focus uses a yellow outer ring plus a black component border.
## ShadSync visual profile
family: neo-brutalist-operations; material: paper-on-concrete; contour: square-slab; border: 3px solid near-black; underlay: hard-offset-shadow; grain: concrete-speckle-background-only; stickerBadges: rectangular state labels; motion: snap-compress; density: compact-operational; accents: yellow primary, cyan info, red error, green success, amber warning.
## Signature component recipes
- button: Use square primary buttons with yellow fill, black text, 3px border, uppercase mono label, and 6px hard shadow. On active, translate 4px/4px and reduce shadow to 2px. Secondary buttons are paper fill; destructive uses deep red with white text and a leading warning symbol.
- card: Use paper background, 3px black border, 0-2px radius, 6px or 8px black offset shadow, and an optional colored corner tab for role.
- input: Use paper fill, 3px black border, 12px padding, mono uppercase label, and yellow focus outline outside the border. Error inputs add red left stripe and text.
- textarea: Match input, minimum 96px height, square corners, visible label, and helper text for contrast/state meaning.
- select: Match input; add black chevron zone or cyan right cap so affordance is visible independent of placeholder color.
- dialog: Render as a paper slab with black title bar, 3px border, 10px hard shadow, and decisive yellow primary action.
- sheet: Use concrete or black header strip, paper body, 3px border on exposed edge, and ledger-style section dividers.
- tabs: Active tab is a yellow or cyan rectangular slab connected to the content border; inactive tabs are paper slabs with black borders.
- badge: Rectangular, uppercase mono, 2px border, symbol prefix such as ● ▲ ■, semantic fill plus readable text.
- separator: Heavy 3px black rule; never use low-contrast hairlines.
- checkbox: Square 22px box, 3px border, hard mini-shadow, green fill plus check mark when selected.
- switch: Rectangular track with 3px border and square thumb; on state uses green fill and text label nearby.
- slider: Thick black track, square handle, yellow filled range, numeric mono value label.
- tooltip: Paper or black slab with 2px border, no fade blur, and concise contrast guidance.
- dropdown-menu: Paper slab menu with 3px border, hard shadow, active item yellow, destructive item red with icon.
- table: Ledger table with black header, 3px row rules, alternating paper/concrete fills, and left accent stripe for priority rows.
## Preview shots
1. application-shell: command dashboard with nav rail, metrics, ledger table, and palette audit feed.
2. detail-editor: token edit form with inputs, textarea, select, tabs, sheet, and dialog confirmation.
3. data-operations: table-heavy operations screen with dropdown filters, badges, slider threshold, switches, checkboxes, and tooltips.
## Implementation contract
Import local primitives from `@/components/ui/*`. Do not invent a second component system. Apply className recipes directly to shadcn primitives. Preserve square radii, 3px black borders, hard offset shadows, explicit labels, and accessible foreground/background pairings.
## 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 SlabAuditCard() {
return (
<Card className="rounded-[2px] border-[3px] border-[#050505] bg-[#FFFDF5] text-[#111111] shadow-[8px_8px_0_#050505]">
<CardHeader className="border-b-[5px] border-[#050505]">
<div className="flex items-center justify-between gap-3">
<CardTitle className="font-['Archivo_Black'] text-3xl uppercase tracking-[-0.04em]">Contrast Ledger</CardTitle>
<Badge className="rounded-none border-2 border-[#050505] bg-[#FFB800] font-['IBM_Plex_Mono'] text-[#111111]">▲ RETEST</Badge>
</div>
</CardHeader>
<CardContent className="space-y-4 p-4">
<Input className="rounded-none border-[3px] border-[#050505] bg-[#FFFDF5] shadow-[3px_3px_0_#050505] focus-visible:ring-4 focus-visible:ring-[#FFDD00]" defaultValue="black / yellow = approved" />
<Table>
<TableHeader className="bg-[#050505] text-[#FFFDF5]"><TableRow><TableHead>Pair</TableHead><TableHead>Role</TableHead><TableHead>Status</TableHead></TableRow></TableHeader>
<TableBody><TableRow className="border-b-[3px] border-[#050505]"><TableCell>#111 on #FFDD00</TableCell><TableCell>Primary</TableCell><TableCell>● Pass</TableCell></TableRow></TableBody>
</Table>
<Button className="rounded-none border-[3px] border-[#050505] bg-[#FFDD00] font-['IBM_Plex_Mono'] font-bold uppercase text-[#111111] shadow-[6px_6px_0_#050505] active:translate-x-1 active:translate-y-1 active:shadow-[2px_2px_0_#050505]">Approve slab</Button>
</CardContent>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "card",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "input",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "textarea",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "select",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "dialog",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "sheet",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "tabs",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "badge",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "separator",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "checkbox",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "switch",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "slider",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "tooltip",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "dropdown-menu",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
},
{
"component": "table",
"recipe": "Use square neo-brutalist styling with 3px black borders, paper or semantic slab fill, hard offset shadow where elevated, uppercase mono labels for operational states, and visible yellow focus rings."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"soft shadows",
"gradient charts",
"color-only status"
],
"composition": "Black left rail, dominant paper audit card, yellow/cyan metric slabs, and ledger table with thick row rules.",
"id": "application-shell",
"mustShowStates": [
"primary yellow button",
"warning badge with symbol",
"priority row stripe",
"tooltip explaining contrast"
],
"primitives": [
"button",
"card",
"badge",
"separator",
"table",
"tooltip",
"dropdown-menu"
],
"scene": {
"actions": [
"Approve yellow pair",
"Run edge audit"
],
"description": "Operations dashboard for approving high-impact accent slabs before release.",
"eyebrow": "Palette command",
"headline": "Hard color. Clear orders.",
"rows": [
{
"block": "Alert red",
"pair": "white / #B00020",
"status": "■ pass"
},
{
"block": "Cyan slab",
"pair": "black / #00C2FF",
"status": "● pass"
},
{
"block": "Amber warning",
"pair": "black / #FFB800",
"status": "▲ retest"
}
],
"stats": [
{
"label": "Open slabs",
"value": "28"
},
{
"label": "Lowest pair",
"value": "4.8:1"
},
{
"label": "Hue-only risks",
"value": "0"
}
]
}
},
{
"avoid": [
"rounded modal defaults",
"placeholder-only labels",
"unbordered fields"
],
"composition": "Token editor with tabbed sections, square fields, a right-side sheet for APCA notes, and a confirmation dialog slab.",
"id": "detail-editor",
"mustShowStates": [
"focused input with yellow ring",
"checked square checkbox",
"green rectangular switch",
"red validation stripe"
],
"primitives": [
"card",
"input",
"textarea",
"select",
"tabs",
"sheet",
"dialog",
"button",
"switch",
"checkbox"
],
"scene": {
"actions": [
"Save token",
"Open APCA sheet"
],
"description": "Edit the semantic role, foreground, border weight, and motion contract for a color token.",
"eyebrow": "Token edit bay",
"fields": [
{
"label": "Accent role",
"value": "primary-action-yellow"
},
{
"label": "Foreground",
"value": "#111111 approved"
},
{
"label": "Border",
"value": "3px solid #050505"
},
{
"label": "Decision note",
"value": "Use yellow only for primary action and active navigation."
}
],
"headline": "Primary action slab"
}
},
{
"avoid": [
"thin gray table lines",
"low contrast filters",
"unlabeled toggles"
],
"composition": "Dense data-operations view with filter dropdowns, threshold slider, switches, checkboxes, semantic badges, and heavy ledger rules.",
"id": "data-operations",
"mustShowStates": [
"selected table rows",
"slider threshold value",
"dropdown active item",
"destructive red badge with icon"
],
"primitives": [
"table",
"slider",
"switch",
"checkbox",
"badge",
"separator",
"dropdown-menu",
"button",
"card"
],
"scene": {
"actions": [
"Batch approve",
"Flag failures"
],
"description": "Review UI boundaries and state indicators that must meet 3:1 while preserving brutalist impact.",
"eyebrow": "Boundary audit",
"headline": "Non-text contrast queue",
"rows": [
{
"boundary": "3px black",
"component": "Input",
"status": "● pass"
},
{
"boundary": "label required",
"component": "Switch",
"status": "▲ fix"
},
{
"boundary": "paper slab",
"component": "Tooltip",
"status": "● pass"
}
],
"stats": [
{
"label": "Borders pass",
"value": "96%"
},
{
"label": "Focus failures",
"value": "2"
},
{
"label": "Rows selected",
"value": "6"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"yellow primary action",
"cyan information slab",
"deep red error slab",
"green success badge",
"amber warning block"
],
"border": "3px solid near-black",
"contour": "square-slab",
"density": "compact-operational",
"family": "neo-brutalist-operations",
"grain": "concrete-speckle-background-only",
"material": "paper-on-concrete",
"motion": "snap-compress",
"stickerBadges": true,
"underlay": "hard-offset-shadow"
}
}