Foundations

Tokens

Everything on this page is read from @ilomee/aura-core's own token files — nothing here is a copy. Change the theme or accent in the header and the values below re-resolve, because they are the same CSS variables your app would use.

Accents

5 accents. Each one is a gradient pair plus a solid --accent, resolved per theme. Click one in the header to repaint the site.

Your own colour

The five above are presets, not a limit. Every accent-derived value in the stylesheet — the gradient, all twelve scale steps, focus rings, every role alias — is a <code>color-mix()</code> over three custom properties, resolved by the browser. Overwrite them and the whole palette follows: no rebuild, no new selector, no fork.

Gradient of your own#FF6B00 · #FFC300
One colour, no gradient#E11D48
theme.tsx
import { accentVars } from '@ilomee/aura-core';
import { AuraProvider } from '@ilomee/aura-react';

// A gradient of your own.
<AuraProvider vars={accentVars({ from: '#FF6B00', to: '#FFC300' })}>…</AuraProvider>

// One colour, no gradient: both stops carry it, so --gradient renders flat.
<AuraProvider vars={accentVars('#E11D48')}>…</AuraProvider>

// The solid can differ from the gradient — it drives borders, focus rings and text.
<AuraProvider vars={accentVars({ from: '#FF6B00', to: '#FFC300', accent: '#F05A38' })}>…</AuraProvider>

Without a component library it is three declarations — the same three the helper writes for you.

brand.css
:root {
  --grad-a: #ff6b00;
  --grad-b: #ffc300;
  --accent: #ff6b00;
}

Surfaces and text

Both ramps, side by side. The theme toggle swaps which one is live.

light
--canvas#F4F6F8
--surface#FFFFFF
--surface-2#EEF1F5
--surface-3#E1E6EE
--border#E5E8EE
--border-strong#D2D8E1
--text#13161C
--text-muted#5A616E
--text-faint#8A909C
dark
--canvas#0B0C10
--surface#15171E
--surface-2#1C1F28
--surface-3#262A35
--border#272B35
--border-strong#363B48
--text#ECEEF3
--text-muted#9BA2AF
--text-faint#697080

The colour of a hover

Six rules paint a hover — the secondary and ghost buttons, the icon button, a chip's dismiss, an accordion summary, and the option a listbox cursor is on. All six read --aura-hover-bg, falling back to --surface-2, so changing it is one declaration rather than six overrides. Where you set it decides how far it reaches. Deliberately narrow: a segmented control's track and a disabled field are --surface-2 as well, and neither is a hover.

:root    { --aura-hover-bg: color-mix(in srgb, var(--accent) 10%, transparent); }
.sidebar { --aura-hover-bg: #1b1f2a; }

Semantic

success#1E9E6A
warning#D98A0B
danger#E5484D
info#2F8FF5

Shape and elevation

radius — driven by data-corner
r1
r2
r3
r4
elevation
shadow-1
shadow-2
shadow-3

Space

A gap of 4 on any layout component means var(--space-4).

1 · 4px
2 · 8px
3 · 12px
4 · 16px
5 · 20px
6 · 24px
8 · 32px
10 · 40px

The two families

Every size in the scale above is one of these two. Neither is bundled: --font and --mono name a family and fall back to the platform, so a project that loads neither still gets the whole scale — in the system UI font, at the right sizes and weights.

InterfaceThe quick brown fox--font: 'Onest', system-ui, sans-serif
MonospaceThe quick brown fox--mono: 'DM Mono', monospace

Two declarations, in the same place the accent is overridden. Load the face however the project already loads faces — a @font-face, a link tag, a bundler import — and point the token at it; every component reads the token, so nothing else has to change.

brand.css
@font-face {
  font-family: 'Your Sans';
  src: url('/fonts/your-sans.woff2') format('woff2');
  font-display: swap;
}

:root {
  --font: 'Your Sans', system-ui, sans-serif;
  --mono: 'Your Mono', ui-monospace, monospace;
}

Type

display · clamp(1.75rem, 1.417rem + 1.667vw, 2.75rem)The quick brown fox
h1 · clamp(1.5rem, 1.292rem + 1.042vw, 2.125rem)The quick brown fox
h2 · 24pxThe quick brown fox
h3 · 18pxThe quick brown fox
bodyL · 16pxThe quick brown fox
body · 14pxThe quick brown fox
caption · 12pxThe quick brown fox
overline · 12pxThe quick brown fox
mono · 14pxThe quick brown fox

Switching everything

Four attributes on any ancestor — usually <html> — re-resolve every variable below them. That is the whole theming API; no JavaScript is involved.

AttributeValuesDefault
data-themelight · darklight
data-accentaqua · sunset · iris · lime · roseaqua
data-cornerrounded · sharp · pillrounded
data-densitycomfortable · compactcomfortable