@ceed/ads 1.35.1 → 1.36.0

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