@purpurds/table 0.0.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 (142) hide show
  1. package/dist/LICENSE.txt +213 -0
  2. package/dist/cell-types/badge-cell.d.ts +8 -0
  3. package/dist/cell-types/badge-cell.d.ts.map +1 -0
  4. package/dist/cell-types/body-text-cell.d.ts +8 -0
  5. package/dist/cell-types/body-text-cell.d.ts.map +1 -0
  6. package/dist/cell-types/button-cell.d.ts +8 -0
  7. package/dist/cell-types/button-cell.d.ts.map +1 -0
  8. package/dist/cell-types/button-group-cell.d.ts +16 -0
  9. package/dist/cell-types/button-group-cell.d.ts.map +1 -0
  10. package/dist/cell-types/cta-link-cell.d.ts +8 -0
  11. package/dist/cell-types/cta-link-cell.d.ts.map +1 -0
  12. package/dist/cell-types/date-cell.d.ts +8 -0
  13. package/dist/cell-types/date-cell.d.ts.map +1 -0
  14. package/dist/cell-types/empty-cell.d.ts +4 -0
  15. package/dist/cell-types/empty-cell.d.ts.map +1 -0
  16. package/dist/cell-types/error-message-cell.d.ts +8 -0
  17. package/dist/cell-types/error-message-cell.d.ts.map +1 -0
  18. package/dist/cell-types/icon-text-cell.d.ts +8 -0
  19. package/dist/cell-types/icon-text-cell.d.ts.map +1 -0
  20. package/dist/cell-types/lead-text-cell.d.ts +8 -0
  21. package/dist/cell-types/lead-text-cell.d.ts.map +1 -0
  22. package/dist/cell-types/link-cell.d.ts +8 -0
  23. package/dist/cell-types/link-cell.d.ts.map +1 -0
  24. package/dist/cell-types/number-cell.d.ts +8 -0
  25. package/dist/cell-types/number-cell.d.ts.map +1 -0
  26. package/dist/cell-types/row-selection-cell.d.ts +8 -0
  27. package/dist/cell-types/row-selection-cell.d.ts.map +1 -0
  28. package/dist/cell-types/row-toggle-cell.d.ts +8 -0
  29. package/dist/cell-types/row-toggle-cell.d.ts.map +1 -0
  30. package/dist/cell-types/toggle-cell.d.ts +8 -0
  31. package/dist/cell-types/toggle-cell.d.ts.map +1 -0
  32. package/dist/cell-types/warning-message-cell.d.ts +8 -0
  33. package/dist/cell-types/warning-message-cell.d.ts.map +1 -0
  34. package/dist/metadata.js +17 -0
  35. package/dist/story-utils/column-def.d.ts +5 -0
  36. package/dist/story-utils/column-def.d.ts.map +1 -0
  37. package/dist/story-utils/table-data.d.ts +35 -0
  38. package/dist/story-utils/table-data.d.ts.map +1 -0
  39. package/dist/story-utils/use-fetch-table-data-hook.d.ts +11 -0
  40. package/dist/story-utils/use-fetch-table-data-hook.d.ts.map +1 -0
  41. package/dist/styles.css +1 -0
  42. package/dist/table-action-bar.d.ts +26 -0
  43. package/dist/table-action-bar.d.ts.map +1 -0
  44. package/dist/table-body.d.ts +10 -0
  45. package/dist/table-body.d.ts.map +1 -0
  46. package/dist/table-column-header-cell.d.ts +28 -0
  47. package/dist/table-column-header-cell.d.ts.map +1 -0
  48. package/dist/table-export-drawer.d.ts +17 -0
  49. package/dist/table-export-drawer.d.ts.map +1 -0
  50. package/dist/table-header.d.ts +11 -0
  51. package/dist/table-header.d.ts.map +1 -0
  52. package/dist/table-row-cell-skeleton.d.ts +14 -0
  53. package/dist/table-row-cell-skeleton.d.ts.map +1 -0
  54. package/dist/table-row-cell.d.ts +25 -0
  55. package/dist/table-row-cell.d.ts.map +1 -0
  56. package/dist/table-row.d.ts +11 -0
  57. package/dist/table-row.d.ts.map +1 -0
  58. package/dist/table-settings-drawer.d.ts +41 -0
  59. package/dist/table-settings-drawer.d.ts.map +1 -0
  60. package/dist/table-toolbar.d.ts +37 -0
  61. package/dist/table-toolbar.d.ts.map +1 -0
  62. package/dist/table.cjs.js +259 -0
  63. package/dist/table.cjs.js.map +1 -0
  64. package/dist/table.d.ts +20 -0
  65. package/dist/table.d.ts.map +1 -0
  66. package/dist/table.es.js +13585 -0
  67. package/dist/table.es.js.map +1 -0
  68. package/dist/test-utils/column-def.d.ts +6 -0
  69. package/dist/test-utils/column-def.d.ts.map +1 -0
  70. package/dist/test-utils/helpers.d.ts +138 -0
  71. package/dist/test-utils/helpers.d.ts.map +1 -0
  72. package/dist/test-utils/table-data.d.ts +33 -0
  73. package/dist/test-utils/table-data.d.ts.map +1 -0
  74. package/dist/types.d.ts +420 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/use-screen-size.hook.d.ts +7 -0
  77. package/dist/use-screen-size.hook.d.ts.map +1 -0
  78. package/dist/use-truncated-hook.d.ts +10 -0
  79. package/dist/use-truncated-hook.d.ts.map +1 -0
  80. package/dist/utils/custom-functions.d.ts +9 -0
  81. package/dist/utils/custom-functions.d.ts.map +1 -0
  82. package/dist/utils/unit-conversions.d.ts +19 -0
  83. package/dist/utils/unit-conversions.d.ts.map +1 -0
  84. package/dist/utils/unit-conversions.spec.d.ts +2 -0
  85. package/dist/utils/unit-conversions.spec.d.ts.map +1 -0
  86. package/eslint.config.mjs +2 -0
  87. package/package.json +82 -0
  88. package/src/cell-types/badge-cell.tsx +25 -0
  89. package/src/cell-types/body-text-cell.tsx +54 -0
  90. package/src/cell-types/button-cell.tsx +26 -0
  91. package/src/cell-types/button-group-cell.tsx +54 -0
  92. package/src/cell-types/cta-link-cell.tsx +25 -0
  93. package/src/cell-types/date-cell.tsx +33 -0
  94. package/src/cell-types/empty-cell.tsx +6 -0
  95. package/src/cell-types/error-message-cell.tsx +30 -0
  96. package/src/cell-types/icon-text-cell.tsx +30 -0
  97. package/src/cell-types/lead-text-cell.tsx +19 -0
  98. package/src/cell-types/link-cell.tsx +58 -0
  99. package/src/cell-types/number-cell.tsx +27 -0
  100. package/src/cell-types/row-selection-cell.tsx +22 -0
  101. package/src/cell-types/row-toggle-cell.tsx +23 -0
  102. package/src/cell-types/toggle-cell.tsx +19 -0
  103. package/src/cell-types/warning-message-cell.tsx +30 -0
  104. package/src/global.d.ts +4 -0
  105. package/src/story-utils/column-def.ts +148 -0
  106. package/src/story-utils/table-data.tsx +262 -0
  107. package/src/story-utils/use-fetch-table-data-hook.tsx +30 -0
  108. package/src/table-action-bar.module.scss +106 -0
  109. package/src/table-action-bar.test.tsx +111 -0
  110. package/src/table-action-bar.tsx +104 -0
  111. package/src/table-body.tsx +25 -0
  112. package/src/table-column-header-cell.tsx +305 -0
  113. package/src/table-export-drawer.module.scss +9 -0
  114. package/src/table-export-drawer.test.tsx +75 -0
  115. package/src/table-export-drawer.tsx +59 -0
  116. package/src/table-header.tsx +35 -0
  117. package/src/table-kitchen-sink.test.tsx +1196 -0
  118. package/src/table-row-cell-skeleton.tsx +61 -0
  119. package/src/table-row-cell.test.tsx +360 -0
  120. package/src/table-row-cell.tsx +188 -0
  121. package/src/table-row.tsx +30 -0
  122. package/src/table-settings-drawer.module.scss +25 -0
  123. package/src/table-settings-drawer.test.tsx +350 -0
  124. package/src/table-settings-drawer.tsx +254 -0
  125. package/src/table-toolbar.module.scss +17 -0
  126. package/src/table-toolbar.test.tsx +95 -0
  127. package/src/table-toolbar.tsx +136 -0
  128. package/src/table.module.scss +367 -0
  129. package/src/table.stories.tsx +1246 -0
  130. package/src/table.story.css +11 -0
  131. package/src/table.test.tsx +318 -0
  132. package/src/table.tsx +501 -0
  133. package/src/test-utils/column-def.ts +152 -0
  134. package/src/test-utils/helpers.ts +234 -0
  135. package/src/test-utils/table-data.tsx +318 -0
  136. package/src/types.ts +496 -0
  137. package/src/use-screen-size.hook.ts +23 -0
  138. package/src/use-truncated-hook.tsx +74 -0
  139. package/src/utils/custom-functions.ts +52 -0
  140. package/src/utils/unit-conversions.spec.ts +92 -0
  141. package/src/utils/unit-conversions.ts +30 -0
  142. package/vitest.setup.ts +60 -0
