Skip to content

Theming

VUIII uses CSS custom properties (CSS variables) for theming. Override these variables to customize the appearance of components.

Basic Theming

Create a CSS file with your custom theme:

css
:root {
  /* Primary colors */
  --vuiii-color-primary: #3b82f6;
  --vuiii-color-primary-hover: #2563eb;
  --vuiii-color-primary-active: #1d4ed8;

  /* Text colors */
  --vuiii-color-text: #1f2937;
  --vuiii-color-text-secondary: #6b7280;
  --vuiii-color-text-muted: #9ca3af;

  /* Border radius */
  --vuiii-border-radius: 6px;
  --vuiii-border-radius-sm: 4px;
  --vuiii-border-radius-lg: 8px;
}

Import it after the VUIII styles:

typescript
import 'vuiii/style.css'
import './my-theme.css'

Dark Mode

VUIII supports dark mode through CSS custom properties. Define dark mode overrides:

css
@media (prefers-color-scheme: dark) {
  :root {
    --vuiii-color-text: #f9fafb;
    --vuiii-color-text-secondary: #d1d5db;
    --vuiii-color-background: #111827;
    --vuiii-color-background-soft: #1f2937;
  }
}

Or with a class-based approach:

css
.dark {
  --vuiii-color-text: #f9fafb;
  --vuiii-color-text-secondary: #d1d5db;
  --vuiii-color-background: #111827;
  --vuiii-color-background-soft: #1f2937;
}

Component-Specific Tokens

Each component has its own set of tokens. For example, buttons:

css
:root {
  /* Button sizes */
  --vuiii-button-height-small: 28px;
  --vuiii-button-height-normal: 36px;
  --vuiii-button-height-large: 44px;

  /* Button padding */
  --vuiii-button-padding-x-small: 12px;
  --vuiii-button-padding-x-normal: 16px;
  --vuiii-button-padding-x-large: 20px;
}

See the Design Tokens section for a complete reference of all available CSS variables.

Released under the MIT License.