Superneon

superneon is near-black violet with hairline edges and light that comes from inside. A solid button is a dark pill, lit along its inner edges and ringed in a gradient that glows past its outline; the big headings fade from bright to lavender, and anything chosen or switched on picks up a halo. The glow is only ever decoration, so every label still sits on a flat colour that clears WCAG AA. Dark mode is the original look; light mode keeps the dark pills and the glow and puts them on a pale lavender page.

A card

The same markup, restyled by one sheet.

  1. Account

  2. Profile

  3. Confirm

Progress50%
50
Saved
Your changes are live.
Copied to clipboard
What is a preset?
A second sheet that restyles every component at once.
Does it follow dark mode?
Yes — try the toggle at the top of the page.
Can I still use theme()?
Yes, and it wins over the preset.
  1. Today

    Preset shipped

    The whole look, in one call.

  2. Yesterday

    Docs written

  3. Monday

    First sketch

The whole look, in one call.
Link it after the core sheet.
One option: preset.
DraftLiveArchived
AL312GH

Using it

import { styles } from 'sitelo/ui'

head(
  title('My site'),
  styles({ preset: 'superneon' }),
)
// <link rel="stylesheet" href="/su/ui-c9428b65.css">
// <link rel="stylesheet" href="/su/superneon-5b0e7d21.css">

Paint the page with var(--su-sn-backdrop) for the preset’s ground with a violet light falling on it from the top, or with plain var(--su-bg). The headings use Geist when the page loads it, and the system face otherwise — the preset downloads nothing.

body {
  background: var(--su-sn-backdrop);
}

Your own colours

theme() still works on top, so a preset is a starting point rather than a fork. This one gives every palette two more slots, glow and glowEnd: the two ends of the gradient its rim and halo are drawn in. Nothing is read against a glow, so they can be as bright as you like.

head(
  styles({ preset: 'superneon' }),
  theme({
    primary: { glow: '#00e5ff', glowEnd: '#7f6bff' },
  }),
)