@ceed/cds 1.34.1 → 1.36.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.
Files changed (120) hide show
  1. package/dist/components/Accordions/Accordions.d.ts +1 -0
  2. package/dist/components/Alert/Alert.d.ts +5 -5
  3. package/dist/components/Autocomplete/Autocomplete.d.ts +2 -2
  4. package/dist/components/Avatar/Avatar.d.ts +7 -17
  5. package/dist/components/Box/Box.d.ts +1 -0
  6. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -5
  7. package/dist/components/Button/Button.d.ts +3 -2
  8. package/dist/components/Calendar/Calendar.d.ts +1 -0
  9. package/dist/components/Card/Card.d.ts +1 -0
  10. package/dist/components/Checkbox/Checkbox.d.ts +1 -0
  11. package/dist/components/Chip/Chip.d.ts +1 -0
  12. package/dist/components/Container/Container.d.ts +6 -1
  13. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  14. package/dist/components/DialogActions/DialogActions.d.ts +1 -0
  15. package/dist/components/DialogContent/DialogContent.d.ts +1 -0
  16. package/dist/components/DialogFrame/DialogFrame.d.ts +1 -1
  17. package/dist/components/DialogTitle/DialogTitle.d.ts +1 -0
  18. package/dist/components/Divider/Divider.d.ts +1 -0
  19. package/dist/components/Drawer/Drawer.d.ts +1 -0
  20. package/dist/components/Dropdown/Dropdown.d.ts +28 -1
  21. package/dist/components/FilterableCheckboxGroup/FilterableCheckboxGroup.d.ts +1 -1
  22. package/dist/components/FormControl/FormControl.d.ts +1 -0
  23. package/dist/components/FormHelperText/FormHelperText.d.ts +1 -0
  24. package/dist/components/FormLabel/FormLabel.d.ts +1 -0
  25. package/dist/components/Grid/Grid.d.ts +1 -0
  26. package/dist/components/IconButton/IconButton.d.ts +3 -2
  27. package/dist/components/IconMenuButton/IconMenuButton.d.ts +7 -6
  28. package/dist/components/InfoSign/InfoSign.d.ts +3 -2
  29. package/dist/components/Input/Input.d.ts +8 -22
  30. package/dist/components/InsetDrawer/InsetDrawer.d.ts +1 -0
  31. package/dist/components/Markdown/Markdown.d.ts +9 -24
  32. package/dist/components/Menu/Menu.d.ts +2 -1
  33. package/dist/components/MenuButton/MenuButton.d.ts +10 -8
  34. package/dist/components/Modal/Modal.d.ts +4 -2
  35. package/dist/components/NavigationGroup/NavigationGroup.d.ts +3 -2
  36. package/dist/components/NavigationItem/NavigationItem.d.ts +3 -2
  37. package/dist/components/Navigator/Navigator.d.ts +5 -4
  38. package/dist/components/Pagination/Pagination.d.ts +2 -2
  39. package/dist/components/Radio/Radio.d.ts +1 -0
  40. package/dist/components/RadioList/RadioList.d.ts +3 -2
  41. package/dist/components/Select/Select.d.ts +12 -10
  42. package/dist/components/Sheet/Sheet.d.ts +1 -0
  43. package/dist/components/Stack/Stack.d.ts +1 -0
  44. package/dist/components/Stepper/Stepper.d.ts +2 -1
  45. package/dist/components/Switch/Switch.d.ts +1 -0
  46. package/dist/components/Table/Table.d.ts +7 -5
  47. package/dist/components/Tabs/Tabs.d.ts +1 -0
  48. package/dist/components/Textarea/Textarea.d.ts +8 -20
  49. package/dist/components/ThemeProvider/ThemeProvider.d.ts +15 -0
  50. package/dist/components/Tooltip/Tooltip.d.ts +1 -0
  51. package/dist/components/Typography/Typography.d.ts +1 -0
  52. package/dist/components/Uploader/Uploader.d.ts +18 -17
  53. package/dist/components/data-display/Avatar.md +60 -72
  54. package/dist/components/data-display/Badge.md +197 -181
  55. package/dist/components/data-display/Chip.md +164 -142
  56. package/dist/components/data-display/DataTable.md +843 -338
  57. package/dist/components/data-display/InfoSign.md +1 -3
  58. package/dist/components/data-display/Markdown.md +93 -125
  59. package/dist/components/data-display/Table.md +1453 -1007
  60. package/dist/components/data-display/Typography.md +113 -116
  61. package/dist/components/feedback/Alert.md +80 -86
  62. package/dist/components/feedback/CircularProgress.md +32 -36
  63. package/dist/components/feedback/Dialog.md +25 -17
  64. package/dist/components/feedback/Modal.md +296 -264
  65. package/dist/components/feedback/Skeleton.md +125 -89
  66. package/dist/components/index.d.ts +62 -2
  67. package/dist/components/inputs/Autocomplete.md +191 -95
  68. package/dist/components/inputs/Button.md +83 -83
  69. package/dist/components/inputs/ButtonGroup.md +195 -185
  70. package/dist/components/inputs/Calendar.md +25 -28
  71. package/dist/components/inputs/Checkbox.md +11 -29
  72. package/dist/components/inputs/CurrencyInput.md +4 -4
  73. package/dist/components/inputs/DatePicker.md +229 -110
  74. package/dist/components/inputs/DateRangePicker.md +248 -137
  75. package/dist/components/inputs/FilterableCheckboxGroup.md +115 -55
  76. package/dist/components/inputs/FormControl.md +75 -69
  77. package/dist/components/inputs/IconButton.md +229 -205
  78. package/dist/components/inputs/Input.md +131 -98
  79. package/dist/components/inputs/MonthPicker.md +186 -84
  80. package/dist/components/inputs/MonthRangePicker.md +73 -49
  81. package/dist/components/inputs/PercentageInput.md +15 -31
  82. package/dist/components/inputs/RadioButton.md +320 -256
  83. package/dist/components/inputs/RadioList.md +66 -50
  84. package/dist/components/inputs/RadioTileGroup.md +287 -170
  85. package/dist/components/inputs/SearchBar.md +82 -60
  86. package/dist/components/inputs/Select.md +106 -95
  87. package/dist/components/inputs/Slider.md +153 -102
  88. package/dist/components/inputs/Switch.md +193 -138
  89. package/dist/components/inputs/Textarea.md +15 -20
  90. package/dist/components/inputs/Uploader/Uploader.md +68 -39
  91. package/dist/components/layout/Box.md +841 -662
  92. package/dist/components/layout/Container.md +3 -11
  93. package/dist/components/layout/Grid.md +480 -394
  94. package/dist/components/layout/Stack.md +739 -566
  95. package/dist/components/navigation/Breadcrumbs.md +4 -4
  96. package/dist/components/navigation/Drawer.md +34 -25
  97. package/dist/components/navigation/Dropdown.md +745 -408
  98. package/dist/components/navigation/IconMenuButton.md +14 -6
  99. package/dist/components/navigation/InsetDrawer.md +8 -13
  100. package/dist/components/navigation/Link.md +1 -2
  101. package/dist/components/navigation/Menu.md +623 -502
  102. package/dist/components/navigation/MenuButton.md +18 -10
  103. package/dist/components/navigation/NavigationGroup.md +19 -50
  104. package/dist/components/navigation/NavigationItem.md +6 -6
  105. package/dist/components/navigation/Navigator.md +26 -28
  106. package/dist/components/navigation/Pagination.md +86 -75
  107. package/dist/components/navigation/Stepper.md +2 -12
  108. package/dist/components/navigation/Tabs.md +48 -36
  109. package/dist/components/surfaces/Accordions.md +89 -172
  110. package/dist/components/surfaces/Card.md +1094 -709
  111. package/dist/components/surfaces/Divider.md +562 -412
  112. package/dist/components/surfaces/Sheet.md +700 -518
  113. package/dist/guides/ThemeProvider.md +8 -8
  114. package/dist/index.browser.js +5 -5
  115. package/dist/index.browser.js.map +4 -4
  116. package/dist/index.cjs +1082 -1036
  117. package/dist/index.d.ts +2 -1
  118. package/dist/index.js +749 -695
  119. package/framer/index.js +1 -1
  120. package/package.json +34 -36
@@ -8,22 +8,26 @@ The Table component is a foundational table component for displaying structured
8
8
 
9
9
  ```tsx
10
10
  <Table aria-label="basic table" {...args}>
11
- <TableHead headCells={headCells} />
12
- <TableBody rows={rows} rowOptions={{
13
- calories: {
14
- numeric: true
15
- },
16
- fat: {
17
- numeric: true
18
- },
19
- carbs: {
20
- numeric: true
21
- },
22
- protein: {
23
- numeric: true
24
- }
25
- }} cellOrder={['dessert', 'calories', 'fat', 'carbs', 'protein']} />
26
- </Table>
11
+ <TableHead headCells={headCells} />
12
+ <TableBody
13
+ rows={rows}
14
+ rowOptions={{
15
+ calories: {
16
+ numeric: true
17
+ },
18
+ fat: {
19
+ numeric: true
20
+ },
21
+ carbs: {
22
+ numeric: true
23
+ },
24
+ protein: {
25
+ numeric: true
26
+ }
27
+ }}
28
+ cellOrder={["dessert", "calories", "fat", "carbs", "protein"]}
29
+ />
30
+ </Table>
27
31
  ```
28
32
 
29
33
  | Field | Description | Default |
@@ -51,10 +55,7 @@ function MyComponent() {
51
55
  return (
52
56
  <Table>
53
57
  <TableHead headCells={headCells} />
54
- <TableBody
55
- rows={rows}
56
- cellOrder={['name', 'email', 'role', 'joinDate']}
57
- />
58
+ <TableBody rows={rows} cellOrder={['name', 'email', 'role', 'joinDate']} />
58
59
  </Table>
59
60
  );
60
61
  }
@@ -68,22 +69,26 @@ The most basic Table usage patterns.
68
69
 
