App Shells
Full application shell layouts — collapsible sidebars, dashboard shells, split panes, and command palette wrappers.
App Shell
Full application shell with collapsible sidebar, header actions, mobile drawer, and nested navigation sections.
Dashboard
Welcome back, Alice. Here's what's happening.
import { AppShell } from "@launchapp/design-system/blocks/layout";const navSections = [ { title: "Main", items: [ { label: "Dashboard", href: "/dashboard", isActive: true }, { label: "Analytics", href: "/analytics" }, { label: "Projects", href: "/projects", badge: "3" }, ], }, { title: "Settings", items: [ { label: "Profile", href: "/settings/profile" }, { label: "Billing", href: "/settings/billing" }, ], },];export default function Page() { return ( <AppShell navSections={navSections} user={{ name: "Alice Johnson", email: "alice@example.com", avatarFallback: "AJ" }} collapsible > <div className="p-6">Page content goes here</div> </AppShell> );}Dashboard Layout
Dashboard layout with optional sticky header and 1–3 column arrangements for side panels and main content.
Main Content
Charts and data tables go here.
import { DashboardLayout } from "@launchapp/design-system/blocks/layout";export default function Page() { return ( <DashboardLayout columns={2} header={<div className="px-6 py-3 border-b">Header</div>} leftPanel={<aside className="p-4 border-r">Side panel</aside>} > <div className="p-6">Main content</div> </DashboardLayout> );}Command Palette Shell
App shell with a built-in ⌘K command palette for quick navigation, actions, and search.
Command Palette Shell wraps your app with a ⌘K accessible command palette.
import { CommandPaletteShell } from "@launchapp/design-system/blocks/layout";const groups = [ { id: "navigation", label: "Navigation", actions: [ { id: "dashboard", label: "Dashboard", href: "#", shortcut: "D" }, { id: "settings", label: "Settings", href: "#", shortcut: "S" }, ], },];export default function Page() { return ( <CommandPaletteShell groups={groups} triggerShortcut="k"> <div className="p-6">Press ⌘K to open palette</div> </CommandPaletteShell> );}Split Pane Layout
Resizable split-pane layout supporting horizontal and vertical orientations, with configurable panel sizes.
File tree, navigation, or secondary content.
Primary content, editor, or detail view.
import { SplitPaneLayout } from "@launchapp/design-system/blocks/layout";export default function Page() { return ( <SplitPaneLayout orientation="horizontal" primaryPanel={<div className="p-4 h-full bg-muted/30">Primary panel</div>} secondaryPanel={<div className="p-4 h-full">Secondary panel</div>} defaultSplit={60} /> );}Multi Panel Layout
Flexible multi-panel application layout with configurable pane arrangement.
import { MultiPanelLayout } from "@launchapp/design-system/blocks/layout";export default function Page() { return ( <div className="h-[480px]"> <MultiPanelLayout leftPanel={<div className="p-4 h-full bg-muted/30">Navigation / File Tree</div>} mainPanel={<div className="p-4 h-full">Editor / Main Content</div>} rightPanel={<div className="p-4 h-full bg-muted/20">Inspector / Properties</div>} /> </div> );}Layout Empty State
Centered empty state with variant presets (default, search, error, inbox, folder), icon, title, description, and action buttons.
No files yet
Upload your first file to get started.
import { EmptyState } from "@launchapp/design-system/blocks/layout";export default function Page() { return ( <EmptyState variant="folder" title="No files yet" description="Upload your first file to get started." action={{ label: "Upload file", onClick: () => console.log("upload") }} secondaryAction={{ label: "Learn more", onClick: () => console.log("learn") }} /> );}Multi Panel Layout
Three-column layout with configurable left, center, and right panels and optional header.
import { MultiPanelLayout } from "@launchapp/design-system/blocks/layout";export default function Page() { return ( <MultiPanelLayout leftPanel={<div className="p-4">Navigation</div>} centerPanel={<div className="p-4">Main Content</div>} rightPanel={<div className="p-4">Details</div>} /> );}