Theme Config
Type: FluiKitThemeConfig.
Common properties
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
preset | "default" | "tailadmin" | "shadcn" | "custom" | No | "default" | Theme preset. default/tailadmin/custom are concrete Tailwind class sets (custom starts empty); shadcn extends default with overrides for a few slots (tableWrapper, modal, input). |
engine | "tailwind" | No | "tailwind" | Theme engine. Currently the only supported value. |
classNameMergeStrategy | "merge" | "override" | No | "merge" | merge concatenates preset and schema classes per slot (does not dedupe conflicting Tailwind utilities). override replaces the preset's class for a slot only when the schema defines that slot — slots the schema doesn't specify still use the preset's classes. |
colorMode | "inherit" | "light" | "dark" | No | "inherit" | Only the root slot receives an explicit class from this (dark for "dark", fluikit-light for "light", nothing for "inherit"). Other slots must rely on Tailwind dark: variants baked into the preset or surrounding DOM context. |
classNames | FluiKitClassNameSlots | No | preset defaults | Slot class map — see "Class name slots" below. |
classNameWhen | FluiKitClassNameCondition[] | No | - | Conditional class rules. |
variants | Record<string, Record<string, string>> | No | - | Variant class map. Core components only read the actionButton group out of the box (keys: default, primary, secondary, danger, ghost, matching action.variant). Other variant groups are available to custom renderers/adapters via resolveThemeVariant() but aren't consumed by core components. |
classNameResolver | string | No | - | Registry resolver key. |
Class name slots
FluiKitClassNameSlots accepts these keys: root, layout, toolbar, search, filter, table, tableWrapper, tableHeader, tableBody, tableRow, tableCell, form, fieldWrapper, label, input, error, modal, drawer, page, actionButton, emptyState, loadingState.
Example
TS
theme: {
preset: "tailadmin",
colorMode: "inherit",
classNames: {
tableWrapper: "shadow-sm",
actionButton: "whitespace-nowrap"
}
}Runtime helpers
TS
import {
getThemePreset,
resolveThemeClassName,
resolveThemeConfig,
resolveThemeVariant
} from "@vibeflui/core";