---
name: Design system (reference, not live)
type: architecture-map-page
slice: 01-frontend
last_verified: 2026/05/09
---

# Design system

> **Where you are:** [Architecture map](../README.md) → [Frontend](README.md) → Design system

**Plain English summary.** Reference material. The runtime styles live in `src/app.css`. Everything under `src/design-system/` is brand documentation, preview pages, JSX UI kits, and ground truth source for the lumotia-design Claude skill. None of it is imported by the runtime SvelteKit app.

## At a glance

- **Path:** `src/design-system/`
- **Files:**
  - `README.md`. Brand and content rules. (Lumotia by CORBEL.)
  - `SKILL.md`. lumotia-design skill manifest (`user-invocable: true`). The skill copies assets out and writes throwaway HTML or production code on demand.
  - `colors_and_type.css`. Mirror of the runtime `@theme` tokens for buildless preview pages. Intentional duplication, kept in sync by hand.
  - `preview/`. 20 buildless HTML spec cards.
  - `ui_kits/`. JSX recreations (`DictationPage.jsx`, `OtherPages.jsx`, `Sidebar.jsx`) plus an `index.html` and a README.

## What's in here

### `colors_and_type.css`

Mirrors `src/app.css` `@font-face` declarations and (typically) the `@theme` token block, with relative `fonts/...` URLs so preview HTML can render without going through Tailwind/Vite. The file's banner comment is explicit:

> When app.css @theme changes, mirror the change here. There is no automated sync; intentional duplication keeps the preview pages buildless.

### `preview/` (20 HTML files)

Each renders one slice of the system:
- Brand: `brand-icons.html`, `brand-wordmark.html`.
- Colour: `colors-accent.html`, `colors-semantic.html`, `colors-surfaces.html`, `colors-text.html`, `colors-zones.html`.
- Components: `components-buttons.html`, `components-cards.html`, `components-empty-states.html`, `components-inputs.html`, `components-nav.html`, `components-toasts.html`.
- Spacing and motion: `spacing-motion.html`, `spacing-radii.html`, `spacing-scale.html`, `spacing-shadows.html`.
- Type: `type-body.html`, `type-headings.html`, `type-transcript-mono.html`.

These are static. Open in any browser.

### `ui_kits/` (JSX, reference only)

Three `.jsx` files plus `index.html` and a README. Reproduce the desktop pages in JSX so prototypes can be built outside the Tauri shell. The README inside ui_kits explains how to use them. They are not imported anywhere from the SvelteKit app.

### Brand language (from README.md)

- Built for the noise allergic. Solarpunk-as-posture, AI-minimisation, ground truth + warmth.
- Iconography: Lucide, 2 px stroke. 16 px nav, 20 px features, 24 px primary actions. Always paired with a label except OS titlebar controls.
- Transparency + blur used sparingly: collapsed-sidebar tooltips, float window backdrop, accent-subtle 6% tint. No glassmorphism.

## Why it lives in `src/`

The design system files sit under `src/` so the lumotia-design skill (which runs from this repo) can read ground-truth Svelte source from `lumotia-source/` (a sibling import). The runtime build does not include this folder; it is a reference root.

## Watch outs

- Tokens in `colors_and_type.css` and `app.css` `@theme` can drift. There is no CI check. When you change a token in one, change it in both.
- `ui_kits/` JSX is not used by the app. Treat it as documentation, not as a future framework migration plan. There is no plan to switch from Svelte to React.
- Vite (with `sveltekit()` plugin) ignores `.html` files outside `static/` and `.jsx` files outside imports. If anyone adds an `import './design-system/...'` somewhere, the build will start picking up reference material. Do not.
- The skill is user invocable (`SKILL.md`). External agents may write into `src/design-system/` based on user invocation. Treat the contents as agent-shaped, not human-only.

## See also

- [App shell and styling](app-shell-and-styling.md). The runtime `app.css` that this folder mirrors.
- [Components](components.md). The Svelte versions of the JSX kits.