69
70
  ```tsx
70
71
  <Table aria-label="basic table" {...args}>
71
- <TableHead headCells={headCells} />
72
- <TableBody rows={rows} rowOptions={{
73
- calories: {
74
- numeric: true
75
- },
76
- fat: {
77
- numeric: true
78
- },
79
- carbs: {
80
- numeric: true
81
- },
82
- protein: {
83
- numeric: true
84
- }
85
- }} cellOrder={['dessert', 'calories', 'fat', 'carbs', 'protein']} />
86
- </Table>
72
+ <TableHead headCells={headCells} />
73
+ <TableBody
74
+ rows={rows}
75
+ rowOptions={{
76
+ calories: {
77
+ numeric: true
78
+ },
79
+ fat: {
80
+ numeric: true
81
+ },
82
+ carbs: {
83
+ numeric: true
84
+ },
85
+ protein: {
86
+ numeric: true
87
+ }
88
+ }}
89
+ cellOrder={["dessert", "calories", "fat", "carbs", "protein"]}
90
+ />
91
+ </Table>
87
92
  ```
88
93
 
89
94
  ### With Hover Effect
@@ -103,22 +108,27 @@ A selectable table that includes checkboxes.
103
108
 
104
109
  ```tsx
105
110
  <Table aria-label="checkbox table" hoverRow {...args}>
106
- <TableHead showCheckbox headCells={headCells} />
107
- <TableBody showCheckbox rows={rows} rowOptions={{
108
- calories: {
109
- numeric: true
110
- },
111
- fat: {
112
- numeric: true
113
- },
114
- carbs: {
115
- numeric: true
116
- },
117
- protein: {
118
- numeric: true
119
- }
120
- }} cellOrder={['dessert', 'calories', 'fat', 'carbs', 'protein']} />
121
- </Table>
111
+ <TableHead showCheckbox headCells={headCells} />
112
+ <TableBody
113
+ showCheckbox
114
+ rows={rows}
115
+ rowOptions={{
116
+ calories: {
117
+ numeric: true
118
+ },
119
+ fat: {
120
+ numeric: true
121
+ },
122
+ carbs: {
123
+ numeric: true
124
+ },
125
+ protein: {
126
+ numeric: true
127
+ }
128
+ }}
129
+ cellOrder={["dessert", "calories", "fat", "carbs", "protein"]}
130
+ />
131
+ </Table>
122
132
  ```
123
133
 
124
134
  ## Common Use Cases
@@ -129,175 +139,207 @@ A table for user management. It includes avatars, role labels, status indicators
129
139
 
130
140
  ```tsx
131
141
  <Table aria-label="user management table" hoverRow>
132
- <thead>
133
- <tr>
134
- <th style={{
135
- width: '30%'
136
- }}>사용자</th>
137
- <th style={{
138
- width: '25%'
139
- }}>이메일</th>
140
- <th style={{
141
- width: '15%'
142
- }}>역할</th>
143
- <th style={{
144
- width: '15%'
145
- }}>상태</th>
146
- <th style={{
147
- width: '15%'
148
- }}>작업</th>
149
- </tr>
150
- </thead>
151
- <tbody>
152
- <tr>
153
- <td>
154
- <Stack direction="row" spacing={2} alignItems="center">
155
- <Avatar size="sm" variant="soft" color="primary">
156
-
157
- </Avatar>
158
- <Stack spacing={0}>
159
- <Typography level="title-sm">김철수</Typography>
160
- <Typography level="body-xs" color="neutral">
161
- kim@example.com
162
- </Typography>
142
+ <thead>
143
+ <tr>
144
+ <th
145
+ style={{
146
+ width: "30%"
147
+ }}
148
+ >
149
+ 사용자
150
+ </th>
151
+ <th
152
+ style={{
153
+ width: "25%"
154
+ }}
155
+ >
156
+ 이메일
157
+ </th>
158
+ <th
159
+ style={{
160
+ width: "15%"
161
+ }}
162
+ >
163
+ 역할
164
+ </th>
165
+ <th
166
+ style={{
167
+ width: "15%"
168
+ }}
169
+ >
170
+ 상태
171
+ </th>
172
+ <th
173
+ style={{
174
+ width: "15%"
175
+ }}
176
+ >
177
+ 작업
178
+ </th>
179
+ </tr>
180
+ </thead>
181
+ <tbody>
182
+ <tr>
183
+ <td>
184
+ <Stack direction="row" spacing={2} alignItems="center">
185
+ <Avatar size="sm" variant="soft" color="primary">
186
+
187
+ </Avatar>
188
+ <Stack spacing={0}>
189
+ <Typography level="title-sm">김철수</Typography>
190
+ <Typography level="body-xs" color="neutral">
191
+ kim@example.com
192
+ </Typography>
193
+ </Stack>
163
194
  </Stack>
164
- </Stack>
165
- </td>
166
- <td>kim@example.com</td>
167
- <td>
168
- <Chip size="sm" variant="soft" color="primary">
169
- 관리자
170
- </Chip>
171
- </td>
172
- <td>
173
- <Chip size="sm" variant="soft" color="success">
174
- 활성
175
- </Chip>
176
- </td>
177
- <td>
178
- <Stack direction="row" spacing={1}>
179
- <IconButton size="sm" variant="plain">
180
- <EditIcon />
181
- </IconButton>
182
- <IconButton size="sm" variant="plain" color="danger">
183
- <DeleteIcon />
184
- </IconButton>
185
- <Dropdown>
186
- <MenuButton variant="plain" size="sm" sx={{
187
- minHeight: 'auto',
188
- p: 1
189
- }}>
190
- <MoreVertIcon />
191
- </MenuButton>
192
- <Menu placement="bottom-end">
193
- <MenuItem>상세 보기</MenuItem>
194
- <MenuItem>권한 변경</MenuItem>
195
- <MenuItem color="danger">계정 비활성화</MenuItem>
196
- </Menu>
197
- </Dropdown>
198
- </Stack>
199
- </td>
200
- </tr>
201
- <tr>
202
- <td>
203
- <Stack direction="row" spacing={2} alignItems="center">
204
- <Avatar size="sm" variant="soft" color="primary">
205
-
206
- </Avatar>
207
- <Stack spacing={0}>
208
- <Typography level="title-sm">이영희</Typography>
209
- <Typography level="body-xs" color="neutral">
210
- lee@example.com
211
- </Typography>
212
- </Stack>
213
- </Stack>
214
- </td>
215
- <td>lee@example.com</td>
216
- <td>
217
- <Chip size="sm" variant="soft" color="neutral">
218
- 사용자
219
- </Chip>
220
- </td>
221
- <td>
222
- <Chip size="sm" variant="soft" color="neutral">
223
- 비활성
224
- </Chip>
225
- </td>
226
- <td>
227
- <Stack direction="row" spacing={1}>
228
- <IconButton size="sm" variant="plain">
229
- <EditIcon />
230
- </IconButton>
231
- <IconButton size="sm" variant="plain" color="danger">
232
- <DeleteIcon />
233
- </IconButton>
234
- <Dropdown>
235
- <MenuButton variant="plain" size="sm" sx={{
236
- minHeight: 'auto',
237
- p: 1
238
- }}>
239
- <MoreVertIcon />
240
- </MenuButton>
241
- <Menu placement="bottom-end">
242
- <MenuItem>상세 보기</MenuItem>
243
- <MenuItem>권한 변경</MenuItem>
244
- <MenuItem color="danger">계정 비활성화</MenuItem>
245
- </Menu>
246
- </Dropdown>
247
- </Stack>
248
- </td>
249
- </tr>
250
- <tr>
251
- <td>
252
- <Stack direction="row" spacing={2} alignItems="center">
253
- <Avatar size="sm" variant="soft" color="primary">
254
-
255
- </Avatar>
256
- <Stack spacing={0}>
257
- <Typography level="title-sm">박민수</Typography>
258
- <Typography level="body-xs" color="neutral">
259
- park@example.com
260
- </Typography>
261
- </Stack>
262
- </Stack>
263
- </td>
264
- <td>park@example.com</td>
265
- <td>
266
- <Chip size="sm" variant="soft" color="warning">
267
- 편집자
268
- </Chip>
269
- </td>
270
- <td>
271
- <Chip size="sm" variant="soft" color="success">
272
- 활성
273
- </Chip>
274
- </td>
275
- <td>
276
- <Stack direction="row" spacing={1}>
277
- <IconButton size="sm" variant="plain">
278
- <EditIcon />
279
- </IconButton>
280
- <IconButton size="sm" variant="plain" color="danger">
281
- <DeleteIcon />
282
- </IconButton>
283
- <Dropdown>
284
- <MenuButton variant="plain" size="sm" sx={{
285
- minHeight: 'auto',
286
- p: 1
287
- }}>
288
- <MoreVertIcon />
289
- </MenuButton>
290
- <Menu placement="bottom-end">
291
- <MenuItem>상세 보기</MenuItem>
292
- <MenuItem>권한 변경</MenuItem>
293
- <MenuItem color="danger">계정 비활성화</MenuItem>
294
- </Menu>
295
- </Dropdown>
296
- </Stack>
297
- </td>
298
- </tr>
299
- </tbody>
300
- </Table>
195
+ </td>
196
+ <td>kim@example.com</td>
197
+ <td>
198
+ <Chip size="sm" variant="soft" color="primary">
199
+ 관리자
200
+ </Chip>
201
+ </td>
202
+ <td>
203
+ <Chip size="sm" variant="soft" color="success">
204
+ 활성
205
+ </Chip>
206
+ </td>
207
+ <td>
208
+ <Stack direction="row" spacing={1}>
209
+ <IconButton size="sm" variant="plain">
210
+ <EditIcon />
211
+ </IconButton>
212
+ <IconButton size="sm" variant="plain" color="danger">
213
+ <DeleteIcon />
214
+ </IconButton>
215
+ <Dropdown>
216
+ <MenuButton
217
+ variant="plain"
218
+ size="sm"
219
+ sx={{
220
+ minHeight: "auto",
221
+ p: 1
222
+ }}
223
+ >
224
+ <MoreVertIcon />
225
+ </MenuButton>
226
+ <Menu placement="bottom-end">
227
+ <MenuItem>상세 보기</MenuItem>
228
+ <MenuItem>권한 변경</MenuItem>
229
+ <MenuItem color="danger">계정 비활성화</MenuItem>
230
+ </Menu>
231
+ </Dropdown>
232
+ </Stack>
233
+ </td>
234
+ </tr>
235
+ <tr>
236
+ <td>
237
+ <Stack direction="row" spacing={2} alignItems="center">
238
+ <Avatar size="sm" variant="soft" color="primary">
239
+
240
+ </Avatar>
241
+ <Stack spacing={0}>
242
+ <Typography level="title-sm">이영희</Typography>
243
+ <Typography level="body-xs" color="neutral">
244
+ lee@example.com
245
+ </Typography>
246
+ </Stack>
247
+ </Stack>
248
+ </td>
249
+ <td>lee@example.com</td>
250
+ <td>
251
+ <Chip size="sm" variant="soft" color="neutral">
252
+ 사용자
253
+ </Chip>
254
+ </td>
255
+ <td>
256
+ <Chip size="sm" variant="soft" color="neutral">
257
+ 비활성
258
+ </Chip>
259
+ </td>
260
+ <td>
261
+ <Stack direction="row" spacing={1}>
262
+ <IconButton size="sm" variant="plain">
263
+ <EditIcon />
264
+ </IconButton>
265
+ <IconButton size="sm" variant="plain" color="danger">
266
+ <DeleteIcon />
267
+ </IconButton>
268
+ <Dropdown>
269
+ <MenuButton
270
+ variant="plain"
271
+ size="sm"
272
+ sx={{
273
+ minHeight: "auto",
274
+ p: 1
275
+ }}
276
+ >
277
+ <MoreVertIcon />
278
+ </MenuButton>
279
+ <Menu placement="bottom-end">
280
+ <MenuItem>상세 보기</MenuItem>
281
+ <MenuItem>권한 변경</MenuItem>
282
+ <MenuItem color="danger">계정 비활성화</MenuItem>
283
+ </Menu>
284
+ </Dropdown>
285
+ </Stack>
286
+ </td>
287
+ </tr>
288
+ <tr>
289
+ <td>
290
+ <Stack direction="row" spacing={2} alignItems="center">
291
+ <Avatar size="sm" variant="soft" color="primary">
292
+
293
+ </Avatar>
294
+ <Stack spacing={0}>
295
+ <Typography level="title-sm">박민수</Typography>
296
+ <Typography level="body-xs" color="neutral">
297
+ park@example.com
298
+ </Typography>
299
+ </Stack>
300
+ </Stack>
301
+ </td>
302
+ <td>park@example.com</td>
303
+ <td>
304
+ <Chip size="sm" variant="soft" color="warning">
305
+ 편집자
306
+ </Chip>
307
+ </td>
308
+ <td>
309
+ <Chip size="sm" variant="soft" color="success">
310
+ 활성
311
+ </Chip>
312
+ </td>
313
+ <td>
314
+ <Stack direction="row" spacing={1}>
315
+ <IconButton size="sm" variant="plain">
316
+ <EditIcon />
317
+ </IconButton>
318
+ <IconButton size="sm" variant="plain" color="danger">
319
+ <DeleteIcon />
320
+ </IconButton>
321
+ <Dropdown>
322
+ <MenuButton
323
+ variant="plain"
324
+ size="sm"
325
+ sx={{
326
+ minHeight: "auto",
327
+ p: 1
328
+ }}
329
+ >
330
+ <MoreVertIcon />
331
+ </MenuButton>
332
+ <Menu placement="bottom-end">
333
+ <MenuItem>상세 보기</MenuItem>
334
+ <MenuItem>권한 변경</MenuItem>
335
+ <MenuItem color="danger">계정 비활성화</MenuItem>
336
+ </Menu>
337
+ </Dropdown>
338
+ </Stack>
339
+ </td>
340
+ </tr>
341
+ </tbody>
342
+ </Table>
301
343
  ```
