Dropdown Menu

@sushindustries/ui

A menu hung off a button: the popover API for the layer, arrow keys for the list, and light-dismiss for free.

7 min read
View as MarkdownEdit on GitHub

One paragraph on what this does and when to reach for it. This is the first thing on the component's page and the line that goes into llms.txt, so it should survive being read on its own.

Viewport width
Phone22remthe floor, the narrowest this promises to work at
tanstacktanstack add https://adamjurek.com/r/tanstack/dropdown-menu.jsonshadcnpnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/dropdown-menu.json

Why it is built this way

The decision somebody would otherwise have to reverse-engineer from the source. Not what the code does - the source says that - but what it is avoiding.

What it does not do

The boundary. A component that lists what it is not is a component you can decide against in ten seconds.

Install commands are not written here

Anything in packages/ui/registry.ts gets its TanStack, shadcn and pnpm commands appended to the bottom of this tab, along with its version, dependencies and files. Do not add your own - the generated ones cannot go stale, and a second copy immediately does.

Install

tanstack add https://adamjurek.com/r/tanstack/dropdown-menu.json
shell
pnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/dropdown-menu.json
shell
pnpm add @sushindustries/ui @sushindustries/atoms
shell

What you get

Version0.1.0
Categorylayout · Overlays
Filesdropdown-menu.tsx
DependenciesNone
Also installsiconIconThe glyph set, generated from a Markdown table where every drawing carries its reason. One component, typed names, no icon font.@sushindustries/ui · content
Tagsblock, menu, popover, keyboard, no-deps

No runtime dependencies

It brings nothing with it beyond the stylesheet.

UsesIconIconThe glyph set, generated from a Markdown table where every drawing carries its reason. One component, typed names, no icon font.@sushindustries/ui · content