@undevy-org/tablewright 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +262 -0
- package/dist/es/components/dashboard/ReportSummaryCard.js +67 -0
- package/dist/es/components/data-table/AppliedStateChips.js +113 -0
- package/dist/es/components/data-table/ColumnFilterPopover.js +548 -0
- package/dist/es/components/data-table/ColumnHeaderMenu.js +144 -0
- package/dist/es/components/data-table/CompoundFilterPopover.js +508 -0
- package/dist/es/components/data-table/CopyButton.js +35 -0
- package/dist/es/components/data-table/CopyableText.js +26 -0
- package/dist/es/components/data-table/DataTableShell.js +145 -0
- package/dist/es/components/data-table/DrawerActionGroup.js +59 -0
- package/dist/es/components/data-table/DrawerEntityCard.js +21 -0
- package/dist/es/components/data-table/DrawerField.js +10 -0
- package/dist/es/components/data-table/DrawerFlagItem.js +20 -0
- package/dist/es/components/data-table/DrawerSection.js +26 -0
- package/dist/es/components/data-table/DrawerShell.js +141 -0
- package/dist/es/components/data-table/DrawerSummaryCard.js +11 -0
- package/dist/es/components/data-table/EmptyState.js +14 -0
- package/dist/es/components/data-table/ExpiryTimestampCell.js +43 -0
- package/dist/es/components/data-table/FilterChip.js +47 -0
- package/dist/es/components/data-table/FilterFormPanel.js +357 -0
- package/dist/es/components/data-table/FilterFormToggle.js +77 -0
- package/dist/es/components/data-table/FilterPopoverFooter.js +19 -0
- package/dist/es/components/data-table/FilterToolbar.js +131 -0
- package/dist/es/components/data-table/FlatColumnToggle.js +46 -0
- package/dist/es/components/data-table/GapIndicator.js +29 -0
- package/dist/es/components/data-table/GroupedColumnToggle.js +112 -0
- package/dist/es/components/data-table/RowActionsMenu.js +74 -0
- package/dist/es/components/data-table/RowControlCell.js +104 -0
- package/dist/es/components/data-table/SortableHeader.js +102 -0
- package/dist/es/components/data-table/TableFooter.js +132 -0
- package/dist/es/components/data-table/TableLayout.js +14 -0
- package/dist/es/components/data-table/TimestampCell.js +16 -0
- package/dist/es/components/data-table/TwoPanelMenu.js +64 -0
- package/dist/es/components/data-table/ViewChip.js +25 -0
- package/dist/es/components/data-table/cells/AmountCell.js +127 -0
- package/dist/es/components/data-table/cells/ConfirmedAmountCell.js +115 -0
- package/dist/es/components/data-table/cells/CurrencyAmountCell.js +26 -0
- package/dist/es/components/data-table/cells/DualLineCell.js +59 -0
- package/dist/es/components/data-table/cells/EnumBadgeCell.js +9 -0
- package/dist/es/components/data-table/cells/MonoIdCell.js +31 -0
- package/dist/es/components/data-table/hooks/use-column-resize.js +39 -0
- package/dist/es/components/data-table/hooks/use-row-drag.js +40 -0
- package/dist/es/components/data-table/hooks/use-table-pagination.js +14 -0
- package/dist/es/components/data-table/hooks/use-table-sort.js +35 -0
- package/dist/es/components/data-table/managed-filters.js +34 -0
- package/dist/es/components/data-table/sticky-utils.js +25 -0
- package/dist/es/components/layout/AppShell.js +113 -0
- package/dist/es/components/layout/Sidebar.js +128 -0
- package/dist/es/components/layout/SidebarAccountMenu.js +129 -0
- package/dist/es/components/layout/SidebarUser.js +38 -0
- package/dist/es/components/layout/TopBar.js +25 -0
- package/dist/es/components/layout/app-shell-context.js +9 -0
- package/dist/es/components/ui/badge.js +31 -0
- package/dist/es/components/ui/button-footer.js +25 -0
- package/dist/es/components/ui/button.js +44 -0
- package/dist/es/components/ui/checkbox.js +24 -0
- package/dist/es/components/ui/combobox.js +179 -0
- package/dist/es/components/ui/dialog.js +80 -0
- package/dist/es/components/ui/dropdown-menu.js +66 -0
- package/dist/es/components/ui/input.js +24 -0
- package/dist/es/components/ui/popover.js +33 -0
- package/dist/es/components/ui/segmented-control.js +60 -0
- package/dist/es/components/ui/select.js +66 -0
- package/dist/es/components/ui/tabs.js +41 -0
- package/dist/es/components/ui/theme-switch.js +47 -0
- package/dist/es/constants/drawer.js +4 -0
- package/dist/es/context/drawer-expand-context.js +10 -0
- package/dist/es/context/portal-container-context.js +10 -0
- package/dist/es/hooks/table-orchestration-store.js +165 -0
- package/dist/es/hooks/use-scroll-activity.js +33 -0
- package/dist/es/hooks/useRowDragOverride.js +18 -0
- package/dist/es/hooks/useTableOrchestration.js +452 -0
- package/dist/es/index.js +199 -0
- package/dist/es/lib/column-gaps.js +23 -0
- package/dist/es/lib/filter-stats.js +67 -0
- package/dist/es/lib/format-enum.js +6 -0
- package/dist/es/lib/format-timestamp.js +37 -0
- package/dist/es/lib/style-scope.js +4 -0
- package/dist/es/lib/utils.js +8 -0
- package/dist/fonts.css +5 -0
- package/dist/preflight.css +502 -0
- package/dist/styles.css +1731 -0
- package/dist/tablewright.cjs +5473 -0
- package/dist/tablewright.css +1579 -0
- package/dist/tokens.css +150 -0
- package/dist/types/components/dashboard/ReportSummaryCard.d.ts +15 -0
- package/dist/types/components/data-table/AppliedStateChips.d.ts +28 -0
- package/dist/types/components/data-table/ColumnFilterPopover.d.ts +14 -0
- package/dist/types/components/data-table/ColumnHeaderMenu.d.ts +27 -0
- package/dist/types/components/data-table/CompoundFilterPopover.d.ts +14 -0
- package/dist/types/components/data-table/CopyButton.d.ts +8 -0
- package/dist/types/components/data-table/CopyableText.d.ts +10 -0
- package/dist/types/components/data-table/DataTableShell.d.ts +30 -0
- package/dist/types/components/data-table/DrawerActionGroup.d.ts +8 -0
- package/dist/types/components/data-table/DrawerEntityCard.d.ts +13 -0
- package/dist/types/components/data-table/DrawerField.d.ts +7 -0
- package/dist/types/components/data-table/DrawerFlagItem.d.ts +10 -0
- package/dist/types/components/data-table/DrawerSection.d.ts +8 -0
- package/dist/types/components/data-table/DrawerShell.d.ts +33 -0
- package/dist/types/components/data-table/DrawerSummaryCard.d.ts +7 -0
- package/dist/types/components/data-table/EmptyState.d.ts +6 -0
- package/dist/types/components/data-table/ExpiryTimestampCell.d.ts +6 -0
- package/dist/types/components/data-table/FilterChip.d.ts +8 -0
- package/dist/types/components/data-table/FilterFormPanel.d.ts +34 -0
- package/dist/types/components/data-table/FilterFormToggle.d.ts +18 -0
- package/dist/types/components/data-table/FilterPopoverFooter.d.ts +9 -0
- package/dist/types/components/data-table/FilterToolbar.d.ts +29 -0
- package/dist/types/components/data-table/FlatColumnToggle.d.ts +10 -0
- package/dist/types/components/data-table/GapIndicator.d.ts +11 -0
- package/dist/types/components/data-table/GroupedColumnToggle.d.ts +12 -0
- package/dist/types/components/data-table/RowActionsMenu.d.ts +10 -0
- package/dist/types/components/data-table/RowControlCell.d.ts +16 -0
- package/dist/types/components/data-table/SortableHeader.d.ts +16 -0
- package/dist/types/components/data-table/TableFooter.d.ts +31 -0
- package/dist/types/components/data-table/TableLayout.d.ts +12 -0
- package/dist/types/components/data-table/TimestampCell.d.ts +3 -0
- package/dist/types/components/data-table/TwoPanelMenu.d.ts +22 -0
- package/dist/types/components/data-table/ViewChip.d.ts +6 -0
- package/dist/types/components/data-table/cells/AmountCell.d.ts +11 -0
- package/dist/types/components/data-table/cells/ConfirmedAmountCell.d.ts +10 -0
- package/dist/types/components/data-table/cells/CurrencyAmountCell.d.ts +8 -0
- package/dist/types/components/data-table/cells/DualLineCell.d.ts +44 -0
- package/dist/types/components/data-table/cells/EnumBadgeCell.d.ts +9 -0
- package/dist/types/components/data-table/cells/MonoIdCell.d.ts +19 -0
- package/dist/types/components/data-table/filter-types.d.ts +79 -0
- package/dist/types/components/data-table/hooks/use-column-resize.d.ts +7 -0
- package/dist/types/components/data-table/hooks/use-row-drag.d.ts +14 -0
- package/dist/types/components/data-table/hooks/use-table-pagination.d.ts +10 -0
- package/dist/types/components/data-table/hooks/use-table-sort.d.ts +6 -0
- package/dist/types/components/data-table/managed-filters.d.ts +18 -0
- package/dist/types/components/data-table/sticky-utils.d.ts +4 -0
- package/dist/types/components/data-table/types.d.ts +35 -0
- package/dist/types/components/layout/AppShell.d.ts +23 -0
- package/dist/types/components/layout/Sidebar.d.ts +16 -0
- package/dist/types/components/layout/SidebarAccountMenu.d.ts +20 -0
- package/dist/types/components/layout/SidebarUser.d.ts +8 -0
- package/dist/types/components/layout/TopBar.d.ts +7 -0
- package/dist/types/components/layout/app-shell-context.d.ts +8 -0
- package/dist/types/components/layout/index.d.ts +10 -0
- package/dist/types/components/layout/types.d.ts +11 -0
- package/dist/types/components/ui/badge.d.ts +9 -0
- package/dist/types/components/ui/button-footer.d.ts +7 -0
- package/dist/types/components/ui/button.d.ts +11 -0
- package/dist/types/components/ui/checkbox.d.ts +4 -0
- package/dist/types/components/ui/combobox.d.ts +92 -0
- package/dist/types/components/ui/dialog.d.ts +15 -0
- package/dist/types/components/ui/dropdown-menu.d.ts +10 -0
- package/dist/types/components/ui/input.d.ts +6 -0
- package/dist/types/components/ui/popover.d.ts +7 -0
- package/dist/types/components/ui/segmented-control.d.ts +17 -0
- package/dist/types/components/ui/select.d.ts +8 -0
- package/dist/types/components/ui/tabs.d.ts +10 -0
- package/dist/types/components/ui/theme-switch.d.ts +12 -0
- package/dist/types/constants/drawer.d.ts +1 -0
- package/dist/types/context/drawer-expand-context.d.ts +7 -0
- package/dist/types/context/portal-container-context.d.ts +14 -0
- package/dist/types/hooks/table-orchestration-store.d.ts +75 -0
- package/dist/types/hooks/use-scroll-activity.d.ts +1 -0
- package/dist/types/hooks/useDemoTheme.d.ts +8 -0
- package/dist/types/hooks/useRowDragOverride.d.ts +6 -0
- package/dist/types/hooks/useTableOrchestration.d.ts +115 -0
- package/dist/types/index.d.ts +107 -0
- package/dist/types/lib/column-gaps.d.ts +3 -0
- package/dist/types/lib/filter-stats.d.ts +2 -0
- package/dist/types/lib/format-enum.d.ts +1 -0
- package/dist/types/lib/format-timestamp.d.ts +4 -0
- package/dist/types/lib/style-scope.d.ts +19 -0
- package/dist/types/lib/utils.d.ts +2 -0
- package/package.json +114 -0
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* @undevy-org/tablewright — design tokens. Generated by scripts/build-css.mjs; do not edit. */
|
|
2
|
+
/* Design tokens: CSS custom properties for both themes.
|
|
3
|
+
* Shipped as @undevy-org/tablewright/tokens.css — load once, globally.
|
|
4
|
+
* Theme is selected by data-theme="light" | "dark" on any ancestor. */
|
|
5
|
+
|
|
6
|
+
:root,
|
|
7
|
+
[data-theme="light"] {
|
|
8
|
+
color-scheme: light;
|
|
9
|
+
--bg-body: #ffffff;
|
|
10
|
+
--bg-surface: #ffffff;
|
|
11
|
+
--bg-surface-muted: #fcfcfd;
|
|
12
|
+
--bg-surface-sunken: #fbfbfb;
|
|
13
|
+
--bg-hover: #f9fafb;
|
|
14
|
+
--bg-secondary: #f3f4f6;
|
|
15
|
+
--bg-tertiary: #eef2f6;
|
|
16
|
+
--bg-surface-glass: rgba(255, 255, 255, 0.95);
|
|
17
|
+
--bg-surface-glass-soft: rgba(255, 255, 255, 0.9);
|
|
18
|
+
--bg-nav-item-active: rgba(17, 24, 39, 0.06);
|
|
19
|
+
--overlay-scrim: rgba(0, 0, 0, 0.3);
|
|
20
|
+
--accent-primary: #111827;
|
|
21
|
+
--text-on-accent: #ffffff;
|
|
22
|
+
--text-primary: #111827;
|
|
23
|
+
--text-secondary: #6b7280;
|
|
24
|
+
--text-tertiary: #9ca3af;
|
|
25
|
+
--text-muted-strong: #374151;
|
|
26
|
+
--text-utility: #667085;
|
|
27
|
+
--bg-brand-subtle: #e0f2fe;
|
|
28
|
+
--border-brand: #93c5fd;
|
|
29
|
+
--text-brand: #0369a1;
|
|
30
|
+
--border-subtle: #e5e7eb;
|
|
31
|
+
--border-focus: #d1d5db;
|
|
32
|
+
--border-danger: #f87171;
|
|
33
|
+
--tag-pink-bg: #fce7f3;
|
|
34
|
+
--tag-pink-text: #be185d;
|
|
35
|
+
--tag-purple-bg: #f3e8ff;
|
|
36
|
+
--tag-purple-text: #7e22ce;
|
|
37
|
+
--tag-blue-bg: #e0f2fe;
|
|
38
|
+
--tag-blue-text: #0369a1;
|
|
39
|
+
--tag-green-bg: #dcfce7;
|
|
40
|
+
--tag-green-text: #15803d;
|
|
41
|
+
--tag-orange-bg: #ffedd5;
|
|
42
|
+
--tag-orange-text: #c2410c;
|
|
43
|
+
--tag-gray-bg: #f3f4f6;
|
|
44
|
+
--tag-gray-text: #4b5563;
|
|
45
|
+
--tag-amber-bg: #fef3c7;
|
|
46
|
+
--tag-amber-text: #92400e;
|
|
47
|
+
--tag-sky-bg: #ecfeff;
|
|
48
|
+
--tag-sky-text: #0e7490;
|
|
49
|
+
--tag-indigo-bg: #dbeafe;
|
|
50
|
+
--tag-indigo-text: #1e3a8a;
|
|
51
|
+
--font-stack: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
52
|
+
--font-mono: "JetBrains Mono", "Fira Code", monospace;
|
|
53
|
+
--radius-sm: 4px;
|
|
54
|
+
--radius-md: 6px;
|
|
55
|
+
--radius-lg: 8px;
|
|
56
|
+
--radius-xl: 12px;
|
|
57
|
+
--radius-2xl: 16px;
|
|
58
|
+
--radius-display: 28px;
|
|
59
|
+
--radius-full: 9999px;
|
|
60
|
+
--space-1: 4px;
|
|
61
|
+
--space-1-5: 6px;
|
|
62
|
+
--space-2: 8px;
|
|
63
|
+
--space-2-5: 10px;
|
|
64
|
+
--space-3: 12px;
|
|
65
|
+
--space-4: 16px;
|
|
66
|
+
--space-5: 20px;
|
|
67
|
+
--space-6: 24px;
|
|
68
|
+
--space-8: 32px;
|
|
69
|
+
--space-10: 40px;
|
|
70
|
+
--size-control-sm: 32px;
|
|
71
|
+
--size-control-md: 36px;
|
|
72
|
+
--size-dialog-md: 420px;
|
|
73
|
+
--size-dialog-lg: 560px;
|
|
74
|
+
--size-drawer: 400px;
|
|
75
|
+
--size-row-control: 80px;
|
|
76
|
+
--size-select-compact: 84px;
|
|
77
|
+
--size-showcase-card-min-height: 148px;
|
|
78
|
+
--size-showcase-max-width: 1440px;
|
|
79
|
+
--size-export-mobile: 390px;
|
|
80
|
+
--size-sidebar-expanded: 240px;
|
|
81
|
+
--size-sidebar-collapsed: 56px;
|
|
82
|
+
--size-topbar-height: 52px;
|
|
83
|
+
--duration-sidebar: 200ms;
|
|
84
|
+
--opacity-disabled: 0.5;
|
|
85
|
+
--opacity-hovered: 0.9;
|
|
86
|
+
--opacity-resize-rest: 0.3;
|
|
87
|
+
--opacity-resize-hover: 0.5;
|
|
88
|
+
--shadow-card: 0 8px 24px rgba(15, 23, 42, 0.04);
|
|
89
|
+
--shadow-dialog: 0 20px 60px rgba(0, 0, 0, 0.15);
|
|
90
|
+
--shadow-drawer: -4px 0 24px rgba(0, 0, 0, 0.05);
|
|
91
|
+
--shadow-menu: 0 4px 12px rgba(15, 23, 42, 0.1);
|
|
92
|
+
--shadow-tab-active: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
93
|
+
--shadow-sidebar-overlay: 4px 0 24px rgba(0, 0, 0, 0.08);
|
|
94
|
+
--gradient-showcase-hero: linear-gradient(135deg, rgba(17, 24, 39, 0.03), rgba(255, 255, 255, 1) 45%, rgba(243, 244, 246, 0.9));
|
|
95
|
+
--gradient-dialog-canvas: radial-gradient(circle at top, rgba(243, 244, 246, 0.9), rgba(255, 255, 255, 1) 65%);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
[data-theme="dark"] {
|
|
99
|
+
color-scheme: dark;
|
|
100
|
+
--bg-body: #0f172a;
|
|
101
|
+
--bg-surface: #111827;
|
|
102
|
+
--bg-surface-muted: #172033;
|
|
103
|
+
--bg-surface-sunken: #0b1220;
|
|
104
|
+
--bg-hover: #1b2537;
|
|
105
|
+
--bg-secondary: #1e293b;
|
|
106
|
+
--bg-tertiary: #334155;
|
|
107
|
+
--bg-surface-glass: rgba(15, 23, 42, 0.92);
|
|
108
|
+
--bg-surface-glass-soft: rgba(15, 23, 42, 0.82);
|
|
109
|
+
--bg-nav-item-active: rgba(248, 250, 252, 0.08);
|
|
110
|
+
--overlay-scrim: rgba(2, 6, 23, 0.72);
|
|
111
|
+
--accent-primary: #e2e8f0;
|
|
112
|
+
--text-on-accent: #111827;
|
|
113
|
+
--text-primary: #f8fafc;
|
|
114
|
+
--text-secondary: #cbd5e1;
|
|
115
|
+
--text-tertiary: #94a3b8;
|
|
116
|
+
--text-muted-strong: #e2e8f0;
|
|
117
|
+
--text-utility: #b0bccd;
|
|
118
|
+
--bg-brand-subtle: #112e44;
|
|
119
|
+
--border-brand: #1e40af;
|
|
120
|
+
--text-brand: #7dd3fc;
|
|
121
|
+
--border-subtle: #334155;
|
|
122
|
+
--border-focus: #475569;
|
|
123
|
+
--border-danger: #f87171;
|
|
124
|
+
--tag-pink-bg: #3f1d34;
|
|
125
|
+
--tag-pink-text: #f9a8d4;
|
|
126
|
+
--tag-purple-bg: #31224a;
|
|
127
|
+
--tag-purple-text: #d8b4fe;
|
|
128
|
+
--tag-blue-bg: #112e44;
|
|
129
|
+
--tag-blue-text: #7dd3fc;
|
|
130
|
+
--tag-green-bg: #123628;
|
|
131
|
+
--tag-green-text: #86efac;
|
|
132
|
+
--tag-orange-bg: #4b2a17;
|
|
133
|
+
--tag-orange-text: #fdba74;
|
|
134
|
+
--tag-gray-bg: #1f2937;
|
|
135
|
+
--tag-gray-text: #e5e7eb;
|
|
136
|
+
--tag-amber-bg: #493316;
|
|
137
|
+
--tag-amber-text: #fcd34d;
|
|
138
|
+
--tag-sky-bg: #103a44;
|
|
139
|
+
--tag-sky-text: #67e8f9;
|
|
140
|
+
--tag-indigo-bg: #1e3a8a;
|
|
141
|
+
--tag-indigo-text: #bfdbfe;
|
|
142
|
+
--shadow-card: 0 18px 40px rgba(2, 6, 23, 0.35);
|
|
143
|
+
--shadow-dialog: 0 24px 80px rgba(2, 6, 23, 0.55);
|
|
144
|
+
--shadow-drawer: -12px 0 40px rgba(2, 6, 23, 0.38);
|
|
145
|
+
--shadow-menu: 0 12px 32px rgba(2, 6, 23, 0.42);
|
|
146
|
+
--shadow-tab-active: 0 4px 14px rgba(2, 6, 23, 0.28);
|
|
147
|
+
--shadow-sidebar-overlay: 4px 0 24px rgba(2, 6, 23, 0.4);
|
|
148
|
+
--gradient-showcase-hero: linear-gradient(135deg, rgba(148, 163, 184, 0.14), rgba(15, 23, 42, 1) 42%, rgba(17, 24, 39, 0.94));
|
|
149
|
+
--gradient-dialog-canvas: radial-gradient(circle at top, rgba(51, 65, 85, 0.7), rgba(17, 24, 39, 1) 68%);
|
|
150
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ReportSummaryCardProps {
|
|
2
|
+
title: string;
|
|
3
|
+
count?: number;
|
|
4
|
+
endpoint: string;
|
|
5
|
+
topActions: string[];
|
|
6
|
+
filterNames: string[];
|
|
7
|
+
columns: string[];
|
|
8
|
+
sampleRows: {
|
|
9
|
+
title: string;
|
|
10
|
+
values: string[];
|
|
11
|
+
}[];
|
|
12
|
+
emptyStateMessage?: string;
|
|
13
|
+
notes?: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare function ReportSummaryCard({ title, count, endpoint, topActions, filterNames, columns, sampleRows, emptyStateMessage, notes, }: ReportSummaryCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ActiveFilter, ActiveFilterValue, ColumnFilterConfig, FilterStatsSlice } from "./filter-types.js";
|
|
2
|
+
interface AppliedStateChipsProps {
|
|
3
|
+
filters: ActiveFilter[];
|
|
4
|
+
configs: Record<string, ColumnFilterConfig>;
|
|
5
|
+
newestColumnId: string | null;
|
|
6
|
+
onRemoveFilter: (columnId: string) => void;
|
|
7
|
+
onChangeFilter: (columnId: string, value: ActiveFilterValue) => void;
|
|
8
|
+
currentSort: {
|
|
9
|
+
columnId: string;
|
|
10
|
+
direction: "asc" | "desc";
|
|
11
|
+
} | null;
|
|
12
|
+
columnLabels: Record<string, string>;
|
|
13
|
+
onRemoveSort: () => void;
|
|
14
|
+
hiddenColumnsCount: number;
|
|
15
|
+
onResetColumns: () => void;
|
|
16
|
+
onOpenColumnsMenu?: () => void;
|
|
17
|
+
customFilterChip: {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
} | null;
|
|
21
|
+
onRemoveCustomFilter: () => void;
|
|
22
|
+
onClearAll: () => void;
|
|
23
|
+
columnFilterStats?: Record<string, FilterStatsSlice>;
|
|
24
|
+
requestOpenFilterId?: string | null;
|
|
25
|
+
onRequestOpenHandled?: () => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function AppliedStateChips({ filters, configs, newestColumnId, onRemoveFilter, onChangeFilter, currentSort, columnLabels, onRemoveSort, hiddenColumnsCount, onResetColumns, onOpenColumnsMenu, customFilterChip, onRemoveCustomFilter, onClearAll, columnFilterStats, requestOpenFilterId, onRequestOpenHandled, }: AppliedStateChipsProps): import("react").JSX.Element | null;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ActiveFilter, ColumnFilterConfig, ActiveFilterValue, FilterStatsSlice } from "./filter-types.js";
|
|
2
|
+
interface ColumnFilterPopoverProps {
|
|
3
|
+
config: ColumnFilterConfig;
|
|
4
|
+
filter: ActiveFilter;
|
|
5
|
+
onChange: (value: ActiveFilterValue) => void;
|
|
6
|
+
onRemove: () => void;
|
|
7
|
+
initialOpen?: boolean;
|
|
8
|
+
chipClassName?: string;
|
|
9
|
+
stats?: FilterStatsSlice;
|
|
10
|
+
requestOpen?: boolean;
|
|
11
|
+
onRequestOpenHandled?: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function ColumnFilterPopover({ config, filter, onChange, onRemove, initialOpen, chipClassName, stats, requestOpen, onRequestOpenHandled, }: ColumnFilterPopoverProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SortDirection } from "./types.js";
|
|
2
|
+
export interface ColumnHeaderMenuLabels {
|
|
3
|
+
sort: string;
|
|
4
|
+
sortByColumn: (label: string) => string;
|
|
5
|
+
ascending: string;
|
|
6
|
+
descending: string;
|
|
7
|
+
filterByColumn: string;
|
|
8
|
+
hideColumn: string;
|
|
9
|
+
}
|
|
10
|
+
interface ColumnHeaderMenuProps {
|
|
11
|
+
label?: string;
|
|
12
|
+
primaryLabel?: string;
|
|
13
|
+
secondaryLabel?: string;
|
|
14
|
+
sorted?: SortDirection;
|
|
15
|
+
onSort?: (direction: "asc" | "desc") => void;
|
|
16
|
+
primarySorted?: SortDirection;
|
|
17
|
+
onPrimarySort?: (direction: "asc" | "desc") => void;
|
|
18
|
+
secondarySorted?: SortDirection;
|
|
19
|
+
onSecondarySort?: (direction: "asc" | "desc") => void;
|
|
20
|
+
hasFilter?: boolean;
|
|
21
|
+
onFilterClick?: () => void;
|
|
22
|
+
onHide?: () => void;
|
|
23
|
+
labels?: Partial<ColumnHeaderMenuLabels>;
|
|
24
|
+
menuWidth?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function ColumnHeaderMenu({ label, primaryLabel, secondaryLabel, sorted, onSort, primarySorted, onPrimarySort, secondarySorted, onSecondarySort, hasFilter, onFilterClick, onHide, labels: labelOverrides, menuWidth, }: ColumnHeaderMenuProps): import("react").JSX.Element;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ActiveFilter, ActiveFilterValue, ColumnFilterConfig, FilterStatsSlice } from "./filter-types.js";
|
|
2
|
+
interface CompoundFilterPopoverProps {
|
|
3
|
+
config: ColumnFilterConfig;
|
|
4
|
+
filter: ActiveFilter;
|
|
5
|
+
onChange: (value: ActiveFilterValue) => void;
|
|
6
|
+
onRemove: () => void;
|
|
7
|
+
initialOpen?: boolean;
|
|
8
|
+
chipClassName?: string;
|
|
9
|
+
columnFilterStats?: Record<string, FilterStatsSlice>;
|
|
10
|
+
requestOpen?: boolean;
|
|
11
|
+
onRequestOpenHandled?: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function CompoundFilterPopover({ config, filter, onChange, onRemove, initialOpen, chipClassName, columnFilterStats, requestOpen, onRequestOpenHandled, }: CompoundFilterPopoverProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface CopyableTextProps {
|
|
2
|
+
value: string;
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
textClassName?: string;
|
|
6
|
+
buttonClassName?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function CopyableText({ value, children, className, textClassName, buttonClassName, title, }: CopyableTextProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PointerEvent, ReactNode } from "react";
|
|
2
|
+
import { type Table } from "@tanstack/react-table";
|
|
3
|
+
import { type DrawerMode } from "./DrawerShell.js";
|
|
4
|
+
import type { UseRowDragResult } from "./hooks/use-row-drag.js";
|
|
5
|
+
import type { ColumnMetaDef } from "./types.js";
|
|
6
|
+
export interface DataTableDrawer {
|
|
7
|
+
open: boolean;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
title: ReactNode;
|
|
10
|
+
subtitle?: ReactNode;
|
|
11
|
+
headerExtra?: ReactNode;
|
|
12
|
+
content: ReactNode;
|
|
13
|
+
/** @default "side" */
|
|
14
|
+
mode?: DrawerMode;
|
|
15
|
+
}
|
|
16
|
+
export interface DataTableShellProps<TData> {
|
|
17
|
+
table: Table<TData>;
|
|
18
|
+
dense: boolean;
|
|
19
|
+
emptyMessage: string;
|
|
20
|
+
columnMeta: Record<string, ColumnMetaDef>;
|
|
21
|
+
columnWidths: Record<string, number>;
|
|
22
|
+
onColumnResizeStart: (columnId: string, event: PointerEvent<HTMLDivElement>) => void;
|
|
23
|
+
onRowClick?: (row: TData) => void;
|
|
24
|
+
getRowIsActive?: (row: TData) => boolean;
|
|
25
|
+
rowDrag?: UseRowDragResult;
|
|
26
|
+
footer?: ReactNode;
|
|
27
|
+
drawer?: DataTableDrawer;
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function DataTableShell<TData>({ table, dense, emptyMessage, columnMeta, columnWidths, onColumnResizeStart, onRowClick, getRowIsActive, rowDrag, footer, drawer, className, }: DataTableShellProps<TData>): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RowActionSection } from "./types.js";
|
|
2
|
+
interface DrawerActionGroupProps {
|
|
3
|
+
sections: RowActionSection[];
|
|
4
|
+
variant: "flat" | "grouped";
|
|
5
|
+
columns?: 2 | 4;
|
|
6
|
+
}
|
|
7
|
+
export declare function DrawerActionGroup({ sections, variant, columns }: DrawerActionGroupProps): import("react").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface DrawerEntityCardProps {
|
|
2
|
+
name: string;
|
|
3
|
+
/**
|
|
4
|
+
* Identifier shown next to the name in the card header. Omit when the
|
|
5
|
+
* identifier is already represented as one of the body fields below — the
|
|
6
|
+
* header collapses to a single column so the same value isn't surfaced
|
|
7
|
+
* twice in the same card.
|
|
8
|
+
*/
|
|
9
|
+
id?: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare function DrawerEntityCard({ name, id, children }: DrawerEntityCardProps): import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface DrawerFlagGridProps {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
export declare function DrawerFlagGrid({ children }: DrawerFlagGridProps): import("react").JSX.Element;
|
|
5
|
+
interface DrawerFlagItemProps {
|
|
6
|
+
label: string;
|
|
7
|
+
value: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function DrawerFlagItem({ label, value }: DrawerFlagItemProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controls how the drawer opens:
|
|
3
|
+
* - `"side"` — (default) side panel only, no expand button. Matches every
|
|
4
|
+
* consumer that predates this prop, so the default preserves their exact
|
|
5
|
+
* rendered output.
|
|
6
|
+
* - `"side+modal"` — side panel with an expand button that opens a
|
|
7
|
+
* full-screen modal.
|
|
8
|
+
* - `"modal"` — opens directly as a full-screen modal, skipping the side
|
|
9
|
+
* panel entirely.
|
|
10
|
+
*/
|
|
11
|
+
export type DrawerMode = "side" | "modal" | "side+modal";
|
|
12
|
+
interface DrawerShellProps {
|
|
13
|
+
open: boolean;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
title: React.ReactNode;
|
|
16
|
+
subtitle?: React.ReactNode;
|
|
17
|
+
headerExtra?: React.ReactNode;
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
/** Pinned footer (e.g. row actions); stays fixed while the body scrolls. */
|
|
20
|
+
footer?: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Opt into a dismiss layer in side mode: a click-to-close scrim over the
|
|
23
|
+
* positioning container plus Escape-to-close. Off by default so existing
|
|
24
|
+
* consumers keep their current behavior (background stays interactive,
|
|
25
|
+
* close only via the X button).
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
dismissible?: boolean;
|
|
29
|
+
/** @default "side" */
|
|
30
|
+
mode?: DrawerMode;
|
|
31
|
+
}
|
|
32
|
+
export declare function DrawerShell({ open, onClose, title, subtitle, headerExtra, children, footer, dismissible, mode, }: DrawerShellProps): import("react").JSX.Element;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface FilterChipProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
label: string;
|
|
4
|
+
value?: string;
|
|
5
|
+
onRemove: () => void;
|
|
6
|
+
active?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const FilterChip: React.ForwardRefExoticComponent<FilterChipProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ActiveFilter, ColumnFilterConfig } from "./filter-types.js";
|
|
2
|
+
import { type ManagedFilterChange } from "./managed-filters.js";
|
|
3
|
+
export interface FilterFormPanelProps {
|
|
4
|
+
/** All known filter configs (same shape used by GroupedFilterAdd). */
|
|
5
|
+
filterConfigs: Record<string, ColumnFilterConfig>;
|
|
6
|
+
/** Ordered list of column IDs to render as form fields. */
|
|
7
|
+
fields: readonly string[];
|
|
8
|
+
/**
|
|
9
|
+
* Currently active filters from the page-level orchestrator.
|
|
10
|
+
* Must be a stable reference — pass `orch.columnFilters` directly, not a derived array
|
|
11
|
+
* (touched-field tracking depends on referential stability for the reseed effect).
|
|
12
|
+
*/
|
|
13
|
+
filters: ActiveFilter[];
|
|
14
|
+
/** Called on Apply with only managed-field changes. */
|
|
15
|
+
onApply: (changes: ManagedFilterChange[]) => void;
|
|
16
|
+
/** Called on Clear with the managed columnIds to clear. */
|
|
17
|
+
onClear: (managedColumnIds: string[]) => void;
|
|
18
|
+
/** Optional title above the grid. Defaults to "Filters". */
|
|
19
|
+
title?: string;
|
|
20
|
+
/** Optional className passed to the root form element. */
|
|
21
|
+
className?: string;
|
|
22
|
+
/** Optional DOM id on the root form element (used by aria-controls from FilterFormToggle). */
|
|
23
|
+
id?: string;
|
|
24
|
+
/** Optional close handler — when provided, renders a close button in the header. */
|
|
25
|
+
onClose?: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Sub-filters to omit inside compound fields, addressed as `${fieldId}:${subKey}`.
|
|
28
|
+
* Lets a compound render only a subset of its sub-filters — the rest stay
|
|
29
|
+
* available through the page's filter-visibility manager. Whole-field hiding
|
|
30
|
+
* is done by leaving the id out of `fields`; this is only for sub-fields.
|
|
31
|
+
*/
|
|
32
|
+
hiddenSubFilterKeys?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
export declare function FilterFormPanel({ filterConfigs, fields, filters, onApply, onClear, title, className, id, onClose, hiddenSubFilterKeys, }: FilterFormPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function useFilterFormOpen(persistKey: string, defaultOpen?: boolean): [boolean, (next: boolean) => void];
|
|
2
|
+
export interface FilterFormToggleProps {
|
|
3
|
+
/** Controlled open state. */
|
|
4
|
+
open: boolean;
|
|
5
|
+
/** Setter — receives the next open state. */
|
|
6
|
+
onOpenChange: (next: boolean) => void;
|
|
7
|
+
/** Whether at least one managed filter is active. Drives the dot indicator when open=false. */
|
|
8
|
+
hasActiveFilters?: boolean;
|
|
9
|
+
/** ID of the form panel element controlled by this button (for aria-controls). */
|
|
10
|
+
controlsId?: string;
|
|
11
|
+
/** Visual variant: icon-only button or icon + text label. Same height in both. Default: "icon". */
|
|
12
|
+
variant?: "icon" | "button";
|
|
13
|
+
/** Text label for the "button" variant. Default: "Filter". */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Extra classes for the button. */
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function FilterFormToggle({ open, onOpenChange, hasActiveFilters, controlsId, variant, label, className, }: FilterFormToggleProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface FilterPopoverFooterProps {
|
|
2
|
+
onApply: () => void;
|
|
3
|
+
onClear?: () => void;
|
|
4
|
+
applyLabel?: string;
|
|
5
|
+
clearLabel?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function FilterPopoverFooter({ onApply, onClear, applyLabel, clearLabel, className, }: FilterPopoverFooterProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ComponentProps, HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export interface ColumnToggleItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function Root({ children, className, ...props }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
|
|
9
|
+
export declare function SearchForm({ children, className, ...props }: ComponentProps<"form">): import("react").JSX.Element;
|
|
10
|
+
export declare function Filters({ children, className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
11
|
+
export declare function Utility({ children, className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
12
|
+
export declare function Actions({ children, className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
13
|
+
export declare function ActiveFilters({ children, className, }: {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
interface ColumnVisibilityMenuProps {
|
|
18
|
+
columns: ColumnToggleItem[];
|
|
19
|
+
onColumnToggle: (columnId: string) => void;
|
|
20
|
+
label?: string;
|
|
21
|
+
buttonClassName?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function ColumnVisibilityMenu({ columns, onColumnToggle, label, buttonClassName, }: ColumnVisibilityMenuProps): import("react").JSX.Element;
|
|
24
|
+
export declare function DensityControl({ density, onDensityChange, className, }: {
|
|
25
|
+
density: "normal" | "dense";
|
|
26
|
+
onDensityChange: (value: "normal" | "dense") => void;
|
|
27
|
+
className?: string;
|
|
28
|
+
}): import("react").JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface FlatColumnToggleProps {
|
|
2
|
+
toggleableColumnIds: readonly string[];
|
|
3
|
+
columnLabels: Record<string, string>;
|
|
4
|
+
columnVisibility: Record<string, boolean>;
|
|
5
|
+
onColumnToggle: (columnId: string) => void;
|
|
6
|
+
open?: boolean;
|
|
7
|
+
onOpenChange?: (open: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function FlatColumnToggle({ toggleableColumnIds, columnLabels, columnVisibility, onColumnToggle, open, onOpenChange, }: FlatColumnToggleProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export declare const GAP_HEADER_ATTR = "data-gap-header";
|
|
3
|
+
export declare const GAP_CELL_ATTR = "data-gap-cell";
|
|
4
|
+
interface GapIndicatorProps {
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
ariaLabel?: string;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare function GapIndicator({ onClick, ariaLabel, children, }: GapIndicatorProps): import("react").JSX.Element;
|
|
10
|
+
export declare function GapCell(): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ColumnGroup } from "./filter-types.js";
|
|
2
|
+
interface GroupedColumnToggleProps {
|
|
3
|
+
columnGroups: ColumnGroup[];
|
|
4
|
+
columnLabels: Record<string, string>;
|
|
5
|
+
columnVisibility: Record<string, boolean>;
|
|
6
|
+
onColumnToggle: (columnId: string) => void;
|
|
7
|
+
onGroupToggleAll: (groupKey: string, show: boolean) => void;
|
|
8
|
+
open?: boolean;
|
|
9
|
+
onOpenChange?: (open: boolean) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function GroupedColumnToggle({ columnGroups, columnLabels, columnVisibility, onColumnToggle, onGroupToggleAll, open, onOpenChange, }: GroupedColumnToggleProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RowActionItem, RowActionSection } from "./types.js";
|
|
2
|
+
interface RowActionsMenuProps {
|
|
3
|
+
actions?: RowActionItem[];
|
|
4
|
+
sections?: RowActionSection[];
|
|
5
|
+
align?: "start" | "center" | "end";
|
|
6
|
+
triggerClassName?: string;
|
|
7
|
+
contentClassName?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function RowActionsMenu({ actions, sections, align, triggerClassName, contentClassName, }: RowActionsMenuProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface RowControlCellProps {
|
|
2
|
+
rowNumber: number;
|
|
3
|
+
selected: boolean;
|
|
4
|
+
onSelectToggle: () => void;
|
|
5
|
+
onExpandToggle?: (e: React.MouseEvent) => void;
|
|
6
|
+
ariaLabelSelect?: string;
|
|
7
|
+
ariaLabelExpand?: string;
|
|
8
|
+
forceControlsVisible?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function RowControlCell({ rowNumber, selected, onSelectToggle, onExpandToggle, ariaLabelSelect, ariaLabelExpand, forceControlsVisible, }: RowControlCellProps): import("react").JSX.Element;
|
|
11
|
+
export interface RowControlHeaderProps {
|
|
12
|
+
checked: boolean | "indeterminate";
|
|
13
|
+
onToggle: () => void;
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function RowControlHeader({ checked, onToggle, ariaLabel, }: RowControlHeaderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SortDirection } from "./types.js";
|
|
2
|
+
interface SortableHeaderProps {
|
|
3
|
+
label?: string;
|
|
4
|
+
primaryLabel?: string;
|
|
5
|
+
secondaryLabel?: string;
|
|
6
|
+
mode?: "single" | "stacked";
|
|
7
|
+
sorted?: SortDirection;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
primarySorted?: SortDirection;
|
|
10
|
+
onPrimaryClick?: () => void;
|
|
11
|
+
secondarySorted?: SortDirection;
|
|
12
|
+
onSecondaryClick?: () => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function SortableHeader({ label, primaryLabel, secondaryLabel, mode, sorted, onClick, primarySorted, onPrimaryClick, secondarySorted, onSecondaryClick, className, }: SortableHeaderProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BulkAction } from "./types.js";
|
|
2
|
+
type TableFooterBaseProps = {
|
|
3
|
+
selectedCount: number;
|
|
4
|
+
totalCount: number;
|
|
5
|
+
onSelectAll: () => void;
|
|
6
|
+
onClearSelection: () => void;
|
|
7
|
+
bulkActions: BulkAction[];
|
|
8
|
+
};
|
|
9
|
+
type TableFooterNoPaginationProps = TableFooterBaseProps & {
|
|
10
|
+
paginationVariant?: "none";
|
|
11
|
+
};
|
|
12
|
+
type TableFooterPagesProps = TableFooterBaseProps & {
|
|
13
|
+
paginationVariant: "pages";
|
|
14
|
+
currentPage: number;
|
|
15
|
+
totalPages: number;
|
|
16
|
+
pageNumbers: number[];
|
|
17
|
+
onPageChange: (page: number) => void;
|
|
18
|
+
};
|
|
19
|
+
type TableFooterPerPageProps = TableFooterBaseProps & {
|
|
20
|
+
paginationVariant: "perPage";
|
|
21
|
+
currentPage: number;
|
|
22
|
+
totalPages: number;
|
|
23
|
+
pageNumbers: number[];
|
|
24
|
+
onPageChange: (page: number) => void;
|
|
25
|
+
rowsPerPage: number;
|
|
26
|
+
rowsPerPageOptions?: number[];
|
|
27
|
+
onRowsPerPageChange: (value: number) => void;
|
|
28
|
+
};
|
|
29
|
+
type TableFooterProps = TableFooterNoPaginationProps | TableFooterPagesProps | TableFooterPerPageProps;
|
|
30
|
+
export declare function TableFooter(props: TableFooterProps): import("react").JSX.Element;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface TableLayoutProps {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function TableLayout({ children, className }: TableLayoutProps): import("react").JSX.Element;
|
|
6
|
+
export declare namespace TableLayout {
|
|
7
|
+
var ScrollArea: ({ children, className }: {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}) => import("react").JSX.Element;
|
|
11
|
+
}
|
|
12
|
+
export {};
|