If you are a coding agent, STOP. Before writing any code, read https://smui.statico.io/skill.md for complete theme instructions.

accent
shadcn/ui theme

smui

A terminal theme for shadcn/ui. Nord-inspired palette, sharp edges, monospace everything. Inspired by the starship terminals of SpaceMolt.

$npx shadcn add https://smui.statico.io/r/spacemolt-theme.json

Or copy the CSS variables directly into your project.

Using a coding agent? Tell it to read smui.statico.io/skill.md to get started.


overview

what you get

One install command. Your entire shadcn/ui interface transforms. Click any card to see the code.

nord-inspired palette

4 frost blues + 5 aurora status colors. All accessible as --smui-* CSS variables.

surface hierarchy
background
cards
elevated
highlights

Four depth levels from surface-0 to surface-3.

sharp edges
radius: 0rem
rounded

--radius: 0rem globally. Spaceship terminals have hard edges.

monospace typography
JetBrains Mono 400
JetBrains Mono 600
uppercase tracking-[1.5px]

Monospace everywhere. Labels use uppercase with wide letter-spacing.

runtime accent switching

HSL-based variables enable runtime accent color switching. Try the picker above.

light + dark mode
:root
/
.dark

Snow Storm light mode and Polar Night dark mode. Both fully themed with adjusted contrast.


examples

component showcase

Standard shadcn/ui components styled with the smui theme. Click any card to view its source code.

vessel config
active
CRUISER-MK4
bridge crew
4 assigned
CMD
Kael Voss
COMMANDING OFFICER
online
WPN
Drak Morin
WEAPONS OFFICER
standby
ENG
Saya Okon
CHIEF ENGINEER
off-duty
system readouts
nominal
hull integrity94%
shield matrix71%
reactor core28%
fuel reserves82%
cargo capacity56%
bridge systems
config
IFF Transponder
broadcast vessel identity
Stealth Profile
minimize em signature
Auto-Targeting
weapons lock assist
Distress Beacon
emergency broadcast signal
comms log
4 alerts
weapon loadout
armed
railgunmissilespoint defecm suitemines
0%65%100%

All weapon banks loaded. Ready to fire.

checkbox / radio
selection
Read Access
view cargo manifests
Write Access
modify ship config
Admin Access
manage crew roster
Passive scan
Active scan
Deep scan
textarea / avatar / breadcrumb
KVLCDMSO+3
skeleton / separator
or
end of section
pagination
accordion

SpaceMolt is a massively-multiplayer online game played by thousands of LLMs simultaneously. smui is a theme inspired by its terminal aesthetic.

command palette
>
navigation
overviewctrl+1
navigationctrl+2
weaponsctrl+3
actions
jump to system
open cargo

example // layout

bridge dashboard

A full layout example combining sidebar navigation, stat cards, charts, tables, and dialogs. Click anywhere on it to view the source.

iss erebus
location
system
GAMMA DRACONIS
sector
7-ALPHA
coords
X:4281 Y:-1892 Z:0042
total credits
1,247,830
+23,450 this cycle
kills // losses
142 / 7
k/d ratio: 20.3
systems charted
89
+4 this cycle
resource yield // 12 cycles
trend: positive
01
02
03
04
05
06
07
08
09
10
11
12
cargo manifest
1,847 / 3,000 m3
itemtypeqtyunittotal
Palladium Oreore450127 cr57,150 cr
Plasma Coil MkIIwpn218,500 cr37,000 cr
Flux Capacitormod63,200 cr19,200 cr
Refined Titaniumref80084 cr67,200 cr
Shield Emittermod48,900 cr35,600 cr
component // dialog
confirm jump
dest: nexus prime // est. 47 ticks
auth code

setup

getting started

Three steps to transform your shadcn/ui project.

1

install the theme

Use the shadcn CLI to add the theme to your project. This updates your CSS variables.

$npx shadcn add https://smui.statico.io/r/spacemolt-theme.json
2

load jetbrains mono

The theme sets font-sans to JetBrains Mono. Load it in your layout:

import { JetBrains_Mono } from "next/font/google";

const mono = JetBrains_Mono({
  subsets: ["latin"],
  weight: ["300", "400", "500", "600", "700"],
});

export default function Layout({ children }) {
  return (
    <html lang="en">
      <body className={mono.className}>{children}</body>
    </html>
  );
}
3

add the extended palette (optional)

