import { ReactElement, ReactNode } from "react"; //#region src/components/workspace-shell.d.ts type WorkspaceCompactNavigation = { /** Navigation content rendered inside Stella's compact sheet. */ content: ReactElement; /** Accessible name shared by the trigger and sheet. */ label: string; /** Controlled sheet state owned by the host application. */ open: boolean; /** Receives close gestures, Escape, backdrop presses, and viewport changes. */ onOpenChange: (open: boolean) => void; /** Host-styled button; null disables compact navigation for single-purpose hosts. */ trigger: ReactElement | null; }; type WorkspaceNavigation = { /** The host already owns its complete responsive navigation behavior. */ content: ReactElement; mode: "responsive"; } | { /** Stella owns the desktop/compact cutoff and compact navigation sheet. */ compact: WorkspaceCompactNavigation; desktop: ReactElement; mode: "shell-managed"; }; type WorkspaceTopBarContext = { /** Place this in compact chrome; null when navigation is host-responsive. */ compactNavigationTrigger: ReactElement | null; }; type WorkspaceShellProps = { /** Product navigation with one explicit responsive ownership mode. */ navigation: WorkspaceNavigation; /** Sticky route chrome; managed navigation exposes its compact trigger here. */ topBar: (context: WorkspaceTopBarContext) => ReactElement; /** * Inline-end rail or inspector dock. Omit it and the shell mounts no end * dock at all: no rail, none of its inline-end width reservation, and the * content column extends to the frame's inline-end edge. */ endDock?: ReactElement | undefined; /** Active route content. */ children: ReactNode; }; /** * Stella's complete authenticated workspace frame. It owns the dynamic * viewport, sibling rail geometry, sticky top chrome, and sole content * scroller so product routes cannot create an app inside the app. * * The end dock is optional: a host with nothing to put on the inline-end edge * omits it rather than reserving width for an empty rail. */ export declare const WorkspaceShell: ({ children, endDock, navigation, topBar }: WorkspaceShellProps) => import("react").JSX.Element; type WorkspaceEndRailChatAction = { label: string; onActivate: () => void; status: "enabled"; } | { label: string; reason: string; status: "unavailable"; }; type WorkspaceEndRailProps = { /** Accessible name for the complete rail, independent of its chat action. */ label: string; /** Required top-row affordance, such as opening or minimizing a pane. */ topAction: ReactNode; /** Tabs or contextual actions between the two permanent rail rows. */ children?: ReactNode | undefined; /** Portalled menus or overlays that must not become scrolling rail content. */ overlay?: ReactNode | undefined; /** * Required by construction: a host either wires a working chat action or * exposes an explicit, fail-closed unavailable state with a reason. */ chatAction: WorkspaceEndRailChatAction; className?: string | undefined; }; /** * The permanent inline-end workspace rail. Stella owns its width, row rhythm, * touch targets, scrolling middle region, and bottom chat position; hosts own * only the actions and route state. */ export declare const WorkspaceEndRail: ({ chatAction, children, className, label, overlay, topAction }: WorkspaceEndRailProps) => import("react").JSX.Element; //#endregion export type { WorkspaceCompactNavigation, WorkspaceEndRailChatAction, WorkspaceEndRailProps, WorkspaceNavigation, WorkspaceShellProps, WorkspaceTopBarContext };