Theme
Tune the docs palette, then copy a Tailwind v4 @theme block into src/tailwind.css. The live preview shows buttons, folder/underline/pills tabs, forms, and overlays as the brand color changes.
The docs remember your palette, radius, background, font, and density between visits. Light and dark mode are set separately. To share a setup, add it to the page link as query parameters, such as ?theme=nord&font=inter.
Using the selected preset
Every primary control below follows the hue, radius, and contrast.
Folder
Underline
Pills
Plan
Revenue
$48,295
September 2026
Now
Hue applied across primary controls.Next
Copy the @theme block.Done
Paste into src/tailwind.css.Headers use --ply-ring when focused.
Open this to see the ring follow the brand color.
Paste into src/tailwind.css. See Getting started for the rest of the Tailwind setup.
/* Paste into src/tailwind.css */
@import "tailwindcss";
@source "./**/*.{html,ts}";
@theme {
--font-sans: ui-sans-serif, system-ui, sans-serif;
--radius-lg: 0.5rem;
--radius-md: calc(var(--radius-lg) - 2px);
--radius-sm: calc(var(--radius-lg) - 4px);
--color-blue-50: rgb(239 246 255);
--color-blue-100: rgb(219 234 254);
--color-blue-200: rgb(191 219 254);
--color-blue-300: rgb(147 197 253);
--color-blue-400: rgb(96 165 250);
--color-blue-500: rgb(59 130 246);
--color-blue-600: rgb(37 99 235);
--color-blue-700: rgb(29 78 216);
--color-blue-800: rgb(30 64 175);
--color-blue-900: rgb(30 58 138);
--color-blue-950: rgb(23 37 84);
}
/* Semantic tokens. ply-ui.css reads --ply-brand / --ply-scale-* even when this file loads first. */
:root {
--ply-brand: rgb(37 99 235);
--ply-brand-hover: rgb(29 78 216);
--ply-brand-active: rgb(30 64 175);
--ply-primary: rgb(37 99 235);
--ply-primary-hover: rgb(29 78 216);
--ply-primary-active: rgb(30 64 175);
--ply-primary-foreground: #ffffff;
--ply-primary-soft: color-mix(in srgb, var(--ply-primary) 14%, transparent);
--ply-ring: rgb(37 99 235);
--ply-scale-50: rgb(239 246 255);
--ply-scale-100: rgb(219 234 254);
--ply-scale-200: rgb(191 219 254);
--ply-scale-300: rgb(147 197 253);
--ply-scale-400: rgb(96 165 250);
--ply-scale-500: rgb(59 130 246);
--ply-scale-600: rgb(37 99 235);
--ply-scale-700: rgb(29 78 216);
--ply-scale-800: rgb(30 64 175);
--ply-scale-900: rgb(30 58 138);
--ply-scale-950: rgb(23 37 84);
--ply-radius: 0.5rem;
--radius: var(--ply-radius);
--base-primary: var(--ply-primary);
--base-primary-hover: var(--ply-primary-hover);
--base-primary-active: var(--ply-primary-active);
--base-primary-foreground: var(--ply-primary-foreground);
--base-primary-soft: var(--ply-primary-soft);
--base-ring: var(--ply-ring);
--base-radius: var(--ply-radius);
}
Same wording as the canonical FAQ.
Open Theme Studio at https://ply-ui.com/theme/ or the docs customizer, pick a preset or hue, then copy the Tailwind v4 @theme block into src/tailwind.css. ply-ui.css points --ply-primary and Tailwind blue-* utilities at that palette (--ply-brand and --ply-scale-*). The live preview shows buttons, tabs, forms, and overlays together.
Yes — class-based dark mode on <html>, components pair light/dark classes (bg-white dark:bg-slate-800).
Node.js 22.22+ or 24.15+, a standalone Angular 22 app (Angular 19 is on the compat/angular-19 branch), Tailwind CSS 4, and the Angular CDK. No custom theme is required.