302
344
 
303
345
  ### Product Inventory Table
@@ -306,117 +348,186 @@ A table for product inventory management. It includes stock status, price displa
306
348
 
307
349
  ```tsx
308
350
  <Table aria-label="product inventory table" hoverRow>
309
- <thead>
310
- <tr>
311
- <th style={{
312
- width: '25%'
313
- }}>제품명</th>
314
- <th style={{
315
- width: '15%'
316
- }}>카테고리</th>
317
- <th style={{
318
- width: '10%',
319
- textAlign: 'right'
320
- }}>재고</th>
321
- <th style={{
322
- width: '15%',
323
- textAlign: 'right'
324
- }}>가격</th>
325
- <th style={{
326
- width: '15%'
327
- }}>상태</th>
328
- <th style={{
329
- width: '20%'
330
- }}>진행률</th>
331
- </tr>
332
- </thead>
333
- <tbody>
334
- <tr>
335
- <td>MacBook Pro 16"</td>
336
- <td>노트북</td>
337
- <td style={{
338
- textAlign: 'right'
339
- }}>25</td>
340
- <td style={{
341
- textAlign: 'right'
342
- }}>₩2,590,000</td>
343
- <td>
344
- <Chip size="sm" variant="soft" color="success">
345
- 재고 있음
346
- </Chip>
347
- </td>
348
- <td>
349
- <Box sx={{
350
- display: 'flex',
351
- alignItems: 'center',
352
- gap: 2,
353
- minWidth: 120
354
- }}>
355
- <LinearProgress determinate value={85} sx={{
356
- flex: 1
357
- }} color="success" />
358
- <Typography level="body-xs">85%</Typography>
359
- </Box>
360
- </td>
361
- </tr>
362
- <tr>
363
- <td>iPhone 15 Pro</td>
364
- <td>스마트폰</td>
365
- <td style={{
366
- textAlign: 'right'
367
- }}>3</td>
368
- <td style={{
369
- textAlign: 'right'
370
- }}>₩1,550,000</td>
371
- <td>
372
- <Chip size="sm" variant="soft" color="warning">
373
- 재고 부족
374
- </Chip>
375
- </td>
376
- <td>
377
- <Box sx={{
378
- display: 'flex',
379
- alignItems: 'center',
380
- gap: 2,
381
- minWidth: 120
382
- }}>
383
- <LinearProgress determinate value={15} sx={{
384
- flex: 1
385
- }} color="danger" />
386
- <Typography level="body-xs">15%</Typography>
387
- </Box>
388
- </td>
389
- </tr>
390
- <tr>
391
- <td>iPad Air</td>
392
- <td>태블릿</td>
393
- <td style={{
394
- textAlign: 'right'
395
- }}>0</td>
396
- <td style={{
397
- textAlign: 'right'
398
- }}>₩899,000</td>
399
- <td>
400
- <Chip size="sm" variant="soft" color="danger">
401
- 품절
402
- </Chip>
403
- </td>
404
- <td>
405
- <Box sx={{
406
- display: 'flex',
407
- alignItems: 'center',
408
- gap: 2,
409
- minWidth: 120
410
- }}>
411
- <LinearProgress determinate value={0} sx={{
412
- flex: 1
413
- }} color="danger" />
414
- <Typography level="body-xs">0%</Typography>
415
- </Box>
416
- </td>
417
- </tr>
418
- </tbody>
419
- </Table>
351
+ <thead>
352
+ <tr>
353
+ <th
354
+ style={{
355
+ width: "25%"
356
+ }}
357
+ >
358
+ 제품명
359
+ </th>
360
+ <th
361
+ style={{
362
+ width: "15%"
363
+ }}
364
+ >
365
+ 카테고리
366
+ </th>
367
+ <th
368
+ style={{
369
+ width: "10%",
370
+ textAlign: "right"
371
+ }}
372
+ >
373
+ 재고
374
+ </th>
375
+ <th
376
+ style={{
377
+ width: "15%",
378
+ textAlign: "right"
379
+ }}
380
+ >
381
+ 가격
382
+ </th>
383
+ <th
384
+ style={{
385
+ width: "15%"
386
+ }}
387
+ >
388
+ 상태
389
+ </th>
390
+ <th
391
+ style={{
392
+ width: "20%"
393
+ }}
394
+ >
395
+ 진행률
396
+ </th>
397
+ </tr>
398
+ </thead>
399
+ <tbody>
400
+ <tr>
401
+ <td>MacBook Pro 16"</td>
402
+ <td>노트북</td>
403
+ <td
404
+ style={{
405
+ textAlign: "right"
406
+ }}
407
+ >
408
+ 25
409
+ </td>
410
+ <td
411
+ style={{
412
+ textAlign: "right"
413
+ }}
414
+ >
415
+ ₩2,590,000
416
+ </td>
417
+ <td>
418
+ <Chip size="sm" variant="soft" color="success">
419
+ 재고 있음
420
+ </Chip>
421
+ </td>
422
+ <td>
423
+ <Box
424
+ sx={{
425
+ display: "flex",
426
+ alignItems: "center",
427
+ gap: 2,
428
+ minWidth: 120
429
+ }}
430
+ >
431
+ <LinearProgress
432
+ determinate
433
+ value={85}
434
+ sx={{
435
+ flex: 1
436
+ }}
437
+ color="success"
438
+ />
439
+ <Typography level="body-xs">85%</Typography>
440
+ </Box>
441
+ </td>
442
+ </tr>
443
+ <tr>
444
+ <td>iPhone 15 Pro</td>
445
+ <td>스마트폰</td>
446
+ <td
447
+ style={{
448
+ textAlign: "right"
449
+ }}
450
+ >
451
+ 3
452
+ </td>
453
+ <td
454
+ style={{
455
+ textAlign: "right"
456
+ }}
457
+ >
458
+ ₩1,550,000
459
+ </td>
460
+ <td>
461
+ <Chip size="sm" variant="soft" color="warning">
462
+ 재고 부족
463
+ </Chip>
464
+ </td>
465
+ <td>
466
+ <Box
467
+ sx={{
468
+ display: "flex",
469
+ alignItems: "center",
470
+ gap: 2,
471
+ minWidth: 120
472
+ }}
473
+ >
474
+ <LinearProgress
475
+ determinate
476
+ value={15}
477
+ sx={{
478
+ flex: 1
479
+ }}
480
+ color="danger"
481
+ />
482
+ <Typography level="body-xs">15%</Typography>
483
+ </Box>
484
+ </td>
485
+ </tr>
486
+ <tr>
487
+ <td>iPad Air</td>
488
+ <td>태블릿</td>
489
+ <td
490
+ style={{
491
+ textAlign: "right"
492
+ }}
493
+ >
494
+ 0
495
+ </td>
496
+ <td
497
+ style={{
498
+ textAlign: "right"
499
+ }}
500
+ >
501
+ ₩899,000
502
+ </td>
503
+ <td>
504
+ <Chip size="sm" variant="soft" color="danger">
505
+ 품절
506
+ </Chip>
507
+ </td>
508
+ <td>
509
+ <Box
510
+ sx={{
511
+ display: "flex",
512
+ alignItems: "center",
513
+ gap: 2,
514
+ minWidth: 120
515
+ }}
516
+ >
517
+ <LinearProgress
518
+ determinate
519
+ value={0}
520
+ sx={{
521
+ flex: 1
522
+ }}
523
+ color="danger"
524
+ />
525
+ <Typography level="body-xs">0%</Typography>
526
+ </Box>
527
+ </td>
528
+ </tr>
529
+ </tbody>
530
+ </Table>
420
531
  ```
