--- description: A non-modal dialog that floats around a trigger element. links: - label: HoverCard icon: i-custom-reka-ui to: https://reka-ui.com/docs/components/hover-card - label: Popover icon: i-custom-reka-ui to: https://reka-ui.com/docs/components/popover - label: GitHub icon: i-simple-icons-github to: https://github.com/nuxt/ui/tree/v3/src/runtime/components/Popover.vue --- ## Usage Use a [Button](/components/button) or any other component in the default slot of the Popover. Then, use the `#content` slot to add the content displayed when the Popover is open. ::component-code --- prettier: true slots: default: | content: | --- :u-button{label="Open" color="neutral" variant="subtle"} #content :placeholder{class="size-48 m-4 inline-flex"} :: ### Mode Use the `mode` prop to change the mode of the Popover. Defaults to `click`. ::component-code --- prettier: true items: mode: - click - hover props: mode: 'hover' slots: default: | content: | --- :u-button{label="Open" color="neutral" variant="subtle"} #content :placeholder{class="size-48 m-4 inline-flex"} :: ::note When using the `hover` mode, the Reka UI [`HoverCard`](https://reka-ui.com/docs/components/hover-card) component is used instead of the [`Popover`](https://reka-ui.com/docs/components/popover). :: ### Delay When using the `hover` mode, you can use the `open-delay` and `close-delay` props to control the delay before the Popover is opened or closed. ::component-code --- prettier: true ignore: - mode props: mode: 'hover' openDelay: 500 closeDelay: 300 slots: default: | content: | --- :u-button{label="Open" color="neutral" variant="subtle"} #content :placeholder{class="size-48 m-4 inline-flex"} :: ### Content Use the `content` prop to control how the Popover content is rendered, like its `align` or `side` for example. ::component-code --- prettier: true items: content.align: - start - center - end content.side: - right - left - top - bottom props: content: align: center side: bottom sideOffset: 8 slots: default: | content: | --- :u-button{label="Open" color="neutral" variant="subtle"} #content :placeholder{class="size-48 m-4 inline-flex"} :: ### Arrow Use the `arrow` prop to display an arrow on the Popover. ::component-code --- prettier: true ignore: - arrow props: arrow: true slots: default: | content: | --- :u-button{label="Open" color="neutral" variant="subtle"} #content :placeholder{class="size-48 m-4 inline-flex"} :: ## Examples ### Control open state You can control the open state by using the `default-open` prop or the `v-model:open` directive. ::component-example --- name: 'popover-open-example' --- :: ::note In this example, leveraging [`defineShortcuts`](/composables/define-shortcuts), you can toggle the Popover by pressing :kbd{value="O"}. :: ### With command palette You can use a [CommandPalette](/components/command-palette) component inside the Popover's content. ::component-example --- collapse: true name: 'popover-command-palette-example' --- :: ## API ### Props :component-props ### Slots :component-slots ### Emits :component-emits ## Theme :component-theme