@ceed/cds 1.34.1 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordions/Accordions.d.ts +1 -0
- package/dist/components/Alert/Alert.d.ts +5 -5
- package/dist/components/Autocomplete/Autocomplete.d.ts +2 -2
- package/dist/components/Avatar/Avatar.d.ts +7 -17
- package/dist/components/Box/Box.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -5
- package/dist/components/Button/Button.d.ts +3 -2
- package/dist/components/Calendar/Calendar.d.ts +1 -0
- package/dist/components/Card/Card.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/components/Chip/Chip.d.ts +1 -0
- package/dist/components/Container/Container.d.ts +6 -1
- package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/DialogActions/DialogActions.d.ts +1 -0
- package/dist/components/DialogContent/DialogContent.d.ts +1 -0
- package/dist/components/DialogFrame/DialogFrame.d.ts +1 -1
- package/dist/components/DialogTitle/DialogTitle.d.ts +1 -0
- package/dist/components/Divider/Divider.d.ts +1 -0
- package/dist/components/Drawer/Drawer.d.ts +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +28 -1
- package/dist/components/FormControl/FormControl.d.ts +1 -0
- package/dist/components/FormHelperText/FormHelperText.d.ts +1 -0
- package/dist/components/FormLabel/FormLabel.d.ts +1 -0
- package/dist/components/Grid/Grid.d.ts +1 -0
- package/dist/components/IconButton/IconButton.d.ts +3 -2
- package/dist/components/IconMenuButton/IconMenuButton.d.ts +7 -6
- package/dist/components/InfoSign/InfoSign.d.ts +3 -2
- package/dist/components/Input/Input.d.ts +8 -22
- package/dist/components/InsetDrawer/InsetDrawer.d.ts +1 -0
- package/dist/components/Markdown/Markdown.d.ts +9 -24
- package/dist/components/Menu/Menu.d.ts +2 -1
- package/dist/components/MenuButton/MenuButton.d.ts +10 -8
- package/dist/components/Modal/Modal.d.ts +4 -2
- package/dist/components/NavigationGroup/NavigationGroup.d.ts +3 -2
- package/dist/components/NavigationItem/NavigationItem.d.ts +3 -2
- package/dist/components/Navigator/Navigator.d.ts +5 -4
- package/dist/components/Pagination/Pagination.d.ts +1 -1
- package/dist/components/Radio/Radio.d.ts +1 -0
- package/dist/components/RadioList/RadioList.d.ts +3 -2
- package/dist/components/Select/Select.d.ts +20 -10
- package/dist/components/Sheet/Sheet.d.ts +1 -0
- package/dist/components/Stack/Stack.d.ts +1 -0
- package/dist/components/Stepper/Stepper.d.ts +2 -1
- package/dist/components/Switch/Switch.d.ts +1 -0
- package/dist/components/Table/Table.d.ts +7 -5
- package/dist/components/Tabs/Tabs.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +8 -20
- package/dist/components/Tooltip/Tooltip.d.ts +1 -0
- package/dist/components/Typography/Typography.d.ts +1 -0
- package/dist/components/Uploader/Uploader.d.ts +18 -17
- package/dist/components/data-display/Avatar.md +60 -72
- package/dist/components/data-display/Badge.md +197 -181
- package/dist/components/data-display/Chip.md +164 -142
- package/dist/components/data-display/DataTable.md +843 -338
- package/dist/components/data-display/InfoSign.md +1 -3
- package/dist/components/data-display/Markdown.md +93 -125
- package/dist/components/data-display/Table.md +1453 -1007
- package/dist/components/data-display/Typography.md +113 -116
- package/dist/components/feedback/Alert.md +80 -86
- package/dist/components/feedback/CircularProgress.md +32 -36
- package/dist/components/feedback/Dialog.md +25 -17
- package/dist/components/feedback/Modal.md +296 -264
- package/dist/components/feedback/Skeleton.md +125 -89
- package/dist/components/index.d.ts +62 -2
- package/dist/components/inputs/Autocomplete.md +191 -95
- package/dist/components/inputs/Button.md +83 -83
- package/dist/components/inputs/ButtonGroup.md +195 -185
- package/dist/components/inputs/Calendar.md +25 -28
- package/dist/components/inputs/Checkbox.md +11 -29
- package/dist/components/inputs/CurrencyInput.md +4 -4
- package/dist/components/inputs/DatePicker.md +229 -110
- package/dist/components/inputs/DateRangePicker.md +248 -137
- package/dist/components/inputs/FilterableCheckboxGroup.md +115 -55
- package/dist/components/inputs/FormControl.md +75 -69
- package/dist/components/inputs/IconButton.md +229 -205
- package/dist/components/inputs/Input.md +131 -98
- package/dist/components/inputs/MonthPicker.md +186 -84
- package/dist/components/inputs/MonthRangePicker.md +73 -49
- package/dist/components/inputs/PercentageInput.md +15 -31
- package/dist/components/inputs/RadioButton.md +320 -256
- package/dist/components/inputs/RadioList.md +66 -50
- package/dist/components/inputs/RadioTileGroup.md +287 -170
- package/dist/components/inputs/SearchBar.md +82 -60
- package/dist/components/inputs/Select.md +184 -120
- package/dist/components/inputs/Slider.md +153 -102
- package/dist/components/inputs/Switch.md +193 -138
- package/dist/components/inputs/Textarea.md +15 -20
- package/dist/components/inputs/Uploader/Uploader.md +68 -39
- package/dist/components/layout/Box.md +841 -662
- package/dist/components/layout/Container.md +3 -11
- package/dist/components/layout/Grid.md +480 -394
- package/dist/components/layout/Stack.md +739 -566
- package/dist/components/navigation/Breadcrumbs.md +4 -4
- package/dist/components/navigation/Drawer.md +34 -25
- package/dist/components/navigation/Dropdown.md +745 -408
- package/dist/components/navigation/IconMenuButton.md +14 -6
- package/dist/components/navigation/InsetDrawer.md +8 -13
- package/dist/components/navigation/Link.md +1 -2
- package/dist/components/navigation/Menu.md +623 -502
- package/dist/components/navigation/MenuButton.md +18 -10
- package/dist/components/navigation/NavigationGroup.md +19 -50
- package/dist/components/navigation/NavigationItem.md +6 -6
- package/dist/components/navigation/Navigator.md +26 -28
- package/dist/components/navigation/Pagination.md +86 -75
- package/dist/components/navigation/Stepper.md +2 -12
- package/dist/components/navigation/Tabs.md +48 -36
- package/dist/components/surfaces/Accordions.md +89 -172
- package/dist/components/surfaces/Card.md +1094 -709
- package/dist/components/surfaces/Divider.md +562 -412
- package/dist/components/surfaces/Sheet.md +700 -518
- package/dist/guides/ThemeProvider.md +8 -8
- package/dist/index.browser.js +4 -4
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +1074 -1033
- package/dist/index.d.ts +2 -1
- package/dist/index.js +720 -671
- package/framer/index.js +1 -1
- package/package.json +32 -35
|
@@ -5,18 +5,20 @@ Menu and MenuItem are the content layer of a dropdown menu system. Menu renders
|
|
|
5
5
|
Menu is built on Joy UI's Menu component and supports sizes, placements, custom styling, and rich content inside menu items such as icons, links, and nested layouts.
|
|
6
6
|
|
|
7
7
|
```tsx
|
|
8
|
-
<Box
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
</
|
|
8
|
+
<Box
|
|
9
|
+
sx={{
|
|
10
|
+
p: 2
|
|
11
|
+
}}
|
|
12
|
+
>
|
|
13
|
+
<Dropdown>
|
|
14
|
+
<MenuButton variant="outlined">메뉴 열기</MenuButton>
|
|
15
|
+
<Menu>
|
|
16
|
+
<MenuItem>첫 번째 옵션</MenuItem>
|
|
17
|
+
<MenuItem>두 번째 옵션</MenuItem>
|
|
18
|
+
<MenuItem>세 번째 옵션</MenuItem>
|
|
19
|
+
</Menu>
|
|
20
|
+
</Dropdown>
|
|
21
|
+
</Box>
|
|
20
22
|
```
|
|
21
23
|
|
|
22
24
|
| Field | Description | Default |
|
|
@@ -65,29 +67,29 @@ A standard menu with simple text items, optionally separated by dividers.
|
|
|
65
67
|
|
|
66
68
|
```tsx
|
|
67
69
|
<Stack direction="row" spacing={3}>
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
<Dropdown>
|
|
71
|
+
<MenuButton variant="outlined">기본 메뉴</MenuButton>
|
|
72
|
+
<Menu>
|
|
73
|
+
<MenuItem>홈</MenuItem>
|
|
74
|
+
<MenuItem>제품</MenuItem>
|
|
75
|
+
<MenuItem>서비스</MenuItem>
|
|
76
|
+
<MenuItem>문의</MenuItem>
|
|
77
|
+
</Menu>
|
|
78
|
+
</Dropdown>
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
</Stack>
|
|
80
|
+
<Dropdown>
|
|
81
|
+
<MenuButton variant="soft">구분선 포함</MenuButton>
|
|
82
|
+
<Menu>
|
|
83
|
+
<MenuItem>새 파일</MenuItem>
|
|
84
|
+
<MenuItem>열기</MenuItem>
|
|
85
|
+
<ListDivider />
|
|
86
|
+
<MenuItem>저장</MenuItem>
|
|
87
|
+
<MenuItem>다른 이름으로 저장</MenuItem>
|
|
88
|
+
<ListDivider />
|
|
89
|
+
<MenuItem>종료</MenuItem>
|
|
90
|
+
</Menu>
|
|
91
|
+
</Dropdown>
|
|
92
|
+
</Stack>
|
|
91
93
|
```
|
|
92
94
|
|
|
93
95
|
### Menu Sizes
|
|
@@ -96,39 +98,39 @@ Menu supports `sm`, `md`, and `lg` sizes that affect the padding and font size o
|
|
|
96
98
|
|
|
97
99
|
```tsx
|
|
98
100
|
<Stack direction="row" spacing={3}>
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
101
|
+
<Dropdown>
|
|
102
|
+
<MenuButton size="sm" variant="outlined">
|
|
103
|
+
Small Menu
|
|
104
|
+
</MenuButton>
|
|
105
|
+
<Menu size="sm">
|
|
106
|
+
<MenuItem>작은 아이템 1</MenuItem>
|
|
107
|
+
<MenuItem>작은 아이템 2</MenuItem>
|
|
108
|
+
<MenuItem>작은 아이템 3</MenuItem>
|
|
109
|
+
</Menu>
|
|
110
|
+
</Dropdown>
|
|
109
111
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
<Dropdown>
|
|
113
|
+
<MenuButton size="md" variant="outlined">
|
|
114
|
+
Medium Menu
|
|
115
|
+
</MenuButton>
|
|
116
|
+
<Menu size="md">
|
|
117
|
+
<MenuItem>중간 아이템 1</MenuItem>
|
|
118
|
+
<MenuItem>중간 아이템 2</MenuItem>
|
|
119
|
+
<MenuItem>중간 아이템 3</MenuItem>
|
|
120
|
+
</Menu>
|
|
121
|
+
</Dropdown>
|
|
120
122
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
</Stack>
|
|
123
|
+
<Dropdown>
|
|
124
|
+
<MenuButton size="lg" variant="outlined">
|
|
125
|
+
Large Menu
|
|
126
|
+
</MenuButton>
|
|
127
|
+
<Menu size="lg">
|
|
128
|
+
<MenuItem>큰 아이템 1</MenuItem>
|
|
129
|
+
<MenuItem>큰 아이템 2</MenuItem>
|
|
130
|
+
<MenuItem>큰 아이템 3</MenuItem>
|
|
131
|
+
</Menu>
|
|
132
|
+
</Dropdown>
|
|
133
|
+
</Stack>
|
|
132
134
|
```
|
|
133
135
|
|
|
134
136
|
### MenuItem States
|
|
@@ -137,17 +139,17 @@ MenuItems can be `selected`, `disabled`, or colored with semantic colors like `p
|
|
|
137
139
|
|
|
138
140
|
```tsx
|
|
139
141
|
<Dropdown>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
</Dropdown>
|
|
142
|
+
<MenuButton variant="outlined">다양한 상태</MenuButton>
|
|
143
|
+
<Menu>
|
|
144
|
+
<MenuItem>일반 아이템</MenuItem>
|
|
145
|
+
<MenuItem selected>선택된 아이템</MenuItem>
|
|
146
|
+
<MenuItem disabled>비활성 아이템</MenuItem>
|
|
147
|
+
<MenuItem color="primary">Primary 색상</MenuItem>
|
|
148
|
+
<MenuItem color="danger">Danger 색상</MenuItem>
|
|
149
|
+
<MenuItem color="success">Success 색상</MenuItem>
|
|
150
|
+
<MenuItem color="warning">Warning 색상</MenuItem>
|
|
151
|
+
</Menu>
|
|
152
|
+
</Dropdown>
|
|
151
153
|
```
|
|
152
154
|
|
|
153
155
|
### MenuItem with Icons
|
|
@@ -156,41 +158,53 @@ Add icons before item text to improve scannability. Use consistent icon sizing w
|
|
|
156
158
|
|
|
157
159
|
```tsx
|
|
158
160
|
<Dropdown>
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
</
|
|
161
|
+
<MenuButton
|
|
162
|
+
variant="outlined"
|
|
163
|
+
startDecorator={<PersonIcon />}
|
|
164
|
+
endDecorator={<ExpandMoreIcon />}
|
|
165
|
+
>
|
|
166
|
+
아이콘 메뉴
|
|
167
|
+
</MenuButton>
|
|
168
|
+
<Menu>
|
|
169
|
+
<MenuItem>
|
|
170
|
+
<PersonIcon
|
|
171
|
+
sx={{
|
|
172
|
+
mr: 1.5,
|
|
173
|
+
fontSize: "lg"
|
|
174
|
+
}}
|
|
175
|
+
/>
|
|
176
|
+
프로필 보기
|
|
177
|
+
</MenuItem>
|
|
178
|
+
<MenuItem>
|
|
179
|
+
<SettingsIcon
|
|
180
|
+
sx={{
|
|
181
|
+
mr: 1.5,
|
|
182
|
+
fontSize: "lg"
|
|
183
|
+
}}
|
|
184
|
+
/>
|
|
185
|
+
설정
|
|
186
|
+
</MenuItem>
|
|
187
|
+
<MenuItem>
|
|
188
|
+
<BookmarkIcon
|
|
189
|
+
sx={{
|
|
190
|
+
mr: 1.5,
|
|
191
|
+
fontSize: "lg"
|
|
192
|
+
}}
|
|
193
|
+
/>
|
|
194
|
+
북마크
|
|
195
|
+
</MenuItem>
|
|
196
|
+
<ListDivider />
|
|
197
|
+
<MenuItem>
|
|
198
|
+
<LogoutIcon
|
|
199
|
+
sx={{
|
|
200
|
+
mr: 1.5,
|
|
201
|
+
fontSize: "lg"
|
|
202
|
+
}}
|
|
203
|
+
/>
|
|
204
|
+
로그아웃
|
|
205
|
+
</MenuItem>
|
|
206
|
+
</Menu>
|
|
207
|
+
</Dropdown>
|
|
194
208
|
```
|
|
195
209
|
|
|
196
210
|
### Actions Menu
|
|
@@ -199,41 +213,49 @@ Build action menus for CRUD operations. Use `color="danger"` to highlight destru
|
|
|
199
213
|
|
|
200
214
|
```tsx
|
|
201
215
|
<Dropdown>
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
216
|
+
<MenuButton variant="plain" size="sm">
|
|
217
|
+
작업
|
|
218
|
+
</MenuButton>
|
|
219
|
+
<Menu>
|
|
220
|
+
<MenuItem>
|
|
221
|
+
<EditIcon
|
|
222
|
+
sx={{
|
|
223
|
+
mr: 1,
|
|
224
|
+
fontSize: "md"
|
|
225
|
+
}}
|
|
226
|
+
/>
|
|
227
|
+
편집
|
|
228
|
+
</MenuItem>
|
|
229
|
+
<MenuItem>
|
|
230
|
+
<CopyIcon
|
|
231
|
+
sx={{
|
|
232
|
+
mr: 1,
|
|
233
|
+
fontSize: "md"
|
|
234
|
+
}}
|
|
235
|
+
/>
|
|
236
|
+
복사
|
|
237
|
+
</MenuItem>
|
|
238
|
+
<MenuItem>
|
|
239
|
+
<ShareIcon
|
|
240
|
+
sx={{
|
|
241
|
+
mr: 1,
|
|
242
|
+
fontSize: "md"
|
|
243
|
+
}}
|
|
244
|
+
/>
|
|
245
|
+
공유
|
|
246
|
+
</MenuItem>
|
|
247
|
+
<ListDivider />
|
|
248
|
+
<MenuItem color="danger">
|
|
249
|
+
<DeleteIcon
|
|
250
|
+
sx={{
|
|
251
|
+
mr: 1,
|
|
252
|
+
fontSize: "md"
|
|
253
|
+
}}
|
|
254
|
+
/>
|
|
255
|
+
<Typography color="danger">삭제</Typography>
|
|
256
|
+
</MenuItem>
|
|
257
|
+
</Menu>
|
|
258
|
+
</Dropdown>
|
|
237
259
|
```
|
|
238
260
|
|
|
239
261
|
### Clickable Menu Items
|
|
@@ -242,17 +264,17 @@ Attach `onClick` handlers to menu items to respond to user selections.
|
|
|
242
264
|
|
|
243
265
|
```tsx
|
|
244
266
|
<Stack spacing={2}>
|
|
245
|
-
|
|
267
|
+
<Typography level="body-sm">상태: {message}</Typography>
|
|
246
268
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
</Stack>
|
|
269
|
+
<Dropdown>
|
|
270
|
+
<MenuButton variant="outlined">클릭 이벤트</MenuButton>
|
|
271
|
+
<Menu>
|
|
272
|
+
<MenuItem onClick={() => setMessage("홈을 클릭했습니다")}>홈</MenuItem>
|
|
273
|
+
<MenuItem onClick={() => setMessage("프로필을 클릭했습니다")}>프로필</MenuItem>
|
|
274
|
+
<MenuItem onClick={() => setMessage("설정을 클릭했습니다")}>설정</MenuItem>
|
|
275
|
+
</Menu>
|
|
276
|
+
</Dropdown>
|
|
277
|
+
</Stack>
|
|
256
278
|
```
|
|
257
279
|
|
|
258
280
|
### Menu as Links
|
|
@@ -261,22 +283,22 @@ Use the `component="a"` prop on MenuItem to render items as anchor links for nav
|
|
|
261
283
|
|
|
262
284
|
```tsx
|
|
263
285
|
<Dropdown>
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
</Dropdown>
|
|
286
|
+
<MenuButton variant="outlined">링크 메뉴</MenuButton>
|
|
287
|
+
<Menu>
|
|
288
|
+
<MenuItem component="a" href="#home">
|
|
289
|
+
홈 (링크)
|
|
290
|
+
</MenuItem>
|
|
291
|
+
<MenuItem component="a" href="#about">
|
|
292
|
+
회사소개 (링크)
|
|
293
|
+
</MenuItem>
|
|
294
|
+
<MenuItem component="a" href="#products">
|
|
295
|
+
제품 (링크)
|
|
296
|
+
</MenuItem>
|
|
297
|
+
<MenuItem component="a" href="https://example.com" target="_blank" rel="noopener noreferrer">
|
|
298
|
+
외부 링크
|
|
299
|
+
</MenuItem>
|
|
300
|
+
</Menu>
|
|
301
|
+
</Dropdown>
|
|
280
302
|
```
|
|
281
303
|
|
|
282
304
|
### Profile Menu
|
|
@@ -285,137 +307,162 @@ Combine custom Box content (user info header) with standard MenuItem entries for
|
|
|
285
307
|
|
|
286
308
|
```tsx
|
|
287
309
|
<Dropdown>
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
<
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
py: 1.5,
|
|
303
|
-
borderBottom: '1px solid',
|
|
304
|
-
borderColor: 'divider'
|
|
305
|
-
}}>
|
|
306
|
-
<Stack direction="row" spacing={2} alignItems="center">
|
|
307
|
-
<Avatar size="md" variant="soft" color="primary">
|
|
308
|
-
김철수
|
|
309
|
-
</Avatar>
|
|
310
|
-
<Stack spacing={0}>
|
|
311
|
-
<Typography level="title-sm" fontWeight="bold">
|
|
310
|
+
<MenuButton
|
|
311
|
+
variant="plain"
|
|
312
|
+
color="neutral"
|
|
313
|
+
startDecorator={
|
|
314
|
+
<Avatar size="sm" variant="soft" color="primary">
|
|
315
|
+
김
|
|
316
|
+
</Avatar>
|
|
317
|
+
}
|
|
318
|
+
endDecorator={<ExpandMoreIcon />}
|
|
319
|
+
sx={{
|
|
320
|
+
gap: 1,
|
|
321
|
+
padding: 1
|
|
322
|
+
}}
|
|
323
|
+
>
|
|
312
324
|
김철수
|
|
313
|
-
</
|
|
314
|
-
<
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
{
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
<
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
</
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
325
|
+
</MenuButton>
|
|
326
|
+
<Menu
|
|
327
|
+
sx={{
|
|
328
|
+
minWidth: 240
|
|
329
|
+
}}
|
|
330
|
+
>
|
|
331
|
+
{/* 사용자 정보 헤더 */}
|
|
332
|
+
<Box
|
|
333
|
+
sx={{
|
|
334
|
+
px: 2,
|
|
335
|
+
py: 1.5,
|
|
336
|
+
borderBottom: "1px solid",
|
|
337
|
+
borderColor: "divider"
|
|
338
|
+
}}
|
|
339
|
+
>
|
|
340
|
+
<Stack direction="row" spacing={2} alignItems="center">
|
|
341
|
+
<Avatar size="md" variant="soft" color="primary">
|
|
342
|
+
김철수
|
|
343
|
+
</Avatar>
|
|
344
|
+
<Stack spacing={0}>
|
|
345
|
+
<Typography level="title-sm" fontWeight="bold">
|
|
346
|
+
김철수
|
|
347
|
+
</Typography>
|
|
348
|
+
<Typography level="body-xs" color="neutral">
|
|
349
|
+
kim@example.com
|
|
350
|
+
</Typography>
|
|
351
|
+
</Stack>
|
|
352
|
+
</Stack>
|
|
353
|
+
</Box>
|
|
354
|
+
|
|
355
|
+
{/* 메뉴 항목들 */}
|
|
356
|
+
<MenuItem>
|
|
357
|
+
<PersonIcon
|
|
358
|
+
sx={{
|
|
359
|
+
mr: 1.5
|
|
360
|
+
}}
|
|
361
|
+
/>
|
|
362
|
+
내 프로필
|
|
363
|
+
</MenuItem>
|
|
364
|
+
<MenuItem>
|
|
365
|
+
<BookmarkIcon
|
|
366
|
+
sx={{
|
|
367
|
+
mr: 1.5
|
|
368
|
+
}}
|
|
369
|
+
/>
|
|
370
|
+
저장된 항목
|
|
371
|
+
</MenuItem>
|
|
372
|
+
<MenuItem>
|
|
373
|
+
<SettingsIcon
|
|
374
|
+
sx={{
|
|
375
|
+
mr: 1.5
|
|
376
|
+
}}
|
|
377
|
+
/>
|
|
378
|
+
계정 설정
|
|
379
|
+
</MenuItem>
|
|
353
380
|
|
|
354
|
-
|
|
381
|
+
<ListDivider />
|
|
355
382
|
|
|
356
|
-
|
|
357
|
-
<
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
}}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
<Menu placement="top-start">
|
|
365
|
-
<MenuItem>위쪽 시작</MenuItem>
|
|
366
|
-
<MenuItem>옵션 2</MenuItem>
|
|
367
|
-
<MenuItem>옵션 3</MenuItem>
|
|
383
|
+
<MenuItem>
|
|
384
|
+
<LogoutIcon
|
|
385
|
+
sx={{
|
|
386
|
+
mr: 1.5
|
|
387
|
+
}}
|
|
388
|
+
/>
|
|
389
|
+
로그아웃
|
|
390
|
+
</MenuItem>
|
|
368
391
|
</Menu>
|
|
369
392
|
</Dropdown>
|
|
393
|
+
```
|
|
370
394
|
|
|
371
|
-
|
|
372
|
-
<MenuButton variant="outlined">Top</MenuButton>
|
|
373
|
-
<Menu placement="top">
|
|
374
|
-
<MenuItem>위쪽 중앙</MenuItem>
|
|
375
|
-
<MenuItem>옵션 2</MenuItem>
|
|
376
|
-
<MenuItem>옵션 3</MenuItem>
|
|
377
|
-
</Menu>
|
|
378
|
-
</Dropdown>
|
|
395
|
+
### Menu Placements
|
|
379
396
|
|
|
380
|
-
|
|
381
|
-
<MenuButton variant="outlined">Top End</MenuButton>
|
|
382
|
-
<Menu placement="top-end">
|
|
383
|
-
<MenuItem>위쪽 끝</MenuItem>
|
|
384
|
-
<MenuItem>옵션 2</MenuItem>
|
|
385
|
-
<MenuItem>옵션 3</MenuItem>
|
|
386
|
-
</Menu>
|
|
387
|
-
</Dropdown>
|
|
388
|
-
</Stack>
|
|
389
|
-
|
|
390
|
-
<Stack direction="row" spacing={2}>
|
|
391
|
-
<Dropdown>
|
|
392
|
-
<MenuButton variant="outlined">Bottom Start</MenuButton>
|
|
393
|
-
<Menu placement="bottom-start">
|
|
394
|
-
<MenuItem>아래쪽 시작</MenuItem>
|
|
395
|
-
<MenuItem>옵션 2</MenuItem>
|
|
396
|
-
<MenuItem>옵션 3</MenuItem>
|
|
397
|
-
</Menu>
|
|
398
|
-
</Dropdown>
|
|
397
|
+
Control the position of the menu panel relative to the trigger using the `placement` prop. Supported values include `top-start`, `top`, `top-end`, `bottom-start`, `bottom`, and `bottom-end`.
|
|
399
398
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
399
|
+
```tsx
|
|
400
|
+
<Stack
|
|
401
|
+
spacing={4}
|
|
402
|
+
alignItems="center"
|
|
403
|
+
sx={{
|
|
404
|
+
mt: 6,
|
|
405
|
+
mb: 6
|
|
406
|
+
}}
|
|
407
|
+
>
|
|
408
|
+
<Stack direction="row" spacing={2}>
|
|
409
|
+
<Dropdown>
|
|
410
|
+
<MenuButton variant="outlined">Top Start</MenuButton>
|
|
411
|
+
<Menu placement="top-start">
|
|
412
|
+
<MenuItem>위쪽 시작</MenuItem>
|
|
413
|
+
<MenuItem>옵션 2</MenuItem>
|
|
414
|
+
<MenuItem>옵션 3</MenuItem>
|
|
415
|
+
</Menu>
|
|
416
|
+
</Dropdown>
|
|
417
|
+
|
|
418
|
+
<Dropdown>
|
|
419
|
+
<MenuButton variant="outlined">Top</MenuButton>
|
|
420
|
+
<Menu placement="top">
|
|
421
|
+
<MenuItem>위쪽 중앙</MenuItem>
|
|
422
|
+
<MenuItem>옵션 2</MenuItem>
|
|
423
|
+
<MenuItem>옵션 3</MenuItem>
|
|
424
|
+
</Menu>
|
|
425
|
+
</Dropdown>
|
|
426
|
+
|
|
427
|
+
<Dropdown>
|
|
428
|
+
<MenuButton variant="outlined">Top End</MenuButton>
|
|
429
|
+
<Menu placement="top-end">
|
|
430
|
+
<MenuItem>위쪽 끝</MenuItem>
|
|
431
|
+
<MenuItem>옵션 2</MenuItem>
|
|
432
|
+
<MenuItem>옵션 3</MenuItem>
|
|
433
|
+
</Menu>
|
|
434
|
+
</Dropdown>
|
|
435
|
+
</Stack>
|
|
408
436
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
</
|
|
418
|
-
|
|
437
|
+
<Stack direction="row" spacing={2}>
|
|
438
|
+
<Dropdown>
|
|
439
|
+
<MenuButton variant="outlined">Bottom Start</MenuButton>
|
|
440
|
+
<Menu placement="bottom-start">
|
|
441
|
+
<MenuItem>아래쪽 시작</MenuItem>
|
|
442
|
+
<MenuItem>옵션 2</MenuItem>
|
|
443
|
+
<MenuItem>옵션 3</MenuItem>
|
|
444
|
+
</Menu>
|
|
445
|
+
</Dropdown>
|
|
446
|
+
|
|
447
|
+
<Dropdown>
|
|
448
|
+
<MenuButton variant="outlined">Bottom</MenuButton>
|
|
449
|
+
<Menu placement="bottom">
|
|
450
|
+
<MenuItem>아래쪽 중앙</MenuItem>
|
|
451
|
+
<MenuItem>옵션 2</MenuItem>
|
|
452
|
+
<MenuItem>옵션 3</MenuItem>
|
|
453
|
+
</Menu>
|
|
454
|
+
</Dropdown>
|
|
455
|
+
|
|
456
|
+
<Dropdown>
|
|
457
|
+
<MenuButton variant="outlined">Bottom End</MenuButton>
|
|
458
|
+
<Menu placement="bottom-end">
|
|
459
|
+
<MenuItem>아래쪽 끝</MenuItem>
|
|
460
|
+
<MenuItem>옵션 2</MenuItem>
|
|
461
|
+
<MenuItem>옵션 3</MenuItem>
|
|
462
|
+
</Menu>
|
|
463
|
+
</Dropdown>
|
|
464
|
+
</Stack>
|
|
465
|
+
</Stack>
|
|
419
466
|
```
|
|
420
467
|
|
|
421
468
|
### Long Scrollable Menu
|
|
@@ -424,16 +471,23 @@ For menus with many items, apply `maxHeight` and `overflow: 'auto'` through the
|
|
|
424
471
|
|
|
425
472
|
```tsx
|
|
426
473
|
<Dropdown>
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
474
|
+
<MenuButton variant="outlined">긴 메뉴 (스크롤)</MenuButton>
|
|
475
|
+
<Menu
|
|
476
|
+
sx={{
|
|
477
|
+
maxHeight: 300,
|
|
478
|
+
overflow: "auto"
|
|
479
|
+
}}
|
|
480
|
+
>
|
|
481
|
+
{Array.from(
|
|
482
|
+
{
|
|
483
|
+
length: 30
|
|
484
|
+
},
|
|
485
|
+
(_, index) => (
|
|
486
|
+
<MenuItem key={index}>메뉴 항목 {index + 1}</MenuItem>
|
|
487
|
+
)
|
|
488
|
+
)}
|
|
489
|
+
</Menu>
|
|
490
|
+
</Dropdown>
|
|
437
491
|
```
|
|
438
492
|
|
|
439
493
|
### Custom Styled Menu
|
|
@@ -442,62 +496,86 @@ Customize the menu panel appearance with border-radius, shadows, borders, and cu
|
|
|
442
496
|
|
|
443
497
|
```tsx
|
|
444
498
|
<Stack direction="row" spacing={3}>
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
499
|
+
<Dropdown>
|
|
500
|
+
<MenuButton variant="soft" color="primary">
|
|
501
|
+
둥근 메뉴
|
|
502
|
+
</MenuButton>
|
|
503
|
+
<Menu
|
|
504
|
+
sx={{
|
|
505
|
+
borderRadius: "lg",
|
|
506
|
+
boxShadow: "lg",
|
|
507
|
+
border: "2px solid",
|
|
508
|
+
borderColor: "primary.200",
|
|
509
|
+
p: 0.5
|
|
510
|
+
}}
|
|
511
|
+
>
|
|
512
|
+
<MenuItem
|
|
513
|
+
sx={{
|
|
514
|
+
borderRadius: "md",
|
|
515
|
+
my: 0.25
|
|
516
|
+
}}
|
|
517
|
+
>
|
|
518
|
+
둥근 아이템 1
|
|
519
|
+
</MenuItem>
|
|
520
|
+
<MenuItem
|
|
521
|
+
sx={{
|
|
522
|
+
borderRadius: "md",
|
|
523
|
+
my: 0.25
|
|
524
|
+
}}
|
|
525
|
+
>
|
|
526
|
+
둥근 아이템 2
|
|
527
|
+
</MenuItem>
|
|
528
|
+
<MenuItem
|
|
529
|
+
sx={{
|
|
530
|
+
borderRadius: "md",
|
|
531
|
+
my: 0.25
|
|
532
|
+
}}
|
|
533
|
+
>
|
|
534
|
+
둥근 아이템 3
|
|
535
|
+
</MenuItem>
|
|
536
|
+
</Menu>
|
|
537
|
+
</Dropdown>
|
|
470
538
|
|
|
471
|
-
<Dropdown>
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
539
|
+
<Dropdown>
|
|
540
|
+
<MenuButton variant="outlined">그림자 메뉴</MenuButton>
|
|
541
|
+
<Menu
|
|
542
|
+
sx={{
|
|
543
|
+
boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",
|
|
544
|
+
border: "none",
|
|
545
|
+
borderRadius: "xl"
|
|
546
|
+
}}
|
|
547
|
+
>
|
|
548
|
+
<MenuItem
|
|
549
|
+
sx={{
|
|
550
|
+
px: 3,
|
|
551
|
+
py: 1.5
|
|
552
|
+
}}
|
|
553
|
+
>
|
|
554
|
+
<StarIcon
|
|
555
|
+
sx={{
|
|
556
|
+
mr: 2,
|
|
557
|
+
color: "warning.500"
|
|
558
|
+
}}
|
|
559
|
+
/>
|
|
560
|
+
특별한 아이템 1
|
|
561
|
+
</MenuItem>
|
|
562
|
+
<MenuItem
|
|
563
|
+
sx={{
|
|
564
|
+
px: 3,
|
|
565
|
+
py: 1.5
|
|
566
|
+
}}
|
|
567
|
+
>
|
|
568
|
+
<StarIcon
|
|
569
|
+
sx={{
|
|
570
|
+
mr: 2,
|
|
571
|
+
color: "warning.500"
|
|
572
|
+
}}
|
|
573
|
+
/>
|
|
574
|
+
특별한 아이템 2
|
|
575
|
+
</MenuItem>
|
|
576
|
+
</Menu>
|
|
577
|
+
</Dropdown>
|
|
578
|
+
</Stack>
|
|
501
579
|
```
|
|
502
580
|
|
|
503
581
|
### Menu in Card
|
|
@@ -505,59 +583,75 @@ Customize the menu panel appearance with border-radius, shadows, borders, and cu
|
|
|
505
583
|
Embed a Dropdown menu inside cards or other container components for contextual actions.
|
|
506
584
|
|
|
507
585
|
```tsx
|
|
508
|
-
<Sheet
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
<
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
586
|
+
<Sheet
|
|
587
|
+
variant="outlined"
|
|
588
|
+
sx={{
|
|
589
|
+
maxWidth: 400,
|
|
590
|
+
p: 3,
|
|
591
|
+
borderRadius: "lg"
|
|
592
|
+
}}
|
|
593
|
+
>
|
|
594
|
+
<Stack direction="row" justifyContent="space-between" alignItems="flex-start">
|
|
595
|
+
<Stack spacing={1}>
|
|
596
|
+
<Typography level="title-lg">프로젝트 카드</Typography>
|
|
597
|
+
<Typography level="body-sm" color="neutral">
|
|
598
|
+
이 카드에는 메뉴가 포함되어 있습니다.
|
|
599
|
+
</Typography>
|
|
600
|
+
<Typography level="body-xs" color="neutral">
|
|
601
|
+
2024.01.15 생성
|
|
602
|
+
</Typography>
|
|
603
|
+
</Stack>
|
|
604
|
+
|
|
605
|
+
<Dropdown>
|
|
606
|
+
<MenuButton
|
|
607
|
+
variant="plain"
|
|
608
|
+
color="neutral"
|
|
609
|
+
size="sm"
|
|
610
|
+
sx={{
|
|
611
|
+
minHeight: "auto",
|
|
612
|
+
p: 1
|
|
613
|
+
}}
|
|
614
|
+
>
|
|
615
|
+
⋮
|
|
616
|
+
</MenuButton>
|
|
617
|
+
<Menu placement="bottom-end">
|
|
618
|
+
<MenuItem>
|
|
619
|
+
<EditIcon
|
|
620
|
+
sx={{
|
|
621
|
+
mr: 1
|
|
622
|
+
}}
|
|
623
|
+
/>
|
|
624
|
+
편집
|
|
625
|
+
</MenuItem>
|
|
626
|
+
<MenuItem>
|
|
627
|
+
<CopyIcon
|
|
628
|
+
sx={{
|
|
629
|
+
mr: 1
|
|
630
|
+
}}
|
|
631
|
+
/>
|
|
632
|
+
복제
|
|
633
|
+
</MenuItem>
|
|
634
|
+
<MenuItem>
|
|
635
|
+
<ShareIcon
|
|
636
|
+
sx={{
|
|
637
|
+
mr: 1
|
|
638
|
+
}}
|
|
639
|
+
/>
|
|
640
|
+
공유
|
|
641
|
+
</MenuItem>
|
|
642
|
+
<ListDivider />
|
|
643
|
+
<MenuItem color="danger">
|
|
644
|
+
<DeleteIcon
|
|
645
|
+
sx={{
|
|
646
|
+
mr: 1
|
|
647
|
+
}}
|
|
648
|
+
/>
|
|
649
|
+
삭제
|
|
650
|
+
</MenuItem>
|
|
651
|
+
</Menu>
|
|
652
|
+
</Dropdown>
|
|
653
|
+
</Stack>
|
|
654
|
+
</Sheet>
|
|
561
655
|
```
|
|
562
656
|
|
|
563
657
|
### Nested Content
|
|
@@ -566,84 +660,100 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
566
660
|
|
|
567
661
|
```tsx
|
|
568
662
|
<Dropdown>
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
</MenuItem>
|
|
606
|
-
|
|
607
|
-
<
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
<
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
663
|
+
<MenuButton variant="outlined">복합 콘텐츠</MenuButton>
|
|
664
|
+
<Menu
|
|
665
|
+
sx={{
|
|
666
|
+
minWidth: 280
|
|
667
|
+
}}
|
|
668
|
+
>
|
|
669
|
+
{/* 사용자 정보 섹션 */}
|
|
670
|
+
<Box
|
|
671
|
+
sx={{
|
|
672
|
+
px: 2,
|
|
673
|
+
py: 2
|
|
674
|
+
}}
|
|
675
|
+
>
|
|
676
|
+
<Stack direction="row" spacing={2} alignItems="center">
|
|
677
|
+
<Avatar variant="soft" color="primary">
|
|
678
|
+
A
|
|
679
|
+
</Avatar>
|
|
680
|
+
<Stack>
|
|
681
|
+
<Typography level="title-sm">Admin 사용자</Typography>
|
|
682
|
+
<Typography level="body-xs" color="neutral">
|
|
683
|
+
admin@example.com
|
|
684
|
+
</Typography>
|
|
685
|
+
</Stack>
|
|
686
|
+
</Stack>
|
|
687
|
+
</Box>
|
|
688
|
+
|
|
689
|
+
<ListDivider />
|
|
690
|
+
|
|
691
|
+
{/* 일반 메뉴 항목들 */}
|
|
692
|
+
<MenuItem>
|
|
693
|
+
<PersonIcon
|
|
694
|
+
sx={{
|
|
695
|
+
mr: 1.5
|
|
696
|
+
}}
|
|
697
|
+
/>
|
|
698
|
+
프로필 관리
|
|
699
|
+
</MenuItem>
|
|
700
|
+
<MenuItem>
|
|
701
|
+
<SettingsIcon
|
|
702
|
+
sx={{
|
|
703
|
+
mr: 1.5
|
|
704
|
+
}}
|
|
705
|
+
/>
|
|
706
|
+
시스템 설정
|
|
707
|
+
</MenuItem>
|
|
708
|
+
|
|
709
|
+
<ListDivider />
|
|
710
|
+
|
|
711
|
+
{/* 상태 정보 */}
|
|
712
|
+
<Box
|
|
713
|
+
sx={{
|
|
714
|
+
px: 2,
|
|
715
|
+
py: 1.5
|
|
716
|
+
}}
|
|
717
|
+
>
|
|
718
|
+
<Stack spacing={1}>
|
|
719
|
+
<Stack direction="row" justifyContent="space-between">
|
|
720
|
+
<Typography level="body-xs" color="neutral">
|
|
721
|
+
저장 공간
|
|
722
|
+
</Typography>
|
|
723
|
+
<Typography level="body-xs">75%</Typography>
|
|
724
|
+
</Stack>
|
|
725
|
+
<Box
|
|
726
|
+
sx={{
|
|
727
|
+
height: 4,
|
|
728
|
+
bgcolor: "neutral.200",
|
|
729
|
+
borderRadius: "sm",
|
|
730
|
+
position: "relative"
|
|
731
|
+
}}
|
|
732
|
+
>
|
|
733
|
+
<Box
|
|
734
|
+
sx={{
|
|
735
|
+
width: "75%",
|
|
736
|
+
height: "100%",
|
|
737
|
+
bgcolor: "primary.500",
|
|
738
|
+
borderRadius: "sm"
|
|
739
|
+
}}
|
|
740
|
+
/>
|
|
741
|
+
</Box>
|
|
742
|
+
</Stack>
|
|
743
|
+
</Box>
|
|
744
|
+
|
|
745
|
+
<ListDivider />
|
|
746
|
+
|
|
747
|
+
<MenuItem>
|
|
748
|
+
<LogoutIcon
|
|
749
|
+
sx={{
|
|
750
|
+
mr: 1.5
|
|
751
|
+
}}
|
|
752
|
+
/>
|
|
753
|
+
로그아웃
|
|
754
|
+
</MenuItem>
|
|
755
|
+
</Menu>
|
|
756
|
+
</Dropdown>
|
|
647
757
|
```
|
|
648
758
|
|
|
649
759
|
## Common Use Cases
|
|
@@ -652,7 +762,9 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
652
762
|
|
|
653
763
|
```tsx
|
|
654
764
|
<Dropdown>
|
|
655
|
-
<MenuButton variant="plain" size="sm">
|
|
765
|
+
<MenuButton variant="plain" size="sm">
|
|
766
|
+
Actions
|
|
767
|
+
</MenuButton>
|
|
656
768
|
<Menu>
|
|
657
769
|
<MenuItem onClick={handleEdit}>
|
|
658
770
|
<EditIcon sx={{ mr: 1 }} />
|
|
@@ -677,11 +789,19 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
677
789
|
<Dropdown>
|
|
678
790
|
<MenuButton>Navigate</MenuButton>
|
|
679
791
|
<Menu>
|
|
680
|
-
<MenuItem component="a" href="/home">
|
|
681
|
-
|
|
682
|
-
|
|
792
|
+
<MenuItem component="a" href="/home">
|
|
793
|
+
Home
|
|
794
|
+
</MenuItem>
|
|
795
|
+
<MenuItem component="a" href="/products">
|
|
796
|
+
Products
|
|
797
|
+
</MenuItem>
|
|
798
|
+
<MenuItem component="a" href="/services">
|
|
799
|
+
Services
|
|
800
|
+
</MenuItem>
|
|
683
801
|
<ListDivider />
|
|
684
|
-
<MenuItem component="a" href="/contact">
|
|
802
|
+
<MenuItem component="a" href="/contact">
|
|
803
|
+
Contact
|
|
804
|
+
</MenuItem>
|
|
685
805
|
</Menu>
|
|
686
806
|
</Dropdown>
|
|
687
807
|
```
|
|
@@ -690,16 +810,15 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
690
810
|
|
|
691
811
|
```tsx
|
|
692
812
|
<Dropdown>
|
|
693
|
-
<MenuButton
|
|
694
|
-
startDecorator={<Avatar size="sm" src="/avatar.jpg" />}
|
|
695
|
-
endDecorator={<ExpandMoreIcon />}
|
|
696
|
-
>
|
|
813
|
+
<MenuButton startDecorator={<Avatar size="sm" src="/avatar.jpg" />} endDecorator={<ExpandMoreIcon />}>
|
|
697
814
|
Username
|
|
698
815
|
</MenuButton>
|
|
699
816
|
<Menu>
|
|
700
817
|
<Box sx={{ px: 2, py: 1.5 }}>
|
|
701
818
|
<Typography level="title-sm">Username</Typography>
|
|
702
|
-
<Typography level="body-xs" color="neutral">
|
|
819
|
+
<Typography level="body-xs" color="neutral">
|
|
820
|
+
user@example.com
|
|
821
|
+
</Typography>
|
|
703
822
|
</Box>
|
|
704
823
|
<ListDivider />
|
|
705
824
|
<MenuItem>
|
|
@@ -741,13 +860,15 @@ Menu can contain non-MenuItem elements like Box, Typography, and progress indica
|
|
|
741
860
|
- **Use ListDivider to group related items.** Logical grouping helps users scan the menu faster. Place destructive actions (like Delete) in their own group at the bottom.
|
|
742
861
|
|
|
743
862
|
```tsx
|
|
744
|
-
{
|
|
863
|
+
{
|
|
864
|
+
/* ✅ Good: Grouped actions with divider */
|
|
865
|
+
}
|
|
745
866
|
<Menu>
|
|
746
867
|
<MenuItem>Edit</MenuItem>
|
|
747
868
|
<MenuItem>Duplicate</MenuItem>
|
|
748
869
|
<ListDivider />
|
|
749
870
|
<MenuItem color="danger">Delete</MenuItem>
|
|
750
|
-
</Menu
|
|
871
|
+
</Menu>;
|
|
751
872
|
```
|
|
752
873
|
|
|
753
874
|
- **Keep icon sizing consistent.** When using icons in menu items, apply the same `fontSize` and `mr` (margin-right) to all icons so items align cleanly.
|