Tile UI · SolidJS

Theming

Configure Tile UI semantic variables, SolidStart global styles, dark mode, and scoped themes.

Tile UI Solid reads the same semantic CSS variables as the React and Vue packages. Import the global style entry once, then override variables at the application or subtree level.

Style entries

Entry Purpose
tokens.scss Tile-specific extension tokens only
theme.scss Extension tokens plus optional light and dark defaults
reset.scss Optional document reset and base styles
globals.scss Theme and reset together

SolidStart setup

import '@tile-ui/styles/scss/globals.scss';

Import this from src/app.tsx so server rendering and hydration receive the same styles.

Existing shadcn themes

When the application already defines shadcn semantic variables, import only Tile extension tokens:

import '@tile-ui/styles/scss/tokens.scss';
import './app.scss';

Scoped themes

Custom properties inherit, so themes can be limited to a Solid subtree:

.solid-workspace {
	--primary: oklch(0.56 0.15 70);
	--primary-foreground: white;
	--radius: 0.8rem;
}

Dark mode

Apply .dark or [data-theme='dark'] to html. Dialog portals mount under the document body and inherit variables from the root element.

Contrast and AA small-text

Tile ships the canonical shadcn palette unchanged. A few native token combinations fall slightly below the WCAG AA small-text threshold (4.5:1): --destructive text on white or #fafafa (3.60–3.76:1), --destructive-foreground on --destructive (3.60:1), and --muted-foreground on --muted (4.39:1). These are upstream shadcn tradeoffs kept for palette parity.

The accessibility browser check acknowledges exactly those verified (app, route, pair) combinations through an explicit allowlist and never blanket-skips contrast. For strict AA compliance, override the affected tokens, for example --muted-foreground: oklch(0.5 0 0) or --destructive-foreground: #ffffff.