import { type PropType, type VNode } from "vue"; export type AppShellVariant = "site" | "workspace"; export type AppShellUtilityMode = "reserve" | "overlay" | "floating"; export type AppShellUtilitySide = "left" | "right" | "bottom"; export type AppShellPanelCollapse = "stack" | "accordion"; export type AppShellPanelKey = "navigationPanel" | "contextPanel" | "utilityPanel"; export type AppShellProps = { variant?: AppShellVariant; mainId?: string; navigationLabel?: string; contextLabel?: string; utilityLabel?: string; utilityMode?: AppShellUtilityMode; utilitySide?: AppShellUtilitySide; /** * Below the 48rem breakpoint, `"stack"` (default) keeps today's behaviour — * panels stack full-width in document order, always expanded. `"accordion"` * degrades each present panel to a keyboard-accessible disclosure (collapsed * by default) instead of squeezing the main content. Desktop (>48rem) * rendering is IDENTICAL in both modes — side panels stay side-by-side * columns. Panel content is mounted once regardless of mode/breakpoint; * collapsing hides/sizes the region rather than destroying it, so stateful * widgets (maps, live panels…) mounted in a panel never remount. */ panelCollapse?: AppShellPanelCollapse; /** Disclosure label for `primaryRail` when `panelCollapse="accordion"`. */ primaryRailLabel?: string; /** Disclosure label for `navigationPanel` when `panelCollapse="accordion"`. Defaults to `navigationLabel`. */ navigationPanelLabel?: string; /** Disclosure label for `contextPanel` when `panelCollapse="accordion"`. Defaults to `contextLabel`. */ contextPanelLabel?: string; /** Disclosure label for `utilityPanel` when `panelCollapse="accordion"`. Defaults to `utilityLabel`. */ utilityPanelLabel?: string; /** Enables drag-to-resize handles on side panels above 48rem. Default false — zero regression. */ panelResize?: boolean; /** Controlled panel widths in px. When provided the component never mutates width itself. */ panelWidths?: Partial>; /** Seeds uncontrolled widths in px. */ defaultPanelWidths?: Partial>; /** Fired on every committed resize. Persistence is the CONSUMER's job — the DS stays presentational. */ onPanelResize?: (key: AppShellPanelKey, width: number) => void; /** Lower clamp in px. Default 180. */ panelMinWidth?: number; /** Upper clamp in px. Default 640. */ panelMaxWidth?: number; class?: string; }; export declare const AppShell: import("vue").DefineComponent; default: string; }; mainId: { type: StringConstructor; default: string; }; navigationLabel: { type: StringConstructor; default: string; }; contextLabel: { type: StringConstructor; default: string; }; utilityLabel: { type: StringConstructor; default: string; }; utilityMode: { type: PropType; default: string; }; utilitySide: { type: PropType; default: string; }; panelCollapse: { type: PropType; default: string; }; primaryRailLabel: { type: StringConstructor; default: string; }; navigationPanelLabel: { type: StringConstructor; default: undefined; }; contextPanelLabel: { type: StringConstructor; default: undefined; }; utilityPanelLabel: { type: StringConstructor; default: undefined; }; panelResize: { type: BooleanConstructor; default: boolean; }; panelWidths: { type: () => Partial>; default: undefined; }; defaultPanelWidths: { type: () => Partial>; default: undefined; }; onPanelResize: { type: () => (key: AppShellPanelKey, width: number) => void; default: undefined; }; panelMinWidth: { type: NumberConstructor; default: number; }; panelMaxWidth: { type: NumberConstructor; default: number; }; class: { type: StringConstructor; default: undefined; }; }>, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "panelResize"[], "panelResize", import("vue").PublicProps, Readonly; default: string; }; mainId: { type: StringConstructor; default: string; }; navigationLabel: { type: StringConstructor; default: string; }; contextLabel: { type: StringConstructor; default: string; }; utilityLabel: { type: StringConstructor; default: string; }; utilityMode: { type: PropType; default: string; }; utilitySide: { type: PropType; default: string; }; panelCollapse: { type: PropType; default: string; }; primaryRailLabel: { type: StringConstructor; default: string; }; navigationPanelLabel: { type: StringConstructor; default: undefined; }; contextPanelLabel: { type: StringConstructor; default: undefined; }; utilityPanelLabel: { type: StringConstructor; default: undefined; }; panelResize: { type: BooleanConstructor; default: boolean; }; panelWidths: { type: () => Partial>; default: undefined; }; defaultPanelWidths: { type: () => Partial>; default: undefined; }; onPanelResize: { type: () => (key: AppShellPanelKey, width: number) => void; default: undefined; }; panelMinWidth: { type: NumberConstructor; default: number; }; panelMaxWidth: { type: NumberConstructor; default: number; }; class: { type: StringConstructor; default: undefined; }; }>> & Readonly<{ onPanelResize?: ((...args: any[]) => any) | undefined; }>, { class: string; panelResize: boolean; variant: AppShellVariant; mainId: string; navigationLabel: string; contextLabel: string; utilityLabel: string; utilityMode: AppShellUtilityMode; utilitySide: AppShellUtilitySide; panelCollapse: AppShellPanelCollapse; primaryRailLabel: string; navigationPanelLabel: string; contextPanelLabel: string; utilityPanelLabel: string; panelWidths: Partial>; defaultPanelWidths: Partial>; onPanelResize: (key: AppShellPanelKey, width: number) => void; panelMinWidth: number; panelMaxWidth: number; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; //# sourceMappingURL=AppShell.d.ts.map