@avenue-ticketing/ui 0.11.0 → 0.12.0-beta.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.
- package/README.md +47 -0
- package/dist/badge-types-B67wcd4m.d.ts +22 -0
- package/dist/react/app-store-buttons-outline.d.ts +17 -0
- package/dist/react/app-store-buttons-outline.js +582 -0
- package/dist/react/app-store-buttons-outline.js.map +1 -0
- package/dist/react/app-store-buttons.d.ts +20 -0
- package/dist/react/app-store-buttons.js +817 -0
- package/dist/react/app-store-buttons.js.map +1 -0
- package/dist/react/avatar-label-group.d.ts +14 -0
- package/dist/react/avatar-label-group.js +183 -0
- package/dist/react/avatar-label-group.js.map +1 -0
- package/dist/react/avatar-profile-photo.d.ts +9 -0
- package/dist/react/avatar-profile-photo.js +202 -0
- package/dist/react/avatar-profile-photo.js.map +1 -0
- package/dist/react/avatar.d.ts +66 -40
- package/dist/react/avatar.js +159 -149
- package/dist/react/avatar.js.map +1 -1
- package/dist/react/badge-groups.d.ts +25 -0
- package/dist/react/badge-groups.js +162 -0
- package/dist/react/badge-groups.js.map +1 -0
- package/dist/react/badge.d.ts +123 -59
- package/dist/react/badge.js +314 -86
- package/dist/react/badge.js.map +1 -1
- package/dist/react/button-group.d.ts +43 -0
- package/dist/react/button-group.js +108 -0
- package/dist/react/button-group.js.map +1 -0
- package/dist/react/button-utility.d.ts +47 -0
- package/dist/react/button-utility.js +158 -0
- package/dist/react/button-utility.js.map +1 -0
- package/dist/react/button.d.ts +112 -37
- package/dist/react/button.js +270 -55
- package/dist/react/button.js.map +1 -1
- package/dist/react/checkbox.d.ts +25 -8
- package/dist/react/checkbox.js +112 -110
- package/dist/react/checkbox.js.map +1 -1
- package/dist/react/close-button.d.ts +25 -0
- package/dist/react/close-button.js +54 -0
- package/dist/react/close-button.js.map +1 -0
- package/dist/react/combobox.d.ts +17 -0
- package/dist/react/combobox.js +322 -0
- package/dist/react/combobox.js.map +1 -0
- package/dist/react/dialog.d.ts +15 -15
- package/dist/react/dialog.js +43 -108
- package/dist/react/dialog.js.map +1 -1
- package/dist/react/dropdown-account-breadcrumb.d.ts +5 -0
- package/dist/react/dropdown-account-breadcrumb.js +319 -0
- package/dist/react/dropdown-account-breadcrumb.js.map +1 -0
- package/dist/react/dropdown-account-button.d.ts +5 -0
- package/dist/react/dropdown-account-button.js +773 -0
- package/dist/react/dropdown-account-button.js.map +1 -0
- package/dist/react/dropdown-account-card-md.d.ts +5 -0
- package/dist/react/dropdown-account-card-md.js +549 -0
- package/dist/react/dropdown-account-card-md.js.map +1 -0
- package/dist/react/dropdown-account-card-sm.d.ts +5 -0
- package/dist/react/dropdown-account-card-sm.js +527 -0
- package/dist/react/dropdown-account-card-sm.js.map +1 -0
- package/dist/react/dropdown-account-card-xs.d.ts +5 -0
- package/dist/react/dropdown-account-card-xs.js +507 -0
- package/dist/react/dropdown-account-card-xs.js.map +1 -0
- package/dist/react/dropdown-avatar.d.ts +5 -0
- package/dist/react/dropdown-avatar.js +790 -0
- package/dist/react/dropdown-avatar.js.map +1 -0
- package/dist/react/dropdown-button-advanced.d.ts +5 -0
- package/dist/react/dropdown-button-advanced.js +799 -0
- package/dist/react/dropdown-button-advanced.js.map +1 -0
- package/dist/react/dropdown-button-link.d.ts +5 -0
- package/dist/react/dropdown-button-link.js +501 -0
- package/dist/react/dropdown-button-link.js.map +1 -0
- package/dist/react/dropdown-button-simple.d.ts +5 -0
- package/dist/react/dropdown-button-simple.js +754 -0
- package/dist/react/dropdown-button-simple.js.map +1 -0
- package/dist/react/dropdown-icon-advanced.d.ts +5 -0
- package/dist/react/dropdown-icon-advanced.js +543 -0
- package/dist/react/dropdown-icon-advanced.js.map +1 -0
- package/dist/react/dropdown-icon-simple.d.ts +5 -0
- package/dist/react/dropdown-icon-simple.js +505 -0
- package/dist/react/dropdown-icon-simple.js.map +1 -0
- package/dist/react/dropdown-integration.d.ts +5 -0
- package/dist/react/dropdown-integration.js +1325 -0
- package/dist/react/dropdown-integration.js.map +1 -0
- package/dist/react/dropdown-search-advanced.d.ts +5 -0
- package/dist/react/dropdown-search-advanced.js +998 -0
- package/dist/react/dropdown-search-advanced.js.map +1 -0
- package/dist/react/dropdown-search-simple.d.ts +5 -0
- package/dist/react/dropdown-search-simple.js +960 -0
- package/dist/react/dropdown-search-simple.js.map +1 -0
- package/dist/react/dropdown.d.ts +32 -133
- package/dist/react/dropdown.js +404 -1351
- package/dist/react/dropdown.js.map +1 -1
- package/dist/react/file-upload-trigger.d.ts +34 -0
- package/dist/react/file-upload-trigger.js +39 -0
- package/dist/react/file-upload-trigger.js.map +1 -0
- package/dist/react/form.d.ts +10 -0
- package/dist/react/form.js +11 -0
- package/dist/react/form.js.map +1 -0
- package/dist/react/hint-text.d.ts +17 -0
- package/dist/react/hint-text.js +36 -0
- package/dist/react/hint-text.js.map +1 -0
- package/dist/react/hook-form.d.ts +35 -0
- package/dist/react/hook-form.js +50 -0
- package/dist/react/hook-form.js.map +1 -0
- package/dist/react/input-date.d.ts +43 -0
- package/dist/react/input-date.js +306 -0
- package/dist/react/input-date.js.map +1 -0
- package/dist/react/input-file.d.ts +45 -0
- package/dist/react/input-file.js +748 -0
- package/dist/react/input-file.js.map +1 -0
- package/dist/react/input-group.d.ts +37 -0
- package/dist/react/input-group.js +251 -0
- package/dist/react/input-group.js.map +1 -0
- package/dist/react/input-number.d.ts +32 -0
- package/dist/react/input-number.js +553 -0
- package/dist/react/input-number.js.map +1 -0
- package/dist/react/input-payment.d.ts +16 -0
- package/dist/react/input-payment.js +593 -0
- package/dist/react/input-payment.js.map +1 -0
- package/dist/react/input-tags-outer.d.ts +53 -0
- package/dist/react/input-tags-outer.js +607 -0
- package/dist/react/input-tags-outer.js.map +1 -0
- package/dist/react/input-tags.d.ts +53 -0
- package/dist/react/input-tags.js +565 -0
- package/dist/react/input-tags.js.map +1 -0
- package/dist/react/input.d.ts +71 -22
- package/dist/react/input.js +332 -45
- package/dist/react/input.js.map +1 -1
- package/dist/react/label.d.ts +18 -0
- package/dist/react/label.js +112 -0
- package/dist/react/label.js.map +1 -0
- package/dist/react/multi-select.d.ts +89 -0
- package/dist/react/multi-select.js +1036 -0
- package/dist/react/multi-select.js.map +1 -0
- package/dist/react/pin-input.d.ts +59 -0
- package/dist/react/pin-input.js +229 -0
- package/dist/react/pin-input.js.map +1 -0
- package/dist/react/popover.d.ts +7 -73
- package/dist/react/popover.js +23 -569
- package/dist/react/popover.js.map +1 -1
- package/dist/react/progress-circle.d.ts +9 -0
- package/dist/react/progress-circle.js +36 -0
- package/dist/react/progress-circle.js.map +1 -0
- package/dist/react/progress-circles.d.ts +14 -0
- package/dist/react/progress-circles.js +160 -0
- package/dist/react/progress-circles.js.map +1 -0
- package/dist/react/progress-indicators.d.ts +52 -0
- package/dist/react/progress-indicators.js +78 -0
- package/dist/react/progress-indicators.js.map +1 -0
- package/dist/react/radio-buttons.d.ts +35 -0
- package/dist/react/radio-buttons.js +116 -0
- package/dist/react/radio-buttons.js.map +1 -0
- package/dist/react/scroll-header.d.ts +6 -0
- package/dist/react/scroll-header.js +42 -61
- package/dist/react/scroll-header.js.map +1 -1
- package/dist/react/scroll-wheel.d.ts +4 -5
- package/dist/react/scroll-wheel.js +19 -15
- package/dist/react/scroll-wheel.js.map +1 -1
- package/dist/react/select-item.d.ts +13 -0
- package/dist/react/select-item.js +336 -0
- package/dist/react/select-item.js.map +1 -0
- package/dist/react/select-native.d.ts +17 -0
- package/dist/react/select-native.js +203 -0
- package/dist/react/select-native.js.map +1 -0
- package/dist/react/select.d.ts +18 -61
- package/dist/react/select.js +625 -923
- package/dist/react/select.js.map +1 -1
- package/dist/react/sheet.d.ts +19 -19
- package/dist/react/sheet.js +97 -219
- package/dist/react/sheet.js.map +1 -1
- package/dist/react/slider.d.ts +15 -0
- package/dist/react/slider.js +66 -0
- package/dist/react/slider.js.map +1 -0
- package/dist/react/social-button.d.ts +55 -0
- package/dist/react/social-button.js +263 -0
- package/dist/react/social-button.js.map +1 -0
- package/dist/react/social-logos.d.ts +20 -0
- package/dist/react/social-logos.js +131 -0
- package/dist/react/social-logos.js.map +1 -0
- package/dist/react/switch.d.ts +21 -36
- package/dist/react/switch.js +121 -109
- package/dist/react/switch.js.map +1 -1
- package/dist/react/tag-select.d.ts +44 -0
- package/dist/react/tag-select.js +1062 -0
- package/dist/react/tag-select.js.map +1 -0
- package/dist/react/tags.d.ts +30 -0
- package/dist/react/tags.js +228 -0
- package/dist/react/tags.js.map +1 -0
- package/dist/react/textarea.d.ts +40 -4
- package/dist/react/textarea.js +193 -27
- package/dist/react/textarea.js.map +1 -1
- package/dist/react/tooltip.d.ts +30 -43
- package/dist/react/tooltip.js +65 -521
- package/dist/react/tooltip.js.map +1 -1
- package/dist/select-shared-B3Y5SMXU.d.ts +62 -0
- package/package.json +28 -21
- package/source.css +2 -13
- package/theme.css +883 -79
- package/dist/react/calendar.d.ts +0 -13
- package/dist/react/calendar.js +0 -4639
- package/dist/react/calendar.js.map +0 -1
- package/dist/react/card.d.ts +0 -11
- package/dist/react/card.js +0 -113
- package/dist/react/card.js.map +0 -1
- package/dist/react/datetime-picker.d.ts +0 -21
- package/dist/react/datetime-picker.js +0 -6142
- package/dist/react/datetime-picker.js.map +0 -1
- package/dist/react/pagination.d.ts +0 -28
- package/dist/react/pagination.js +0 -262
- package/dist/react/pagination.js.map +0 -1
- package/dist/react/table-pagination.d.ts +0 -15
- package/dist/react/table-pagination.js +0 -1247
- package/dist/react/table-pagination.js.map +0 -1
- package/dist/react/table-view/column-menu.d.ts +0 -15
- package/dist/react/table-view/column-menu.js +0 -1049
- package/dist/react/table-view/column-menu.js.map +0 -1
- package/dist/react/table-view/index.d.ts +0 -70
- package/dist/react/table-view/index.js +0 -2284
- package/dist/react/table-view/index.js.map +0 -1
- package/dist/react/table.d.ts +0 -86
- package/dist/react/table.js +0 -414
- package/dist/react/table.js.map +0 -1
- package/dist/react/tabs.d.ts +0 -34
- package/dist/react/tabs.js +0 -423
- package/dist/react/tabs.js.map +0 -1
- package/dist/react/time-picker.d.ts +0 -22
- package/dist/react/time-picker.js +0 -856
- package/dist/react/time-picker.js.map +0 -1
package/dist/react/table.js
DELETED
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
import { GripVertical, ArrowDown, ArrowUp } from 'lucide-react';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { clsx } from 'clsx';
|
|
4
|
-
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
function cn(...inputs) {
|
|
8
|
-
return twMerge(clsx(inputs));
|
|
9
|
-
}
|
|
10
|
-
var defaultTableConfig = {
|
|
11
|
-
sortableColumnIds: /* @__PURE__ */ new Set(),
|
|
12
|
-
enableColumnSort: true,
|
|
13
|
-
enableColumnReorder: false,
|
|
14
|
-
enableColumnResize: false,
|
|
15
|
-
columnDragState: null
|
|
16
|
-
};
|
|
17
|
-
var TableConfigContext = React.createContext(null);
|
|
18
|
-
TableConfigContext.displayName = "TableConfigContext";
|
|
19
|
-
function setColumnDragPreview(e, options) {
|
|
20
|
-
if (!e.dataTransfer) return;
|
|
21
|
-
e.dataTransfer.effectAllowed = "move";
|
|
22
|
-
const width = options.width ?? 80;
|
|
23
|
-
const height = options.height ?? 100;
|
|
24
|
-
const el = document.createElement("div");
|
|
25
|
-
el.setAttribute("data-table-drag-preview", "");
|
|
26
|
-
const dark = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
27
|
-
const bg = dark ? "rgba(24,24,26,0.95)" : "rgba(255,255,255,0.96)";
|
|
28
|
-
const fg = dark ? "rgba(250,250,250,0.95)" : "rgba(10,10,10,0.92)";
|
|
29
|
-
const border = dark ? "1px solid rgba(255,255,255,0.12)" : "1px solid rgba(0,0,0,0.1)";
|
|
30
|
-
const shadow = "0 12px 32px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.04)";
|
|
31
|
-
el.style.cssText = [
|
|
32
|
-
"position:fixed",
|
|
33
|
-
"left:0",
|
|
34
|
-
"top:0",
|
|
35
|
-
"z-index:100000",
|
|
36
|
-
"pointer-events:none",
|
|
37
|
-
"box-sizing:border-box",
|
|
38
|
-
`width:${width}px`,
|
|
39
|
-
`min-height:${height}px`,
|
|
40
|
-
"display:flex",
|
|
41
|
-
"flex-direction:column",
|
|
42
|
-
"align-items:center",
|
|
43
|
-
"justify-content:flex-start",
|
|
44
|
-
"gap:8px",
|
|
45
|
-
`padding:10px 8px 12px`,
|
|
46
|
-
`color:${fg}`,
|
|
47
|
-
`background:${bg}`,
|
|
48
|
-
`border:${border}`,
|
|
49
|
-
"border-radius:8px",
|
|
50
|
-
`box-shadow:${shadow}`
|
|
51
|
-
].join(";");
|
|
52
|
-
const bar = document.createElement("div");
|
|
53
|
-
bar.style.cssText = `width:3px;flex:1;min-height:32px;border-radius:2px;background:${dark ? "rgba(80,200,150,0.4)" : "rgba(20,80,200,0.2)"};align-self:stretch;`;
|
|
54
|
-
const t = document.createElement("div");
|
|
55
|
-
t.textContent = options.title;
|
|
56
|
-
t.style.cssText = "font:600 11px/1.2 system-ui,-apple-system,sans-serif;text-align:center;word-break:break-word;max-width:100%;";
|
|
57
|
-
el.appendChild(t);
|
|
58
|
-
el.appendChild(bar);
|
|
59
|
-
el.style.minHeight = `${height}px`;
|
|
60
|
-
document.body.appendChild(el);
|
|
61
|
-
void el.offsetWidth;
|
|
62
|
-
e.dataTransfer.setDragImage(
|
|
63
|
-
el,
|
|
64
|
-
options.hotspotX ?? width / 2,
|
|
65
|
-
options.hotspotY ?? 28
|
|
66
|
-
);
|
|
67
|
-
requestAnimationFrame(() => {
|
|
68
|
-
if (el.parentNode) el.parentNode.removeChild(el);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
var COLUMN_DRAG_TH_STRIP = "relative z-20 box-border overflow-hidden rounded-t-lg border border-primary/20 bg-primary/8 opacity-70 shadow-sm";
|
|
72
|
-
var COLUMN_DRAG_TD_STRIP = "overflow-hidden border-x border-primary/15 bg-primary/5 opacity-70";
|
|
73
|
-
var columnDragThClasses = (config, columnId) => {
|
|
74
|
-
if (!config.enableColumnReorder || !config.columnDragState) return void 0;
|
|
75
|
-
const d = config.columnDragState;
|
|
76
|
-
const isSource = d.draggingId === columnId;
|
|
77
|
-
const isDrop = d.dropTargetId === columnId && d.draggingId != null && d.draggingId !== columnId;
|
|
78
|
-
if (isSource || isDrop) {
|
|
79
|
-
return COLUMN_DRAG_TH_STRIP;
|
|
80
|
-
}
|
|
81
|
-
return void 0;
|
|
82
|
-
};
|
|
83
|
-
var columnDragTdClasses = (config, columnId) => {
|
|
84
|
-
if (!config.enableColumnReorder || !config.columnDragState) return void 0;
|
|
85
|
-
const d = config.columnDragState;
|
|
86
|
-
const isSource = d.draggingId === columnId;
|
|
87
|
-
const isDrop = d.dropTargetId === columnId && d.draggingId != null && d.draggingId !== columnId;
|
|
88
|
-
if (isSource || isDrop) {
|
|
89
|
-
return COLUMN_DRAG_TD_STRIP;
|
|
90
|
-
}
|
|
91
|
-
return void 0;
|
|
92
|
-
};
|
|
93
|
-
var Table = React.forwardRef(
|
|
94
|
-
({
|
|
95
|
-
className,
|
|
96
|
-
containerClassName,
|
|
97
|
-
sortableColumns,
|
|
98
|
-
enableColumnSort: enableColumnSortFromProps,
|
|
99
|
-
enableColumnReorder: enableColumnReorderFromProps,
|
|
100
|
-
enableColumnResize: enableColumnResizeFromProps,
|
|
101
|
-
columnDragState: columnDragStateFromProps,
|
|
102
|
-
...props
|
|
103
|
-
}, ref) => {
|
|
104
|
-
const config = React.useMemo(() => {
|
|
105
|
-
const sortableColumnIds = new Set(sortableColumns ?? []);
|
|
106
|
-
return {
|
|
107
|
-
sortableColumnIds,
|
|
108
|
-
enableColumnSort: enableColumnSortFromProps ?? true,
|
|
109
|
-
enableColumnReorder: enableColumnReorderFromProps ?? false,
|
|
110
|
-
enableColumnResize: enableColumnResizeFromProps ?? false,
|
|
111
|
-
columnDragState: columnDragStateFromProps ?? null
|
|
112
|
-
};
|
|
113
|
-
}, [
|
|
114
|
-
sortableColumns,
|
|
115
|
-
enableColumnSortFromProps,
|
|
116
|
-
enableColumnReorderFromProps,
|
|
117
|
-
enableColumnResizeFromProps,
|
|
118
|
-
columnDragStateFromProps
|
|
119
|
-
]);
|
|
120
|
-
return /* @__PURE__ */ jsx(
|
|
121
|
-
"div",
|
|
122
|
-
{
|
|
123
|
-
"data-slot": "table-container",
|
|
124
|
-
"data-table-sort": config.enableColumnSort ? "on" : "off",
|
|
125
|
-
"data-table-reorder": config.enableColumnReorder ? "on" : "off",
|
|
126
|
-
"data-table-resize": config.enableColumnResize ? "on" : "off",
|
|
127
|
-
className: cn("relative w-full overflow-x-auto", containerClassName),
|
|
128
|
-
children: /* @__PURE__ */ jsx(TableConfigContext.Provider, { value: config, children: /* @__PURE__ */ jsx(
|
|
129
|
-
"table",
|
|
130
|
-
{
|
|
131
|
-
ref,
|
|
132
|
-
"data-slot": "table",
|
|
133
|
-
className: cn(
|
|
134
|
-
"min-w-full w-max caption-bottom text-sm",
|
|
135
|
-
className
|
|
136
|
-
),
|
|
137
|
-
...props
|
|
138
|
-
}
|
|
139
|
-
) })
|
|
140
|
-
}
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
);
|
|
144
|
-
Table.displayName = "Table";
|
|
145
|
-
var TableHeader = React.forwardRef(({ className, ...props }, ref) => {
|
|
146
|
-
const config = React.useContext(TableConfigContext) ?? defaultTableConfig;
|
|
147
|
-
const hasSortableColumns = config.enableColumnSort && config.sortableColumnIds.size > 0;
|
|
148
|
-
return /* @__PURE__ */ jsx(
|
|
149
|
-
"thead",
|
|
150
|
-
{
|
|
151
|
-
ref,
|
|
152
|
-
"data-slot": "table-header",
|
|
153
|
-
className: cn(
|
|
154
|
-
hasSortableColumns && "[&_tr:hover]:bg-transparent!",
|
|
155
|
-
className
|
|
156
|
-
),
|
|
157
|
-
...props
|
|
158
|
-
}
|
|
159
|
-
);
|
|
160
|
-
});
|
|
161
|
-
TableHeader.displayName = "TableHeader";
|
|
162
|
-
var TableBody = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
163
|
-
"tbody",
|
|
164
|
-
{
|
|
165
|
-
ref,
|
|
166
|
-
"data-slot": "table-body",
|
|
167
|
-
className: cn(
|
|
168
|
-
"[&>tr:last-child>td:not([data-table-column-drag-strip])]:border-b-0",
|
|
169
|
-
className
|
|
170
|
-
),
|
|
171
|
-
...props
|
|
172
|
-
}
|
|
173
|
-
));
|
|
174
|
-
TableBody.displayName = "TableBody";
|
|
175
|
-
var TableFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
176
|
-
"tfoot",
|
|
177
|
-
{
|
|
178
|
-
ref,
|
|
179
|
-
"data-slot": "table-footer",
|
|
180
|
-
className: cn(
|
|
181
|
-
"border-t border-primary/10 bg-primary/5 font-medium",
|
|
182
|
-
className
|
|
183
|
-
),
|
|
184
|
-
...props
|
|
185
|
-
}
|
|
186
|
-
));
|
|
187
|
-
TableFooter.displayName = "TableFooter";
|
|
188
|
-
var TableRow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
189
|
-
"tr",
|
|
190
|
-
{
|
|
191
|
-
ref,
|
|
192
|
-
"data-slot": "table-row",
|
|
193
|
-
className: cn(
|
|
194
|
-
"transition-colors duration-0 hover:bg-primary/3 data-[state=selected]:bg-primary/10",
|
|
195
|
-
className
|
|
196
|
-
),
|
|
197
|
-
...props
|
|
198
|
-
}
|
|
199
|
-
));
|
|
200
|
-
TableRow.displayName = "TableRow";
|
|
201
|
-
var columnDragHandleIconClass = cn(
|
|
202
|
-
"text-primary/55 hover:text-primary/80",
|
|
203
|
-
"cursor-grab active:cursor-grabbing touch-none",
|
|
204
|
-
"shrink-0"
|
|
205
|
-
);
|
|
206
|
-
var TableColumnDragHandle = React.forwardRef(function TableColumnDragHandle2({ columnId, previewLabel, className, onDragStart, onDragEnd, title, ...rest }, ref) {
|
|
207
|
-
return /* @__PURE__ */ jsx(
|
|
208
|
-
"span",
|
|
209
|
-
{
|
|
210
|
-
ref,
|
|
211
|
-
className: cn(
|
|
212
|
-
"inline-flex select-none items-center justify-center",
|
|
213
|
-
columnDragHandleIconClass,
|
|
214
|
-
className
|
|
215
|
-
),
|
|
216
|
-
title: title ?? "Drag to reorder this column",
|
|
217
|
-
tabIndex: -1,
|
|
218
|
-
"aria-label": "Drag to reorder this column",
|
|
219
|
-
draggable: true,
|
|
220
|
-
onDragStart: (e) => {
|
|
221
|
-
e.dataTransfer.setData("text/plain", columnId);
|
|
222
|
-
setColumnDragPreview(e, { title: previewLabel ?? "Column" });
|
|
223
|
-
onDragStart?.(e);
|
|
224
|
-
},
|
|
225
|
-
onDragEnd,
|
|
226
|
-
onClick: (ev) => ev.stopPropagation(),
|
|
227
|
-
onKeyDown: (ev) => {
|
|
228
|
-
if (ev.key === " " || ev.key === "Enter") {
|
|
229
|
-
ev.preventDefault();
|
|
230
|
-
}
|
|
231
|
-
ev.stopPropagation();
|
|
232
|
-
},
|
|
233
|
-
"data-slot": "table-column-drag-handle",
|
|
234
|
-
...rest,
|
|
235
|
-
children: /* @__PURE__ */ jsx(
|
|
236
|
-
GripVertical,
|
|
237
|
-
{
|
|
238
|
-
className: "size-4 pointer-events-none",
|
|
239
|
-
strokeWidth: 2.25,
|
|
240
|
-
"aria-hidden": true
|
|
241
|
-
}
|
|
242
|
-
)
|
|
243
|
-
}
|
|
244
|
-
);
|
|
245
|
-
});
|
|
246
|
-
TableColumnDragHandle.displayName = "TableColumnDragHandle";
|
|
247
|
-
function TableHeaderSortControl({
|
|
248
|
-
activeSort,
|
|
249
|
-
onRequest,
|
|
250
|
-
className
|
|
251
|
-
}) {
|
|
252
|
-
const isActiveSort = activeSort === "asc" || activeSort === "desc";
|
|
253
|
-
return /* @__PURE__ */ jsx(
|
|
254
|
-
"span",
|
|
255
|
-
{
|
|
256
|
-
className: cn("inline-flex shrink-0 items-stretch pl-0", className),
|
|
257
|
-
children: onRequest ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-stretch", children: /* @__PURE__ */ jsx(
|
|
258
|
-
"button",
|
|
259
|
-
{
|
|
260
|
-
type: "button",
|
|
261
|
-
className: "text-primary/90 hover:text-primary/95 inline-flex min-h-10 w-8 min-w-8 touch-manipulation items-center justify-center self-center rounded p-0 md:min-h-12",
|
|
262
|
-
onClick: (e) => {
|
|
263
|
-
e.stopPropagation();
|
|
264
|
-
onRequest(e);
|
|
265
|
-
},
|
|
266
|
-
title: "Change sort",
|
|
267
|
-
"aria-label": "Change sort order",
|
|
268
|
-
children: isActiveSort ? activeSort === "desc" ? /* @__PURE__ */ jsx(
|
|
269
|
-
ArrowDown,
|
|
270
|
-
{
|
|
271
|
-
className: "size-3.5 shrink-0",
|
|
272
|
-
strokeWidth: 2.25,
|
|
273
|
-
"aria-hidden": true
|
|
274
|
-
}
|
|
275
|
-
) : /* @__PURE__ */ jsx(
|
|
276
|
-
ArrowUp,
|
|
277
|
-
{
|
|
278
|
-
className: "size-3.5 shrink-0",
|
|
279
|
-
strokeWidth: 2.25,
|
|
280
|
-
"aria-hidden": true
|
|
281
|
-
}
|
|
282
|
-
) : /* @__PURE__ */ jsx(
|
|
283
|
-
ArrowUp,
|
|
284
|
-
{
|
|
285
|
-
className: "text-primary/85 size-3.5 shrink-0 opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",
|
|
286
|
-
strokeWidth: 2.25,
|
|
287
|
-
"aria-hidden": true
|
|
288
|
-
}
|
|
289
|
-
)
|
|
290
|
-
}
|
|
291
|
-
) }) : isActiveSort ? /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0 items-center", children: activeSort === "desc" ? /* @__PURE__ */ jsx(
|
|
292
|
-
ArrowDown,
|
|
293
|
-
{
|
|
294
|
-
className: "size-3.5 shrink-0 self-center text-primary/90",
|
|
295
|
-
strokeWidth: 2.25,
|
|
296
|
-
"aria-hidden": true
|
|
297
|
-
}
|
|
298
|
-
) : /* @__PURE__ */ jsx(
|
|
299
|
-
ArrowUp,
|
|
300
|
-
{
|
|
301
|
-
className: "size-3.5 shrink-0 self-center text-primary/90",
|
|
302
|
-
strokeWidth: 2.25,
|
|
303
|
-
"aria-hidden": true
|
|
304
|
-
}
|
|
305
|
-
) }) : /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0 items-center", children: /* @__PURE__ */ jsx(
|
|
306
|
-
ArrowUp,
|
|
307
|
-
{
|
|
308
|
-
className: "text-primary/85 size-3.5 shrink-0 self-center opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",
|
|
309
|
-
strokeWidth: 2.25,
|
|
310
|
-
"aria-hidden": true
|
|
311
|
-
}
|
|
312
|
-
) })
|
|
313
|
-
}
|
|
314
|
-
);
|
|
315
|
-
}
|
|
316
|
-
var TableHead = React.forwardRef(
|
|
317
|
-
({
|
|
318
|
-
className,
|
|
319
|
-
columnId,
|
|
320
|
-
children,
|
|
321
|
-
activeSort,
|
|
322
|
-
onColumnResizeStart,
|
|
323
|
-
isColumnResizing,
|
|
324
|
-
style,
|
|
325
|
-
headerEnd,
|
|
326
|
-
...props
|
|
327
|
-
}, ref) => {
|
|
328
|
-
const config = React.useContext(TableConfigContext) ?? defaultTableConfig;
|
|
329
|
-
const showSortUI = config.enableColumnSort && columnId !== void 0 && config.sortableColumnIds.has(columnId);
|
|
330
|
-
const isActiveSort = showSortUI && (activeSort === "asc" || activeSort === "desc");
|
|
331
|
-
const hasHeaderEnd = headerEnd != null && headerEnd !== false;
|
|
332
|
-
const showResizer = config.enableColumnResize && typeof onColumnResizeStart === "function";
|
|
333
|
-
const drag = columnId ? columnDragThClasses(config, columnId) : void 0;
|
|
334
|
-
return /* @__PURE__ */ jsxs(
|
|
335
|
-
"th",
|
|
336
|
-
{
|
|
337
|
-
ref,
|
|
338
|
-
"data-resizing": isColumnResizing ? 1 : void 0,
|
|
339
|
-
"data-slot": "table-head",
|
|
340
|
-
"data-column-id": columnId,
|
|
341
|
-
"data-sortable": showSortUI ? "true" : void 0,
|
|
342
|
-
"data-sorted": isActiveSort ? activeSort ?? void 0 : void 0,
|
|
343
|
-
"aria-sort": isActiveSort && activeSort ? activeSort === "desc" ? "descending" : "ascending" : showSortUI ? "none" : void 0,
|
|
344
|
-
className: cn(
|
|
345
|
-
"h-10 min-w-0 px-3 text-left align-middle text-sm font-bold text-primary transition-colors duration-0 md:h-12 md:px-4 [&:has([role=checkbox])]:pr-0",
|
|
346
|
-
!drag && "border-b border-primary/10",
|
|
347
|
-
showResizer && "relative",
|
|
348
|
-
// th cursor-pointer is often overridden by child button default cursor
|
|
349
|
-
(showSortUI || hasHeaderEnd) && "group hover:bg-primary/5 [&_button]:cursor-pointer",
|
|
350
|
-
drag,
|
|
351
|
-
isColumnResizing && "opacity-100",
|
|
352
|
-
className
|
|
353
|
-
),
|
|
354
|
-
style,
|
|
355
|
-
...props,
|
|
356
|
-
children: [
|
|
357
|
-
showSortUI ? /* @__PURE__ */ jsxs("span", { className: "inline-flex h-full w-full min-h-0 min-w-0 max-w-full items-center justify-start gap-0.5", children: [
|
|
358
|
-
/* @__PURE__ */ jsx("span", { className: "min-h-0 min-w-0 flex-1 text-left [&_[data-slot=table-column-drag-handle]]:cursor-grab [&_[data-slot=table-column-drag-handle]]:active:cursor-grabbing", children }),
|
|
359
|
-
hasHeaderEnd ? /* @__PURE__ */ jsx("span", { className: "inline-flex min-h-0 min-w-0 shrink-0 items-center", children: headerEnd }) : null
|
|
360
|
-
] }) : hasHeaderEnd ? /* @__PURE__ */ jsxs("span", { className: "inline-flex h-full w-full min-h-0 min-w-0 max-w-full items-center justify-start gap-0.5", children: [
|
|
361
|
-
/* @__PURE__ */ jsx("span", { className: "min-h-0 min-w-0 flex-1 text-left [&_[data-slot=table-column-drag-handle]]:cursor-grab [&_[data-slot=table-column-drag-handle]]:active:cursor-grabbing", children }),
|
|
362
|
-
/* @__PURE__ */ jsx("span", { className: "inline-flex min-h-0 min-w-0 shrink-0 items-center", children: headerEnd })
|
|
363
|
-
] }) : children,
|
|
364
|
-
showResizer && /* @__PURE__ */ jsx(
|
|
365
|
-
"div",
|
|
366
|
-
{
|
|
367
|
-
role: "separator",
|
|
368
|
-
title: "Drag to resize",
|
|
369
|
-
onMouseDown: onColumnResizeStart,
|
|
370
|
-
onTouchStart: onColumnResizeStart,
|
|
371
|
-
className: cn(
|
|
372
|
-
// keep handle inside this th — negative right overlapped the next cell (bad with sticky/pinned columns)
|
|
373
|
-
"absolute top-0 right-0 z-1 h-full w-2.5 min-w-2.5 max-w-2.5 touch-none",
|
|
374
|
-
"cursor-col-resize select-none",
|
|
375
|
-
isColumnResizing ? "bg-primary/35" : "bg-primary/0 hover:bg-primary/25"
|
|
376
|
-
),
|
|
377
|
-
"data-slot": "table-column-resize-handle",
|
|
378
|
-
"aria-hidden": true
|
|
379
|
-
}
|
|
380
|
-
)
|
|
381
|
-
]
|
|
382
|
-
}
|
|
383
|
-
);
|
|
384
|
-
}
|
|
385
|
-
);
|
|
386
|
-
TableHead.displayName = "TableHead";
|
|
387
|
-
var TableCell = React.forwardRef(
|
|
388
|
-
({ className, style, columnId, ...props }, ref) => {
|
|
389
|
-
const config = React.useContext(TableConfigContext) ?? defaultTableConfig;
|
|
390
|
-
const drag = columnId ? columnDragTdClasses(config, columnId) : void 0;
|
|
391
|
-
const columnDragStrip = Boolean(drag);
|
|
392
|
-
return /* @__PURE__ */ jsx(
|
|
393
|
-
"td",
|
|
394
|
-
{
|
|
395
|
-
ref,
|
|
396
|
-
"data-slot": "table-cell",
|
|
397
|
-
"data-table-column-drag-strip": columnDragStrip ? "" : void 0,
|
|
398
|
-
className: cn(
|
|
399
|
-
"min-w-0 border-b border-primary/10 p-3 align-middle text-sm text-primary/90 md:p-4 [&:has([role=checkbox])]:pr-0",
|
|
400
|
-
drag,
|
|
401
|
-
className
|
|
402
|
-
),
|
|
403
|
-
style,
|
|
404
|
-
"data-column-id": columnId,
|
|
405
|
-
...props
|
|
406
|
-
}
|
|
407
|
-
);
|
|
408
|
-
}
|
|
409
|
-
);
|
|
410
|
-
TableCell.displayName = "TableCell";
|
|
411
|
-
|
|
412
|
-
export { Table, TableBody, TableCell, TableColumnDragHandle, TableFooter, TableHead, TableHeader, TableHeaderSortControl, TableRow, setColumnDragPreview };
|
|
413
|
-
//# sourceMappingURL=table.js.map
|
|
414
|
-
//# sourceMappingURL=table.js.map
|
package/dist/react/table.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/utils.ts","../../src/react/table.tsx"],"names":["TableColumnDragHandle"],"mappings":"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","file":"table.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { ArrowDown, ArrowUp, GripVertical } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport type TableColumnDragState = {\n /** column id you are currently dragging, or `null` */\n draggingId: string | null;\n /** id of the th under the cursor, or `null` */\n dropTargetId: string | null;\n};\n\nexport type TableConfigValue = {\n sortableColumnIds: ReadonlySet<string>;\n enableColumnSort: boolean;\n enableColumnReorder: boolean;\n enableColumnResize: boolean;\n /**\n * when set (usually from host table state), `TableHead` / `TableCell` with\n * matching `columnId` get consistent column-drag visuals\n */\n columnDragState: TableColumnDragState | null;\n};\n\nconst defaultTableConfig: TableConfigValue = {\n sortableColumnIds: new Set(),\n enableColumnSort: true,\n enableColumnReorder: false,\n enableColumnResize: false,\n columnDragState: null,\n};\n\nconst TableConfigContext = React.createContext<TableConfigValue | null>(null);\nTableConfigContext.displayName = \"TableConfigContext\";\n\n/**\n * a compact card under the cursor so a column grab feels like moving the column, not\n * a tiny icon. call from `onDragStart` of {@link TableColumnDragHandle} or your handle.\n */\nexport function setColumnDragPreview(\n e: React.DragEvent,\n options: { title: string; width?: number; height?: number; hotspotX?: number; hotspotY?: number },\n) {\n if (!e.dataTransfer) return;\n e.dataTransfer.effectAllowed = \"move\";\n const width = options.width ?? 80;\n const height = options.height ?? 100;\n const el = document.createElement(\"div\");\n el.setAttribute(\"data-table-drag-preview\", \"\");\n const dark =\n typeof window !== \"undefined\" &&\n window.matchMedia &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const bg = dark ? \"rgba(24,24,26,0.95)\" : \"rgba(255,255,255,0.96)\";\n const fg = dark ? \"rgba(250,250,250,0.95)\" : \"rgba(10,10,10,0.92)\";\n const border = dark\n ? \"1px solid rgba(255,255,255,0.12)\"\n : \"1px solid rgba(0,0,0,0.1)\";\n const shadow = \"0 12px 32px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.04)\";\n el.style.cssText = [\n \"position:fixed\",\n \"left:0\",\n \"top:0\",\n \"z-index:100000\",\n \"pointer-events:none\",\n \"box-sizing:border-box\",\n `width:${width}px`,\n `min-height:${height}px`,\n \"display:flex\",\n \"flex-direction:column\",\n \"align-items:center\",\n \"justify-content:flex-start\",\n \"gap:8px\",\n `padding:10px 8px 12px`,\n `color:${fg}`,\n `background:${bg}`,\n `border:${border}`,\n \"border-radius:8px\",\n `box-shadow:${shadow}`,\n ].join(\";\");\n const bar = document.createElement(\"div\");\n bar.style.cssText = `width:3px;flex:1;min-height:32px;border-radius:2px;background:${\n dark ? \"rgba(80,200,150,0.4)\" : \"rgba(20,80,200,0.2)\"\n };align-self:stretch;`;\n const t = document.createElement(\"div\");\n t.textContent = options.title;\n t.style.cssText =\n \"font:600 11px/1.2 system-ui,-apple-system,sans-serif;text-align:center;word-break:break-word;max-width:100%;\";\n el.appendChild(t);\n el.appendChild(bar);\n el.style.minHeight = `${height}px`;\n document.body.appendChild(el);\n void el.offsetWidth;\n e.dataTransfer.setDragImage(\n el,\n options.hotspotX ?? width / 2,\n options.hotspotY ?? 28,\n );\n requestAnimationFrame(() => {\n if (el.parentNode) el.parentNode.removeChild(el);\n });\n}\n\n/** source column (being dragged) and drop target use the same strip treatment */\nconst COLUMN_DRAG_TH_STRIP =\n \"relative z-20 box-border overflow-hidden rounded-t-lg border border-primary/20 bg-primary/8 opacity-70 shadow-sm\";\nconst COLUMN_DRAG_TD_STRIP =\n \"overflow-hidden border-x border-primary/15 bg-primary/5 opacity-70\";\n\nconst columnDragThClasses = (config: TableConfigValue, columnId: string) => {\n if (!config.enableColumnReorder || !config.columnDragState) return undefined;\n const d = config.columnDragState;\n const isSource = d.draggingId === columnId;\n const isDrop =\n d.dropTargetId === columnId &&\n d.draggingId != null &&\n d.draggingId !== columnId;\n if (isSource || isDrop) {\n return COLUMN_DRAG_TH_STRIP;\n }\n return undefined;\n};\n\nconst columnDragTdClasses = (config: TableConfigValue, columnId: string) => {\n if (!config.enableColumnReorder || !config.columnDragState) return undefined;\n const d = config.columnDragState;\n const isSource = d.draggingId === columnId;\n const isDrop =\n d.dropTargetId === columnId &&\n d.draggingId != null &&\n d.draggingId !== columnId;\n if (isSource || isDrop) {\n return COLUMN_DRAG_TD_STRIP;\n }\n return undefined;\n};\n\nexport type TableLayoutProps = {\n containerClassName?: string;\n sortableColumns?: readonly string[];\n enableColumnSort?: boolean;\n enableColumnReorder?: boolean;\n enableColumnResize?: boolean;\n /** pass `columnDragState` from the host (e.g. which column is being reordered) */\n columnDragState?: TableColumnDragState | null;\n};\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.ComponentProps<\"table\"> & TableLayoutProps\n>(\n (\n {\n className,\n containerClassName,\n sortableColumns,\n enableColumnSort: enableColumnSortFromProps,\n enableColumnReorder: enableColumnReorderFromProps,\n enableColumnResize: enableColumnResizeFromProps,\n columnDragState: columnDragStateFromProps,\n ...props\n },\n ref,\n ) => {\n const config = React.useMemo<TableConfigValue>(() => {\n const sortableColumnIds = new Set(sortableColumns ?? []);\n return {\n sortableColumnIds,\n enableColumnSort: enableColumnSortFromProps ?? true,\n enableColumnReorder: enableColumnReorderFromProps ?? false,\n enableColumnResize: enableColumnResizeFromProps ?? false,\n columnDragState: columnDragStateFromProps ?? null,\n };\n }, [\n sortableColumns,\n enableColumnSortFromProps,\n enableColumnReorderFromProps,\n enableColumnResizeFromProps,\n columnDragStateFromProps,\n ]);\n\n return (\n <div\n data-slot=\"table-container\"\n data-table-sort={config.enableColumnSort ? \"on\" : \"off\"}\n data-table-reorder={config.enableColumnReorder ? \"on\" : \"off\"}\n data-table-resize={config.enableColumnResize ? \"on\" : \"off\"}\n className={cn(\"relative w-full overflow-x-auto\", containerClassName)}\n >\n <TableConfigContext.Provider value={config}>\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn(\n \"min-w-full w-max caption-bottom text-sm\",\n className,\n )}\n {...props}\n />\n </TableConfigContext.Provider>\n </div>\n );\n },\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"thead\">\n>(({ className, ...props }, ref) => {\n const config = React.useContext(TableConfigContext) ?? defaultTableConfig;\n const hasSortableColumns =\n config.enableColumnSort && config.sortableColumnIds.size > 0;\n\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n className={cn(\n hasSortableColumns && \"[&_tr:hover]:bg-transparent!\",\n className,\n )}\n {...props}\n />\n );\n});\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tbody\">\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n className={cn(\n \"[&>tr:last-child>td:not([data-table-column-drag-strip])]:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tfoot\">\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n className={cn(\n \"border-t border-primary/10 bg-primary/5 font-medium\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.ComponentProps<\"tr\">\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n className={cn(\n \"transition-colors duration-0 hover:bg-primary/3 data-[state=selected]:bg-primary/10\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\n/** same idea as sort chevrons: icon only, slightly larger than the 3.5 sort arrows */\nconst columnDragHandleIconClass = cn(\n \"text-primary/55 hover:text-primary/80\",\n \"cursor-grab active:cursor-grabbing touch-none\",\n \"shrink-0\",\n);\n\nexport type TableColumnDragHandleProps = Omit<\n React.ComponentProps<\"span\">,\n \"onDragStart\" | \"onDragEnd\"\n> & {\n /** must match the column & `dataTransfer` / tanstack `columnId` */\n columnId: string;\n onDragStart?: (e: React.DragEvent<HTMLSpanElement>) => void;\n onDragEnd?: (e: React.DragEvent<HTMLSpanElement>) => void;\n /**\n * label on the custom drag “card” under the cursor; omit for a default “Column”\n * placeholder (still more readable than the default browser ghost)\n */\n previewLabel?: string;\n};\n\nconst TableColumnDragHandle = React.forwardRef<\n HTMLSpanElement,\n TableColumnDragHandleProps\n>(function TableColumnDragHandle(\n { columnId, previewLabel, className, onDragStart, onDragEnd, title, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex select-none items-center justify-center\",\n columnDragHandleIconClass,\n className,\n )}\n title={title ?? \"Drag to reorder this column\"}\n tabIndex={-1}\n aria-label=\"Drag to reorder this column\"\n draggable\n onDragStart={(e) => {\n e.dataTransfer.setData(\"text/plain\", columnId);\n setColumnDragPreview(e, { title: previewLabel ?? \"Column\" });\n onDragStart?.(e);\n }}\n onDragEnd={onDragEnd}\n onClick={(ev) => ev.stopPropagation()}\n onKeyDown={(ev) => {\n if (ev.key === \" \" || ev.key === \"Enter\") {\n ev.preventDefault();\n }\n ev.stopPropagation();\n }}\n data-slot=\"table-column-drag-handle\"\n {...rest}\n >\n <GripVertical\n className=\"size-4 pointer-events-none\"\n strokeWidth={2.25}\n aria-hidden\n />\n </span>\n );\n});\nTableColumnDragHandle.displayName = \"TableColumnDragHandle\";\n\nexport type TableHeaderSortControlProps = {\n activeSort?: \"asc\" | \"desc\" | null;\n onRequest?: (e: React.MouseEvent) => void;\n className?: string;\n};\n\n/** chevron / sort control — place in the same row as the title (e.g. inside a narrow `inline-flex` with `gap-1`) */\nexport function TableHeaderSortControl({\n activeSort,\n onRequest,\n className,\n}: TableHeaderSortControlProps) {\n const isActiveSort = activeSort === \"asc\" || activeSort === \"desc\";\n return (\n <span\n className={cn(\"inline-flex shrink-0 items-stretch pl-0\", className)}\n >\n {onRequest ? (\n <span className=\"flex shrink-0 items-stretch\">\n <button\n type=\"button\"\n className=\"text-primary/90 hover:text-primary/95 inline-flex min-h-10 w-8 min-w-8 touch-manipulation items-center justify-center self-center rounded p-0 md:min-h-12\"\n onClick={(e) => {\n e.stopPropagation();\n onRequest(e);\n }}\n title=\"Change sort\"\n aria-label=\"Change sort order\"\n >\n {isActiveSort ? (\n activeSort === \"desc\" ? (\n <ArrowDown\n className=\"size-3.5 shrink-0\"\n strokeWidth={2.25}\n aria-hidden\n />\n ) : (\n <ArrowUp\n className=\"size-3.5 shrink-0\"\n strokeWidth={2.25}\n aria-hidden\n />\n )\n ) : (\n <ArrowUp\n className=\"text-primary/85 size-3.5 shrink-0 opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n strokeWidth={2.25}\n aria-hidden\n />\n )}\n </button>\n </span>\n ) : isActiveSort ? (\n <span className=\"inline-flex shrink-0 items-center\">\n {activeSort === \"desc\" ? (\n <ArrowDown\n className=\"size-3.5 shrink-0 self-center text-primary/90\"\n strokeWidth={2.25}\n aria-hidden\n />\n ) : (\n <ArrowUp\n className=\"size-3.5 shrink-0 self-center text-primary/90\"\n strokeWidth={2.25}\n aria-hidden\n />\n )}\n </span>\n ) : (\n <span className=\"inline-flex shrink-0 items-center\">\n <ArrowUp\n className=\"text-primary/85 size-3.5 shrink-0 self-center opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n strokeWidth={2.25}\n aria-hidden\n />\n </span>\n )}\n </span>\n );\n}\n\nexport type TableHeadProps = React.ComponentProps<\"th\"> & {\n columnId?: string;\n activeSort?: \"asc\" | \"desc\" | null;\n onColumnResizeStart?: (\n e: React.MouseEvent | React.TouchEvent | HTMLDivElement,\n ) => void;\n isColumnResizing?: boolean;\n /**\n * rendered at the far right of the head (e.g. column menu), after the label\n * and sort chevrons\n */\n headerEnd?: React.ReactNode;\n};\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n (\n {\n className,\n columnId,\n children,\n activeSort,\n onColumnResizeStart,\n isColumnResizing,\n style,\n headerEnd,\n ...props\n },\n ref,\n ) => {\n const config = React.useContext(TableConfigContext) ?? defaultTableConfig;\n const showSortUI =\n config.enableColumnSort &&\n columnId !== undefined &&\n config.sortableColumnIds.has(columnId);\n const isActiveSort =\n showSortUI && (activeSort === \"asc\" || activeSort === \"desc\");\n const hasHeaderEnd = headerEnd != null && headerEnd !== false;\n const showResizer =\n config.enableColumnResize && typeof onColumnResizeStart === \"function\";\n const drag = columnId ? columnDragThClasses(config, columnId) : undefined;\n\n return (\n <th\n ref={ref}\n data-resizing={isColumnResizing ? 1 : undefined}\n data-slot=\"table-head\"\n data-column-id={columnId}\n data-sortable={showSortUI ? \"true\" : undefined}\n data-sorted={isActiveSort ? (activeSort ?? undefined) : undefined}\n aria-sort={\n isActiveSort && activeSort\n ? activeSort === \"desc\"\n ? \"descending\"\n : \"ascending\"\n : showSortUI\n ? \"none\"\n : undefined\n }\n className={cn(\n \"h-10 min-w-0 px-3 text-left align-middle text-sm font-bold text-primary transition-colors duration-0 md:h-12 md:px-4 [&:has([role=checkbox])]:pr-0\",\n !drag && \"border-b border-primary/10\",\n showResizer && \"relative\",\n // th cursor-pointer is often overridden by child button default cursor\n (showSortUI || hasHeaderEnd) &&\n \"group hover:bg-primary/5 [&_button]:cursor-pointer\",\n drag,\n isColumnResizing && \"opacity-100\",\n className,\n )}\n style={style}\n {...props}\n >\n {showSortUI ? (\n <span className=\"inline-flex h-full w-full min-h-0 min-w-0 max-w-full items-center justify-start gap-0.5\">\n <span className=\"min-h-0 min-w-0 flex-1 text-left [&_[data-slot=table-column-drag-handle]]:cursor-grab [&_[data-slot=table-column-drag-handle]]:active:cursor-grabbing\">\n {children}\n </span>\n {hasHeaderEnd ? (\n <span className=\"inline-flex min-h-0 min-w-0 shrink-0 items-center\">\n {headerEnd}\n </span>\n ) : null}\n </span>\n ) : hasHeaderEnd ? (\n <span className=\"inline-flex h-full w-full min-h-0 min-w-0 max-w-full items-center justify-start gap-0.5\">\n <span className=\"min-h-0 min-w-0 flex-1 text-left [&_[data-slot=table-column-drag-handle]]:cursor-grab [&_[data-slot=table-column-drag-handle]]:active:cursor-grabbing\">\n {children}\n </span>\n <span className=\"inline-flex min-h-0 min-w-0 shrink-0 items-center\">\n {headerEnd}\n </span>\n </span>\n ) : (\n children\n )}\n {showResizer && (\n <div\n role=\"separator\"\n title=\"Drag to resize\"\n onMouseDown={onColumnResizeStart as React.MouseEventHandler}\n onTouchStart={onColumnResizeStart as React.TouchEventHandler}\n className={cn(\n // keep handle inside this th — negative right overlapped the next cell (bad with sticky/pinned columns)\n \"absolute top-0 right-0 z-1 h-full w-2.5 min-w-2.5 max-w-2.5 touch-none\",\n \"cursor-col-resize select-none\",\n isColumnResizing\n ? \"bg-primary/35\"\n : \"bg-primary/0 hover:bg-primary/25\",\n )}\n data-slot=\"table-column-resize-handle\"\n aria-hidden\n />\n )}\n </th>\n );\n },\n);\nTableHead.displayName = \"TableHead\";\n\nexport type TableCellProps = React.ComponentProps<\"td\"> & {\n /**\n * same `columnId` as `TableHead` in that column so body cells pick up\n * {@link TableConfigValue.columnDragState} styling\n */\n columnId?: string;\n};\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, style, columnId, ...props }, ref) => {\n const config = React.useContext(TableConfigContext) ?? defaultTableConfig;\n const drag = columnId ? columnDragTdClasses(config, columnId) : undefined;\n const columnDragStrip = Boolean(drag);\n\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n data-table-column-drag-strip={columnDragStrip ? \"\" : undefined}\n className={cn(\n \"min-w-0 border-b border-primary/10 p-3 align-middle text-sm text-primary/90 md:p-4 [&:has([role=checkbox])]:pr-0\",\n drag,\n className,\n )}\n style={style}\n data-column-id={columnId}\n {...props}\n />\n );\n },\n);\nTableCell.displayName = \"TableCell\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableRow,\n TableColumnDragHandle,\n TableHead,\n TableCell,\n};\n\nexport type { TableLayoutProps as TableProps };"]}
|
package/dist/react/tabs.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
type TabsVariant = "pill" | "underline" | "box";
|
|
4
|
-
type TabsAlignment = "horizontal" | "vertical";
|
|
5
|
-
type TabsTriggerLayout = "row" | "stacked";
|
|
6
|
-
interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
-
defaultValue?: string;
|
|
8
|
-
value?: string;
|
|
9
|
-
onValueChange?: (value: string) => void;
|
|
10
|
-
/** `pill` — compact pill track (default). `box` — larger padding, `rounded-xl` sliding fill. `underline` — border row + clip-path bar. */
|
|
11
|
-
variant?: TabsVariant;
|
|
12
|
-
/** Tab list layout: row (default) or stacked sidebar with panel beside it from `md` up; below `md`, vertical is shown as horizontal. */
|
|
13
|
-
alignment?: TabsAlignment;
|
|
14
|
-
children: React.ReactNode;
|
|
15
|
-
}
|
|
16
|
-
declare const Tabs: React.FC<TabsProps>;
|
|
17
|
-
interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
18
|
-
}
|
|
19
|
-
declare const TabsList: React.FC<TabsListProps>;
|
|
20
|
-
interface TabsTriggerProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
21
|
-
value?: string;
|
|
22
|
-
icon?: React.ReactNode;
|
|
23
|
-
iconPosition?: "left" | "right";
|
|
24
|
-
/** `stacked` — icon above label (needs `icon`). `row` — default inline row. */
|
|
25
|
-
layout?: TabsTriggerLayout;
|
|
26
|
-
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
27
|
-
}
|
|
28
|
-
declare const TabsTrigger: React.FC<TabsTriggerProps>;
|
|
29
|
-
interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
30
|
-
value: string;
|
|
31
|
-
}
|
|
32
|
-
declare const TabsContent: React.FC<TabsContentProps>;
|
|
33
|
-
|
|
34
|
-
export { Tabs, type TabsAlignment, TabsContent, TabsList, TabsTrigger, type TabsTriggerLayout, type TabsVariant };
|