import type { ReactNode } from 'react';
export interface AdminShellProps {
    /** Sidebar/navigation slot. Rendered in the left column on desktop. */
    sidebar: ReactNode;
    /** Top header slot. Rendered above the main content. */
    header?: ReactNode;
    /** Optional breadcrumb / sub-header slot rendered below the header. */
    breadcrumbs?: ReactNode;
    /** Main content. Scrolls independently of the sidebar. */
    children: ReactNode;
    /**
     * Whether the mobile sidebar overlay is currently open. Controlled.
     * AdminShell renders the backdrop + slide transform; the consumer owns
     * the open state and the hamburger button that toggles it.
     */
    mobileSidebarOpen?: boolean;
    onMobileSidebarClose?: () => void;
    /**
     * Breakpoint above which the sidebar docks beside the content instead
     * of overlaying on top of it. Mirrors Tailwind's `md` (768px) default.
     */
    desktopBreakpoint?: number;
}
/**
 * The canonical admin chrome. Owns the entire viewport, splits into
 * `sidebar | (header + breadcrumbs + content)`, and handles the mobile
 * overlay transition.
 *
 * Implementation notes:
 *  - Desktop layout is CSS Grid with `gridTemplateColumns: 'auto minmax(0, 1fr)'`.
 *    The `minmax(0, 1fr)` is load-bearing: it lets the content shrink
 *    below its intrinsic width when the sidebar takes its share, which
 *    is the one thing flex-based shells fail at.
 *  - Mobile layout is a single block with the sidebar absolutely
 *    positioned and slid in via `transform: translateX(…)`. We avoid
 *    the brittle `fixed` ↔ `static` toggle that caused recurring sidebar
 *    overlap bugs in the old layout.
 *  - The desktop/mobile decision is made in JS via `matchMedia` so the
 *    layout is independent of Tailwind's `md:` utility compilation. If
 *    the CSS bundle is stale or partially loaded the layout still works.
 */
export declare function AdminShell({ sidebar, header, breadcrumbs, children, mobileSidebarOpen, onMobileSidebarClose, desktopBreakpoint, }: AdminShellProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=AdminShell.d.ts.map