import type { BreadcrumbAction, C3NavigationV2Props, GlobalActionButton, IconComponent, LinkComponent, LinkProps, SidebarLabels, ToolDescriptor } from './c3-navigation-v2.types'; type ActiveMatcher = boolean | string | ((activeItemKey: string) => boolean); export interface ItemDescriptor { type: 'item'; key: string; label: string; icon: IconComponent; linkProps?: LinkProps; onClick?: () => void; isActive?: ActiveMatcher; trailingElement?: React.ReactNode; } export interface GroupItemDescriptor { type: 'group-item'; key: string; label: string; icon: IconComponent; linkProps?: LinkProps; onClick?: () => void; trailingElement?: React.ReactNode; defaultExpanded?: boolean; isActive?: ActiveMatcher; children: SidebarNodeDescriptor[]; } export interface GroupDescriptor { type: 'group'; key: string; label: string; icon: IconComponent; trailingElement?: React.ReactNode; defaultExpanded?: boolean; children: SidebarNodeDescriptor[]; } export interface SectionDescriptor { type: 'section'; key: string; title?: string; children: SidebarNodeDescriptor[]; compact?: boolean; } export type SidebarNodeDescriptor = ItemDescriptor | GroupItemDescriptor | GroupDescriptor | SectionDescriptor; export interface BreadcrumbDropdownItemDescriptor { key: string; label: string; icon?: IconComponent; isSelected?: ActiveMatcher; onClick?: () => void; linkProps?: LinkProps; trailingElement?: React.ReactNode; } export interface BreadcrumbDescriptor { key: string; label: string | ((activeItemKey: string) => string); icon?: IconComponent; onClick?: () => void; linkProps?: LinkProps; trailingElement?: React.ReactNode; menuElement?: React.ReactNode; actions?: BreadcrumbAction[]; dropdownTitle?: string; dropdownAriaLabel?: string; dropdownItems?: BreadcrumbDropdownItemDescriptor[]; } export interface UseC3NavigationV2Options { app: C3NavigationV2Props['app']; skipToContentTargetId: string; skipToContentLabel?: string; headerAriaLabel?: string; sidebarAriaLabel?: string; /** Forwarded to `C3Sidebar` `labels`. */ sidebarLabels?: SidebarLabels; /** * Resolves `isActive` on sidebar items and `isSelected` on breadcrumb * dropdown items by key-match. Optional: items that set their own `isActive` * (boolean/function) don't need it. Defaults to `''`. */ activeItemKey?: string; sidebarChildren?: SidebarNodeDescriptor[]; breadcrumbs?: BreadcrumbDescriptor[]; tools?: ToolDescriptor[]; globalActions?: GlobalActionButton[]; sidebarExpandedWidth?: string; sidebarCollapsedWidth?: string; defaultSidebarExpanded?: boolean; onSidebarToggle?: (isExpanded: boolean) => void; linkComponent?: LinkComponent; headerTrailingContent?: React.ReactNode; } export interface UseC3NavigationV2Return { navProps: C3NavigationV2Props; isSidebarExpanded: boolean; setSidebarExpanded: (expanded: boolean) => void; expandedGroups: Set; toggleGroup: (groupKey: string) => void; expandGroup: (groupKey: string) => void; collapseGroup: (groupKey: string) => void; activeToolKey: string | null; setActiveToolKey: (key: string | null) => void; } /** * State container and props assembler for `C3NavigationV2`. Manages sidebar * expand/collapse, group expand state, tool panel state, and resolves * descriptors (isActive, label functions) into concrete props. */ export declare function useC3NavigationV2(options: UseC3NavigationV2Options): UseC3NavigationV2Return; export {};