@urbicon-ui/table 6.1.4

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 (154) hide show
  1. package/README.md +153 -0
  2. package/dist/cells/ActionButtons.svelte +224 -0
  3. package/dist/cells/ActionButtons.svelte.d.ts +74 -0
  4. package/dist/cells/CopyButton.svelte +89 -0
  5. package/dist/cells/CopyButton.svelte.d.ts +33 -0
  6. package/dist/cells/CustomCell.svelte +136 -0
  7. package/dist/cells/CustomCell.svelte.d.ts +44 -0
  8. package/dist/cells/DateCell.svelte +194 -0
  9. package/dist/cells/DateCell.svelte.d.ts +39 -0
  10. package/dist/cells/LinkCell.svelte +240 -0
  11. package/dist/cells/LinkCell.svelte.d.ts +42 -0
  12. package/dist/cells/NumberCell.svelte +225 -0
  13. package/dist/cells/NumberCell.svelte.d.ts +47 -0
  14. package/dist/cells/StatusBadge.svelte +121 -0
  15. package/dist/cells/StatusBadge.svelte.d.ts +44 -0
  16. package/dist/cells/UserAvatar.svelte +71 -0
  17. package/dist/cells/UserAvatar.svelte.d.ts +37 -0
  18. package/dist/cells/index.d.ts +8 -0
  19. package/dist/cells/index.js +9 -0
  20. package/dist/core/EmptyState.svelte +161 -0
  21. package/dist/core/EmptyState.svelte.d.ts +16 -0
  22. package/dist/core/ErrorState.svelte +158 -0
  23. package/dist/core/ErrorState.svelte.d.ts +15 -0
  24. package/dist/core/GroupedRow.svelte +239 -0
  25. package/dist/core/GroupedRow.svelte.d.ts +18 -0
  26. package/dist/core/LoadingState.svelte +75 -0
  27. package/dist/core/LoadingState.svelte.d.ts +14 -0
  28. package/dist/core/MobileCard.svelte +151 -0
  29. package/dist/core/MobileCard.svelte.d.ts +15 -0
  30. package/dist/core/TableCell.svelte +105 -0
  31. package/dist/core/TableCell.svelte.d.ts +14 -0
  32. package/dist/core/TableDesktop.svelte +480 -0
  33. package/dist/core/TableDesktop.svelte.d.ts +26 -0
  34. package/dist/core/TableHead.svelte +314 -0
  35. package/dist/core/TableHead.svelte.d.ts +7 -0
  36. package/dist/core/TableMobile.svelte +112 -0
  37. package/dist/core/TableMobile.svelte.d.ts +13 -0
  38. package/dist/core/TableProvider.svelte +271 -0
  39. package/dist/core/TableProvider.svelte.d.ts +40 -0
  40. package/dist/core/TableRow.svelte +171 -0
  41. package/dist/core/TableRow.svelte.d.ts +16 -0
  42. package/dist/core/index.d.ts +17 -0
  43. package/dist/core/index.js +14 -0
  44. package/dist/core/sticky-context.svelte.d.ts +48 -0
  45. package/dist/core/sticky-context.svelte.js +88 -0
  46. package/dist/core/table/Table.svelte +304 -0
  47. package/dist/core/table/Table.svelte.d.ts +26 -0
  48. package/dist/core/table/index.d.ts +448 -0
  49. package/dist/core/table/index.js +1 -0
  50. package/dist/core/table-style-context.d.ts +66 -0
  51. package/dist/core/table-style-context.js +26 -0
  52. package/dist/factories/ColumnValidation.d.ts +49 -0
  53. package/dist/factories/ColumnValidation.js +188 -0
  54. package/dist/factories/TableColumns.d.ts +97 -0
  55. package/dist/factories/TableColumns.js +262 -0
  56. package/dist/factories/TypedColumnBuilder.d.ts +41 -0
  57. package/dist/factories/TypedColumnBuilder.js +72 -0
  58. package/dist/factories/index.d.ts +12 -0
  59. package/dist/factories/index.js +13 -0
  60. package/dist/features/HeaderMenu.svelte +236 -0
  61. package/dist/features/HeaderMenu.svelte.d.ts +8 -0
  62. package/dist/features/LiveUpdateBanner.svelte +66 -0
  63. package/dist/features/LiveUpdateBanner.svelte.d.ts +6 -0
  64. package/dist/features/SearchHighlight.svelte +21 -0
  65. package/dist/features/SearchHighlight.svelte.d.ts +8 -0
  66. package/dist/features/SmartFilterBar/ChipsField.svelte +104 -0
  67. package/dist/features/SmartFilterBar/ChipsField.svelte.d.ts +5 -0
  68. package/dist/features/SmartFilterBar/ColumnVisibilityMenu.svelte +84 -0
  69. package/dist/features/SmartFilterBar/ColumnVisibilityMenu.svelte.d.ts +3 -0
  70. package/dist/features/SmartFilterBar/FilterMenu.svelte +367 -0
  71. package/dist/features/SmartFilterBar/FilterMenu.svelte.d.ts +3 -0
  72. package/dist/features/SmartFilterBar/GroupingMenu.svelte +82 -0
  73. package/dist/features/SmartFilterBar/GroupingMenu.svelte.d.ts +3 -0
  74. package/dist/features/SmartFilterBar/SmartFilterBar.svelte +109 -0
  75. package/dist/features/SmartFilterBar/SmartFilterBar.svelte.d.ts +11 -0
  76. package/dist/features/SmartFilterBar/SummaryMenu.svelte +118 -0
  77. package/dist/features/SmartFilterBar/SummaryMenu.svelte.d.ts +3 -0
  78. package/dist/features/SummaryRow.svelte +97 -0
  79. package/dist/features/SummaryRow.svelte.d.ts +8 -0
  80. package/dist/features/index.d.ts +4 -0
  81. package/dist/features/index.js +4 -0
  82. package/dist/i18n/index.d.ts +366 -0
  83. package/dist/i18n/index.js +21 -0
  84. package/dist/index.d.ts +28 -0
  85. package/dist/index.js +41 -0
  86. package/dist/stores/TableStore.svelte.d.ts +192 -0
  87. package/dist/stores/TableStore.svelte.js +362 -0
  88. package/dist/stores/concerns/index.d.ts +15 -0
  89. package/dist/stores/concerns/index.js +14 -0
  90. package/dist/stores/concerns/types.d.ts +31 -0
  91. package/dist/stores/concerns/types.js +1 -0
  92. package/dist/stores/concerns/useColumnOrder.svelte.d.ts +16 -0
  93. package/dist/stores/concerns/useColumnOrder.svelte.js +81 -0
  94. package/dist/stores/concerns/useColumnVisibility.svelte.d.ts +16 -0
  95. package/dist/stores/concerns/useColumnVisibility.svelte.js +58 -0
  96. package/dist/stores/concerns/useExpansion.svelte.d.ts +9 -0
  97. package/dist/stores/concerns/useExpansion.svelte.js +32 -0
  98. package/dist/stores/concerns/useFiltering.svelte.d.ts +20 -0
  99. package/dist/stores/concerns/useFiltering.svelte.js +109 -0
  100. package/dist/stores/concerns/useFocusManagement.svelte.d.ts +15 -0
  101. package/dist/stores/concerns/useFocusManagement.svelte.js +52 -0
  102. package/dist/stores/concerns/useGrouping.svelte.d.ts +15 -0
  103. package/dist/stores/concerns/useGrouping.svelte.js +86 -0
  104. package/dist/stores/concerns/useLiveUpdates.svelte.d.ts +45 -0
  105. package/dist/stores/concerns/useLiveUpdates.svelte.js +175 -0
  106. package/dist/stores/concerns/usePagination.svelte.d.ts +18 -0
  107. package/dist/stores/concerns/usePagination.svelte.js +54 -0
  108. package/dist/stores/concerns/usePersistence.svelte.d.ts +36 -0
  109. package/dist/stores/concerns/usePersistence.svelte.js +167 -0
  110. package/dist/stores/concerns/useRemoteData.svelte.d.ts +21 -0
  111. package/dist/stores/concerns/useRemoteData.svelte.js +64 -0
  112. package/dist/stores/concerns/useSearch.svelte.d.ts +8 -0
  113. package/dist/stores/concerns/useSearch.svelte.js +16 -0
  114. package/dist/stores/concerns/useSelection.svelte.d.ts +21 -0
  115. package/dist/stores/concerns/useSelection.svelte.js +110 -0
  116. package/dist/stores/concerns/useSorting.svelte.d.ts +11 -0
  117. package/dist/stores/concerns/useSorting.svelte.js +70 -0
  118. package/dist/stores/concerns/useSummary.svelte.d.ts +18 -0
  119. package/dist/stores/concerns/useSummary.svelte.js +96 -0
  120. package/dist/stores/index.d.ts +1 -0
  121. package/dist/stores/index.js +1 -0
  122. package/dist/style/index.css +137 -0
  123. package/dist/style/index.d.ts +2 -0
  124. package/dist/style/index.js +2 -0
  125. package/dist/style/table-theme.css +131 -0
  126. package/dist/style/themes/comfortable.css +20 -0
  127. package/dist/style/themes/compact.css +20 -0
  128. package/dist/translations/de.d.ts +177 -0
  129. package/dist/translations/de.js +176 -0
  130. package/dist/translations/en.d.ts +177 -0
  131. package/dist/translations/en.js +176 -0
  132. package/dist/types/index.d.ts +1 -0
  133. package/dist/types/index.js +1 -0
  134. package/dist/types/tableTypes.d.ts +262 -0
  135. package/dist/types/tableTypes.js +1 -0
  136. package/dist/utils/index.d.ts +165 -0
  137. package/dist/utils/index.js +330 -0
  138. package/dist/utils/sticky-measure.d.ts +54 -0
  139. package/dist/utils/sticky-measure.js +107 -0
  140. package/dist/utils/virtualizer.d.ts +43 -0
  141. package/dist/utils/virtualizer.js +43 -0
  142. package/dist/variants/index.d.ts +11 -0
  143. package/dist/variants/index.js +15 -0
  144. package/dist/variants/table-cells.variants.d.ts +827 -0
  145. package/dist/variants/table-cells.variants.js +627 -0
  146. package/dist/variants/table-features.variants.d.ts +547 -0
  147. package/dist/variants/table-features.variants.js +412 -0
  148. package/dist/variants/table-states.variants.d.ts +594 -0
  149. package/dist/variants/table-states.variants.js +394 -0
  150. package/dist/variants/table.system.d.ts +301 -0
  151. package/dist/variants/table.system.js +314 -0
  152. package/dist/variants/table.variants.d.ts +428 -0
  153. package/dist/variants/table.variants.js +360 -0
  154. package/package.json +93 -0
