본문으로 건너뛰기

메뉴

버튼이 연 동작 목록입니다. 뜬 층(60)의 판지 한 장이고, 작고 잠깐 뜨므로 지붕 모서리를 꺾지 않습니다.

항목은 솟지 않고 강조 면만 바뀝니다. 키보드로 온 항목에는 안쪽 2px 링이 더해집니다. 단축키는 키캡으로 보여 메뉴가 단축키를 가르칩니다. radix-ui 위에 만들고 아이콘은 내부 세트를 써서 lucide-react 가 필요 없습니다.

import
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, … } from "@uyoolabs/ui/menu";
쓰는 경우
행 메뉴(⋯) · 더 보기 · 계정 메뉴, 켜고 끄는 보기 설정(체크 항목), 하나를 고르는 정렬 · 테마(라디오 항목)에 씁니다. 항목이 7개를 넘으면 그룹 라벨 · 구분선으로 묶습니다.
쓰지 않는 경우
값을 입력 · 선택하는 폼 칸(Select · Combobox), 메뉴 안의 입력칸 · 버튼 묶음(Popover), 페이지로 가는 링크 목록(내비)에는 쓰지 않습니다. 하위 메뉴를 두 단계 넘게 겹치지 않고, 권한 없는 항목을 이유 없이 흐리게 두지 않습니다.
v1 에서 바뀐 것
variant="destructive" → "danger", 체크 항목은 고른 뒤 열린 채(closeOnSelect 로 v1 동작), 층 z-50 → 60, 비활성은 opacity 대신 글자색, 아이콘은 lucide 대신 내부 세트. 자세한 표는 docs/migration/v2-overlay.md 입니다.

기본

라벨 · 아이콘 · 단축키 · 구분선

행 메뉴

트리거 오른쪽 끝에 맞춰 엽니다. 비활성 이유는 Meta 글자로, 되돌릴 수 없는 동작은 danger 항목 하나로 맨 아래에 둡니다.

체크 · 라디오 항목

체크 항목은 골라도 열린 채 남아 여러 보기를 연달아 바꿉니다. 라디오 항목은 고르면 닫힙니다.

하위 메뉴와 지금 값

하위 메뉴는 포털로 그려 부모에 잘리지 않습니다. 지금 값은 트리거 오른쪽의 Meta 글자로 보입니다.

키보드

WAI-ARIA APG Menu Button + Menu 입니다. 포커스를 가두지 않습니다.

키동작
Enter·Space·↓트리거에서 열고 첫 항목에 선다
↑·↓이전 · 다음 항목(비활성은 건너뛰고 끝에서 멈춘다)
Home·End처음 · 마지막 항목
→하위 메뉴를 열고 첫 항목으로
←하위 메뉴를 닫고 트리거 항목으로
Enter·Space고른다. 체크 항목은 열린 채 상태만 바뀐다
Esc닫고 트리거로 포커스를 돌린다
Tab닫고 트리거 다음 요소로 간다(Shift+Tab 은 앞 요소)
글자그 글자로 시작하는 항목으로. 한 · 일은 IME 때문에 보장하지 않아 textValue 로 맞춘다

props

소스의 타입과 JSDoc 에서 생성한 표입니다. 컴포넌트를 고치면 pnpm gen 으로 다시 만듭니다.

DropdownMenuContent

prop타입기본값설명
sideOffsetnumber4트리거와의 간격(px)
align"start" | "center" | "end""start"트리거 기준 맞춤. 행 메뉴(⋯)는 "end" 로 오른쪽 끝을 맞춘다

이 밖에 Radix DropdownMenu.Content props를 그대로 받습니다.

DropdownMenuItem

prop타입기본값설명
insetboolean—체크 · 라디오 칸(16)만큼 들여 쓴다
variant"default" | "danger""default""danger" 는 빨강 글자, 강조되면 빨강 틴트 면. v1 의 "destructive" 다

이 밖에 Radix DropdownMenu.Item props를 그대로 받습니다.

DropdownMenuCheckboxItem

prop타입기본값설명
closeOnSelectbooleanfalse고른 뒤 메뉴를 닫는가. 기본 false — 보기 설정을 연달아 바꾼다(v1 은 닫혔다)

이 밖에 Radix DropdownMenu.CheckboxItem props를 그대로 받습니다.

DropdownMenuShortcut

prop타입기본값설명
keysreadonly string[]—키마다 키캡 하나

이 밖에 <span> props를 그대로 받습니다.

DropdownMenuMeta

이 밖에 <span> props를 그대로 받습니다.

DropdownMenuLabel · DropdownMenuSubTrigger

prop타입기본값설명
insetboolean—체크 · 라디오 칸만큼 들여 쓴다

이 밖에 Radix DropdownMenu.SubTrigger props를 그대로 받습니다.