import { HTMLAttributes, ReactElement } from 'react'; import { IconNamesType } from '../../../../../../../../../src/utils'; export interface SideNavigationTopLinkItemProps { label: string; href?: string; disabled?: boolean; icon?: IconNamesType; id?: string; className?: string; } export interface SideNavigationLinkItemProps extends HTMLAttributes { children: string; active?: boolean; disabled?: boolean; href: string; parentHasIcon?: boolean; groupName?: string; } export interface SideNavigationNavCategoryProps extends React.ButtonHTMLAttributes { label: string; icon?: IconNamesType; expanded?: boolean; disabled?: boolean; active?: boolean; children?: ReactElement | ReactElement[]; } export interface SideNavigationNavGroupProps { groupName: string; children?: ReactElement | ReactElement[]; } type EnforcedAccessibleLabel = { "aria-label": string; } | { "aria-labelledby": string; }; export type SideNavigationProps = { currentUrl?: string; isActiveOverride?: boolean; onNavigate?: (id: string, url: string) => void; children?: ReactElement | ReactElement[]; } & React.BaseHTMLAttributes & EnforcedAccessibleLabel; export interface SideNavigationSubComponents { LinkItem: React.FC; NavCategory: React.FC; NavGroup: React.FC; TopLinkItem: React.FC; } export interface SideNavigationContextType { currentUrl: string; onSelectedLink?: (id: string, url: string) => void; isActiveOverride?: boolean; hasCustomOnNavigate?: boolean; } export {};