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