Get License
Free
Pro

Shell

<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.

Proshell

Shell — part of Base UI Pro

Unlock it plus 85 pro blocks, widgets & layouts — $99 one-time. Lifetime updates, 14-day money-back guarantee.

Unlock Pro

Live demo

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.

Docs

Article

Header, content, and footer push together when a sidebar opens. Only one side may be open at a time.

Optional footer slot

HTML

Modes and sizing

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.

HTML

When to use

  • mode="page" — marketing sites, docs articles, optional site footer.
  • mode="dashboard" — admin apps with persistent icon navigation.
  • Free-tier alternatives: <base-sidenav> for simple docs hubs, <base-scroll-nav> for on-page TOC shells, and <base-page-main> for header/body/footer page frames.

Installation

Run the following command to add this shell to your project:

bash

npx base-ui-cli add shell

API Reference

Base UI provides standalone components. Import the exact elements you want to use into your component.

typescript (Example)

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.

API reference for shell
SelectorPropertyTypeDefaultDescription
a[base-shell-nav-item], button[base-shell-nav-item], base-shell-nav-itemclassstring''Extra host classes merged via `cn()`.
a[base-shell-nav-item], button[base-shell-nav-item], base-shell-nav-itemiconstring''Icon sprite name rendered before the label.
base-shellclassstring''Extra host classes merged via `cn()`.
base-shellmodeShellMode'page'Product mode. `page` = marketing push-drawer under 991px (no mini). `dashboard` = expanded / mini / mobile rail.
base-shelllayoutShellLayoutMode'auto'Force chrome for demos. `auto` follows breakpoints for the active mode.
base-shellwidthnumber280Dashboard expanded rail width in px.
base-shellminiWidthnumber76Dashboard mini rail width in px.
base-shellcollapsedbooleanfalseStart dashboard in mini (icons-only) rail. Two-way bindable.
base-shell(collapsedChange)booleanEmits when dashboard collapsed state changes.
base-shell-contentScrollable 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-contentclassstring''Extra host classes merged via `cn()`.
base-shell-footerOptional footer slot for `base-shell`. Typically used in page mode.
base-shell-footerclassstring''Extra host classes merged via `cn()`.
base-shell-headerclassstring''Extra host classes merged via `cn()`.
base-shell-headershowCollapseTogglebooleantrueShow the dashboard collapse/expand control (left edge, next to the sidebar).
base-shell-headershowMenuTogglebooleantrueShow the built-in hamburger (dashboard mobile, or page under 991px when enabled).
base-shell-navNavigation list container for `base-shell-sidebar`.
base-shell-navclassstring''Extra host classes merged via `cn()`.
base-shell-sidebarclassstring''Extra host classes merged via `cn()`.
base-shell-sidebarsideShellSide'left'Edge for page-mode panels. Dashboard mode always uses the left rail.
base-shell-sidebarwidthnumber280Panel / rail width in px (page panel or dashboard expanded width).
base-shell-toggleclassstring''Extra host classes merged via `cn()`.
base-shell-togglesideShellSide'left'Which panel this toggle opens.

Theme Customizer

Customize your UI instantly.

Primary Color

Border Radius

Background

Mode

Copy these styles to paste into your project's global CSS and Tailwind config.