coss.com Svelte

Menu

A list of actions in a dropdown, enhanced with keyboard navigation.

API Reference
Loading p-menu-1 preview…

Installation

pnpm dlx shadcn-svelte@latest add https://coss-sv.vercel.app/r/menu.json

Usage

<script lang="ts">
  import * as Menu from "$lib/components/ui/menu/index.js";
</script>

<Menu.Root>
  <Menu.Trigger>Open menu</Menu.Trigger>
  <Menu.Popup align="start" sideOffset={4}>
    <Menu.Item>Profile</Menu.Item>
    <Menu.Separator />
    <Menu.Group>
      <Menu.GroupLabel>Playback</Menu.GroupLabel>
      <Menu.Item>Play</Menu.Item>
      <Menu.Item>Pause</Menu.Item>
    </Menu.Group>
    <Menu.Separator />
    <Menu.CheckboxItem>Shuffle</Menu.CheckboxItem>
    <Menu.CheckboxItem>Repeat</Menu.CheckboxItem>
    <Menu.CheckboxItem variant="switch">Auto save</Menu.CheckboxItem>
    <Menu.Separator />
    <Menu.Sub>
      <Menu.SubTrigger>Add to playlist</Menu.SubTrigger>
      <Menu.SubPopup>
        <Menu.Item>Jazz</Menu.Item>
        <Menu.Item>Rock</Menu.Item>
      </Menu.SubPopup>
    </Menu.Sub>
  </Menu.Popup>
</Menu.Root>

API Reference

Root component. Alias for Menu.Root from Shards UI. Also exported as DropdownMenu.

Trigger button that opens the menu. Alias for Menu.Trigger from Shards UI. Also exported as DropdownMenuTrigger.

Popup container that displays the menu content. Also exported as DropdownMenuContent.

PropTypeDefaultDescription
side"top" \| "bottom" \| "left" \| "right""bottom"Side of the trigger to position the popup
align"start" \| "center" \| "end""center"Alignment relative to the trigger
sideOffsetnumber4Distance from the trigger in pixels
alignOffsetnumber-Offset along the alignment axis
portalPropsMenuPopupProps["portalProps"]-Props forwarded to the internal portal

Groups related menu items. Alias for Menu.Group from Shards UI. Also exported as DropdownMenuGroup.

Individual menu item. Also exported as DropdownMenuItem.

PropTypeDefaultDescription
insetboolean-Adds left padding to align with items that have icons
variant"default" \| "destructive""default"Controls the item styling

Using inset: When mixing items with and without icons, use inset on icon-less items to maintain alignment:

<Menu.Item><PencilIcon /> Edit</Menu.Item>
<Menu.Item><DeleteIcon /> Delete</Menu.Item>
<Menu.Item inset>Profile</Menu.Item>

Link menu item for navigation. LinkItem renders a native <a> when you pass href. Styled like Menu.Item.

PropTypeDefaultDescription
insetboolean-Adds left padding to align with items that have icons
variant"default" \| "destructive""default"Controls the item styling
closeOnClickbooleantrueWhether the menu closes when the link is clicked

Use href for plain anchor links:

<Menu.LinkItem href="/docs">Docs</Menu.LinkItem>

Checkbox menu item. Also exported as DropdownMenuCheckboxItem.

PropTypeDefaultDescription
variant"default" \| "switch""default"Display style; switch shows a toggle switch indicator

Groups radio menu items. Alias for Menu.RadioGroup from Shards UI. Also exported as DropdownMenuRadioGroup.

Radio menu item. Styled wrapper for Menu.RadioItem from Shards UI. Also exported as DropdownMenuRadioItem.

Label for a menu group. Also exported as DropdownMenuLabel.

PropTypeDefaultDescription
insetboolean-Adds left padding to align with items that have icons

Visual separator between menu items. Styled wrapper for Menu.Separator from Shards UI. Also exported as DropdownMenuSeparator.

Displays keyboard shortcut text. Custom component. Also exported as DropdownMenuShortcut.

Submenu container. Alias for Menu.Sub from Shards UI. Also exported as DropdownMenuSub.

Trigger for opening a submenu. Also exported as DropdownMenuSubTrigger.

PropTypeDefaultDescription
insetboolean-Adds left padding to align with items that have icons

Popup for submenu content. Also exported as DropdownMenuSubContent.

PropTypeDefaultDescription
align"start" \| "center" \| "end""start"Alignment relative to the trigger
sideOffsetnumber0Distance from the trigger in pixels
alignOffsetnumber-5Offset along the alignment axis; defaults to -5 unless align="center"

Examples

Open on Hover

Loading p-menu-2 preview…

With Checkbox

Loading p-menu-3 preview…

With Switch

Menu.CheckboxItem supports a variant="switch" prop that displays a decorative switch indicator instead of a checkmark. This is a purely visual variant - the component remains a checkbox item with the same functionality.

Loading p-menu-9 preview…

With Radio Group

Loading p-menu-4 preview…
Loading p-menu-5 preview…

With Group Label

Loading p-menu-6 preview…

Nested Menu

Loading p-menu-7 preview…

Close on Click

Loading p-menu-8 preview…

Open a Dialog

Loading p-dialog-2 preview…