Class Name Slots
Class name slots are named surfaces that core renderers pass through resolveThemeClassName().
Slots
| Slot | Used by |
|---|---|
root | Root FluiKit wrapper. |
layout | Header/toolbar layout. |
toolbar | Toolbar action container. |
search | Table search input. |
filter | Table filter controls. |
tableWrapper | Table outer wrapper. |
table | Table element. |
tableHeader | Table head. |
tableBody | Table body. |
tableRow | Table row. Receives row context. |
tableCell | Table cell. Receives row and column context. |
form | Form element. |
fieldWrapper | Field frame wrapper. |
label | Field label. |
input | Native field controls. |
error | Field validation error text. |
modal | Modal surface. |
drawer | Drawer surface. |
page | Page-mode form/detail surface. |
actionButton | Action buttons. |
emptyState | Empty table state. |
loadingState | Loading 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.