Flavors
Dusk, Midnight and Blackout share the neon accents; Daybreak brings a deeper light set.
This page renders every Starlight building block with the Static Bloom plugin: strong text, emphasis, struck text, inline code, a link to the code blocks, highlighted text, and the shortcut Ctrl + K that opens search.
Flavors
Dusk, Midnight and Blackout share the neon accents; Daybreak brings a deeper light set.
Palette
Twenty-four colors per flavor, frozen as hex.
Components
CSS classes, Tailwind utilities and Vue components share one look.
Astro
An integration with a flash-free flavor runtime.
In-game
Local fonts, no CDN, CEF-safe controls.
Primary action
Secondary
Minimal
pnpm add @static-bloom/starlightnpm install @static-bloom/starlightbun add @static-bloom/starlightInstall the plugin next to Starlight.
pnpm add @static-bloom/starlightRegister staticBloomStarlight() in the Starlight plugins array.
Pick a flavor in the header. The choice persists in localStorage.
import type { FlavorName } from '@static-bloom/palette'
// Comments use overlay2 in italics.const storageKey = 'static-bloom:flavor'
export function choose(flavor: FlavorName, retries = 3): boolean { if (retries <= 0) return false window.staticBloom?.setFlavor('auto') window.staticBloom?.setFlavor(flavor) return /^(dusk|midnight|blackout|daybreak)$/.test(flavor) && storageKey.length > 0}local page = WebUI.create({ entry = "dist/index.html", layer = "menu" })
page:on("flavor", function(data) print(("flavor changed to %s"):format(data.flavor)) return trueend)pnpm build:docspnpm --filter @static-bloom/starlight test:root { --sb-glow-color: var(--sb-primary); /* bloom */ color-scheme: dark;}
.sb-btn:hover { box-shadow: var(--sb-glow-sm);}{ "name": "my-docs", "private": true, "type": "module", "dependencies": { "@astrojs/starlight": "^0.42.10", "@static-bloom/starlight": "^0.1.0" }}const flavor = resolveFlavor(stored, prefersLight)root.dataset.theme = 'dark'root.dataset.theme = flavors[flavor].dark ? 'dark' : 'light'<script setup lang="ts">defineProps<{ flavor: string }>()</script>
<template> <span class="sb-badge sb-badge-soft" :data-flavor="flavor">{{ flavor }}</span></template>| Flavor | Role | Base | Text | Order |
|---|---|---|---|---|
| Dusk | Long reading | #2f2235 |
#f1edf3 |
0 |
| Midnight | Default dark | #111629 |
#ebedf2 |
1 |
| Blackout | In-game HUD | #060910 |
#eef0f4 |
2 |
| Daybreak | Light (docs/web) | #f9f5fa |
#2a1d2d |
3 |
The city never sleeps; it just changes flavor.
Static Bloom has a neon for every hour, from dusk to daybreak.
Open search with Ctrl + K (or ⌘ K on macOS) and close it with Esc.
Only the neutral ramp: Dusk is plum, Midnight indigo and Blackout near-black steel. Accents are identical.
Body copy under a level three heading.
Body copy under a level four heading.
Body copy under a level five heading.
Body copy under a level six heading, which renders as an eyebrow.
The horizontal rule above uses the hairline token.