import { HTMLAttributes, MouseEventHandler, ReactNode } from '../../../../node_modules/.pnpm/react@19.1.1/node_modules/react';
import { NavigationGuard, NavigationItem, NavigationVisibilityContext } from './navigation.types';
export type NavigationRenderLinkProps = {
    href: string;
    children: ReactNode;
    itemId: string;
    depth: number;
    disabled?: boolean;
    isActive: boolean;
    isAncestorActive: boolean;
};
export type NavigationRenderItemContentProps<TMeta = unknown> = {
    item: NavigationItem<TMeta>;
    depth: number;
    hasChildren: boolean;
    isActive: boolean;
    isAncestorActive: boolean;
    open: boolean;
    expanded: boolean;
};
export type NavigationRenderChildrenProps<TMeta = unknown> = {
    item: NavigationItem<TMeta>;
    depth: number;
    children: ReactNode;
};
export type PrimaryNavigationTreeProps<TMeta = unknown, TContext = NavigationVisibilityContext> = HTMLAttributes<HTMLDivElement> & {
    items: NavigationItem<TMeta>[];
    pathname?: string;
    context?: TContext;
    guard?: NavigationGuard<TMeta, TContext>;
    renderLink: (props: NavigationRenderLinkProps) => ReactNode;
    renderItemContent?: (props: NavigationRenderItemContentProps<TMeta>) => ReactNode;
    renderChildren?: (props: NavigationRenderChildrenProps<TMeta>) => ReactNode;
    expandedItemIds?: string[];
    defaultExpandedItemIds?: string[];
    expandActiveAncestors?: boolean;
    mountCollapsedBranches?: boolean;
    onExpandedItemIdsChange?: (ids: string[]) => void;
};
export type WorkspaceSidebarEnvironment = "prod" | "dev" | "test";
export type WorkspaceSidebarLogoConfig = {
    env?: WorkspaceSidebarEnvironment;
    logo?: ReactNode;
    brandName?: ReactNode;
    versionSlot?: ReactNode;
    buildDate?: ReactNode;
};
export type WorkspaceSidebarSupportConfig = {
    label?: ReactNode;
    icon?: ReactNode;
    onClick?: MouseEventHandler<HTMLButtonElement>;
    disabled?: boolean;
    ariaLabel?: string;
};
export type WorkspaceSidebarUserMenuItem = {
    id: string;
    label: ReactNode;
    href?: string;
    icon?: ReactNode;
    trailingIcon?: ReactNode;
    disabled?: boolean;
    onSelect?: MouseEventHandler<HTMLElement>;
};
export type WorkspaceSidebarUserMenuLinkRenderProps = {
    item: WorkspaceSidebarUserMenuItem;
    className: string;
    children: ReactNode;
    href: string;
    role: "menuitem";
    ariaDisabled?: boolean;
    disabled?: boolean;
    onClick: MouseEventHandler<HTMLElement>;
};
export type WorkspaceSidebarUserConfig = {
    name: ReactNode;
    email?: ReactNode;
    avatar: ReactNode;
    unreadIndicator?: ReactNode;
    menuItems?: WorkspaceSidebarUserMenuItem[];
    renderMenuLink?: (props: WorkspaceSidebarUserMenuLinkRenderProps) => ReactNode;
    menuOpen?: boolean;
    onMenuOpenChange?: (open: boolean) => void;
};
export type WorkspaceNavigationSidebarProps<TMeta = unknown, TContext = NavigationVisibilityContext> = Omit<PrimaryNavigationTreeProps<TMeta, TContext>, "collapseButton" | "expandActiveAncestors" | "footerSlot" | "headerSlot" | "logoSlot" | "renderChildren" | "renderItemContent" | "supportSlot" | "userSlot"> & {
    logo?: WorkspaceSidebarLogoConfig;
    support?: WorkspaceSidebarSupportConfig | ReactNode;
    user?: WorkspaceSidebarUserConfig;
};
export type SectionShellItem = {
    id: string;
    label: ReactNode;
    href: string;
    disabled?: boolean;
    match?: "exact" | "prefix" | ((pathname: string, href: string) => boolean);
};
export type SectionShellProps = HTMLAttributes<HTMLDivElement> & {
    header?: SectionShellItem;
    items: SectionShellItem[];
    pathname?: string;
    actionSlot?: ReactNode;
    overflowTriggerSlot?: ReactNode;
    renderLink: (props: NavigationRenderLinkProps) => ReactNode;
    sticky?: boolean;
};
export type WorkspaceSectionShellProps = Omit<SectionShellProps, "overflowTriggerSlot">;
export type LocalNavigationItem = {
    id: string;
    label: ReactNode;
    href: string;
    disabled?: boolean;
    match?: "exact" | "prefix" | ((pathname: string, href: string) => boolean);
};
export type LocalNavigationProps = HTMLAttributes<HTMLDivElement> & {
    header?: LocalNavigationItem;
    items: LocalNavigationItem[];
    pathname?: string;
    actionSlot?: ReactNode;
    overflowTriggerSlot?: ReactNode;
    renderLink: (props: NavigationRenderLinkProps) => ReactNode;
    sticky?: boolean;
    orientation?: "vertical" | "horizontal";
};
//# sourceMappingURL=layout.types.d.ts.map