421
532
 
422
533
  ### Task Management Table
@@ -425,151 +536,192 @@ A table for project task management. It displays assignees, priorities, progress
425
536
 
426
537
  ```tsx
427
538
  <Table aria-label="task management table" hoverRow>
428
- <thead>
429
- <tr>
430
- <th style={{
431
- width: '30%'
432
- }}>작업</th>
433
- <th style={{
434
- width: '20%'
435
- }}>담당자</th>
436
- <th style={{
437
- width: '15%'
438
- }}>우선순위</th>
439
- <th style={{
440
- width: '20%'
441
- }}>진행률</th>
442
- <th style={{
443
- width: '15%'
444
- }}>마감일</th>
445
- </tr>
446
- </thead>
447
- <tbody>
448
- <tr>
449
- <td>
450
- <Stack spacing={0.5}>
451
- <Typography level="title-sm">UI 컴포넌트 개발</Typography>
452
- <Typography level="body-xs" color="neutral">
453
- 새로운 테이블 컴포넌트 구현
539
+ <thead>
540
+ <tr>
541
+ <th
542
+ style={{
543
+ width: "30%"
544
+ }}
545
+ >
546
+ 작업
547
+ </th>
548
+ <th
549
+ style={{
550
+ width: "20%"
551
+ }}
552
+ >
553
+ 담당자
554
+ </th>
555
+ <th
556
+ style={{
557
+ width: "15%"
558
+ }}
559
+ >
560
+ 우선순위
561
+ </th>
562
+ <th
563
+ style={{
564
+ width: "20%"
565
+ }}
566
+ >
567
+ 진행률
568
+ </th>
569
+ <th
570
+ style={{
571
+ width: "15%"
572
+ }}
573
+ >
574
+ 마감일
575
+ </th>
576
+ </tr>
577
+ </thead>
578
+ <tbody>
579
+ <tr>
580
+ <td>
581
+ <Stack spacing={0.5}>
582
+ <Typography level="title-sm">UI 컴포넌트 개발</Typography>
583
+ <Typography level="body-xs" color="neutral">
584
+ 새로운 테이블 컴포넌트 구현
585
+ </Typography>
586
+ </Stack>
587
+ </td>
588
+ <td>
589
+ <Stack direction="row" spacing={1} alignItems="center">
590
+ <Avatar size="sm" variant="soft">
591
+
592
+ </Avatar>
593
+ <Typography level="body-sm">김개발</Typography>
594
+ </Stack>
595
+ </td>
596
+ <td>
597
+ <Chip size="sm" variant="soft" color="danger">
598
+ 높음
599
+ </Chip>
600
+ </td>
601
+ <td>
602
+ <Box
603
+ sx={{
604
+ display: "flex",
605
+ alignItems: "center",
606
+ gap: 2
607
+ }}
608
+ >
609
+ <LinearProgress
610
+ determinate
611
+ value={75}
612
+ sx={{
613
+ flex: 1,
614
+ minWidth: 80
615
+ }}
616
+ color="success"
617
+ />
618
+ <Typography level="body-xs">75%</Typography>
619
+ </Box>
620
+ </td>
621
+ <td>
622
+ <Typography level="body-sm" color="neutral">
623
+ 2024-01-20
454
624
  </Typography>
455
- </Stack>
456
- </td>
457
- <td>
458
- <Stack direction="row" spacing={1} alignItems="center">
459
- <Avatar size="sm" variant="soft">
460
-
461
- </Avatar>
462
- <Typography level="body-sm">김개발</Typography>
463
- </Stack>
464
- </td>
465
- <td>
466
- <Chip size="sm" variant="soft" color="danger">
467
- 높음
468
- </Chip>
469
- </td>
470
- <td>
471
- <Box sx={{
472
- display: 'flex',
473
- alignItems: 'center',
474
- gap: 2
475
- }}>
476
- <LinearProgress determinate value={75} sx={{
477
- flex: 1,
478
- minWidth: 80
479
- }} color="success" />
480
- <Typography level="body-xs">75%</Typography>
481
- </Box>
482
- </td>
483
- <td>
484
- <Typography level="body-sm" color="neutral">
485
- 2024-01-20
486
- </Typography>
487
- </td>
488
- </tr>
489
- <tr>
490
- <td>
491
- <Stack spacing={0.5}>
492
- <Typography level="title-sm">API 연동</Typography>
493
- <Typography level="body-xs" color="neutral">
494
- 사용자 관리 API 연동 작업
495
- </Typography>
496
- </Stack>
497
- </td>
498
- <td>
499
- <Stack direction="row" spacing={1} alignItems="center">
500
- <Avatar size="sm" variant="soft">
501
-
502
- </Avatar>
503
- <Typography level="body-sm">이백엔드</Typography>
504
- </Stack>
505
- </td>
506
- <td>
507
- <Chip size="sm" variant="soft" color="warning">
508
- 중간
509
- </Chip>
510
- </td>
511
- <td>
512
- <Box sx={{
513
- display: 'flex',
514
- alignItems: 'center',
515
- gap: 2
516
- }}>
517
- <LinearProgress determinate value={50} sx={{
518
- flex: 1,
519
- minWidth: 80
520
- }} color="warning" />
521
- <Typography level="body-xs">50%</Typography>
522
- </Box>
523
- </td>
524
- <td>
525
- <Typography level="body-sm" color="neutral">
526
- 2024-01-25
527
- </Typography>
528
- </td>
529
- </tr>
530
- <tr>
531
- <td>
532
- <Stack spacing={0.5}>
533
- <Typography level="title-sm">테스트 작성</Typography>
534
- <Typography level="body-xs" color="neutral">
535
- 단위 테스트 및 통합 테스트
536
- </Typography>
537
- </Stack>
538
- </td>
539
- <td>
540
- <Stack direction="row" spacing={1} alignItems="center">
541
- <Avatar size="sm" variant="soft">
542
-
543
- </Avatar>
544
- <Typography level="body-sm">박테스터</Typography>
545
- </Stack>
546
- </td>
547
- <td>
548
- <Chip size="sm" variant="soft" color="success">
549
- 낮음
550
- </Chip>
551
- </td>
552
- <td>
553
- <Box sx={{
554
- display: 'flex',
555
- alignItems: 'center',
556
- gap: 2
557
- }}>
558
- <LinearProgress determinate value={25} sx={{
559
- flex: 1,
560
- minWidth: 80
561
- }} color="primary" />
562
- <Typography level="body-xs">25%</Typography>
563
- </Box>
564
- </td>
565
- <td>
566
- <Typography level="body-sm" color="neutral">
567
- 2024-01-30
568
- </Typography>
569
- </td>
570
- </tr>
571
- </tbody>
572
- </Table>
625
+ </td>
626
+ </tr>
627
+ <tr>
628
+ <td>
629
+ <Stack spacing={0.5}>
630
+ <Typography level="title-sm">API 연동</Typography>
631
+ <Typography level="body-xs" color="neutral">
632
+ 사용자 관리 API 연동 작업
633
+ </Typography>
634
+ </Stack>
635
+ </td>
636
+ <td>
637
+ <Stack direction="row" spacing={1} alignItems="center">
638
+ <Avatar size="sm" variant="soft">
639
+
640
+ </Avatar>
641
+ <Typography level="body-sm">이백엔드</Typography>
642
+ </Stack>
643
+ </td>
644
+ <td>
645
+ <Chip size="sm" variant="soft" color="warning">
646
+ 중간
647
+ </Chip>
648
+ </td>
649
+ <td>
650
+ <Box
651
+ sx={{
652
+ display: "flex",
653
+ alignItems: "center",
654
+ gap: 2
655
+ }}
656
+ >
657
+ <LinearProgress
658
+ determinate
659
+ value={50}
660
+ sx={{
661
+ flex: 1,
662
+ minWidth: 80
663
+ }}
664
+ color="warning"
665
+ />
666
+ <Typography level="body-xs">50%</Typography>
667
+ </Box>
668
+ </td>
669
+ <td>
670
+ <Typography level="body-sm" color="neutral">
671
+ 2024-01-25
672
+ </Typography>
673
+ </td>
674
+ </tr>
675
+ <tr>
676
+ <td>
677
+ <Stack spacing={0.5}>
678
+ <Typography level="title-sm">테스트 작성</Typography>
679
+ <Typography level="body-xs" color="neutral">
680
+ 단위 테스트 및 통합 테스트
681
+ </Typography>
682
+ </Stack>
683
+ </td>
684
+ <td>
685
+ <Stack direction="row" spacing={1} alignItems="center">
686
+ <Avatar size="sm" variant="soft">
687
+
688
+ </Avatar>
689
+ <Typography level="body-sm">박테스터</Typography>
690
+ </Stack>
691
+ </td>
692
+ <td>
693
+ <Chip size="sm" variant="soft" color="success">
694
+ 낮음
695
+ </Chip>
696
+ </td>
697
+ <td>
698
+ <Box
699
+ sx={{
700
+ display: "flex",
701
+ alignItems: "center",
702
+ gap: 2
703
+ }}
704
+ >
705
+ <LinearProgress
706
+ determinate
707
+ value={25}
708
+ sx={{
709
+ flex: 1,
710
+ minWidth: 80
711
+ }}
712
+ color="primary"
713
+ />
714
+ <Typography level="body-xs">25%</Typography>
715
+ </Box>
716
+ </td>
717
+ <td>
718
+ <Typography level="body-sm" color="neutral">
719
+ 2024-01-30
720
+ </Typography>
721
+ </td>
722
+ </tr>
723
+ </tbody>
724
+ </Table>
573
725
  ```
