VVibeFlui

Class Name Slots

Class name slots are named surfaces that core renderers pass through resolveThemeClassName().

Slots

SlotUsed by
rootRoot FluiKit wrapper.
layoutHeader/toolbar layout.
toolbarToolbar action container.
searchTable search input.
filterTable filter controls.
tableWrapperTable outer wrapper.
tableTable element.
tableHeaderTable head.
tableBodyTable body.
tableRowTable row. Receives row context.
tableCellTable cell. Receives row and column context.
formForm element.
fieldWrapperField frame wrapper.
labelField label.
inputNative field controls.
errorField validation error text.
modalModal surface.
drawerDrawer surface.
pagePage-mode form/detail surface.
actionButtonAction buttons.
emptyStateEmpty table state.
loadingStateLoading table state.

Example

TS
theme: {
  classNames: {
    tableWrapper: "border border-gray-200 shadow-sm",
    tableRow: "transition-colors",
    tableCell: "align-middle",
    actionButton: "whitespace-nowrap"
  }
}

Field-level classes

field.className is passed to the fieldWrapper slot. Native controls use the input slot.

TS
form: {
  fields: [
    { name: "email", label: "Email", type: "email", className: "md:col-span-2" }
  ]
}

Table column classes

The core table renderer applies column.cellClassName to the tableCell slot. column.headerClassName is applied directly to that column's <th>, but it is not a theme class name slot — it does not merge with tableHeader or react to classNameWhen/classNameResolver. Other column class metadata (plain className, classNameWhen at the column level) may be used by custom renderers or adapters, but the core renderer does not apply them. See Columns.