Menu
A dropdown list of actions with keyboard navigation and nested menu support.
API Reference
Original primitive API
Behavior, accessibility details, and low-level props are documented by Base UI.
Basic
MenuContent renders the portal and positioner internally, so the public composition only needs the trigger, content, optional arrow, and menu items.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSeparator,} from "moduix";export function MenuDemo() { return ( <Menu> <MenuTrigger render={<Button />}> Song <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuItem closeOnClick>Add to Library</MenuItem> <MenuItem closeOnClick>Add to Playlist</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>Play Next</MenuItem> <MenuItem closeOnClick>Play Last</MenuItem> <MenuSeparator /> <MenuItem closeOnClick disabled> Share </MenuItem> </MenuContent> </Menu> );}Full list of component variables available for project-level overrides.
| Property | Default | Description |
|---|---|---|
| --menu-arrow-height | 0.625rem | Controls popup arrow height. |
| --menu-arrow-inline-offset | 0.8125rem | Controls popup arrow inline offset. |
| --menu-arrow-size | 0.5rem | Controls popup arrow size. |
| --menu-arrow-stroke-color | var(--menu-popup-border-color) | Controls arrow stroke color. |
| --menu-arrow-width | 1.25rem | Controls popup arrow width. |
| --menu-backdrop-bg | var(--color-overlay) | Controls backdrop background. |
| --menu-backdrop-blur | 2px | Controls backdrop blur. |
| --menu-backdrop-transition | var(--transition-default) | Controls backdrop transition. |
| --menu-check-gap | 0.5rem | Controls checkbox/radio indicator gap. |
| --menu-check-indicator-size | 0.75rem | Controls checkbox/radio indicator size. |
| --menu-check-padding-x-start | 0.625rem | Controls checkbox/radio start padding. |
| --menu-checkbox-indicator-bg | transparent | Controls checkbox indicator background. |
| --menu-checkbox-indicator-bg-checked | var(--menu-checkbox-indicator-bg) | Controls checked checkbox indicator background. |
| --menu-checkbox-indicator-border-color | currentColor | Controls checkbox indicator border color. |
| --menu-checkbox-indicator-border-color-checked | var(--menu-checkbox-indicator-border-color) | Controls checked checkbox indicator border color. |
| --menu-checkbox-indicator-border-width | 0 | Controls checkbox indicator border width. |
| --menu-checkbox-indicator-radius | var(--radius-xs) | Controls checkbox indicator radius. |
| --menu-disabled-opacity | var(--opacity-disabled) | Controls disabled trigger opacity. |
| --menu-focus-ring-color | var(--color-ring) | Controls focus ring color. |
| --menu-focus-ring-width | var(--menu-trigger-border-width) | Controls focus ring width. |
| --menu-group-label-color | var(--color-muted-foreground) | Controls group label color. |
| --menu-group-label-font-size | var(--text-xs) | Controls group label font size. |
| --menu-group-label-line-height | var(--line-height-text-xs) | Controls group label line height. |
| --menu-group-label-padding-x-end | 0.75rem | Controls group label end padding. |
| --menu-group-label-padding-x-start | 0.625rem | Controls group label start padding. |
| --menu-group-label-padding-y | 0.35rem | Controls group label vertical padding. |
| --menu-group-padding-y | 0 | Controls group vertical padding. |
| --menu-highlight-bg | var(--color-foreground) | Controls highlighted item background. |
| --menu-highlight-color | var(--color-background) | Controls highlighted item color. |
| --menu-highlight-inset-x | var(--spacing-1) | Controls highlight inline inset. |
| --menu-highlight-radius | var(--radius-sm) | Controls highlight radius. |
| --menu-item-bg | transparent | Controls item background. |
| --menu-item-bg-disabled | var(--menu-item-bg) | Controls disabled item background. |
| --menu-item-disabled-color | var(--color-muted-foreground) | Controls disabled item color. |
| --menu-item-font-size | var(--text-sm) | Controls item font size. |
| --menu-item-gap | var(--spacing-2) | Controls item content gap. |
| --menu-item-height | 2rem | Controls item minimum height. |
| --menu-item-line-height | var(--line-height-text-sm) | Controls item line height. |
| --menu-item-padding-x-end | 1rem | Controls item end padding. |
| --menu-item-padding-x-start | 1rem | Controls item start padding. |
| --menu-item-padding-y | 0.5rem | Controls item vertical padding. |
| --menu-item-shortcut-color | var(--color-muted-foreground) | Controls shortcut color. |
| --menu-item-shortcut-font-size | var(--text-xs) | Controls shortcut font size. |
| --menu-item-shortcut-line-height | var(--line-height-text-xs) | Controls shortcut line height. |
| --menu-item-shortcut-padding-x-start | var(--spacing-4) | Controls shortcut start padding. |
| --menu-item-text-content-gap | var(--spacing-2) | Controls item text content gap. |
| --menu-item-text-icon-color | currentColor | Controls item text icon color. |
| --menu-item-text-icon-size | 1rem | Controls item text icon size. |
| --menu-popup-bg | var(--color-popover) | Controls popup background. |
| --menu-popup-border-color | var(--color-border) | Controls popup border color. |
| --menu-popup-border-width | var(--border-width-sm) | Controls popup border width. |
| --menu-popup-color | var(--color-popover-foreground) | Controls popup text color. |
| --menu-popup-height | auto | Controls popup height. |
| --menu-popup-max-height | 24rem | Controls popup maximum height. |
| --menu-popup-max-width | 20rem | Controls popup maximum width. |
| --menu-popup-min-width | 12rem | Controls popup minimum width. |
| --menu-popup-padding-y | 0.25rem | Controls popup vertical padding. |
| --menu-popup-radius | var(--radius-md) | Controls popup radius. |
| --menu-popup-scale | var(--scale-popup) | Controls popup enter/exit scale. |
| --menu-popup-shadow | var(--shadow-lg) | Controls popup shadow. |
| --menu-popup-width | auto | Controls popup width. |
| --menu-separator-color | var(--color-border) | Controls separator color. |
| --menu-separator-height | var(--border-width-sm) | Controls separator thickness. |
| --menu-separator-margin-x-end | 1rem | Controls separator end margin. |
| --menu-separator-margin-x-start | 1rem | Controls separator start margin. |
| --menu-separator-margin-y | 0.375rem | Controls separator vertical margin. |
| --menu-submenu-icon-size | 0.875rem | Controls submenu icon size. |
| --menu-submenu-open-bg | var(--color-accent) | Controls open submenu background. |
| --menu-submenu-trigger-gap | var(--spacing-3) | Controls submenu trigger gap. |
| --menu-submenu-trigger-padding-x-end | 1rem | Controls submenu trigger end padding. |
| --menu-transition | var(--transition-default) | Controls menu transition duration/timing. |
| --menu-trigger-bg | var(--color-background) | Controls trigger background. |
| --menu-trigger-bg-active | var(--menu-trigger-bg-hover) | Controls active trigger background. |
| --menu-trigger-bg-hover | var(--color-accent) | Controls hover trigger background. |
| --menu-trigger-border-color | var(--color-border) | Controls trigger border color. |
| --menu-trigger-border-width | var(--border-width-sm) | Controls trigger border width. |
| --menu-trigger-color | var(--color-foreground) | Controls trigger color. |
| --menu-trigger-font-size | var(--text-md) | Controls trigger font size. |
| --menu-trigger-gap | 0.5rem | Controls trigger content gap. |
| --menu-trigger-height | var(--size-lg) | Controls trigger minimum height. |
| --menu-trigger-icon-color | currentColor | Controls trigger icon color. |
| --menu-trigger-icon-size | 1rem | Controls trigger icon size. |
| --menu-trigger-line-height | var(--line-height-text-md) | Controls trigger line height. |
| --menu-trigger-padding-x | 0.875rem | Controls trigger horizontal padding. |
| --menu-trigger-padding-y | 0.5rem | Controls trigger vertical padding. |
| --menu-trigger-radius | var(--radius-md) | Controls trigger radius. |
Interactive variables scoped for docs preview without changing size scale tokens.
| Property | Value | Default | Description |
|---|---|---|---|
| --menu-arrow-stroke-color | var(--menu-popup-border-color) | Controls arrow stroke color. | |
| --menu-checkbox-indicator-border-color | currentColor | Controls checkbox indicator border color. | |
| --menu-highlight-bg | var(--color-foreground) | Controls highlight background. | |
| --menu-highlight-color | var(--color-background) | Controls highlight text color. | |
| --menu-item-bg | transparent | Controls item background. | |
| --menu-popup-bg | var(--color-popover) | Controls popup background. | |
| --menu-popup-border-color | var(--color-border) | Controls popup border color. | |
| --menu-popup-border-width | var(--border-width-sm) | Controls popup border width. | |
| --menu-popup-color | var(--color-popover-foreground) | Controls popup text color. | |
| --menu-popup-radius | var(--radius-md) | Controls popup radius. | |
| --menu-popup-shadow | var(--shadow-lg) | Controls popup shadow. | |
| --menu-trigger-bg | var(--color-background) | Controls trigger background. | |
| --menu-trigger-bg-hover | var(--color-accent) | Controls trigger hover background. | |
| --menu-trigger-border-width | var(--border-width-sm) | Controls trigger border width. | |
| --menu-trigger-radius | var(--radius-md) | Controls trigger radius. |
Anatomy
Menu is composed from a trigger and a popup content layer. Keep interactive items and nested branches
inside MenuContent so roving focus, keyboard navigation, and close behavior stay managed by the root.
Menu
├─ MenuTrigger
│ └─ MenuTriggerIcon
└─ MenuContent
├─ MenuArrow
├─ MenuItem
├─ MenuSeparator
└─ MenuSubmenu
├─ MenuSubmenuTrigger
│ └─ MenuSubmenuTriggerIcon
└─ MenuSubmenuContent
└─ MenuItem<Menu>
<MenuTrigger>
Song
<MenuTriggerIcon />
</MenuTrigger>
<MenuContent>
<MenuItem closeOnClick>Add to Library</MenuItem>
<MenuSubmenu>
<MenuSubmenuTrigger>
Add to Playlist
<MenuSubmenuTriggerIcon />
</MenuSubmenuTrigger>
<MenuSubmenuContent>
<MenuItem closeOnClick>Get Up!</MenuItem>
</MenuSubmenuContent>
</MenuSubmenu>
</MenuContent>
</Menu>| Part | Role |
|---|---|
Menu | Root state machine. Handles open state, focus management, and close interactions. |
MenuTrigger | Control that opens and closes the menu. Accepts trigger props like openOnHover, delay, and handle. |
MenuTriggerIcon | Optional trigger indicator. Renders the default icon or your custom icon as children. |
MenuContent | Popup container for items. Accepts positioning props and renders service slots internally. |
MenuArrow | Optional visual pointer from popup to trigger. |
MenuItem | Action row. Supports disabled state and closeOnClick behavior. |
MenuLinkItem | Item variant for navigation links while preserving menu behavior. |
MenuSeparator | Visual divider between related item groups. |
MenuSubmenu* | Nested branch for secondary actions (Trigger, TriggerIcon, and Content). |
MenuGroup* / controls | Optional structured controls: labels, radio groups/items, checkbox items, and indicator slots. |
MenuContent renders the Base UI portal, positioner, optional backdrop, optional viewport,
and popup internally. In most cases, keep those service slots hidden and style visible parts
such as trigger, items, separators, and arrow. Use classNames for service-slot classes and
slotProps only when you need to pass non-class props to portal, backdrop, positioner,
arrow, or viewport.
Composition
Use Menu for root state and behavior props such as open, defaultOpen,
onOpenChange, and handle. Add withViewport only when you need Base UI content transitions for
menus shared by multiple detached triggers.
className styles the visible popup. classNames styles the internal service slots hidden from
the default composition. MenuContent forwards Base UI popup props and accepts positioner props
such as side, sideOffset, align, alignOffset, arrowPadding, anchor,
collisionAvoidance, collisionBoundary, collisionPadding, sticky, positionMethod,
and disableAnchorTracking directly. Use container, withBackdrop, and withViewport for
common service-slot behavior, and use slotProps for the rare cases that need lower-level
Base UI portal, backdrop, positioner, arrow, or viewport props. Arrow is enabled by default;
set withArrow={false} to disable it:
<MenuContent
className={styles.popup}
classNames={{
portal: styles.portal,
backdrop: styles.backdrop,
positioner: styles.positioner,
arrow: styles.arrow,
viewport: styles.viewport,
}}
slotProps={{
positioner: {
collisionPadding: 8,
},
}}
withBackdrop
withViewport
/>Examples
Without Arrow
Set withArrow={false} when the popup should appear without a pointer.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSeparator,} from "moduix";export function WithoutArrowMenu() { return ( <Menu> <MenuTrigger render={<Button />}> Song <MenuTriggerIcon /> </MenuTrigger> <MenuContent withArrow={false}> <MenuItem closeOnClick>Add to Library</MenuItem> <MenuItem closeOnClick>Add to Playlist</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>Play Next</MenuItem> </MenuContent> </Menu> );}Groups And Controls
Use groups, radio items, and checkbox items when the menu changes application state.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuGroup, MenuGroupLabel, MenuRadioGroup, MenuRadioItem, MenuRadioItemIndicator, MenuItemText, MenuSeparator, MenuCheckboxItem, MenuCheckboxItemIndicator,} from "moduix";import { useState } from "react";export function GroupsAndControlsMenu() { const [sortBy, setSortBy] = useState("date"); const [showMinimap, setShowMinimap] = useState(true); return ( <Menu> <MenuTrigger render={<Button />}> View <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuGroup> <MenuGroupLabel>Sort</MenuGroupLabel> <MenuRadioGroup value={sortBy} onValueChange={setSortBy}> <MenuRadioItem value="date"> <MenuRadioItemIndicator /> <MenuItemText>Date</MenuItemText> </MenuRadioItem> <MenuRadioItem value="name"> <MenuRadioItemIndicator /> <MenuItemText>Name</MenuItemText> </MenuRadioItem> </MenuRadioGroup> </MenuGroup> <MenuSeparator /> <MenuGroup> <MenuGroupLabel>Workspace</MenuGroupLabel> <MenuCheckboxItem checked={showMinimap} onCheckedChange={setShowMinimap}> <MenuCheckboxItemIndicator /> <MenuItemText>Minimap</MenuItemText> </MenuCheckboxItem> </MenuGroup> </MenuContent> </Menu> );}Shortcuts
Use MenuItemShortcut for shortcut text that aligns to the end of each item.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuItemShortcut, MenuSeparator,} from "moduix";export function ShortcutsMenu() { return ( <Menu> <MenuTrigger render={<Button />}> Edit <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuItem closeOnClick> Copy <MenuItemShortcut>Ctrl+C</MenuItemShortcut> </MenuItem> <MenuItem closeOnClick> Paste <MenuItemShortcut>Ctrl+V</MenuItemShortcut> </MenuItem> <MenuSeparator /> <MenuItem closeOnClick> Rename <MenuItemShortcut>F2</MenuItemShortcut> </MenuItem> </MenuContent> </Menu> );}Indicator Right With Icon
Use indicator="end" to align checkbox and radio indicators to the end. Text and icon slots accept custom content and className.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuCheckboxItem, MenuItemText, MenuItemTextContent, MenuItemTextIcon, InfoIcon, MenuItemTextLabel, MenuCheckboxItemIndicator,} from "moduix";import { useState } from "react";export function IndicatorRightMenu() { const [showMinimap, setShowMinimap] = useState(true); return ( <Menu> <MenuTrigger render={<Button />}> View <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuCheckboxItem checked={showMinimap} onCheckedChange={setShowMinimap} indicator="end"> <MenuItemText> <MenuItemTextContent> <MenuItemTextIcon> <InfoIcon /> </MenuItemTextIcon> <MenuItemTextLabel>Minimap</MenuItemTextLabel> </MenuItemTextContent> </MenuItemText> <MenuCheckboxItemIndicator /> </MenuCheckboxItem> </MenuContent> </Menu> );}Nested
Use MenuSubmenu with MenuSubmenuTrigger and MenuSubmenuContent for nested actions.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSubmenu, MenuSubmenuTrigger, MenuSubmenuTriggerIcon, MenuSubmenuContent, MenuSeparator,} from "moduix";export function NestedMenu() { return ( <Menu> <MenuTrigger render={<Button />}> Song <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuItem closeOnClick>Add to Library</MenuItem> <MenuSubmenu> <MenuSubmenuTrigger> Add to Playlist <MenuSubmenuTriggerIcon /> </MenuSubmenuTrigger> <MenuSubmenuContent> <MenuItem closeOnClick>Get Up!</MenuItem> <MenuItem closeOnClick>Inside Out</MenuItem> <MenuItem closeOnClick>Night Beats</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>New Playlist...</MenuItem> </MenuSubmenuContent> </MenuSubmenu> </MenuContent> </Menu> );}Open On Hover
Use openOnHover when the trigger should behave like a hover menu while keeping keyboard support.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSeparator,} from "moduix";export function OpenOnHoverMenu() { return ( <Menu> <MenuTrigger render={<Button />} openOnHover delay={120}> Add to playlist <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuItem closeOnClick>Get Up!</MenuItem> <MenuItem closeOnClick>Inside Out</MenuItem> <MenuItem closeOnClick>Night Beats</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>New Playlist...</MenuItem> </MenuContent> </Menu> );}Positioned With Backdrop
Use side, align, and offset props on MenuContent to position the popup. Add withBackdrop when the menu should render an internal backdrop; style internal service slots through classNames.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSeparator,} from "moduix";export function PositionedWithBackdropMenu() { return ( <Menu> <MenuTrigger render={<Button />}> Export <MenuTriggerIcon /> </MenuTrigger> <MenuContent side="right" align="start" sideOffset={12} withBackdrop> <MenuItem closeOnClick>Export PNG</MenuItem> <MenuItem closeOnClick>Export PDF</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>Copy share link</MenuItem> </MenuContent> </Menu> );}Open Alert Dialog
Open a dialog from a menu item by closing the menu on click and updating dialog state in the item handler.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuItem, MenuSeparator, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle,} from "moduix";import { useState, Fragment } from "react";export function OpenAlertDialogMenu() { const [dialogOpen, setDialogOpen] = useState(false); return ( <Fragment> <Menu> <MenuTrigger render={<Button />}> Project <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuItem closeOnClick>Rename</MenuItem> <MenuItem closeOnClick>Duplicate</MenuItem> <MenuSeparator /> <MenuItem closeOnClick onClick={() => { setDialogOpen(true); }} > Delete... </MenuItem> </MenuContent> </Menu> <AlertDialog open={dialogOpen} onOpenChange={setDialogOpen}> <AlertDialogContent> <AlertDialogHeader> <AlertDialogTitle>Delete project?</AlertDialogTitle> <AlertDialogDescription> This action cannot be undone and will permanently remove all environments. </AlertDialogDescription> </AlertDialogHeader> <AlertDialogFooter> <AlertDialogCancel>Cancel</AlertDialogCancel> <AlertDialogAction>Delete</AlertDialogAction> </AlertDialogFooter> </AlertDialogContent> </AlertDialog> </Fragment> );}Link Items
Use MenuLinkItem for navigation items that should render as links.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, MenuContent, MenuLinkItem, MenuSeparator, MenuItem,} from "moduix";export function LinkItemsMenu() { return ( <Menu> <MenuTrigger render={<Button />}> Navigate <MenuTriggerIcon /> </MenuTrigger> <MenuContent> <MenuLinkItem href="#projects">Projects</MenuLinkItem> <MenuLinkItem href="#teams">Teams</MenuLinkItem> <MenuLinkItem href="#billing">Billing</MenuLinkItem> <MenuSeparator /> <MenuItem closeOnClick>Copy Link</MenuItem> </MenuContent> </Menu> );}Detached Trigger
Use createMenuHandle when the trigger and root need to be rendered in different places.
import { Button, createMenuHandle, MenuTrigger, MenuTriggerIcon, Menu, MenuContent, MenuItem, MenuSeparator,} from "moduix";import { useMemo, Fragment } from "react";export function DetachedTriggerMenu() { const menuHandle = useMemo(() => createMenuHandle(), []); return ( <Fragment> <div className={styles.detachedTrigger}> <MenuTrigger render={<Button />} handle={menuHandle}> Actions <MenuTriggerIcon /> </MenuTrigger> </div> <Menu handle={menuHandle}> <MenuContent> <MenuItem closeOnClick>Edit</MenuItem> <MenuItem closeOnClick>Share</MenuItem> <MenuSeparator /> <MenuItem closeOnClick>Archive</MenuItem> </MenuContent> </Menu> </Fragment> );}.detachedTrigger { display: flex; justify-content: center; margin-bottom: var(--spacing-4);}Custom Styles
Use className for visible slots and classNames for internal service slots. Icon slots accept children from your application or an external icon library.
import { Button, Menu, MenuTrigger, MenuTriggerIcon, ChevronDownIcon, MenuContent, MenuItem, MenuItemTextContent, MenuItemTextIcon, MapIcon, MenuItemTextLabel, MenuSubmenu, MenuSubmenuTrigger, InfoIcon, MenuSubmenuTriggerIcon, MenuSubmenuContent,} from "moduix";export function CustomStylesMenu() { return ( <Menu> <MenuTrigger render={<Button />} className={styles.customTrigger}> Places <MenuTriggerIcon className={styles.customTriggerIcon}> <ChevronDownIcon /> </MenuTriggerIcon> </MenuTrigger> <MenuContent className={styles.customPopup} classNames={{ portal: styles.customPortal, backdrop: styles.customBackdrop, positioner: styles.customPositioner, }} withBackdrop > <MenuItem closeOnClick className={styles.customItem}> <MenuItemTextContent> <MenuItemTextIcon> <MapIcon /> </MenuItemTextIcon> <MenuItemTextLabel>Open map</MenuItemTextLabel> </MenuItemTextContent> </MenuItem> <MenuSubmenu> <MenuSubmenuTrigger className={styles.customItem}> <MenuItemTextContent> <MenuItemTextIcon> <InfoIcon /> </MenuItemTextIcon> <MenuItemTextLabel>More</MenuItemTextLabel> </MenuItemTextContent> <MenuSubmenuTriggerIcon> <ChevronDownIcon /> </MenuSubmenuTriggerIcon> </MenuSubmenuTrigger> <MenuSubmenuContent> <MenuItem closeOnClick className={styles.customItem}> Nearby </MenuItem> <MenuItem closeOnClick className={styles.customItem}> Routes </MenuItem> </MenuSubmenuContent> </MenuSubmenu> </MenuContent> </Menu> );}.customTrigger { border-color: var(--color-primary); background: linear-gradient(var(--color-background), var(--color-background)) padding-box, linear-gradient(135deg, var(--color-primary), var(--color-ring)) border-box; color: var(--color-primary);}.customTriggerIcon { --menu-trigger-icon-size: 0.875rem;}.customPortal { position: relative;}.customBackdrop { background-color: rgb(0 0 0 / 0.08); backdrop-filter: blur(0.125rem);}.customPositioner { z-index: var(--z-popup);}.customPopup { --menu-popup-min-width: 13rem; --menu-popup-bg: var(--color-background); --menu-popup-border-color: var(--color-primary); --menu-popup-shadow: var(--shadow-lg); --menu-highlight-bg: var(--color-primary); --menu-highlight-color: var(--color-primary-foreground); --menu-separator-color: var(--color-primary);}.customItem { --menu-item-padding-x-start: var(--spacing-3); --menu-item-padding-x-end: var(--spacing-3); --menu-item-text-icon-color: var(--color-primary);}