574
726
 
575
727
  ### Sales Report with Cell Merging
@@ -578,194 +730,292 @@ A sales report table that uses complex cell merging. This example uses `rowSpan`
578
730
 
579
731
  ```tsx
580
732
  <Table aria-label="sales report table with merged cells">
581
- <thead>
582
- <tr>
583
- <th rowSpan={2} style={{
584
- textAlign: 'center',
585
- verticalAlign: 'middle',
586
- backgroundColor: '#f8f9fa',
587
- fontWeight: 600
588
- }}>
589
- 지역
590
- </th>
591
- <th colSpan={2} style={{
592
- textAlign: 'center',
593
- backgroundColor: '#f8f9fa',
594
- fontWeight: 600
595
- }}>
596
- 2024년 1분기
597
- </th>
598
- <th colSpan={2} style={{
599
- textAlign: 'center',
600
- backgroundColor: '#f8f9fa',
601
- fontWeight: 600
602
- }}>
603
- 2024년 2분기
604
- </th>
605
- <th rowSpan={2} style={{
606
- textAlign: 'center',
607
- verticalAlign: 'middle',
608
- backgroundColor: '#f8f9fa',
609
- fontWeight: 600
610
- }}>
611
- 증감률
612
- </th>
613
- </tr>
614
- <tr>
615
- <th style={{
616
- textAlign: 'center',
617
- backgroundColor: '#f0f0f0',
618
- fontWeight: 500
619
- }}>매출</th>
620
- <th style={{
621
- textAlign: 'center',
622
- backgroundColor: '#f0f0f0',
623
- fontWeight: 500
624
- }}>목표대비</th>
625
- <th style={{
626
- textAlign: 'center',
627
- backgroundColor: '#f0f0f0',
628
- fontWeight: 500
629
- }}>매출</th>
630
- <th style={{
631
- textAlign: 'center',
632
- backgroundColor: '#f0f0f0',
633
- fontWeight: 500
634
- }}>목표대비</th>
635
- </tr>
636
- </thead>
637
- <tbody>
638
- <tr>
639
- <td style={{
640
- fontWeight: 600
641
- }}>서울</td>
642
- <td style={{
643
- textAlign: 'right'
644
- }}>₩15,000만</td>
645
- <td style={{
646
- textAlign: 'center'
647
- }}>
648
- <Chip size="sm" variant="soft" color="success">
649
- 105%
650
- </Chip>
651
- </td>
652
- <td style={{
653
- textAlign: 'right'
654
- }}>₩18,000만</td>
655
- <td style={{
656
- textAlign: 'center'
657
- }}>
658
- <Chip size="sm" variant="soft" color="success">
659
- 120%
660
- </Chip>
661
- </td>
662
- <td style={{
663
- textAlign: 'center'
664
- }}>
665
- <Chip size="sm" variant="soft" color="success">
666
- +20%
667
- </Chip>
668
- </td>
669
- </tr>
670
- <tr>
671
- <td style={{
672
- fontWeight: 600
673
- }}>부산</td>
674
- <td style={{
675
- textAlign: 'right'
676
- }}>₩8,500만</td>
677
- <td style={{
678
- textAlign: 'center'
679
- }}>
680
- <Chip size="sm" variant="soft" color="warning">
681
- 95%
682
- </Chip>
683
- </td>
684
- <td style={{
685
- textAlign: 'right'
686
- }}>₩9,200만</td>
687
- <td style={{
688
- textAlign: 'center'
689
- }}>
690
- <Chip size="sm" variant="soft" color="success">
691
- 102%
692
- </Chip>
693
- </td>
694
- <td style={{
695
- textAlign: 'center'
696
- }}>
697
- <Chip size="sm" variant="soft" color="success">
698
- +8%
699
- </Chip>
700
- </td>
701
- </tr>
702
- <tr>
703
- <td style={{
704
- fontWeight: 600
705
- }}>대구</td>
706
- <td style={{
707
- textAlign: 'right'
708
- }}>₩6,200만</td>
709
- <td style={{
710
- textAlign: 'center'
711
- }}>
712
- <Chip size="sm" variant="soft" color="danger">
713
- 88%
714
- </Chip>
715
- </td>
716
- <td style={{
717
- textAlign: 'right'
718
- }}>₩7,100만</td>
719
- <td style={{
720
- textAlign: 'center'
721
- }}>
722
- <Chip size="sm" variant="soft" color="success">
723
- 110%
724
- </Chip>
725
- </td>
726
- <td style={{
727
- textAlign: 'center'
728
- }}>
729
- <Chip size="sm" variant="soft" color="success">
730
- +15%
731
- </Chip>
732
- </td>
733
- </tr>
734
- <tr style={{
735
- backgroundColor: '#f8f9fa',
736
- fontWeight: 600
737
- }}>
738
- <td>합계</td>
739
- <td style={{
740
- textAlign: 'right'
741
- }}>₩29,700만</td>
742
- <td style={{
743
- textAlign: 'center'
744
- }}>
745
- <Chip size="sm" variant="solid" color="primary">
746
- 99%
747
- </Chip>
748
- </td>
749
- <td style={{
750
- textAlign: 'right'
751
- }}>₩34,300만</td>
752
- <td style={{
753
- textAlign: 'center'
754
- }}>
755
- <Chip size="sm" variant="solid" color="primary">
756
- 112%
757
- </Chip>
758
- </td>
759
- <td style={{
760
- textAlign: 'center'
761
- }}>
762
- <Chip size="sm" variant="solid" color="success">
763
- +15%
764
- </Chip>
765
- </td>
766
- </tr>
767
- </tbody>
768
- </Table>
733
+ <thead>
734
+ <tr>
735
+ <th
736
+ rowSpan={2}
737
+ style={{
738
+ textAlign: "center",
739
+ verticalAlign: "middle",
740
+ backgroundColor: "#f8f9fa",
741
+ fontWeight: 600
742
+ }}
743
+ >
744
+ 지역
745
+ </th>
746
+ <th
747
+ colSpan={2}
748
+ style={{
749
+ textAlign: "center",
750
+ backgroundColor: "#f8f9fa",
751
+ fontWeight: 600
752
+ }}
753
+ >
754
+ 2024년 1분기
755
+ </th>
756
+ <th
757
+ colSpan={2}
758
+ style={{
759
+ textAlign: "center",
760
+ backgroundColor: "#f8f9fa",
761
+ fontWeight: 600
762
+ }}
763
+ >
764
+ 2024년 2분기
765
+ </th>
766
+ <th
767
+ rowSpan={2}
768
+ style={{
769
+ textAlign: "center",
770
+ verticalAlign: "middle",
771
+ backgroundColor: "#f8f9fa",
772
+ fontWeight: 600
773
+ }}
774
+ >
775
+ 증감률
776
+ </th>
777
+ </tr>
778
+ <tr>
779
+ <th
780
+ style={{
781
+ textAlign: "center",
782
+ backgroundColor: "#f0f0f0",
783
+ fontWeight: 500
784
+ }}
785
+ >
786
+ 매출
787
+ </th>
788
+ <th
789
+ style={{
790
+ textAlign: "center",
791
+ backgroundColor: "#f0f0f0",
792
+ fontWeight: 500
793
+ }}
794
+ >
795
+ 목표대비
796
+ </th>
797
+ <th
798
+ style={{
799
+ textAlign: "center",
800
+ backgroundColor: "#f0f0f0",
801
+ fontWeight: 500
802
+ }}
803
+ >
804
+ 매출
805
+ </th>
806
+ <th
807
+ style={{
808
+ textAlign: "center",
809
+ backgroundColor: "#f0f0f0",
810
+ fontWeight: 500
811
+ }}
812
+ >
813
+ 목표대비
814
+ </th>
815
+ </tr>
816
+ </thead>
817
+ <tbody>
818
+ <tr>
819
+ <td
820
+ style={{
821
+ fontWeight: 600
822
+ }}
823
+ >
824
+ 서울
825
+ </td>
826
+ <td
827
+ style={{
828
+ textAlign: "right"
829
+ }}
830
+ >
831
+ ₩15,000만
832
+ </td>
833
+ <td
834
+ style={{
835
+ textAlign: "center"
836
+ }}
837
+ >
838
+ <Chip size="sm" variant="soft" color="success">
839
+ 105%
840
+ </Chip>
841
+ </td>
842
+ <td
843
+ style={{
844
+ textAlign: "right"
845
+ }}
846
+ >
847
+ ₩18,000만
848
+ </td>
849
+ <td
850
+ style={{
851
+ textAlign: "center"
852
+ }}
853
+ >
854
+ <Chip size="sm" variant="soft" color="success">
855
+ 120%
856
+ </Chip>
857
+ </td>
858
+ <td
859
+ style={{
860
+ textAlign: "center"
861
+ }}
862
+ >
863
+ <Chip size="sm" variant="soft" color="success">
864
+ +20%
865
+ </Chip>
866
+ </td>
867
+ </tr>
868
+ <tr>
869
+ <td
870
+ style={{
871
+ fontWeight: 600
872
+ }}
873
+ >
874
+ 부산
875
+ </td>
876
+ <td
877
+ style={{
878
+ textAlign: "right"
879
+ }}
880
+ >
881
+ ₩8,500만
882
+ </td>
883
+ <td
884
+ style={{
885
+ textAlign: "center"
886
+ }}
887
+ >
888
+ <Chip size="sm" variant="soft" color="warning">
889
+ 95%
890
+ </Chip>
891
+ </td>
892
+ <td
893
+ style={{
894
+ textAlign: "right"
895
+ }}
896
+ >
897
+ ₩9,200만
898
+ </td>
899
+ <td
900
+ style={{
901
+ textAlign: "center"
902
+ }}
903
+ >
904
+ <Chip size="sm" variant="soft" color="success">
905
+ 102%
906
+ </Chip>
907
+ </td>
908
+ <td
909
+ style={{
910
+ textAlign: "center"
911
+ }}
912
+ >
913
+ <Chip size="sm" variant="soft" color="success">
914
+ +8%
915
+ </Chip>
916
+ </td>
917
+ </tr>
918
+ <tr>
919
+ <td
920
+ style={{
921
+ fontWeight: 600
922
+ }}
923
+ >
924
+ 대구
925
+ </td>
926
+ <td
927
+ style={{
928
+ textAlign: "right"
929
+ }}
930
+ >
931
+ ₩6,200만
932
+ </td>
933
+ <td
934
+ style={{
935
+ textAlign: "center"
936
+ }}
937
+ >
938
+ <Chip size="sm" variant="soft" color="danger">
939
+ 88%
940
+ </Chip>
941
+ </td>
942
+ <td
943
+ style={{
944
+ textAlign: "right"
945
+ }}
946
+ >
947
+ ₩7,100만
948
+ </td>
949
+ <td
950
+ style={{
951
+ textAlign: "center"
952
+ }}
953
+ >
954
+ <Chip size="sm" variant="soft" color="success">
955
+ 110%
956
+ </Chip>
957
+ </td>
958
+ <td
959
+ style={{
960
+ textAlign: "center"
961
+ }}
962
+ >
963
+ <Chip size="sm" variant="soft" color="success">
964
+ +15%
965
+ </Chip>
966
+ </td>
967
+ </tr>
968
+ <tr
969
+ style={{
970
+ backgroundColor: "#f8f9fa",
971
+ fontWeight: 600
972
+ }}
973
+ >
974
+ <td>합계</td>
975
+ <td
976
+ style={{
977
+ textAlign: "right"
978
+ }}
979
+ >
980
+ ₩29,700만
981
+ </td>
982
+ <td
983
+ style={{
984
+ textAlign: "center"
985
+ }}
986
+ >
987
+ <Chip size="sm" variant="solid" color="primary">
988
+ 99%
989
+ </Chip>
990
+ </td>
991
+ <td
992
+ style={{
993
+ textAlign: "right"
994
+ }}
995
+ >
996
+ ₩34,300만
997
+ </td>
998
+ <td
999
+ style={{
1000
+ textAlign: "center"
1001
+ }}
1002
+ >
1003
+ <Chip size="sm" variant="solid" color="primary">
1004
+ 112%
1005
+ </Chip>
1006
+ </td>
1007
+ <td
1008
+ style={{
1009
+ textAlign: "center"
1010
+ }}
1011
+ >
1012
+ <Chip size="sm" variant="solid" color="success">
1013
+ +15%
1014
+ </Chip>
1015
+ </td>
1016
+ </tr>
1017
+ </tbody>
1018
+ </Table>
769
1019
  ```
