VVibeFlui

Theme Config

Type: FluiKitThemeConfig.

Common properties

PropertyTypeRequiredDefaultDescription
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.
classNamesFluiKitClassNameSlotsNopreset defaultsSlot class map — see "Class name slots" below.
classNameWhenFluiKitClassNameCondition[]No-Conditional class rules.
variantsRecord<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.
classNameResolverstringNo-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";