Skip to content

Design Kits

One call themes the whole app: colors, radius, shadows, spacing, typography, motion, and surfaces. Components only consume tokens.

Official kits

DesignCharacter
linearMinimal product UI. Cold greys, sparse shadows, airy spacing. Default.
glassSoft glass. Discrete blur, luminous edges.
editorialContent-first. Serif titles, low radius, almost no shadow.
softWarm and welcoming. Generous radius, gentle contrast.
playfulLively but not cartoon. Stronger accent, rounder, more dynamic motion.
ts
import { DESIGNS } from 'pomikit-ui'

DESIGNS.linear // DesignKit

Zero-config (no createTheme / plugin theme) resolves to linear.

createTheme and applyTheme

ts
import { createTheme, applyTheme, applyThemeOptions } from 'pomikit-ui'

const theme = createTheme({
  design: 'glass',
  accent: '#5B5FFF',
  mode: 'system',
})

applyTheme(theme)

// Or shortcuts:
applyThemeOptions({ design: 'editorial', accent: '#0A2540' })

Options

OptionTypeNotes
designThemeDesignlinear | glass | editorial | soft | playful
accentstringBrand accent hex
modeThemeModelight | dark | system
radiusThemeRadiusAxis override: sharp | soft | round
densityThemeDensitycompact | comfortable | spacious
motionThemeMotionnone | normal | expressive
elevationThemeElevationflat | soft | floating

Kits already set sensible axis defaults. Override axes only when you need a hybrid beyond the kit.

Via the plugin

ts
app.use(Pomikit, {
  theme: createTheme({ design: 'soft', accent: '#7C6AEF' }),
})

Passing a plain options object also works: theme: { design: 'playful' }.

Playground

Try kits and axes live on the Playground.