@makolabs/ripple 0.0.1-dev.3 → 0.0.1-dev.31

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 (116) hide show
  1. package/README.md +571 -98
  2. package/dist/button/Button.svelte +48 -0
  3. package/dist/button/Button.svelte.d.ts +4 -0
  4. package/dist/button/button.d.ts +113 -0
  5. package/dist/button/button.js +168 -0
  6. package/dist/charts/Chart.svelte +543 -0
  7. package/dist/charts/Chart.svelte.d.ts +4 -0
  8. package/dist/drawer/Drawer.svelte +224 -0
  9. package/dist/drawer/Drawer.svelte.d.ts +4 -0
  10. package/dist/drawer/drawer.d.ts +160 -0
  11. package/dist/drawer/drawer.js +80 -0
  12. package/dist/elements/alert/Alert.svelte +57 -0
  13. package/dist/elements/alert/Alert.svelte.d.ts +4 -0
  14. package/dist/elements/badge/Badge.svelte +43 -0
  15. package/dist/elements/badge/Badge.svelte.d.ts +4 -0
  16. package/dist/elements/badge/badge.d.ts +181 -0
  17. package/dist/elements/badge/badge.js +65 -0
  18. package/dist/elements/dropdown/Dropdown.svelte +267 -0
  19. package/dist/elements/dropdown/Dropdown.svelte.d.ts +4 -0
  20. package/dist/elements/dropdown/Select.svelte +314 -0
  21. package/dist/elements/dropdown/Select.svelte.d.ts +4 -0
  22. package/dist/elements/dropdown/dropdown.d.ts +251 -0
  23. package/dist/elements/dropdown/dropdown.js +95 -0
  24. package/dist/elements/dropdown/select.d.ts +200 -0
  25. package/dist/elements/dropdown/select.js +82 -0
  26. package/dist/elements/file-upload/FileUpload.svelte +130 -0
  27. package/dist/elements/file-upload/FileUpload.svelte.d.ts +4 -0
  28. package/dist/elements/file-upload/FilesPreview.svelte +93 -0
  29. package/dist/elements/file-upload/FilesPreview.svelte.d.ts +4 -0
  30. package/dist/elements/progress/Progress.svelte +145 -0
  31. package/dist/elements/progress/Progress.svelte.d.ts +4 -0
  32. package/dist/elements/timeline/Timeline.svelte +92 -0
  33. package/dist/elements/timeline/Timeline.svelte.d.ts +7 -0
  34. package/dist/forms/Checkbox.svelte +54 -0
  35. package/dist/forms/Checkbox.svelte.d.ts +4 -0
  36. package/dist/forms/DateRange.svelte +493 -0
  37. package/dist/forms/DateRange.svelte.d.ts +4 -0
  38. package/dist/forms/Form.svelte +39 -0
  39. package/dist/forms/Form.svelte.d.ts +4 -0
  40. package/dist/forms/Input.svelte +86 -0
  41. package/dist/forms/Input.svelte.d.ts +4 -0
  42. package/dist/forms/NumberInput.svelte +159 -0
  43. package/dist/forms/NumberInput.svelte.d.ts +4 -0
  44. package/dist/forms/RadioInputs.svelte +64 -0
  45. package/dist/forms/RadioInputs.svelte.d.ts +4 -0
  46. package/dist/forms/RadioPill.svelte +66 -0
  47. package/dist/forms/RadioPill.svelte.d.ts +4 -0
  48. package/dist/forms/Slider.svelte +342 -0
  49. package/dist/forms/Slider.svelte.d.ts +4 -0
  50. package/dist/forms/Tags.svelte +181 -0
  51. package/dist/forms/Tags.svelte.d.ts +4 -0
  52. package/dist/forms/Toggle.svelte +132 -0
  53. package/dist/forms/Toggle.svelte.d.ts +4 -0
  54. package/dist/forms/slider.d.ts +143 -0
  55. package/dist/forms/slider.js +62 -0
  56. package/dist/header/Breadcrumbs.svelte +73 -0
  57. package/dist/header/Breadcrumbs.svelte.d.ts +4 -0
  58. package/dist/header/PageHeader.svelte +30 -0
  59. package/dist/header/PageHeader.svelte.d.ts +4 -0
  60. package/dist/header/breadcrumbs.d.ts +226 -0
  61. package/dist/header/breadcrumbs.js +87 -0
  62. package/dist/helper/cls.d.ts +1 -0
  63. package/dist/helper/cls.js +4 -0
  64. package/dist/helper/date.d.ts +7 -0
  65. package/dist/helper/date.js +15 -0
  66. package/dist/helper/nav.svelte.d.ts +6 -0
  67. package/dist/helper/nav.svelte.js +23 -0
  68. package/dist/index.d.ts +731 -1
  69. package/dist/index.js +70 -1
  70. package/dist/layout/card/Card.svelte +41 -0
  71. package/dist/layout/card/Card.svelte.d.ts +4 -0
  72. package/dist/layout/card/StatsCard.svelte +266 -0
  73. package/dist/layout/card/StatsCard.svelte.d.ts +4 -0
  74. package/dist/layout/card/card.d.ts +128 -0
  75. package/dist/layout/card/card.js +51 -0
  76. package/dist/layout/card/stats-card.d.ts +191 -0
  77. package/dist/layout/card/stats-card.js +73 -0
  78. package/dist/layout/navbar/Navbar.svelte +206 -0
  79. package/dist/layout/navbar/Navbar.svelte.d.ts +4 -0
  80. package/dist/layout/navbar/navbar.d.ts +205 -0
  81. package/dist/layout/navbar/navbar.js +98 -0
  82. package/dist/layout/sidebar/NavGroup.svelte +97 -0
  83. package/dist/layout/sidebar/NavGroup.svelte.d.ts +4 -0
  84. package/dist/layout/sidebar/NavItem.svelte +29 -0
  85. package/dist/layout/sidebar/NavItem.svelte.d.ts +4 -0
  86. package/dist/layout/sidebar/Sidebar.svelte +139 -0
  87. package/dist/layout/sidebar/Sidebar.svelte.d.ts +4 -0
  88. package/dist/layout/table/Cells.svelte +111 -0
  89. package/dist/layout/table/Cells.svelte.d.ts +27 -0
  90. package/dist/layout/table/Table.svelte +413 -0
  91. package/dist/layout/table/Table.svelte.d.ts +4 -0
  92. package/dist/layout/table/table.d.ts +284 -0
  93. package/dist/layout/table/table.js +141 -0
  94. package/dist/layout/tabs/Tab.svelte +57 -0
  95. package/dist/layout/tabs/Tab.svelte.d.ts +4 -0
  96. package/dist/layout/tabs/TabContent.svelte +31 -0
  97. package/dist/layout/tabs/TabContent.svelte.d.ts +4 -0
  98. package/dist/layout/tabs/TabGroup.svelte +57 -0
  99. package/dist/layout/tabs/TabGroup.svelte.d.ts +4 -0
  100. package/dist/layout/tabs/tabs.d.ts +155 -0
  101. package/dist/layout/tabs/tabs.js +156 -0
  102. package/dist/modal/Modal.svelte +207 -0
  103. package/dist/modal/Modal.svelte.d.ts +4 -0
  104. package/dist/modal/modal.d.ts +211 -0
  105. package/dist/modal/modal.js +81 -0
  106. package/dist/sonner/sonner.svelte +13 -0
  107. package/dist/sonner/sonner.svelte.d.ts +4 -0
  108. package/dist/types/variants.d.ts +1 -0
  109. package/dist/types/variants.js +1 -0
  110. package/dist/variants.d.ts +30 -0
  111. package/dist/variants.js +36 -0
  112. package/package.json +104 -102
  113. package/dist/layout/Card.svelte +0 -179
  114. package/dist/layout/Card.svelte.d.ts +0 -208
  115. package/dist/layout/index.d.ts +0 -1
  116. package/dist/layout/index.js +0 -1