770
1020
 
771
1021
  ### Comparison Table
@@ -774,157 +1024,251 @@ A table for comparing plans or products. It visually represents boolean values.
774
1024
 
775
1025
  ```tsx
776
1026
  <Table aria-label="plan comparison table">
777
- <thead>
778
- <tr>
779
- <th style={{
780
- width: '25%'
781
- }}>기능</th>
782
- <th style={{
783
- width: '25%'
784
- }}>Basic 플랜</th>
785
- <th style={{
786
- width: '25%'
787
- }}>Pro 플랜</th>
788
- <th style={{
789
- width: '25%'
790
- }}>Enterprise 플랜</th>
791
- </tr>
792
- </thead>
793
- <tbody>
794
- <tr>
795
- <td>
796
- <Typography level="title-sm" sx={{
797
- fontWeight: 600
798
- }}>
799
- 사용자 수
800
- </Typography>
801
- </td>
802
- <td style={{
803
- textAlign: 'center'
804
- }}>최대 5명</td>
805
- <td style={{
806
- textAlign: 'center'
807
- }}>최대 50명</td>
808
- <td style={{
809
- textAlign: 'center'
810
- }}>무제한</td>
811
- </tr>
812
- <tr>
813
- <td>
814
- <Typography level="title-sm" sx={{
815
- fontWeight: 600
816
- }}>
817
- 저장공간
818
- </Typography>
819
- </td>
820
- <td style={{
821
- textAlign: 'center'
822
- }}>10GB</td>
823
- <td style={{
824
- textAlign: 'center'
825
- }}>100GB</td>
826
- <td style={{
827
- textAlign: 'center'
828
- }}>1TB</td>
829
- </tr>
830
- <tr>
831
- <td>
832
- <Typography level="title-sm" sx={{
833
- fontWeight: 600
834
- }}>
835
- API 호출
836
- </Typography>
837
- </td>
838
- <td style={{
839
- textAlign: 'center'
840
- }}>1,000/월</td>
841
- <td style={{
842
- textAlign: 'center'
843
- }}>10,000/월</td>
844
- <td style={{
845
- textAlign: 'center'
846
- }}>무제한</td>
847
- </tr>
848
- <tr>
849
- <td>
850
- <Typography level="title-sm" sx={{
851
- fontWeight: 600
852
- }}>
853
- 고급 분석
854
- </Typography>
855
- </td>
856
- <td style={{
857
- textAlign: 'center'
858
- }}>
859
- <Chip size="sm" variant="soft" color="neutral">
860
- ✗ 미포함
861
- </Chip>
862
- </td>
863
- <td style={{
864
- textAlign: 'center'
865
- }}>
866
- <Chip size="sm" variant="soft" color="success">
867
- ✓ 포함
868
- </Chip>
869
- </td>
870
- <td style={{
871
- textAlign: 'center'
872
- }}>
873
- <Chip size="sm" variant="soft" color="success">
874
- ✓ 포함
875
- </Chip>
876
- </td>
877
- </tr>
878
- <tr>
879
- <td>
880
- <Typography level="title-sm" sx={{
881
- fontWeight: 600
882
- }}>
883
- 24/7 지원
884
- </Typography>
885
- </td>
886
- <td style={{
887
- textAlign: 'center'
888
- }}>
889
- <Chip size="sm" variant="soft" color="neutral">
890
- ✗ 미포함
891
- </Chip>
892
- </td>
893
- <td style={{
894
- textAlign: 'center'
895
- }}>
896
- <Chip size="sm" variant="soft" color="neutral">
897
- ✗ 미포함
898
- </Chip>
899
- </td>
900
- <td style={{
901
- textAlign: 'center'
902
- }}>
903
- <Chip size="sm" variant="soft" color="success">
904
- ✓ 포함
905
- </Chip>
906
- </td>
907
- </tr>
908
- <tr>
909
- <td>
910
- <Typography level="title-sm" sx={{
911
- fontWeight: 600
912
- }}>
913
- 가격
914
- </Typography>
915
- </td>
916
- <td style={{
917
- textAlign: 'center'
918
- }}>무료</td>
919
- <td style={{
920
- textAlign: 'center'
921
- }}>₩29,000/월</td>
922
- <td style={{
923
- textAlign: 'center'
924
- }}>문의</td>
925
- </tr>
926
- </tbody>
927
- </Table>
1027
+ <thead>
1028
+ <tr>
1029
+ <th
1030
+ style={{
1031
+ width: "25%"
1032
+ }}
1033
+ >
1034
+ 기능
1035
+ </th>
1036
+ <th
1037
+ style={{
1038
+ width: "25%"
1039
+ }}
1040
+ >
1041
+ Basic 플랜
1042
+ </th>
1043
+ <th
1044
+ style={{
1045
+ width: "25%"
1046
+ }}
1047
+ >
1048
+ Pro 플랜
1049
+ </th>
1050
+ <th
1051
+ style={{
1052
+ width: "25%"
1053
+ }}
1054
+ >
1055
+ Enterprise 플랜
1056
+ </th>
1057
+ </tr>
1058
+ </thead>
1059
+ <tbody>
1060
+ <tr>
1061
+ <td>
1062
+ <Typography
1063
+ level="title-sm"
1064
+ sx={{
1065
+ fontWeight: 600
1066
+ }}
1067
+ >
1068
+ 사용자 수
1069
+ </Typography>
1070
+ </td>
1071
+ <td
1072
+ style={{
1073
+ textAlign: "center"
1074
+ }}
1075
+ >
1076
+ 최대 5명
1077
+ </td>
1078
+ <td
1079
+ style={{
1080
+ textAlign: "center"
1081
+ }}
1082
+ >
1083
+ 최대 50명
1084
+ </td>
1085
+ <td
1086
+ style={{
1087
+ textAlign: "center"
1088
+ }}
1089
+ >
1090
+ 무제한
1091
+ </td>
1092
+ </tr>
1093
+ <tr>
1094
+ <td>
1095
+ <Typography
1096
+ level="title-sm"
1097
+ sx={{
1098
+ fontWeight: 600
1099
+ }}
1100
+ >
1101
+ 저장공간
1102
+ </Typography>
1103
+ </td>
1104
+ <td
1105
+ style={{
1106
+ textAlign: "center"
1107
+ }}
1108
+ >
1109
+ 10GB
1110
+ </td>
1111
+ <td
1112
+ style={{
1113
+ textAlign: "center"
1114
+ }}
1115
+ >
1116
+ 100GB
1117
+ </td>
1118
+ <td
1119
+ style={{
1120
+ textAlign: "center"
1121
+ }}
1122
+ >
1123
+ 1TB
1124
+ </td>
1125
+ </tr>
1126
+ <tr>
1127
+ <td>
1128
+ <Typography
1129
+ level="title-sm"
1130
+ sx={{
1131
+ fontWeight: 600
1132
+ }}
1133
+ >
1134
+ API 호출
1135
+ </Typography>
1136
+ </td>
1137
+ <td
1138
+ style={{
1139
+ textAlign: "center"
1140
+ }}
1141
+ >
1142
+ 1,000/월
1143
+ </td>
1144
+ <td
1145
+ style={{
1146
+ textAlign: "center"
1147
+ }}
1148
+ >
1149
+ 10,000/월
1150
+ </td>
1151
+ <td
1152
+ style={{
1153
+ textAlign: "center"
1154
+ }}
1155
+ >
1156
+ 무제한
1157
+ </td>
1158
+ </tr>
1159
+ <tr>
1160
+ <td>
1161
+ <Typography
1162
+ level="title-sm"
1163
+ sx={{
1164
+ fontWeight: 600
1165
+ }}
1166
+ >
1167
+ 고급 분석
1168
+ </Typography>
1169
+ </td>
1170
+ <td
1171
+ style={{
1172
+ textAlign: "center"
1173
+ }}
1174
+ >
1175
+ <Chip size="sm" variant="soft" color="neutral">
1176
+ ✗ 미포함
1177
+ </Chip>
1178
+ </td>
1179
+ <td
1180
+ style={{
1181
+ textAlign: "center"
1182
+ }}
1183
+ >
1184
+ <Chip size="sm" variant="soft" color="success">
1185
+ ✓ 포함
1186
+ </Chip>
1187
+ </td>
1188
+ <td
1189
+ style={{
1190
+ textAlign: "center"
1191
+ }}
1192
+ >
1193
+ <Chip size="sm" variant="soft" color="success">
1194
+ ✓ 포함
1195
+ </Chip>
1196
+ </td>
1197
+ </tr>
1198
+ <tr>
1199
+ <td>
1200
+ <Typography
1201
+ level="title-sm"
1202
+ sx={{
1203
+ fontWeight: 600
1204
+ }}
1205
+ >
1206
+ 24/7 지원
1207
+ </Typography>
1208
+ </td>
1209
+ <td
1210
+ style={{
1211
+ textAlign: "center"
1212
+ }}
1213
+ >
1214
+ <Chip size="sm" variant="soft" color="neutral">
1215
+ ✗ 미포함
1216
+ </Chip>
1217
+ </td>
1218
+ <td
1219
+ style={{
1220
+ textAlign: "center"
1221
+ }}
1222
+ >
1223
+ <Chip size="sm" variant="soft" color="neutral">
1224
+ ✗ 미포함
1225
+ </Chip>
1226
+ </td>
1227
+ <td
1228
+ style={{
1229
+ textAlign: "center"
1230
+ }}
1231
+ >
1232
+ <Chip size="sm" variant="soft" color="success">
1233
+ ✓ 포함
1234
+ </Chip>
1235
+ </td>
1236
+ </tr>
1237
+ <tr>
1238
+ <td>
1239
+ <Typography
1240
+ level="title-sm"
1241
+ sx={{
1242
+ fontWeight: 600
1243
+ }}
1244
+ >
1245
+ 가격
1246
+ </Typography>
1247
+ </td>
1248
+ <td
1249
+ style={{
1250
+ textAlign: "center"
1251
+ }}
1252
+ >
1253
+ 무료
1254
+ </td>
1255
+ <td
1256
+ style={{
1257
+ textAlign: "center"
1258
+ }}
1259
+ >
1260
+ ₩29,000/월
1261
+ </td>
1262
+ <td
1263
+ style={{
1264
+ textAlign: "center"
1265
+ }}
1266
+ >
1267
+ 문의
1268
+ </td>
1269
+ </tr>
1270
+ </tbody>
1271
+ </Table>
928
1272
  ```
