- 🎯 Drag & Drop - Freely position your menu anywhere on screen
 - 🧠 Smart Positioning - Automatic edge detection and menu flipping
 - 🌳 Nested Menus - Support for complex menu hierarchies
 - ⌨️ Keyboard Accessible - Full keyboard navigation support
 - 📱 Touch Optimized - Enhanced mobile experience (Touch Guide)
 - ⚡ Performance - Optimized bundle size (Bundle Guide)
 - 🎨 Customizable - Extensive theming options
 - 🛠 TypeScript - Built with type safety
 - 🎭 Vue 3 - Leverages the latest Vue.js features
 - 📦 Tree-shakeable - Only import what you need
 
# Using npm npm install vue-float-menu # Using yarn yarn add vue-float-menu # Using pnpm pnpm add vue-float-menu<template> <float-menu position="top left" :dimension="50" :menu-data="items" @select="handleSelection"> <template #icon> <BoxIcon /> </template> </float-menu> </template> <script setup> import { FloatMenu } from 'vue-float-menu'; import 'vue-float-menu/dist/vue-float-menu.css';  const items = [  { name: 'New' },  {  name: 'Edit',  subMenu: {  name: 'edit-items',  items: [{ name: 'Copy' }, { name: 'Paste' }],  },  },  { name: 'Open Recent' },  { name: 'Save' }, ];  const handleSelection = (selectedItem) => {  console.log('Selected:', selectedItem); }; </script>| Prop | Type | Default | Description | 
|---|---|---|---|
dimension |  number |  50 |  Size of menu head in pixels | 
position |  string |  'top left' |  Initial position (top left, top right, bottom left, bottom right) |  
fixed |  boolean |  false |  Disable dragging and fix position | 
menu-dimension |  object |  { width: 200, height: 300 } |  Menu dimensions | 
menu-data |  array |  [] |  Menu structure data | 
menu-style |  string |  'slide-out' |  Menu style (slide-out' or accordion`) |  
flip-on-edges |  boolean |  false |  Auto-flip menu on screen edges | 
theme |  object |  {} |  Custom theme configuration | 
The menu can be positioned in four corners of the screen:
<float-menu position="bottom right"> <template #icon> <BoxIcon /> </template> </float-menu>Configure menu dimensions and style:
<float-menu :dimension="50" :menu-dimension="{ width: 300, height: 400 }" menu-style="accordion"> <template #icon> <BoxIcon /> </template> </float-menu>Two menu styles are available:
- Slide-out (default)
 - Accordion (mobile-friendly)
 
Customize the appearance with the theme prop:
<float-menu :theme="{  primary: '#00539C',  textColor: '#000',  menuBgColor: '#fff',  textSelectedColor: '#fff',  }" > Click </float-menu># Install dependencies pnpm install # Start development server pnpm run dev # Run linting pnpm run lint:all # Build package pnpm run rollup- Fork the repository
 - Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
 
Distributed under the MIT License. See LICENSE for more information.
Prabhu Murthy
- Twitter: @prabhumurthy2
 - Email: prabhu.m.murthy@gmail.com
 - Website: prabhumurthy.com
 - GitHub: @prabhuignoto
 
 Made with ❤️ by Prabhu Murthy 
 

