import { type ReactNode } from "react"; export interface CategoryDockMenu { /** Trigger icon — string src (via `renderImage`) or a node. Falls back to the item's own icon when used inline. */ triggerIcon?: ReactNode | string; triggerLabel?: string; contentClassName?: string; /** Full control over the dropdown body. Compose `` here for the theme switcher. */ renderContent: (ctx: { side: "top" | "bottom"; close: () => void; }) => ReactNode; } export interface DockNavItem { /** Stable identity for the item (also used for React keys). */ key: string; label: string; /** A string is treated as an image src (rendered via `renderImage`); a node is rendered as-is. */ icon: ReactNode | string; active?: boolean; onClick?: () => void; /** Optional inline dropdown menu. When set, the item renders as a dropdown trigger instead of a nav button. */ menu?: CategoryDockMenu; } export interface CategoryDockProps { items: DockNavItem[]; /** Renders string icons. Defaults to a plain ``; pass next/image for Next apps. */ renderImage?: (src: string, alt: string, size: number) => ReactNode; /** Alt+1..n triggers the matching item's `onClick`. Default false. */ enableKeyboardShortcuts?: boolean; className?: string; /** Which fixed placements to render. Defaults to both. */ placements?: { desktop?: boolean; mobile?: boolean; }; /** * Horizontal alignment of the mobile dock at `sm:` widths and up (it stays * centered below that). `"end"` shifts it to the right, freeing the rest * of the bottom row for other fixed bottom chrome (e.g. a chat input bar) * to share the same row. Defaults to `"center"`. */ mobileAlign?: "center" | "end"; } export declare function CategoryDock({ items, renderImage, enableKeyboardShortcuts, className, placements, mobileAlign, }: CategoryDockProps): import("react").JSX.Element;