@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
|
@@ -7,20 +7,26 @@ Sheet is a foundational surface component that serves as a container for groupin
|
|
|
7
7
|
Sheet is built on top of Joy UI's Sheet component and inherits all of its styling capabilities, including support for the `sx` prop for custom styling, responsive design tokens, and Framer Motion animation props.
|
|
8
8
|
|
|
9
9
|
```tsx
|
|
10
|
-
<Sheet
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
<Sheet
|
|
11
|
+
{...args}
|
|
12
|
+
sx={{
|
|
13
|
+
p: 3,
|
|
14
|
+
maxWidth: 400,
|
|
15
|
+
borderRadius: "md"
|
|
16
|
+
}}
|
|
17
|
+
>
|
|
18
|
+
<Typography
|
|
19
|
+
level="title-md"
|
|
20
|
+
sx={{
|
|
21
|
+
mb: 2
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
Sheet 컴포넌트
|
|
25
|
+
</Typography>
|
|
26
|
+
<Typography level="body-md">
|
|
27
|
+
이것은 Sheet 컴포넌트의 기본 예제입니다. 다양한 콘텐츠를 담을 수 있는 표면을 제공합니다.
|
|
28
|
+
</Typography>
|
|
29
|
+
</Sheet>
|
|
24
30
|
```
|
|
25
31
|
|
|
26
32
|
| Field | Description | Default |
|
|
@@ -37,9 +43,7 @@ function MyComponent() {
|
|
|
37
43
|
return (
|
|
38
44
|
<Sheet variant="outlined" sx={{ p: 3, borderRadius: 'md' }}>
|
|
39
45
|
<Typography level="title-md">Sheet Title</Typography>
|
|
40
|
-
<Typography level="body-md">
|
|
41
|
-
Content goes inside the sheet.
|
|
42
|
-
</Typography>
|
|
46
|
+
<Typography level="body-md">Content goes inside the sheet.</Typography>
|
|
43
47
|
</Sheet>
|
|
44
48
|
);
|
|
45
49
|
}
|
|
@@ -50,68 +54,97 @@ function MyComponent() {
|
|
|
50
54
|
Sheet supports four visual variants to convey different levels of emphasis.
|
|
51
55
|
|
|
52
56
|
```tsx
|
|
53
|
-
<div
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
</
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
57
|
+
<div
|
|
58
|
+
style={{
|
|
59
|
+
display: "flex",
|
|
60
|
+
gap: "2rem",
|
|
61
|
+
flexWrap: "wrap"
|
|
62
|
+
}}
|
|
63
|
+
>
|
|
64
|
+
<Sheet
|
|
65
|
+
variant="solid"
|
|
66
|
+
sx={{
|
|
67
|
+
p: 3,
|
|
68
|
+
maxWidth: 250,
|
|
69
|
+
borderRadius: "md"
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
<Typography
|
|
73
|
+
level="title-md"
|
|
74
|
+
sx={{
|
|
75
|
+
mb: 1,
|
|
76
|
+
color: "white"
|
|
77
|
+
}}
|
|
78
|
+
>
|
|
79
|
+
Solid
|
|
80
|
+
</Typography>
|
|
81
|
+
<Typography
|
|
82
|
+
level="body-sm"
|
|
83
|
+
sx={{
|
|
84
|
+
color: "white"
|
|
85
|
+
}}
|
|
86
|
+
>
|
|
87
|
+
배경이 채워진 스타일
|
|
88
|
+
</Typography>
|
|
89
|
+
</Sheet>
|
|
90
|
+
|
|
91
|
+
<Sheet
|
|
92
|
+
variant="soft"
|
|
93
|
+
sx={{
|
|
94
|
+
p: 3,
|
|
95
|
+
maxWidth: 250,
|
|
96
|
+
borderRadius: "md"
|
|
97
|
+
}}
|
|
98
|
+
>
|
|
99
|
+
<Typography
|
|
100
|
+
level="title-md"
|
|
101
|
+
sx={{
|
|
102
|
+
mb: 1
|
|
103
|
+
}}
|
|
104
|
+
>
|
|
105
|
+
Soft
|
|
106
|
+
</Typography>
|
|
107
|
+
<Typography level="body-sm">부드러운 배경 스타일</Typography>
|
|
108
|
+
</Sheet>
|
|
109
|
+
|
|
110
|
+
<Sheet
|
|
111
|
+
variant="outlined"
|
|
112
|
+
sx={{
|
|
113
|
+
p: 3,
|
|
114
|
+
maxWidth: 250,
|
|
115
|
+
borderRadius: "md"
|
|
116
|
+
}}
|
|
117
|
+
>
|
|
118
|
+
<Typography
|
|
119
|
+
level="title-md"
|
|
120
|
+
sx={{
|
|
121
|
+
mb: 1
|
|
122
|
+
}}
|
|
123
|
+
>
|
|
124
|
+
Outlined
|
|
125
|
+
</Typography>
|
|
126
|
+
<Typography level="body-sm">테두리가 있는 스타일</Typography>
|
|
127
|
+
</Sheet>
|
|
128
|
+
|
|
129
|
+
<Sheet
|
|
130
|
+
variant="plain"
|
|
131
|
+
sx={{
|
|
132
|
+
p: 3,
|
|
133
|
+
maxWidth: 250,
|
|
134
|
+
borderRadius: "md"
|
|
135
|
+
}}
|
|
136
|
+
>
|
|
137
|
+
<Typography
|
|
138
|
+
level="title-md"
|
|
139
|
+
sx={{
|
|
140
|
+
mb: 1
|
|
141
|
+
}}
|
|
142
|
+
>
|
|
143
|
+
Plain
|
|
144
|
+
</Typography>
|
|
145
|
+
<Typography level="body-sm">배경이 없는 평면 스타일</Typography>
|
|
146
|
+
</Sheet>
|
|
147
|
+
</div>
|
|
115
148
|
```
|
|
116
149
|
|
|
117
150
|
## Colors
|
|
@@ -119,46 +152,68 @@ Plain
|
|
|
119
152
|
Apply semantic colors to communicate meaning -- use `danger` for errors, `success` for confirmations, `warning` for alerts, and `primary` for highlighted content.
|
|
120
153
|
|
|
121
154
|
```tsx
|
|
122
|
-
<div
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<Typography level="title-sm">
|
|
160
|
-
</Sheet>
|
|
161
|
-
|
|
155
|
+
<div
|
|
156
|
+
style={{
|
|
157
|
+
display: "flex",
|
|
158
|
+
gap: "1rem",
|
|
159
|
+
flexWrap: "wrap"
|
|
160
|
+
}}
|
|
161
|
+
>
|
|
162
|
+
<Sheet
|
|
163
|
+
color="primary"
|
|
164
|
+
variant="soft"
|
|
165
|
+
sx={{
|
|
166
|
+
p: 2,
|
|
167
|
+
borderRadius: "md"
|
|
168
|
+
}}
|
|
169
|
+
>
|
|
170
|
+
<Typography level="title-sm">Primary</Typography>
|
|
171
|
+
</Sheet>
|
|
172
|
+
|
|
173
|
+
<Sheet
|
|
174
|
+
color="neutral"
|
|
175
|
+
variant="soft"
|
|
176
|
+
sx={{
|
|
177
|
+
p: 2,
|
|
178
|
+
borderRadius: "md"
|
|
179
|
+
}}
|
|
180
|
+
>
|
|
181
|
+
<Typography level="title-sm">Neutral</Typography>
|
|
182
|
+
</Sheet>
|
|
183
|
+
|
|
184
|
+
<Sheet
|
|
185
|
+
color="danger"
|
|
186
|
+
variant="soft"
|
|
187
|
+
sx={{
|
|
188
|
+
p: 2,
|
|
189
|
+
borderRadius: "md"
|
|
190
|
+
}}
|
|
191
|
+
>
|
|
192
|
+
<Typography level="title-sm">Danger</Typography>
|
|
193
|
+
</Sheet>
|
|
194
|
+
|
|
195
|
+
<Sheet
|
|
196
|
+
color="success"
|
|
197
|
+
variant="soft"
|
|
198
|
+
sx={{
|
|
199
|
+
p: 2,
|
|
200
|
+
borderRadius: "md"
|
|
201
|
+
}}
|
|
202
|
+
>
|
|
203
|
+
<Typography level="title-sm">Success</Typography>
|
|
204
|
+
</Sheet>
|
|
205
|
+
|
|
206
|
+
<Sheet
|
|
207
|
+
color="warning"
|
|
208
|
+
variant="soft"
|
|
209
|
+
sx={{
|
|
210
|
+
p: 2,
|
|
211
|
+
borderRadius: "md"
|
|
212
|
+
}}
|
|
213
|
+
>
|
|
214
|
+
<Typography level="title-sm">Warning</Typography>
|
|
215
|
+
</Sheet>
|
|
216
|
+
</div>
|
|
162
217
|
```
|
|
163
218
|
|
|
164
219
|
## Basic
|
|
@@ -166,37 +221,50 @@ Apply semantic colors to communicate meaning -- use `danger` for errors, `succes
|
|
|
166
221
|
The simplest form of a Sheet with minimal configuration.
|
|
167
222
|
|
|
168
223
|
```tsx
|
|
169
|
-
<div
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
224
|
+
<div
|
|
225
|
+
style={{
|
|
226
|
+
display: "flex",
|
|
227
|
+
gap: "2rem",
|
|
228
|
+
flexWrap: "wrap"
|
|
229
|
+
}}
|
|
230
|
+
>
|
|
231
|
+
<Sheet
|
|
232
|
+
sx={{
|
|
233
|
+
p: 3,
|
|
234
|
+
maxWidth: 300,
|
|
235
|
+
borderRadius: "md"
|
|
236
|
+
}}
|
|
237
|
+
>
|
|
238
|
+
<Typography
|
|
239
|
+
level="title-md"
|
|
240
|
+
sx={{
|
|
241
|
+
mb: 1
|
|
242
|
+
}}
|
|
243
|
+
>
|
|
244
|
+
기본 Sheet
|
|
245
|
+
</Typography>
|
|
246
|
+
<Typography level="body-sm">가장 기본적인 Sheet 컴포넌트입니다.</Typography>
|
|
247
|
+
</Sheet>
|
|
248
|
+
|
|
249
|
+
<Sheet
|
|
250
|
+
variant="outlined"
|
|
251
|
+
sx={{
|
|
252
|
+
p: 3,
|
|
253
|
+
maxWidth: 300,
|
|
254
|
+
borderRadius: "md"
|
|
255
|
+
}}
|
|
256
|
+
>
|
|
257
|
+
<Typography
|
|
258
|
+
level="title-md"
|
|
259
|
+
sx={{
|
|
260
|
+
mb: 1
|
|
261
|
+
}}
|
|
262
|
+
>
|
|
263
|
+
Outlined Sheet
|
|
264
|
+
</Typography>
|
|
265
|
+
<Typography level="body-sm">테두리가 있는 Sheet 컴포넌트입니다.</Typography>
|
|
266
|
+
</Sheet>
|
|
267
|
+
</div>
|
|
200
268
|
```
|
|
201
269
|
|
|
202
270
|
## User Profile Card
|
|
@@ -204,56 +272,64 @@ Outlined Sheet
|
|
|
204
272
|
Sheet can be composed with other components to create rich profile cards.
|
|
205
273
|
|
|
206
274
|
```tsx
|
|
207
|
-
<Sheet
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
<Stack spacing={
|
|
216
|
-
<
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
<
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
</
|
|
255
|
-
</Stack>
|
|
256
|
-
|
|
275
|
+
<Sheet
|
|
276
|
+
variant="outlined"
|
|
277
|
+
sx={{
|
|
278
|
+
maxWidth: 400,
|
|
279
|
+
borderRadius: "lg",
|
|
280
|
+
p: 3
|
|
281
|
+
}}
|
|
282
|
+
>
|
|
283
|
+
<Stack spacing={3}>
|
|
284
|
+
<Stack direction="row" spacing={2} alignItems="center">
|
|
285
|
+
<Avatar size="lg" src="https://i.pravatar.cc/100?img=1" />
|
|
286
|
+
<Stack spacing={0.5}>
|
|
287
|
+
<Typography level="title-lg">김철수</Typography>
|
|
288
|
+
<Typography
|
|
289
|
+
level="body-sm"
|
|
290
|
+
sx={{
|
|
291
|
+
color: "text.secondary"
|
|
292
|
+
}}
|
|
293
|
+
>
|
|
294
|
+
프론트엔드 개발자
|
|
295
|
+
</Typography>
|
|
296
|
+
</Stack>
|
|
297
|
+
<Box
|
|
298
|
+
sx={{
|
|
299
|
+
ml: "auto"
|
|
300
|
+
}}
|
|
301
|
+
>
|
|
302
|
+
<IconButton variant="plain" size="sm">
|
|
303
|
+
<SettingsIcon />
|
|
304
|
+
</IconButton>
|
|
305
|
+
</Box>
|
|
306
|
+
</Stack>
|
|
307
|
+
|
|
308
|
+
<Typography level="body-md">
|
|
309
|
+
사용자 경험을 중시하는 프론트엔드 개발자입니다. React와 TypeScript를 주로 사용하며, 깔끔하고
|
|
310
|
+
직관적인 인터페이스 구현에 관심이 많습니다.
|
|
311
|
+
</Typography>
|
|
312
|
+
|
|
313
|
+
<Stack direction="row" spacing={1}>
|
|
314
|
+
<Chip size="sm" variant="soft">
|
|
315
|
+
React
|
|
316
|
+
</Chip>
|
|
317
|
+
<Chip size="sm" variant="soft">
|
|
318
|
+
TypeScript
|
|
319
|
+
</Chip>
|
|
320
|
+
<Chip size="sm" variant="soft">
|
|
321
|
+
Next.js
|
|
322
|
+
</Chip>
|
|
323
|
+
</Stack>
|
|
324
|
+
|
|
325
|
+
<Stack direction="row" spacing={2}>
|
|
326
|
+
<Button variant="outlined" fullWidth>
|
|
327
|
+
팔로우
|
|
328
|
+
</Button>
|
|
329
|
+
<Button fullWidth>메시지 보내기</Button>
|
|
330
|
+
</Stack>
|
|
331
|
+
</Stack>
|
|
332
|
+
</Sheet>
|
|
257
333
|
```
|
|
258
334
|
|
|
259
335
|
## Article Card
|
|
@@ -261,72 +337,89 @@ Sheet can be composed with other components to create rich profile cards.
|
|
|
261
337
|
Combine Sheet with images, chips, and actions for article-style layouts.
|
|
262
338
|
|
|
263
339
|
```tsx
|
|
264
|
-
<Sheet
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
<
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
<
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
</Typography>
|
|
300
|
-
|
|
301
|
-
<
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
</
|
|
328
|
-
</Stack>
|
|
329
|
-
|
|
340
|
+
<Sheet
|
|
341
|
+
variant="outlined"
|
|
342
|
+
sx={{
|
|
343
|
+
maxWidth: 500,
|
|
344
|
+
borderRadius: "lg",
|
|
345
|
+
overflow: "hidden"
|
|
346
|
+
}}
|
|
347
|
+
>
|
|
348
|
+
<Box
|
|
349
|
+
sx={{
|
|
350
|
+
height: 200,
|
|
351
|
+
bgcolor: "neutral.100",
|
|
352
|
+
backgroundImage:
|
|
353
|
+
"url(https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d?ixlib=rb-4.0.3&auto=format&fit=crop&w=500&q=80)",
|
|
354
|
+
backgroundSize: "cover",
|
|
355
|
+
backgroundPosition: "center"
|
|
356
|
+
}}
|
|
357
|
+
/>
|
|
358
|
+
|
|
359
|
+
<Stack
|
|
360
|
+
spacing={2}
|
|
361
|
+
sx={{
|
|
362
|
+
p: 3
|
|
363
|
+
}}
|
|
364
|
+
>
|
|
365
|
+
<Stack direction="row" justifyContent="space-between" alignItems="flex-start">
|
|
366
|
+
<Stack spacing={1}>
|
|
367
|
+
<Typography level="title-lg">React 18의 새로운 기능들</Typography>
|
|
368
|
+
<Typography
|
|
369
|
+
level="body-sm"
|
|
370
|
+
sx={{
|
|
371
|
+
color: "text.secondary"
|
|
372
|
+
}}
|
|
373
|
+
>
|
|
374
|
+
2024년 1월 15일 • 5분 읽기
|
|
375
|
+
</Typography>
|
|
376
|
+
</Stack>
|
|
377
|
+
<IconButton
|
|
378
|
+
variant="plain"
|
|
379
|
+
size="sm"
|
|
380
|
+
sx={{
|
|
381
|
+
color: "warning.500"
|
|
382
|
+
}}
|
|
383
|
+
>
|
|
384
|
+
<StarIcon />
|
|
385
|
+
</IconButton>
|
|
386
|
+
</Stack>
|
|
387
|
+
|
|
388
|
+
<Typography level="body-md">
|
|
389
|
+
React 18에서 도입된 Concurrent Features와 새로운 Hooks에 대해 자세히 알아보겠습니다.
|
|
390
|
+
Suspense, useTransition, useDeferredValue 등의 새로운 기능들이 어떻게 사용자 경험을
|
|
391
|
+
개선하는지 살펴보겠습니다.
|
|
392
|
+
</Typography>
|
|
393
|
+
|
|
394
|
+
<Stack direction="row" spacing={1}>
|
|
395
|
+
<Chip size="sm" variant="outlined">
|
|
396
|
+
React
|
|
397
|
+
</Chip>
|
|
398
|
+
<Chip size="sm" variant="outlined">
|
|
399
|
+
JavaScript
|
|
400
|
+
</Chip>
|
|
401
|
+
<Chip size="sm" variant="outlined">
|
|
402
|
+
개발
|
|
403
|
+
</Chip>
|
|
404
|
+
</Stack>
|
|
405
|
+
|
|
406
|
+
<Stack direction="row" justifyContent="space-between" alignItems="center">
|
|
407
|
+
<Stack direction="row" spacing={1} alignItems="center">
|
|
408
|
+
<Avatar size="sm" src="https://i.pravatar.cc/32?img=2" />
|
|
409
|
+
<Typography level="body-sm">김개발</Typography>
|
|
410
|
+
</Stack>
|
|
411
|
+
|
|
412
|
+
<Stack direction="row" spacing={1}>
|
|
413
|
+
<Button size="sm" variant="plain" startDecorator={<FavoriteIcon />}>
|
|
414
|
+
24
|
|
415
|
+
</Button>
|
|
416
|
+
<Button size="sm" variant="plain" startDecorator={<ShareIcon />}>
|
|
417
|
+
공유
|
|
418
|
+
</Button>
|
|
419
|
+
</Stack>
|
|
420
|
+
</Stack>
|
|
421
|
+
</Stack>
|
|
422
|
+
</Sheet>
|
|
330
423
|
```
|
|
331
424
|
|
|
332
425
|
## Notification Panel
|
|
@@ -334,32 +427,42 @@ Combine Sheet with images, chips, and actions for article-style layouts.
|
|
|
334
427
|
Use `variant="soft"` with a semantic color to create attention-grabbing notification banners.
|
|
335
428
|
|
|
336
429
|
```tsx
|
|
337
|
-
<Sheet
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
<
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
430
|
+
<Sheet
|
|
431
|
+
variant="soft"
|
|
432
|
+
color="primary"
|
|
433
|
+
sx={{
|
|
434
|
+
maxWidth: 400,
|
|
435
|
+
borderRadius: "lg",
|
|
436
|
+
p: 3
|
|
437
|
+
}}
|
|
438
|
+
>
|
|
439
|
+
<Stack direction="row" justifyContent="space-between" alignItems="flex-start" spacing={2}>
|
|
440
|
+
<Stack spacing={1}>
|
|
441
|
+
<Typography level="title-md">새로운 알림이 있습니다</Typography>
|
|
442
|
+
<Typography level="body-sm">
|
|
443
|
+
프로젝트에 새로운 댓글이 달렸습니다. 확인해보시겠습니까?
|
|
444
|
+
</Typography>
|
|
445
|
+
</Stack>
|
|
446
|
+
<IconButton variant="plain" size="sm">
|
|
447
|
+
<CloseIcon />
|
|
448
|
+
</IconButton>
|
|
449
|
+
</Stack>
|
|
450
|
+
|
|
451
|
+
<Stack
|
|
452
|
+
direction="row"
|
|
453
|
+
spacing={2}
|
|
454
|
+
sx={{
|
|
455
|
+
mt: 3
|
|
456
|
+
}}
|
|
457
|
+
>
|
|
458
|
+
<Button size="sm" variant="solid">
|
|
459
|
+
확인하기
|
|
460
|
+
</Button>
|
|
461
|
+
<Button size="sm" variant="outlined">
|
|
462
|
+
나중에
|
|
463
|
+
</Button>
|
|
464
|
+
</Stack>
|
|
465
|
+
</Sheet>
|
|
363
466
|
```
|
|
364
467
|
|
|
365
468
|
## Stats Cards
|
|
@@ -367,77 +470,106 @@ Use `variant="soft"` with a semantic color to create attention-grabbing notifica
|
|
|
367
470
|
Multiple Sheet instances arranged side by side make effective dashboard stat widgets.
|
|
368
471
|
|
|
369
472
|
```tsx
|
|
370
|
-
<div
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
<Typography
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
</Typography>
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
<
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
}}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
<
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
</
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
473
|
+
<div
|
|
474
|
+
style={{
|
|
475
|
+
display: "flex",
|
|
476
|
+
gap: "1rem",
|
|
477
|
+
flexWrap: "wrap"
|
|
478
|
+
}}
|
|
479
|
+
>
|
|
480
|
+
<Sheet
|
|
481
|
+
variant="outlined"
|
|
482
|
+
sx={{
|
|
483
|
+
minWidth: 200,
|
|
484
|
+
borderRadius: "lg",
|
|
485
|
+
p: 3
|
|
486
|
+
}}
|
|
487
|
+
>
|
|
488
|
+
<Stack spacing={1}>
|
|
489
|
+
<Typography
|
|
490
|
+
level="body-sm"
|
|
491
|
+
sx={{
|
|
492
|
+
color: "text.secondary"
|
|
493
|
+
}}
|
|
494
|
+
>
|
|
495
|
+
총 사용자
|
|
496
|
+
</Typography>
|
|
497
|
+
<Typography level="h2" color="primary">
|
|
498
|
+
1,234
|
|
499
|
+
</Typography>
|
|
500
|
+
<Typography
|
|
501
|
+
level="body-xs"
|
|
502
|
+
sx={{
|
|
503
|
+
color: "success.600"
|
|
504
|
+
}}
|
|
505
|
+
>
|
|
506
|
+
+12% 증가
|
|
507
|
+
</Typography>
|
|
508
|
+
</Stack>
|
|
509
|
+
</Sheet>
|
|
510
|
+
|
|
511
|
+
<Sheet
|
|
512
|
+
variant="outlined"
|
|
513
|
+
sx={{
|
|
514
|
+
minWidth: 200,
|
|
515
|
+
borderRadius: "lg",
|
|
516
|
+
p: 3
|
|
517
|
+
}}
|
|
518
|
+
>
|
|
519
|
+
<Stack spacing={1}>
|
|
520
|
+
<Typography
|
|
521
|
+
level="body-sm"
|
|
522
|
+
sx={{
|
|
523
|
+
color: "text.secondary"
|
|
524
|
+
}}
|
|
525
|
+
>
|
|
526
|
+
매출
|
|
527
|
+
</Typography>
|
|
528
|
+
<Typography level="h2" color="primary">
|
|
529
|
+
₩5.6M
|
|
530
|
+
</Typography>
|
|
531
|
+
<Typography
|
|
532
|
+
level="body-xs"
|
|
533
|
+
sx={{
|
|
534
|
+
color: "success.600"
|
|
535
|
+
}}
|
|
536
|
+
>
|
|
537
|
+
+8% 증가
|
|
538
|
+
</Typography>
|
|
539
|
+
</Stack>
|
|
540
|
+
</Sheet>
|
|
541
|
+
|
|
542
|
+
<Sheet
|
|
543
|
+
variant="outlined"
|
|
544
|
+
sx={{
|
|
545
|
+
minWidth: 200,
|
|
546
|
+
borderRadius: "lg",
|
|
547
|
+
p: 3
|
|
548
|
+
}}
|
|
549
|
+
>
|
|
550
|
+
<Stack spacing={1}>
|
|
551
|
+
<Typography
|
|
552
|
+
level="body-sm"
|
|
553
|
+
sx={{
|
|
554
|
+
color: "text.secondary"
|
|
555
|
+
}}
|
|
556
|
+
>
|
|
557
|
+
주문 수
|
|
558
|
+
</Typography>
|
|
559
|
+
<Typography level="h2" color="primary">
|
|
560
|
+
789
|
|
561
|
+
</Typography>
|
|
562
|
+
<Typography
|
|
563
|
+
level="body-xs"
|
|
564
|
+
sx={{
|
|
565
|
+
color: "danger.600"
|
|
566
|
+
}}
|
|
567
|
+
>
|
|
568
|
+
-3% 감소
|
|
569
|
+
</Typography>
|
|
570
|
+
</Stack>
|
|
571
|
+
</Sheet>
|
|
572
|
+
</div>
|
|
441
573
|
```
|
|
442
574
|
|
|
443
575
|
## Form Sheet
|
|
@@ -445,87 +577,108 @@ Multiple Sheet instances arranged side by side make effective dashboard stat wid
|
|
|
445
577
|
Wrap form elements inside a Sheet to create visually contained form sections.
|
|
446
578
|
|
|
447
579
|
```tsx
|
|
448
|
-
<Sheet
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
<
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
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
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
</
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
580
|
+
<Sheet
|
|
581
|
+
variant="outlined"
|
|
582
|
+
sx={{
|
|
583
|
+
maxWidth: 400,
|
|
584
|
+
borderRadius: "lg",
|
|
585
|
+
p: 4
|
|
586
|
+
}}
|
|
587
|
+
>
|
|
588
|
+
<Stack spacing={3}>
|
|
589
|
+
<Stack spacing={1}>
|
|
590
|
+
<Typography level="title-lg">문의하기</Typography>
|
|
591
|
+
<Typography
|
|
592
|
+
level="body-sm"
|
|
593
|
+
sx={{
|
|
594
|
+
color: "text.secondary"
|
|
595
|
+
}}
|
|
596
|
+
>
|
|
597
|
+
궁금한 점이 있으시면 언제든지 연락해 주세요.
|
|
598
|
+
</Typography>
|
|
599
|
+
</Stack>
|
|
600
|
+
|
|
601
|
+
<Stack spacing={2}>
|
|
602
|
+
<Stack spacing={1}>
|
|
603
|
+
<Typography level="body-sm" fontWeight="500">
|
|
604
|
+
이름
|
|
605
|
+
</Typography>
|
|
606
|
+
<Box
|
|
607
|
+
sx={{
|
|
608
|
+
p: 2,
|
|
609
|
+
border: "1px solid",
|
|
610
|
+
borderColor: "divider",
|
|
611
|
+
borderRadius: "sm",
|
|
612
|
+
bgcolor: "background.level1"
|
|
613
|
+
}}
|
|
614
|
+
>
|
|
615
|
+
<Typography
|
|
616
|
+
level="body-sm"
|
|
617
|
+
sx={{
|
|
618
|
+
color: "text.secondary"
|
|
619
|
+
}}
|
|
620
|
+
>
|
|
621
|
+
이름을 입력하세요
|
|
622
|
+
</Typography>
|
|
623
|
+
</Box>
|
|
624
|
+
</Stack>
|
|
625
|
+
|
|
626
|
+
<Stack spacing={1}>
|
|
627
|
+
<Typography level="body-sm" fontWeight="500">
|
|
628
|
+
이메일
|
|
629
|
+
</Typography>
|
|
630
|
+
<Box
|
|
631
|
+
sx={{
|
|
632
|
+
p: 2,
|
|
633
|
+
border: "1px solid",
|
|
634
|
+
borderColor: "divider",
|
|
635
|
+
borderRadius: "sm",
|
|
636
|
+
bgcolor: "background.level1"
|
|
637
|
+
}}
|
|
638
|
+
>
|
|
639
|
+
<Typography
|
|
640
|
+
level="body-sm"
|
|
641
|
+
sx={{
|
|
642
|
+
color: "text.secondary"
|
|
643
|
+
}}
|
|
644
|
+
>
|
|
645
|
+
이메일을 입력하세요
|
|
646
|
+
</Typography>
|
|
647
|
+
</Box>
|
|
648
|
+
</Stack>
|
|
649
|
+
|
|
650
|
+
<Stack spacing={1}>
|
|
651
|
+
<Typography level="body-sm" fontWeight="500">
|
|
652
|
+
메시지
|
|
653
|
+
</Typography>
|
|
654
|
+
<Box
|
|
655
|
+
sx={{
|
|
656
|
+
p: 2,
|
|
657
|
+
minHeight: 100,
|
|
658
|
+
border: "1px solid",
|
|
659
|
+
borderColor: "divider",
|
|
660
|
+
borderRadius: "sm",
|
|
661
|
+
bgcolor: "background.level1"
|
|
662
|
+
}}
|
|
663
|
+
>
|
|
664
|
+
<Typography
|
|
665
|
+
level="body-sm"
|
|
666
|
+
sx={{
|
|
667
|
+
color: "text.secondary"
|
|
668
|
+
}}
|
|
669
|
+
>
|
|
670
|
+
메시지를 입력하세요
|
|
671
|
+
</Typography>
|
|
672
|
+
</Box>
|
|
673
|
+
</Stack>
|
|
674
|
+
</Stack>
|
|
675
|
+
|
|
676
|
+
<Stack direction="row" spacing={2} justifyContent="flex-end">
|
|
677
|
+
<Button variant="outlined">취소</Button>
|
|
678
|
+
<Button>전송</Button>
|
|
679
|
+
</Stack>
|
|
680
|
+
</Stack>
|
|
681
|
+
</Sheet>
|
|
529
682
|
```
|
|
530
683
|
|
|
531
684
|
## Nested Sheets
|
|
@@ -533,70 +686,105 @@ Wrap form elements inside a Sheet to create visually contained form sections.
|
|
|
533
686
|
Sheets can be nested to create layered dashboard layouts with distinct visual sections.
|
|
534
687
|
|
|
535
688
|
```tsx
|
|
536
|
-
<Sheet
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
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
|
-
</
|
|
689
|
+
<Sheet
|
|
690
|
+
variant="outlined"
|
|
691
|
+
sx={{
|
|
692
|
+
maxWidth: 600,
|
|
693
|
+
borderRadius: "lg",
|
|
694
|
+
p: 3
|
|
695
|
+
}}
|
|
696
|
+
>
|
|
697
|
+
<Stack spacing={3}>
|
|
698
|
+
<Typography level="title-lg">대시보드</Typography>
|
|
699
|
+
|
|
700
|
+
<Stack direction="row" spacing={2}>
|
|
701
|
+
<Sheet
|
|
702
|
+
variant="soft"
|
|
703
|
+
color="primary"
|
|
704
|
+
sx={{
|
|
705
|
+
flex: 1,
|
|
706
|
+
p: 2,
|
|
707
|
+
borderRadius: "md"
|
|
708
|
+
}}
|
|
709
|
+
>
|
|
710
|
+
<Typography
|
|
711
|
+
level="body-sm"
|
|
712
|
+
sx={{
|
|
713
|
+
color: "primary.700"
|
|
714
|
+
}}
|
|
715
|
+
>
|
|
716
|
+
활성 사용자
|
|
717
|
+
</Typography>
|
|
718
|
+
<Typography
|
|
719
|
+
level="h3"
|
|
720
|
+
sx={{
|
|
721
|
+
color: "primary.800"
|
|
722
|
+
}}
|
|
723
|
+
>
|
|
724
|
+
2,345
|
|
725
|
+
</Typography>
|
|
726
|
+
</Sheet>
|
|
727
|
+
|
|
728
|
+
<Sheet
|
|
729
|
+
variant="soft"
|
|
730
|
+
color="success"
|
|
731
|
+
sx={{
|
|
732
|
+
flex: 1,
|
|
733
|
+
p: 2,
|
|
734
|
+
borderRadius: "md"
|
|
735
|
+
}}
|
|
736
|
+
>
|
|
737
|
+
<Typography
|
|
738
|
+
level="body-sm"
|
|
739
|
+
sx={{
|
|
740
|
+
color: "success.700"
|
|
741
|
+
}}
|
|
742
|
+
>
|
|
743
|
+
완료된 작업
|
|
744
|
+
</Typography>
|
|
745
|
+
<Typography
|
|
746
|
+
level="h3"
|
|
747
|
+
sx={{
|
|
748
|
+
color: "success.800"
|
|
749
|
+
}}
|
|
750
|
+
>
|
|
751
|
+
156
|
|
752
|
+
</Typography>
|
|
753
|
+
</Sheet>
|
|
754
|
+
</Stack>
|
|
755
|
+
|
|
756
|
+
<Sheet
|
|
757
|
+
variant="soft"
|
|
758
|
+
sx={{
|
|
759
|
+
p: 3,
|
|
760
|
+
borderRadius: "md"
|
|
761
|
+
}}
|
|
762
|
+
>
|
|
763
|
+
<Stack spacing={2}>
|
|
764
|
+
<Typography level="title-md">최근 활동</Typography>
|
|
765
|
+
|
|
766
|
+
<Stack spacing={1}>
|
|
767
|
+
{[
|
|
768
|
+
"새로운 사용자가 가입했습니다",
|
|
769
|
+
"프로젝트가 완료되었습니다",
|
|
770
|
+
"댓글이 등록되었습니다"
|
|
771
|
+
].map((activity) => (
|
|
772
|
+
<Box
|
|
773
|
+
key={activity}
|
|
774
|
+
sx={{
|
|
775
|
+
p: 1.5,
|
|
776
|
+
bgcolor: "background.body",
|
|
777
|
+
borderRadius: "sm"
|
|
778
|
+
}}
|
|
779
|
+
>
|
|
780
|
+
<Typography level="body-sm">{activity}</Typography>
|
|
781
|
+
</Box>
|
|
782
|
+
))}
|
|
783
|
+
</Stack>
|
|
784
|
+
</Stack>
|
|
785
|
+
</Sheet>
|
|
786
|
+
</Stack>
|
|
787
|
+
</Sheet>
|
|
600
788
|
```
|
|
601
789
|
|
|
602
790
|
## Dashboard Stat Widget
|
|
@@ -614,11 +802,9 @@ function StatWidget({ label, value, change }) {
|
|
|
614
802
|
<Typography level="h2" color="primary">
|
|
615
803
|
{value}
|
|
616
804
|
</Typography>
|
|
617
|
-
<Typography
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
>
|
|
621
|
-
{change > 0 ? '+' : ''}{change}% from last month
|
|
805
|
+
<Typography level="body-xs" sx={{ color: change > 0 ? 'success.600' : 'danger.600' }}>
|
|
806
|
+
{change > 0 ? '+' : ''}
|
|
807
|
+
{change}% from last month
|
|
622
808
|
</Typography>
|
|
623
809
|
</Stack>
|
|
624
810
|
</Sheet>
|
|
@@ -634,11 +820,7 @@ import WarningIcon from '@mui/icons-material/Warning';
|
|
|
634
820
|
|
|
635
821
|
function AlertBanner({ message, onDismiss }) {
|
|
636
822
|
return (
|
|
637
|
-
<Sheet
|
|
638
|
-
variant="soft"
|
|
639
|
-
color="warning"
|
|
640
|
-
sx={{ borderRadius: 'md', p: 2 }}
|
|
641
|
-
>
|
|
823
|
+
<Sheet variant="soft" color="warning" sx={{ borderRadius: 'md', p: 2 }}>
|
|
642
824
|
<Stack direction="row" alignItems="center" spacing={2}>
|
|
643
825
|
<WarningIcon />
|
|
644
826
|
<Typography level="body-md" sx={{ flex: 1 }}>
|