@delightui/components 0.1.104 → 0.1.106

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/README.md +104 -1
  2. package/dist/cjs/components/molecules/Modal/DemoModal.d.ts +8 -0
  3. package/dist/cjs/components/molecules/Modal/ModalContext/ModalContext.d.ts +41 -0
  4. package/dist/cjs/components/molecules/Modal/ModalContext/ModalContext.types.d.ts +87 -0
  5. package/dist/cjs/components/molecules/Modal/ModalContext/index.d.ts +3 -0
  6. package/dist/cjs/components/molecules/Modal/ModalContext/useModal.d.ts +34 -0
  7. package/dist/cjs/components/molecules/Modal/index.d.ts +2 -0
  8. package/dist/cjs/components/molecules/Popover/Popover.presenter.d.ts +26 -0
  9. package/dist/cjs/components/molecules/Select/Option/Option.types.d.ts +6 -0
  10. package/dist/cjs/components/molecules/Select/Select.Context.d.ts +1 -1
  11. package/dist/cjs/components/molecules/Select/Select.d.ts +5 -5
  12. package/dist/cjs/components/molecules/Select/Select.presenter.d.ts +1 -0
  13. package/dist/cjs/components/molecules/Select/Select.types.d.ts +5 -0
  14. package/dist/cjs/components/molecules/Select/index.d.ts +2 -9
  15. package/dist/cjs/components/molecules/index.d.ts +2 -0
  16. package/dist/cjs/components/utils/accessibilityUtils.d.ts +41 -0
  17. package/dist/cjs/components/utils/index.d.ts +2 -0
  18. package/dist/cjs/library.css +13 -0
  19. package/dist/cjs/library.js +2 -2
  20. package/dist/cjs/library.js.map +1 -1
  21. package/dist/esm/components/molecules/Modal/DemoModal.d.ts +8 -0
  22. package/dist/esm/components/molecules/Modal/ModalContext/ModalContext.d.ts +41 -0
  23. package/dist/esm/components/molecules/Modal/ModalContext/ModalContext.types.d.ts +87 -0
  24. package/dist/esm/components/molecules/Modal/ModalContext/index.d.ts +3 -0
  25. package/dist/esm/components/molecules/Modal/ModalContext/useModal.d.ts +34 -0
  26. package/dist/esm/components/molecules/Modal/index.d.ts +2 -0
  27. package/dist/esm/components/molecules/Popover/Popover.presenter.d.ts +26 -0
  28. package/dist/esm/components/molecules/Select/Option/Option.types.d.ts +6 -0
  29. package/dist/esm/components/molecules/Select/Select.Context.d.ts +1 -1
  30. package/dist/esm/components/molecules/Select/Select.d.ts +5 -5
  31. package/dist/esm/components/molecules/Select/Select.presenter.d.ts +1 -0
  32. package/dist/esm/components/molecules/Select/Select.types.d.ts +5 -0
  33. package/dist/esm/components/molecules/Select/index.d.ts +2 -9
  34. package/dist/esm/components/molecules/index.d.ts +2 -0
  35. package/dist/esm/components/utils/accessibilityUtils.d.ts +41 -0
  36. package/dist/esm/components/utils/index.d.ts +2 -0
  37. package/dist/esm/library.css +13 -0
  38. package/dist/esm/library.js +3 -3
  39. package/dist/esm/library.js.map +1 -1
  40. package/dist/index.d.ts +156 -12
  41. package/docs/README.md +264 -0
  42. package/docs/components/atoms/ActionImage.md +119 -0
  43. package/docs/components/atoms/Button.md +197 -0
  44. package/docs/components/atoms/Checkbox.md +299 -0
  45. package/docs/components/atoms/CheckboxItem.md +314 -0
  46. package/docs/components/atoms/Chip.md +380 -0
  47. package/docs/components/atoms/CustomToggle.md +270 -0
  48. package/docs/components/atoms/Icon.md +365 -0
  49. package/docs/components/atoms/IconButton.md +407 -0
  50. package/docs/components/atoms/Image.md +448 -0
  51. package/docs/components/atoms/Input.md +430 -0
  52. package/docs/components/atoms/ListItem.md +502 -0
  53. package/docs/components/atoms/Password.md +472 -0
  54. package/docs/components/atoms/RadioButton.md +614 -0
  55. package/docs/components/atoms/RadioButtonItem.md +588 -0
  56. package/docs/components/atoms/ResponsiveComponent.md +612 -0
  57. package/docs/components/atoms/SelectListItem.md +609 -0
  58. package/docs/components/atoms/Slider.md +605 -0
  59. package/docs/components/atoms/Spinner.md +605 -0
  60. package/docs/components/atoms/Text.md +463 -0
  61. package/docs/components/atoms/TextArea.md +670 -0
  62. package/docs/components/atoms/ToastNotification.md +668 -0
  63. package/docs/components/atoms/Toggle.md +737 -0
  64. package/docs/components/atoms/ToggleButton.md +751 -0
  65. package/docs/components/atoms/Tooltip.md +391 -0
  66. package/docs/components/molecules/Accordion.md +440 -0
  67. package/docs/components/molecules/AccordionGroup.md +547 -0
  68. package/docs/components/molecules/ActionCard.md +546 -0
  69. package/docs/components/molecules/Breadcrumb.md +403 -0
  70. package/docs/components/molecules/Breadcrumbs.md +485 -0
  71. package/docs/components/molecules/ButtonGroup.md +383 -0
  72. package/docs/components/molecules/Card.md +298 -0
  73. package/docs/components/molecules/ChipInput.md +646 -0
  74. package/docs/components/molecules/ContextMenu.md +768 -0
  75. package/docs/components/molecules/CustomTimeSelector.md +116 -0
  76. package/docs/components/molecules/DatePicker.md +516 -0
  77. package/docs/components/molecules/DateTimeSelector.md +166 -0
  78. package/docs/components/molecules/FormField.md +312 -0
  79. package/docs/components/molecules/Grid.md +577 -0
  80. package/docs/components/molecules/GridItem.md +834 -0
  81. package/docs/components/molecules/GridList.md +244 -0
  82. package/docs/components/molecules/List.md +485 -0
  83. package/docs/components/molecules/Modal.md +470 -0
  84. package/docs/components/molecules/ModalFooter.md +702 -0
  85. package/docs/components/molecules/ModalHeader.md +756 -0
  86. package/docs/components/molecules/ModalProvider.md +205 -0
  87. package/docs/components/molecules/Nav.md +530 -0
  88. package/docs/components/molecules/NavItem.md +572 -0
  89. package/docs/components/molecules/NavLink.md +499 -0
  90. package/docs/components/molecules/Option.md +521 -0
  91. package/docs/components/molecules/Pagination.md +592 -0
  92. package/docs/components/molecules/PaginationNumberField.md +722 -0
  93. package/docs/components/molecules/Popover.md +516 -0
  94. package/docs/components/molecules/ProgressBar.md +624 -0
  95. package/docs/components/molecules/RadioGroup.md +831 -0
  96. package/docs/components/molecules/RepeaterList.md +185 -0
  97. package/docs/components/molecules/Select.md +402 -0
  98. package/docs/components/molecules/SortableTrigger.md +82 -0
  99. package/docs/components/molecules/useModal.md +379 -0
  100. package/docs/components/organisms/Dropzone.md +346 -0
  101. package/docs/components/organisms/DropzoneClear.md +135 -0
  102. package/docs/components/organisms/DropzoneContent.md +216 -0
  103. package/docs/components/organisms/DropzoneFilename.md +191 -0
  104. package/docs/components/organisms/DropzoneSupportedFormats.md +184 -0
  105. package/docs/components/organisms/DropzoneTrigger.md +209 -0
  106. package/docs/components/organisms/Form.md +533 -0
  107. package/docs/components/organisms/SlideOutPanel.md +662 -0
  108. package/docs/components/organisms/TabContent.md +902 -0
  109. package/docs/components/organisms/TabItem.md +1091 -0
  110. package/docs/components/organisms/Table.md +611 -0
  111. package/docs/components/organisms/TableBody.md +679 -0
  112. package/docs/components/organisms/TableCell.md +482 -0
  113. package/docs/components/organisms/TableHeader.md +513 -0
  114. package/docs/components/organisms/TableHeaderCell.md +661 -0
  115. package/docs/components/organisms/TableRow.md +715 -0
  116. package/docs/components/organisms/Tabs.md +1330 -0
  117. package/docs/components/utils/ConditionalView.md +568 -0
  118. package/docs/components/utils/RenderStateView.md +726 -0
  119. package/docs/components/utils/WrapTextNodes.md +614 -0
  120. package/package.json +3 -2
