@ceed/ads 1.35.0 → 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/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/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/ProfileMenu/ProfileMenu.d.ts +2 -2
- package/dist/components/Radio/Radio.d.ts +1 -0
- package/dist/components/RadioList/RadioList.d.ts +3 -2
- package/dist/components/SearchBar/SearchBar.d.ts +6 -5
- package/dist/components/SearchBar/index.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 +4 -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 +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 +101 -104
- 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 -265
- package/dist/components/feedback/Skeleton.md +125 -89
- package/dist/components/index.d.ts +61 -3
- 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/FilterMenu.md +138 -8
- 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 +154 -55
- package/dist/components/inputs/Select.md +106 -95
- 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 +182 -116
- package/dist/components/navigation/Dropdown.md +732 -391
- package/dist/components/navigation/IconMenuButton.md +14 -6
- package/dist/components/navigation/InsetDrawer.md +550 -378
- package/dist/components/navigation/Link.md +104 -94
- 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/ProfileMenu.md +65 -43
- package/dist/components/navigation/Stepper.md +2 -12
- package/dist/components/navigation/Tabs.md +209 -183
- 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 +65 -40
- package/dist/index.browser.js +4 -4
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +1653 -1560
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1316 -1215
- package/framer/index.js +1 -1
- package/package.json +32 -35
|
@@ -6,10 +6,10 @@ The Stack component is a layout component that arranges child elements in one di
|
|
|
6
6
|
|
|
7
7
|
```tsx
|
|
8
8
|
<Stack {...args}>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</Stack>
|
|
9
|
+
<StackItem>첫 번째 아이템</StackItem>
|
|
10
|
+
<StackItem>두 번째 아이템</StackItem>
|
|
11
|
+
<StackItem>세 번째 아이템</StackItem>
|
|
12
|
+
</Stack>
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
| Field | Description | Default |
|
|
@@ -40,37 +40,45 @@ function MyComponent() {
|
|
|
40
40
|
The basic usage for vertical (`column`) and horizontal (`row`) layouts.
|
|
41
41
|
|
|
42
42
|
```tsx
|
|
43
|
-
<div
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
43
|
+
<div
|
|
44
|
+
style={{
|
|
45
|
+
display: "flex",
|
|
46
|
+
gap: "3rem",
|
|
47
|
+
flexWrap: "wrap"
|
|
48
|
+
}}
|
|
49
|
+
>
|
|
50
|
+
<div>
|
|
51
|
+
<Typography
|
|
52
|
+
level="title-md"
|
|
53
|
+
sx={{
|
|
54
|
+
mb: 2
|
|
55
|
+
}}
|
|
56
|
+
>
|
|
57
|
+
세로 스택 (Column)
|
|
58
|
+
</Typography>
|
|
59
|
+
<Stack spacing={2}>
|
|
60
|
+
<StackItem>Item 1</StackItem>
|
|
61
|
+
<StackItem>Item 2</StackItem>
|
|
62
|
+
<StackItem>Item 3</StackItem>
|
|
63
|
+
</Stack>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div>
|
|
67
|
+
<Typography
|
|
68
|
+
level="title-md"
|
|
69
|
+
sx={{
|
|
70
|
+
mb: 2
|
|
71
|
+
}}
|
|
72
|
+
>
|
|
73
|
+
가로 스택 (Row)
|
|
74
|
+
</Typography>
|
|
75
|
+
<Stack direction="row" spacing={2}>
|
|
76
|
+
<StackItem>Item 1</StackItem>
|
|
77
|
+
<StackItem>Item 2</StackItem>
|
|
78
|
+
<StackItem>Item 3</StackItem>
|
|
79
|
+
</Stack>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
74
82
|
```
|
|
75
83
|
|
|
76
84
|
## Stack Directions
|
|
@@ -78,68 +86,84 @@ The basic usage for vertical (`column`) and horizontal (`row`) layouts.
|
|
|
78
86
|
You can use different layout directions.
|
|
79
87
|
|
|
80
88
|
```tsx
|
|
81
|
-
<div
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}}>
|
|
120
|
-
Column (세로)
|
|
121
|
-
</Typography>
|
|
122
|
-
<Stack direction="column" spacing={2}>
|
|
123
|
-
<StackItem>1</StackItem>
|
|
124
|
-
<StackItem>2</StackItem>
|
|
125
|
-
<StackItem>3</StackItem>
|
|
126
|
-
</Stack>
|
|
127
|
-
</div>
|
|
89
|
+
<div
|
|
90
|
+
style={{
|
|
91
|
+
display: "flex",
|
|
92
|
+
flexDirection: "column",
|
|
93
|
+
gap: "3rem"
|
|
94
|
+
}}
|
|
95
|
+
>
|
|
96
|
+
<div>
|
|
97
|
+
<Typography
|
|
98
|
+
level="title-sm"
|
|
99
|
+
sx={{
|
|
100
|
+
mb: 1
|
|
101
|
+
}}
|
|
102
|
+
>
|
|
103
|
+
Row (가로)
|
|
104
|
+
</Typography>
|
|
105
|
+
<Stack direction="row" spacing={2}>
|
|
106
|
+
<StackItem>1</StackItem>
|
|
107
|
+
<StackItem>2</StackItem>
|
|
108
|
+
<StackItem>3</StackItem>
|
|
109
|
+
</Stack>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
<div>
|
|
113
|
+
<Typography
|
|
114
|
+
level="title-sm"
|
|
115
|
+
sx={{
|
|
116
|
+
mb: 1
|
|
117
|
+
}}
|
|
118
|
+
>
|
|
119
|
+
Row Reverse (가로 역순)
|
|
120
|
+
</Typography>
|
|
121
|
+
<Stack direction="row-reverse" spacing={2}>
|
|
122
|
+
<StackItem>1</StackItem>
|
|
123
|
+
<StackItem>2</StackItem>
|
|
124
|
+
<StackItem>3</StackItem>
|
|
125
|
+
</Stack>
|
|
126
|
+
</div>
|
|
128
127
|
|
|
129
|
-
<div
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
<
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
128
|
+
<div
|
|
129
|
+
style={{
|
|
130
|
+
display: "flex",
|
|
131
|
+
gap: "3rem"
|
|
132
|
+
}}
|
|
133
|
+
>
|
|
134
|
+
<div>
|
|
135
|
+
<Typography
|
|
136
|
+
level="title-sm"
|
|
137
|
+
sx={{
|
|
138
|
+
mb: 1
|
|
139
|
+
}}
|
|
140
|
+
>
|
|
141
|
+
Column (세로)
|
|
142
|
+
</Typography>
|
|
143
|
+
<Stack direction="column" spacing={2}>
|
|
144
|
+
<StackItem>1</StackItem>
|
|
145
|
+
<StackItem>2</StackItem>
|
|
146
|
+
<StackItem>3</StackItem>
|
|
147
|
+
</Stack>
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
<div>
|
|
151
|
+
<Typography
|
|
152
|
+
level="title-sm"
|
|
153
|
+
sx={{
|
|
154
|
+
mb: 1
|
|
155
|
+
}}
|
|
156
|
+
>
|
|
157
|
+
Column Reverse (세로 역순)
|
|
158
|
+
</Typography>
|
|
159
|
+
<Stack direction="column-reverse" spacing={2}>
|
|
160
|
+
<StackItem>1</StackItem>
|
|
161
|
+
<StackItem>2</StackItem>
|
|
162
|
+
<StackItem>3</StackItem>
|
|
163
|
+
</Stack>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
143
167
|
```
|
|
144
168
|
|
|
145
169
|
## Stack Spacing Examples
|
|
@@ -147,63 +171,77 @@ You can use different layout directions.
|
|
|
147
171
|
You can apply different spacing values.
|
|
148
172
|
|
|
149
173
|
```tsx
|
|
150
|
-
<div
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
</
|
|
200
|
-
<
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
174
|
+
<div
|
|
175
|
+
style={{
|
|
176
|
+
display: "flex",
|
|
177
|
+
flexDirection: "column",
|
|
178
|
+
gap: "3rem"
|
|
179
|
+
}}
|
|
180
|
+
>
|
|
181
|
+
<div>
|
|
182
|
+
<Typography
|
|
183
|
+
level="title-sm"
|
|
184
|
+
sx={{
|
|
185
|
+
mb: 1
|
|
186
|
+
}}
|
|
187
|
+
>
|
|
188
|
+
간격 없음 (spacing=0)
|
|
189
|
+
</Typography>
|
|
190
|
+
<Stack direction="row" spacing={0}>
|
|
191
|
+
<StackItem>Item 1</StackItem>
|
|
192
|
+
<StackItem>Item 2</StackItem>
|
|
193
|
+
<StackItem>Item 3</StackItem>
|
|
194
|
+
</Stack>
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<div>
|
|
198
|
+
<Typography
|
|
199
|
+
level="title-sm"
|
|
200
|
+
sx={{
|
|
201
|
+
mb: 1
|
|
202
|
+
}}
|
|
203
|
+
>
|
|
204
|
+
작은 간격 (spacing=1)
|
|
205
|
+
</Typography>
|
|
206
|
+
<Stack direction="row" spacing={1}>
|
|
207
|
+
<StackItem>Item 1</StackItem>
|
|
208
|
+
<StackItem>Item 2</StackItem>
|
|
209
|
+
<StackItem>Item 3</StackItem>
|
|
210
|
+
</Stack>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<div>
|
|
214
|
+
<Typography
|
|
215
|
+
level="title-sm"
|
|
216
|
+
sx={{
|
|
217
|
+
mb: 1
|
|
218
|
+
}}
|
|
219
|
+
>
|
|
220
|
+
중간 간격 (spacing=2)
|
|
221
|
+
</Typography>
|
|
222
|
+
<Stack direction="row" spacing={2}>
|
|
223
|
+
<StackItem>Item 1</StackItem>
|
|
224
|
+
<StackItem>Item 2</StackItem>
|
|
225
|
+
<StackItem>Item 3</StackItem>
|
|
226
|
+
</Stack>
|
|
227
|
+
</div>
|
|
228
|
+
|
|
229
|
+
<div>
|
|
230
|
+
<Typography
|
|
231
|
+
level="title-sm"
|
|
232
|
+
sx={{
|
|
233
|
+
mb: 1
|
|
234
|
+
}}
|
|
235
|
+
>
|
|
236
|
+
큰 간격 (spacing=4)
|
|
237
|
+
</Typography>
|
|
238
|
+
<Stack direction="row" spacing={4}>
|
|
239
|
+
<StackItem>Item 1</StackItem>
|
|
240
|
+
<StackItem>Item 2</StackItem>
|
|
241
|
+
<StackItem>Item 3</StackItem>
|
|
242
|
+
</Stack>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
207
245
|
```
|
|
208
246
|
|
|
209
247
|
## Stack Alignment
|
|
@@ -211,68 +249,107 @@ You can apply different spacing values.
|
|
|
211
249
|
You can control element alignment in different ways.
|
|
212
250
|
|
|
213
251
|
```tsx
|
|
214
|
-
<div
|
|
215
|
-
|
|
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
|
-
|
|
256
|
-
<StackItem
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
<
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
</
|
|
275
|
-
|
|
252
|
+
<div
|
|
253
|
+
style={{
|
|
254
|
+
display: "flex",
|
|
255
|
+
flexDirection: "column",
|
|
256
|
+
gap: "3rem"
|
|
257
|
+
}}
|
|
258
|
+
>
|
|
259
|
+
<div>
|
|
260
|
+
<Typography
|
|
261
|
+
level="title-sm"
|
|
262
|
+
sx={{
|
|
263
|
+
mb: 1
|
|
264
|
+
}}
|
|
265
|
+
>
|
|
266
|
+
Center Alignment
|
|
267
|
+
</Typography>
|
|
268
|
+
<Stack
|
|
269
|
+
direction="row"
|
|
270
|
+
spacing={2}
|
|
271
|
+
alignItems="center"
|
|
272
|
+
justifyContent="center"
|
|
273
|
+
sx={{
|
|
274
|
+
minHeight: 120,
|
|
275
|
+
bgcolor: "neutral.50",
|
|
276
|
+
borderRadius: "md",
|
|
277
|
+
p: 2
|
|
278
|
+
}}
|
|
279
|
+
>
|
|
280
|
+
<StackItem
|
|
281
|
+
sx={{
|
|
282
|
+
height: 40
|
|
283
|
+
}}
|
|
284
|
+
>
|
|
285
|
+
짧은 아이템
|
|
286
|
+
</StackItem>
|
|
287
|
+
<StackItem
|
|
288
|
+
sx={{
|
|
289
|
+
height: 80
|
|
290
|
+
}}
|
|
291
|
+
>
|
|
292
|
+
중간 아이템
|
|
293
|
+
</StackItem>
|
|
294
|
+
<StackItem
|
|
295
|
+
sx={{
|
|
296
|
+
height: 60
|
|
297
|
+
}}
|
|
298
|
+
>
|
|
299
|
+
다른 아이템
|
|
300
|
+
</StackItem>
|
|
301
|
+
</Stack>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<div>
|
|
305
|
+
<Typography
|
|
306
|
+
level="title-sm"
|
|
307
|
+
sx={{
|
|
308
|
+
mb: 1
|
|
309
|
+
}}
|
|
310
|
+
>
|
|
311
|
+
Space Between
|
|
312
|
+
</Typography>
|
|
313
|
+
<Stack
|
|
314
|
+
direction="row"
|
|
315
|
+
spacing={0}
|
|
316
|
+
justifyContent="space-between"
|
|
317
|
+
sx={{
|
|
318
|
+
bgcolor: "neutral.50",
|
|
319
|
+
borderRadius: "md",
|
|
320
|
+
p: 2
|
|
321
|
+
}}
|
|
322
|
+
>
|
|
323
|
+
<StackItem>왼쪽</StackItem>
|
|
324
|
+
<StackItem>가운데</StackItem>
|
|
325
|
+
<StackItem>오른쪽</StackItem>
|
|
326
|
+
</Stack>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<div>
|
|
330
|
+
<Typography
|
|
331
|
+
level="title-sm"
|
|
332
|
+
sx={{
|
|
333
|
+
mb: 1
|
|
334
|
+
}}
|
|
335
|
+
>
|
|
336
|
+
Flex End
|
|
337
|
+
</Typography>
|
|
338
|
+
<Stack
|
|
339
|
+
direction="row"
|
|
340
|
+
spacing={2}
|
|
341
|
+
justifyContent="flex-end"
|
|
342
|
+
sx={{
|
|
343
|
+
bgcolor: "neutral.50",
|
|
344
|
+
borderRadius: "md",
|
|
345
|
+
p: 2
|
|
346
|
+
}}
|
|
347
|
+
>
|
|
348
|
+
<StackItem>Item 1</StackItem>
|
|
349
|
+
<StackItem>Item 2</StackItem>
|
|
350
|
+
</Stack>
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
276
353
|
```
|
|
277
354
|
|
|
278
355
|
## Stack Responsive Direction
|
|
@@ -281,56 +358,69 @@ You can change the layout direction based on screen size.
|
|
|
281
358
|
|
|
282
359
|
```tsx
|
|
283
360
|
<div>
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
329
|
-
|
|
330
|
-
</
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
361
|
+
<Typography
|
|
362
|
+
level="title-md"
|
|
363
|
+
sx={{
|
|
364
|
+
mb: 2
|
|
365
|
+
}}
|
|
366
|
+
>
|
|
367
|
+
반응형 방향 (화면 크기에 따라 세로↔가로 전환)
|
|
368
|
+
</Typography>
|
|
369
|
+
<Stack
|
|
370
|
+
direction={{
|
|
371
|
+
xs: "column",
|
|
372
|
+
sm: "row"
|
|
373
|
+
}}
|
|
374
|
+
spacing={2}
|
|
375
|
+
sx={{
|
|
376
|
+
p: 2,
|
|
377
|
+
bgcolor: "background.level1",
|
|
378
|
+
borderRadius: "md"
|
|
379
|
+
}}
|
|
380
|
+
>
|
|
381
|
+
<Box
|
|
382
|
+
sx={{
|
|
383
|
+
flex: 1,
|
|
384
|
+
p: 2,
|
|
385
|
+
bgcolor: "primary.100",
|
|
386
|
+
borderRadius: "sm"
|
|
387
|
+
}}
|
|
388
|
+
>
|
|
389
|
+
<Typography level="body-sm">
|
|
390
|
+
작은 화면: 세로 배치
|
|
391
|
+
<br />큰 화면: 가로 배치
|
|
392
|
+
</Typography>
|
|
393
|
+
</Box>
|
|
394
|
+
<Box
|
|
395
|
+
sx={{
|
|
396
|
+
flex: 1,
|
|
397
|
+
p: 2,
|
|
398
|
+
bgcolor: "success.100",
|
|
399
|
+
borderRadius: "sm"
|
|
400
|
+
}}
|
|
401
|
+
>
|
|
402
|
+
<Typography level="body-sm">
|
|
403
|
+
반응형 레이아웃으로
|
|
404
|
+
<br />
|
|
405
|
+
자동 조정됩니다
|
|
406
|
+
</Typography>
|
|
407
|
+
</Box>
|
|
408
|
+
<Box
|
|
409
|
+
sx={{
|
|
410
|
+
flex: 1,
|
|
411
|
+
p: 2,
|
|
412
|
+
bgcolor: "warning.100",
|
|
413
|
+
borderRadius: "sm"
|
|
414
|
+
}}
|
|
415
|
+
>
|
|
416
|
+
<Typography level="body-sm">
|
|
417
|
+
브라우저 크기를
|
|
418
|
+
<br />
|
|
419
|
+
조절해보세요
|
|
420
|
+
</Typography>
|
|
421
|
+
</Box>
|
|
422
|
+
</Stack>
|
|
423
|
+
</div>
|
|
334
424
|
```
|
|
335
425
|
|
|
336
426
|
## Nested Stack Layouts
|
|
@@ -339,56 +429,89 @@ You can nest Stack components to build more complex layouts.
|
|
|
339
429
|
|
|
340
430
|
```tsx
|
|
341
431
|
<div>
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
<
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
</
|
|
381
|
-
<
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
</Stack>
|
|
389
|
-
</Box>
|
|
390
|
-
|
|
391
|
-
|
|
432
|
+
<Typography
|
|
433
|
+
level="title-md"
|
|
434
|
+
sx={{
|
|
435
|
+
mb: 2
|
|
436
|
+
}}
|
|
437
|
+
>
|
|
438
|
+
중첩된 스택
|
|
439
|
+
</Typography>
|
|
440
|
+
<Stack spacing={3}>
|
|
441
|
+
<Box
|
|
442
|
+
sx={{
|
|
443
|
+
p: 2,
|
|
444
|
+
bgcolor: "primary.50",
|
|
445
|
+
borderRadius: "md"
|
|
446
|
+
}}
|
|
447
|
+
>
|
|
448
|
+
<Typography
|
|
449
|
+
level="title-sm"
|
|
450
|
+
sx={{
|
|
451
|
+
mb: 2
|
|
452
|
+
}}
|
|
453
|
+
>
|
|
454
|
+
세로 스택 안의 가로 스택
|
|
455
|
+
</Typography>
|
|
456
|
+
<Stack direction="row" spacing={2}>
|
|
457
|
+
<StackItem
|
|
458
|
+
sx={{
|
|
459
|
+
bgcolor: "primary.200"
|
|
460
|
+
}}
|
|
461
|
+
>
|
|
462
|
+
Item 1
|
|
463
|
+
</StackItem>
|
|
464
|
+
<StackItem
|
|
465
|
+
sx={{
|
|
466
|
+
bgcolor: "primary.200"
|
|
467
|
+
}}
|
|
468
|
+
>
|
|
469
|
+
Item 2
|
|
470
|
+
</StackItem>
|
|
471
|
+
<StackItem
|
|
472
|
+
sx={{
|
|
473
|
+
bgcolor: "primary.200"
|
|
474
|
+
}}
|
|
475
|
+
>
|
|
476
|
+
Item 3
|
|
477
|
+
</StackItem>
|
|
478
|
+
</Stack>
|
|
479
|
+
</Box>
|
|
480
|
+
|
|
481
|
+
<Box
|
|
482
|
+
sx={{
|
|
483
|
+
p: 2,
|
|
484
|
+
bgcolor: "success.50",
|
|
485
|
+
borderRadius: "md"
|
|
486
|
+
}}
|
|
487
|
+
>
|
|
488
|
+
<Typography
|
|
489
|
+
level="title-sm"
|
|
490
|
+
sx={{
|
|
491
|
+
mb: 2
|
|
492
|
+
}}
|
|
493
|
+
>
|
|
494
|
+
또 다른 가로 스택
|
|
495
|
+
</Typography>
|
|
496
|
+
<Stack direction="row" spacing={2} justifyContent="center">
|
|
497
|
+
<StackItem
|
|
498
|
+
sx={{
|
|
499
|
+
bgcolor: "success.200"
|
|
500
|
+
}}
|
|
501
|
+
>
|
|
502
|
+
중앙
|
|
503
|
+
</StackItem>
|
|
504
|
+
<StackItem
|
|
505
|
+
sx={{
|
|
506
|
+
bgcolor: "success.200"
|
|
507
|
+
}}
|
|
508
|
+
>
|
|
509
|
+
정렬
|
|
510
|
+
</StackItem>
|
|
511
|
+
</Stack>
|
|
512
|
+
</Box>
|
|
513
|
+
</Stack>
|
|
514
|
+
</div>
|
|
392
515
|
```
|
|
393
516
|
|
|
394
517
|
## Stack Real World Examples
|
|
@@ -396,242 +519,293 @@ You can nest Stack components to build more complex layouts.
|
|
|
396
519
|
Examples that demonstrate real-world use cases.
|
|
397
520
|
|
|
398
521
|
```tsx
|
|
399
|
-
<div
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
borderColor: 'divider',
|
|
417
|
-
borderRadius: 'md'
|
|
418
|
-
}}>
|
|
419
|
-
<Typography level="title-md">로고</Typography>
|
|
420
|
-
<Stack direction="row" spacing={2}>
|
|
421
|
-
<Button variant="plain" size="sm">
|
|
422
|
-
홈
|
|
423
|
-
</Button>
|
|
424
|
-
<Button variant="plain" size="sm">
|
|
425
|
-
소개
|
|
426
|
-
</Button>
|
|
427
|
-
<Button variant="plain" size="sm">
|
|
428
|
-
연락처
|
|
429
|
-
</Button>
|
|
430
|
-
</Stack>
|
|
431
|
-
<Button size="sm">로그인</Button>
|
|
432
|
-
</Stack>
|
|
433
|
-
</div>
|
|
434
|
-
|
|
435
|
-
{/* Profile Card */}
|
|
436
|
-
<div>
|
|
437
|
-
<Typography level="title-sm" sx={{
|
|
438
|
-
mb: 2
|
|
439
|
-
}}>
|
|
440
|
-
프로필 카드
|
|
441
|
-
</Typography>
|
|
442
|
-
<Box sx={{
|
|
443
|
-
p: 3,
|
|
444
|
-
bgcolor: 'background.body',
|
|
445
|
-
border: '1px solid',
|
|
446
|
-
borderColor: 'divider',
|
|
447
|
-
borderRadius: 'lg'
|
|
448
|
-
}}>
|
|
449
|
-
<Stack spacing={2}>
|
|
450
|
-
<Stack direction="row" spacing={2} alignItems="center">
|
|
451
|
-
<Avatar size="lg" />
|
|
452
|
-
<Stack spacing={0.5}>
|
|
453
|
-
<Typography level="title-md">홍길동</Typography>
|
|
454
|
-
<Typography level="body-sm" sx={{
|
|
455
|
-
color: 'text.secondary'
|
|
456
|
-
}}>
|
|
457
|
-
프론트엔드 개발자
|
|
458
|
-
</Typography>
|
|
459
|
-
</Stack>
|
|
460
|
-
</Stack>
|
|
461
|
-
|
|
462
|
-
<Typography level="body-md">
|
|
463
|
-
사용자 경험을 중시하는 프론트엔드 개발자입니다. React와 TypeScript를 주로 사용합니다.
|
|
464
|
-
</Typography>
|
|
465
|
-
|
|
466
|
-
<Stack direction="row" spacing={1}>
|
|
467
|
-
<Chip size="sm" variant="soft">
|
|
468
|
-
React
|
|
469
|
-
</Chip>
|
|
470
|
-
<Chip size="sm" variant="soft">
|
|
471
|
-
TypeScript
|
|
472
|
-
</Chip>
|
|
473
|
-
<Chip size="sm" variant="soft">
|
|
474
|
-
Next.js
|
|
475
|
-
</Chip>
|
|
476
|
-
</Stack>
|
|
477
|
-
|
|
478
|
-
<Stack direction="row" spacing={1} justifyContent="flex-end">
|
|
479
|
-
<Button size="sm" variant="outlined" startDecorator={<BookmarkIcon />}>
|
|
480
|
-
저장
|
|
481
|
-
</Button>
|
|
482
|
-
<Button size="sm" variant="outlined" startDecorator={<ShareIcon />}>
|
|
483
|
-
공유
|
|
484
|
-
</Button>
|
|
485
|
-
</Stack>
|
|
486
|
-
</Stack>
|
|
487
|
-
</Box>
|
|
488
|
-
</div>
|
|
489
|
-
|
|
490
|
-
{/* Article Card */}
|
|
491
|
-
<div>
|
|
492
|
-
<Typography level="title-sm" sx={{
|
|
493
|
-
mb: 2
|
|
494
|
-
}}>
|
|
495
|
-
아티클 카드
|
|
496
|
-
</Typography>
|
|
497
|
-
<Box sx={{
|
|
498
|
-
p: 3,
|
|
499
|
-
bgcolor: 'background.body',
|
|
500
|
-
border: '1px solid',
|
|
501
|
-
borderColor: 'divider',
|
|
502
|
-
borderRadius: 'lg'
|
|
503
|
-
}}>
|
|
504
|
-
<Stack spacing={2}>
|
|
505
|
-
<Stack direction="row" justifyContent="space-between" alignItems="flex-start">
|
|
506
|
-
<Stack spacing={1}>
|
|
507
|
-
<Typography level="title-lg">React 18의 새로운 기능들</Typography>
|
|
508
|
-
<Typography level="body-sm" sx={{
|
|
509
|
-
color: 'text.secondary'
|
|
510
|
-
}}>
|
|
511
|
-
2024년 1월 15일 • 5분 읽기
|
|
512
|
-
</Typography>
|
|
513
|
-
</Stack>
|
|
514
|
-
<Button variant="plain" size="sm" sx={{
|
|
515
|
-
color: 'warning.500'
|
|
516
|
-
}}>
|
|
517
|
-
<StarIcon />
|
|
518
|
-
</Button>
|
|
519
|
-
</Stack>
|
|
520
|
-
|
|
521
|
-
<Typography level="body-md">
|
|
522
|
-
React 18에서 도입된 Concurrent Features와 새로운 Hooks에 대해 자세히 알아보겠습니다. Suspense,
|
|
523
|
-
useTransition, useDeferredValue 등...
|
|
524
|
-
</Typography>
|
|
525
|
-
|
|
526
|
-
<Stack direction="row" spacing={1}>
|
|
527
|
-
<Chip size="sm" variant="outlined">
|
|
528
|
-
React
|
|
529
|
-
</Chip>
|
|
530
|
-
<Chip size="sm" variant="outlined">
|
|
531
|
-
JavaScript
|
|
532
|
-
</Chip>
|
|
533
|
-
<Chip size="sm" variant="outlined">
|
|
534
|
-
개발
|
|
535
|
-
</Chip>
|
|
536
|
-
</Stack>
|
|
537
|
-
|
|
538
|
-
<Stack direction="row" justifyContent="space-between" alignItems="center">
|
|
539
|
-
<Stack direction="row" spacing={1} alignItems="center">
|
|
540
|
-
<Avatar size="sm" />
|
|
541
|
-
<Typography level="body-sm">김개발</Typography>
|
|
542
|
-
</Stack>
|
|
543
|
-
<Stack direction="row" spacing={1}>
|
|
544
|
-
<Button size="sm" variant="plain">
|
|
545
|
-
좋아요 24
|
|
546
|
-
</Button>
|
|
547
|
-
<Button size="sm" variant="plain">
|
|
548
|
-
댓글 5
|
|
549
|
-
</Button>
|
|
550
|
-
</Stack>
|
|
551
|
-
</Stack>
|
|
552
|
-
</Stack>
|
|
553
|
-
</Box>
|
|
554
|
-
</div>
|
|
555
|
-
|
|
556
|
-
{/* Form Layout */}
|
|
557
|
-
<div>
|
|
558
|
-
<Typography level="title-sm" sx={{
|
|
559
|
-
mb: 2
|
|
560
|
-
}}>
|
|
561
|
-
폼 레이아웃
|
|
562
|
-
</Typography>
|
|
563
|
-
<Box sx={{
|
|
564
|
-
p: 3,
|
|
565
|
-
bgcolor: 'background.body',
|
|
566
|
-
border: '1px solid',
|
|
567
|
-
borderColor: 'divider',
|
|
568
|
-
borderRadius: 'lg'
|
|
569
|
-
}}>
|
|
570
|
-
<Stack spacing={3}>
|
|
571
|
-
<Typography level="title-md">문의하기</Typography>
|
|
572
|
-
|
|
573
|
-
<Stack spacing={2}>
|
|
574
|
-
<Stack spacing={1}>
|
|
575
|
-
<Typography level="body-sm" fontWeight="500">
|
|
576
|
-
이름
|
|
522
|
+
<div
|
|
523
|
+
style={{
|
|
524
|
+
display: "flex",
|
|
525
|
+
flexDirection: "column",
|
|
526
|
+
gap: "3rem",
|
|
527
|
+
maxWidth: 600
|
|
528
|
+
}}
|
|
529
|
+
>
|
|
530
|
+
{/* Navigation Bar */}
|
|
531
|
+
<div>
|
|
532
|
+
<Typography
|
|
533
|
+
level="title-sm"
|
|
534
|
+
sx={{
|
|
535
|
+
mb: 2
|
|
536
|
+
}}
|
|
537
|
+
>
|
|
538
|
+
내비게이션 바
|
|
577
539
|
</Typography>
|
|
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
|
-
</
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
<
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
<Stack direction="row" spacing={2}
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
540
|
+
<Stack
|
|
541
|
+
direction="row"
|
|
542
|
+
spacing={0}
|
|
543
|
+
justifyContent="space-between"
|
|
544
|
+
alignItems="center"
|
|
545
|
+
sx={{
|
|
546
|
+
p: 2,
|
|
547
|
+
bgcolor: "background.body",
|
|
548
|
+
border: "1px solid",
|
|
549
|
+
borderColor: "divider",
|
|
550
|
+
borderRadius: "md"
|
|
551
|
+
}}
|
|
552
|
+
>
|
|
553
|
+
<Typography level="title-md">로고</Typography>
|
|
554
|
+
<Stack direction="row" spacing={2}>
|
|
555
|
+
<Button variant="plain" size="sm">
|
|
556
|
+
홈
|
|
557
|
+
</Button>
|
|
558
|
+
<Button variant="plain" size="sm">
|
|
559
|
+
소개
|
|
560
|
+
</Button>
|
|
561
|
+
<Button variant="plain" size="sm">
|
|
562
|
+
연락처
|
|
563
|
+
</Button>
|
|
564
|
+
</Stack>
|
|
565
|
+
<Button size="sm">로그인</Button>
|
|
566
|
+
</Stack>
|
|
567
|
+
</div>
|
|
568
|
+
|
|
569
|
+
{/* Profile Card */}
|
|
570
|
+
<div>
|
|
571
|
+
<Typography
|
|
572
|
+
level="title-sm"
|
|
573
|
+
sx={{
|
|
574
|
+
mb: 2
|
|
575
|
+
}}
|
|
576
|
+
>
|
|
577
|
+
프로필 카드
|
|
578
|
+
</Typography>
|
|
579
|
+
<Box
|
|
580
|
+
sx={{
|
|
581
|
+
p: 3,
|
|
582
|
+
bgcolor: "background.body",
|
|
583
|
+
border: "1px solid",
|
|
584
|
+
borderColor: "divider",
|
|
585
|
+
borderRadius: "lg"
|
|
586
|
+
}}
|
|
587
|
+
>
|
|
588
|
+
<Stack spacing={2}>
|
|
589
|
+
<Stack direction="row" spacing={2} alignItems="center">
|
|
590
|
+
<Avatar size="lg" />
|
|
591
|
+
<Stack spacing={0.5}>
|
|
592
|
+
<Typography level="title-md">홍길동</Typography>
|
|
593
|
+
<Typography
|
|
594
|
+
level="body-sm"
|
|
595
|
+
sx={{
|
|
596
|
+
color: "text.secondary"
|
|
597
|
+
}}
|
|
598
|
+
>
|
|
599
|
+
프론트엔드 개발자
|
|
600
|
+
</Typography>
|
|
601
|
+
</Stack>
|
|
602
|
+
</Stack>
|
|
603
|
+
|
|
604
|
+
<Typography level="body-md">
|
|
605
|
+
사용자 경험을 중시하는 프론트엔드 개발자입니다. React와 TypeScript를 주로 사용합니다.
|
|
606
|
+
</Typography>
|
|
607
|
+
|
|
608
|
+
<Stack direction="row" spacing={1}>
|
|
609
|
+
<Chip size="sm" variant="soft">
|
|
610
|
+
React
|
|
611
|
+
</Chip>
|
|
612
|
+
<Chip size="sm" variant="soft">
|
|
613
|
+
TypeScript
|
|
614
|
+
</Chip>
|
|
615
|
+
<Chip size="sm" variant="soft">
|
|
616
|
+
Next.js
|
|
617
|
+
</Chip>
|
|
618
|
+
</Stack>
|
|
619
|
+
|
|
620
|
+
<Stack direction="row" spacing={1} justifyContent="flex-end">
|
|
621
|
+
<Button size="sm" variant="outlined" startDecorator={<BookmarkIcon />}>
|
|
622
|
+
저장
|
|
623
|
+
</Button>
|
|
624
|
+
<Button size="sm" variant="outlined" startDecorator={<ShareIcon />}>
|
|
625
|
+
공유
|
|
626
|
+
</Button>
|
|
627
|
+
</Stack>
|
|
628
|
+
</Stack>
|
|
629
|
+
</Box>
|
|
630
|
+
</div>
|
|
631
|
+
|
|
632
|
+
{/* Article Card */}
|
|
633
|
+
<div>
|
|
634
|
+
<Typography
|
|
635
|
+
level="title-sm"
|
|
636
|
+
sx={{
|
|
637
|
+
mb: 2
|
|
638
|
+
}}
|
|
639
|
+
>
|
|
640
|
+
아티클 카드
|
|
641
|
+
</Typography>
|
|
642
|
+
<Box
|
|
643
|
+
sx={{
|
|
644
|
+
p: 3,
|
|
645
|
+
bgcolor: "background.body",
|
|
646
|
+
border: "1px solid",
|
|
647
|
+
borderColor: "divider",
|
|
648
|
+
borderRadius: "lg"
|
|
649
|
+
}}
|
|
650
|
+
>
|
|
651
|
+
<Stack spacing={2}>
|
|
652
|
+
<Stack direction="row" justifyContent="space-between" alignItems="flex-start">
|
|
653
|
+
<Stack spacing={1}>
|
|
654
|
+
<Typography level="title-lg">React 18의 새로운 기능들</Typography>
|
|
655
|
+
<Typography
|
|
656
|
+
level="body-sm"
|
|
657
|
+
sx={{
|
|
658
|
+
color: "text.secondary"
|
|
659
|
+
}}
|
|
660
|
+
>
|
|
661
|
+
2024년 1월 15일 • 5분 읽기
|
|
662
|
+
</Typography>
|
|
663
|
+
</Stack>
|
|
664
|
+
<Button
|
|
665
|
+
variant="plain"
|
|
666
|
+
size="sm"
|
|
667
|
+
sx={{
|
|
668
|
+
color: "warning.500"
|
|
669
|
+
}}
|
|
670
|
+
>
|
|
671
|
+
<StarIcon />
|
|
672
|
+
</Button>
|
|
673
|
+
</Stack>
|
|
674
|
+
|
|
675
|
+
<Typography level="body-md">
|
|
676
|
+
React 18에서 도입된 Concurrent Features와 새로운 Hooks에 대해 자세히 알아보겠습니다.
|
|
677
|
+
Suspense, useTransition, useDeferredValue 등...
|
|
678
|
+
</Typography>
|
|
679
|
+
|
|
680
|
+
<Stack direction="row" spacing={1}>
|
|
681
|
+
<Chip size="sm" variant="outlined">
|
|
682
|
+
React
|
|
683
|
+
</Chip>
|
|
684
|
+
<Chip size="sm" variant="outlined">
|
|
685
|
+
JavaScript
|
|
686
|
+
</Chip>
|
|
687
|
+
<Chip size="sm" variant="outlined">
|
|
688
|
+
개발
|
|
689
|
+
</Chip>
|
|
690
|
+
</Stack>
|
|
691
|
+
|
|
692
|
+
<Stack direction="row" justifyContent="space-between" alignItems="center">
|
|
693
|
+
<Stack direction="row" spacing={1} alignItems="center">
|
|
694
|
+
<Avatar size="sm" />
|
|
695
|
+
<Typography level="body-sm">김개발</Typography>
|
|
696
|
+
</Stack>
|
|
697
|
+
<Stack direction="row" spacing={1}>
|
|
698
|
+
<Button size="sm" variant="plain">
|
|
699
|
+
좋아요 24
|
|
700
|
+
</Button>
|
|
701
|
+
<Button size="sm" variant="plain">
|
|
702
|
+
댓글 5
|
|
703
|
+
</Button>
|
|
704
|
+
</Stack>
|
|
705
|
+
</Stack>
|
|
706
|
+
</Stack>
|
|
707
|
+
</Box>
|
|
708
|
+
</div>
|
|
709
|
+
|
|
710
|
+
{/* Form Layout */}
|
|
711
|
+
<div>
|
|
712
|
+
<Typography
|
|
713
|
+
level="title-sm"
|
|
714
|
+
sx={{
|
|
715
|
+
mb: 2
|
|
716
|
+
}}
|
|
717
|
+
>
|
|
718
|
+
폼 레이아웃
|
|
719
|
+
</Typography>
|
|
720
|
+
<Box
|
|
721
|
+
sx={{
|
|
722
|
+
p: 3,
|
|
723
|
+
bgcolor: "background.body",
|
|
724
|
+
border: "1px solid",
|
|
725
|
+
borderColor: "divider",
|
|
726
|
+
borderRadius: "lg"
|
|
727
|
+
}}
|
|
728
|
+
>
|
|
729
|
+
<Stack spacing={3}>
|
|
730
|
+
<Typography level="title-md">문의하기</Typography>
|
|
731
|
+
|
|
732
|
+
<Stack spacing={2}>
|
|
733
|
+
<Stack spacing={1}>
|
|
734
|
+
<Typography level="body-sm" fontWeight="500">
|
|
735
|
+
이름
|
|
736
|
+
</Typography>
|
|
737
|
+
<Box
|
|
738
|
+
sx={{
|
|
739
|
+
p: 1.5,
|
|
740
|
+
bgcolor: "background.level1",
|
|
741
|
+
borderRadius: "sm"
|
|
742
|
+
}}
|
|
743
|
+
>
|
|
744
|
+
<Typography
|
|
745
|
+
level="body-sm"
|
|
746
|
+
sx={{
|
|
747
|
+
color: "text.secondary"
|
|
748
|
+
}}
|
|
749
|
+
>
|
|
750
|
+
이름을 입력하세요
|
|
751
|
+
</Typography>
|
|
752
|
+
</Box>
|
|
753
|
+
</Stack>
|
|
754
|
+
|
|
755
|
+
<Stack spacing={1}>
|
|
756
|
+
<Typography level="body-sm" fontWeight="500">
|
|
757
|
+
이메일
|
|
758
|
+
</Typography>
|
|
759
|
+
<Box
|
|
760
|
+
sx={{
|
|
761
|
+
p: 1.5,
|
|
762
|
+
bgcolor: "background.level1",
|
|
763
|
+
borderRadius: "sm"
|
|
764
|
+
}}
|
|
765
|
+
>
|
|
766
|
+
<Typography
|
|
767
|
+
level="body-sm"
|
|
768
|
+
sx={{
|
|
769
|
+
color: "text.secondary"
|
|
770
|
+
}}
|
|
771
|
+
>
|
|
772
|
+
이메일을 입력하세요
|
|
773
|
+
</Typography>
|
|
774
|
+
</Box>
|
|
775
|
+
</Stack>
|
|
776
|
+
|
|
777
|
+
<Stack spacing={1}>
|
|
778
|
+
<Typography level="body-sm" fontWeight="500">
|
|
779
|
+
메시지
|
|
780
|
+
</Typography>
|
|
781
|
+
<Box
|
|
782
|
+
sx={{
|
|
783
|
+
p: 1.5,
|
|
784
|
+
minHeight: 80,
|
|
785
|
+
bgcolor: "background.level1",
|
|
786
|
+
borderRadius: "sm"
|
|
787
|
+
}}
|
|
788
|
+
>
|
|
789
|
+
<Typography
|
|
790
|
+
level="body-sm"
|
|
791
|
+
sx={{
|
|
792
|
+
color: "text.secondary"
|
|
793
|
+
}}
|
|
794
|
+
>
|
|
795
|
+
메시지를 입력하세요
|
|
796
|
+
</Typography>
|
|
797
|
+
</Box>
|
|
798
|
+
</Stack>
|
|
799
|
+
</Stack>
|
|
800
|
+
|
|
801
|
+
<Stack direction="row" spacing={2} justifyContent="flex-end">
|
|
802
|
+
<Button variant="outlined">취소</Button>
|
|
803
|
+
<Button>전송</Button>
|
|
804
|
+
</Stack>
|
|
805
|
+
</Stack>
|
|
806
|
+
</Box>
|
|
807
|
+
</div>
|
|
808
|
+
</div>
|
|
635
809
|
```
|
|
636
810
|
|
|
637
811
|
## Key Props
|
|
@@ -720,12 +894,7 @@ Stack supports responsive values for all props:
|
|
|
720
894
|
## Stack Navigation Bar
|
|
721
895
|
|
|
722
896
|
```tsx
|
|
723
|
-
<Stack
|
|
724
|
-
direction="row"
|
|
725
|
-
justifyContent="space-between"
|
|
726
|
-
alignItems="center"
|
|
727
|
-
sx={{ p: 2 }}
|
|
728
|
-
>
|
|
897
|
+
<Stack direction="row" justifyContent="space-between" alignItems="center" sx={{ p: 2 }}>
|
|
729
898
|
<Typography level="title-lg">Logo</Typography>
|
|
730
899
|
<Stack direction="row" spacing={2}>
|
|
731
900
|
<Button variant="plain">Home</Button>
|
|
@@ -777,17 +946,21 @@ Stack supports responsive values for all props:
|
|
|
777
946
|
<Chip variant="soft">New</Chip>
|
|
778
947
|
</Stack>
|
|
779
948
|
|
|
780
|
-
<Typography level="body-md">
|
|
781
|
-
Product description goes here...
|
|
782
|
-
</Typography>
|
|
949
|
+
<Typography level="body-md">Product description goes here...</Typography>
|
|
783
950
|
|
|
784
951
|
<Stack direction="row" spacing={1}>
|
|
785
|
-
<Chip size="sm" variant="outlined">
|
|
786
|
-
|
|
952
|
+
<Chip size="sm" variant="outlined">
|
|
953
|
+
Tag 1
|
|
954
|
+
</Chip>
|
|
955
|
+
<Chip size="sm" variant="outlined">
|
|
956
|
+
Tag 2
|
|
957
|
+
</Chip>
|
|
787
958
|
</Stack>
|
|
788
959
|
|
|
789
960
|
<Stack direction="row" justifyContent="space-between" alignItems="center">
|
|
790
|
-
<Typography level="title-lg" color="primary"
|
|
961
|
+
<Typography level="title-lg" color="primary">
|
|
962
|
+
$99.99
|
|
963
|
+
</Typography>
|
|
791
964
|
<Button>Add to Cart</Button>
|
|
792
965
|
</Stack>
|
|
793
966
|
</Stack>
|
|
@@ -809,9 +982,7 @@ Stack supports responsive values for all props:
|
|
|
809
982
|
</Stack>
|
|
810
983
|
</Stack>
|
|
811
984
|
|
|
812
|
-
<Typography level="body-md">
|
|
813
|
-
Passionate about creating great user experiences...
|
|
814
|
-
</Typography>
|
|
985
|
+
<Typography level="body-md">Passionate about creating great user experiences...</Typography>
|
|
815
986
|
|
|
816
987
|
<Stack direction="row" spacing={1}>
|
|
817
988
|
<Chip variant="soft">React</Chip>
|
|
@@ -820,7 +991,9 @@ Stack supports responsive values for all props:
|
|
|
820
991
|
</Stack>
|
|
821
992
|
|
|
822
993
|
<Stack direction="row" spacing={2}>
|
|
823
|
-
<Button variant="outlined" fullWidth>
|
|
994
|
+
<Button variant="outlined" fullWidth>
|
|
995
|
+
Follow
|
|
996
|
+
</Button>
|
|
824
997
|
<Button fullWidth>Message</Button>
|
|
825
998
|
</Stack>
|
|
826
999
|
</Stack>
|