Tokens
Colors, roughness, stroke weights, and CSS custom properties for light and dark themes.
Theming
Import @sketchpad/tokens/tokens.css once. System dark mode works automatically via prefers-color-scheme.
import '@sketchpad/tokens/tokens.css';
import { getThemeInitScript } from '@sketchpad/tokens';
import { ThemeProvider, ThemeToggle } from 'sketchpad-ui';
// In root layout <head> (before React):
// <script dangerouslySetInnerHTML={{ __html: getThemeInitScript() }} />
export default function App({ children }) {
return (
<ThemeProvider defaultTheme="system">
<ThemeToggle />
{children}
</ThemeProvider>
);
}Manual overrides set data-sk-theme="light" or "dark" on <html>. Use the sidebar toggle to try it on this site.
Contrast
Light ink on paper: 17.2:1 (WCAG AA pass)
Dark ink on paper: 19.0:1 (WCAG AA pass)
pencil is intentionally low-contrast. Use for placeholders and disabled states only.
Colors
paper
#FAFAFA#0A0A0ApaperAlt
#F5F5F5#141414paperBright
#FFFFFF#1A1A1Aink
#171717#FAFAFAinkSoft
#525252#A3A3A3pencil
#A3A3A3#737373disabled
#D4D4D4#525252backdrop
rgba(0, 0, 0, 0.45)rgba(0, 0, 0, 0.72)accentYellow
#E5E5E5#3A3A3AaccentBlue
#D4D4D4#454545accentRed
#737373#D4D4D4accentGreen
#DBDBDB#404040accentLavender
#E0E0E0#474747CSS variables
All color tokens are available as custom properties, e.g. var(--sk-colors-paper).
paper
var(--sk-colors-paper)paperAlt
var(--sk-colors-paperAlt)paperBright
var(--sk-colors-paperBright)ink
var(--sk-colors-ink)inkSoft
var(--sk-colors-inkSoft)pencil
var(--sk-colors-pencil)disabled
var(--sk-colors-disabled)backdrop
var(--sk-colors-backdrop)accentYellow
var(--sk-colors-accentYellow)accentBlue
var(--sk-colors-accentBlue)accentRed
var(--sk-colors-accentRed)accentGreen
var(--sk-colors-accentGreen)accentLavender
var(--sk-colors-accentLavender)Roughness
{
"subtle": 0.35,
"low": 0.5,
"medium": 0.85,
"high": 1.4
}