@@ -0,0 +1,394 @@
1
+ /**
2
+ * TABLE STATE VARIANTS
3
+ * Variants for different table states.
4
+ */
5
+ import { tv } from '@urbicon-ui/blocks';
6
+ import { TABLE_ANIMATIONS, TABLE_DIMENSIONS } from './table.system';
7
+ /**
8
+ * EMPTY STATE VARIANTS
9
+ */
10
+ export const emptyStateVariants = tv({
11
+ slots: {
12
+ container: ['flex flex-col items-center justify-center', 'text-center'],
13
+ icon: [
14
+ 'text-text-tertiary opacity-50',
15
+ 'transition-opacity duration-[var(--blocks-duration-fast)]'
16
+ ],
17
+ iconSvg: ['stroke-[1.5]'],
18
+ content: ['flex flex-col items-center gap-3'],
19
+ title: ['font-semibold text-text-primary', 'leading-tight'],
20
+ description: ['text-text-secondary', 'leading-relaxed max-w-md'],
21
+ action: [
22
+ 'inline-flex items-center gap-2',
23
+ 'px-4 py-2.5',
24
+ 'bg-primary text-white',
25
+ 'rounded-commit font-medium',
26
+ 'transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-[var(--blocks-duration-fast)]',
27
+ 'hover:bg-primary-hover hover:-translate-y-0.5',
28
+ 'active:translate-y-0',
29
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2'
30
+ ]
31
+ },
32
+ variants: {
33
+ size: {
34
+ sm: {
35
+ container: 'py-8 gap-4',
36
+ iconSvg: 'w-10 h-10',
37
+ title: 'text-base',
38
+ description: 'text-xs'
39
+ },
40
+ md: {
41
+ container: 'py-12 gap-6',
42
+ iconSvg: 'w-12 h-12',
43
+ title: 'text-lg',
44
+ description: 'text-sm'
45
+ },
46
+ lg: {
47
+ container: 'py-16 gap-8',
48
+ iconSvg: 'w-16 h-16',
49
+ title: 'text-xl',
50
+ description: 'text-base'
51
+ }
52
+ },
53
+ variant: {
54
+ default: {
55
+ icon: 'text-text-tertiary'
56
+ },
57
+ search: {
58
+ icon: 'text-primary'
59
+ },
60
+ filter: {
61
+ icon: 'text-filter'
62
+ },
63
+ error: {
64
+ icon: 'text-danger'
65
+ }
66
+ },
67
+ bordered: {
68
+ true: {
69
+ container: ['border-2 border-dashed border-border-subtle', 'rounded-contain']
70
+ },
71
+ false: {}
72
+ }
73
+ },
74
+ defaultVariants: {
75
+ size: 'md',
76
+ variant: 'default',
77
+ bordered: false
78
+ }
79
+ });
80
+ /**
81
+ * LOADING STATE VARIANTS
82
+ */
83
+ export const loadingStateVariants = tv({
84
+ slots: {
85
+ container: ['flex flex-col items-center justify-center', 'text-center'],
86
+ spinner: ['text-primary'],
87
+ spinnerSvg: [TABLE_ANIMATIONS.loading.spin],
88
+ content: ['flex flex-col items-center gap-2'],
89
+ text: ['font-medium text-text-primary', 'leading-tight'],
90
+ description: ['text-text-secondary', 'leading-relaxed'],
91
+ skeleton: [TABLE_ANIMATIONS.loading.skeleton, 'rounded-modify']
92
+ },
93
+ variants: {
94
+ size: {
95
+ sm: {
96
+ container: 'py-8 gap-3',
97
+ spinnerSvg: 'w-8 h-8',
98
+ text: 'text-sm',
99
+ description: 'text-xs'
100
+ },
101
+ md: {
102
+ container: 'py-12 gap-4',
103
+ spinnerSvg: 'w-10 h-10',
104
+ text: 'text-base',
105
+ description: 'text-sm'
106
+ },
107
+ lg: {
108
+ container: 'py-16 gap-6',
109
+ spinnerSvg: 'w-12 h-12',
110
+ text: 'text-lg',
111
+ description: 'text-base'
112
+ }
113
+ },
114
+ variant: {
115
+ spinner: {},
116
+ skeleton: {},
117
+ dots: {},
118
+ progress: {}
119
+ }
120
+ },
121
+ defaultVariants: {
122
+ size: 'md',
123
+ variant: 'spinner'
124
+ }
125
+ });
126
+ /**
127
+ * ERROR STATE VARIANTS
128
+ * Error states during data loading.
129
+ */
130
+ export const errorStateVariants = tv({
131
+ slots: {
132
+ container: ['flex flex-col items-center justify-center', 'text-center'],
133
+ icon: ['text-danger'],
134
+ iconSvg: ['stroke-[1.5]'],
135
+ content: ['flex flex-col items-center gap-4 w-full'],
136
+ title: ['font-semibold text-text-primary', 'leading-tight'],
137
+ message: ['text-text-secondary', 'leading-relaxed max-w-md'],
138
+ details: ['w-full max-w-md'],
139
+ detailsToggle: [
140
+ 'inline-flex items-center gap-1',
141
+ 'px-2 py-1',
142
+ 'text-xs font-medium text-text-secondary',
143
+ 'rounded-modify border border-border-subtle',
144
+ 'cursor-pointer transition-[color,background-color,border-color,box-shadow,opacity] duration-[var(--blocks-duration-fast)]',
145
+ 'hover:bg-surface-subtle hover:text-text-primary',
146
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2'
147
+ ],
148
+ detailsIcon: ['transition-transform duration-[var(--blocks-duration-fast)]'],
149
+ detailsContent: [
150
+ 'mt-3 p-3',
151
+ 'bg-surface-subtle',
152
+ 'border border-border-subtle',
153
+ 'rounded-contain text-left'
154
+ ],
155
+ detailsText: ['text-xs text-text-secondary font-mono', 'whitespace-pre-wrap break-words'],
156
+ retryButton: [
157
+ 'inline-flex items-center gap-2',
158
+ 'px-4 py-2.5',
159
+ 'bg-primary text-white',
160
+ 'rounded-commit font-medium',
161
+ 'transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-[var(--blocks-duration-fast)]',
162
+ 'hover:bg-primary-hover hover:-translate-y-0.5',
163
+ 'active:translate-y-0',
164
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2'
165
+ ],
166
+ retryIcon: ['w-4 h-4', 'stroke-current']
167
+ },
168
+ variants: {
169
+ size: {
170
+ sm: {
171
+ container: 'py-8 gap-4',
172
+ iconSvg: 'w-10 h-10',
173
+ title: 'text-base',
174
+ message: 'text-xs'
175
+ },
176
+ md: {
177
+ container: 'py-12 gap-6',
178
+ iconSvg: 'w-12 h-12',
179
+ title: 'text-lg',
180
+ message: 'text-sm'
181
+ },
182
+ lg: {
183
+ container: 'py-16 gap-8',
184
+ iconSvg: 'w-16 h-16',
185
+ title: 'text-xl',
186
+ message: 'text-base'
187
+ }
188
+ },
189
+ severity: {
190
+ error: {
191
+ icon: 'text-danger',
192
+ retryButton: 'bg-danger hover:bg-danger-hover'
193
+ },
194
+ warning: {
195
+ icon: 'text-warning-emphasis',
196
+ retryButton: 'bg-warning hover:bg-warning-hover'
197
+ },
198
+ info: {
199
+ icon: 'text-primary',
200
+ retryButton: 'bg-primary hover:bg-primary-hover'
201
+ }
202
+ },
203
+ detailsExpanded: {
204
+ true: {
205
+ detailsIcon: 'rotate-180'
206
+ },
207
+ false: {}
208
+ }
209
+ },
210
+ defaultVariants: {
211
+ size: 'md',
212
+ severity: 'error',
213
+ detailsExpanded: false
214
+ }
215
+ });
216
+ /**
217
+ * SKELETON LOADER VARIANTS
218
+ * Skeleton loading for table rows.
219
+ */
220
+ export const skeletonRowVariants = tv({
221
+ slots: {
222
+ row: ['animate-pulse'],
223
+ cell: [],
224
+ skeleton: ['h-4 bg-surface-subtle rounded-modify', TABLE_ANIMATIONS.loading.skeleton]
225
+ },
226
+ variants: {
227
+ size: {
228
+ sm: {
229
+ cell: TABLE_DIMENSIONS.padding.cell.sm,
230
+ skeleton: 'h-3'
231
+ },
232
+ md: {
233
+ cell: TABLE_DIMENSIONS.padding.cell.md,
234
+ skeleton: 'h-4'
235
+ },
236
+ lg: {
237
+ cell: TABLE_DIMENSIONS.padding.cell.lg,
238
+ skeleton: 'h-5'
239
+ }
240
+ },
241
+ width: {
242
+ full: {
243
+ skeleton: 'w-full'
244
+ },
245
+ '3/4': {
246
+ skeleton: 'w-3/4'
247
+ },
248
+ '1/2': {
249
+ skeleton: 'w-1/2'
250
+ },
251
+ '1/3': {
252
+ skeleton: 'w-1/3'
253
+ },
254
+ '1/4': {
255
+ skeleton: 'w-1/4'
256
+ }
257
+ }
258
+ },
259
+ defaultVariants: {
260
+ size: 'md',
261
+ width: '3/4'
262
+ }
263
+ });
264
+ /**
265
+ * MOBILE CARD VARIANTS
266
+ * Mobile-optimized card display.
267
+ */
268
+ export const mobileCardVariants = tv({
269
+ slots: {
270
+ card: [
271
+ 'bg-surface-base',
272
+ 'border border-border-subtle',
273
+ 'rounded-contain overflow-hidden',
274
+ 'mb-3',
275
+ 'transition-[color,background-color,border-color,box-shadow,opacity] duration-[var(--blocks-duration-fast)]',
276
+ 'hover:border-border-default hover:shadow-[var(--blocks-shadow-sm)]'
277
+ ],
278
+ header: ['p-4 pb-0'],
279
+ content: ['p-4 pt-3'],
280
+ field: ['flex flex-col gap-1 mb-3'],
281
+ label: ['text-xs font-medium text-text-tertiary', 'uppercase tracking-wide'],
282
+ value: ['text-sm text-text-primary truncate'],
283
+ actions: ['flex items-center justify-end gap-2', 'p-3 pt-0'],
284
+ expandButton: [
285
+ 'ml-auto p-1 rounded-modify',
286
+ 'hover:bg-surface-hover',
287
+ 'transition-colors duration-[var(--blocks-duration-fast)]'
288
+ ],
289
+ expandIcon: ['transition-transform duration-[var(--blocks-duration-fast)]'],
290
+ expandedContent: ['px-4 pb-4', 'border-t border-border-subtle pt-4']
291
+ },
292
+ variants: {
293
+ size: {
294
+ sm: {
295
+ header: 'p-3 pb-0',
296
+ content: 'p-3 pt-2',
297
+ field: 'mb-2'
298
+ },
299
+ md: {
300
+ header: 'p-4 pb-0',
301
+ content: 'p-4 pt-3',
302
+ field: 'mb-3'
303
+ },
304
+ lg: {
305
+ header: 'p-5 pb-0',
306
+ content: 'p-5 pt-4',
307
+ field: 'mb-4'
308
+ }
309
+ },
310
+ selected: {
311
+ true: {
312
+ card: 'border-primary bg-primary-subtle'
313
+ },
314
+ false: {}
315
+ },
316
+ interactive: {
317
+ true: {
318
+ card: 'cursor-pointer active:scale-[0.995]'
319
+ },
320
+ false: {}
321
+ },
322
+ expanded: {
323
+ true: {
324
+ expandIcon: 'rotate-180',
325
+ card: 'shadow-[var(--blocks-shadow-md)]'
326
+ },
327
+ false: {}
328
+ }
329
+ },
330
+ defaultVariants: {
331
+ size: 'md',
332
+ selected: false,
333
+ interactive: false,
334
+ expanded: false
335
+ }
336
+ });
337
+ /**
338
+ * INLINE EDIT VARIANTS
339
+ * Inline cell editing.
340
+ */
341
+ export const inlineEditVariants = tv({
342
+ slots: {
343
+ container: ['relative w-full h-full'],
344
+ display: [
345
+ 'flex items-center h-full',
346
+ 'cursor-text',
347
+ 'transition-colors duration-[var(--blocks-duration-fast)]'
348
+ ],
349
+ input: [
350
+ 'absolute inset-0',
351
+ 'w-full h-full',
352
+ 'px-3 py-2',
353
+ 'bg-surface-base',
354
+ 'border-2 border-primary',
355
+ 'rounded-modify',
356
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2'
357
+ ],
358
+ actions: [
359
+ 'absolute right-0 top-full mt-1',
360
+ 'flex items-center gap-1',
361
+ 'p-1',
362
+ 'bg-surface-elevated',
363
+ 'border border-border-default',
364
+ 'rounded-modify shadow-[var(--blocks-shadow-lg)]',
365
+ 'z-10'
366
+ ],
367
+ button: [
368
+ 'p-1 rounded-modify',
369
+ 'hover:bg-surface-hover',
370
+ 'transition-colors duration-[var(--blocks-duration-fast)]'
371
+ ]
372
+ },
373
+ variants: {
374
+ editing: {
375
+ true: {
376
+ display: 'opacity-0 pointer-events-none'
377
+ },
378
+ false: {
379
+ input: 'hidden',
380
+ actions: 'hidden'
381
+ }
382
+ },
383
+ invalid: {
384
+ true: {
385
+ input: 'border-danger focus-visible:ring-danger'
386
+ },
387
+ false: {}
388
+ }
389
+ },
390
+ defaultVariants: {
391
+ editing: false,
392
+ invalid: false
393
+ }
394
+ });
@@ -0,0 +1,301 @@
1
+ /**
2
+ * ⚡ TABLE PRIMITIVES
3
+ * Basic table-specific patterns and tokens.
4
+ * Extends blocks/primitives with table-specific functionality.
5
+ */
6
+ /**
7
+ * TABLE-SPECIFIC INTENTS
8
+ * Extended semantic colors for table features.
9
+ */
10
+ export declare const TABLE_INTENTS: {
11
+ readonly primary: "primary";
12
+ readonly neutral: "neutral";
13
+ readonly success: "success";
14
+ readonly danger: "danger";
15
+ readonly warning: "warning";
16
+ readonly filter: "filter";
17
+ readonly group: "group";
18
+ readonly summary: "summary";
19
+ };
20
+ /**
21
+ * TABLE DIMENSIONS
22
+ */
23
+ export declare const TABLE_DIMENSIONS: {
24
+ readonly height: {
25
+ readonly header: {
26
+ readonly sm: "h-8";
27
+ readonly md: "h-10";
28
+ readonly lg: "h-12";
29
+ };
30
+ readonly row: {
31
+ readonly sm: "h-8";
32
+ readonly md: "h-10";
33
+ readonly lg: "h-12";
34
+ };
35
+ readonly mobileCard: {
36
+ readonly sm: "min-h-16";
37
+ readonly md: "min-h-24";
38
+ readonly lg: "min-h-32";
39
+ };
40
+ };
41
+ readonly padding: {
42
+ readonly cell: {
43
+ readonly sm: "px-0.5 py-0.5";
44
+ readonly md: "px-1 py-1";
45
+ readonly lg: "px-2 py-1.5";
46
+ };
47
+ readonly headerCell: {
48
+ readonly sm: "px-0.5 py-0.5";
49
+ readonly md: "px-1 py-1";
50
+ readonly lg: "px-2 py-2";
51
+ };
52
+ readonly mobileCard: {
53
+ readonly sm: "p-2";
54
+ readonly md: "p-3";
55
+ readonly lg: "p-4";
56
+ };
57
+ };
58
+ readonly width: {
59
+ readonly minTable: "min-w-[600px]";
60
+ readonly maxTable: "max-w-full";
61
+ readonly columnMin: "min-w-[100px]";
62
+ readonly columnMax: "max-w-[500px]";
63
+ };
64
+ };
65
+ /**
66
+ * TABLE SURFACES
67
+ * Table-specific surface definitions.
68
+ */
69
+ export declare const TABLE_SURFACES: {
70
+ readonly base: {
71
+ readonly header: "bg-surface-elevated";
72
+ readonly row: "bg-surface-base";
73
+ readonly rowHover: "hover:bg-surface-hover";
74
+ readonly rowSelected: "bg-surface-selected";
75
+ readonly rowGrouped: "bg-surface-elevated";
76
+ };
77
+ readonly intent: {
78
+ readonly filter: {
79
+ readonly subtle: "bg-filter-subtle";
80
+ readonly emphasis: "bg-filter-emphasis";
81
+ readonly hover: "hover:bg-filter-hover";
82
+ };
83
+ readonly group: {
84
+ readonly subtle: "bg-group-subtle";
85
+ readonly emphasis: "bg-group-emphasis";
86
+ readonly hover: "hover:bg-group-hover";
87
+ };
88
+ readonly summary: {
89
+ readonly subtle: "bg-summary-subtle";
90
+ readonly emphasis: "bg-summary-emphasis";
91
+ readonly hover: "hover:bg-summary-hover";
92
+ };
93
+ };
94
+ };
95
+ /**
96
+ * TABLE BORDERS
97
+ */
98
+ export declare const TABLE_BORDERS: {
99
+ readonly width: {
100
+ readonly none: "border-0";
101
+ readonly thin: "border";
102
+ readonly thick: "border-2";
103
+ };
104
+ readonly position: {
105
+ readonly all: "border";
106
+ readonly top: "border-t";
107
+ readonly right: "border-r";
108
+ readonly bottom: "border-b";
109
+ readonly left: "border-l";
110
+ readonly horizontal: "border-t border-b";
111
+ readonly vertical: "border-l border-r";
112
+ };
113
+ readonly color: {
114
+ readonly hairline: "border-border-hairline";
115
+ readonly subtle: "border-border-subtle";
116
+ readonly default: "border-border-default";
117
+ readonly emphasis: "border-border-emphasis";
118
+ readonly filter: "border-filter";
119
+ readonly group: "border-group";
120
+ readonly summary: "border-summary";
121
+ };
122
+ };
123
+ /**
124
+ * TABLE INDICATORS
125
+ * Visual indicators for table features.
126
+ */
127
+ export declare const TABLE_INDICATORS: {
128
+ readonly dot: {
129
+ readonly base: "rounded-full";
130
+ readonly size: {
131
+ readonly xs: "w-1 h-1";
132
+ readonly sm: "w-1.5 h-1.5";
133
+ readonly md: "w-2 h-2";
134
+ readonly lg: "w-2.5 h-2.5";
135
+ };
136
+ readonly intent: {
137
+ readonly filter: "bg-filter";
138
+ readonly group: "bg-group";
139
+ readonly summary: "bg-summary";
140
+ readonly primary: "bg-primary";
141
+ readonly success: "bg-success";
142
+ readonly warning: "bg-warning";
143
+ readonly danger: "bg-danger";
144
+ };
145
+ };
146
+ readonly bar: {
147
+ readonly base: "transition-[background-color,width] duration-[var(--blocks-duration-normal)]";
148
+ readonly size: {
149
+ readonly xs: "h-0.5";
150
+ readonly sm: "h-1";
151
+ readonly md: "h-1.5";
152
+ readonly lg: "h-2";
153
+ };
154
+ readonly position: {
155
+ readonly bottom: "absolute bottom-0 left-0 right-0";
156
+ readonly top: "absolute top-0 left-0 right-0";
157
+ readonly left: "absolute top-0 left-0 bottom-0 w-1";
158
+ readonly right: "absolute top-0 right-0 bottom-0 w-1";
159
+ };
160
+ };
161
+ readonly badge: {
162
+ readonly base: "inline-flex items-center justify-center font-semibold rounded-full";
163
+ readonly size: {
164
+ readonly xs: "min-w-4 h-4 px-1 text-[10px]";
165
+ readonly sm: "min-w-5 h-5 px-1.5 text-xs";
166
+ readonly md: "min-w-6 h-6 px-2 text-sm";
167
+ readonly lg: "min-w-7 h-7 px-2.5 text-base";
168
+ };
169
+ };
170
+ };
171
+ /**
172
+ * TABLE STATES
173
+ * Table element states.
174
+ */
175
+ export declare const TABLE_STATES: {
176
+ readonly row: {
177
+ readonly default: "";
178
+ readonly hover: "hover:bg-surface-hover";
179
+ readonly selected: "bg-primary-subtle border-primary";
180
+ readonly expanded: "bg-surface-hover";
181
+ readonly grouped: "bg-surface-elevated font-semibold";
182
+ readonly disabled: "opacity-50 pointer-events-none";
183
+ };
184
+ readonly cell: {
185
+ readonly default: "";
186
+ readonly sortable: "cursor-pointer hover:bg-surface-hover";
187
+ readonly sorted: "bg-primary-subtle text-primary-emphasis font-semibold";
188
+ readonly editable: "cursor-text hover:ring-2 hover:ring-primary";
189
+ readonly readonly: "cursor-not-allowed opacity-75";
190
+ };
191
+ readonly feature: {
192
+ readonly active: "ring-2 ring-primary";
193
+ readonly inactive: "opacity-60";
194
+ readonly loading: "animate-pulse";
195
+ readonly error: "ring-2 ring-danger";
196
+ };
197
+ };
198
+ /**
199
+ * TABLE ANIMATIONS
200
+ * Animation patterns for table interactions.
201
+ */
202
+ export declare const TABLE_ANIMATIONS: {
203
+ readonly expand: {
204
+ readonly trigger: "transition-transform duration-[var(--blocks-duration-normal)]";
205
+ readonly expanded: "rotate-0";
206
+ readonly collapsed: "-rotate-90";
207
+ };
208
+ readonly sort: {
209
+ readonly base: "transition-transform duration-[var(--blocks-duration-fast)]";
210
+ readonly asc: "rotate-0";
211
+ readonly desc: "rotate-180";
212
+ readonly none: "opacity-0";
213
+ };
214
+ readonly loading: {
215
+ readonly pulse: "animate-pulse";
216
+ readonly spin: "animate-spin";
217
+ readonly skeleton: "animate-pulse bg-gradient-to-r from-surface-2 via-surface-3 to-surface-2";
218
+ };
219
+ readonly row: {
220
+ readonly enter: "animate-in fade-in duration-[var(--blocks-duration-normal)]";
221
+ readonly exit: "animate-out fade-out duration-[var(--blocks-duration-fast)]";
222
+ readonly reorder: "transition-[transform,opacity] duration-[var(--blocks-duration-slow)]";
223
+ };
224
+ };
225
+ /**
226
+ * TABLE RESPONSIVE
227
+ * Responsive breakpoints and utilities
228
+ */
229
+ export declare const TABLE_RESPONSIVE: {
230
+ readonly visibility: {
231
+ readonly desktop: "hidden md:table-cell";
232
+ readonly tablet: "hidden sm:table-cell";
233
+ readonly mobile: "table-cell md:hidden";
234
+ readonly always: "table-cell";
235
+ };
236
+ readonly priority: {
237
+ readonly 1: "table-cell";
238
+ readonly 2: "hidden sm:table-cell";
239
+ readonly 3: "hidden md:table-cell";
240
+ readonly 4: "hidden lg:table-cell";
241
+ readonly 5: "hidden xl:table-cell";
242
+ };
243
+ readonly container: {
244
+ readonly sm: "@container-sm";
245
+ readonly md: "@container-md";
246
+ readonly lg: "@container-lg";
247
+ };
248
+ };
249
+ /**
250
+ * TABLE LAYOUTS
251
+ */
252
+ export declare const TABLE_LAYOUTS: {
253
+ readonly variant: {
254
+ readonly default: "table-auto";
255
+ readonly fixed: "table-fixed";
256
+ readonly compact: "table-fixed text-sm";
257
+ readonly comfortable: "table-auto text-base";
258
+ readonly data: "table-fixed font-mono text-sm";
259
+ };
260
+ readonly density: {
261
+ readonly compact: {
262
+ readonly header: "h-8";
263
+ readonly row: "h-8";
264
+ readonly padding: "px-0.5 py-0.5";
265
+ };
266
+ readonly default: {
267
+ readonly header: "h-10";
268
+ readonly row: "h-10";
269
+ readonly padding: "px-1 py-1";
270
+ };
271
+ readonly comfortable: {
272
+ readonly header: "h-12";
273
+ readonly row: "h-12";
274
+ readonly padding: "px-2 py-1.5";
275
+ };
276
+ };
277
+ };
278
+ export type TableIntent = keyof typeof TABLE_INTENTS;
279
+ export type TableSize = 'sm' | 'md' | 'lg';
280
+ export type TableDensity = keyof typeof TABLE_LAYOUTS.density;
281
+ export type TablePriority = 1 | 2 | 3 | 4 | 5;
282
+ export type TableRowState = keyof typeof TABLE_STATES.row;
283
+ export type TableCellState = keyof typeof TABLE_STATES.cell;
284
+ /**
285
+ * UTILITY FUNCTIONS
286
+ */
287
+ export declare const combineTableClasses: (tableClasses: string, blockPrimitives?: string) => string;
288
+ export declare const getResponsiveColumnClass: (priority: TablePriority) => string;
289
+ export declare const getDensityClasses: (density: TableDensity) => {
290
+ readonly header: "h-8";
291
+ readonly row: "h-8";
292
+ readonly padding: "px-0.5 py-0.5";
293
+ } | {
294
+ readonly header: "h-10";
295
+ readonly row: "h-10";
296
+ readonly padding: "px-1 py-1";
297
+ } | {
298
+ readonly header: "h-12";
299
+ readonly row: "h-12";
300
+ readonly padding: "px-2 py-1.5";
301
+ };