AppChrome
@randall-enterprises/ui/components/app-chrome/app-chromeThe app shell: sidebar nav, header, mobile tab bar, More sheet. Nav data, pathname and link component come from the app. Pinned to the viewport, so it runs in its own frame here.
Props (19)
children *ReactNodegroups *NavGroup[]secondaryNavItem[]Footer utility links, e.g. Trash and Passkeys.tabItems *NavItem[]Columns in the mobile tab bar, in order. Seven at most.moreItemsNavItem[]Rows the More sheet adds beyond `groups` and `secondary`.pathname *stringThe current pathname. Required: the shell renders the active row from it,isSelfScrollingRoute(pathname: string) => booleanRoutes whose page owns its own scroller. Default: none scroll themselves,isBareRoute(pathname: string) => booleanRoutes that render with no chrome at all (login, standalone views).titleFallbackstringTab title when no nav row matches the pathname.backdropReactNodeBehind everything, full app height. The console's wallpaper canvas.brandReactNodeThe sidebar's top row: the org/brand menu trigger and its dropdown.userReactNodeThe sidebar's bottom row: who is signed in.sidebarExtraReactNodeRows under the group list — the console's recent tickets.footerControls(controlClassName: string) => ReactNodeThe More sheet's control row — theme toggle, bug report, update, offline.tabBarActionReactNodeThe tab bar's trailing action. The console's search trigger.breadcrumbToolbarReactNodeThe breadcrumb bar's right-hand slot, for page actions.railReactNodeA full-height panel beside the page column. The console's chat rail.railOpenbooleanWhether `rail` is open. The page gutter tightens on it viaoverlaysReactNodeDialogs and other portals mounted once per app.