@@ -0,0 +1,513 @@
1
+ # TableHeader
2
+
3
+ ## Description
4
+
5
+ A semantic container component that wraps the header section of a table. TableHeader provides proper HTML structure for table headers and ensures accessibility compliance by creating the `<thead>` element that groups header content together.
6
+
7
+ ## Aliases
8
+
9
+ - TableHeader
10
+ - TableHead
11
+ - THead
12
+ - HeaderSection
13
+ - TableHeaderGroup
14
+
15
+ ## Props Breakdown
16
+
17
+ **Extends:** `HTMLAttributes<HTMLTableSectionElement>`
18
+
19
+ | Prop | Type | Default | Required | Description |
20
+ |------|------|---------|----------|-------------|
21
+ | `children` | `ReactNode` | - | Yes | Table header content, typically TableRow components containing TableHeaderCell elements |
22
+
23
+ Plus all standard HTML table section attributes (id, className, style, role, etc.).
24
+
25
+ ## Examples
26
+
27
+ ### Basic Table Header
28
+ ```tsx
29
+ import { Table, TableHeader, TableBody, TableRow, TableHeaderCell, TableCell } from '@delightui/components';
30
+
31
+ function BasicHeaderExample() {
32
+ return (
33
+ <Table>
34
+ <TableHeader>
35
+ <TableRow>
36
+ <TableHeaderCell>Name</TableHeaderCell>
37
+ <TableHeaderCell>Email</TableHeaderCell>
38
+ <TableHeaderCell>Role</TableHeaderCell>
39
+ </TableRow>
40
+ </TableHeader>
41
+ <TableBody>
42
+ <TableRow>
43
+ <TableCell>John Doe</TableCell>
44
+ <TableCell>john@example.com</TableCell>
45
+ <TableCell>Admin</TableCell>
46
+ </TableRow>
47
+ </TableBody>
48
+ </Table>
49
+ );
50
+ }
51
+ ```
52
+
53
+ ### Multi-Row Header
54
+ ```tsx
55
+ function MultiRowHeaderExample() {
56
+ return (
57
+ <Table>
58
+ <TableHeader>
59
+ <TableRow>
60
+ <TableHeaderCell rowSpan={2}>Employee</TableHeaderCell>
61
+ <TableHeaderCell colSpan={2}>Contact Info</TableHeaderCell>
62
+ <TableHeaderCell colSpan={2}>Employment</TableHeaderCell>
63
+ </TableRow>
64
+ <TableRow>
65
+ <TableHeaderCell>Email</TableHeaderCell>
66
+ <TableHeaderCell>Phone</TableHeaderCell>
67
+ <TableHeaderCell>Department</TableHeaderCell>
68
+ <TableHeaderCell>Start Date</TableHeaderCell>
69
+ </TableRow>
70
+ </TableHeader>
71
+ <TableBody>
72
+ <TableRow>
73
+ <TableCell>John Doe</TableCell>
74
+ <TableCell>john@example.com</TableCell>
75
+ <TableCell>+1-555-0123</TableCell>
76
+ <TableCell>Engineering</TableCell>
77
+ <TableCell>2023-01-15</TableCell>
78
+ </TableRow>
79
+ </TableBody>
80
+ </Table>
81
+ );
82
+ }
83
+ ```
84
+
85
+ ### Sortable Header
86
+ ```tsx
87
+ function SortableHeaderExample() {
88
+ const [sortConfig, setSortConfig] = useState({ key: null, direction: 'asc' });
89
+
90
+ const handleSort = (key) => {
91
+ let direction = 'asc';
92
+ if (sortConfig.key === key && sortConfig.direction === 'asc') {
93
+ direction = 'desc';
94
+ }
95
+ setSortConfig({ key, direction });
96
+ };
97
+
98
+ const getSortIcon = (columnKey) => {
99
+ if (sortConfig.key !== columnKey) {
100
+ return <Icon icon="Sort" size="Small" />;
101
+ }
102
+ return sortConfig.direction === 'asc'
103
+ ? <Icon icon="ArrowUp" size="Small" />
104
+ : <Icon icon="ArrowDown" size="Small" />;
105
+ };
106
+
107
+ return (
108
+ <Table>
109
+ <TableHeader>
110
+ <TableRow>
111
+ <TableHeaderCell
112
+ onClick={() => handleSort('name')}
113
+ className="sortable-header"
114
+ >
115
+ <div className="header-content">
116
+ Name
117
+ {getSortIcon('name')}
118
+ </div>
119
+ </TableHeaderCell>
120
+ <TableHeaderCell
121
+ onClick={() => handleSort('department')}
122
+ className="sortable-header"
123
+ >
124
+ <div className="header-content">
125
+ Department
126
+ {getSortIcon('department')}
127
+ </div>
128
+ </TableHeaderCell>
129
+ <TableHeaderCell
130
+ onClick={() => handleSort('salary')}
131
+ className="sortable-header"
132
+ >
133
+ <div className="header-content">
134
+ Salary
135
+ {getSortIcon('salary')}
136
+ </div>
137
+ </TableHeaderCell>
138
+ <TableHeaderCell>Actions</TableHeaderCell>
139
+ </TableRow>
140
+ </TableHeader>
141
+ <TableBody>
142
+ <TableRow>
143
+ <TableCell>Alice Johnson</TableCell>
144
+ <TableCell>Engineering</TableCell>
145
+ <TableCell>$95,000</TableCell>
146
+ <TableCell>
147
+ <Button size="Small" type="Ghost">Edit</Button>
148
+ </TableCell>
149
+ </TableRow>
150
+ </TableBody>
151
+ </Table>
152
+ );
153
+ }
154
+ ```
155
+
156
+ ### Header with Filters
157
+ ```tsx
158
+ function FilterHeaderExample() {
159
+ const [filters, setFilters] = useState({
160
+ status: '',
161
+ priority: '',
162
+ assignee: ''
163
+ });
164
+
165
+ const handleFilterChange = (field, value) => {
166
+ setFilters(prev => ({ ...prev, [field]: value }));
167
+ };
168
+
169
+ return (
170
+ <Table>
171
+ <TableHeader>
172
+ <TableRow>
173
+ <TableHeaderCell>
174
+ <div className="header-with-filter">
175
+ <Text type="BodyMedium">Task Title</Text>
176
+ </div>
177
+ </TableHeaderCell>
178
+ <TableHeaderCell>
179
+ <div className="header-with-filter">
180
+ <Text type="BodyMedium">Status</Text>
181
+ <Select
182
+ value={filters.status}
183
+ onChange={(value) => handleFilterChange('status', value)}
184
+ size="Small"
185
+ >
186
+ <Option value="">All</Option>
187
+ <Option value="todo">Todo</Option>
188
+ <Option value="progress">In Progress</Option>
189
+ <Option value="done">Done</Option>
190
+ </Select>
191
+ </div>
192
+ </TableHeaderCell>
193
+ <TableHeaderCell>
194
+ <div className="header-with-filter">
195
+ <Text type="BodyMedium">Priority</Text>
196
+ <Select
197
+ value={filters.priority}
198
+ onChange={(value) => handleFilterChange('priority', value)}
199
+ size="Small"
200
+ >
201
+ <Option value="">All</Option>
202
+ <Option value="low">Low</Option>
203
+ <Option value="medium">Medium</Option>
204
+ <Option value="high">High</Option>
205
+ <Option value="critical">Critical</Option>
206
+ </Select>
207
+ </div>
208
+ </TableHeaderCell>
209
+ <TableHeaderCell>
210
+ <div className="header-with-filter">
211
+ <Text type="BodyMedium">Assignee</Text>
212
+ <Input
213
+ placeholder="Filter by name..."
214
+ value={filters.assignee}
215
+ onChange={(e) => handleFilterChange('assignee', e.target.value)}
216
+ size="Small"
217
+ />
218
+ </div>
219
+ </TableHeaderCell>
220
+ </TableRow>
221
+ </TableHeader>
222
+ <TableBody>
223
+ <TableRow>
224
+ <TableCell>Implement new feature</TableCell>
225
+ <TableCell>
226
+ <Chip style="Warning">In Progress</Chip>
227
+ </TableCell>
228
+ <TableCell>
229
+ <Chip style="Error">High</Chip>
230
+ </TableCell>
231
+ <TableCell>John Doe</TableCell>
232
+ </TableRow>
233
+ </TableBody>
234
+ </Table>
235
+ );
236
+ }
237
+ ```
238
+
239
+ ### Header with Selection Controls
240
+ ```tsx
241
+ function SelectionHeaderExample() {
242
+ const [selectedAll, setSelectedAll] = useState(false);
243
+ const [selectedItems, setSelectedItems] = useState(new Set());
244
+ const [showBulkActions, setShowBulkActions] = useState(false);
245
+
246
+ const items = [
247
+ { id: 1, name: 'Item 1' },
248
+ { id: 2, name: 'Item 2' },
249
+ { id: 3, name: 'Item 3' }
250
+ ];
251
+
252
+ const handleSelectAll = (checked) => {
253
+ setSelectedAll(checked);
254
+ if (checked) {
255
+ setSelectedItems(new Set(items.map(item => item.id)));
256
+ } else {
257
+ setSelectedItems(new Set());
258
+ }
259
+ setShowBulkActions(checked);
260
+ };
261
+
262
+ return (
263
+ <div>
264
+ {showBulkActions && (
265
+ <div className="bulk-actions-bar">
266
+ <Text>{selectedItems.size} items selected</Text>
267
+ <div className="bulk-actions">
268
+ <Button size="Small" type="Outlined">Delete</Button>
269
+ <Button size="Small" type="Outlined">Archive</Button>
270
+ <Button size="Small" type="Outlined">Export</Button>
271
+ </div>
272
+ </div>
273
+ )}
274
+
275
+ <Table>
276
+ <TableHeader>
277
+ <TableRow>
278
+ <TableHeaderCell>
279
+ <Checkbox
280
+ checked={selectedAll}
281
+ indeterminate={selectedItems.size > 0 && selectedItems.size < items.length}
282
+ onChange={(e) => handleSelectAll(e.target.checked)}
283
+ />
284
+ </TableHeaderCell>
285
+ <TableHeaderCell>Name</TableHeaderCell>
286
+ <TableHeaderCell>Status</TableHeaderCell>
287
+ <TableHeaderCell>Actions</TableHeaderCell>
288
+ </TableRow>
289
+ </TableHeader>
290
+ <TableBody>
291
+ {items.map(item => (
292
+ <TableRow key={item.id}>
293
+ <TableCell>
294
+ <Checkbox checked={selectedItems.has(item.id)} />
295
+ </TableCell>
296
+ <TableCell>{item.name}</TableCell>
297
+ <TableCell>Active</TableCell>
298
+ <TableCell>
299
+ <Button size="Small" type="Ghost">Edit</Button>
300
+ </TableCell>
301
+ </TableRow>
302
+ ))}
303
+ </TableBody>
304
+ </Table>
305
+ </div>
306
+ );
307
+ }
308
+ ```
309
+
310
+ ### Grouped Column Headers
311
+ ```tsx
312
+ function GroupedHeaderExample() {
313
+ return (
314
+ <Table>
315
+ <TableHeader>
316
+ <TableRow>
317
+ <TableHeaderCell rowSpan={2}>Product</TableHeaderCell>
318
+ <TableHeaderCell colSpan={3}>Q1 Sales</TableHeaderCell>
319
+ <TableHeaderCell colSpan={3}>Q2 Sales</TableHeaderCell>
320
+ <TableHeaderCell rowSpan={2}>Total</TableHeaderCell>
321
+ </TableRow>
322
+ <TableRow>
323
+ <TableHeaderCell>Jan</TableHeaderCell>
324
+ <TableHeaderCell>Feb</TableHeaderCell>
325
+ <TableHeaderCell>Mar</TableHeaderCell>
326
+ <TableHeaderCell>Apr</TableHeaderCell>
327
+ <TableHeaderCell>May</TableHeaderCell>
328
+ <TableHeaderCell>Jun</TableHeaderCell>
329
+ </TableRow>
330
+ </TableHeader>
331
+ <TableBody>
332
+ <TableRow>
333
+ <TableCell>Product A</TableCell>
334
+ <TableCell>$12,000</TableCell>
335
+ <TableCell>$15,000</TableCell>
336
+ <TableCell>$18,000</TableCell>
337
+ <TableCell>$20,000</TableCell>
338
+ <TableCell>$22,000</TableCell>
339
+ <TableCell>$25,000</TableCell>
340
+ <TableCell>$112,000</TableCell>
341
+ </TableRow>
342
+ </TableBody>
343
+ </Table>
344
+ );
345
+ }
346
+ ```
347
+
348
+ ### Sticky Header with Actions
349
+ ```tsx
350
+ function StickyHeaderActionsExample() {
351
+ const [searchTerm, setSearchTerm] = useState('');
352
+
353
+ return (
354
+ <div className="table-container" style={{ height: '400px', overflow: 'auto' }}>
355
+ <Table stickyHeader>
356
+ <TableHeader className="sticky-header-with-actions">
357
+ <TableRow>
358
+ <TableHeaderCell colSpan={4}>
359
+ <div className="header-actions-bar">
360
+ <div className="header-title">
361
+ <Text type="Heading5">User Management</Text>
362
+ <Text type="BodySmall">Manage your team members</Text>
363
+ </div>
364
+ <div className="header-actions">
365
+ <Input
366
+ placeholder="Search users..."
367
+ value={searchTerm}
368
+ onChange={(e) => setSearchTerm(e.target.value)}
369
+ leadingIcon={<Icon icon="Search" />}
370
+ size="Small"
371
+ />
372
+ <Button size="Small">Add User</Button>
373
+ </div>
374
+ </div>
375
+ </TableHeaderCell>
376
+ </TableRow>
377
+ <TableRow>
378
+ <TableHeaderCell>Name</TableHeaderCell>
379
+ <TableHeaderCell>Email</TableHeaderCell>
380
+ <TableHeaderCell>Role</TableHeaderCell>
381
+ <TableHeaderCell>Actions</TableHeaderCell>
382
+ </TableRow>
383
+ </TableHeader>
384
+ <TableBody>
385
+ {Array.from({ length: 20 }, (_, i) => (
386
+ <TableRow key={i}>
387
+ <TableCell>User {i + 1}</TableCell>
388
+ <TableCell>user{i + 1}@example.com</TableCell>
389
+ <TableCell>Member</TableCell>
390
+ <TableCell>
391
+ <Button size="Small" type="Ghost">Edit</Button>
392
+ </TableCell>
393
+ </TableRow>
394
+ ))}
395
+ </TableBody>
396
+ </Table>
397
+ </div>
398
+ );
399
+ }
400
+ ```
401
+
402
+ ### Header with Custom Styling
403
+ ```tsx
404
+ function CustomStyledHeaderExample() {
405
+ return (
406
+ <Table>
407
+ <TableHeader className="custom-header-theme">
408
+ <TableRow>
409
+ <TableHeaderCell className="header-primary">
410
+ <div className="header-cell-content">
411
+ <Icon icon="Person" size="Small" />
412
+ <Text type="BodyMedium">User</Text>
413
+ </div>
414
+ </TableHeaderCell>
415
+ <TableHeaderCell className="header-secondary">
416
+ <div className="header-cell-content">
417
+ <Icon icon="Email" size="Small" />
418
+ <Text type="BodyMedium">Contact</Text>
419
+ </div>
420
+ </TableHeaderCell>
421
+ <TableHeaderCell className="header-accent">
422
+ <div className="header-cell-content">
423
+ <Icon icon="Badge" size="Small" />
424
+ <Text type="BodyMedium">Role</Text>
425
+ </div>
426
+ </TableHeaderCell>
427
+ <TableHeaderCell className="header-neutral">
428
+ <div className="header-cell-content">
429
+ <Icon icon="Settings" size="Small" />
430
+ <Text type="BodyMedium">Actions</Text>
431
+ </div>
432
+ </TableHeaderCell>
433
+ </TableRow>
434
+ </TableHeader>
435
+ <TableBody>
436
+ <TableRow>
437
+ <TableCell>John Doe</TableCell>
438
+ <TableCell>john@example.com</TableCell>
439
+ <TableCell>Administrator</TableCell>
440
+ <TableCell>
441
+ <Button size="Small" type="Ghost">
442
+ <Icon icon="MoreVert" size="Small" />
443
+ </Button>
444
+ </TableCell>
445
+ </TableRow>
446
+ </TableBody>
447
+ </Table>
448
+ );
449
+ }
450
+ ```
451
+
452
+ ### Responsive Header
453
+ ```tsx
454
+ function ResponsiveHeaderExample() {
455
+ return (
456
+ <Table className="responsive-table">
457
+ <TableHeader>
458
+ <TableRow>
459
+ <TableHeaderCell>
460
+ <div className="responsive-header-content">
461
+ <Text type="BodyMedium">Transaction</Text>
462
+ <Text type="BodySmall" className="header-subtitle">
463
+ ID & Details
464
+ </Text>
465
+ </div>
466
+ </TableHeaderCell>
467
+ <TableHeaderCell className="hide-mobile">
468
+ <div className="responsive-header-content">
469
+ <Text type="BodyMedium">Amount</Text>
470
+ <Text type="BodySmall" className="header-subtitle">
471
+ USD
472
+ </Text>
473
+ </div>
474
+ </TableHeaderCell>
475
+ <TableHeaderCell className="hide-tablet">
476
+ <div className="responsive-header-content">
477
+ <Text type="BodyMedium">Date</Text>
478
+ <Text type="BodySmall" className="header-subtitle">
479
+ Transaction Date
480
+ </Text>
481
+ </div>
482
+ </TableHeaderCell>
483
+ <TableHeaderCell>
484
+ <div className="responsive-header-content">
485
+ <Text type="BodyMedium">Status</Text>
486
+ <Text type="BodySmall" className="header-subtitle">
487
+ Current State
488
+ </Text>
489
+ </div>
490
+ </TableHeaderCell>
491
+ </TableRow>
492
+ </TableHeader>
493
+ <TableBody>
494
+ <TableRow>
495
+ <TableCell>
496
+ <div className="transaction-cell">
497
+ <Text type="BodyMedium">#TX001</Text>
498
+ <Text type="BodySmall" className="show-mobile">
499
+ $99.99 • 2023-10-15
500
+ </Text>
501
+ </div>
502
+ </TableCell>
503
+ <TableCell className="hide-mobile">$99.99</TableCell>
504
+ <TableCell className="hide-tablet">2023-10-15</TableCell>
505
+ <TableCell>
506
+ <Chip style="Success">Completed</Chip>
507
+ </TableCell>
508
+ </TableRow>
509
+ </TableBody>
510
+ </Table>
511
+ );
512
+ }
513
+ ```