Detail Layout
Detail layout controls the read-only surface opened by view/detail actions.
Basic detail config
TS
export const usersSchema = {
resource: "users",
detail: {
enabled: true,
mode: "modal",
title: "User Detail",
width: "3xl",
grid: {
columns: {
base: 1,
md: 2
}
},
fields: [
{ key: "name", label: "Name" },
{ key: "email", label: "Email" },
{ key: "role.name", label: "Role" },
{ key: "status", label: "Status", renderer: "StatusBadge" }
]
},
registry: {
renderers: ["StatusBadge"]
}
} as const;Defaults
| Property | Default |
|---|---|
detail.enabled | true |
detail.mode | modal |
detail.title | Detail |
detail.grid.columns | 2 |
detail.width fallback | max-w-3xl |
Detail fields fallback
When detail.fields is missing:
- VibeFlui derives detail fields from
table.columnswhen table columns exist. - Otherwise, VibeFlui derives detail fields from
form.fields.
Hidden table columns are skipped. Hidden, hidden-input, and password form fields are skipped.
Value formatting
- Empty values render as
-. - Boolean values render as
YesorNo. - Object values render as formatted JSON.
rendererresolves fromregistry.renderers.