/** * @fileoverview macOS-style dock with magnification effect. * @author Saasflare™ * Renders a horizontal dock bar where items magnify on mouse proximity. * Uses Motion springs for smooth scaling with natural physics. * @module packages/ui/components/ui/dock * @package ui * * @component * @example * import { Dock, DockItem } from '@saasflare/ui'; * * * * * * * @example * // Custom magnification range * * {navItems.map(item => ( * * {item.icon} * * ))} * */ import { type ReactNode } from "react"; import { type SaasflareComponentProps } from "../../providers"; /** Props for the Dock container. */ export interface DockProps extends SaasflareComponentProps { /** Dock items. */ children: ReactNode; /** Maximum scale factor for magnified items. Default: `1.5` */ magnification?: number; /** Mouse proximity distance in pixels that triggers magnification. Default: `100` */ distance?: number; /** Additional class names. */ className?: string; } /** * Horizontal dock bar with proximity-based item magnification. * * - Items scale up as the mouse approaches them * - Uses spring physics for smooth, elastic scaling * - Falls back to a static icon bar when reduced motion is preferred * - Tracks mouse X position across the entire dock * * @component * @package ui */ export declare function Dock({ children, magnification, distance, className, surface, radius, animated, iconWeight, }: DockProps): import("react/jsx-runtime").JSX.Element; /** * Props for a DockItem. Intentionally does NOT carry the Saasflare axes — * a DockItem's motion follows the parent {@link Dock} via context, and it has * no surface/radius/iconWeight of its own. */ export interface DockItemProps { /** Icon or content inside the dock item. */ children: ReactNode; /** Tooltip label for the item. */ label: string; /** Click handler. */ onClick?: () => void; /** Additional class names. */ className?: string; } /** * Individual item within a Dock. * * - Magnifies based on mouse proximity using spring interpolation * - Shows a tooltip label on hover * - Renders at static base size when reduced motion is preferred * * @component * @package ui */ export declare function DockItem({ children, label, onClick, className, }: DockItemProps): import("react/jsx-runtime").JSX.Element;