929
1273
 
930
1274
  ### Empty State Table
@@ -933,65 +1277,89 @@ A table that displays an empty state when no data is available.
933
1277
 
934
1278
  ```tsx
935
1279
  <Stack spacing={2}>
936
- <Stack direction="row" justifyContent="space-between" alignItems="center">
937
- <Typography level="title-lg">사용자 목록</Typography>
938
- <Button startDecorator={<AddIcon />} size="sm">
939
- 새 사용자 추가
940
- </Button>
941
- </Stack>
1280
+ <Stack direction="row" justifyContent="space-between" alignItems="center">
1281
+ <Typography level="title-lg">사용자 목록</Typography>
1282
+ <Button startDecorator={<AddIcon />} size="sm">
1283
+ 새 사용자 추가
1284
+ </Button>
1285
+ </Stack>
942
1286
 
943
- <Table aria-label="empty state table">
944
- <thead>
945
- <tr>
946
- <th style={{
947
- width: '25%'
948
- }}>이름</th>
949
- <th style={{
950
- width: '30%'
951
- }}>이메일</th>
952
- <th style={{
953
- width: '20%'
954
- }}>역할</th>
955
- <th style={{
956
- width: '15%'
957
- }}>상태</th>
958
- <th style={{
959
- width: '10%'
960
- }}>작업</th>
961
- </tr>
962
- </thead>
963
- <tbody>
964
- <tr>
965
- <td colSpan={5}>
966
- <Box sx={{
967
- display: 'flex',
968
- flexDirection: 'column',
969
- alignItems: 'center',
970
- justifyContent: 'center',
971
- py: 8,
972
- gap: 2
973
- }}>
974
- <SearchIcon sx={{
975
- fontSize: 48,
976
- color: 'neutral.400'
977
- }} />
978
- <Stack spacing={1} alignItems="center">
979
- <Typography level="title-md" color="neutral">
980
- 사용자가 없습니다
981
- </Typography>
982
- <Typography level="body-sm" color="neutral">
983
- 새 사용자를 추가하여 시작해보세요.
984
- </Typography>
985
- </Stack>
986
- <Button variant="soft" startDecorator={<AddIcon />} size="sm">
987
- 사용자 추가하기
988
- </Button>
989
- </Box>
990
- </td>
991
- </tr>
992
- </tbody>
993
- </Table>
994
- </Stack>
1287
+ <Table aria-label="empty state table">
1288
+ <thead>
1289
+ <tr>
1290
+ <th
1291
+ style={{
1292
+ width: "25%"
1293
+ }}
1294
+ >
1295
+ 이름
1296
+ </th>
1297
+ <th
1298
+ style={{
1299
+ width: "30%"
1300
+ }}
1301
+ >
1302
+ 이메일
1303
+ </th>
1304
+ <th
1305
+ style={{
1306
+ width: "20%"
1307
+ }}
1308
+ >
1309
+ 역할
1310
+ </th>
1311
+ <th
1312
+ style={{
1313
+ width: "15%"
1314
+ }}
1315
+ >
1316
+ 상태
1317
+ </th>
1318
+ <th
1319
+ style={{
1320
+ width: "10%"
1321
+ }}
1322
+ >
1323
+ 작업
1324
+ </th>
1325
+ </tr>
1326
+ </thead>
1327
+ <tbody>
1328
+ <tr>
1329
+ <td colSpan={5}>
1330
+ <Box
1331
+ sx={{
1332
+ display: "flex",
1333
+ flexDirection: "column",
1334
+ alignItems: "center",
1335
+ justifyContent: "center",
1336
+ py: 8,
1337
+ gap: 2
1338
+ }}
1339
+ >
1340
+ <SearchIcon
1341
+ sx={{
1342
+ fontSize: 48,
1343
+ color: "neutral.400"
1344
+ }}
1345
+ />
1346
+ <Stack spacing={1} alignItems="center">
1347
+ <Typography level="title-md" color="neutral">
1348
+ 사용자가 없습니다
1349
+ </Typography>
1350
+ <Typography level="body-sm" color="neutral">
1351
+ 새 사용자를 추가하여 시작해보세요.
1352
+ </Typography>
1353
+ </Stack>
1354
+ <Button variant="soft" startDecorator={<AddIcon />} size="sm">
1355
+ 사용자 추가하기
1356
+ </Button>
1357
+ </Box>
1358
+ </td>
1359
+ </tr>
1360
+ </tbody>
1361
+ </Table>
1362
+ </Stack>
995
1363
  ```
996
1364
 
997
1365
  ### Advanced Features Table
@@ -999,78 +1367,132 @@ A table that displays an empty state when no data is available.
999
1367
  A table that includes advanced features such as sticky headers, scrolling, and responsiveness.
1000
1368
 
