메뉴
버튼이 연 동작 목록입니다. 뜬 층(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 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| sideOffset | number | 4 | 트리거와의 간격(px) |
| align | "start" | "center" | "end" | "start" | 트리거 기준 맞춤. 행 메뉴(⋯)는 "end" 로 오른쪽 끝을 맞춘다 |
이 밖에 Radix DropdownMenu.Content props를 그대로 받습니다.
DropdownMenuItem
| prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
| inset | boolean | — | 체크 · 라디오 칸(16)만큼 들여 쓴다 |
| variant | "default" | "danger" | "default" | "danger" 는 빨강 글자, 강조되면 빨강 틴트 면. v1 의 "destructive" 다 |
이 밖에 Radix DropdownMenu.Item props를 그대로 받습니다.
DropdownMenuCheckboxItem
| prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
| closeOnSelect | boolean | false | 고른 뒤 메뉴를 닫는가. 기본 false — 보기 설정을 연달아 바꾼다(v1 은 닫혔다) |
이 밖에 Radix DropdownMenu.CheckboxItem props를 그대로 받습니다.
DropdownMenuShortcut
| prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
| keys | readonly string[] | — | 키마다 키캡 하나 |
이 밖에 <span> props를 그대로 받습니다.
DropdownMenuMeta
이 밖에 <span> props를 그대로 받습니다.
DropdownMenuLabel · DropdownMenuSubTrigger
| prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
| inset | boolean | — | 체크 · 라디오 칸만큼 들여 쓴다 |
이 밖에 Radix DropdownMenu.SubTrigger props를 그대로 받습니다.