@tetrascience-npm/tetrascience-react-ui 0.5.0-beta.28.1 → 0.5.0-beta.30.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.
Files changed (39) hide show
  1. package/dist/components/ui/alert.cjs +1 -1
  2. package/dist/components/ui/alert.cjs.map +1 -1
  3. package/dist/components/ui/alert.js +23 -20
  4. package/dist/components/ui/alert.js.map +1 -1
  5. package/dist/components/ui/badge.cjs +1 -1
  6. package/dist/components/ui/badge.cjs.map +1 -1
  7. package/dist/components/ui/badge.js +10 -10
  8. package/dist/components/ui/badge.js.map +1 -1
  9. package/dist/components/ui/data-table/data-table-column-toggle.cjs +2 -0
  10. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -0
  11. package/dist/components/ui/data-table/data-table-column-toggle.js +142 -0
  12. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -0
  13. package/dist/components/ui/data-table/data-table-pagination.cjs +2 -0
  14. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -0
  15. package/dist/components/ui/data-table/data-table-pagination.js +88 -0
  16. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -0
  17. package/dist/components/ui/data-table/data-table.cjs +2 -0
  18. package/dist/components/ui/data-table/data-table.cjs.map +1 -0
  19. package/dist/components/ui/data-table/data-table.js +293 -0
  20. package/dist/components/ui/data-table/data-table.js.map +1 -0
  21. package/dist/components/ui/dialog.cjs +1 -1
  22. package/dist/components/ui/dialog.cjs.map +1 -1
  23. package/dist/components/ui/dialog.js +62 -51
  24. package/dist/components/ui/dialog.js.map +1 -1
  25. package/dist/components/ui/table.cjs +1 -1
  26. package/dist/components/ui/table.cjs.map +1 -1
  27. package/dist/components/ui/table.js +68 -36
  28. package/dist/components/ui/table.js.map +1 -1
  29. package/dist/components/ui/tabs.cjs +1 -1
  30. package/dist/components/ui/tabs.cjs.map +1 -1
  31. package/dist/components/ui/tabs.js +28 -27
  32. package/dist/components/ui/tabs.js.map +1 -1
  33. package/dist/index.cjs +1 -1
  34. package/dist/index.css +1 -1
  35. package/dist/index.d.ts +73 -5
  36. package/dist/index.js +338 -329
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.tailwind.css +1 -1
  39. package/package.json +6 -1
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),f=require("@dnd-kit/core"),pe=require("@dnd-kit/modifiers"),C=require("@dnd-kit/sortable"),he=require("@dnd-kit/utilities"),S=require("@tanstack/react-table"),_=require("lucide-react"),Se=require("react"),ve=require("./data-table-pagination.cjs"),c=require("../table.cjs"),v=require("../../../lib/utils.cjs");function ye(t){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const s=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(a,l,s.get?s:{enumerable:!0,get:()=>t[l]})}}return a.default=t,Object.freeze(a)}const i=ye(Se),K=i.createContext(null);function je(){const t=i.useContext(K);if(!t)throw new Error("useDataTable must be used within a <DataTable>");return t}function Ce({header:t,children:a,position:l,numeric:s}){const{attributes:o,listeners:b,setNodeRef:y,transform:m,transition:R,isDragging:x}=C.useSortable({id:t.column.id}),O={transform:he.CSS.Transform.toString(m?{...m,scaleX:1,scaleY:1}:null),transition:R,position:"relative"};return e.jsx(c.TableHead,{ref:y,style:O,variant:s?"numeric":void 0,className:v.cn("group/header transition-shadow duration-150",!x&&l==="first"&&"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]",!x&&l==="last"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border)]",!x&&l==="middle"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]",x&&"opacity-40"),children:e.jsxs("div",{className:v.cn("flex items-center gap-1",s&&"flex-row-reverse"),children:[e.jsx("div",{className:"flex-1",children:a}),e.jsx("button",{type:"button","data-drag-handle":"",className:"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity",...o,...b,children:e.jsx(_.GripVerticalIcon,{className:"size-3.5"})})]})})}function A({header:t,enableSorting:a,numericColumns:l,columnLabels:s}){if(t.isPlaceholder)return null;const o=a&&t.column.getCanSort(),b=t.column.getIsSorted(),y=l.has(t.column.id);return e.jsxs("div",{className:v.cn("flex items-center gap-1",o&&"group/sort cursor-pointer select-none",y&&"flex-row-reverse"),onClick:o?t.column.getToggleSortingHandler():void 0,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&o&&t.column.getToggleSortingHandler()},children:[s[t.column.id]??S.flexRender(t.column.columnDef.header,t.getContext()),o&&e.jsx("span",{className:v.cn(!b&&"opacity-0 group-hover/sort:opacity-100 transition-opacity"),children:b==="asc"?e.jsx(_.ArrowUpIcon,{className:"size-3.5 text-foreground"}):b==="desc"?e.jsx(_.ArrowDownIcon,{className:"size-3.5 text-foreground"}):e.jsx(_.ArrowUpDownIcon,{className:"size-3.5 text-muted-foreground"})})]})}function L({table:t,columns:a,numericColumns:l}){return t.getRowModel().rows.length===0?e.jsx(c.TableRow,{children:e.jsx(c.TableCell,{colSpan:a.length,className:"h-24 text-center text-muted-foreground",children:"No results."})}):t.getRowModel().rows.map(s=>e.jsx(c.TableRow,{"data-state":s.getIsSelected()?"selected":void 0,children:s.getVisibleCells().map(o=>e.jsx(c.TableCell,{variant:l.has(o.column.id)?"numeric":void 0,children:S.flexRender(o.column.columnDef.cell,o.getContext())},o.id))},s.id))}function Te(t){const a=[],l=[],s=[];return i.Children.forEach(t,o=>{i.isValidElement(o)&&o.type===B?a.push(o):i.isValidElement(o)&&o.type===ve.DataTablePagination?l.push(o):s.push(o)}),{toolbarSlots:a,paginationSlots:l,restSlots:s}}function we({columns:t,data:a,toolbar:l,enableSorting:s=!1,enableColumnVisibility:o=!1,children:b,columnOrder:y,onColumnOrderChange:m,columnVisibility:R,onColumnVisibilityChange:x,columnLabels:O,onColumnLabelChange:M,enablePagination:T=!1,defaultPageSize:F=10,pagination:N,onPaginationChange:H,enableColumnReorder:U=!1,density:q="default",className:G,variant:k="card",containerClassName:z}){const[X,Y]=i.useState([]),[J,Q]=i.useState({}),[W,Z]=i.useState([]),[$,ee]=i.useState({}),[te,ne]=i.useState({pageIndex:0,pageSize:F}),oe=N??te,I=R??J,p=y??W,w=O??$,re=i.useMemo(()=>{if(T)return H?n=>{const r=typeof n=="function"?n(N):n;H(r)}:ne},[T,H,N]),se=i.useMemo(()=>{if(o)return n=>{const r=typeof n=="function"?n(I):n;(x??Q)(r)}},[o,I,x]),ae=i.useCallback(n=>{const r=typeof n=="function"?n(p):n;(m??Z)(r)},[p,m]),u=S.useReactTable({data:a,columns:t,state:{sorting:s?X:void 0,columnVisibility:o?I:void 0,columnOrder:p.length>0?p:void 0,...T?{pagination:oe}:{}},onSortingChange:s?Y:void 0,onPaginationChange:re,onColumnVisibilityChange:se,onColumnOrderChange:ae,getCoreRowModel:S.getCoreRowModel(),getSortedRowModel:s?S.getSortedRowModel():void 0,getPaginationRowModel:T?S.getPaginationRowModel():void 0}),le=i.useCallback((n,r)=>{(M??((d,g)=>ee(D=>({...D,[d]:g}))))(n,r)},[M]),ie=f.useSensors(f.useSensor(f.PointerSensor,{activationConstraint:{distance:5}}),f.useSensor(f.KeyboardSensor,{coordinateGetter:C.sortableKeyboardCoordinates})),[V,E]=i.useState(null),ce=i.useCallback(n=>{E(String(n.active.id))},[]),de=i.useCallback(n=>{E(null);const{active:r,over:d}=n;if(!d||r.id===d.id)return;const g=p.length>0?p:u.getAllLeafColumns().map(xe=>xe.id),D=g.indexOf(String(r.id)),P=g.indexOf(String(d.id));if(D===-1||P===-1)return;const be=C.arrayMove(g,D,P);u.setColumnOrder(be)},[p,u]),j=V?u.getFlatHeaders().find(n=>n.column.id===V):null,h=i.useMemo(()=>{if(a.length===0)return new Set;const n=a[0],r=new Set;for(const d of t){const g="accessorKey"in d?String(d.accessorKey):"";g&&typeof n[g]=="number"&&r.add(g)}return r},[a,t]),ue={table:u,columnLabels:w,setColumnLabel:le},{toolbarSlots:ge,paginationSlots:me,restSlots:fe}=Te(b);return e.jsx(K.Provider,{value:ue,children:e.jsxs("div",{"data-slot":"data-table",className:v.cn("w-full space-y-2",G),children:[l,ge,U?e.jsxs(f.DndContext,{sensors:ie,collisionDetection:f.closestCenter,modifiers:[pe.restrictToHorizontalAxis],onDragStart:ce,onDragEnd:de,children:[e.jsx(C.SortableContext,{items:u.getFlatHeaders().map(n=>n.column.id),strategy:C.horizontalListSortingStrategy,children:e.jsxs(c.Table,{"data-density":q,variant:k,containerClassName:z,children:[e.jsx(c.TableHeader,{children:u.getHeaderGroups().map(n=>e.jsx(c.TableRow,{children:n.headers.map((r,d)=>e.jsx(Ce,{header:r,position:d===0?"first":d===n.headers.length-1?"last":"middle",numeric:h.has(r.column.id),children:e.jsx(A,{header:r,enableSorting:s,numericColumns:h,columnLabels:w})},r.id))},n.id))}),e.jsx(c.TableBody,{children:e.jsx(L,{table:u,columns:t,numericColumns:h})})]})}),e.jsx(f.DragOverlay,{dropAnimation:null,children:j&&e.jsx("div",{className:"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg",children:w[j.column.id]??(typeof j.column.columnDef.header=="string"?j.column.columnDef.header:j.column.id)})})]}):e.jsxs(c.Table,{"data-density":q,variant:k,containerClassName:z,children:[e.jsx(c.TableHeader,{children:u.getHeaderGroups().map(n=>e.jsx(c.TableRow,{children:n.headers.map(r=>e.jsx(c.TableHead,{variant:h.has(r.column.id)?"numeric":void 0,children:e.jsx(A,{header:r,enableSorting:s,numericColumns:h,columnLabels:w})},r.id))},n.id))}),e.jsx(c.TableBody,{children:e.jsx(L,{table:u,columns:t,numericColumns:h})})]}),me,fe]})})}function B({className:t,children:a,...l}){return e.jsx("div",{"data-slot":"table-toolbar",className:v.cn("flex items-center gap-2",t),...l,children:a})}exports.DataTable=we;exports.TableToolbar=B;exports.useDataTable=je;
2
+ //# sourceMappingURL=data-table.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.cjs","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 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// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\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}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: 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 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\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1\">{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}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\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\",\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 {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\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}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\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 key={cell.id} variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}>\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 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 (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, 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 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}\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 density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\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\n const pagination = controlledPagination ?? internalPagination\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 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,\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 // 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 } as TableContextValue<unknown>\n\n const { toolbarSlots, 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 {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 data-density={density} variant={variant} containerClassName={containerClassName}>\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 >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </DraggableHeader>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\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 data-density={density} variant={variant} containerClassName={containerClassName}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id} variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}>\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\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 gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps }\n"],"names":["TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","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","cell","categorizeSlots","toolbarSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","data","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableColumnReorder","density","className","variant","containerClassName","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","pagination","columnVisibility","columnOrder","handlePaginationChange","updater","next","handleVisibilityChange","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","prev","reorderSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleColumnDragStart","event","handleColumnDragEnd","active","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","first","ids","col","key","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","headerGroup","headerIdx","TableBody","DragOverlay","props"],"mappings":"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"}
@@ -0,0 +1,293 @@
1
+ import { jsx as t, jsxs as b } from "react/jsx-runtime";
2
+ import { useSensors as xe, useSensor as A, PointerSensor as ye, KeyboardSensor as Ce, DndContext as we, closestCenter as De, DragOverlay as Te } from "@dnd-kit/core";
3
+ import { restrictToHorizontalAxis as _e } from "@dnd-kit/modifiers";
4
+ import { sortableKeyboardCoordinates as Ne, arrayMove as Ie, SortableContext as Re, horizontalListSortingStrategy as He, useSortable as Me } from "@dnd-kit/sortable";
5
+ import { CSS as Oe } from "@dnd-kit/utilities";
6
+ import { useReactTable as ke, getPaginationRowModel as ze, getSortedRowModel as Ve, getCoreRowModel as Ee, flexRender as B } from "@tanstack/react-table";
7
+ import { GripVerticalIcon as Ae, ArrowUpIcon as Le, ArrowDownIcon as Ke, ArrowUpDownIcon as Pe } from "lucide-react";
8
+ import * as s from "react";
9
+ import { DataTablePagination as je } from "./data-table-pagination.js";
10
+ import { Table as L, TableHeader as K, TableRow as D, TableBody as P, TableHead as G, TableCell as j } from "../table.js";
11
+ import { cn as S } from "../../../lib/utils.js";
12
+ const X = s.createContext(null);
13
+ function tt() {
14
+ const o = s.useContext(X);
15
+ if (!o)
16
+ throw new Error("useDataTable must be used within a <DataTable>");
17
+ return o;
18
+ }
19
+ function Fe({
20
+ header: o,
21
+ children: a,
22
+ position: l,
23
+ numeric: i
24
+ }) {
25
+ const {
26
+ attributes: n,
27
+ listeners: g,
28
+ setNodeRef: v,
29
+ transform: m,
30
+ transition: T,
31
+ isDragging: f
32
+ } = Me({ id: o.column.id }), _ = {
33
+ transform: Oe.Transform.toString(
34
+ m ? { ...m, scaleX: 1, scaleY: 1 } : null
35
+ ),
36
+ transition: T,
37
+ position: "relative"
38
+ };
39
+ return /* @__PURE__ */ t(
40
+ G,
41
+ {
42
+ ref: v,
43
+ style: _,
44
+ variant: i ? "numeric" : void 0,
45
+ className: S(
46
+ "group/header transition-shadow duration-150",
47
+ !f && l === "first" && "hover:shadow-[inset_-1px_0_0_0_var(--color-border)]",
48
+ !f && l === "last" && "hover:shadow-[inset_1px_0_0_0_var(--color-border)]",
49
+ !f && l === "middle" && "hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]",
50
+ f && "opacity-40"
51
+ ),
52
+ children: /* @__PURE__ */ b("div", { className: S("flex items-center gap-1", i && "flex-row-reverse"), children: [
53
+ /* @__PURE__ */ t("div", { className: "flex-1", children: a }),
54
+ /* @__PURE__ */ t(
55
+ "button",
56
+ {
57
+ type: "button",
58
+ "data-drag-handle": "",
59
+ className: "cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity",
60
+ ...n,
61
+ ...g,
62
+ children: /* @__PURE__ */ t(Ae, { className: "size-3.5" })
63
+ }
64
+ )
65
+ ] })
66
+ }
67
+ );
68
+ }
69
+ function F({
70
+ header: o,
71
+ enableSorting: a,
72
+ numericColumns: l,
73
+ columnLabels: i
74
+ }) {
75
+ if (o.isPlaceholder) return null;
76
+ const n = a && o.column.getCanSort(), g = o.column.getIsSorted(), v = l.has(o.column.id);
77
+ return /* @__PURE__ */ b(
78
+ "div",
79
+ {
80
+ className: S(
81
+ "flex items-center gap-1",
82
+ n && "group/sort cursor-pointer select-none",
83
+ v && "flex-row-reverse"
84
+ ),
85
+ onClick: n ? o.column.getToggleSortingHandler() : void 0,
86
+ onKeyDown: (m) => {
87
+ (m.key === "Enter" || m.key === " ") && n && o.column.getToggleSortingHandler();
88
+ },
89
+ children: [
90
+ i[o.column.id] ?? B(o.column.columnDef.header, o.getContext()),
91
+ n && /* @__PURE__ */ t(
92
+ "span",
93
+ {
94
+ className: S(
95
+ !g && "opacity-0 group-hover/sort:opacity-100 transition-opacity"
96
+ ),
97
+ children: g === "asc" ? /* @__PURE__ */ t(Le, { className: "size-3.5 text-foreground" }) : g === "desc" ? /* @__PURE__ */ t(Ke, { className: "size-3.5 text-foreground" }) : /* @__PURE__ */ t(Pe, { className: "size-3.5 text-muted-foreground" })
98
+ }
99
+ )
100
+ ]
101
+ }
102
+ );
103
+ }
104
+ function U({
105
+ table: o,
106
+ columns: a,
107
+ numericColumns: l
108
+ }) {
109
+ return o.getRowModel().rows.length === 0 ? /* @__PURE__ */ t(D, { children: /* @__PURE__ */ t(j, { colSpan: a.length, className: "h-24 text-center text-muted-foreground", children: "No results." }) }) : o.getRowModel().rows.map((i) => /* @__PURE__ */ t(D, { "data-state": i.getIsSelected() ? "selected" : void 0, children: i.getVisibleCells().map((n) => /* @__PURE__ */ t(j, { variant: l.has(n.column.id) ? "numeric" : void 0, children: B(n.column.columnDef.cell, n.getContext()) }, n.id)) }, i.id));
110
+ }
111
+ function Ue(o) {
112
+ const a = [], l = [], i = [];
113
+ return s.Children.forEach(o, (n) => {
114
+ s.isValidElement(n) && n.type === Be ? a.push(n) : s.isValidElement(n) && n.type === je ? l.push(n) : i.push(n);
115
+ }), { toolbarSlots: a, paginationSlots: l, restSlots: i };
116
+ }
117
+ function ot({
118
+ columns: o,
119
+ data: a,
120
+ toolbar: l,
121
+ enableSorting: i = !1,
122
+ enableColumnVisibility: n = !1,
123
+ children: g,
124
+ columnOrder: v,
125
+ onColumnOrderChange: m,
126
+ columnVisibility: T,
127
+ onColumnVisibilityChange: f,
128
+ columnLabels: _,
129
+ onColumnLabelChange: H,
130
+ enablePagination: y = !1,
131
+ defaultPageSize: Y = 10,
132
+ pagination: N,
133
+ onPaginationChange: I,
134
+ enableColumnReorder: q = !1,
135
+ density: M = "default",
136
+ className: J,
137
+ variant: O = "card",
138
+ containerClassName: k
139
+ }) {
140
+ const [Q, W] = s.useState([]), [Z, $] = s.useState({}), [ee, te] = s.useState([]), [oe, ne] = s.useState({}), [re, se] = s.useState({
141
+ pageIndex: 0,
142
+ pageSize: Y
143
+ }), ie = N ?? re, R = T ?? Z, p = v ?? ee, C = _ ?? oe, ae = s.useMemo(() => {
144
+ if (y)
145
+ return I ? (e) => {
146
+ const r = typeof e == "function" ? e(N) : e;
147
+ I(r);
148
+ } : se;
149
+ }, [y, I, N]), le = s.useMemo(() => {
150
+ if (n)
151
+ return (e) => {
152
+ const r = typeof e == "function" ? e(R) : e;
153
+ (f ?? $)(r);
154
+ };
155
+ }, [n, R, f]), ce = s.useCallback(
156
+ (e) => {
157
+ const r = typeof e == "function" ? e(p) : e;
158
+ (m ?? te)(r);
159
+ },
160
+ [p, m]
161
+ ), d = ke({
162
+ data: a,
163
+ columns: o,
164
+ state: {
165
+ sorting: i ? Q : void 0,
166
+ columnVisibility: n ? R : void 0,
167
+ columnOrder: p.length > 0 ? p : void 0,
168
+ ...y ? { pagination: ie } : {}
169
+ },
170
+ onSortingChange: i ? W : void 0,
171
+ onPaginationChange: ae,
172
+ onColumnVisibilityChange: le,
173
+ onColumnOrderChange: ce,
174
+ getCoreRowModel: Ee(),
175
+ getSortedRowModel: i ? Ve() : void 0,
176
+ getPaginationRowModel: y ? ze() : void 0
177
+ }), de = s.useCallback(
178
+ (e, r) => {
179
+ (H ?? ((c, u) => ne((w) => ({ ...w, [c]: u }))))(e, r);
180
+ },
181
+ [H]
182
+ ), ue = xe(
183
+ A(ye, { activationConstraint: { distance: 5 } }),
184
+ A(Ce, { coordinateGetter: Ne })
185
+ ), [z, V] = s.useState(null), me = s.useCallback(
186
+ (e) => {
187
+ V(String(e.active.id));
188
+ },
189
+ []
190
+ ), ge = s.useCallback(
191
+ (e) => {
192
+ V(null);
193
+ const { active: r, over: c } = e;
194
+ if (!c || r.id === c.id) return;
195
+ const u = p.length > 0 ? p : d.getAllLeafColumns().map((ve) => ve.id), w = u.indexOf(String(r.id)), E = u.indexOf(String(c.id));
196
+ if (w === -1 || E === -1) return;
197
+ const Se = Ie(u, w, E);
198
+ d.setColumnOrder(Se);
199
+ },
200
+ [p, d]
201
+ ), x = z ? d.getFlatHeaders().find((e) => e.column.id === z) : null, h = s.useMemo(() => {
202
+ if (a.length === 0) return /* @__PURE__ */ new Set();
203
+ const e = a[0], r = /* @__PURE__ */ new Set();
204
+ for (const c of o) {
205
+ const u = "accessorKey" in c ? String(c.accessorKey) : "";
206
+ u && typeof e[u] == "number" && r.add(u);
207
+ }
208
+ return r;
209
+ }, [a, o]), fe = {
210
+ table: d,
211
+ columnLabels: C,
212
+ setColumnLabel: de
213
+ }, { toolbarSlots: pe, paginationSlots: he, restSlots: be } = Ue(g);
214
+ return /* @__PURE__ */ t(X.Provider, { value: fe, children: /* @__PURE__ */ b("div", { "data-slot": "data-table", className: S("w-full space-y-2", J), children: [
215
+ l,
216
+ pe,
217
+ q ? /* @__PURE__ */ b(
218
+ we,
219
+ {
220
+ sensors: ue,
221
+ collisionDetection: De,
222
+ modifiers: [_e],
223
+ onDragStart: me,
224
+ onDragEnd: ge,
225
+ children: [
226
+ /* @__PURE__ */ t(
227
+ Re,
228
+ {
229
+ items: d.getFlatHeaders().map((e) => e.column.id),
230
+ strategy: He,
231
+ children: /* @__PURE__ */ b(L, { "data-density": M, variant: O, containerClassName: k, children: [
232
+ /* @__PURE__ */ t(K, { children: d.getHeaderGroups().map((e) => /* @__PURE__ */ t(D, { children: e.headers.map((r, c) => /* @__PURE__ */ t(
233
+ Fe,
234
+ {
235
+ header: r,
236
+ position: c === 0 ? "first" : c === e.headers.length - 1 ? "last" : "middle",
237
+ numeric: h.has(r.column.id),
238
+ children: /* @__PURE__ */ t(
239
+ F,
240
+ {
241
+ header: r,
242
+ enableSorting: i,
243
+ numericColumns: h,
244
+ columnLabels: C
245
+ }
246
+ )
247
+ },
248
+ r.id
249
+ )) }, e.id)) }),
250
+ /* @__PURE__ */ t(P, { children: /* @__PURE__ */ t(U, { table: d, columns: o, numericColumns: h }) })
251
+ ] })
252
+ }
253
+ ),
254
+ /* @__PURE__ */ t(Te, { dropAnimation: null, children: x && /* @__PURE__ */ t("div", { className: "rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg", children: C[x.column.id] ?? (typeof x.column.columnDef.header == "string" ? x.column.columnDef.header : x.column.id) }) })
255
+ ]
256
+ }
257
+ ) : /* @__PURE__ */ b(L, { "data-density": M, variant: O, containerClassName: k, children: [
258
+ /* @__PURE__ */ t(K, { children: d.getHeaderGroups().map((e) => /* @__PURE__ */ t(D, { children: e.headers.map((r) => /* @__PURE__ */ t(G, { variant: h.has(r.column.id) ? "numeric" : void 0, children: /* @__PURE__ */ t(
259
+ F,
260
+ {
261
+ header: r,
262
+ enableSorting: i,
263
+ numericColumns: h,
264
+ columnLabels: C
265
+ }
266
+ ) }, r.id)) }, e.id)) }),
267
+ /* @__PURE__ */ t(P, { children: /* @__PURE__ */ t(U, { table: d, columns: o, numericColumns: h }) })
268
+ ] }),
269
+ he,
270
+ be
271
+ ] }) });
272
+ }
273
+ function Be({
274
+ className: o,
275
+ children: a,
276
+ ...l
277
+ }) {
278
+ return /* @__PURE__ */ t(
279
+ "div",
280
+ {
281
+ "data-slot": "table-toolbar",
282
+ className: S("flex items-center gap-2", o),
283
+ ...l,
284
+ children: a
285
+ }
286
+ );
287
+ }
288
+ export {
289
+ ot as DataTable,
290
+ Be as TableToolbar,
291
+ tt as useDataTable
292
+ };
293
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +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 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// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\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}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: 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 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\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1\">{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}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\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\",\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 {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\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}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\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 key={cell.id} variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}>\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 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 (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, 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 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}\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 density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\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\n const pagination = controlledPagination ?? internalPagination\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 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,\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 // 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 } as TableContextValue<unknown>\n\n const { toolbarSlots, 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 {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 data-density={density} variant={variant} containerClassName={containerClassName}>\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 >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </DraggableHeader>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\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 data-density={density} variant={variant} containerClassName={containerClassName}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id} variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}>\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\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 gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps }\n"],"names":["TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","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","cell","categorizeSlots","toolbarSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","data","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableColumnReorder","density","className","variant","containerClassName","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","pagination","columnVisibility","columnOrder","handlePaginationChange","updater","next","handleVisibilityChange","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","prev","reorderSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleColumnDragStart","event","handleColumnDragEnd","active","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","first","ids","col","key","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","headerGroup","headerIdx","TableBody","DragOverlay","props"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),g=require("lucide-react"),t=require("radix-ui"),r=require("./button.cjs"),l=require("../../lib/utils.cjs");function c({...a}){return o.jsx(t.Dialog.Root,{"data-slot":"dialog",...a})}function u({...a}){return o.jsx(t.Dialog.Trigger,{"data-slot":"dialog-trigger",...a})}function s({...a}){return o.jsx(t.Dialog.Portal,{"data-slot":"dialog-portal",...a})}function x({...a}){return o.jsx(t.Dialog.Close,{"data-slot":"dialog-close",...a})}function d({className:a,...e}){return o.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",a),...e})}function f({className:a,children:e,showCloseButton:i=!0,...n}){return o.jsxs(s,{children:[o.jsx(d,{}),o.jsxs(t.Dialog.Content,{"data-slot":"dialog-content",className:l.cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm 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",a),...n,children:[e,i&&o.jsx(t.Dialog.Close,{"data-slot":"dialog-close",asChild:!0,children:o.jsxs(r.Button,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm",children:[o.jsx(g.XIcon,{}),o.jsx("span",{className:"sr-only",children:"Close"})]})})]})]})}function D({className:a,...e}){return o.jsx("div",{"data-slot":"dialog-header",className:l.cn("flex flex-col gap-2",a),...e})}function m({className:a,showCloseButton:e=!1,children:i,...n}){return o.jsxs("div",{"data-slot":"dialog-footer",className:l.cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",a),...n,children:[i,e&&o.jsx(t.Dialog.Close,{asChild:!0,children:o.jsx(r.Button,{variant:"outline",children:"Close"})})]})}function p({className:a,...e}){return o.jsx(t.Dialog.Title,{"data-slot":"dialog-title",className:l.cn("text-base leading-none font-medium",a),...e})}function j({className:a,...e}){return o.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",a),...e})}exports.Dialog=c;exports.DialogClose=x;exports.DialogContent=f;exports.DialogDescription=j;exports.DialogFooter=m;exports.DialogHeader=D;exports.DialogOverlay=d;exports.DialogPortal=s;exports.DialogTitle=p;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-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 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm 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 flex-col gap-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 \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 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 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","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,oVACAF,CAAA,EAED,GAAGN,EAEH,SAAA,CAAAU,EACAC,SACEV,EAAAA,OAAgB,MAAhB,CAAsB,YAAU,eAAe,QAAO,GACrD,SAAAW,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,QACR,UAAU,yBACV,KAAK,UAEL,SAAA,CAAAN,EAAAA,IAACO,EAAAA,MAAA,CAAA,CAAA,EAEDP,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAU,SAAA,OAAA,CAAK,CAAA,CAAA,CAAA,CACjC,CACF,CAAA,CAAA,CAAA,CAEJ,EACF,CAEJ,CAEA,SAASQ,EAAa,CAAE,UAAAT,EAAW,GAAGN,GAAsC,CAC1E,OACEO,EAAAA,IAAC,MAAA,CACC,YAAU,gBACV,UAAWC,EAAAA,GAAG,sBAAuBF,CAAS,EAC7C,GAAGN,CAAA,CAAA,CAGV,CAEA,SAASgB,EAAa,CACpB,UAAAV,EACA,gBAAAK,EAAkB,GAClB,SAAAD,EACA,GAAGV,CACL,EAEG,CACD,OACEY,EAAAA,KAAC,MAAA,CACC,YAAU,gBACV,UAAWJ,EAAAA,GACT,2GACAF,CAAA,EAED,GAAGN,EAEH,SAAA,CAAAU,EACAC,GACCJ,EAAAA,IAACN,EAAAA,OAAgB,MAAhB,CAAsB,QAAO,GAC5B,SAAAM,EAAAA,IAACM,EAAAA,OAAA,CAAO,QAAQ,UAAU,SAAA,OAAA,CAAK,CAAA,CACjC,CAAA,CAAA,CAAA,CAIR,CAEA,SAASI,EAAY,CACnB,UAAAX,EACA,GAAGN,CACL,EAAuD,CACrD,OACEO,EAAAA,IAACN,EAAAA,OAAgB,MAAhB,CACC,YAAU,eACV,UAAWO,EAAAA,GAAG,qCAAsCF,CAAS,EAC5D,GAAGN,CAAA,CAAA,CAGV,CAEA,SAASkB,EAAkB,CACzB,UAAAZ,EACA,GAAGN,CACL,EAA6D,CAC3D,OACEO,EAAAA,IAACN,EAAAA,OAAgB,YAAhB,CACC,YAAU,qBACV,UAAWO,EAAAA,GACT,qGACAF,CAAA,EAED,GAAGN,CAAA,CAAA,CAGV"}
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":"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"}