@tetrascience-npm/tetrascience-react-ui 0.5.0 → 0.6.0-beta.79.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 +84 -37
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +140 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +126 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +341 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +43 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +154 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js +44 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +136 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +389 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +54 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +96 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +58 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +421 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +177 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js +41 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +4 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +103 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.js +11 -0
- package/dist/components/composed/PlateMapEditor/helpers.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js +56 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js +543 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js +84 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js.map +1 -0
- package/dist/components/ui/accordion.cjs +1 -1
- package/dist/components/ui/accordion.cjs.map +1 -1
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/badge.cjs +1 -1
- package/dist/components/ui/badge.cjs.map +1 -1
- package/dist/components/ui/badge.js +18 -18
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.js +16 -16
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.cjs +1 -1
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +5 -5
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.cjs +1 -1
- package/dist/components/ui/card.cjs.map +1 -1
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/checkbox.cjs +1 -1
- package/dist/components/ui/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox.js +9 -9
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/combobox.cjs +1 -1
- package/dist/components/ui/combobox.cjs.map +1 -1
- package/dist/components/ui/combobox.js +5 -5
- package/dist/components/ui/combobox.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +2 -0
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -0
- package/dist/components/ui/data-table/data-table-group.js +118 -0
- package/dist/components/ui/data-table/data-table-group.js.map +1 -0
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.js +22 -22
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.js +567 -316
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/dialog.cjs +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js +13 -13
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/input-group.cjs +1 -1
- package/dist/components/ui/input-group.cjs.map +1 -1
- package/dist/components/ui/input-group.js +29 -29
- package/dist/components/ui/input-group.js.map +1 -1
- package/dist/components/ui/input-otp.cjs +1 -1
- package/dist/components/ui/input-otp.cjs.map +1 -1
- package/dist/components/ui/input-otp.js +10 -10
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.cjs +1 -1
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.js +7 -7
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/item.cjs +1 -1
- package/dist/components/ui/item.cjs.map +1 -1
- package/dist/components/ui/item.js +17 -17
- package/dist/components/ui/item.js.map +1 -1
- package/dist/components/ui/navigation-menu.cjs +1 -1
- package/dist/components/ui/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu.js +24 -24
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.cjs +2 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.js +45 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/radio-group.cjs +1 -1
- package/dist/components/ui/radio-group.cjs.map +1 -1
- package/dist/components/ui/radio-group.js +16 -16
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs +1 -1
- package/dist/components/ui/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area.js +6 -6
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.cjs +1 -1
- package/dist/components/ui/select.cjs.map +1 -1
- package/dist/components/ui/select.js +48 -48
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/slider.cjs +1 -1
- package/dist/components/ui/slider.cjs.map +1 -1
- package/dist/components/ui/slider.js +22 -22
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/switch.cjs +1 -1
- package/dist/components/ui/switch.cjs.map +1 -1
- package/dist/components/ui/switch.js +14 -14
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.cjs +1 -1
- package/dist/components/ui/table.cjs.map +1 -1
- package/dist/components/ui/table.js +2 -2
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.cjs +1 -1
- package/dist/components/ui/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs.js +9 -9
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.cjs +1 -1
- package/dist/components/ui/textarea.cjs.map +1 -1
- package/dist/components/ui/textarea.js +6 -6
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toggle.cjs +1 -1
- package/dist/components/ui/toggle.cjs.map +1 -1
- package/dist/components/ui/toggle.js +13 -13
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +830 -3
- package/dist/index.js +649 -593
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/utils/colors.cjs +1 -1
- package/dist/utils/colors.cjs.map +1 -1
- package/dist/utils/colors.js +43 -21
- package/dist/utils/colors.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type RowData,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Module augmentation — column meta\n// ---------------------------------------------------------------------------\n\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n truncate?: boolean\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\nfunction applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n truncate,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n truncate?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n truncate={truncate}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1 min-w-0\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1 min-w-0\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate?: boolean\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 min-w-0\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n <span className={cn(\"min-w-0\", truncate && \"truncate\")}>\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n truncate,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n truncate?: boolean\n}) {\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n truncate?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n truncate = true,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(() => {\n if (filterConfig) return filterConfig\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n }, [filterConfig, columns])\n\n const filteredData = React.useMemo((): TData[] => {\n if (!enableFiltering || manualFiltering) return data\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String(\n (row as Record<string, unknown>)[condition.columnId] ?? \"\",\n )\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n }, [data, filters, enableFiltering, manualFiltering])\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const reorderSensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleColumnDragStart = React.useCallback(\n (event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n },\n [],\n )\n\n const handleColumnDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n // Infer which columns are numeric from the first data row\n const numericColumns = React.useMemo(() => {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n }, [data, columns])\n\n const hasExplicitSize = columns.some((c) => c.size != null)\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {enableColumnReorder ? (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) => (\n <col\n key={header.id}\n style={{ width: header.column.getSize() }}\n />\n ))}\n </colgroup>\n )}\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => (\n <DraggableHeader\n key={header.id}\n header={header}\n position={headerIdx === 0 ? \"first\" : headerIdx === headerGroup.headers.length - 1 ? \"last\" : \"middle\"}\n numeric={numericColumns.has(header.column.id)}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </DraggableHeader>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} truncate={truncate} />\n </TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n ) : (\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) => (\n <col\n key={header.id}\n style={header.column.columnDef.size == null ? undefined : { width: header.column.columnDef.size }}\n />\n ))}\n </colgroup>\n )}\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} truncate={truncate} />\n </TableBody>\n </Table>\n )}\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","truncate","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","columnLabels","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","DataTableRows","table","columns","TableRow","TableCell","row","categorizeSlots","toolbarSlots","filterSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","data","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableColumnReorder","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","density","className","variant","containerClassName","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","filters","columnVisibility","columnOrder","handlePaginationChange","updater","next","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","col","filteredData","active","f","condition","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","prev","reorderSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleColumnDragStart","event","handleColumnDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","first","ids","key","hasExplicitSize","c","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","headerGroup","headerIdx","TableBody","DragOverlay","props"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type RowData,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, ChevronDownIcon, ChevronRightIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Module augmentation — column meta\n// ---------------------------------------------------------------------------\n\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n truncate?: boolean\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\n// ---------------------------------------------------------------------------\n// Grouping types\n// ---------------------------------------------------------------------------\n\ninterface GroupColumnConfig {\n columnId: string\n label?: string\n}\n\nexport function applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n grouping: string | null\n setGrouping: (columnId: string | null) => void\n groupConfig: GroupColumnConfig[]\n enableGrouping: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n truncate,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n truncate?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n truncate={truncate}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1 min-w-0\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1 min-w-0\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate?: boolean\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 min-w-0\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n <span className={cn(\"min-w-0\", truncate && \"truncate\")}>\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\ntype RowOf<TData> = ReturnType<TanStackTable<TData>[\"getRowModel\"]>[\"rows\"][number]\n\nconst EMPTY_GROUP_KEY = \"—\"\n\nfunction bucketRowsByGroup<TData>(rows: RowOf<TData>[], grouping: string) {\n const buckets = new Map<string, RowOf<TData>[]>()\n const rawByKey = new Map<string, unknown>()\n for (const row of rows) {\n const raw = row.getValue(grouping)\n const isEmpty = raw == null || raw === \"\"\n const key = isEmpty ? EMPTY_GROUP_KEY : String(raw)\n const bucket = buckets.get(key)\n if (bucket) {\n bucket.push(row)\n } else {\n buckets.set(key, [row])\n rawByKey.set(key, isEmpty ? null : raw)\n }\n }\n\n const keys = [...buckets.keys()]\n const allNumeric = keys.every((k) => k === EMPTY_GROUP_KEY || typeof rawByKey.get(k) === \"number\")\n keys.sort((a, b) => {\n if (a === EMPTY_GROUP_KEY) return 1\n if (b === EMPTY_GROUP_KEY) return -1\n if (allNumeric) return (rawByKey.get(a) as number) - (rawByKey.get(b) as number)\n return a.localeCompare(b, undefined, { sensitivity: \"base\", numeric: true })\n })\n\n return { order: keys, buckets }\n}\n\nfunction resolveGroupLabel<TData>(\n table: TanStackTable<TData>,\n grouping: string,\n groupConfig: GroupColumnConfig[],\n columnLabels: Record<string, string>,\n): string {\n const groupColumn = table.getColumn(grouping)\n return (\n groupConfig.find((g) => g.columnId === grouping)?.label ??\n columnLabels[grouping] ??\n (typeof groupColumn?.columnDef.header === \"string\"\n ? groupColumn.columnDef.header\n : grouping)\n )\n}\n\ninterface DataRowProps<TData> {\n row: RowOf<TData>\n numericColumns: Set<string>\n truncate?: boolean\n}\n\nfunction DataRow<TData>({ row, numericColumns, truncate }: DataRowProps<TData>) {\n return (\n <TableRow data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n )\n}\n\ninterface GroupHeaderRowProps {\n groupKey: string\n groupLabel: string\n isExpanded: boolean\n colSpan: number\n onToggle: () => void\n}\n\nfunction GroupHeaderRow({\n groupKey,\n groupLabel,\n isExpanded,\n colSpan,\n onToggle,\n}: GroupHeaderRowProps) {\n return (\n <TableRow data-slot=\"data-table-group-header\">\n <TableCell colSpan={colSpan} className=\"p-0 font-medium\">\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} group ${groupKey}`}\n className=\"flex w-full items-center gap-2 text-left p-4 in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset\"\n >\n {isExpanded ? (\n <ChevronDownIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRightIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n )}\n <span className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n {groupLabel}\n </span>\n <span className=\"truncate\">{groupKey}</span>\n </button>\n </TableCell>\n </TableRow>\n )\n}\n\ninterface GroupedRowsProps<TData> {\n table: TanStackTable<TData>\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}\n\nfunction GroupedRows<TData>({\n table,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: GroupedRowsProps<TData>) {\n const visibleColumnCount = table.getVisibleLeafColumns().length\n const rows = table.getSortedRowModel().rows\n if (rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={visibleColumnCount} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n const { order, buckets } = bucketRowsByGroup(rows, grouping)\n const groupLabel = resolveGroupLabel(table, grouping, groupConfig, columnLabels)\n\n return (\n <>\n {order.map((key) => {\n const groupRows = buckets.get(key) ?? []\n const isExpanded = !collapsedGroups.has(key)\n return (\n <React.Fragment key={`group-${key}`}>\n <GroupHeaderRow\n groupKey={key}\n groupLabel={groupLabel}\n isExpanded={isExpanded}\n colSpan={visibleColumnCount}\n onToggle={() => onToggleGroup(key)}\n />\n {isExpanded &&\n groupRows.map((row) => (\n <DataRow\n key={row.id}\n row={row}\n numericColumns={numericColumns}\n truncate={truncate}\n />\n ))}\n </React.Fragment>\n )\n })}\n </>\n )\n}\n\nfunction deriveNumericColumns<TData>(\n data: TData[],\n columns: ColumnDef<TData, unknown>[],\n): Set<string> {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n}\n\nfunction deriveAccessorConfig<TData>(\n columns: ColumnDef<TData, unknown>[],\n): { columnId: string }[] {\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n}\n\nfunction applyClientFilters<TData>(data: TData[], filters: FilterCondition[]): TData[] {\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String((row as Record<string, unknown>)[condition.columnId] ?? \"\")\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n}\n\nfunction useColumnReorder<TData>(\n table: TanStackTable<TData>,\n columnOrder: ColumnOrderState,\n) {\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n }, [])\n\n const handleDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n return { sensors, draggingHeader, handleDragStart, handleDragEnd }\n}\n\nfunction useGroupingState(\n controlledGrouping: string | null | undefined,\n onGroupingChange: ((grouping: string | null) => void) | undefined,\n) {\n const [internalGrouping, setInternalGrouping] = React.useState<string | null>(null)\n const [collapsedGroups, setCollapsedGroups] = React.useState<Set<string>>(() => new Set())\n\n const grouping = controlledGrouping === undefined ? internalGrouping : controlledGrouping\n\n const handleGroupingChange = React.useCallback(\n (next: string | null) => {\n setCollapsedGroups(new Set())\n ;(onGroupingChange ?? setInternalGrouping)(next)\n },\n [onGroupingChange],\n )\n\n const toggleGroup = React.useCallback((key: string) => {\n setCollapsedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n }, [])\n\n return { grouping, collapsedGroups, handleGroupingChange, toggleGroup }\n}\n\ninterface TableSurfaceProps<TData> {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n variant: React.ComponentProps<typeof Table>[\"variant\"]\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n density: \"compact\" | \"default\" | \"relaxed\"\n hasExplicitSize: boolean\n enableSorting: boolean\n enableColumnReorder: boolean\n enableGrouping: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n reorderSensors: ReturnType<typeof useSensors>\n draggingHeader: ReturnType<TanStackTable<TData>[\"getFlatHeaders\"]>[number] | null | undefined\n onDragStart: (event: DragStartEvent) => void\n onDragEnd: (event: DragEndEvent) => void\n}\n\nfunction HeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction DraggableHeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => {\n const position =\n headerIdx === 0\n ? \"first\"\n : headerIdx === headerGroup.headers.length - 1\n ? \"last\"\n : \"middle\"\n return (\n <DraggableHeader\n key={header.id}\n header={header}\n position={position}\n numeric={numericColumns.has(header.column.id)}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </DraggableHeader>\n )\n })}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction ColGroup<TData>({\n table,\n useFlexSize,\n}: {\n table: TanStackTable<TData>\n useFlexSize: boolean\n}) {\n return (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) =>\n useFlexSize ? (\n <col key={header.id} style={{ width: header.column.getSize() }} />\n ) : (\n <col\n key={header.id}\n style={\n header.column.columnDef.size == null\n ? undefined\n : { width: header.column.columnDef.size }\n }\n />\n ),\n )}\n </colgroup>\n )\n}\n\nfunction TableSurface<TData>(props: TableSurfaceProps<TData>) {\n const {\n table,\n columns,\n variant,\n containerClassName,\n density,\n hasExplicitSize,\n enableSorting,\n enableColumnReorder,\n enableGrouping,\n grouping,\n groupConfig,\n collapsedGroups,\n onToggleGroup,\n numericColumns,\n columnLabels,\n truncate,\n reorderSensors,\n draggingHeader,\n onDragStart,\n onDragEnd,\n } = props\n\n const body = (\n <DataTableRows\n table={table}\n columns={columns}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={enableGrouping ? grouping : null}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n\n if (enableColumnReorder) {\n return (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize />}\n <TableHeader>\n <DraggableHeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n )\n }\n\n return (\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize={false} />}\n <TableHeader>\n <HeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}) {\n if (grouping) {\n return (\n <GroupedRows\n table={table}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={grouping}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n }\n\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const groupSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableGroup\"\n ) {\n groupSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n enableGrouping?: boolean\n /** ID of the column currently grouped by, or null for no grouping. */\n grouping?: string | null\n onGroupingChange?: (grouping: string | null) => void\n groupConfig?: GroupColumnConfig[]\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n truncate?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n enableGrouping = false,\n grouping: controlledGrouping,\n onGroupingChange,\n groupConfig,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n truncate = true,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n const { grouping, collapsedGroups, handleGroupingChange, toggleGroup } =\n useGroupingState(controlledGrouping, onGroupingChange)\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(\n () => filterConfig ?? deriveAccessorConfig(columns),\n [filterConfig, columns],\n )\n\n const resolvedGroupConfig: GroupColumnConfig[] = React.useMemo(\n () => groupConfig ?? deriveAccessorConfig(columns),\n [groupConfig, columns],\n )\n\n const filteredData = React.useMemo(\n (): TData[] => (!enableFiltering || manualFiltering ? data : applyClientFilters(data, filters)),\n [data, filters, enableFiltering, manualFiltering],\n )\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting || enableGrouping ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const {\n sensors: reorderSensors,\n draggingHeader,\n handleDragStart: handleColumnDragStart,\n handleDragEnd: handleColumnDragEnd,\n } = useColumnReorder(table, columnOrder)\n\n const numericColumns = React.useMemo(\n () => deriveNumericColumns(data, columns),\n [data, columns],\n )\n\n const hasExplicitSize = columns.some((c) => c.size != null)\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n grouping,\n setGrouping: handleGroupingChange,\n groupConfig: resolvedGroupConfig,\n enableGrouping,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {groupSlots}\n <TableSurface\n table={table}\n columns={columns}\n variant={variant}\n containerClassName={containerClassName}\n density={density}\n hasExplicitSize={hasExplicitSize}\n enableSorting={enableSorting}\n enableColumnReorder={enableColumnReorder}\n enableGrouping={enableGrouping}\n grouping={grouping}\n groupConfig={resolvedGroupConfig}\n collapsedGroups={collapsedGroups}\n onToggleGroup={toggleGroup}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n reorderSensors={reorderSensors}\n draggingHeader={draggingHeader}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n />\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig, GroupColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","truncate","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","columnLabels","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","EMPTY_GROUP_KEY","bucketRowsByGroup","rows","grouping","buckets","rawByKey","row","raw","isEmpty","key","bucket","keys","allNumeric","k","a","b","resolveGroupLabel","table","groupConfig","groupColumn","g","DataRow","TableRow","TableCell","GroupHeaderRow","groupKey","groupLabel","isExpanded","colSpan","onToggle","ChevronDownIcon","ChevronRightIcon","GroupedRows","collapsedGroups","onToggleGroup","visibleColumnCount","order","Fragment","groupRows","deriveNumericColumns","data","columns","first","ids","col","deriveAccessorConfig","applyClientFilters","filters","active","f","condition","useColumnReorder","columnOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleDragStart","event","handleDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","useGroupingState","controlledGrouping","onGroupingChange","internalGrouping","setInternalGrouping","setCollapsedGroups","handleGroupingChange","next","toggleGroup","prev","HeaderCells","headerGroup","DraggableHeaderCells","headerIdx","ColGroup","useFlexSize","TableSurface","props","variant","containerClassName","density","hasExplicitSize","enableColumnReorder","enableGrouping","reorderSensors","onDragStart","onDragEnd","body","DataTableRows","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","TableBody","DragOverlay","categorizeSlots","toolbarSlots","filterSlots","groupSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","className","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","columnVisibility","handlePaginationChange","updater","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","resolvedGroupConfig","filteredData","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","handleColumnDragStart","handleColumnDragEnd","c"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),g=require("lucide-react"),t=require("radix-ui"),r=require("./button.cjs"),l=require("../../lib/utils.cjs");function c({...o}){return a.jsx(t.Dialog.Root,{"data-slot":"dialog",...o})}function u({...o}){return a.jsx(t.Dialog.Trigger,{"data-slot":"dialog-trigger",...o})}function s({...o}){return a.jsx(t.Dialog.Portal,{"data-slot":"dialog-portal",...o})}function x({...o}){return a.jsx(t.Dialog.Close,{"data-slot":"dialog-close",...o})}function d({className:o,...e}){return a.jsx(t.Dialog.Overlay,{"data-slot":"dialog-overlay",className:l.cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",o),...e})}function f({className:o,children:e,showCloseButton:i=!0,...n}){return a.jsxs(s,{children:[a.jsx(d,{}),a.jsxs(t.Dialog.Content,{"data-slot":"dialog-content",className:l.cn("fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",o),...n,children:[e,i&&a.jsx(t.Dialog.Close,{"data-slot":"dialog-close",asChild:!0,children:a.jsxs(r.Button,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm",children:[a.jsx(g.XIcon,{}),a.jsx("span",{className:"sr-only",children:"Close"})]})})]})]})}function D({className:o,...e}){return a.jsx("div",{"data-slot":"dialog-header",className:l.cn("flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2",o),...e})}function m({className:o,...e}){return a.jsx("div",{"data-slot":"dialog-body",className:l.cn("flex-1 overflow-y-auto px-4 py-2",o),...e})}function p({className:o,showCloseButton:e=!1,children:i,...n}){return a.jsxs("div",{"data-slot":"dialog-footer",className:l.cn("flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end",o),...n,children:[i,e&&a.jsx(t.Dialog.Close,{asChild:!0,children:a.jsx(r.Button,{variant:"outline",children:"Close"})})]})}function j({className:o,...e}){return a.jsx(t.Dialog.Title,{"data-slot":"dialog-title",className:l.cn("text-base leading-none font-medium",o),...e})}function h({className:o,...e}){return a.jsx(t.Dialog.Description,{"data-slot":"dialog-description",className:l.cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",o),...e})}exports.Dialog=c;exports.DialogBody=m;exports.DialogClose=x;exports.DialogContent=f;exports.DialogDescription=h;exports.DialogFooter=p;exports.DialogHeader=D;exports.DialogOverlay=d;exports.DialogPortal=s;exports.DialogTitle=j;exports.DialogTrigger=u;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),g=require("lucide-react"),t=require("radix-ui"),r=require("./button.cjs"),l=require("../../lib/utils.cjs");function c({...o}){return a.jsx(t.Dialog.Root,{"data-slot":"dialog",...o})}function u({...o}){return a.jsx(t.Dialog.Trigger,{"data-slot":"dialog-trigger",...o})}function s({...o}){return a.jsx(t.Dialog.Portal,{"data-slot":"dialog-portal",...o})}function x({...o}){return a.jsx(t.Dialog.Close,{"data-slot":"dialog-close",...o})}function d({className:o,...e}){return a.jsx(t.Dialog.Overlay,{"data-slot":"dialog-overlay",className:l.cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",o),...e})}function f({className:o,children:e,showCloseButton:i=!0,...n}){return a.jsxs(s,{children:[a.jsx(d,{}),a.jsxs(t.Dialog.Content,{"data-slot":"dialog-content",className:l.cn("fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-card/90 dark:bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",o),...n,children:[e,i&&a.jsx(t.Dialog.Close,{"data-slot":"dialog-close",asChild:!0,children:a.jsxs(r.Button,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm",children:[a.jsx(g.XIcon,{}),a.jsx("span",{className:"sr-only",children:"Close"})]})})]})]})}function D({className:o,...e}){return a.jsx("div",{"data-slot":"dialog-header",className:l.cn("flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2",o),...e})}function m({className:o,...e}){return a.jsx("div",{"data-slot":"dialog-body",className:l.cn("flex-1 overflow-y-auto px-4 py-2",o),...e})}function p({className:o,showCloseButton:e=!1,children:i,...n}){return a.jsxs("div",{"data-slot":"dialog-footer",className:l.cn("flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end",o),...n,children:[i,e&&a.jsx(t.Dialog.Close,{asChild:!0,children:a.jsx(r.Button,{variant:"outline",children:"Close"})})]})}function j({className:o,...e}){return a.jsx(t.Dialog.Title,{"data-slot":"dialog-title",className:l.cn("text-base leading-none font-medium",o),...e})}function h({className:o,...e}){return a.jsx(t.Dialog.Description,{"data-slot":"dialog-description",className:l.cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",o),...e})}exports.Dialog=c;exports.DialogBody=m;exports.DialogClose=x;exports.DialogContent=f;exports.DialogDescription=h;exports.DialogFooter=p;exports.DialogHeader=D;exports.DialogOverlay=d;exports.DialogPortal=s;exports.DialogTitle=j;exports.DialogTrigger=u;
|
|
2
2
|
//# sourceMappingURL=dialog.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.cjs","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogBody({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-body\"\n className={cn(\"flex-1 overflow-y-auto px-4 py-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","jsxs","Button","XIcon","DialogHeader","DialogBody","DialogFooter","DialogTitle","DialogDescription"],"mappings":"gOAOA,SAASA,EAAO,CACd,GAAGC,CACL,EAAsD,CACpD,aAAQC,EAAAA,OAAgB,KAAhB,CAAqB,YAAU,SAAU,GAAGD,EAAO,CAC7D,CAEA,SAASE,EAAc,CACrB,GAAGF,CACL,EAAyD,CACvD,aAAQC,EAAAA,OAAgB,QAAhB,CAAwB,YAAU,iBAAkB,GAAGD,EAAO,CACxE,CAEA,SAASG,EAAa,CACpB,GAAGH,CACL,EAAwD,CACtD,aAAQC,EAAAA,OAAgB,OAAhB,CAAuB,YAAU,gBAAiB,GAAGD,EAAO,CACtE,CAEA,SAASI,EAAY,CACnB,GAAGJ,CACL,EAAuD,CACrD,aAAQC,EAAAA,OAAgB,MAAhB,CAAsB,YAAU,eAAgB,GAAGD,EAAO,CACpE,CAEA,SAASK,EAAc,CACrB,UAAAC,EACA,GAAGN,CACL,EAAyD,CACvD,OACEO,EAAAA,IAACN,EAAAA,OAAgB,QAAhB,CACC,YAAU,iBACV,UAAWO,EAAAA,GACT,wLACAF,CAAA,EAED,GAAGN,CAAA,CAAA,CAGV,CAEA,SAASS,EAAc,CACrB,UAAAH,EACA,SAAAI,EACA,gBAAAC,EAAkB,GAClB,GAAGX,CACL,EAEG,CACD,cACGG,EAAA,CACC,SAAA,CAAAI,EAAAA,IAACF,EAAA,EAAc,EACfO,EAAAA,KAACX,EAAAA,OAAgB,QAAhB,CACC,YAAU,iBACV,UAAWO,EAAAA,GACT,
|
|
1
|
+
{"version":3,"file":"dialog.cjs","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-card/90 dark:bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogBody({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-body\"\n className={cn(\"flex-1 overflow-y-auto px-4 py-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","jsxs","Button","XIcon","DialogHeader","DialogBody","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ function h({
|
|
|
8
8
|
}) {
|
|
9
9
|
return /* @__PURE__ */ a(e.Root, { "data-slot": "dialog", ...o });
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function b({
|
|
12
12
|
...o
|
|
13
13
|
}) {
|
|
14
14
|
return /* @__PURE__ */ a(e.Trigger, { "data-slot": "dialog-trigger", ...o });
|
|
@@ -18,7 +18,7 @@ function c({
|
|
|
18
18
|
}) {
|
|
19
19
|
return /* @__PURE__ */ a(e.Portal, { "data-slot": "dialog-portal", ...o });
|
|
20
20
|
}
|
|
21
|
-
function
|
|
21
|
+
function D({
|
|
22
22
|
...o
|
|
23
23
|
}) {
|
|
24
24
|
return /* @__PURE__ */ a(e.Close, { "data-slot": "dialog-close", ...o });
|
|
@@ -42,8 +42,8 @@ function u({
|
|
|
42
42
|
function v({
|
|
43
43
|
className: o,
|
|
44
44
|
children: t,
|
|
45
|
-
showCloseButton:
|
|
46
|
-
...
|
|
45
|
+
showCloseButton: r = !0,
|
|
46
|
+
...i
|
|
47
47
|
}) {
|
|
48
48
|
return /* @__PURE__ */ n(c, { children: [
|
|
49
49
|
/* @__PURE__ */ a(u, {}),
|
|
@@ -52,13 +52,13 @@ function v({
|
|
|
52
52
|
{
|
|
53
53
|
"data-slot": "dialog-content",
|
|
54
54
|
className: l(
|
|
55
|
-
"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
55
|
+
"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-card/90 dark:bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
56
56
|
o
|
|
57
57
|
),
|
|
58
|
-
...
|
|
58
|
+
...i,
|
|
59
59
|
children: [
|
|
60
60
|
t,
|
|
61
|
-
|
|
61
|
+
r && /* @__PURE__ */ a(e.Close, { "data-slot": "dialog-close", asChild: !0, children: /* @__PURE__ */ n(
|
|
62
62
|
d,
|
|
63
63
|
{
|
|
64
64
|
variant: "ghost",
|
|
@@ -101,8 +101,8 @@ function C({ className: o, ...t }) {
|
|
|
101
101
|
function N({
|
|
102
102
|
className: o,
|
|
103
103
|
showCloseButton: t = !1,
|
|
104
|
-
children:
|
|
105
|
-
...
|
|
104
|
+
children: r,
|
|
105
|
+
...i
|
|
106
106
|
}) {
|
|
107
107
|
return /* @__PURE__ */ n(
|
|
108
108
|
"div",
|
|
@@ -112,9 +112,9 @@ function N({
|
|
|
112
112
|
"flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end",
|
|
113
113
|
o
|
|
114
114
|
),
|
|
115
|
-
...
|
|
115
|
+
...i,
|
|
116
116
|
children: [
|
|
117
|
-
|
|
117
|
+
r,
|
|
118
118
|
t && /* @__PURE__ */ a(e.Close, { asChild: !0, children: /* @__PURE__ */ a(d, { variant: "outline", children: "Close" }) })
|
|
119
119
|
]
|
|
120
120
|
}
|
|
@@ -152,7 +152,7 @@ function w({
|
|
|
152
152
|
export {
|
|
153
153
|
h as Dialog,
|
|
154
154
|
C as DialogBody,
|
|
155
|
-
|
|
155
|
+
D as DialogClose,
|
|
156
156
|
v as DialogContent,
|
|
157
157
|
w as DialogDescription,
|
|
158
158
|
N as DialogFooter,
|
|
@@ -160,6 +160,6 @@ export {
|
|
|
160
160
|
u as DialogOverlay,
|
|
161
161
|
c as DialogPortal,
|
|
162
162
|
k as DialogTitle,
|
|
163
|
-
|
|
163
|
+
b as DialogTrigger
|
|
164
164
|
};
|
|
165
165
|
//# sourceMappingURL=dialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogBody({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-body\"\n className={cn(\"flex-1 overflow-y-auto px-4 py-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","jsxs","Button","XIcon","DialogHeader","DialogBody","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog.js","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex flex-col w-[calc(100%-2rem)] max-w-lg max-h-[90svh] -translate-x-1/2 -translate-y-1/2 rounded-xl bg-card/90 dark:bg-background text-sm shadow-elevation-3 ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex shrink-0 flex-col gap-2 px-4 pt-4 pb-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogBody({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-body\"\n className={cn(\"flex-1 overflow-y-auto px-4 py-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 px-4 py-3 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","jsxs","Button","XIcon","DialogHeader","DialogBody","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("class-variance-authority"),u=require("./button.cjs"),p=require("./input.cjs"),d=require("./textarea.cjs"),e=require("../../lib/utils.cjs");function l({className:n,...t}){return r.jsx("div",{"data-slot":"input-group",role:"group",className:e.cn("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",n),...t})}const c=o.cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function g({className:n,align:t="inline-start",...s}){return r.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:e.cn(c({align:t}),n),onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),a.currentTarget.click())},onClick:a=>{a.target.closest("button")||a.currentTarget.parentElement?.querySelector("input")?.focus()},...s})}const b=o.cva("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function f({className:n,type:t="button",variant:s="ghost",size:a="xs",...i}){return r.jsx(u.Button,{type:t,"data-size":a,variant:s,className:e.cn(b({size:a}),n),...i})}function h({className:n,...t}){return r.jsx("span",{className:e.cn("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",n),...t})}function x({className:n,...t}){return r.jsx(p.Input,{"data-slot":"input-group-control",className:e.cn("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...t})}function m({className:n,...t}){return r.jsx(d.Textarea,{"data-slot":"input-group-control",className:e.cn("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...t})}exports.InputGroup=l;exports.InputGroupAddon=g;exports.InputGroupButton=f;exports.InputGroupInput=x;exports.InputGroupText=h;exports.InputGroupTextarea=m;
|
|
2
2
|
//# sourceMappingURL=input-group.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group.cjs","sources":["../../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:
|
|
1
|
+
{"version":3,"file":"input-group.cjs","sources":["../../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.currentTarget.click()\n }\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":"2QAQA,SAASA,EAAW,CAAE,UAAAC,EAAW,GAAGC,GAAsC,CACxE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,KAAK,QACL,UAAWC,EAAAA,GACT,46BACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,MAAMG,EAA0BC,EAAAA,IAC9B,0PACA,CACE,SAAU,CACR,MAAO,CACL,eACE,uEACF,aACE,sEACF,cACE,oGACF,YACE,kGAAA,CACJ,EAEF,gBAAiB,CACf,MAAO,cAAA,CACT,CAEJ,EAEA,SAASC,EAAgB,CACvB,UAAAN,EACA,MAAAO,EAAQ,eACR,GAAGN,CACL,EAA+E,CAC7E,OACEC,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,YAAU,oBACV,aAAYK,EACZ,UAAWJ,EAAAA,GAAGC,EAAwB,CAAE,MAAAG,CAAA,CAAO,EAAGP,CAAS,EAC3D,UAAYQ,GAAM,EACZA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFA,EAAE,cAAc,MAAA,EAEpB,EACA,QAAUA,GAAM,CACTA,EAAE,OAAuB,QAAQ,QAAQ,GAG9CA,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAA,CACzD,EACC,GAAGP,CAAA,CAAA,CAGV,CAEA,MAAMQ,EAA2BJ,EAAAA,IAC/B,8CACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,4FACJ,GAAI,GACJ,UACE,8DACF,UAAW,2BAAA,CACb,EAEF,gBAAiB,CACf,KAAM,IAAA,CACR,CAEJ,EAEA,SAASK,EAAiB,CACxB,UAAAV,EACA,KAAAW,EAAO,SACP,QAAAC,EAAU,QACV,KAAAC,EAAO,KACP,GAAGZ,CACL,EACiD,CAC/C,OACEC,EAAAA,IAACY,EAAAA,OAAA,CACC,KAAAH,EACA,YAAWE,EACX,QAAAD,EACA,UAAWT,EAAAA,GAAGM,EAAyB,CAAE,KAAAI,CAAA,CAAM,EAAGb,CAAS,EAC1D,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASc,EAAe,CAAE,UAAAf,EAAW,GAAGC,GAAuC,CAC7E,OACEC,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,GACT,yHACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASe,EAAgB,CACvB,UAAAhB,EACA,GAAGC,CACL,EAAkC,CAChC,OACEC,EAAAA,IAACe,EAAAA,MAAA,CACC,YAAU,sBACV,UAAWd,EAAAA,GACT,mLACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASiB,EAAmB,CAC1B,UAAAlB,EACA,GAAGC,CACL,EAAqC,CACnC,OACEC,EAAAA,IAACiB,EAAAA,SAAA,CACC,YAAU,sBACV,UAAWhB,EAAAA,GACT,oMACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV"}
|