Skip to main content
Version: 1.0.3

Floating Dock

The FloatingDock component is a highly interactive, animated navigation element inspired by the macOS dock. It features high-fidelity magnification, multiple visual variants, and support for badges, separators, and drag-to-reorder functionality.

Installation

ignix add component floating-dock

Usage

Import the component and pass an array of items:

import { FloatingDock, type DockItem } from '@ignix-ui/floating-dock';
import { HomeIcon, MagnifyingGlassIcon, PersonIcon } from "@radix-ui/react-icons";

const items: DockItem[] = [
{ id: "home", icon: <HomeIcon />, label: "Home", active: true },
{ id: "search", icon: <MagnifyingGlassIcon />, label: "Search" },
{ id: "profile", icon: <PersonIcon />, label: "Profile" },
];

function MyDock() {
return (
<FloatingDock
items={items}
variant="solid"
orientation="horizontal"
/>
);
}

Features

  • Magnification: Smooth upward magnification on hover, mimicking the macOS dock experience.
  • Multiple Variants: Choose between solid, glass, outlined, and neon to match your application's theme.
  • Orientation: Supports both horizontal and vertical layouts.
  • Badges: Easily add notification counts or indicators to any dock item.
  • Separators: Group related items using visual dividers.
  • Reorderable: Enable drag-to-reorder for a customizable user experience.
  • Per-icon Colors: Custom background and border tinting for each individual icon.
  • Persistent Ordering: Automatically saves user-dragged ordering directly to localStorage utilizing the storageKey prop.

Props

PropTypeDefaultDescription
itemsDockItem[]requiredArray of items to be displayed in the dock
variant'solid' | 'glass' | 'outlined' | 'neon''solid'Visual appearance of the dock
orientation'horizontal' | 'vertical''horizontal'Layout direction of the dock
reorderablebooleanfalseEnables drag-to-reorder (requires Framer Motion Reorder)
onReorder(items: DockItem[]) => void-Callback triggered when items are reordered
classNamestring-Additional CSS classes for the dock container
storageKeystring-A unique key string. If provided, reordered item states are automatically stored and restored from localStorage.

DockItem Props

PropTypeDescription
idstringUnique identifier for the item
iconReact.ReactNodeThe icon component to render
labelstringTooltip text and accessible label
onClick() => voidEvent handler for click interactions
separatorbooleanRenders a visual divider before this item
activebooleanHighlights the item as active with a dot or ring
badgenumberDisplays a numeric badge
colorstringCustom CSS color for icon background/border tinting