@@ -0,0 +1,413 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../helper/cls.js';
3
+ import { table } from './table.js';
4
+ import type { TableProps, SortDirection, SortState } from '../../index.js';
5
+ let {
6
+ data = [],
7
+ columns = [],
8
+ color = 'default',
9
+ size = 'base',
10
+ bordered = true,
11
+ striped = false,
12
+ pageSize = 10,
13
+ selectable = false,
14
+ selected = $bindable([]),
15
+ onrowclick = () => {},
16
+ onsort = () => {},
17
+ onselect = () => {},
18
+ class: classname = '',
19
+ wrapperclass: wrapperClass = '',
20
+ tableclass: tableClass = '',
21
+ theadclass: theadClass = '',
22
+ tbodyclass: tbodyClass = '',
23
+ trclass: trClass = '',
24
+ thclass: thClass = '',
25
+ tdclass: tdClass = '',
26
+ footerclass: footerClass = '',
27
+ rowclass = () => '',
28
+ loading = false
29
+ }: TableProps<any> = $props();
30
+
31
+ let sortColumn = $state('');
32
+ let sortDirection = $state<SortDirection>(null);
33
+ let currentPage = $state(1);
34
+
35
+ // Pagination is automatically determined by pageSize
36
+ const pagination = $derived(pageSize > 0 && data.length > pageSize);
37
+
38
+ const {
39
+ base,
40
+ wrapper,
41
+ table: tableBaseClass,
42
+ thead,
43
+ tbody,
44
+ tr,
45
+ th,
46
+ td,
47
+ footer,
48
+ pagination: paginationClass,
49
+ emptyState,
50
+ sortButton,
51
+ sortIcon
52
+ } = $derived(
53
+ table({
54
+ size,
55
+ color,
56
+ bordered,
57
+ striped
58
+ })
59
+ );
60
+
61
+ const baseClasses = $derived(cn(base(), classname));
62
+ const wrapperClasses = $derived(cn(wrapper(), wrapperClass));
63
+ const tableClasses = $derived(cn(tableBaseClass(), tableClass));
64
+ const theadClasses = $derived(cn(thead(), theadClass));
65
+ const tbodyClasses = $derived(cn(tbody(), tbodyClass));
66
+ const trClasses = $derived(cn(tr(), trClass));
67
+ const thClasses = $derived(cn(th(), thClass));
68
+ const tdClasses = $derived(cn(td(), tdClass));
69
+ const footerClasses = $derived(cn(footer(), footerClass));
70
+ const emptyStateClasses = $derived(emptyState());
71
+
72
+ // Handle pagination
73
+ const totalPages = $derived(Math.ceil(data.length / pageSize));
74
+ const paginatedData = $derived(
75
+ pagination ? data.slice((currentPage - 1) * pageSize, currentPage * pageSize) : data
76
+ );
77
+
78
+ // Handle sorting
79
+ function toggleSort(column: string) {
80
+ const columnDef = columns.find((col) => (col.sortKey || col.key) === column);
81
+ if (!columnDef?.sortable) return;
82
+
83
+ if (sortColumn === column) {
84
+ // Cycle through: asc -> desc -> null
85
+ if (sortDirection === 'asc') {
86
+ sortDirection = 'desc';
87
+ } else if (sortDirection === 'desc') {
88
+ sortDirection = null;
89
+ sortColumn = '';
90
+ } else {
91
+ sortDirection = 'asc';
92
+ }
93
+ } else {
94
+ sortColumn = column;
95
+ sortDirection = 'asc';
96
+ }
97
+
98
+ const newSortState: SortState = { column: sortColumn, direction: sortDirection };
99
+ onsort(newSortState);
100
+ }
101
+
102
+ function toggleRowSelection(row: any) {
103
+ if (!selectable) return;
104
+
105
+ const index = selected.findIndex((r) => r === row);
106
+ if (index === -1) {
107
+ selected = [...selected, row];
108
+ } else {
109
+ selected = selected.filter((r) => r !== row);
110
+ }
111
+
112
+ onselect(selected);
113
+ }
114
+
115
+ function isRowSelected(row: any) {
116
+ return selected.includes(row);
117
+ }
118
+
119
+ function handleRowClick(row: any, index: number) {
120
+ onrowclick(row, index);
121
+ }
122
+
123
+ function nextPage() {
124
+ if (currentPage < totalPages) {
125
+ currentPage++;
126
+ }
127
+ }
128
+
129
+ function prevPage() {
130
+ if (currentPage > 1) {
131
+ currentPage--;
132
+ }
133
+ }
134
+
135
+ function goToPage(page: number) {
136
+ if (page >= 1 && page <= totalPages) {
137
+ currentPage = page;
138
+ }
139
+ }
140
+ </script>
141
+
142
+ <div class={baseClasses}>
143
+ <div class={wrapperClasses}>
144
+ <table class={tableClasses}>
145
+ <thead class={theadClasses}>
146
+ <tr>
147
+ {#if selectable}
148
+ <th class={thClasses}>
149
+ <input
150
+ type="checkbox"
151
+ onchange={() => {
152
+ if (selected.length === data.length) {
153
+ selected = [];
154
+ } else {
155
+ selected = [...data];
156
+ }
157
+ onselect(selected);
158
+ }}
159
+ checked={selected.length === data.length && data.length > 0}
160
+ aria-label="Select all rows"
161
+ />
162
+ </th>
163
+ {/if}
164
+
165
+ {#each columns as column (column.key)}
166
+ <th
167
+ class={cn(
168
+ thClasses,
169
+ column.align === 'center' && 'text-center',
170
+ column.align === 'right' && 'text-right',
171
+ column.class
172
+ )}
173
+ style={column.width ? `width: ${column.width}` : undefined}
174
+ >
175
+ {#if column.sortable}
176
+ <button
177
+ type="button"
178
+ class={sortButton()}
179
+ onclick={() => toggleSort(column.sortKey || column.key)}
180
+ aria-label={`Sort by ${column.header}`}
181
+ >
182
+ {column.header}
183
+ <span class={sortIcon()}>
184
+ {#if sortColumn === (column.sortKey || column.key)}
185
+ {#if sortDirection === 'asc'}
186
+ <svg
187
+ xmlns="http://www.w3.org/2000/svg"
188
+ viewBox="0 0 20 20"
189
+ fill="currentColor"
190
+ class="h-4 w-4"
191
+ >
192
+ <path
193
+ d="M10 15a.75.75 0 01-.75-.75V7.612L6.058 10.8a.75.75 0 01-1.061-1.061l3.75-3.75a.75.75 0 011.06 0l3.75 3.75a.75.75 0 11-1.06 1.061L10.75 7.612v6.638A.75.75 0 0110 15z"
194
+ />
195
+ </svg>
196
+ {:else if sortDirection === 'desc'}
197
+ <svg
198
+ xmlns="http://www.w3.org/2000/svg"
199
+ viewBox="0 0 20 20"
200
+ fill="currentColor"
201
+ class="h-4 w-4"
202
+ >
203
+ <path
204
+ d="M10 5a.75.75 0 01.75.75v6.638l3.192-3.187a.75.75 0 111.06 1.061l-3.75 3.75a.75.75 0 01-1.06 0l-3.75-3.75a.75.75 0 111.06-1.061L9.25 12.389V5.75A.75.75 0 0110 5z"
205
+ />
206
+ </svg>
207
+ {/if}
208
+ {:else}
209
+ <svg
210
+ xmlns="http://www.w3.org/2000/svg"
211
+ fill="none"
212
+ viewBox="0 0 24 24"
213
+ stroke-width="1.5"
214
+ stroke="currentColor"
215
+ class="h-4 w-4 opacity-40"
216
+ >
217
+ <path
218
+ stroke-linecap="round"
219
+ stroke-linejoin="round"
220
+ d="M8.25 15L12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"
221
+ />
222
+ </svg>
223
+ {/if}
224
+ </span>
225
+ </button>
226
+ {:else}
227
+ {column.header}
228
+ {/if}
229
+ </th>
230
+ {/each}
231
+ </tr>
232
+ </thead>
233
+
234
+ <tbody class={tbodyClasses}>
235
+ {#if loading}
236
+ <tr>
237
+ <td
238
+ colspan={selectable ? columns.length + 1 : columns.length}
239
+ class={cn(tdClasses, 'py-8 text-center')}
240
+ >
241
+ <div class="flex justify-center">
242
+ <svg
243
+ class="text-default-500 h-6 w-6 animate-spin"
244
+ xmlns="http://www.w3.org/2000/svg"
245
+ fill="none"
246
+ viewBox="0 0 24 24"
247
+ >
248
+ <circle
249
+ class="opacity-25"
250
+ cx="12"
251
+ cy="12"
252
+ r="10"
253
+ stroke="currentColor"
254
+ stroke-width="4"
255
+ ></circle>
256
+ <path
257
+ class="opacity-75"
258
+ fill="currentColor"
259
+ d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
260
+ ></path>
261
+ </svg>
262
+ </div>
263
+ </td>
264
+ </tr>
265
+ {:else if paginatedData.length === 0}
266
+ <tr>
267
+ <td
268
+ colspan={selectable ? columns.length + 1 : columns.length}
269
+ class={emptyStateClasses}
270
+ >
271
+ No data available
272
+ </td>
273
+ </tr>
274
+ {:else}
275
+ {#each paginatedData as row, rowIndex (rowIndex)}
276
+ <tr
277
+ class={cn(
278
+ trClasses,
279
+ rowclass(row, rowIndex),
280
+ selectable && isRowSelected(row) && 'bg-primary-100'
281
+ )}
282
+ onclick={() => handleRowClick(row, rowIndex)}
283
+ aria-selected={selectable && isRowSelected(row)}
284
+ >
285
+ {#if selectable}
286
+ <td class={tdClasses}>
287
+ <input
288
+ type="checkbox"
289
+ checked={isRowSelected(row)}
290
+ onclick={(e) => {
291
+ e.stopPropagation(); // Prevent row click
292
+ toggleRowSelection(row);
293
+ }}
294
+ aria-label={`Select row ${rowIndex + 1}`}
295
+ />
296
+ </td>
297
+ {/if}
298
+
299
+ {#each columns as column (column.key)}
300
+ <td
301
+ class={cn(
302
+ tdClasses,
303
+ column.align === 'center' && 'text-center',
304
+ column.align === 'right' && 'text-right',
305
+ column.class
306
+ )}
307
+ >
308
+ {#if column.cell}
309
+ {@render column.cell(row, column.key, rowIndex)}
310
+ {:else if row[column.key] === undefined || row[column.key] === null}
311
+ <span class="text-default-300">—</span>
312
+ {:else}
313
+ {row[column.key]}
314
+ {/if}
315
+ </td>
316
+ {/each}
317
+ </tr>
318
+ {/each}
319
+ {/if}
320
+ </tbody>
321
+ </table>
322
+ </div>
323
+
324
+ {#if pagination && totalPages > 1}
325
+ <div class={footerClasses}>
326
+ <div class={paginationClass}>
327
+ <div class="flex items-center gap-2">
328
+ <span class="text-default-500 text-sm">
329
+ Showing {Math.min((currentPage - 1) * pageSize + 1, data.length)}
330
+ to {Math.min(currentPage * pageSize, data.length)} of {data.length} entries
331
+ </span>
332
+ </div>
333
+
334
+ <div class="flex items-center gap-1">
335
+ <button
336
+ type="button"
337
+ class={cn(
338
+ 'relative inline-flex items-center rounded-md px-2 py-1 text-sm font-medium',
339
+ currentPage === 1
340
+ ? 'text-default-300 cursor-not-allowed'
341
+ : 'text-default-700 hover:bg-default-100'
342
+ )}
343
+ onclick={prevPage}
344
+ disabled={currentPage === 1}
345
+ aria-label="Previous page"
346
+ >
347
+ <svg
348
+ xmlns="http://www.w3.org/2000/svg"
349
+ viewBox="0 0 20 20"
350
+ fill="currentColor"
351
+ class="h-5 w-5"
352
+ >
353
+ <path
354
+ d="M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z"
355
+ />
356
+ </svg>
357
+ </button>
358
+
359
+ <!--eslint-disable-next-line @typescript-eslint/no-unused-vars-->
360
+ {#each Array(Math.min(5, totalPages)) as _, i (i)}
361
+ {@const pageNum =
362
+ currentPage <= 3
363
+ ? i + 1
364
+ : currentPage >= totalPages - 2
365
+ ? totalPages - 4 + i
366
+ : currentPage - 2 + i}
367
+
368
+ {#if pageNum > 0 && pageNum <= totalPages}
369
+ <button
370
+ type="button"
371
+ class={cn(
372
+ 'relative inline-flex items-center rounded-md px-3 py-1 text-sm font-medium',
373
+ currentPage === pageNum
374
+ ? 'bg-primary-100 text-primary-700'
375
+ : 'text-default-700 hover:bg-default-100'
376
+ )}
377
+ onclick={() => goToPage(pageNum)}
378
+ aria-label={`Page ${pageNum}`}
379
+ aria-current={currentPage === pageNum ? 'page' : undefined}
380
+ >
381
+ {pageNum}
382
+ </button>
383
+ {/if}
384
+ {/each}
385
+
386
+ <button
387
+ type="button"
388
+ class={cn(
389
+ 'relative inline-flex items-center rounded-md px-2 py-1 text-sm font-medium',
390
+ currentPage === totalPages
391
+ ? 'text-default-300 cursor-not-allowed'
392
+ : 'text-default-700 hover:bg-default-100'
393
+ )}
394
+ onclick={nextPage}
395
+ disabled={currentPage === totalPages}
396
+ aria-label="Next page"
397
+ >
398
+ <svg
399
+ xmlns="http://www.w3.org/2000/svg"
400
+ viewBox="0 0 20 20"
401
+ fill="currentColor"
402
+ class="h-5 w-5"
403
+ >
404
+ <path
405
+ d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z"
406
+ />
407
+ </svg>
408
+ </button>
409
+ </div>
410
+ </div>
411
+ </div>
412
+ {/if}
413
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TableProps } from '../../index.js';
2
+ declare const Table: import("svelte").Component<TableProps<any>, {}, "selected">;
3
+ type Table = ReturnType<typeof Table>;
4
+ export default Table;
@@ -0,0 +1,284 @@
1
+ import type { ClassValue } from 'tailwind-variants';
2
+ import type { VariantColors, VariantSizes } from '../../index.js';
3
+ export declare const table: import("tailwind-variants").TVReturnType<{
4
+ size: {
5
+ xs: {
6
+ th: string;
7
+ td: string;
8
+ };
9
+ sm: {
10
+ th: string;
11
+ td: string;
12
+ };
13
+ base: {
14
+ th: string;
15
+ td: string;
16
+ };
17
+ lg: {
18
+ th: string;
19
+ td: string;
20
+ };
21
+ xl: {
22
+ th: string;
23
+ td: string;
24
+ };
25
+ '2xl': {
26
+ th: string;
27
+ td: string;
28
+ };
29
+ };
30
+ color: {
31
+ default: {
32
+ th: string;
33
+ };
34
+ primary: {
35
+ th: string;
36
+ tr: string;
37
+ };
38
+ secondary: {
39
+ th: string;
40
+ tr: string;
41
+ };
42
+ info: {
43
+ th: string;
44
+ tr: string;
45
+ };
46
+ success: {
47
+ th: string;
48
+ tr: string;
49
+ };
50
+ warning: {
51
+ th: string;
52
+ tr: string;
53
+ };
54
+ danger: {
55
+ th: string;
56
+ tr: string;
57
+ };
58
+ };
59
+ bordered: {
60
+ true: {
61
+ table: string;
62
+ th: string;
63
+ td: string;
64
+ };
65
+ false: {
66
+ table: string;
67
+ };
68
+ };
69
+ striped: {
70
+ true: {
71
+ tr: string;
72
+ };
73
+ };
74
+ }, {
75
+ base: string;
76
+ wrapper: string;
77
+ table: string;
78
+ thead: string;
79
+ tbody: string;
80
+ tr: string;
81
+ th: string;
82
+ td: string;
83
+ footer: string;
84
+ pagination: string;
85
+ emptyState: string;
86
+ sortButton: string;
87
+ sortIcon: string;
88
+ }, undefined, {
89
+ size: {
90
+ xs: {
91
+ th: string;
92
+ td: string;
93
+ };
94
+ sm: {
95
+ th: string;
96
+ td: string;
97
+ };
98
+ base: {
99
+ th: string;
100
+ td: string;
101
+ };
102
+ lg: {
103
+ th: string;
104
+ td: string;
105
+ };
106
+ xl: {
107
+ th: string;
108
+ td: string;
109
+ };
110
+ '2xl': {
111
+ th: string;
112
+ td: string;
113
+ };
114
+ };
115
+ color: {
116
+ default: {
117
+ th: string;
118
+ };
119
+ primary: {
120
+ th: string;
121
+ tr: string;
122
+ };
123
+ secondary: {
124
+ th: string;
125
+ tr: string;
126
+ };
127
+ info: {
128
+ th: string;
129
+ tr: string;
130
+ };
131
+ success: {
132
+ th: string;
133
+ tr: string;
134
+ };
135
+ warning: {
136
+ th: string;
137
+ tr: string;
138
+ };
139
+ danger: {
140
+ th: string;
141
+ tr: string;
142
+ };
143
+ };
144
+ bordered: {
145
+ true: {
146
+ table: string;
147
+ th: string;
148
+ td: string;
149
+ };
150
+ false: {
151
+ table: string;
152
+ };
153
+ };
154
+ striped: {
155
+ true: {
156
+ tr: string;
157
+ };
158
+ };
159
+ }, {
160
+ base: string;
161
+ wrapper: string;
162
+ table: string;
163
+ thead: string;
164
+ tbody: string;
165
+ tr: string;
166
+ th: string;
167
+ td: string;
168
+ footer: string;
169
+ pagination: string;
170
+ emptyState: string;
171
+ sortButton: string;
172
+ sortIcon: string;
173
+ }, import("tailwind-variants").TVReturnType<{
174
+ size: {
175
+ xs: {
176
+ th: string;
177
+ td: string;
178
+ };
179
+ sm: {
180
+ th: string;
181
+ td: string;
182
+ };
183
+ base: {
184
+ th: string;
185
+ td: string;
186
+ };
187
+ lg: {
188
+ th: string;
189
+ td: string;
190
+ };
191
+ xl: {
192
+ th: string;
193
+ td: string;
194
+ };
195
+ '2xl': {
196
+ th: string;
197
+ td: string;
198
+ };
199
+ };
200
+ color: {
201
+ default: {
202
+ th: string;
203
+ };
204
+ primary: {
205
+ th: string;
206
+ tr: string;
207
+ };
208
+ secondary: {
209
+ th: string;
210
+ tr: string;
211
+ };
212
+ info: {
213
+ th: string;
214
+ tr: string;
215
+ };
216
+ success: {
217
+ th: string;
218
+ tr: string;
219
+ };
220
+ warning: {
221
+ th: string;
222
+ tr: string;
223
+ };
224
+ danger: {
225
+ th: string;
226
+ tr: string;
227
+ };
228
+ };
229
+ bordered: {
230
+ true: {
231
+ table: string;
232
+ th: string;
233
+ td: string;
234
+ };
235
+ false: {
236
+ table: string;
237
+ };
238
+ };
239
+ striped: {
240
+ true: {
241
+ tr: string;
242
+ };
243
+ };
244
+ }, {
245
+ base: string;
246
+ wrapper: string;
247
+ table: string;
248
+ thead: string;
249
+ tbody: string;
250
+ tr: string;
251
+ th: string;
252
+ td: string;
253
+ footer: string;
254
+ pagination: string;
255
+ emptyState: string;
256
+ sortButton: string;
257
+ sortIcon: string;
258
+ }, undefined, unknown, unknown, undefined>>;
259
+ export type TableProps<T extends DataRow = any> = {
260
+ data: T[];
261
+ columns: TableColumn<T>[];
262
+ color?: VariantColors;
263
+ size?: VariantSizes;
264
+ bordered?: boolean;
265
+ striped?: boolean;
266
+ emptyStateText?: string;
267
+ pageSize?: number;
268
+ selectable?: boolean;
269
+ selected?: T[];
270
+ class?: ClassValue;
271
+ wrapperclass?: ClassValue;
272
+ tableclass?: ClassValue;
273
+ theadclass?: ClassValue;
274
+ tbodyclass?: ClassValue;
275
+ trclass?: ClassValue;
276
+ thclass?: ClassValue;
277
+ tdclass?: ClassValue;
278
+ footerclass?: ClassValue;
279
+ onrowclick?: (row: T, index: number) => void;
280
+ onsort?: (sortState: SortState) => void;
281
+ onselect?: (selected: T[]) => void;
282
+ rowclass?: (row: T, index: number) => ClassValue;
283
+ loading?: boolean;
284
+ };