Neobrutalism Dock
A fixed navigation dock at the bottom of the screen featuring neobrutalism styling, hover effects, tooltips, and responsive design for mobile and desktop.
Usage
import NeoBrutalismDock from '@/components/NeoBrutalismDock'; export default function MyLayout() { return ( <div className="relative min-h-screen"> {/* Your page content */} <main className="pb-20"> <h1>My Page</h1> <p>Content goes here...</p> </main> {/* Add the dock to your layout */} <NeoBrutalismDock /> </div> ); }
Examples
Standard Dock
The default NeoBrutalismDock component that provides navigation links with hover tooltips and a theme toggle.
// Add the dock to your layout <NeoBrutalismDock />
Custom Implementation
To customize the dock, you would need to modify the component source code. Here's how you might create a similar dock with custom items:
// Custom dock implementation example <div className="fixed bottom-6 left-1/2 transform -translate-x-1/2 z-50 pointer-events-none"> <div className="pointer-events-auto overflow-hidden"> <div className="flex items-center bg-white dark:bg-black border-3 border-black dark:border-white rounded-lg px-1.5 py-1 shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] dark:shadow-[4px_4px_0px_0px_rgba(255,255,255,0.5)]"> {/* Home icon */} <Link href="/" className="p-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-md"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"> <path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path> <polyline points="9 22 9 12 15 12 15 22"></polyline> </svg> </Link> <div className="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-1"></div> {/* Add more custom items here */} </div> {/* Shadow accent */} <div className="absolute inset-0 bg-black dark:bg-white rounded-lg translate-x-[4px] translate-y-[4px] -z-10"></div> </div> </div>
DockItem Component Information
The NeoBrutalismDock uses an internal DockItem component to render each icon in the dock. Here's information about the DockItem component's props:
Name | Type | Default | Description |
---|---|---|---|
icon | React.ReactNode | undefined | The icon to display in the dock item. |
href | string | undefined | Optional URL to navigate to when the item is clicked. |
onClick | () => void | undefined | Optional click handler for the item. |
label | string | undefined | Label text to display when hovering over the item. |
isActive | boolean | false | Whether the item is in active state. |
showOnMobile | boolean | true | Whether to display the item on mobile devices. |
If you need to customize the items in the dock, you would need to modify the component code directly.
// DockItem interface interface DockItemProps { icon: React.ReactNode; // The icon to display href?: string; // Optional URL to navigate to onClick?: () => void; // Optional click handler label?: string; // Label text on hover isActive?: boolean; // Whether the item is active showOnMobile?: boolean; // Whether to show on mobile } // Example usage inside NeoBrutalismDock component <DockItem icon={<HomeIcon />} href="/" label="Home" showOnMobile={true} />