saturation/ui
DocsComponentsBlocksPages

Sections

IntroductionComponentsInstallationTheming

Components

ComponentsAccordionAI Chat InputAlertAnimated GroupAnimated NumberAvatarBadgeBorder TrailBreadcrumbButtonButton GroupCalendar PickerCardChartCheckboxCollapsibleComboboxCommandContext MenuCredit CardData TableDate PickerDialogDropdown MenuEmptyFieldFiltersFull CalendarGlow EffectInputInput GroupInput OTPItemKanbanKbdMenubarNovel EditorPaginationProgressProgressive BlurRadio GroupSelectSeparatorSheetSkeletonSliderSonnerSpinnerSpotlightSwitchTableTabsText EffectText ShimmerTextareaToggleToggle GroupTreeTypography
Docs/Theming

Theming

Customize colors, fonts, and spacing to match your brand.

Color System

Saturation UI uses the oklch() color space for perceptually uniform colors. All theme tokens are defined as CSS custom properties in globals.css.

Light Mode

:root {
  --primary: oklch(0.468 0.194 263.5);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.92 0.004 286.32);
  --muted: oklch(0.967 0.001 286.375);
  --accent: oklch(0.967 0.001 286.375);
  --destructive: oklch(0.577 0.245 27.325);
}

Dark Mode

.dark {
  --primary: oklch(0.512 0.211 263.5);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.274 0.006 286.033);
  --muted: oklch(0.21 0.006 285.885);
  --accent: oklch(0.274 0.006 286.033);
  --destructive: oklch(0.577 0.245 27.325);
}

Customizing Colors

Override any CSS variable in your globals.css to match your brand:

:root {
  --primary: oklch(0.6 0.2 150); /* Your brand color */
  --primary-foreground: oklch(1 0 0);
}

All components automatically pick up your custom colors through Tailwind's theme system.

Typography

Saturation UI uses Inter as the default sans-serif font. To change fonts, update your root layout:

import { YourFont } from "next/font/google"

const font = YourFont({
  subsets: ["latin"],
  variable: "--font-sans",
})

Then update the --font-sans variable in globals.css:

:root {
  --font-sans: var(--font-your-font), ui-sans-serif, system-ui, sans-serif;
}

Border Radius

The global border radius is controlled by the --radius variable:

:root {
  --radius: 0.8rem; /* Default */
}

Components use computed values like rounded-md (which maps to calc(var(--radius) - 2px)).

On This Page

  • Color System
  • Light Mode
  • Dark Mode
  • Customizing Colors
  • Typography
  • Border Radius