Skip to content

Theming API ​

Complete API reference for programmatic theme creation.

Overview ​

The Theming API allows you to programmatically create and manage themes using a fluent builder pattern.

Import ​

typescript
import { ThemeBuilder } from '@tokiforge/core';

ThemeBuilder ​

Creating a Theme ​

typescript
const theme = new ThemeBuilder('dark')
  .addToken('color.primary', '#7C3AED')
  .addToken('color.background', '#1a1a1a', { type: 'color' })
  .build();

Adding Multiple Tokens ​

typescript
const theme = new ThemeBuilder('light')
  .addTokens({
    'color.primary': '#7C3AED',
    'color.secondary': '#06B6D4',
    'spacing.base': '1rem',
    'spacing.md': '1.5rem',
  })
  .build();

Extending a Theme ​

typescript
const darkTheme = new ThemeBuilder('dark')
  .extend(lightTheme)
  .override({
    color: {
      background: { value: '#1a1a1a' },
    },
  })
  .build();

Overriding Tokens ​

typescript
const theme = new ThemeBuilder('custom')
  .addToken('color.primary', '#7C3AED')
  .override({
    color: {
      primary: { value: '#8B5CF6' },
    },
  })
  .build();

Static Methods ​

fromTokens() ​

Create a theme from existing tokens.

typescript
const theme = ThemeBuilder.fromTokens('light', lightTokens);

createVariant() ​

Create a theme variant from a base theme.

typescript
const darkTheme = ThemeBuilder.createVariant(lightTheme, 'dark', {
  color: {
    background: { value: '#1a1a1a' },
  },
});

createThemeConfig() ​

Create a theme config with multiple themes.

typescript
const config = ThemeBuilder.createThemeConfig(lightTheme, darkTheme, customTheme);

Examples ​

Complete Theme Creation ​

typescript
const lightTheme = new ThemeBuilder('light')
  .addToken('color.primary', '#7C3AED', { type: 'color' })
  .addToken('color.background', '#ffffff', { type: 'color' })
  .addTokens({
    'spacing.sm': '0.5rem',
    'spacing.md': '1rem',
    'spacing.lg': '2rem',
  })
  .build();

const darkTheme = new ThemeBuilder('dark')
  .extend(lightTheme)
  .override({
    color: {
      background: { value: '#1a1a1a' },
      text: { value: '#ffffff' },
    },
  })
  .build();

const config = ThemeBuilder.createThemeConfig(lightTheme, darkTheme);