import * as react_jsx_runtime from 'react/jsx-runtime';
import { ReactNode, ComponentType } from 'react';
import { N as NavigationItem } from '../navigation-BiWVffAN.js';

type PlatformAppShellProps = {
    /** App display name (e.g. "Astrlabe"). */
    appName: string;
    /** Tailwind gradient classes for the shell branding (e.g. "from-sky-500 to-indigo-600"). */
    appGradient: string;
    /** Branded logo node rendered inside the flyout trigger. */
    appLogo: ReactNode;
    /**
     * Optional app icon for the branded loader (defaults to the platform's
     * RectangleStackIcon if omitted).
     */
    appIcon?: ReactNode;
    /**
     * When the appIcon is a brand SVG that has its own background
     * (gradient, fill, etc), set this to true so the BrandedLoader
     * doesn't wrap it in a second gradient container.
     */
    appIconRaw?: boolean;
    /**
     * Optional override for the dock dashboard icon (defaults to HomeIcon).
     */
    dashboardIcon?: ComponentType<{
        className?: string;
    }>;
    /** App-specific navigation items already pre-translated. */
    navigationItems: NavigationItem[];
    /** Custom ordering of launchpad page tiles. */
    pageOrder: string[];
    /**
     * Map of navigation/module ID → required permission name. The shell
     * filters `navigationItems` so that any item whose ID has an entry here
     * is hidden unless `hasPermission` returns true for the listed permission.
     */
    modulePermissions: Record<string, string>;
    /**
     * Permission predicate, typically `(p) => can(actor, p)` from each app's
     * `createPlatformRbac()` factory.
     */
    hasPermission: (permission: string) => boolean;
    /**
     * Optional settings/profile drawer content (e.g. an app-specific
     * `<SettingsModal>`). Receives the open state + close handler the shell
     * manages internally so the drawer renders inside the shell chrome.
     */
    settingsModal?: (props: {
        open: boolean;
        onClose: () => void;
    }) => ReactNode;
    children: ReactNode;
};
/**
 * Cross-app platform shell — wires `<PlatformShell>` from ui to windsock's
 * auth + preferences hooks and to ui's i18n/router contexts. Each app
 * passes its own logo, gradient, navigation, and permission predicate; the
 * rest of the chrome (header, dock, flyout, sign-out confirm modal) is
 * shared.
 */
declare function PlatformAppShell({ appName, appGradient, appLogo, appIcon, appIconRaw, dashboardIcon, navigationItems, pageOrder, modulePermissions, hasPermission, settingsModal, children, }: PlatformAppShellProps): react_jsx_runtime.JSX.Element;

export { PlatformAppShell, type PlatformAppShellProps };