@@ -0,0 +1,234 @@
1
+ import { fireEvent, waitFor, within } from "@testing-library/react";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { expect } from "vitest";
4
+
5
+ export const getTableHead = (table: HTMLElement): HTMLElement => {
6
+ const thead = within(table).getAllByRole("rowgroup")[0];
7
+ expect(thead.tagName).toBe("THEAD");
8
+ return thead;
9
+ };
10
+
11
+ export const getTableBody = (table: HTMLElement): HTMLElement => {
12
+ const tbody = within(table).getAllByRole("rowgroup")[1];
13
+ expect(tbody.tagName).toBe("TBODY");
14
+ return tbody;
15
+ };
16
+
17
+ export const getTableColumnHeaderByText = (
18
+ table: HTMLElement,
19
+ columnHeader: string
20
+ ): HTMLElement => {
21
+ const thead = getTableHead(table);
22
+ const columnHeaders = within(thead).getAllByRole("columnheader");
23
+ const index = getTableColumnHeaderIndex(columnHeaders, columnHeader);
24
+ return columnHeaders[index];
25
+ };
26
+
27
+ export const getCellInRowContent = (
28
+ table: HTMLTableElement,
29
+ rowNr: number,
30
+ columnHeader: string
31
+ ): HTMLTableCellElement => {
32
+ const tbody = getTableBody(table);
33
+ const row = within(tbody).getAllByRole("row")[rowNr];
34
+ const thead = getTableHead(table);
35
+ const columnHeaders = within(thead).getAllByRole("columnheader");
36
+ const index = getTableColumnHeaderIndex(columnHeaders, columnHeader);
37
+
38
+ return within(row).getAllByRole<HTMLTableCellElement>("cell")[index];
39
+ };
40
+
41
+ export const getTableHeadRow = (table: HTMLTableElement, rowNr = 0): HTMLTableRowElement => {
42
+ return within(getTableHead(table)).getAllByRole<HTMLTableRowElement>("row")[rowNr];
43
+ };
44
+
45
+ export const getTableBodyRow = (table: HTMLTableElement, rowNr: number): HTMLTableRowElement => {
46
+ return within(getTableBody(table)).getAllByRole<HTMLTableRowElement>("row")[rowNr];
47
+ };
48
+
49
+ // Ideally the return type should be HTMLInputElement but purpur checkbox is a button
50
+ export const getCheckBoxForTableBodyRow = (
51
+ table: HTMLTableElement,
52
+ rowNr: number
53
+ ): HTMLButtonElement => {
54
+ return within(getTableBodyRow(table, rowNr)).getByRole("checkbox");
55
+ };
56
+
57
+ export const getRadioToggleForTableBodyRow = (
58
+ table: HTMLTableElement,
59
+ rowNr: number
60
+ ): HTMLButtonElement => {
61
+ return within(getTableBodyRow(table, rowNr)).getByRole("radio");
62
+ };
63
+
64
+ // Ideally the return type should be HTMLInputElement but purpur checkbox is a button
65
+ export const getCheckBoxForTableHeaderRow = (
66
+ table: HTMLTableElement,
67
+ rowNr = 0
68
+ ): HTMLButtonElement => {
69
+ return within(getTableHeadRow(table, rowNr)).getByRole("checkbox");
70
+ };
71
+
72
+ export const getInputFilterForHeader = (table: HTMLTableElement, column: string) => {
73
+ const header = getTableColumnHeaderByText(table, column);
74
+ return within(header).getByRole("textbox");
75
+ };
76
+
77
+ export const filterOnString = async (
78
+ table: HTMLTableElement,
79
+ column: string,
80
+ filterValue: string
81
+ ) => {
82
+ const input = getInputFilterForHeader(table, column);
83
+
84
+ await waitFor(() => {
85
+ fireEvent.change(input, { target: { value: filterValue } });
86
+ });
87
+ };
88
+
89
+ export const getComboBoxFilterForHeader = (table: HTMLTableElement, column: string) => {
90
+ const header = getTableColumnHeaderByText(table, column);
91
+ return within(header).getByRole("combobox");
92
+ };
93
+
94
+ export const filterOnSelect = async (
95
+ table: HTMLTableElement,
96
+ column: string,
97
+ filterValue: string
98
+ ) => {
99
+ const select = getComboBoxFilterForHeader(table, column);
100
+ await userEvent.selectOptions(select, filterValue);
101
+ };
102
+
103
+ export const Selectors = {
104
+ ACTION_BAR: {
105
+ CANCEL_BUTTON: "purpur-table-action-bar-cancel-button",
106
+ PRIMARY_BUTTON: "purpur-table-action-bar-primary-button",
107
+ ROOT: "purpur-table-action-bar",
108
+ SECONDARY_BUTTON: "purpur-table-action-bar-secondary-button",
109
+ SELECTED_TEXT: "purpur-table-action-bar-selected-text",
110
+ TOGGLE_SELECTED: "purpur-table-action-bar-toggle-selected",
111
+ },
112
+ COLUMN_HEADER_CELL_TITLE: "purpur-table-column-header-cell-title",
113
+ EXPORT_DRAWER: {
114
+ BODY_TEXT: "purpur-table-export-drawer-content-description",
115
+ CLOSE_BUTTON: "purpur-table-toolbar-export",
116
+ CONTENT: "purpur-table-export-drawer-content",
117
+ HEADER_ROW: "purpur-drawer-header-row",
118
+ EXPORT_BUTTON: "purpur-table-export-drawer-export-button",
119
+ TITLE: "purpur-drawer-header-title",
120
+ },
121
+ SETTINGS_DRAWER: {
122
+ CONTENT: "purpur-table-settings-drawer-content",
123
+ FOOTER: "purpur-drawer-frame-sticky-footer",
124
+ FOOTER_RESET_SETTINGS_BUTTON: "purpur-table-settings-drawer-reset-button",
125
+ GENERAL_SETTINGS: "purpur-table-settings-drawer-general-settings",
126
+ HEADER_ROW: "purpur-drawer-header-row",
127
+ ROOT: "purpur-table-settings-drawer",
128
+ TITLE: "purpur-drawer-header-title",
129
+ TOGGLE: "purpur-table-settings-drawer-toggle",
130
+ TOGGLE_LABEL: "purpur-table-settings-drawer-toggle-label",
131
+ VISIBLE_COLUMNS: "purpur-table-settings-drawer-visible-columns",
132
+ },
133
+ TOOLBAR: {
134
+ CLEAR_FILTERS_BUTTON: "purpur-table-toolbar-clear-filters-button",
135
+ EXPAND_BUTTON: "purpur-table-toolbar-expand-button",
136
+ EXPORT_BUTTON: "purpur-table-toolbar-export-button",
137
+ ROOT: "purpur-table-toolbar",
138
+ SETTINGS_BUTTON: "purpur-table-toolbar-settings-button",
139
+ TABLE_ROWS_COUNT: "purpur-table-toolbar-table-rows-count",
140
+ },
141
+ EMPTY_TABLE: {
142
+ TITLE: "purpur-table-empty-table-title",
143
+ DESCRIPTION: "purpur-table-empty-table-description",
144
+ },
145
+ PAGINATION: {
146
+ ROOT: "purpur-pagination",
147
+ PAGE_SIZE_SELECT: "purpur-pagination-page-size-selector-select-select",
148
+ },
149
+ SKELETON: "purpur-table-cell-skeleton",
150
+ };
151
+
152
+ export const copy = {
153
+ actionBar: {
154
+ buttons: {
155
+ cancel: "Close action bar",
156
+ primary: "Primary button",
157
+ secondary: "Secondary button",
158
+ toggleSelected: "Show only selected rows",
159
+ },
160
+ selectedRowsCount: {
161
+ of: "of",
162
+ selected: "selected",
163
+ },
164
+ },
165
+ exportDrawer: {
166
+ bodyText: "Choose the format you want to export the table in.",
167
+ closeButtonText: "Close drawer",
168
+ link: "Export as",
169
+ title: "Export table",
170
+ },
171
+ pagination: {
172
+ nextButtonAriaLabel: "Go to next page",
173
+ nextButtonText: "Next",
174
+ outOfLabel: "of",
175
+ pageSelectorListBoxLabel: "Select a page",
176
+ pageSelectorNoOptionsText: "Page does not exist",
177
+ previousButtonAriaLabel: "Go to previous page",
178
+ previousButtonText: "Previous",
179
+ stepNumberPrefix: "Go to page",
180
+ },
181
+ settingsDrawer: {
182
+ buttons: {
183
+ closeDrawer: "Close drawer",
184
+ resetSettings: "Reset settings",
185
+ },
186
+ generalSettings: {
187
+ header: "General settings",
188
+ toggles: {
189
+ lockFirstcolumn: "Lock first column",
190
+ showFilters: "Show Filters",
191
+ stickyHeader: "Sticky header",
192
+ },
193
+ },
194
+ title: "Table settings",
195
+ visibleColumns: {
196
+ header: "Visible columns",
197
+ },
198
+ },
199
+ sortingAriaLabels: {
200
+ asc: "Sort ascending",
201
+ default: "Sort column",
202
+ desc: "Sort descending",
203
+ },
204
+ toolbar: {
205
+ buttons: {
206
+ clearFilters: "Clear filters",
207
+ expand: "Expand",
208
+ export: "Export",
209
+ settings: "Settings",
210
+ },
211
+ ariaLabels: {
212
+ clearFilters: "Clear all filters",
213
+ expand: "Expand table",
214
+ export: "Open export drawer",
215
+ settings: "Open settings drawer",
216
+ },
217
+ rowCount: {
218
+ of: "of",
219
+ rows: "rows",
220
+ showing: "Showing",
221
+ },
222
+ },
223
+ rowSelectionAriaLabels: {
224
+ header: "rowSelectionAriaLabels header",
225
+ row: "rowSelectionAriaLabels row",
226
+ },
227
+ };
228
+
229
+ const getTableColumnHeaderIndex = (columnHeaders: HTMLElement[], text: string) => {
230
+ return columnHeaders.findIndex((columnHeader) => {
231
+ const paragraph = within(columnHeader).queryByTestId(Selectors.COLUMN_HEADER_CELL_TITLE);
232
+ return paragraph?.innerHTML === text;
233
+ });
234
+ };
@@ -0,0 +1,318 @@
1
+ import React from "react";
2
+ import { BadgeVariant } from "@purpurds/badge";
3
+ import { ButtonProps } from "@purpurds/button";
4
+ import { IconDownload } from "@purpurds/icon/download";
5
+ import { IconMoreVertical } from "@purpurds/icon/more-vertical";
6
+ import { IconRemove } from "@purpurds/icon/remove";
7
+
8
+ import { ButtonGroupButtonProp } from "../cell-types/button-group-cell";
9
+
10
+ export type TableDataLarge = {
11
+ id: number;
12
+ name: string;
13
+ link: { href: string; children: string };
14
+ badge: {
15
+ variant: BadgeVariant;
16
+ children: string;
17
+ };
18
+ age: number;
19
+ position: number;
20
+ date: string;
21
+ button: ButtonProps;
22
+ buttonGroup?: ButtonGroupButtonProp[];
23
+ };
24
+
25
+ const buttonGroup: ButtonGroupButtonProp[] = [
26
+ {
27
+ id: "button-1",
28
+ ariaLabel: "ClickMe",
29
+ variant: "primary",
30
+ icon: <IconDownload data-testid="download-icon" />,
31
+ },
32
+ {
33
+ id: "button-2",
34
+ ariaLabel: "ClickMe",
35
+ icon: <IconRemove data-testid="remove-icon" />,
36
+ variant: "primary",
37
+ },
38
+ {
39
+ id: "button-3",
40
+ ariaLabel: "ClickMe",
41
+ icon: <IconMoreVertical data-testid="more-vertical-icon" />,
42
+ variant: "primary",
43
+ },
44
+ ];
45
+
46
+ export const tableDataLarge: TableDataLarge[] = [
47
+ {
48
+ id: 12345,
49
+ name: "Name 1",
50
+ link: { href: "#", children: "Link 2" },
51
+ badge: {
52
+ variant: "information",
53
+ children: "Information",
54
+ },
55
+ age: 40,
56
+ position: 1,
57
+ date: "2025-03-26T10:14:57.343Z",
58
+ button: {
59
+ type: "button",
60
+ children: "ClickMe",
61
+ variant: "primary",
62
+ },
63
+ buttonGroup,
64
+ },
65
+ {
66
+ id: 67890,
67
+ name: "Name 7",
68
+ link: { href: "#", children: "Link 9" },
69
+ badge: {
70
+ variant: "success",
71
+ children: "Success",
72
+ },
73
+ age: 25,
74
+ position: 3,
75
+ date: "2025-03-26T10:14:57.343Z",
76
+ button: {
77
+ type: "button",
78
+ children: "ClickMe",
79
+ variant: "primary",
80
+ },
81
+ buttonGroup,
82
+ },
83
+ {
84
+ id: 12346,
85
+ name: "Name 5",
86
+ link: { href: "#", children: "Link 1" },
87
+ badge: {
88
+ variant: "warning",
89
+ children: "Warning",
90
+ },
91
+ age: 30,
92
+ position: 2,
93
+ date: "2025-03-26T10:14:57.343Z",
94
+ button: {
95
+ type: "button",
96
+ children: "ClickMe",
97
+ variant: "primary",
98
+ },
99
+ buttonGroup,
100
+ },
101
+ {
102
+ id: 98463,
103
+ name: "Name 9",
104
+ link: { href: "#", children: "Link 9" },
105
+ badge: {
106
+ variant: "warning",
107
+ children: "Warning",
108
+ },
109
+ age: 30,
110
+ position: 5,
111
+ date: "2025-03-26T10:14:57.343Z",
112
+ button: {
113
+ type: "button",
114
+ children: "ClickMe",
115
+ variant: "primary",
116
+ },
117
+ buttonGroup,
118
+ },
119
+ {
120
+ id: 56367,
121
+ name: "Name 13",
122
+ link: { href: "#", children: "Link 13" },
123
+ badge: {
124
+ variant: "warning",
125
+ children: "Warning",
126
+ },
127
+ age: 66,
128
+ position: 4,
129
+ date: "2025-03-26T10:14:57.343Z",
130
+ button: {
131
+ type: "button",
132
+ children: "ClickMe",
133
+ variant: "primary",
134
+ },
135
+ buttonGroup,
136
+ },
137
+ {
138
+ id: 98793,
139
+ name: "Name 45",
140
+ link: { href: "#", children: "Link 45" },
141
+ badge: {
142
+ variant: "warning",
143
+ children: "Warning",
144
+ },
145
+ age: 30,
146
+ position: 6,
147
+ date: "2025-03-26T10:14:57.343Z",
148
+ button: {
149
+ type: "button",
150
+ children: "ClickMe",
151
+ variant: "primary",
152
+ },
153
+ buttonGroup,
154
+ },
155
+ {
156
+ id: 38542,
157
+ name: "Name 34",
158
+ link: { href: "#", children: "Link 34" },
159
+ badge: {
160
+ variant: "attention",
161
+ children: "Attention",
162
+ },
163
+ age: 30,
164
+ position: 7,
165
+ date: "2025-03-26T10:14:57.343Z",
166
+ button: {
167
+ type: "button",
168
+ children: "ClickMe",
169
+ variant: "primary",
170
+ },
171
+ },
172
+ {
173
+ id: 8723,
174
+ name: "Test name 1",
175
+ link: { href: "#", children: "Link 100" },
176
+ badge: {
177
+ variant: "warning",
178
+ children: "Warning",
179
+ },
180
+ age: 24,
181
+ position: 10,
182
+ date: "2025-03-26T10:14:57.343Z",
183
+ button: {
184
+ type: "button",
185
+ children: "ClickMe",
186
+ variant: "primary",
187
+ },
188
+ buttonGroup,
189
+ },
190
+ {
191
+ id: 566347,
192
+ name: "Some really long name that I can check truncation on",
193
+ link: { href: "#", children: "Link 99" },
194
+ badge: {
195
+ variant: "warning",
196
+ children: "Warning",
197
+ },
198
+ age: 30,
199
+ position: 9,
200
+ date: "2025-03-26T10:14:57.343Z",
201
+ button: {
202
+ type: "button",
203
+ children: "ClickMe",
204
+ variant: "primary",
205
+ },
206
+ },
207
+ {
208
+ id: 92385,
209
+ name: "Some other name",
210
+ link: { href: "#", children: "Link 453" },
211
+ badge: {
212
+ variant: "special",
213
+ children: "Special",
214
+ },
215
+ age: 75,
216
+ position: 8,
217
+ date: "2025-03-26T10:14:57.343Z",
218
+ button: {
219
+ type: "button",
220
+ children: "ClickMe",
221
+ variant: "primary",
222
+ },
223
+ buttonGroup,
224
+ },
225
+ {
226
+ id: 23414,
227
+ name: "Name 52",
228
+ link: { href: "#", children: "Link 12" },
229
+ badge: {
230
+ variant: "special",
231
+ children: "Special",
232
+ },
233
+ age: 30,
234
+ position: 11,
235
+ date: "2025-03-26T10:14:57.343Z",
236
+ button: {
237
+ type: "button",
238
+ children: "ClickMe",
239
+ variant: "primary",
240
+ },
241
+ },
242
+ ];
243
+
244
+ export type TableDataSmall = {
245
+ id: number;
246
+ name: string;
247
+ link: { href: string; children: string };
248
+ age: number;
249
+ };
250
+
251
+ export const tableDataSmall: TableDataSmall[] = [
252
+ {
253
+ id: 12345,
254
+ name: "Name 1",
255
+ link: { href: "#", children: "Link 2" },
256
+ age: 40,
257
+ },
258
+ {
259
+ id: 67890,
260
+ name: "Name 7",
261
+ link: { href: "#", children: "Link 9" },
262
+ age: 25,
263
+ },
264
+ {
265
+ id: 12346,
266
+ name: "Name 5",
267
+ link: { href: "#", children: "Link 1" },
268
+ age: 30,
269
+ },
270
+ {
271
+ id: 98463,
272
+ name: "Name 9",
273
+ link: { href: "#", children: "Link 9" },
274
+ age: 30,
275
+ },
276
+ {
277
+ id: 56367,
278
+ name: "Name 13",
279
+ link: { href: "#", children: "Link 13" },
280
+ age: 66,
281
+ },
282
+ {
283
+ id: 98793,
284
+ name: "Name 45",
285
+ link: { href: "#", children: "Link 45" },
286
+ age: 30,
287
+ },
288
+ {
289
+ id: 38542,
290
+ name: "Name 34",
291
+ link: { href: "#", children: "Link 34" },
292
+ age: 30,
293
+ },
294
+ {
295
+ id: 8723,
296
+ name: "Test name 1",
297
+ link: { href: "#", children: "Link 100" },
298
+ age: 24,
299
+ },
300
+ {
301
+ id: 566347,
302
+ name: "Some really long name that I can check truncation on",
303
+ link: { href: "#", children: "Link 99" },
304
+ age: 30,
305
+ },
306
+ {
307
+ id: 92385,
308
+ name: "Some other name",
309
+ link: { href: "#", children: "Link 453" },
310
+ age: 75,
311
+ },
312
+ {
313
+ id: 23414,
314
+ name: "Name 52",
315
+ link: { href: "#", children: "Link 12" },
316
+ age: 30,
317
+ },
318
+ ];