import { ReactNode, HTMLAttributes, CSSProperties, MouseEvent, ElementType, RefAttributes, ReactElement } from 'react';
import { aT as DataExplorerViewTreeProps } from '../../types-e3160bd4840c.mjs';
type NavigationSidebarKind = "catalog" | "route" | "tree";
type NavigationSidebarDensity = "comfortable" | "compact" | "default";
type NavigationSidebarSurface = "frosted" | "outlined" | "panel" | "plain";
type NavigationSidebarActiveVariant = "muted" | "outline" | "soft" | "solid";
type NavigationSidebarCollapsePlacement = "edge" | "footer" | "header" | "none";
interface NavigationSidebarAppearance {
/** Shared panel and row presentation; omitted preserves legacy appearances. */
preset?: "unified";
density?: NavigationSidebarDensity;
surface?: NavigationSidebarSurface;
activeVariant?: NavigationSidebarActiveVariant;
}
interface NavigationSidebarStorage {
getItem: (key: string) => null | string;
setItem: (key: string, value: string) => void;
}
interface NavigationSidebarSearchConfig {
value?: string;
defaultValue?: string;
placeholder?: string;
ariaLabel: string;
icon?: ReactNode;
clearLabel?: string;
onValueChange?: (value: string) => void;
}
interface NavigationSidebarClassNames {
root?: string;
header?: string;
headerLeading?: string;
title?: string;
headerActions?: string;
search?: string;
searchIcon?: string;
searchInput?: string;
searchClear?: string;
content?: string;
footer?: string;
collapseButton?: string;
resizeHandle?: string;
filterList?: string;
filterItem?: string;
filterItemActive?: string;
section?: string;
sectionLabel?: string;
list?: string;
item?: string;
itemActive?: string;
itemIcon?: string;
itemContent?: string;
itemLabel?: string;
itemDescription?: string;
itemMeta?: string;
itemEndContent?: string;
itemActions?: string;
childList?: string;
childItem?: string;
childItemActive?: string;
childActions?: string;
childMenuTrigger?: string;
childMenuContent?: string;
mobileNav?: string;
mobileItem?: string;
}
interface NavigationSidebarCommonProps {
title?: ReactNode;
headerLeading?: ReactNode;
headerActions?: ReactNode;
search?: NavigationSidebarSearchConfig;
footer?: ReactNode;
ariaLabel?: string;
dataComponent?: string;
appearance?: NavigationSidebarAppearance;
collapsed?: boolean;
defaultCollapsed?: boolean;
onCollapsedChange?: (collapsed: boolean) => void;
width?: number;
widthMode?: "fill" | "fixed";
onWidthChange?: (width: number) => void;
defaultWidth?: number;
minWidth?: number;
maxWidth?: number;
collapsedWidth?: number;
collapseThreshold?: number;
resizable?: boolean;
collapsible?: boolean;
collapsePlacement?: NavigationSidebarCollapsePlacement;
collapseLabel?: string;
expandLabel?: string;
resizeLabel?: string;
storageKey?: string;
storage?: NavigationSidebarStorage;
onStorageError?: (error: unknown) => void;
desktopClassName?: string;
rootDomProps?: NavigationSidebarEntryDomProps;
className?: string;
classNames?: NavigationSidebarClassNames;
style?: CSSProperties;
}
type NavigationSidebarEntryDomProps = Omit, "children" | "className" | "onClick" | "title"> & {
className?: string;
[key: `data-${string}`]: boolean | number | string | undefined;
};
interface NavigationSidebarCatalogItem {
id: string;
label: ReactNode;
icon?: ReactNode;
description?: ReactNode;
meta?: ReactNode;
endContent?: ReactNode;
active?: boolean;
disabled?: boolean;
href?: string;
to?: string;
title?: string;
filterIds?: string[];
className?: string;
domProps?: NavigationSidebarEntryDomProps;
onClick?: (event: MouseEvent) => void;
}
interface NavigationSidebarCatalogSection {
id: string;
label?: ReactNode;
items: NavigationSidebarCatalogItem[];
className?: string;
labelClassName?: string;
}
interface NavigationSidebarCatalogFilter {
id: string;
label: ReactNode;
icon?: ReactNode;
disabled?: boolean;
title?: string;
}
interface NavigationSidebarMobileConfig {
mode: "horizontal";
className?: string;
itemClassName?: string;
}
interface NavigationSidebarCatalogProps extends NavigationSidebarCommonProps {
kind: "catalog";
items?: NavigationSidebarCatalogItem[];
sections?: NavigationSidebarCatalogSection[];
filters?: NavigationSidebarCatalogFilter[];
activeItemId?: string;
activeFilterId?: string;
onFilterSelect?: (filter: NavigationSidebarCatalogFilter) => void;
itemAs?: ElementType;
layout?: "single" | "split";
empty?: ReactNode;
mobile?: NavigationSidebarMobileConfig;
tree?: never;
routeItems?: never;
}
interface NavigationSidebarRouteChild {
id: string;
label: ReactNode;
icon?: ReactNode;
actions?: ReactNode;
disabled?: boolean;
title?: string;
className?: string;
domProps?: NavigationSidebarEntryDomProps;
}
interface NavigationSidebarRouteItemBase {
id: string;
label: ReactNode;
icon?: ReactNode;
description?: ReactNode;
meta?: ReactNode;
endContent?: ReactNode;
actions?: ReactNode;
disabled?: boolean;
title?: string;
className?: string;
domProps?: NavigationSidebarEntryDomProps;
}
interface NavigationSidebarSelectableRouteItem extends NavigationSidebarRouteItemBase {
interaction?: "select";
href?: string;
to?: string;
onClick?: (event: MouseEvent) => void;
children?: NavigationSidebarRouteChild[];
childrenPresentation?: "always" | "collapsible";
}
interface NavigationSidebarDisclosureRouteItem extends NavigationSidebarRouteItemBase {
interaction: "disclosure";
children: [
NavigationSidebarRouteChild,
...NavigationSidebarRouteChild[]
];
childrenPresentation?: "collapsible";
href?: never;
to?: never;
onClick?: never;
}
type NavigationSidebarRouteItem = NavigationSidebarDisclosureRouteItem | NavigationSidebarSelectableRouteItem;
interface NavigationSidebarRouteProps extends NavigationSidebarCommonProps {
kind: "route";
routeItems: NavigationSidebarRouteItem[];
activeItemId?: string;
activeChildId?: string;
expandedItemIds?: string[];
defaultExpandedItemIds?: string[];
itemAs?: ElementType;
collapsedChildMenuLabel?: string;
disclosureLabel?: string;
onExpandedItemIdsChange?: (itemIds: string[]) => void;
onItemSelect?: (item: NavigationSidebarRouteItem) => void;
onChildSelect?: (child: NavigationSidebarRouteChild, parent: NavigationSidebarRouteItem) => void;
mobile?: NavigationSidebarMobileConfig;
items?: never;
sections?: never;
filters?: never;
tree?: never;
}
interface NavigationSidebarTreeProps extends NavigationSidebarCommonProps {
kind: "tree";
tree: DataExplorerViewTreeProps;
items?: never;
sections?: never;
filters?: never;
routeItems?: never;
mobile?: never;
}
type NavigationSidebarProps = NavigationSidebarCatalogProps | NavigationSidebarRouteProps | NavigationSidebarTreeProps;
type NavigationSidebarComponent = (props: NavigationSidebarProps & RefAttributes) => null | ReactElement;
declare const NavigationSidebar: NavigationSidebarComponent;
export { NavigationSidebar, type NavigationSidebarActiveVariant, type NavigationSidebarAppearance, type NavigationSidebarCatalogFilter, type NavigationSidebarCatalogItem, type NavigationSidebarCatalogProps, type NavigationSidebarCatalogSection, type NavigationSidebarClassNames, type NavigationSidebarCollapsePlacement, type NavigationSidebarCommonProps, type NavigationSidebarComponent, type NavigationSidebarDensity, type NavigationSidebarDisclosureRouteItem, type NavigationSidebarEntryDomProps, type NavigationSidebarKind, type NavigationSidebarMobileConfig, type NavigationSidebarProps, type NavigationSidebarRouteChild, type NavigationSidebarRouteItem, type NavigationSidebarRouteItemBase, type NavigationSidebarRouteProps, type NavigationSidebarSearchConfig, type NavigationSidebarSelectableRouteItem, type NavigationSidebarStorage, type NavigationSidebarSurface, type NavigationSidebarTreeProps };