MiHCM
layout/@mihcm/ui·v0.21.0·stable

PageShell

Application layout scaffold: TopBar on top, Main Sidebar on desktop, mobile bottom-menu anchor, TitleBar + scrollable content on the right. Web only.

Full MiHCM Security shell

MiHCM
Yashi
User AdministrationSecurity & Permissions
6
Active Roles
13,283
Total Users
16
Modules
import { PageShell } from '@mihcm/ui/PageShell';
import { TopBar, TopBarLogo } from '@mihcm/ui/TopBar';
import { MainSidebar } from '@mihcm/ui/MainSidebar';
import { TitleBar } from '@mihcm/ui/TitleBar';
import { StatCard } from '@mihcm/ui/StatCard';
import { Avatar, AvatarFallback, AvatarImage } from '@mihcm/ui/Avatar';
 
<PageShell
  topBar={
    <TopBar
      start={<TopBarLogo />}
      end={
        <Avatar size="sm">
          <AvatarImage src="/people/alex-kim.svg" alt="Yashi" />
          <AvatarFallback>YA</AvatarFallback>
        </Avatar>
      }
    />
  }
  sidebar={<MainSidebar items={SIDEBAR_ITEMS} activeKey={active} onItemSelect={setActive} />}
  titleBar={
    <TitleBar icon={<Shield />} supertitle="User Administration" title="Security & Permissions" />
  }
>
  <div className="grid grid-cols-1 gap-3 sm:grid-cols-3">
    <StatCard tone="primary" value="6" label="Active Roles" />
    <StatCard tone="accent" value="13,283" label="Total Users" />
    <StatCard tone="success" value="16" label="Modules" />
  </div>
</PageShell>;

Without a sidebar

MiHCM
Yashi
Settings

Page content goes here.

<PageShell
  topBar={
    <TopBar
      start={<TopBarLogo />}
      end={
        <Avatar>
          <AvatarImage src="/people/alex-kim.svg" alt="Yashi" />
          <AvatarFallback>YA</AvatarFallback>
        </Avatar>
      }
    />
  }
  titleBar={<TitleBar title="Settings" />}
>
  {/* content */}
</PageShell>

Just the content (no shell chrome)

For an embed inside another app shell, skip PageShell entirely and use the inner primitives directly.