Multi-Resource Layout
Use resources[] to compose multiple resource schemas under one parent schema.
Tabbed resources
When resources[] exists and layout.type is not "sections" or "page", VibeFlui renders child resources as tabs.
TS
export const adminSchema = {
resource: "admin",
title: "Admin Workspace",
layout: {
type: "tabs"
},
resources: [
{
resource: "roles",
title: "Roles",
table: {
columns: ["name", "description"]
}
},
{
resource: "permissions",
title: "Permissions",
mode: "readonly",
table: {
columns: ["key", "label", "group"]
}
}
]
} as const;The tab labels come from each child resource's title, then resource, then Resource {index}.
Stacked resources
Use layout.type: "sections" or layout.type: "page" to stack child resources.
TS
export const adminSchema = {
resource: "admin",
title: "Admin Workspace",
layout: {
type: "sections"
},
resources: [
{ resource: "roles", title: "Roles", table: { columns: ["name"] } },
{ resource: "permissions", title: "Permissions", table: { columns: ["key"] } }
]
} as const;Each child resource renders in its own section. The child resource is rendered by a nested <FluiKit schema={child} />.
Important runtime note
For multi-resource layout, VibeFlui currently uses resources[] to build tabs. layout.tabs metadata is used by form tabs, not by child-resource tab labels.