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 = {
item: NavigationItem;
depth: number;
hasChildren: boolean;
isActive: boolean;
isAncestorActive: boolean;
open: boolean;
expanded: boolean;
};
export type NavigationRenderChildrenProps = {
item: NavigationItem;
depth: number;
children: ReactNode;
};
export type PrimaryNavigationTreeProps = HTMLAttributes & {
items: NavigationItem[];
pathname?: string;
context?: TContext;
guard?: NavigationGuard;
renderLink: (props: NavigationRenderLinkProps) => ReactNode;
renderItemContent?: (props: NavigationRenderItemContentProps) => ReactNode;
renderChildren?: (props: NavigationRenderChildrenProps) => 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;
disabled?: boolean;
ariaLabel?: string;
};
export type WorkspaceSidebarUserMenuItem = {
id: string;
label: ReactNode;
href?: string;
icon?: ReactNode;
trailingIcon?: ReactNode;
disabled?: boolean;
onSelect?: MouseEventHandler;
};
export type WorkspaceSidebarUserMenuLinkRenderProps = {
item: WorkspaceSidebarUserMenuItem;
className: string;
children: ReactNode;
href: string;
role: "menuitem";
ariaDisabled?: boolean;
disabled?: boolean;
onClick: MouseEventHandler;
};
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 = Omit, "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 & {
header?: SectionShellItem;
items: SectionShellItem[];
pathname?: string;
actionSlot?: ReactNode;
overflowTriggerSlot?: ReactNode;
renderLink: (props: NavigationRenderLinkProps) => ReactNode;
sticky?: boolean;
};
export type WorkspaceSectionShellProps = Omit;
export type LocalNavigationItem = {
id: string;
label: ReactNode;
href: string;
disabled?: boolean;
match?: "exact" | "prefix" | ((pathname: string, href: string) => boolean);
};
export type LocalNavigationProps = HTMLAttributes & {
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