Skip to content

Builder Functions

Builder functions create OutputConfig objects used in the outputs array of BuildConfig. Each builder returns a configured output ready to pass to dispersa.build().

Import from dispersa or dispersa/builders:

import { css, json, js, tailwind, ios, android } from 'dispersa'

All builders accept these options (from OutputConfig):

OptionTypeDescription
namestringUnique output identifier
filestring | FileFunctionOutput path; supports modifier key placeholders like {theme}, {density}
transformsTransform[]Per-output transforms
filtersFilter[]Per-output filters
hooksLifecycleHooksPer-output lifecycle hooks

Generates CSS custom properties.

css(config: CssBuilderConfig): OutputConfig
OptionTypeDefaultDescription
preset'bundle' | 'standalone' | 'modifier''bundle'Output preset
selectorstring | SelectorFunction':root'CSS selector
mediaQuerystring | MediaQueryFunctionMedia query wrapper
preserveReferencesbooleanfalseEmit var() for alias tokens
minifybooleanfalseMinify output
css({
name: 'tokens',
file: 'tokens.css',
preset: 'bundle',
selector: ':root',
transforms: [nameKebabCase(), colorToHex()],
})

Generates JSON token files.

json(config: JsonBuilderConfig): OutputConfig
OptionTypeDefaultDescription
preset'bundle' | 'standalone''standalone'Output preset
structure'flat' | 'nested''nested'Token structure
includeMetadatabooleanfalseInclude $type, $description, etc.
minifybooleanfalseMinify output
json({
name: 'tokens',
file: 'tokens.json',
structure: 'nested',
includeMetadata: true,
})

Generates JavaScript/TypeScript module exporting tokens.

js(config: JsBuilderConfig): OutputConfig
OptionTypeDefaultDescription
preset'bundle' | 'standalone''standalone'Output preset
structure'flat' | 'nested''nested'Token structure
moduleNamestring'tokens'Export name
generateHelperbooleanfalseGenerate getTokens(modifiers) helper
minifybooleanfalseMinify output
js({
name: 'tokens',
file: 'tokens.js',
moduleName: 'tokens',
generateHelper: true,
})

Generates Tailwind CSS theme configuration.

tailwind(config: TailwindBuilderConfig): OutputConfig

TailwindBuilderConfig (extends OutputConfig)

Section titled “TailwindBuilderConfig (extends OutputConfig)”
OptionTypeDefaultDescription
preset'bundle' | 'standalone''bundle'Output preset
includeImportbooleantruePrepend @import "tailwindcss"
namespacestring''Theme namespace for @theme namespace(...)
selectorstring | SelectorFunctionCSS selector for theme variants
mediaQuerystring | MediaQueryFunctionMedia query wrapper
minifybooleanfalseMinify output
tailwind({
name: 'tailwind',
file: 'theme.css',
includeImport: true,
namespace: 'ds',
})

Generates Swift code for SwiftUI.

ios(config: IosBuilderConfig): OutputConfig
OptionTypeDefaultDescription
preset'standalone''standalone'Output preset
accessLevel'public' | 'internal''public'Swift access modifier
structure'enum' | 'grouped''enum'Code structure
enumNamestring'DesignTokens'Custom enum name (enum mode)
extensionNamespacestring'DesignTokens'Namespace enum name (grouped mode)
colorSpace'sRGB' | 'displayP3''sRGB'Color space
swiftVersion'5.9' | '6.0''5.9'Swift language version
frozenbooleanfalse@frozen annotation for ABI stability
indentnumber4Spaces per indentation level
ios({
name: 'DesignTokens',
file: 'DesignTokens.swift',
accessLevel: 'public',
structure: 'enum',
})

Generates Kotlin code for Android.

android(config: AndroidBuilderConfig): OutputConfig

AndroidBuilderConfig (extends OutputConfig)

Section titled “AndroidBuilderConfig (extends OutputConfig)”
OptionTypeDefaultDescription
preset'standalone' | 'bundle''standalone'Output preset
packageNamestringKotlin package name (required)
objectNamestring'DesignTokens'Object/class name
structure'nested' | 'flat''nested'Token structure in output
colorFormat'argb_hex' | 'argb_float' | 'argb8' | 'argb_floats''argb_hex'Color format (argb8 and argb_floats are aliases)
colorSpace'sRGB' | 'displayP3''sRGB'Target color space
visibility'public' | 'internal'Visibility modifier (omitted by default; Kotlin defaults to public)
indentnumber4Spaces per indentation level
android({
name: 'DesignTokens',
file: 'DesignTokens.kt',
packageName: 'com.example.tokens',
objectName: 'DesignTokens',
structure: 'flat',
colorFormat: 'argb_hex',
})