/** * Shell — workspace-scale React chrome that ties the product framework to a * router. Lifts the previously app-local providers / route gates into the * published package so every customer app gets the same behaviour. * * Requires `react-router` (optional peer dependency on * `@exxatdesignux/ui`). Customer apps that use a different router can * vendor these components and adapt the router primitives. */ export { ProductProvider, syncActiveProductThemeFromStore, useProduct, type Product, type ProductProviderProps, } from "./product-context" export { ProductAuthoringProvider, useProductAuthoringEnabled, resolveProductAuthoring, getProductAuthoringRole, type ProductAuthoringProviderProps, type ProductAuthoringRole, } from "./product-authoring-context" export { ProductRootGate, type ProductRootGateProps, } from "./product-root-gate" export { DefaultProductRedirect, type DefaultProductRedirectProps, } from "./default-product-redirect" export { ProductRouteSync, useProductDashboardHref, useProductOrganizationSettingsHref, useProductSwitch, } from "./product-route-sync" export { AppShellSlotsProvider, useAppShellSlots, type AppShellCallbacks, type AppShellData, type AppShellRoutePolicy, type AppShellSlots, type AppShellSlotsProviderProps, type AppShellSlotsValue, type NotificationsSlotProps, type ProductLogoSlotProps, type ProductLogoSlotVariant, type ProductMarkSlotProps, type ScopeSwitcherMenuSlotProps, type SecondaryPanelCloseTarget, type SecondaryPanelSpec, type ShellNav, type ShellProductEntry, type ShellScope, type ShellScopeParent, type SidebarDrillInPanelSpec, } from "./app-shell-slots" export type { NavDrillInConfig, NavLinkItem, NavPrimaryLayout, NavSecondaryItem, NavSection, NavUserIdentity, } from "./nav-render-types" export { createNavActiveState, type NavActiveRow, type NavActiveState, type NavActiveStateOptions, type NavRowActiveOverride, } from "../../lib/nav-active-state" // The sidebar itself. Everything above is the plumbing it reads; these are the // components an app mounts. Per-file subpaths (`.../components/shell/app-sidebar`) // stay available for apps that want to skip the barrel. export * from "./app-sidebar" export * from "./app-sidebar-dynamic" export * from "./sidebar-shell" export * from "./sidebar-auto-collapse" export * from "./sidebar-auto-open" export * from "./nav-main" export * from "./nav-secondary" export * from "./nav-documents" export * from "./nav-user" export * from "./secondary-nav" export * from "./secondary-panel" export * from "./secondary-hub-nav-primitives" export * from "./sidebar-drill-in-search-field" export * from "./sidebar-drill-in-resize-handle" // The utility bar's chrome and its one AI affordance. The launcher ships whole — // markup, arrival, and chip class together — because its animation is package // CSS: split across a consumer's own files, a release updates the stylesheet and // nothing on screen. export * from "./utility-bar-chrome" export * from "./ask-leo-button" export * from "./ask-leo-launcher" export * from "./ask-leo-launcher-wash" export * from "./page-header-scroll-actions"