Skip to main content

Panel frame and navigation are separate

shell_layout selects classic (default) or inset. Classic uses the ordinary panel frame. Inset removes the sidebar’s separating edge and places the main surface inside an inset rounded frame on desktop. Narrow screens use the compact native layout without the desktop outside gutter. Both shells work with Sidebar, Topbar, and Sidebar + topbar. Shell choice does not enable navigation, grant resource access or override navigation(false). Override panel layout (customize_layout, default false) controls whether the saved navigation selection replaces the native panel configuration. The UI-only key layout_variant is not a portable setting. Configure the real keys above. Top navigation always requires its topbar.
Set customize_layout to false to let native topNavigation() / topbar() choose navigation again. The shell remains an independent preference.

Desktop sidebar

The editor offers these three choices. There is no Auto tile. The stored/PHP default sidebar_collapse: 'inherit' remains supported and derives the visible choice from the native panel flags. It does not mean that Filament always defaults to icon collapse. Reset Layout restores inheritance. Saving an explicit mode applies its initial expanded/collapsed state. Normal subsequent toggle interactions remain native. The choices only apply when the panel has a desktop sidebar; top navigation hides them. Mobile retains its native drawer and trigger.
sidebar_groups_collapsible accepts true, false, or null (default: inherit native collapsibleNavigationGroups()). An individual native group with collapsible(false) remains fixed. Native sidebar widths and navigation/resource permissions stay in your application PHP. breadcrumbs accepts true, false, or null (default: inherit the panel). Turning it on permits the breadcrumbs each Page supplies; it does not invent a breadcrumb trail for pages that have none. Native navigation-hierarchy settings are retained.

Content width

max_content_width accepts inherit (default), lg, xl, 2xl, 3xl, 4xl, 5xl, 6xl, 7xl, or full. It sets the panel’s default content bound. An explicit width on a particular Page wins over that panel default. Top chrome and page-header dividers remain full width; bounded body content does not shrink the entire toolbar. This works in Classic and Inset.
For a complete Page declaration:
Theme Settings itself declares Width::SixExtraLarge for its content. It remains bounded even if other pages use the panel’s Full width default.

User menu

user_menu_enabled accepts true, false, or null (default: inherit). user_menu_position accepts inherit (default), topbar, or sidebar. The position picker appears only when the menu is enabled, and unavailable locations are disabled. A missing location falls back to the native viable one. These preferences never re-enable a menu denied by the native panel’s userMenu(false) or authorization closure.

Sticky topbar and density

The sticky control is shown only when the current/draft layout has a standalone topbar. Combined sidebar/header layouts keep their own native positioning. Page spacing and table row height are independent.
The dedicated stickyTopbar() override locks the editor and takes precedence over the matching general preference override. Save layout changes before judging the resulting navigation structure.