UNPKG

copper-ui

Version:

Modern React UI components library with TypeScript support, built on top of Ant Design

75 lines 2.77 kB
import { ReactNode } from '../../../../node_modules/.pnpm/react@19.1.1/node_modules/react'; export type NavigationMatchMode = "exact" | "prefix"; export type NavigationVisibilityContext = unknown; export type NavigationMatchInput<TMeta = unknown, TContext = NavigationVisibilityContext> = { pathname: string; item: NavigationItem<TMeta>; context?: TContext; }; export type NavigationMatch<TMeta = unknown, TContext = NavigationVisibilityContext> = NavigationMatchMode | ((input: NavigationMatchInput<TMeta, TContext>) => boolean); export type NavigationItemBadgeTone = "neutral" | "attention" | "danger" | "warning" | "success"; export type NavigationItemBadgeConfig = { value: ReactNode; tone?: NavigationItemBadgeTone; label?: string; ariaLabel?: string; hideWhenZero?: boolean; }; export type NavigationItem<TMeta = unknown> = { id: string; label: ReactNode; href?: string; icon?: ReactNode; children?: NavigationItem<TMeta>[]; disabled?: boolean; badge?: ReactNode | NavigationItemBadgeConfig; tooltip?: ReactNode; meta?: TMeta; match?: NavigationMatch<TMeta>; }; export type NavigationGuardInput<TMeta = unknown, TContext = NavigationVisibilityContext> = { item: NavigationItem<TMeta>; context?: TContext; depth: number; parentId: string | null; parentIds: string[]; }; export type NavigationGuard<TMeta = unknown, TContext = NavigationVisibilityContext> = (input: NavigationGuardInput<TMeta, TContext>) => boolean; export type FilterNavigationItemsOptions<TMeta = unknown, TContext = NavigationVisibilityContext> = { context?: TContext; guard?: NavigationGuard<TMeta, TContext>; }; export type FlatNavigationItem<TMeta = unknown> = { item: NavigationItem<TMeta>; depth: number; parentId: string | null; parentIds: string[]; }; export type NavigationItemActiveState<TMeta = unknown> = FlatNavigationItem<TMeta> & { id: string; isActive: boolean; isAncestorActive: boolean; matchedBy: NavigationMatchMode | "custom" | null; }; export type ActiveNavigationState<TMeta = unknown> = { activeItemId: string | null; activeItemIds: string[]; ancestorItemIds: string[]; expandedItemIds: string[]; itemsById: Record<string, NavigationItemActiveState<TMeta>>; }; export type NavigationValidationIssueCode = "duplicate-id" | "missing-id"; export type NavigationValidationIssue = { code: NavigationValidationIssueCode; itemId: string; message: string; parentIds: string[]; }; export type ValidateNavigationItemsOptions = { throwOnError?: boolean; }; export type NavigationValidationResult = { valid: boolean; issues: NavigationValidationIssue[]; }; //# sourceMappingURL=navigation.types.d.ts.map