@docyrus/shadcn 1.2.1 → 1.3.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.
Files changed (52) hide show
  1. package/dist/data-table-DWI8FPWh.d.ts +209 -0
  2. package/dist/hooks/index.d.ts +5 -0
  3. package/dist/hooks/index.js +300 -16
  4. package/dist/hooks/index.js.map +1 -1
  5. package/dist/hooks/use-data-table.d.ts +29 -0
  6. package/dist/hooks/use-data-table.js +322 -0
  7. package/dist/hooks/use-data-table.js.map +1 -0
  8. package/dist/index.d.ts +87 -25
  9. package/dist/index.js +2504 -1151
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/data-table.d.ts +4 -0
  12. package/dist/lib/data-table.js +100 -0
  13. package/dist/lib/data-table.js.map +1 -0
  14. package/dist/lib/index.d.ts +4 -0
  15. package/dist/lib/index.js +155 -1
  16. package/dist/lib/index.js.map +1 -1
  17. package/dist/lib/parsers.d.ts +4 -0
  18. package/dist/lib/parsers.js +94 -0
  19. package/dist/lib/parsers.js.map +1 -0
  20. package/dist/radix-vega/data-table-column-header.d.ts +13 -0
  21. package/dist/radix-vega/data-table-column-header.js +178 -0
  22. package/dist/radix-vega/data-table-column-header.js.map +1 -0
  23. package/dist/radix-vega/data-table-date-filter.d.ts +11 -0
  24. package/dist/radix-vega/data-table-date-filter.js +470 -0
  25. package/dist/radix-vega/data-table-date-filter.js.map +1 -0
  26. package/dist/radix-vega/data-table-faceted-filter.d.ts +166 -0
  27. package/dist/radix-vega/data-table-faceted-filter.js +468 -0
  28. package/dist/radix-vega/data-table-faceted-filter.js.map +1 -0
  29. package/dist/radix-vega/data-table-pagination.d.ts +10 -0
  30. package/dist/radix-vega/data-table-pagination.js +286 -0
  31. package/dist/radix-vega/data-table-pagination.js.map +1 -0
  32. package/dist/radix-vega/data-table-skeleton.d.ts +14 -0
  33. package/dist/radix-vega/data-table-skeleton.js +151 -0
  34. package/dist/radix-vega/data-table-skeleton.js.map +1 -0
  35. package/dist/radix-vega/data-table-slider-filter.d.ts +10 -0
  36. package/dist/radix-vega/data-table-slider-filter.js +387 -0
  37. package/dist/radix-vega/data-table-slider-filter.js.map +1 -0
  38. package/dist/radix-vega/data-table-toolbar.d.ts +10 -0
  39. package/dist/radix-vega/data-table-toolbar.js +1272 -0
  40. package/dist/radix-vega/data-table-toolbar.js.map +1 -0
  41. package/dist/radix-vega/data-table-view-options.d.ts +13 -0
  42. package/dist/radix-vega/data-table-view-options.js +314 -0
  43. package/dist/radix-vega/data-table-view-options.js.map +1 -0
  44. package/dist/radix-vega/data-table.d.ts +11 -0
  45. package/dist/radix-vega/data-table.js +429 -0
  46. package/dist/radix-vega/data-table.js.map +1 -0
  47. package/dist/radix-vega/index.d.ts +10 -0
  48. package/dist/radix-vega/index.js +2170 -1156
  49. package/dist/radix-vega/index.js.map +1 -1
  50. package/dist/radix-vega/relative-time-card.d.ts +2 -7
  51. package/dist/radix-vega/relative-time-card.js.map +1 -1
  52. package/package.json +4 -3
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Table } from '@tanstack/react-table';
3
+ import * as React from 'react';
4
+
5
+ interface DataTableProps<TData> extends React.ComponentProps<"div"> {
6
+ table: Table<TData>;
7
+ actionBar?: React.ReactNode;
8
+ }
9
+ declare function DataTable<TData>({ table, actionBar, children, className, ...props }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
10
+
11
+ export { DataTable };
@@ -0,0 +1,429 @@
1
+ import { flexRender } from '@tanstack/react-table';
2
+ import { ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight, ChevronDownIcon, CheckIcon, ChevronUpIcon } from 'lucide-react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { Select as Select$1, Slot } from 'radix-ui';
5
+ import { clsx } from 'clsx';
6
+ import { twMerge } from 'tailwind-merge';
7
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
+
9
+ // src/radix-vega/data-table.tsx
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ var buttonVariants = cva(
14
+ "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
15
+ {
16
+ variants: {
17
+ variant: {
18
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
19
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
20
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
21
+ ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
22
+ destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
23
+ link: "text-primary underline-offset-4 hover:underline"
24
+ },
25
+ size: {
26
+ default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
27
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
28
+ sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
29
+ lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
30
+ icon: "size-9",
31
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
32
+ "icon-sm": "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
33
+ "icon-lg": "size-10"
34
+ }
35
+ },
36
+ defaultVariants: {
37
+ variant: "default",
38
+ size: "default"
39
+ }
40
+ }
41
+ );
42
+ function Button({
43
+ className,
44
+ variant = "default",
45
+ size = "default",
46
+ asChild = false,
47
+ ...props
48
+ }) {
49
+ const Comp = asChild ? Slot.Root : "button";
50
+ return /* @__PURE__ */ jsx(
51
+ Comp,
52
+ {
53
+ "data-slot": "button",
54
+ "data-variant": variant,
55
+ "data-size": size,
56
+ className: cn(buttonVariants({ variant, size, className })),
57
+ ...props
58
+ }
59
+ );
60
+ }
61
+ function Select({
62
+ ...props
63
+ }) {
64
+ return /* @__PURE__ */ jsx(Select$1.Root, { "data-slot": "select", ...props });
65
+ }
66
+ function SelectValue({
67
+ ...props
68
+ }) {
69
+ return /* @__PURE__ */ jsx(Select$1.Value, { "data-slot": "select-value", ...props });
70
+ }
71
+ function SelectTrigger({
72
+ className,
73
+ size = "default",
74
+ children,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsxs(
78
+ Select$1.Trigger,
79
+ {
80
+ "data-slot": "select-trigger",
81
+ "data-size": size,
82
+ className: cn(
83
+ "border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
84
+ className
85
+ ),
86
+ ...props,
87
+ children: [
88
+ children,
89
+ /* @__PURE__ */ jsx(Select$1.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground size-4 pointer-events-none" }) })
90
+ ]
91
+ }
92
+ );
93
+ }
94
+ function SelectContent({
95
+ className,
96
+ children,
97
+ position = "item-aligned",
98
+ align = "center",
99
+ ...props
100
+ }) {
101
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(
102
+ Select$1.Content,
103
+ {
104
+ "data-slot": "select-content",
105
+ "data-align-trigger": position === "item-aligned",
106
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
107
+ position,
108
+ align,
109
+ ...props,
110
+ children: [
111
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
112
+ /* @__PURE__ */ jsx(
113
+ Select$1.Viewport,
114
+ {
115
+ "data-position": position,
116
+ className: cn(
117
+ "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
118
+ position === "popper" && ""
119
+ ),
120
+ children
121
+ }
122
+ ),
123
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
124
+ ]
125
+ }
126
+ ) });
127
+ }
128
+ function SelectItem({
129
+ className,
130
+ children,
131
+ ...props
132
+ }) {
133
+ return /* @__PURE__ */ jsxs(
134
+ Select$1.Item,
135
+ {
136
+ "data-slot": "select-item",
137
+ className: cn(
138
+ "focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
139
+ className
140
+ ),
141
+ ...props,
142
+ children: [
143
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) }) }),
144
+ /* @__PURE__ */ jsx(Select$1.ItemText, { children })
145
+ ]
146
+ }
147
+ );
148
+ }
149
+ function SelectScrollUpButton({
150
+ className,
151
+ ...props
152
+ }) {
153
+ return /* @__PURE__ */ jsx(
154
+ Select$1.ScrollUpButton,
155
+ {
156
+ "data-slot": "select-scroll-up-button",
157
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
158
+ ...props,
159
+ children: /* @__PURE__ */ jsx(
160
+ ChevronUpIcon,
161
+ {}
162
+ )
163
+ }
164
+ );
165
+ }
166
+ function SelectScrollDownButton({
167
+ className,
168
+ ...props
169
+ }) {
170
+ return /* @__PURE__ */ jsx(
171
+ Select$1.ScrollDownButton,
172
+ {
173
+ "data-slot": "select-scroll-down-button",
174
+ className: cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", className),
175
+ ...props,
176
+ children: /* @__PURE__ */ jsx(
177
+ ChevronDownIcon,
178
+ {}
179
+ )
180
+ }
181
+ );
182
+ }
183
+ function DataTablePagination({
184
+ table,
185
+ pageSizeOptions = [10, 20, 30, 40, 50],
186
+ className,
187
+ ...props
188
+ }) {
189
+ return /* @__PURE__ */ jsxs(
190
+ "div",
191
+ {
192
+ className: cn(
193
+ "flex w-full flex-col-reverse items-center justify-between gap-4 overflow-auto p-1 sm:flex-row sm:gap-8",
194
+ className
195
+ ),
196
+ ...props,
197
+ children: [
198
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 whitespace-nowrap text-muted-foreground text-sm", children: [
199
+ table.getFilteredSelectedRowModel().rows.length,
200
+ " of",
201
+ " ",
202
+ table.getFilteredRowModel().rows.length,
203
+ " row(s) selected."
204
+ ] }),
205
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col-reverse items-center gap-4 sm:flex-row sm:gap-6 lg:gap-8", children: [
206
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
207
+ /* @__PURE__ */ jsx("p", { className: "whitespace-nowrap font-medium text-sm", children: "Rows per page" }),
208
+ /* @__PURE__ */ jsxs(
209
+ Select,
210
+ {
211
+ value: `${table.getState().pagination.pageSize}`,
212
+ onValueChange: (value) => {
213
+ table.setPageSize(Number(value));
214
+ },
215
+ children: [
216
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "h-8 w-18 data-size:h-8", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: table.getState().pagination.pageSize }) }),
217
+ /* @__PURE__ */ jsx(SelectContent, { side: "top", children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ jsx(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
218
+ ]
219
+ }
220
+ )
221
+ ] }),
222
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center font-medium text-sm", children: [
223
+ "Page ",
224
+ table.getState().pagination.pageIndex + 1,
225
+ " of",
226
+ " ",
227
+ table.getPageCount()
228
+ ] }),
229
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
230
+ /* @__PURE__ */ jsx(
231
+ Button,
232
+ {
233
+ "aria-label": "Go to first page",
234
+ variant: "outline",
235
+ size: "icon",
236
+ className: "hidden size-8 lg:flex",
237
+ onClick: () => table.setPageIndex(0),
238
+ disabled: !table.getCanPreviousPage(),
239
+ children: /* @__PURE__ */ jsx(ChevronsLeft, {})
240
+ }
241
+ ),
242
+ /* @__PURE__ */ jsx(
243
+ Button,
244
+ {
245
+ "aria-label": "Go to previous page",
246
+ variant: "outline",
247
+ size: "icon",
248
+ className: "size-8",
249
+ onClick: () => table.previousPage(),
250
+ disabled: !table.getCanPreviousPage(),
251
+ children: /* @__PURE__ */ jsx(ChevronLeft, {})
252
+ }
253
+ ),
254
+ /* @__PURE__ */ jsx(
255
+ Button,
256
+ {
257
+ "aria-label": "Go to next page",
258
+ variant: "outline",
259
+ size: "icon",
260
+ className: "size-8",
261
+ onClick: () => table.nextPage(),
262
+ disabled: !table.getCanNextPage(),
263
+ children: /* @__PURE__ */ jsx(ChevronRight, {})
264
+ }
265
+ ),
266
+ /* @__PURE__ */ jsx(
267
+ Button,
268
+ {
269
+ "aria-label": "Go to last page",
270
+ variant: "outline",
271
+ size: "icon",
272
+ className: "hidden size-8 lg:flex",
273
+ onClick: () => table.setPageIndex(table.getPageCount() - 1),
274
+ disabled: !table.getCanNextPage(),
275
+ children: /* @__PURE__ */ jsx(ChevronsRight, {})
276
+ }
277
+ )
278
+ ] })
279
+ ] })
280
+ ]
281
+ }
282
+ );
283
+ }
284
+ function Table({ className, ...props }) {
285
+ return /* @__PURE__ */ jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx(
286
+ "table",
287
+ {
288
+ "data-slot": "table",
289
+ className: cn("w-full caption-bottom text-sm", className),
290
+ ...props
291
+ }
292
+ ) });
293
+ }
294
+ function TableHeader({ className, ...props }) {
295
+ return /* @__PURE__ */ jsx(
296
+ "thead",
297
+ {
298
+ "data-slot": "table-header",
299
+ className: cn("[&_tr]:border-b", className),
300
+ ...props
301
+ }
302
+ );
303
+ }
304
+ function TableBody({ className, ...props }) {
305
+ return /* @__PURE__ */ jsx(
306
+ "tbody",
307
+ {
308
+ "data-slot": "table-body",
309
+ className: cn("[&_tr:last-child]:border-0", className),
310
+ ...props
311
+ }
312
+ );
313
+ }
314
+ function TableRow({ className, ...props }) {
315
+ return /* @__PURE__ */ jsx(
316
+ "tr",
317
+ {
318
+ "data-slot": "table-row",
319
+ className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
320
+ ...props
321
+ }
322
+ );
323
+ }
324
+ function TableHead({ className, ...props }) {
325
+ return /* @__PURE__ */ jsx(
326
+ "th",
327
+ {
328
+ "data-slot": "table-head",
329
+ className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
330
+ ...props
331
+ }
332
+ );
333
+ }
334
+ function TableCell({ className, ...props }) {
335
+ return /* @__PURE__ */ jsx(
336
+ "td",
337
+ {
338
+ "data-slot": "table-cell",
339
+ className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
340
+ ...props
341
+ }
342
+ );
343
+ }
344
+
345
+ // src/lib/data-table.ts
346
+ function getColumnPinningStyle({
347
+ column
348
+ }) {
349
+ const isPinned = column.getIsPinned();
350
+ const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left");
351
+ const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right");
352
+ return {
353
+ boxShadow: isLastLeftPinnedColumn ? "-4px 0 4px -4px gray inset" : isFirstRightPinnedColumn ? "4px 0 4px -4px gray inset" : void 0,
354
+ left: isPinned === "left" ? `${column.getStart("left")}px` : void 0,
355
+ right: isPinned === "right" ? `${column.getAfter("right")}px` : void 0,
356
+ position: isPinned ? "sticky" : "relative",
357
+ width: column.getSize(),
358
+ zIndex: isPinned ? 1 : 0
359
+ };
360
+ }
361
+ function DataTable({
362
+ table,
363
+ actionBar,
364
+ children,
365
+ className,
366
+ ...props
367
+ }) {
368
+ return /* @__PURE__ */ jsxs(
369
+ "div",
370
+ {
371
+ className: cn("flex w-full flex-col gap-2.5 overflow-auto", className),
372
+ ...props,
373
+ children: [
374
+ children,
375
+ /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-md border", children: /* @__PURE__ */ jsxs(Table, { children: [
376
+ /* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(
377
+ TableHead,
378
+ {
379
+ colSpan: header.colSpan,
380
+ style: {
381
+ ...getColumnPinningStyle({ column: header.column })
382
+ },
383
+ children: header.isPlaceholder ? null : flexRender(
384
+ header.column.columnDef.header,
385
+ header.getContext()
386
+ )
387
+ },
388
+ header.id
389
+ )) }, headerGroup.id)) }),
390
+ /* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(
391
+ TableRow,
392
+ {
393
+ "data-state": row.getIsSelected() && "selected",
394
+ children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(
395
+ TableCell,
396
+ {
397
+ style: {
398
+ ...getColumnPinningStyle({ column: cell.column })
399
+ },
400
+ children: flexRender(
401
+ cell.column.columnDef.cell,
402
+ cell.getContext()
403
+ )
404
+ },
405
+ cell.id
406
+ ))
407
+ },
408
+ row.id
409
+ )) : /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
410
+ TableCell,
411
+ {
412
+ colSpan: table.getAllColumns().length,
413
+ className: "h-24 text-center",
414
+ children: "No results."
415
+ }
416
+ ) }) })
417
+ ] }) }),
418
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5", children: [
419
+ /* @__PURE__ */ jsx(DataTablePagination, { table }),
420
+ actionBar && table.getFilteredSelectedRowModel().rows.length > 0 && actionBar
421
+ ] })
422
+ ]
423
+ }
424
+ );
425
+ }
426
+
427
+ export { DataTable };
428
+ //# sourceMappingURL=data-table.js.map
429
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/button.tsx","../../src/radix-vega/select.tsx","../../src/radix-vega/data-table-pagination.tsx","../../src/radix-vega/table.tsx","../../src/lib/data-table.ts","../../src/radix-vega/data-table.tsx"],"names":["jsx","SelectPrimitive","jsxs"],"mappings":"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","file":"data-table.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from \"lucide-react\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"text-muted-foreground size-4 pointer-events-none\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n data-align-trigger={position === \"item-aligned\"}\n className={cn(\"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none\", position ===\"popper\"&&\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\", className )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n data-position={position}\n className={cn(\n \"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)\",\n position === \"popper\" && \"\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px pointer-events-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n <ChevronUpIcon\n />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n <ChevronDownIcon\n />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import type { Table } from \"@tanstack/react-table\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"@/radix-vega/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/radix-vega/select\";\nimport { cn } from \"@/lib/utils\";\n\ninterface DataTablePaginationProps<TData> extends React.ComponentProps<\"div\"> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 30, 40, 50],\n className,\n ...props\n}: DataTablePaginationProps<TData>) {\n return (\n <div\n className={cn(\n \"flex w-full flex-col-reverse items-center justify-between gap-4 overflow-auto p-1 sm:flex-row sm:gap-8\",\n className,\n )}\n {...props}\n >\n <div className=\"flex-1 whitespace-nowrap text-muted-foreground text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex flex-col-reverse items-center gap-4 sm:flex-row sm:gap-6 lg:gap-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"whitespace-nowrap font-medium text-sm\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-18 data-size:h-8\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex items-center justify-center font-medium text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n aria-label=\"Go to first page\"\n variant=\"outline\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft />\n </Button>\n <Button\n aria-label=\"Go to previous page\"\n variant=\"outline\"\n size=\"icon\"\n className=\"size-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft />\n </Button>\n <Button\n aria-label=\"Go to next page\"\n variant=\"outline\"\n size=\"icon\"\n className=\"size-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight />\n </Button>\n <Button\n aria-label=\"Go to last page\"\n variant=\"outline\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import type { Column } from \"@tanstack/react-table\";\n\nexport type DataTableConfig = typeof dataTableConfig;\n\nexport function getColumnPinningStyle<TData>({\n column,\n}: {\n column: Column<TData>;\n}): React.CSSProperties {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n return {\n boxShadow: isLastLeftPinnedColumn\n ? \"-4px 0 4px -4px gray inset\"\n : isFirstRightPinnedColumn\n ? \"4px 0 4px -4px gray inset\"\n : undefined,\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n };\n}\n\nexport const dataTableConfig = {\n textOperators: [\n { label: \"Contains\", value: \"iLike\" as const },\n { label: \"Does not contain\", value: \"notILike\" as const },\n { label: \"Is\", value: \"eq\" as const },\n { label: \"Is not\", value: \"ne\" as const },\n { label: \"Is empty\", value: \"isEmpty\" as const },\n { label: \"Is not empty\", value: \"isNotEmpty\" as const },\n ],\n numericOperators: [\n { label: \"Is\", value: \"eq\" as const },\n { label: \"Is not\", value: \"ne\" as const },\n { label: \"Is less than\", value: \"lt\" as const },\n { label: \"Is less than or equal to\", value: \"lte\" as const },\n { label: \"Is greater than\", value: \"gt\" as const },\n { label: \"Is greater than or equal to\", value: \"gte\" as const },\n { label: \"Is between\", value: \"isBetween\" as const },\n { label: \"Is empty\", value: \"isEmpty\" as const },\n { label: \"Is not empty\", value: \"isNotEmpty\" as const },\n ],\n dateOperators: [\n { label: \"Is\", value: \"eq\" as const },\n { label: \"Is not\", value: \"ne\" as const },\n { label: \"Is before\", value: \"lt\" as const },\n { label: \"Is after\", value: \"gt\" as const },\n { label: \"Is on or before\", value: \"lte\" as const },\n { label: \"Is on or after\", value: \"gte\" as const },\n { label: \"Is between\", value: \"isBetween\" as const },\n { label: \"Is relative to today\", value: \"isRelativeToToday\" as const },\n { label: \"Is empty\", value: \"isEmpty\" as const },\n { label: \"Is not empty\", value: \"isNotEmpty\" as const },\n ],\n selectOperators: [\n { label: \"Is\", value: \"eq\" as const },\n { label: \"Is not\", value: \"ne\" as const },\n { label: \"Is empty\", value: \"isEmpty\" as const },\n { label: \"Is not empty\", value: \"isNotEmpty\" as const },\n ],\n multiSelectOperators: [\n { label: \"Has any of\", value: \"inArray\" as const },\n { label: \"Has none of\", value: \"notInArray\" as const },\n { label: \"Is empty\", value: \"isEmpty\" as const },\n { label: \"Is not empty\", value: \"isNotEmpty\" as const },\n ],\n booleanOperators: [\n { label: \"Is\", value: \"eq\" as const },\n { label: \"Is not\", value: \"ne\" as const },\n ],\n sortOrders: [\n { label: \"Asc\", value: \"asc\" as const },\n { label: \"Desc\", value: \"desc\" as const },\n ],\n filterVariants: [\n \"text\",\n \"number\",\n \"range\",\n \"date\",\n \"dateRange\",\n \"boolean\",\n \"select\",\n \"multiSelect\",\n ] as const,\n operators: [\n \"iLike\",\n \"notILike\",\n \"eq\",\n \"ne\",\n \"inArray\",\n \"notInArray\",\n \"isEmpty\",\n \"isNotEmpty\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"isBetween\",\n \"isRelativeToToday\",\n ] as const,\n joinOperators: [\"and\", \"or\"] as const,\n};\n\n// Types\nimport type { ColumnSort, Row, RowData } from \"@tanstack/react-table\";\nimport type { FilterItemSchema } from \"@/lib/parsers\";\n\ndeclare module \"@tanstack/react-table\" {\n interface TableMeta<TData extends RowData> {\n queryKeys?: QueryKeys;\n }\n\n interface ColumnMeta<TData extends RowData, TValue> {\n label?: string;\n placeholder?: string;\n variant?: FilterVariant;\n options?: Option[];\n range?: [number, number];\n unit?: string;\n icon?: React.FC<React.SVGProps<SVGSVGElement>>;\n }\n}\n\nexport interface QueryKeys {\n page: string;\n perPage: string;\n sort: string;\n filters: string;\n joinOperator: string;\n}\n\nexport interface Option {\n label: string;\n value: string;\n count?: number;\n icon?: React.FC<React.SVGProps<SVGSVGElement>>;\n}\n\nexport type FilterOperator = DataTableConfig[\"operators\"][number];\nexport type FilterVariant = DataTableConfig[\"filterVariants\"][number];\nexport type JoinOperator = DataTableConfig[\"joinOperators\"][number];\n\nexport interface ExtendedColumnSort<TData> extends Omit<ColumnSort, \"id\"> {\n id: Extract<keyof TData, string>;\n}\n\nexport interface ExtendedColumnFilter<TData> extends FilterItemSchema {\n id: Extract<keyof TData, string>;\n}\n\nexport interface DataTableRowAction<TData> {\n row: Row<TData>;\n variant: \"update\" | \"delete\";\n}\n","import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"@/radix-vega/data-table-pagination\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/radix-vega/table\";\nimport { getColumnPinningStyle } from \"@/lib/data-table\";\nimport { cn } from \"@/lib/utils\";\n\ninterface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\"flex w-full flex-col gap-2.5 overflow-auto\", className)}\n {...props}\n >\n {children}\n <div className=\"overflow-hidden rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getColumnPinningStyle({ column: header.column }),\n }}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getColumnPinningStyle({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"h-24 text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex flex-col gap-2.5\">\n <DataTablePagination table={table} />\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"]}
@@ -25,6 +25,15 @@ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, Comma
25
25
  export { CompareSlider, CompareSliderAfter, CompareSliderBefore, CompareSliderHandle, CompareSliderLabel, CompareSliderProps } from './compare-slider.js';