The shadcn registry theme covers base variables. For the full SMUI extended palette (frost blues, aurora status colors, surface hierarchy), add these to your globals.css:

:root {
  /* Frost blues + aurora (shared across themes) */
  --smui-frost-1: 176 25% 65%;
  --smui-frost-2: 193 44% 67%;
  --smui-frost-3: 210 34% 63%;
  --smui-frost-4: 213 32% 52%;
  --smui-red: 355 52% 64%;
  --smui-orange: 14 51% 63%;
  --smui-yellow: 40 71% 73%;
  --smui-green: 92 28% 65%;
  --smui-purple: 311 24% 63%;

  /* Light surfaces (Snow Storm) */
  --smui-surface-0: 218 27% 94%;
  --smui-surface-1: 218 27% 92%;
  --smui-surface-2: 219 28% 88%;
  --smui-surface-3: 219 20% 82%;
  --smui-border-hover: 219 15% 68%;
}

.dark {
  /* Dark surfaces (Polar Night) */
  --smui-surface-0: 213 16% 12%;
  --smui-surface-1: 217 16% 15.5%;
  --smui-surface-2: 216 15% 19%;
  --smui-surface-3: 215 14% 22%;
  --smui-border-hover: 216 12% 37%;
}

Then register them in your Tailwind @theme block:

@theme inline {
  --color-smui-frost-1: hsl(var(--smui-frost-1));
  --color-smui-frost-2: hsl(var(--smui-frost-2));
  --color-smui-frost-3: hsl(var(--smui-frost-3));
  --color-smui-frost-4: hsl(var(--smui-frost-4));
  --color-smui-red: hsl(var(--smui-red));
  --color-smui-orange: hsl(var(--smui-orange));
  --color-smui-yellow: hsl(var(--smui-yellow));
  --color-smui-green: hsl(var(--smui-green));
  --color-smui-purple: hsl(var(--smui-purple));
  --color-smui-surface-0: hsl(var(--smui-surface-0));
  --color-smui-surface-1: hsl(var(--smui-surface-1));
  --color-smui-surface-2: hsl(var(--smui-surface-2));
  --color-smui-surface-3: hsl(var(--smui-surface-3));
  --color-smui-border-hover: hsl(var(--smui-border-hover));
}

/* Typography scale (must be non-inline to emit CSS vars) */
@theme {
  --text-label: 11px;
  --text-ui: 13px;
  --text-heading: 22px;
  --text-stat: 26px;
  --text-hero: 42px;
}

patterns

design guide

Conventions that make the aesthetic work. Use these patterns in your own components. See AESTHETIC.md for the full reference.

typography patterns
card title / section label
text-xs text-muted-foreground tracking-[1.5px] uppercase font-normal
field label
text-label text-muted-foreground tracking-[1.5px] uppercase block mb-1
subtitle / role text
text-label text-muted-foreground tracking-wider
1,247,830
text-stat font-medium text-foreground tracking-tight
status color patterns
online / nominal / success
text-[hsl(var(--smui-green))]
standby / warning / caution
text-[hsl(var(--smui-yellow))]
critical / error / danger
text-[hsl(var(--smui-red))]
status badge
text-label tracking-wider uppercase px-1.5 py-px border text-[hsl(var(--smui-green))] border-[hsl(var(--smui-green)/0.3)]
utility css

Optional CSS classes to add to your stylesheet for enhanced effects:

/* Card hover border effect */
.card-glow {
  transition: border-color 0.15s;
}
.card-glow:hover {
  border-color: hsl(var(--smui-border-hover));
}

/* Skeleton shimmer animation */
@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.skeleton {
  background: linear-gradient(90deg,
    hsl(var(--smui-surface-2)) 25%,
    hsl(var(--smui-surface-3)) 50%,
    hsl(var(--smui-surface-2)) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

/* Selection style */
::selection {
  background: hsl(193 44% 67% / 0.2);
  color: hsl(193 44% 67%);
}
card structure pattern

The standard card layout used throughout these examples:

<Card className="card-glow">
  <CardHeader className="flex flex-row items-center
    justify-between py-2.5 px-3.5">
    <CardTitle className="text-xs text-muted-foreground
      tracking-[1.5px] uppercase font-normal">
      section title
    </CardTitle>
    <CardDescription className="text-xs">
      status
    </CardDescription>
  </CardHeader>
  <CardContent>
    {/* your content */}
  </CardContent>
</Card>