Components

Dropdown Menu

Dropdown menus reveal secondary actions, settings, and grouped choices without permanently occupying layout space.

Basic Usage

Use a simple trigger and a short action list for the most common menu pattern.

Grouped Options

Labels, separators, check items, radio items, and shortcuts help organize denser menu content without losing scanability.

Different Triggers

Menus often sit behind different trigger styles depending on whether the action is primary, contextual, or account-related.

Submenus are useful for deeper action trees, but they should stay narrow and clearly grouped.

Selection Items

Use checkbox and radio items for menu options that change persistent view or sorting state.

Item Icons

Leading icons go in the item’s prefix slot (or start).

Sizes

size on pk-dropdown-menu scales items, labels, and icons together.

Slotted labels and host metrics

Item labels live in light DOM (default slot). They inherit type metrics from the pk-dropdown-item :host — not from the shadow .item row, and not from the menu host or page. Size tokens set --pk-dropdown-item-font-size / --pk-dropdown-item-line-height on the item host so Craft CP (tight body line-height) and Tailwind-scoped hosts get the same row rhythm without consumer CSS.

Do not put font-size / line-height on pk-dropdown-menu (or a wrapper) expecting item labels to pick them up for layout — ancestor noise can crush rows until the kit :host pin is present. After that pin, consumers should remove temporary menu-host type overrides.

Stress this in the workshop playground at /tools/slotted-host: Craft vs Tailwind hosts, ellipsis + icon menus, a text-trigger type picker, an ancestor line-height: normal case, selects, overlay mode, and Measure popups.

Edit this page
Last updated: Jul 21, 2026, 10:52 AM