Docs
Theming
Theming
Customize KtUI with CSS variables for light and dark mode theming.
CSS Variables
KtUI uses CSS variables and Tailwind utilities for global theming, supporting light and dark modes with semantic
classes like .kt-btn
and .kt-card
. This keeps your HTML clean and reduces Tailwind class clutter.
Basic Usage
Apply themes using semantic classes or Tailwind utilities:
<div class="bg-background text-foreground p-4 rounded-lg">
Themed Component
</div>
Theming Convention
KtUI follows a background/foreground convention inspired by Shadcn:
- Background: Sets the component's background (e.g.,
bg-primary
). - Foreground: Sets text/icon color (e.g.,
text-primary-foreground
).
Example
With these variables:
:root {
--background: oklch(1 0 0); /* White */
--foreground: oklch(14.1% 0.005 285.823); /* Zinc-950 */
--primary: oklch(62.3% 0.214 259.815); /* Blue-500 */
--primary-foreground: oklch(1 0 0); /* White */
}
Style a button:
<button class="kt-btn kt-btn-outline text-primary">
Outline button
</button>
Colors
Key colors variables for theming:
:root {
--background: oklch(1 0 0); /* White */
--foreground: oklch(14.1% 0.005 285.823); /* Zinc-950 */
--card: oklch(1 0 0);
--card-foreground: oklch(14.1% 0.005 285.823);
--primary: oklch(62.3% 0.214 259.815); /* Blue-500 */
--primary-foreground: oklch(1 0 0);
--secondary: oklch(96.7% 0.003 264.542); /* Zinc-100 */
--secondary-foreground: oklch(21% 0.006 285.885);
--muted: oklch(96.7% 0.003 264.542);
--muted-foreground: oklch(55.2% 0.016 285.938);
--destructive: oklch(57.7% 0.245 27.325); /* Red-600 */
--destructive-foreground: oklch(1 0 0);
--border: oklch(94% 0.004 286.32); /* Zinc-100/200 */
--input: oklch(92% 0.004 286.32);
--ring: oklch(87.1% 0.006 286.286);
--radius: 0.5rem;
}
.dark {
--background: oklch(14.1% 0.005 285.823); /* Zinc-950 */
--foreground: oklch(98.5% 0 0); /* Zinc-50 */
--card: oklch(14.1% 0.005 285.823);
--card-foreground: oklch(98.5% 0 0);
--primary: oklch(54.6% 0.245 262.881); /* Blue-600 */
--primary-foreground: oklch(1 0 0);
--secondary: oklch(27.4% 0.006 286.033); /* Zinc-800 */
--secondary-foreground: oklch(98.5% 0 0);
--muted: oklch(21% 0.006 285.885); /* Zinc-900 */
--muted-foreground: oklch(55.2% 0.016 285.938);
--destructive: oklch(57.7% 0.245 27.325);
--destructive-foreground: oklch(1 0 0);
--border: oklch(27.4% 0.006 286.033);
--input: oklch(27.4% 0.006 286.033);
--ring: oklch(27.4% 0.006 286.033);
}
Adding Custom Colors
To add new colors, define them in your CSS and Tailwind config:
:root {
--warning: oklch(85.2% 0.199 91.936); /* Yellow-400 */
--warning-foreground: oklch(0.28 0.07 46); /* White */
}
.dark {
--warning: oklch(79.5% 0.184 86.047); /* Yellow-400 */
--warning-foreground: oklch(0.28 0.07 46);
}
@theme inline {
--color-warning: var(--warning);
--color-warning-foreground: var(--warning-foreground);
}
For more on Tailwind colors, see the Tailwind CSS documentation.