Terminal Brutalist Interface
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
specification
philosophy
tokens
borders4 items
- accent width
- 4px
- character
- Square phosphor outlines, amber left rails for command zones, double-line separators for destructive or locked states.
- default width
- 1px
- style
- solid
colors12 items
motion3 items
- duration
- 120ms
- easing
- steps(2, end)
- philosophy
- State changes snap in two-step terminal refreshes; hover and focus shift by cell increments rather than smooth floating animation.
radii5 items
- full
- 0px
- lg
- 2px
- md
- 0px
- none
- 0px
- sm
- 0px
shadows3 items
- lg
- 0 0 0 1px rgba(242,162,58,0.32), 0 0 34px rgba(57,255,136,0.11)
- md
- 0 0 0 1px rgba(57,255,136,0.28), 0 0 18px rgba(57,255,136,0.08)
- sm
- 0 0 0 1px rgba(57,255,136,0.18)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Layered 8px and 64px bitmap grid made with repeating-linear-gradient, with a faint horizontal CRT raster overlay.
- card style
- Square panels use 1px phosphor borders, inset 4px amber gutters, hard corners, and internal 8px cell divisions.
- treatment
- Off-black terminal surfaces with no blur, no soft radius, subtle scanlines, and sparse phosphor glow for active regions.
typography8 items
- base size
- 16px
- body font
- IBM Plex Mono
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Martian+Mono:wght@400;500;700;800&display=swap
- heading font
- Martian Mono
- letter spacing
- -0.01em
- line height
- 1.45
- mono font
- Martian Mono
- scale ratio
- 1.2
rules
Compose screens as command consoles: a dominant terminal viewport owns the page, while side registers and bottom logs lock to the 8px grid around it.
High density is permitted when the grid is explicit; related values sit in tight 4-8px clusters, with 48-64px gaps reserved for mode changes and major regions.
Hierarchy comes from phosphor brightness, amber command rails, uppercase prompt labels, data density, and block scale rather than shadows or rounded elevation.
layout
Mobile 375px single command stream; tablet 768px two registers; desktop 1200px+ dominant terminal plus right rail and bottom log.
8px base grid with 64px macro columns, CSS grid shell, square cell cards, and fixed-width terminal gutters.
Whitespace is black terminal silence: large 48px and 64px gaps separate modes, while dense readouts use 4px and 8px increments.
guidance
- Use real operational labels, telemetry rows, commands, risk levels, and terminal output so the grid has product meaning.
- Keep the palette mostly off-black and phosphor; reserve amber for command rails and warnings.
- Build controls, tables, dialogs, and maps from square cells, hard borders, and monospace hierarchy.
- Preserve contrast and avoid making scanlines interfere with body copy.
- Do not use retro game mascots, rainbow pixel sprites, glossy neon gradients, or novelty 8-bit fonts for long text.
- Do not round cards into generic SaaS surfaces or add soft drop shadows for elevation.
- Do not scatter pixel motifs without letting the grid organize navigation, data, and controls.
- Do not treat error, success, and warning colors as the only signature; the terminal structure must remain visible.
katagami spec
# Terminal Brutalist Interface ## Philosophy Terminal Brutalist Interface turns pixel art into a severe operations language: raw terminal grids, phosphor command lanes, amber warning registers, and square bitmap modules organize high-stakes infrastructure tools without nostalgic arcade clutter. ### Values - Legible command authority - Grid as product logic - Low-color operational restraint - Visible machine states - Responsive density without softness ### Anti-Values - Arcade novelty sprites - Glassmorphism or soft SaaS cards - Decorative neon gradients - Rounded generic dashboard chrome ### Visual Character - Use a full-page repeating-linear-gradient 8px terminal grid plus heavier 64px rails to make the background visibly quantized in CSS. - Render panels as square black blocks with 1px phosphor borders, 4px inset amber command gutters, and clipped pseudo-elements instead of rounded cards. - Set all headings, labels, tables, and controls in monospace with uppercase micro-labels, tight letter spacing, tabular numerals, and command-prompt prefixes. - Apply CRT scanline overlays and low-opacity phosphor glows only to active terminals, focus rings, and data maps, never as broad decorative gradients. - Use bitmap bar meters, stepped progress blocks, and checker dither masks to express status, risk, and throughput inside real interface components. ## Tokens ### Borders - **Accent Width**: 4px - **Character**: Square phosphor outlines, amber left rails for command zones, double-line separators for destructive or locked states. - **Default Width**: 1px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#B6FF4D` | | background | `#050706` | | border | `#21442E` | | error | `#FF5A3D` | | info | `#55D7FF` | | muted | `#6E8A74` | | primary | `#39FF88` | | secondary | `#F2A23A` | | success | `#39FF88` | | surface | `#0A0E0B` | | text | `#D6FFE4` | | warning | `#F2A23A` | ### Motion - **Duration**: 120ms - **Easing**: steps(2, end) - **Philosophy**: State changes snap in two-step terminal refreshes; hover and focus shift by cell increments rather than smooth floating animation. ### Radii - **Full**: 0px - **Lg**: 2px - **Md**: 0px - **None**: 0px - **Sm**: 0px ### Shadows - **Lg**: 0 0 0 1px rgba(242,162,58,0.32), 0 0 34px rgba(57,255,136,0.11) - **Md**: 0 0 0 1px rgba(57,255,136,0.28), 0 0 18px rgba(57,255,136,0.08) - **Sm**: 0 0 0 1px rgba(57,255,136,0.18) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Layered 8px and 64px bitmap grid made with repeating-linear-gradient, with a faint horizontal CRT raster overlay. - **Card Style**: Square panels use 1px phosphor borders, inset 4px amber gutters, hard corners, and internal 8px cell divisions. - **Treatment**: Off-black terminal surfaces with no blur, no soft radius, subtle scanlines, and sparse phosphor glow for active regions. ### Typography - **Base Size**: 16px - **Body Font**: IBM Plex Mono - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Martian+Mono:wght@400;500;700;800&display=swap - **Heading Font**: Martian Mono - **Letter Spacing**: -0.01em - **Line Height**: 1.45 - **Mono Font**: Martian Mono - **Scale Ratio**: 1.2 ## Rules ### Composition Compose screens as command consoles: a dominant terminal viewport owns the page, while side registers and bottom logs lock to the 8px grid around it. ### Density High density is permitted when the grid is explicit; related values sit in tight 4-8px clusters, with 48-64px gaps reserved for mode changes and major regions. ### Hierarchy Hierarchy comes from phosphor brightness, amber command rails, uppercase prompt labels, data density, and block scale rather than shadows or rounded elevation. ### Signature Patterns - Command gutters: active panels carry a 4px amber rail plus a ::before prompt tag that identifies mode and creates immediate navigation hierarchy. - CRT raster veil: terminal and map regions include a repeating horizontal scanline overlay that appears only on machine-output surfaces and stays below text contrast. - Bitmap state meters: progress, battery, and risk are drawn as discrete square cells with phosphor, amber, or red fills instead of continuous rounded bars. - Dithered hazard masks: warning panels use checkerboard CSS gradients at 8px scale to show degraded signal without adding illustrations or icons. - Hard cut focus: controls receive a 2px phosphor outline, amber corner ticks, and a one-cell translate on focus/hover using steps timing. ## Layout ### Breakpoints Mobile 375px single command stream; tablet 768px two registers; desktop 1200px+ dominant terminal plus right rail and bottom log. ### Grid 8px base grid with 64px macro columns, CSS grid shell, square cell cards, and fixed-width terminal gutters. ### Whitespace Whitespace is black terminal silence: large 48px and 64px gaps separate modes, while dense readouts use 4px and 8px increments. ## Guidance ### Do - Use real operational labels, telemetry rows, commands, risk levels, and terminal output so the grid has product meaning. - Keep the palette mostly off-black and phosphor; reserve amber for command rails and warnings. - Build controls, tables, dialogs, and maps from square cells, hard borders, and monospace hierarchy. - Preserve contrast and avoid making scanlines interfere with body copy. ### Don't - Do not use retro game mascots, rainbow pixel sprites, glossy neon gradients, or novelty 8-bit fonts for long text. - Do not round cards into generic SaaS surfaces or add soft drop shadows for elevation. - Do not scatter pixel motifs without letting the grid organize navigation, data, and controls. - Do not treat error, success, and warning colors as the only signature; the terminal structure must remain visible.
DESIGN.md
---
version: "alpha"
name: "Terminal Brutalist Interface"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#B6FF4D"
background: "#050706"
border: "#21442E"
error: "#FF5A3D"
info: "#55D7FF"
muted: "#6E8A74"
primary: "#39FF88"
secondary: "#F2A23A"
success: "#39FF88"
surface: "#0A0E0B"
text: "#D6FFE4"
warning: "#F2A23A"
typography:
headline-lg:
fontFamily: "Martian Mono"
fontSize: "1.728rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Martian Mono"
fontSize: "1.44rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "IBM Plex Mono"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.45
letterSpacing: "-0.01em"
label-md:
fontFamily: "Martian Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "0px"
lg: "2px"
md: "0px"
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"
---
# Terminal Brutalist Interface
## Overview
Terminal Brutalist Interface turns pixel art into a severe operations language: raw terminal grids, phosphor command lanes, amber warning registers, and square bitmap modules organize high-stakes infrastructure tools without nostalgic arcade clutter.
### Values
- Legible command authority
- Grid as product logic
- Low-color operational restraint
- Visible machine states
- Responsive density without softness
### Anti-Values
- Arcade novelty sprites
- Glassmorphism or soft SaaS cards
- Decorative neon gradients
- Rounded generic dashboard chrome
### Visual Character
- Use a full-page repeating-linear-gradient 8px terminal grid plus heavier 64px rails to make the background visibly quantized in CSS.
- Render panels as square black blocks with 1px phosphor borders, 4px inset amber command gutters, and clipped pseudo-elements instead of rounded cards.
- Set all headings, labels, tables, and controls in monospace with uppercase micro-labels, tight letter spacing, tabular numerals, and command-prompt prefixes.
- Apply CRT scanline overlays and low-opacity phosphor glows only to active terminals, focus rings, and data maps, never as broad decorative gradients.
- Use bitmap bar meters, stepped progress blocks, and checker dither masks to express status, risk, and throughput inside real interface components.
## 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 | `#B6FF4D` |
| background | `#050706` |
| border | `#21442E` |
| error | `#FF5A3D` |
| info | `#55D7FF` |
| muted | `#6E8A74` |
| primary | `#39FF88` |
| secondary | `#F2A23A` |
| success | `#39FF88` |
| surface | `#0A0E0B` |
| text | `#D6FFE4` |
| warning | `#F2A23A` |
## Typography
- **Headline-Lg**: Martian Mono, 1.728rem, weight 700, line-height 1.1.
- **Headline-Md**: Martian Mono, 1.44rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Mono, 16px, weight 400, line-height 1.45.
- **Label-Md**: Martian 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 command stream; tablet 768px two registers; desktop 1200px+ dominant terminal plus right rail and bottom log.
### Grid
8px base grid with 64px macro columns, CSS grid shell, square cell cards, and fixed-width terminal gutters.
### Whitespace
Whitespace is black terminal silence: large 48px and 64px gaps separate modes, while dense readouts use 4px and 8px increments.
## Elevation & Depth
### Shadows
- **Lg**: 0 0 0 1px rgba(242,162,58,0.32), 0 0 34px rgba(57,255,136,0.11)
- **Md**: 0 0 0 1px rgba(57,255,136,0.28), 0 0 18px rgba(57,255,136,0.08)
- **Sm**: 0 0 0 1px rgba(57,255,136,0.18)
## Shapes
### Rounded
- **Full**: `0px`
- **Lg**: `2px`
- **Md**: `0px`
- **None**: `0px`
- **Sm**: `0px`
### Surfaces
- **Bg Pattern**: Layered 8px and 64px bitmap grid made with repeating-linear-gradient, with a faint horizontal CRT raster overlay.
- **Card Style**: Square panels use 1px phosphor borders, inset 4px amber gutters, hard corners, and internal 8px cell divisions.
- **Treatment**: Off-black terminal surfaces with no blur, no soft radius, subtle scanlines, and sparse phosphor glow for active regions.
### Borders
- **Accent Width**: 4px
- **Character**: Square phosphor outlines, amber left rails for command zones, double-line separators for destructive or locked states.
- **Default Width**: 1px
- **Style**: solid
## Components
### Composition
Compose screens as command consoles: a dominant terminal viewport owns the page, while side registers and bottom logs lock to the 8px grid around it.
### Density
High density is permitted when the grid is explicit; related values sit in tight 4-8px clusters, with 48-64px gaps reserved for mode changes and major regions.
### Hierarchy
Hierarchy comes from phosphor brightness, amber command rails, uppercase prompt labels, data density, and block scale rather than shadows or rounded elevation.
### Signature Patterns
- Command gutters: active panels carry a 4px amber rail plus a ::before prompt tag that identifies mode and creates immediate navigation hierarchy.
- CRT raster veil: terminal and map regions include a repeating horizontal scanline overlay that appears only on machine-output surfaces and stays below text contrast.
- Bitmap state meters: progress, battery, and risk are drawn as discrete square cells with phosphor, amber, or red fills instead of continuous rounded bars.
- Dithered hazard masks: warning panels use checkerboard CSS gradients at 8px scale to show degraded signal without adding illustrations or icons.
- Hard cut focus: controls receive a 2px phosphor outline, amber corner ticks, and a one-cell translate on focus/hover using steps timing.
## 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-019e6c91-25cc-72d1-8d7e-a4e7bc216bab/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 real operational labels, telemetry rows, commands, risk levels, and terminal output so the grid has product meaning.
- Do Keep the palette mostly off-black and phosphor; reserve amber for command rails and warnings.
- Do Build controls, tables, dialogs, and maps from square cells, hard borders, and monospace hierarchy.
- Do Preserve contrast and avoid making scanlines interfere with body copy.
- Don't Do not use retro game mascots, rainbow pixel sprites, glossy neon gradients, or novelty 8-bit fonts for long text.
- Don't Do not round cards into generic SaaS surfaces or add soft drop shadows for elevation.
- Don't Do not scatter pixel motifs without letting the grid organize navigation, data, and controls.
- Don't Do not treat error, success, and warning colors as the only signature; the terminal structure must remain visible.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "terminal-brutalist-interface",
"type": "registry:theme",
"title": "Terminal Brutalist Interface shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#050706",
"foreground": "#D6FFE4",
"card": "#0A0E0B",
"card-foreground": "#D6FFE4",
"popover": "#0A0E0B",
"popover-foreground": "#D6FFE4",
"primary": "#39FF88",
"primary-foreground": "#111111",
"secondary": "#F2A23A",
"secondary-foreground": "#ffffff",
"muted": "#6E8A74",
"muted-foreground": "#D6FFE4",
"accent": "#B6FF4D",
"accent-foreground": "#111111",
"destructive": "#FF5A3D",
"border": "#21442E",
"input": "#21442E",
"ring": "#B6FF4D",
"chart-1": "#39FF88",
"chart-2": "#F2A23A",
"chart-3": "#B6FF4D",
"chart-4": "#39FF88",
"chart-5": "#F2A23A",
"sidebar": "#0A0E0B",
"sidebar-foreground": "#D6FFE4",
"sidebar-primary": "#39FF88",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#55D7FF",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#21442E",
"sidebar-ring": "#B6FF4D",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#39FF88",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B6FF4D",
"accent-foreground": "#111111",
"destructive": "#FF5A3D",
"border": "#303642",
"input": "#303642",
"ring": "#B6FF4D",
"chart-1": "#39FF88",
"chart-2": "#F2A23A",
"chart-3": "#B6FF4D",
"chart-4": "#39FF88",
"chart-5": "#F2A23A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#39FF88",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#B6FF4D",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#B6FF4D",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e6c91-25cc-72d1-8d7e-a4e7bc216bab",
"slug": "terminal-brutalist-interface",
"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
Terminal Brutalist Interface
Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.
Grid Sentinel / 08
Operators reroute pump power through live phosphor nodes while amber locks protect unstable relays.
Reroute Pump Array T18-PMP-09
A supervisor edits a safe reroute script and confirms which locks are allowed to release.
Subnet Relay Matrix
Technicians audit node load, lock state, and packet routing from a compact data-operations surface.
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: #050706;
--foreground: #D6FFE4;
--card: #0A0E0B;
--card-foreground: #D6FFE4;
--popover: #0A0E0B;
--popover-foreground: #D6FFE4;
--primary: #39FF88;
--primary-foreground: #111111;
--secondary: #F2A23A;
--secondary-foreground: #ffffff;
--muted: #6E8A74;
--muted-foreground: #D6FFE4;
--accent: #B6FF4D;
--accent-foreground: #111111;
--destructive: #FF5A3D;
--border: #21442E;
--input: #21442E;
--ring: #B6FF4D;
--chart-1: #39FF88;
--chart-2: #F2A23A;
--chart-3: #B6FF4D;
--chart-4: #39FF88;
--chart-5: #F2A23A;
--sidebar: #0A0E0B;
--sidebar-foreground: #D6FFE4;
--sidebar-primary: #39FF88;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #55D7FF;
--sidebar-accent-foreground: #111111;
--sidebar-border: #21442E;
--sidebar-ring: #B6FF4D;
--radius: 0px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #39FF88;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #B6FF4D;
--accent-foreground: #111111;
--destructive: #FF5A3D;
--border: #303642;
--input: #303642;
--ring: #B6FF4D;
--chart-1: #39FF88;
--chart-2: #F2A23A;
--chart-3: #B6FF4D;
--chart-4: #39FF88;
--chart-5: #F2A23A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #39FF88;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #B6FF4D;
--sidebar-accent-foreground: #111111;
--sidebar-border: #303642;
--sidebar-ring: #B6FF4D;
--radius: 0px;
}
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 TerminalBrutalistInterfaceShadcnKit() {
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">Terminal Brutalist Interface</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",
"cssVars": {
"dark": {
"accent": "#B6FF4D",
"accent-foreground": "#111111",
"background": "#0f1115",
"border": "#303642",
"card": "#181b22",
"card-foreground": "#f8fafc",
"chart-1": "#39FF88",
"chart-2": "#F2A23A",
"chart-3": "#B6FF4D",
"chart-4": "#39FF88",
"chart-5": "#F2A23A",
"destructive": "#FF5A3D",
"foreground": "#f8fafc",
"input": "#303642",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#39FF88",
"primary-foreground": "#111111",
"radius": "0px",
"ring": "#B6FF4D",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"sidebar": "#181b22",
"sidebar-accent": "#B6FF4D",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#39FF88",
"sidebar-primary-foreground": "#111111",
"sidebar-ring": "#B6FF4D"
},
"light": {
"accent": "#B6FF4D",
"accent-foreground": "#111111",
"background": "#050706",
"border": "#21442E",
"card": "#0A0E0B",
"card-foreground": "#D6FFE4",
"chart-1": "#39FF88",
"chart-2": "#F2A23A",
"chart-3": "#B6FF4D",
"chart-4": "#39FF88",
"chart-5": "#F2A23A",
"destructive": "#FF5A3D",
"foreground": "#D6FFE4",
"input": "#21442E",
"muted": "#6E8A74",
"muted-foreground": "#D6FFE4",
"popover": "#0A0E0B",
"popover-foreground": "#D6FFE4",
"primary": "#39FF88",
"primary-foreground": "#111111",
"radius": "0px",
"ring": "#B6FF4D",
"secondary": "#F2A23A",
"secondary-foreground": "#ffffff",
"sidebar": "#0A0E0B",
"sidebar-accent": "#55D7FF",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#21442E",
"sidebar-foreground": "#D6FFE4",
"sidebar-primary": "#39FF88",
"sidebar-primary-foreground": "#111111",
"sidebar-ring": "#B6FF4D"
},
"theme": {}
},
"meta": {
"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",
"languageId": "en-019e6c91-25cc-72d1-8d7e-a4e7bc216bab",
"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"
]
},
"slug": "terminal-brutalist-interface",
"source": "katagami"
},
"name": "terminal-brutalist-interface",
"title": "Terminal Brutalist Interface shadcn Theme",
"type": "registry:theme"
}
# Terminal Brutalist Interface shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate Terminal Brutalist Interface into local shadcn/ui primitives for command consoles, telemetry editors, and data operations screens. The system must feel like a square phosphor terminal, not a generic dark dashboard.
## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, and table.
## Token cues
Use `{colors.background}` for the page, `{colors.surface}` for cards, `{colors.primary}` for active phosphor, `{colors.secondary}` for amber command rails, `{colors.border}` for one-pixel outlines, `{typography.mono_font}` for labels and figures, `{spacing.*}` in 8px multiples, and `{rounded.none}` for almost every primitive.
## Visual character to preserve
- 8px/64px terminal grid backgrounds.
- Square panels with 1px phosphor borders and 4px amber command gutters.
- Monospace uppercase prompt labels and tabular numerals.
- CRT scanline overlays only on machine-output cards.
- Bitmap cell meters for progress, risk, and state.
## ShadSync visual profile
family: terminal-brutalist; material: off-black CRT glass; contour: square; border: phosphor-1px-with-amber-gutter; underlay: terminal-grid; grain: scanline; stickerBadges: false; motion: stepped-cell-snap; density: high; accents: phosphor-green and amber.
## Signature component recipes
- button: square, uppercase, `border border-primary`, no radius, hover translates one 4px cell with amber offset shadow; destructive uses red text with double border.
- card: surface black, one-pixel phosphor border, optional `before` amber gutter for command cards; data cards can add a scanline pseudo-element.
- input: black inset field, 1px border, phosphor focus outline with amber corner ticks; values use tabular monospace.
- textarea: same as input but with faint 8px baseline grid for command scripts.
- select: square trigger with amber chevron cell and uppercase current mode.
- dialog: hard-edged modal with 4px amber top rail, no overlay blur, terminal title prefix `> CONFIRM`.
- sheet: side register with fixed 64px grid subdivisions and dense rows.
- tabs: tab triggers look like command modes; active tab receives phosphor fill line and amber left rail.
- badge: square micro labels with one-pixel border; success green, warning amber, error red.
- separator: single phosphor line or double amber line for locked/destructive sections.
- checkbox: 16px square cell that fills phosphor and uses `X` glyph when checked.
- switch: row of discrete cells rather than a pill; active cells glow phosphor.
- slider: segmented bitmap track with square thumb snapping to 8px increments.
- tooltip: black terminal hint with amber prompt prefix and no rounded bubble.
- dropdown-menu: square command list, active item gets amber gutter and phosphor text.
- table: dense monospace rows, fixed grid columns, uppercase amber headers, badges embedded as state cells.
## Preview shots
1. application-shell: tunnel grid sentinel console with navigation register, dominant terminal map, and event log.
2. detail-editor: manual command dialog/sheet for staging a reroute with field focus and warning states.
3. data-operations: relay table with dropdown actions, segmented sliders, switches, and terminal badges.
## Implementation contract
Import local primitives from `@/components/ui/*`. Do not invent a separate component library. Keep all radii square, use no glass blur, and ensure focus states are visible through phosphor outlines and amber gutters.
## 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 TerminalRelayCard() {
return (
<Card className="relative overflow-hidden rounded-none border border-primary/50 bg-background text-foreground shadow-[0_0_18px_rgba(57,255,136,.08)] before:absolute before:left-0 before:top-0 before:h-full before:w-1 before:bg-secondary">
<CardHeader className="pl-6">
<p className="font-mono text-[10px] uppercase tracking-widest text-secondary">> relay table</p>
<CardTitle className="font-mono uppercase tracking-[-0.06em] text-primary">Grid Sentinel / 08</CardTitle>
</CardHeader>
<CardContent className="space-y-3 pl-6 font-mono">
<Input className="rounded-none border-border bg-black/40 font-mono focus-visible:ring-2 focus-visible:ring-primary" defaultValue="reroute --safe --amber" />
<div className="flex gap-2"><Badge className="rounded-none border border-primary bg-transparent text-primary">LIVE</Badge><Badge className="rounded-none border border-secondary bg-transparent text-secondary">AMBER HOLD</Badge></div>
<Table><TableHeader><TableRow><TableHead>Node</TableHead><TableHead>Load</TableHead><TableHead>State</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>T18-PMP-09</TableCell><TableCell>41%</TableCell><TableCell>HOLD</TableCell></TableRow></TableBody></Table>
<Button className="rounded-none border border-primary bg-transparent font-mono uppercase text-primary hover:translate-x-1 hover:-translate-y-1 hover:bg-transparent hover:shadow-[-4px_4px_0_#F2A23A]">Commit Route</Button>
</CardContent>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "card",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "input",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "textarea",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "select",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "dialog",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "sheet",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "tabs",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "badge",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "separator",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "checkbox",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "switch",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "slider",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "tooltip",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "dropdown-menu",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
},
{
"component": "table",
"recipe": "Square terminal primitive with 1px phosphor border, no radius, monospace labels, amber gutters for active or command states, and stepped focus motion."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"generic KPI card row",
"rounded dashboard panels",
"decorative sprites"
],
"composition": "Three-zone command shell: left command stack, dominant terminal map, right telemetry register, bottom event log locked to the 8px grid.",
"id": "application-shell",
"mustShowStates": [
"active phosphor route",
"amber hold badge",
"hovered command button",
"dead relay row"
],
"primitives": [
"button",
"card",
"tabs",
"badge",
"separator",
"table",
"tooltip",
"dropdown-menu"
],
"scene": {
"actions": [
"Commit route",
"Isolate amber zone"
],
"description": "Operators reroute pump power through live phosphor nodes while amber locks protect unstable relays.",
"eyebrow": "> municipal tunnel grid",
"headline": "Grid Sentinel / 08",
"rows": [
{
"load": "83%",
"node": "T18-AUX-04",
"state": "LIVE"
},
{
"load": "41%",
"node": "T18-PMP-09",
"state": "HOLD"
},
{
"load": "00%",
"node": "T17-DRN-02",
"state": "DEAD"
}
],
"stats": [
{
"label": "Continuity",
"value": "97.4%"
},
{
"label": "Latency",
"value": "008ms"
},
{
"label": "Amber locks",
"value": "03"
}
]
}
},
{
"avoid": [
"soft modal blur",
"pill switches",
"large empty form spacing"
],
"composition": "A hard-edged reroute editor opens over a black grid, with amber top rail, command fields, segmented safety slider, and terminal confirmation log.",
"id": "detail-editor",
"mustShowStates": [
"focused input phosphor outline",
"checked square cell",
"switch as segmented cells",
"warning badge"
],
"primitives": [
"dialog",
"sheet",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"button",
"badge",
"separator",
"tooltip"
],
"scene": {
"actions": [
"Stage command",
"Abort"
],
"description": "A supervisor edits a safe reroute script and confirms which locks are allowed to release.",
"eyebrow": "> stage manual command",
"fields": [
{
"label": "Target node",
"value": "T18-PMP-09"
},
{
"label": "Operation",
"value": "reroute --safe --amber"
},
{
"label": "Supervisor note",
"value": "Hold drain two until checksum clears."
}
],
"headline": "Reroute Pump Array T18-PMP-09",
"stats": [
{
"label": "Risk",
"value": "AMBER"
},
{
"label": "Cell snap",
"value": "8px"
}
]
}
},
{
"avoid": [
"inventory wall of components",
"smooth continuous progress bars",
"unstructured pixel decoration"
],
"composition": "Dense relay operations table with fixed monospace columns, row actions, amber warnings, segmented throughput controls, and tabbed command modes.",
"id": "data-operations",
"mustShowStates": [
"selected table row",
"open command dropdown",
"segmented slider",
"active terminal tab"
],
"primitives": [
"table",
"dropdown-menu",
"button",
"badge",
"separator",
"card",
"slider",
"switch",
"tooltip",
"tabs",
"select"
],
"scene": {
"actions": [
"Sync selected",
"Export log"
],
"description": "Technicians audit node load, lock state, and packet routing from a compact data-operations surface.",
"eyebrow": "> relay operations",
"headline": "Subnet Relay Matrix",
"rows": [
{
"load": "83%",
"node": "T18-AUX-04",
"packets": "18,402",
"state": "LIVE"
},
{
"load": "41%",
"node": "T18-PMP-09",
"packets": "8,119",
"state": "HOLD"
},
{
"load": "00%",
"node": "T17-DRN-02",
"packets": "0",
"state": "DEAD"
}
],
"stats": [
{
"label": "Mode",
"value": "MANUAL"
},
{
"label": "Checksum",
"value": "8F4A"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"phosphor green",
"#39FF88",
"amber",
"#F2A23A",
"red fault cells"
],
"border": "1px phosphor with 4px amber command gutters",
"contour": "square",
"density": "high operational density",
"family": "terminal-brutalist",
"grain": "horizontal scanline raster on output regions",
"material": "off-black CRT terminal glass",
"motion": "two-step cell snap",
"stickerBadges": false,
"underlay": "8px terminal grid plus 64px macro rails"
}
}