<base-shell> is the unified Pro application shell. Use mode="page" for marketing/content sites (hamburger push drawer under 991px, optional footer) or mode="dashboard" for admin apps (expanded / mini / mobile rail). Project header, sidebar, content, and an optional footer; put <router-outlet> in content.
Unlock it plus 85 pro blocks, widgets & layouts — $99 one-time. Lifetime updates, 14-day money-back guarantee.
Switch product mode, then open panels or collapse the rail. Force mobile chrome with the viewport buttons to preview push/drawer behavior inside the frame.
Header, content, and footer push together when a sidebar opens. Only one side may be open at a time.
Page mode uses a 991px cutoff and push panels (mutex left/right). Dashboard mode uses 1080px / 1360px for mobile / mini / expanded, with [(collapsed)], [width], and [miniWidth]. Force chrome with layout (auto | mobile | desktop) for demos.
mode="page" — marketing sites, docs articles, optional site footer.mode="dashboard" — admin apps with persistent icon navigation.<base-sidenav> for simple docs hubs, <base-scroll-nav> for on-page TOC shells, and <base-page-main> for header/body/footer page frames. Run the following command to add this shell to your project:
npx base-ui-cli add shell
Base UI provides standalone components. Import the exact elements you want to use into your component.
import { ShellComponent, ShellContentComponent, ShellFooterComponent, ShellHeaderComponent, ShellNavComponent, ShellNavItemComponent, ShellSidebarComponent, ShellToggleComponent } from '@lussos/base-ui';
@Component({
selector: 'app-your-component',
imports: [
ShellComponent,
ShellContentComponent,
ShellFooterComponent,
ShellHeaderComponent,
ShellNavComponent,
ShellNavItemComponent,
ShellSidebarComponent,
ShellToggleComponent
],
template: `...`
})
export class YourComponent {} Properties for shell — generated from JSDoc in the library source.
| Selector | Property | Type | Default | Description |
|---|---|---|---|---|
a[base-shell-nav-item], button[base-shell-nav-item], base-shell-nav-item | class | string | '' | Extra host classes merged via `cn()`. |
a[base-shell-nav-item], button[base-shell-nav-item], base-shell-nav-item | icon | string | '' | Icon sprite name rendered before the label. |
base-shell | class | string | '' | Extra host classes merged via `cn()`. |
base-shell | mode | ShellMode | 'page' | Product mode. `page` = marketing push-drawer under 991px (no mini). `dashboard` = expanded / mini / mobile rail. |
base-shell | layout | ShellLayoutMode | 'auto' | Force chrome for demos. `auto` follows breakpoints for the active mode. |
base-shell | width | number | 280 | Dashboard expanded rail width in px. |
base-shell | miniWidth | number | 76 | Dashboard mini rail width in px. |
base-shell | collapsed | boolean | false | Start dashboard in mini (icons-only) rail. Two-way bindable. |
base-shell | (collapsedChange) | boolean | — | Emits when dashboard collapsed state changes. |
base-shell-content | — | — | — | Scrollable main area for `base-shell`. Place `<router-outlet>` here. In page mode the parent column scrolls (with footer); in dashboard mode this host scrolls. |
base-shell-content | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-footer | — | — | — | Optional footer slot for `base-shell`. Typically used in page mode. |
base-shell-footer | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-header | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-header | showCollapseToggle | boolean | true | Show the dashboard collapse/expand control (left edge, next to the sidebar). |
base-shell-header | showMenuToggle | boolean | true | Show the built-in hamburger (dashboard mobile, or page under 991px when enabled). |
base-shell-nav | — | — | — | Navigation list container for `base-shell-sidebar`. |
base-shell-nav | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-sidebar | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-sidebar | side | ShellSide | 'left' | Edge for page-mode panels. Dashboard mode always uses the left rail. |
base-shell-sidebar | width | number | 280 | Panel / rail width in px (page panel or dashboard expanded width). |
base-shell-toggle | class | string | '' | Extra host classes merged via `cn()`. |
base-shell-toggle | side | ShellSide | 'left' | Which panel this toggle opens. |
On this page
Customize your UI instantly.
Copy these styles to paste into your project's global CSS and Tailwind config.