26
26
  export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from './context-menu.js';
27
27
  export { Cropper, CropperArea, CropperAreaData, CropperImage, CropperObjectFit, CropperPoint, CropperProps, CropperShape, CropperSize, CropperVideo, useCropper } from './cropper.js';
28
+ export { DataTableColumnHeader } from './data-table-column-header.js';
29
+ export { DataTableDateFilter } from './data-table-date-filter.js';
30
+ export { DataTableFacetedFilter } from './data-table-faceted-filter.js';
31
+ export { DataTablePagination } from './data-table-pagination.js';
32
+ export { DataTableSkeleton } from './data-table-skeleton.js';
33
+ export { DataTableSliderFilter } from './data-table-slider-filter.js';
34
+ export { DataTableToolbar } from './data-table-toolbar.js';
35
+ export { DataTableViewOptions } from './data-table-view-options.js';
36
+ export { DataTable } from './data-table.js';
28
37
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './dialog.js';
29
38
  export { DirectionProvider, useDirection } from './direction.js';
30
39
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from './drawer.js';
@@ -104,6 +113,7 @@ import '@diceui/checkbox-group';
104
113
  import '@radix-ui/react-slider';
105
114
  import '@diceui/combobox';
106
115
  import 'cmdk';
116
+ import '@tanstack/react-table';
107
117
  import 'vaul';
108
118
  import 'input-otp';
109
119
  import '@dnd-kit/core';