1001
1369
  ```tsx
1002
- <Box sx={{
1003
- maxHeight: 400,
1004
- overflow: 'auto'
1005
- }}>
1006
- <Table aria-label="advanced features table" hoverRow stickyHeader sx={{
1007
- '& th': {
1008
- position: 'sticky',
1009
- top: 0,
1010
- backgroundColor: 'background.surface',
1011
- zIndex: 1
1012
- }
1013
- }}>
1014
- <thead>
1015
- <tr>
1016
- <th style={{
1017
- width: '8%',
1018
- textAlign: 'right'
1019
- }}>ID</th>
1020
- <th style={{
1021
- width: '20%'
1022
- }}>제품명</th>
1023
- <th style={{
1024
- width: '30%'
1025
- }}>설명</th>
1026
- <th style={{
1027
- width: '12%'
1028
- }}>카테고리</th>
1029
- <th style={{
1030
- width: '12%',
1031
- textAlign: 'right'
1032
- }}>가격</th>
1033
- <th style={{
1034
- width: '8%',
1035
- textAlign: 'right'
1036
- }}>재고</th>
1037
- <th style={{
1038
- width: '10%'
1039
- }}>등록일</th>
1040
- </tr>
1041
- </thead>
1042
- <tbody>
1043
- {advancedRows.map(row => <tr key={row.id}>
1044
- <td style={{
1045
- textAlign: 'right'
1046
- }}>{row.id}</td>
1047
- <td>{row.name}</td>
1048
- <td>
1049
- <Typography level="body-sm" sx={{
1050
- maxWidth: 200,
1051
- overflow: 'hidden',
1052
- textOverflow: 'ellipsis',
1053
- whiteSpace: 'nowrap'
1054
- }}>
1055
- {row.description}
1056
- </Typography>
1057
- </td>
1058
- <td>{row.category}</td>
1059
- <td style={{
1060
- textAlign: 'right'
1061
- }}>₩{Number(row.price).toLocaleString()}</td>
1062
- <td style={{
1063
- textAlign: 'right'
1064
- }}>
1065
- <Chip size="sm" variant="soft" color={row.stock > 50 ? 'success' : row.stock > 10 ? 'warning' : 'danger'}>
1066
- {row.stock}
1067
- </Chip>
1068
- </td>
1069
- <td>{row.createdAt}</td>
1070
- </tr>)}
1071
- </tbody>
1072
- </Table>
1073
- </Box>
1370
+ <Box
1371
+ sx={{
1372
+ maxHeight: 400,
1373
+ overflow: "auto"
1374
+ }}
1375
+ >
1376
+ <Table
1377
+ aria-label="advanced features table"
1378
+ hoverRow
1379
+ stickyHeader
1380
+ sx={{
1381
+ "& th": {
1382
+ position: "sticky",
1383
+ top: 0,
1384
+ backgroundColor: "background.surface",
1385
+ zIndex: 1
1386
+ }
1387
+ }}
1388
+ >
1389
+ <thead>
1390
+ <tr>
1391
+ <th
1392
+ style={{
1393
+ width: "8%",
1394
+ textAlign: "right"
1395
+ }}
1396
+ >
1397
+ ID
1398
+ </th>
1399
+ <th
1400
+ style={{
1401
+ width: "20%"
1402
+ }}
1403
+ >
1404
+ 제품명
1405
+ </th>
1406
+ <th
1407
+ style={{
1408
+ width: "30%"
1409
+ }}
1410
+ >
1411
+ 설명
1412
+ </th>
1413
+ <th
1414
+ style={{
1415
+ width: "12%"
1416
+ }}
1417
+ >
1418
+ 카테고리
1419
+ </th>
1420
+ <th
1421
+ style={{
1422
+ width: "12%",
1423
+ textAlign: "right"
1424
+ }}
1425
+ >
1426
+ 가격
1427
+ </th>
1428
+ <th
1429
+ style={{
1430
+ width: "8%",
1431
+ textAlign: "right"
1432
+ }}
1433
+ >
1434
+ 재고
1435
+ </th>
1436
+ <th
1437
+ style={{
1438
+ width: "10%"
1439
+ }}
1440
+ >
1441
+ 등록일
1442
+ </th>
1443
+ </tr>
1444
+ </thead>
1445
+ <tbody>
1446
+ {advancedRows.map((row) => (
1447
+ <tr key={row.id}>
1448
+ <td
1449
+ style={{
1450
+ textAlign: "right"
1451
+ }}
1452
+ >
1453
+ {row.id}
1454
+ </td>
1455
+ <td>{row.name}</td>
1456
+ <td>
1457
+ <Typography
1458
+ level="body-sm"
1459
+ sx={{
1460
+ maxWidth: 200,
1461
+ overflow: "hidden",
1462
+ textOverflow: "ellipsis",
1463
+ whiteSpace: "nowrap"
1464
+ }}
1465
+ >
1466
+ {row.description}
1467
+ </Typography>
1468
+ </td>
1469
+ <td>{row.category}</td>
1470
+ <td
1471
+ style={{
1472
+ textAlign: "right"
1473
+ }}
1474
+ >
1475
+ ₩{Number(row.price).toLocaleString()}
1476
+ </td>
1477
+ <td
1478
+ style={{
1479
+ textAlign: "right"
1480
+ }}
1481
+ >
1482
+ <Chip
1483
+ size="sm"
1484
+ variant="soft"
1485
+ color={row.stock > 50 ? "success" : row.stock > 10 ? "warning" : "danger"}
1486
+ >
1487
+ {row.stock}
1488
+ </Chip>
1489
+ </td>
1490
+ <td>{row.createdAt}</td>
1491
+ </tr>
1492
+ ))}
1493
+ </tbody>
1494
+ </Table>
1495
+ </Box>
1074
1496
  ```
1075
1497
 
1076
1498
  ### Drag and Drop Headers Table
@@ -1079,50 +1501,70 @@ A table that uses `@atlaskit/pragmatic-drag-and-drop` so headers can be dragged
1079
1501
 
1080
1502
  ```tsx
1081
1503
  <Stack spacing={3}>
1082
- <Stack spacing={1}>
1083
- <Typography level="title-lg">드래그 앤 드롭 헤더 재정렬 테이블</Typography>
1084
- <Typography level="body-sm" color="neutral">
1085
- 헤더를 드래그하여 컬럼 순서를 변경할 수 있습니다. 드래그 아이콘을 클릭하고 드래그하세요.
1086
- </Typography>
1087
- </Stack>
1504
+ <Stack spacing={1}>
1505
+ <Typography level="title-lg">드래그 앤 드롭 헤더 재정렬 테이블</Typography>
1506
+ <Typography level="body-sm" color="neutral">
1507
+ 헤더를 드래그하여 컬럼 순서를 변경할 수 있습니다. 드래그 아이콘을 클릭하고 드래그하세요.
1508
+ </Typography>
1509
+ </Stack>
1088
1510
 
1089
- <Table aria-label="drag and drop headers table" hoverRow>
1090
- <thead>
1091
- <tr>
1092
- {columns.map((column, index) => <DraggableHeader key={column.key} columnKey={column.key} index={index} onReorder={handleReorder}>
1093
- <Typography level="title-sm" fontWeight="lg">
1094
- {column.label}
1095
- </Typography>
1096
- </DraggableHeader>)}
1097
- </tr>
1098
- </thead>
1099
- <tbody>
1100
- {sampleData.map(row => <tr key={`${row.name}-${row.email}`}>
1101
- {columns.map(column => <td key={column.key} style={{
1102
- width: column.width
1103
- }}>
1104
- {renderCellContent(column.key, row)}
1105
- </td>)}
1106
- </tr>)}
1107
- </tbody>
1108
- </Table>
1511
+ <Table aria-label="drag and drop headers table" hoverRow>
1512
+ <thead>
1513
+ <tr>
1514
+ {columns.map((column, index) => (
1515
+ <DraggableHeader
1516
+ key={column.key}
1517
+ columnKey={column.key}
1518
+ index={index}
1519
+ onReorder={handleReorder}
1520
+ >
1521
+ <Typography level="title-sm" fontWeight="lg">
1522
+ {column.label}
1523
+ </Typography>
1524
+ </DraggableHeader>
1525
+ ))}
1526
+ </tr>
1527
+ </thead>
1528
+ <tbody>
1529
+ {sampleData.map((row) => (
1530
+ <tr key={`${row.name}-${row.email}`}>
1531
+ {columns.map((column) => (
1532
+ <td
1533
+ key={column.key}
1534
+ style={{
1535
+ width: column.width
1536
+ }}
1537
+ >
1538
+ {renderCellContent(column.key, row)}
1539
+ </td>
1540
+ ))}
1541
+ </tr>
1542
+ ))}
1543
+ </tbody>
1544
+ </Table>
1109
1545
 
1110
- <Box sx={{
1111
- mt: 2,
1112
- p: 2,
1113
- bgcolor: 'background.level1',
1114
- borderRadius: 'sm'
1115
- }}>
1116
- <Typography level="body-sm" fontWeight="lg" sx={{
1117
- mb: 1
1118
- }}>
1119
- 현재 컬럼 순서:
1120
- </Typography>
1121
- <Typography level="body-sm" color="neutral">
1122
- {columns.map(col => col.label).join(' → ')}
1123
- </Typography>
1124
- </Box>
1125
- </Stack>
1546
+ <Box
1547
+ sx={{
1548
+ mt: 2,
1549
+ p: 2,
1550
+ bgcolor: "background.level1",
1551
+ borderRadius: "sm"
1552
+ }}
1553
+ >
1554
+ <Typography
1555
+ level="body-sm"
1556
+ fontWeight="lg"
1557
+ sx={{
1558
+ mb: 1
1559
+ }}
1560
+ >
1561
+ 현재 컬럼 순서:
1562
+ </Typography>
1563
+ <Typography level="body-sm" color="neutral">
1564
+ {columns.map((col) => col.label).join(" → ")}
1565
+ </Typography>
1566
+ </Box>
1567
+ </Stack>
1126
1568
  ```
1127
1569
 
1128
1570
  ## Detailed Code Examples
@@ -1151,10 +1593,7 @@ function SimpleTable() {
1151
1593
  return (
1152
1594
  <Table aria-label="simple table" hoverRow>
1153
1595
  <TableHead headCells={headCells} />
1154
- <TableBody
1155
- rows={rows}
1156
- cellOrder={['name', 'email', 'role']}
1157
- />
1596
+ <TableBody rows={rows} cellOrder={['name', 'email', 'role']} />
1158
1597
  </Table>
1159
1598
  );
1160
1599
  }
@@ -1184,7 +1623,9 @@ function ComplexTable() {
1184
1623
  <tr>
1185
1624
  <td>
1186
1625
  <Stack direction="row" spacing={2} alignItems="center">
1187
- <Avatar size="sm" variant="soft" color="primary">김</Avatar>
1626
+ <Avatar size="sm" variant="soft" color="primary">
1627
+
1628
+ </Avatar>
1188
1629
  <Stack spacing={0}>
1189
1630
  <Typography level="title-sm">김철수</Typography>
1190
1631
  <Typography level="body-xs" color="neutral">
@@ -1248,14 +1689,17 @@ The Table component supports various advanced features:
1248
1689
  Keeps the header fixed while scrolling:
1249
1690
 
1250
1691
  ```tsx
1251
- <Table stickyHeader sx={{
1252
- '& th': {
1253
- position: 'sticky',
1254
- top: 0,
1255
- backgroundColor: 'background.surface',
1256
- zIndex: 1,
1257
- }
1258
- }}>
1692
+ <Table
1693
+ stickyHeader
1694
+ sx={{
1695
+ '& th': {
1696
+ position: 'sticky',
1697
+ top: 0,
1698
+ backgroundColor: 'background.surface',
1699
+ zIndex: 1,
1700
+ },
1701
+ }}
1702
+ >
1259
1703
  {/* Table content */}
1260
1704
  </Table>
1261
1705
  ```
@@ -1284,14 +1728,16 @@ Displays an appropriate empty state when no data is available:
1284
1728
  Guidance for responsive design:
1285
1729
 
1286
1730
  ```tsx
1287
- <Table sx={{
1288
- '@media (max-width: 768px)': {
1289
- '& td, & th': {
1290
- fontSize: 'sm',
1291
- px: 1,
1292
- }
1293
- }
1294
- }}>
1731
+ <Table
1732
+ sx={{
1733
+ '@media (max-width: 768px)': {
1734
+ '& td, & th': {
1735
+ fontSize: 'sm',
1736
+ px: 1,
1737
+ },
1738
+ },
1739
+ }}
1740
+ >
1295
1741
  {/* Table content */}
1296
1742
  </Table>
1297
1743
  ```