/**
* @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;