{"_id":"vue-afloat","_rev":"4-4f082520832ad99fb15fd0964b839d68","name":"vue-afloat","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"vue-afloat","version":"0.0.0","keywords":["vue","popper","tooltip","popover","dropdown","menu","floating-ui"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"vue-afloat@0.0.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/vue-afloat#readme","bugs":"https://github.com/antfu/vue-afloat/issues","dist":{"shasum":"29371f05eb6106e2deddc0aa5c32c1a3dae859f2","tarball":"https://registry.npmjs.org/vue-afloat/-/vue-afloat-0.0.0.tgz","fileCount":6,"integrity":"sha512-kWu2xiLCGoFiJ2bgBofXITQLGDb029e+d20mIrjrdGoDOCIPS7bvwJeuO1zoNYSv/1SMFBb/rf186J86Eb0CIg==","signatures":[{"sig":"MEUCIQDZ6KH4k8oXkjXdkm+Hv4NjhZRYd4FoGjEzLr9FSUwbmwIgavd6zT+SzLlloILSnu6JkvvdruD/o+OB3LosqxZEdNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71381},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./style.css":"./dist/style.css","./package.json":"./package.json"},"funding":"https://github.com/sponsors/antfu","scripts":{"dev":"tsdown --watch","lint":"eslint","test":"pnpm run build && vitest","build":"tsdown","start":"tsx src/index.ts","release":"bumpp","storybook":"pnpm -C playground run storybook","typecheck":"tsc"},"_npmUser":{"name":"antfu","email":"anthonyfu117@hotmail.com"},"repository":{"url":"git+https://github.com/antfu/vue-afloat.git","type":"git"},"description":"Tooltips, popovers, dropdown, menus... for Vue","directories":{},"nano-staged":{"*":"eslint --fix"},"sideEffects":["**/*.css"],"_nodeVersion":"24.16.0","dependencies":{"@floating-ui/dom":"^1.8.0"},"scripts-info":{"dev":"Rebuild on change during development","lint":"Check for code style issues","test":"Run the test suite","build":"Build the library for publishing","start":"Run the entry file","prepack":"Build before publishing","prepare":"Set up git hooks and skills","release":"Bump version and publish a release","typecheck":"Check types"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vue":"^3.5.22","vite":"^8.2.2","bumpp":"^12.2.3","jsdom":"^25.0.1","eslint":"^10.9.1","tsdown":"^0.22.14","tsnapi":"^1.4.2","vitest":"^4.1.11","publint":"^0.3.24","@antfu/ni":"^30.5.0","skills-npm":"^1.2.0","typescript":"^6.0.3","@types/node":"^26.4.1","nano-staged":"^1.0.2","@antfu/utils":"^9.3.0","simple-git-hooks":"^2.14.0","eslint-plugin-slop":"^0.1.3","tsdown-stale-guard":"^0.1.3","@antfu/eslint-config":"^9.5.1","eslint-plugin-sonarjs":"^4.2.0"},"peerDependencies":{"vue":"^3.5.0"},"simple-git-hooks":{"pre-commit":"pnpm i --frozen-lockfile --ignore-scripts --offline && pnpm run build && npx nano-staged"},"_npmOperationalInternal":{"tmp":"tmp/vue-afloat_0.0.0_1789363187796_0.5864430937250331","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"vue-afloat","version":"0.1.0","keywords":["vue","popper","tooltip","popover","dropdown","menu","floating-ui"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"vue-afloat@0.1.0","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/vue-afloat#readme","bugs":"https://github.com/antfu/vue-afloat/issues","dist":{"shasum":"33ebfbfafb0045a588ae990346c9dc8e437dfeca","tarball":"https://registry.npmjs.org/vue-afloat/-/vue-afloat-0.1.0.tgz","fileCount":6,"integrity":"sha512-mMcVh3y9s+LEC4EBfKQbboirnJirocTsn2JFwwuFAGX2t7qwmEucz5Juxjwq11nss+2+hq4CnVRr5deXTPDwrg==","signatures":[{"sig":"MEUCIB6Qg4t8WfOAK0SqgmVBYt2M2vD3EkmEKYVKa1GzUax4AiEAzyMkWpPQlaehgVS9ZCa7BQ/tL6HWvN1lcS7Lq3ZbDDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAWkomHiebZL9ceEaI5y5kbEsxsMYaniW14akSMUUyfHAiEA37xTqNo8jlXBcRHDsNnihgnuuiEkdsvQ/zRPwBi8tmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71381},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./style.css":"./dist/style.css","./package.json":"./package.json"},"funding":"https://github.com/sponsors/antfu","scripts":{"dev":"tsdown --watch","lint":"eslint","test":"pnpm run build && vitest","build":"tsdown","start":"tsx src/index.ts","release":"bumpp","storybook":"pnpm -C playground run storybook","typecheck":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ecddb54-2501-4150-a20c-4735e8ff5533"}},"repository":{"url":"git+https://github.com/antfu/vue-afloat.git","type":"git"},"description":"Tooltips, popovers, dropdown, menus... for Vue","directories":{},"nano-staged":{"*":"eslint --fix"},"sideEffects":["**/*.css"],"_nodeVersion":"24.20.0","dependencies":{"@floating-ui/dom":"^1.8.0"},"scripts-info":{"dev":"Rebuild on change during development","lint":"Check for code style issues","test":"Run the test suite","build":"Build the library for publishing","start":"Run the entry file","prepack":"Build before publishing","prepare":"Set up git hooks and skills","release":"Bump version and publish a release","typecheck":"Check types"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vue":"^3.5.22","vite":"^8.2.2","bumpp":"^12.2.3","jsdom":"^25.0.1","eslint":"^10.9.1","tsdown":"^0.22.14","tsnapi":"^1.4.2","vitest":"^4.1.11","publint":"^0.3.24","@antfu/ni":"^30.5.0","skills-npm":"^1.2.0","typescript":"^6.0.3","@types/node":"^26.4.1","nano-staged":"^1.0.2","@antfu/utils":"^9.3.0","simple-git-hooks":"^2.14.0","eslint-plugin-slop":"^0.1.3","tsdown-stale-guard":"^0.1.3","@antfu/eslint-config":"^9.5.1","eslint-plugin-sonarjs":"^4.2.0"},"peerDependencies":{"vue":"^3.5.0"},"simple-git-hooks":{"pre-commit":"pnpm i --frozen-lockfile --ignore-scripts --offline && pnpm run build && npx nano-staged"},"_npmOperationalInternal":{"tmp":"tmp/vue-afloat_0.1.0_1789364027563_0.0735333492426904","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"vue-afloat","version":"0.1.1","keywords":["vue","popper","tooltip","popover","dropdown","menu","floating-ui"],"author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","_id":"vue-afloat@0.1.1","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"homepage":"https://github.com/antfu/vue-afloat#readme","bugs":"https://github.com/antfu/vue-afloat/issues","dist":{"shasum":"27011df5b39d386bb66a5ae989257509d15a5ff7","tarball":"https://registry.npmjs.org/vue-afloat/-/vue-afloat-0.1.1.tgz","fileCount":6,"integrity":"sha512-uo4suEE+B0eEeBD6xFvVc+DBaz3dondjJAryrVcd8WH9ps4sR29XQ2SrKF3NmGqwzgTA5S/wgdBrmwyhZpfwhg==","signatures":[{"sig":"MEYCIQCSUSm7igswn2FyqJrpdtCjUNDPxXu9xc1dy2E2wb+ZSQIhAIyGIPYTjZ3fXU7uyg2bCQPxcruBcFYg35kJuSljsncj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB2tA60gZyDU4HeufGnk+qWUpGHOnbD1+tcvTt+7SjZ/AiBU4zATLJBBP4K/bXG7zqx6K8S6cLEIqzbq++YWbrGUBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71365},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./style.css":"./dist/style.css","./package.json":"./package.json"},"funding":"https://github.com/sponsors/antfu","scripts":{"dev":"tsdown --watch","lint":"eslint","test":"pnpm run build && vitest","build":"tsdown","start":"tsx src/index.ts","release":"bumpp","storybook":"pnpm -C playground run storybook","typecheck":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ecddb54-2501-4150-a20c-4735e8ff5533"}},"repository":{"url":"git+https://github.com/antfu/vue-afloat.git","type":"git"},"description":"Tooltips, popovers, dropdown, menus... for Vue","directories":{},"nano-staged":{"*":"eslint --fix"},"sideEffects":["**/*.css"],"_nodeVersion":"24.20.0","dependencies":{"@floating-ui/dom":"^1.8.0"},"scripts-info":{"dev":"Rebuild on change during development","lint":"Check for code style issues","test":"Run the test suite","build":"Build the library for publishing","start":"Run the entry file","prepack":"Build before publishing","prepare":"Set up git hooks and skills","release":"Bump version and publish a release","typecheck":"Check types"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vue":"^3.5.22","vite":"^8.2.2","bumpp":"^12.2.3","jsdom":"^25.0.1","eslint":"^10.9.1","tsdown":"^0.22.14","tsnapi":"^1.4.2","vitest":"^4.1.11","publint":"^0.3.24","@antfu/ni":"^30.5.0","skills-npm":"^1.2.0","typescript":"^6.0.3","@types/node":"^26.4.1","nano-staged":"^1.0.2","@antfu/utils":"^9.3.0","simple-git-hooks":"^2.14.0","eslint-plugin-slop":"^0.1.3","tsdown-stale-guard":"^0.1.3","@antfu/eslint-config":"^9.5.1","eslint-plugin-sonarjs":"^4.2.0"},"peerDependencies":{"vue":"^3.5.0"},"simple-git-hooks":{"pre-commit":"pnpm i --frozen-lockfile --ignore-scripts --offline && pnpm run build && npx nano-staged"},"_npmOperationalInternal":{"tmp":"tmp/vue-afloat_0.1.1_1789448115106_0.21042917707603825","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"vue-afloat@0.2.0","bugs":"https://github.com/antfu/vue-afloat/issues","dist":{"shasum":"de3021f84463667fc3a2cb926785ad172d0d0456","tarball":"https://registry.npmjs.org/vue-afloat/-/vue-afloat-0.2.0.tgz","fileCount":6,"integrity":"sha512-tKDQlkB5VxKDk1CzS53xMig5NxfpT+Cmm2p8j4znyJKJrwuEmY5SuwsQ5i6d+2OQgNcu8ilJjr9LzCX1XCrMZg==","signatures":[{"sig":"MEQCIFN4UzSrM8G7UjDHl1g4FWrlzZ0f6tVs1e/DCEIFCRx4AiBvvcOtJI+akI2MWqSHsPfmST/nsvoUMzYmPjLa3lROjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICiGgZb7okES5P2ArqJWnKYlM+W4o1/dAOKMOc7JOOxhAiEAn7syQIj4ZcYtWEAScHShREnudi1aUbSrOWa2cXYDiXY="}],"unpackedSize":73755},"name":"vue-afloat","type":"module","types":"./dist/index.d.mts","author":"Anthony Fu <anthonyfu117@hotmail.com>","exports":{".":"./dist/index.mjs","./style.css":"./dist/style.css","./package.json":"./package.json"},"funding":"https://github.com/sponsors/antfu","license":"MIT","scripts":{"dev":"tsdown --watch","lint":"eslint","test":"pnpm run build && vitest","build":"tsdown","start":"tsx src/index.ts","release":"bumpp","storybook":"pnpm -C playground run storybook","typecheck":"tsc"},"version":"0.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ecddb54-2501-4150-a20c-4735e8ff5533"}},"homepage":"https://github.com/antfu/vue-afloat#readme","keywords":["vue","popper","tooltip","popover","dropdown","menu","floating-ui"],"repository":{"url":"git+https://github.com/antfu/vue-afloat.git","type":"git"},"description":"Tooltips, popovers, dropdown, menus... for Vue","directories":{},"maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"nano-staged":{"*":"eslint --fix"},"sideEffects":["**/*.css"],"_nodeVersion":"24.20.0","dependencies":{"@floating-ui/dom":"^1.8.0"},"scripts-info":{"dev":"Rebuild on change during development","lint":"Check for code style issues","test":"Run the test suite","build":"Build the library for publishing","start":"Run the entry file","prepack":"Build before publishing","prepare":"Set up git hooks and skills","release":"Bump version and publish a release","typecheck":"Check types"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vue":"^3.5.22","vite":"^8.2.2","bumpp":"^12.2.3","jsdom":"^25.0.1","eslint":"^10.9.1","tsdown":"^0.22.14","tsnapi":"^1.4.2","vitest":"^4.1.11","publint":"^0.3.24","@antfu/ni":"^30.5.0","skills-npm":"^1.2.0","typescript":"^6.0.3","@types/node":"^26.4.1","nano-staged":"^1.0.2","@antfu/utils":"^9.3.0","simple-git-hooks":"^2.14.0","eslint-plugin-slop":"^0.1.3","tsdown-stale-guard":"^0.1.3","@antfu/eslint-config":"^9.5.1","eslint-plugin-sonarjs":"^4.2.0"},"peerDependencies":{"vue":"^3.5.0"},"simple-git-hooks":{"pre-commit":"pnpm i --frozen-lockfile --ignore-scripts --offline && pnpm run build && npx nano-staged"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-afloat_0.2.0_1789968545870_0.23381948645598882"}}},"time":{"created":"2026-09-14T05:19:47.728Z","modified":"2026-09-21T05:29:06.097Z","0.0.0":"2026-09-14T05:19:47.955Z","0.1.0":"2026-09-14T05:33:47.652Z","0.1.1":"2026-09-15T04:55:15.253Z","0.2.0":"2026-09-21T05:29:05.959Z"},"bugs":"https://github.com/antfu/vue-afloat/issues","author":"Anthony Fu <anthonyfu117@hotmail.com>","license":"MIT","homepage":"https://github.com/antfu/vue-afloat#readme","keywords":["vue","popper","tooltip","popover","dropdown","menu","floating-ui"],"repository":{"url":"git+https://github.com/antfu/vue-afloat.git","type":"git"},"description":"Tooltips, popovers, dropdown, menus... for Vue","maintainers":[{"name":"antfu","email":"anthonyfu117@hotmail.com"}],"readme":"# vue-afloat\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-downloads-href]\n[![bundle][bundle-src]][bundle-href]\n[![License][license-src]][license-href]\n\nTooltips, dropdowns and menus for Vue, powered by [Floating UI](https://floating-ui.com/). \n\nA slimmed-down port of [floating-vue](https://github.com/Akryum/floating-vue), with modern build, CSS-vars-based styling system, ESM-only and Composition API.\n\n## Install\n\n```bash\npnpm add vue-afloat\n```\n\n## Usage\n\nRegister the plugin and import the stylesheet once:\n\n```ts\nimport { createApp } from 'vue'\nimport FloatingVue from 'vue-afloat'\nimport App from './App.vue'\nimport 'vue-afloat/style.css'\n\ncreateApp(App).use(FloatingVue).mount('#app')\n```\n\n### Tooltip directive\n\n```vue\n<template>\n  <button v-tooltip=\"'Hello tooltip'\">\n    Hover me\n  </button>\n\n  <!-- placement via modifier, and HTML content -->\n  <button v-tooltip.bottom=\"{ content: '<b>Rich</b> tooltip', html: true }\">\n    Hover me\n  </button>\n</template>\n```\n\n### Components\n\n`VTooltip`, `VDropdown` and `VMenu` share the same shape: a default slot for the\ntrigger and a `#popper` slot for the floating content. Use `v-close-popper`\ninside a dropdown to close it.\n\n```vue\n<template>\n  <VDropdown>\n    <button>Open</button>\n    <template #popper>\n      <MyMenu />\n      <button v-close-popper>\n        Close\n      </button>\n    </template>\n  </VDropdown>\n\n  <VMenu placement=\"right-start\">\n    <button>File</button>\n    <template #popper>\n      <VMenu placement=\"right-start\">\n        <button>Export ›</button>\n        <template #popper>\n          …\n        </template>\n      </VMenu>\n    </template>\n  </VMenu>\n</template>\n```\n\n### Shadow DOM and custom elements\n\nInside an open shadow root, components and `v-tooltip` keep their floating\ncontent in that root by default. Include the stylesheet in the shadow root,\nsince a document-level import cannot style its contents. With Vue's\n`defineCustomElement` and Vite:\n\n```ts\nimport { defineCustomElement, h } from 'vue'\nimport { Dropdown } from 'vue-afloat'\nimport styles from 'vue-afloat/style.css?inline'\n\nconst MyDropdown = defineCustomElement({\n  styles: [styles],\n  setup() {\n    return () => h(Dropdown, {}, {\n      default: () => h('button', 'Open'),\n      popper: () => h('div', 'Content inside the shadow root'),\n    })\n  },\n})\n\ncustomElements.define('my-dropdown', MyDropdown)\n```\n\nThe stylesheet defines defaults on `:host` as well as `:root`. Add your own\n`:host` rules after it, or set `--vue-afloat-*` properties on the custom element,\nto customize each instance without injecting styles into the document.\n\nThe default `container: 'body'` uses the reference element's shadow root when\npresent, otherwise the document body. Other container selectors resolve only\nwithin that root. You can also pass an `HTMLElement` or `ShadowRoot` directly,\nor use `container: false` to keep content beside its trigger. Passing\n`document.body` explicitly moves content outside the shadow root and requires\ndocument-level styles.\n\n## Styling\n\nTooltip, dropdown and menu share one default look that adapts to light/dark via\n`prefers-color-scheme`. Import the stylesheet and override the `--vue-afloat-*`\ncustom properties globally, per type, or per instance. No theme registry.\n\n```css\n/* global */\n:root {\n  --vue-afloat-border-radius: 12px;\n}\n\n/* per type: .vue-afloat-{tooltip,dropdown,menu} */\n.vue-afloat-tooltip {\n  --vue-afloat-background: #18181b;\n  --vue-afloat-color: #fff;\n}\n\n/* per instance: pass popper-class=\"glass\" */\n.vue-afloat-tooltip.glass {\n  --vue-afloat-background: rgb(255 255 255 / 0.55);\n  --vue-afloat-backdrop-blur: 12px;\n}\n```\n\n### CSS classes\n\n| Class | Applied to | Purpose |\n| --- | --- | --- |\n| `.vue-afloat` | reference wrapper, floating popper | base block |\n| `.vue-afloat--shown` / `.vue-afloat--hidden` | reference wrapper, floating popper | current visibility state |\n| `.vue-afloat--show-from` / `.vue-afloat--show-to` | floating popper | present while the show transition runs |\n| `.vue-afloat--hide-from` / `.vue-afloat--hide-to` | floating popper | present while the hide transition runs |\n| `.vue-afloat--skip-transition` | floating popper | disables the opacity/visibility transition |\n| `.vue-afloat--top` / `--bottom` / `--left` / `--right` | floating popper | resolved placement side (replaces `[data-popper-placement]`) |\n| `.vue-afloat--no-arrow` | floating popper | applied automatically by the `no-arrow` prop; hides the arrow |\n| `.vue-afloat--has-tooltip` | trigger element (`v-tooltip`) | marks an element with an attached tooltip |\n| `.vue-afloat--tooltip-loading` | floating popper (`VTooltip`/`v-tooltip` only) | present while async tooltip content is loading |\n| `.vue-afloat--some-open` | `<body>` or shadow host | present while at least one popper in that root is open |\n| `.vue-afloat-tooltip` / `.vue-afloat-dropdown` / `.vue-afloat-menu` | floating popper | per-component hook, override tokens here to diverge per type |\n| `.vue-afloat__backdrop` | floating popper (child) | full-size click-catcher used by `autoHide` |\n| `.vue-afloat__wrapper` | floating popper (child) | wraps the content and the arrow |\n| `.vue-afloat__inner` | floating popper (child) | scrollable box holding your slot content |\n| `.vue-afloat__arrow-container` | floating popper (child) | positions the arrow |\n| `.vue-afloat__arrow-inner` / `.vue-afloat__arrow-outer` | floating popper (child) | arrow fill and outline layers |\n\n### CSS variables\n\n| Variable | Default (light / dark) | Used for |\n| --- | --- | --- |\n| `--vue-afloat-background` | `#fff` / `#1e1e24` | content background, and the arrow fill fallback |\n| `--vue-afloat-color` | `#1f2933` / `rgb(255 255 255 / 0.92)` | text color |\n| `--vue-afloat-border-color` | `rgb(0 0 0 / 0.1)` / `rgb(255 255 255 / 0.14)` | border, and the arrow outline fallback |\n| `--vue-afloat-border-width` | `1px` | content border width |\n| `--vue-afloat-border-radius` | `8px` | content corner radius |\n| `--vue-afloat-box-shadow` | `0 4px 24px rgb(0 0 0 / 0.12)` / `0 4px 24px rgb(0 0 0 / 0.5)` | drop shadow |\n| `--vue-afloat-padding` | `6px 10px` | content padding |\n| `--vue-afloat-backdrop-blur` | `0px` | `backdrop-filter: blur()` on the content |\n| `--vue-afloat-arrow-size` | `6px` | arrow border-width |\n| `--vue-afloat-arrow-color` | unset (falls back to `--vue-afloat-background`) | arrow fill, set to diverge from the content background |\n| `--vue-afloat-arrow-border-color` | unset (falls back to `--vue-afloat-border-color`) | arrow outline, set to diverge from the content border |\n| `--vue-afloat-z-index` | `10000` | floating popper `z-index` |\n| `--vue-afloat-transition-duration` | `0.15s` | show/hide transition duration |\n\n## Global config\n\nPass defaults to the plugin, or mutate the exported `options` object:\n\n```ts\napp.use(FloatingVue, {\n  distance: 8,\n  disposeTimeout: 150,\n  autoHideOnMousedown: false,\n})\n```\n\n### Options reference\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `disabled` | `false` | Disable all poppers |\n| `placement` | `'bottom'` | Preferred placement relative to the reference element |\n| `distance` | `5` | Position offset along the main axis (px) |\n| `skidding` | `0` | Position offset along the cross axis (px) |\n| `container` | `'body'` | Container element, shadow root, root-scoped selector, or `false` for the trigger's parent. The default uses the reference's shadow root when present. |\n| `boundary` | `undefined` | Element used to compute position and size boundaries |\n| `instantMove` | `false` | Skip delay & CSS transitions when moving from one popper to another |\n| `disposeTimeout` | `150` | Auto destroy popper DOM nodes after hiding (ms) |\n| `popperTriggers` | `[]` | Triggers on the popper itself |\n| `strategy` | `'absolute'` | Positioning strategy (`'absolute'` or `'fixed'`) |\n| `preventOverflow` | `true` | Prevent overflow |\n| `flip` | `true` | Flip to the opposite placement if needed |\n| `shift` | `true` | Shift on the cross axis to prevent overflow |\n| `shiftCrossAxis` | `false` | Also shift on the cross axis (perpendicular to the placement) |\n| `overflowPadding` | `0` | Overflow padding (px) |\n| `arrowPadding` | `0` | Arrow padding (px) |\n| `noArrow` | `false` | Hide the arrow |\n| `autoHideOnMousedown` | `false` | Compute auto hide on mousedown instead of click |\n\n## API\n\n- Components: `Tooltip` (`VTooltip`), `Dropdown` (`VDropdown`), `Menu` (`VMenu`)\n- Directives: `vTooltip`, `vClosePopper`\n- Directive helpers: `createTooltip`, `destroyTooltip`\n- Low-level: `createPopper` (renderless factory) + `PopperContent` for custom\n  popovers, `createAfloatComponent` for building your own `Tooltip`/`Dropdown`/`Menu`-shaped component\n- Globals: `hideAllPoppers`, `recomputeAllPoppers`, `placements`, `options`\n- Types: `Placement`, `TriggerEvent`, `FloatingVueConfig`\n\n### Creating your own component\n\n`Tooltip`, `Dropdown` and `Menu` are all built with `createAfloatComponent`, which\nbakes in default props and a CSS class for a `createPopper` + `PopperContent`\npair. Use it to define your own variant with different defaults:\n\n```ts\nimport { createAfloatComponent } from 'vue-afloat'\n\nconst VDropdown = createAfloatComponent('VDropdown', 'vue-afloat-dropdown', {\n  placement: 'bottom',\n  triggers: () => ['click'],\n  delay: 0,\n  handleResize: true,\n  autoHide: true,\n})\n```\n\nThe second argument is the class applied to the floating popper (see\n[CSS classes](#css-classes)); the third is a map of prop defaults, applied on\ntop of the standard popper props.\n\n## Migrate from floating-vue\n\nThe main usage (the plugin, the three components, `v-tooltip` and\n`v-close-popper`) is unchanged. The differences:\n\n- **Imports**: `floating-vue` → `vue-afloat`, and\n  `floating-vue/dist/style.css` → `vue-afloat/style.css`.\n- **CSS classes renamed**: `v-popper*` → `vue-afloat*` throughout (e.g.\n  `v-popper__inner` → `vue-afloat__inner`, `v-popper--theme-tooltip` →\n  `vue-afloat-tooltip`). See the [CSS classes](#css-classes) table above for\n  the full mapping.\n- **Theme system removed**: there is no `config.themes`, no `theme` prop, and no\n  `getThemeClasses`. The built-in components keep their look through the same\n  `.vue-afloat-*` classes; customise with the `--vue-afloat-*` CSS variables\n  instead of registering themes.\n- **Deprecated APIs removed**: use `vTooltip`/`vClosePopper` (not the\n  `VTooltip`/`VClosePopper` constants); the `PopperMethods`/`ThemeClass` mixins\n  are gone (use the Composition API); `autoMinSize` → `autoSize=\"min\"` and\n  `autoMaxSize` → `autoBoundaryMaxSize`.\n- **Dropped**: the Nuxt module, the UMD build (ESM-only now), the\n  `SHOW_EVENT_MAP`/`HIDE_EVENT_MAP` exports, and the rarely-used props\n  `autoSize`, `autoBoundaryMaxSize`, `arrowOverflow`, `computeTransformOrigin`,\n  `showGroup` and `positioningDisabled`.\n\n## Credits\n\nForked from [floating-vue](https://github.com/Akryum/floating-vue) by\n[Guillaume Chau](https://github.com/Akryum). All credit for the original\ndesign and API goes to the floating-vue authors and contributors.\n\n## License\n\n[MIT](./LICENSE.md) License © [Anthony Fu](https://github.com/antfu)\n[MIT](https://github.com/Akryum/floating-vue/blob/main/LICENSE) License © [Guillaume Chau](https://github.com/Akryum)\n\n<!-- Badges -->\n\n[npm-version-src]: https://img.shields.io/npm/v/vue-afloat?style=flat&colorA=080f12&colorB=1fa669\n[npm-version-href]: https://npmx.dev/package/vue-afloat\n[npm-downloads-src]: https://img.shields.io/npm/dm/vue-afloat?style=flat&colorA=080f12&colorB=1fa669\n[npm-downloads-href]: https://npmx.dev/package/vue-afloat\n[bundle-src]: https://img.shields.io/bundlephobia/minzip/vue-afloat?style=flat&colorA=080f12&colorB=1fa669&label=minzip\n[bundle-href]: https://bundlephobia.com/result?p=vue-afloat\n[license-src]: https://img.shields.io/github/license/antfu/vue-afloat.svg?style=flat&colorA=080f12&colorB=1fa669\n[license-href]: https://github.com/antfu/vue-afloat/blob/main/LICENSE\n","readmeFilename":""}