import { ComponentType } from 'react'; import { AthenaUiNavigationIconKey } from './athena-icons.js'; export type AthenaSidebarNavIconComponent = ComponentType<{ className?: string; }>; /** * Flat nav item shape used by app constructors and sidebar-demo codegen. * Icons are React components (re-exported from `@xylex-group/athena-auth-ui/icons`). */ export interface AthenaSidebarNavItem { readonly adminOnly?: boolean; readonly badge?: string; readonly external?: boolean; readonly href: string; readonly icon: AthenaSidebarNavIconComponent; /** Optional stable id; derived from label/href when omitted. */ readonly id?: string; readonly label: string; } /** * Serializable nav definition using registry icon keys (JSON / builder config). */ export interface AthenaSidebarNavItemDefinition { readonly adminOnly?: boolean; readonly badge?: string; readonly external?: boolean; readonly href: string; readonly icon: AthenaUiNavigationIconKey; readonly id?: string; readonly label: string; } export declare const athenaUiNavigationIconComponents: { readonly agents: (props: import('react').SVGProps) => React.JSX.Element; readonly analytics: (props: import('react').SVGProps) => React.JSX.Element; readonly bell: (props: import('react').SVGProps) => React.JSX.Element; readonly billing: (props: import('react').SVGProps) => React.JSX.Element; readonly cloud: (props: import('react').SVGProps) => React.JSX.Element; readonly code: (props: import('react').SVGProps) => React.JSX.Element; readonly dashboard: (props: import('react').SVGProps) => React.JSX.Element; readonly database: (props: import('react').SVGProps) => React.JSX.Element; readonly docs: (props: import('react').SVGProps) => React.JSX.Element; readonly external: (props: import('react').SVGProps) => React.JSX.Element; readonly github: (props: import('react').SVGProps) => React.JSX.Element; readonly key: (props: import('react').SVGProps) => React.JSX.Element; readonly runtime: (props: import('react').SVGProps) => React.JSX.Element; readonly sandboxes: (props: import('react').SVGProps) => React.JSX.Element; readonly server: (props: import('react').SVGProps) => React.JSX.Element; readonly settings: (props: import('react').SVGProps) => React.JSX.Element; readonly terminal: (props: import('react').SVGProps) => React.JSX.Element; readonly tray: (props: import('react').SVGProps) => React.JSX.Element; }; /** Gravity export name for each navigation registry key (codegen). */ export declare const athenaUiNavigationIconExportNames: { readonly agents: "Sparkles"; readonly analytics: "ChartBar"; readonly bell: "Bell"; readonly billing: "CreditCard"; readonly cloud: "Cloud"; readonly code: "Code"; readonly dashboard: "House"; readonly database: "Database"; readonly docs: "Globe"; readonly external: "ArrowUpRightFromSquare"; readonly github: "LogoGithub"; readonly key: "Key"; readonly runtime: "NutHex"; readonly sandboxes: "Boxes3"; readonly server: "Server"; readonly settings: "Gear"; readonly terminal: "Terminal"; readonly tray: "Tray"; }; export declare function getAthenaUiNavigationIconComponent(key: AthenaUiNavigationIconKey): AthenaSidebarNavIconComponent; export declare function getAthenaUiNavigationIconKeyFromComponent(icon: AthenaSidebarNavIconComponent): AthenaUiNavigationIconKey | undefined; export declare function getAthenaUiNavigationIconExportName(key: AthenaUiNavigationIconKey): string; export declare function resolveAthenaSidebarNavItemId(item: Pick, index: number): string; /** * Type-safe constructor for flat nav arrays (same shape as app `NAV_ITEMS`). */ export declare function defineSidebarNavItems(items: T): T; /** * Type-safe constructor for serializable nav definitions (icon keys). */ export declare function defineSidebarNavDefinitions(items: T): T; /** * Expand key-based definitions into component-based NavItems for app code. */ export declare function createSidebarNavItems(definitions: readonly AthenaSidebarNavItemDefinition[]): AthenaSidebarNavItem[]; /** * Collapse component NavItems back to serializable definitions when possible. */ export declare function toSidebarNavDefinitions(items: readonly AthenaSidebarNavItem[]): AthenaSidebarNavItemDefinition[]; /** * Filter nav items by admin access (mirrors app `adminOnly` flags). */ export declare function filterSidebarNavItems(items: readonly AthenaSidebarNavItem[], options?: { isAdmin?: boolean; }): AthenaSidebarNavItem[]; export declare function filterSidebarNavDefinitions(items: readonly AthenaSidebarNavItemDefinition[], options?: { isAdmin?: boolean; }): AthenaSidebarNavItemDefinition[];