UNPKG

ivt

Version:

Ivt Components Library

1 lines 55 kB
{"version":3,"file":"index.mjs","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../src/components/default/data-table/DataTableViewOptions.tsx","../../src/components/default/data-table/DataTableSearch.tsx","../../node_modules/@tanstack/react-table/build/lib/index.mjs","../../src/components/default/data-table/DataTablePagination.tsx","../../src/components/default/data-table/DataTablePaginationSkeleton.tsx","../../src/components/default/data-table/DataTableRowSkeleton.tsx","../../src/components/default/data-table/DataTableMainFrame.tsx","../../src/components/default/data-table/DataTableSkeleton.tsx","../../src/components/default/data-table/DataTableStatus.tsx","../../src/components/default/data-table/DataTableMainFrameSortable.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"ArrowDown\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.js.map\n","/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m5 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n];\nconst ArrowUp = createLucideIcon(\"ArrowUp\", __iconNode);\n\nexport { __iconNode, ArrowUp as default };\n//# sourceMappingURL=arrow-up.js.map\n","import type { Table } from \"@tanstack/react-table\";\nimport { Check, ChevronDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"@/components/ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\n\ninterface DataTableViewOptionsProps<TData> {\n\ttable: Table<TData>;\n\ttransformColumnName?: (id: string) => string;\n}\n\nexport function DataTableViewOptions<TData>({\n\ttable,\n\ttransformColumnName,\n}: DataTableViewOptionsProps<TData>) {\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\n\treturn (\n\t\t<Popover modal>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={triggerRef}\n\t\t\t\t\taria-label=\"Toggle columns\"\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tclassName=\"text-muted-foreground hover:text-muted-foreground w-full max-w-[12.5rem] items-center justify-between bg-inherit px-3 py-2 hover:bg-inherit\"\n\t\t\t\t>\n\t\t\t\t\tColunas\n\t\t\t\t\t<ChevronDownIcon className=\"h-4 w-4\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent\n\t\t\t\talign=\"end\"\n\t\t\t\tclassName=\"w-44 p-0\"\n\t\t\t\tonCloseAutoFocus={() => triggerRef.current?.focus()}\n\t\t\t>\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Pesquisar colunas...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>Nenhuma coluna encontrada.</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{table\n\t\t\t\t\t\t\t\t.getAllColumns()\n\t\t\t\t\t\t\t\t.filter((column) => typeof column.accessorFn !== \"undefined\" && column.getCanHide())\n\t\t\t\t\t\t\t\t.map((column) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={() => column.toggleVisibility(!column.getIsVisible())}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t{transformColumnName ? transformColumnName(column.id) : column.id}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<Check\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"ml-auto size-4 shrink-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.getIsVisible() ? \"opacity-100\" : \"opacity-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","import { Input } from \"@/components/ui/input\";\nimport type { Table } from \"@tanstack/react-table\";\nimport { SearchIcon } from \"lucide-react\";\n\ninterface DataTableSearchProps<TData> {\n\ttable: Table<TData>;\n\tkeySearch: string;\n\tplaceholder: string;\n}\n\nexport function DataTableSearch<TData>({\n\ttable,\n\tkeySearch,\n\tplaceholder,\n}: DataTableSearchProps<TData>) {\n\treturn (\n\t\t<div className=\"relative w-full max-w-sm\">\n\t\t\t<SearchIcon className=\"text-muted-foreground absolute top-3 left-3 h-4 w-4\" />\n\t\t\t<Input\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tvalue={(table.getColumn(keySearch)?.getFilterValue() as string) ?? \"\"}\n\t\t\t\tonChange={(event) => table.getColumn(keySearch)?.setFilterValue(event.target.value)}\n\t\t\t\tclassName=\"w-full pl-8 xl:w-80\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import type { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { PaginationEllipsis, PaginationItem } from \"@/components/ui/pagination\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@/components/ui/select\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport React from \"react\";\ninterface DataTablePaginationProps<TData> {\n\ttable: Table<TData>;\n\tpageSizeOptions?: number[];\n\tdataLabel?: string;\n}\n\nexport function DataTablePagination<TData>({\n\ttable,\n\tpageSizeOptions = [20, 30, 50, 100, 200],\n\tdataLabel = \"Fundos\",\n}: DataTablePaginationProps<TData>) {\n\tconst pageSize = pageSizeOptions[0];\n\tconst currentPage = table.getState().pagination.pageIndex + 1;\n\tconst rowCount = table.getRowCount();\n\tconst totalPageCount = Math.ceil(rowCount / table.getState().pagination.pageSize);\n\n\tconst renderPageNumbers = () => {\n\t\tconst items: React.ReactNode[] = [];\n\t\tconst maxVisiblePages = 3;\n\n\t\tif (totalPageCount <= maxVisiblePages) {\n\t\t\tfor (let i = 1; i <= totalPageCount; i++) {\n\t\t\t\titems.push(\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant={currentPage === i ? \"outline\" : \"ghost\"}\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tonClick={() => table.setPageIndex(i - 1)}\n\t\t\t\t\t\tclassName=\"size-9\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{i}\n\t\t\t\t\t</Button>,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\titems.push(\n\t\t\t\t<Button\n\t\t\t\t\tvariant={currentPage === 1 ? \"outline\" : \"ghost\"}\n\t\t\t\t\tkey={1}\n\t\t\t\t\tonClick={() => table.setPageIndex(0)}\n\t\t\t\t\tclassName=\"size-9\"\n\t\t\t\t>\n\t\t\t\t\t1\n\t\t\t\t</Button>,\n\t\t\t);\n\n\t\t\tconst start = Math.max(2, Math.min(currentPage, totalPageCount - (maxVisiblePages - 1)));\n\t\t\tconst end = Math.min(totalPageCount - 1, start + maxVisiblePages - 2);\n\n\t\t\tif (start > 2) {\n\t\t\t\titems.push(\n\t\t\t\t\t<PaginationItem key=\"ellipsis-start\" className=\"list-none\">\n\t\t\t\t\t\t<PaginationEllipsis />\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\titems.push(\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant={currentPage === i ? \"outline\" : \"ghost\"}\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tonClick={() => table.setPageIndex(i - 1)}\n\t\t\t\t\t\tclassName=\"size-9\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{i}\n\t\t\t\t\t</Button>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (end < totalPageCount - 1) {\n\t\t\t\titems.push(\n\t\t\t\t\t<PaginationItem key=\"ellipsis-end\" className=\"list-none\">\n\t\t\t\t\t\t<PaginationEllipsis />\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\titems.push(\n\t\t\t\t<Button\n\t\t\t\t\tvariant={currentPage === totalPageCount ? \"outline\" : \"ghost\"}\n\t\t\t\t\tkey={totalPageCount}\n\t\t\t\t\tonClick={() => table.setPageIndex(totalPageCount - 1)}\n\t\t\t\t>\n\t\t\t\t\t{totalPageCount}\n\t\t\t\t</Button>,\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t};\n\treturn (\n\t\t<div className=\"mt-4 flex flex-wrap items-center justify-between gap-2\">\n\t\t\t<div className=\"text-muted-foreground flex gap-1 text-sm\">\n\t\t\t\t<p className=\"ml-2\">\n\t\t\t\t\tMostrando {table.getRowModel().rows.length.toLocaleString()} de {rowCount} {dataLabel}.\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex flex-wrap items-center justify-between gap-2 gap-y-4\">\n\t\t\t\t<Select\n\t\t\t\t\tvalue={String(table.getState().pagination.pageSize) || String(pageSize)}\n\t\t\t\t\tonValueChange={(value) => table.setPageSize(Number(value))}\n\t\t\t\t>\n\t\t\t\t\t<SelectTrigger className=\"w-fit\">\n\t\t\t\t\t\t<SelectValue\n\t\t\t\t\t\t\tplaceholder={`Mostrar ${table.getState().pagination.pageSize || pageSize}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t{rowCount && (rowCount === 0 || rowCount < pageSize) ? (\n\t\t\t\t\t\t\t<SelectItem value={String(pageSize)}>Mostrar {pageSize}</SelectItem>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{pageSizeOptions.map((pageSize) => (\n\t\t\t\t\t\t\t\t\t<SelectItem key={pageSize} value={String(pageSize)}>\n\t\t\t\t\t\t\t\t\t\tMostrar {pageSize}\n\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SelectContent>\n\t\t\t\t</Select>\n\n\t\t\t\t<div className=\"flex flex-wrap gap-2 gap-y-4\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={() => table.previousPage()}\n\t\t\t\t\t\tdisabled={!table.getCanPreviousPage()}\n\t\t\t\t\t\taria-label=\"Ir para página anterior\"\n\t\t\t\t\t\tclassName=\"gap-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeftIcon className=\"size-4\" />\n\t\t\t\t\t\tAnterior\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<div className=\"flex gap-2\">{renderPageNumbers()}</div>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={() => table.nextPage()}\n\t\t\t\t\t\tdisabled={!table.getCanNextPage()}\n\t\t\t\t\t\taria-label=\"Ir para próxima página\"\n\t\t\t\t\t\tclassName=\"gap-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\tPróximo\n\t\t\t\t\t\t<ChevronRightIcon className=\"size-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { Skeleton } from \"@/components/ui/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport React from \"react\";\n\nexport const DataTablePaginationSkeleton: React.FC = ({\n\tclassName,\n}: {\n\tclassName?: string;\n}) => {\n\treturn (\n\t\t<div className=\"mt-4 flex flex-wrap items-center justify-between gap-2\">\n\t\t\t<Skeleton className={cn(\"h-5 w-40\", className)} />\n\t\t\t<div className=\"flex flex-wrap items-center justify-between gap-2 gap-y-4\">\n\t\t\t\t<Skeleton className={cn(\"h-10 w-28\", className)} />\n\t\t\t\t<Skeleton className={cn(\"h-9 w-[16rem]\", className)} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { Skeleton } from \"@/components/ui/skeleton\";\nimport { TableCell, TableRow } from \"@/components/ui/table\";\nimport React from \"react\";\n\ninterface DataTableRowSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n\tcolumnCount: number;\n\trowCount?: number;\n\tcellWidths?: string[];\n\tshrinkZero?: boolean;\n}\n\nexport function DataTableRowSkeleton(props: DataTableRowSkeletonProps) {\n\tconst { columnCount, rowCount = 8, cellWidths = [\"auto\"], shrinkZero = false } = props;\n\n\treturn (\n\t\t<>\n\t\t\t{Array.from({ length: rowCount }).map((_, i) => (\n\t\t\t\t<TableRow key={`row-${String(i)}`} className=\"hover:bg-transparent\">\n\t\t\t\t\t{Array.from({ length: columnCount }).map((_, j) => (\n\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\tkey={`cell-${String(i)}-${j}`}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: cellWidths[j],\n\t\t\t\t\t\t\t\tminWidth: shrinkZero ? cellWidths[j] : \"auto\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-full\" />\n\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t))}\n\t\t\t\t</TableRow>\n\t\t\t))}\n\t\t</>\n\t);\n}\n","import {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { CaretSortIcon } from \"@radix-ui/react-icons\";\nimport type { ColumnDef, Row, Table as TableType } from \"@tanstack/react-table\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { DataTablePagination } from \"./DataTablePagination\";\nimport { DataTablePaginationSkeleton } from \"./DataTablePaginationSkeleton\";\nimport { DataTableRowSkeleton } from \"./DataTableRowSkeleton\";\n\ninterface DataTableViewOptionsProps<TData, TValue> {\n\ttable: TableType<TData>;\n\tcolumns: ColumnDef<TData, TValue>[];\n\tsetQueryParams?: React.Dispatch<React.SetStateAction<ListParams>>;\n\tisLoadingTable?: boolean;\n\tdataLabel: string;\n\tactionColumns?: string[];\n\tmessageEmpty?: React.ReactNode;\n\tdividingColumnKey?: string[];\n\tloadingContent?: React.ReactNode;\n\tpageSizeOptions?: number[];\n\tclassName?: string;\n\tisScrollable?: boolean;\n\tscrollMaxHeightClass?: string;\n\tfixedHeader?: boolean;\n\tshowPagination?: boolean;\n}\n\ninterface ListParams {\n\t[propName: string]: string | string[];\n}\n\nexport const DataTableMainFrame = <TData, TValue>({\n\ttable,\n\tcolumns,\n\tisLoadingTable,\n\tloadingContent,\n\tsetQueryParams,\n\tdataLabel,\n\tactionColumns = [],\n\tmessageEmpty = <>Sem resultados</>,\n\tdividingColumnKey,\n\tpageSizeOptions,\n\tclassName,\n\tscrollMaxHeightClass = \"sm:max-h-[calc(100vh-300px)]\",\n\tisScrollable = false,\n\tfixedHeader = false,\n\tshowPagination = true,\n}: DataTableViewOptionsProps<TData, TValue>) => {\n\tconst currentPage = Number(table.getState().pagination.pageIndex).toString();\n\tconst pageSize = Number(table.getState().pagination.pageSize).toString();\n\tconst sorting = table.getState().sorting;\n\n\tReact.useEffect(() => {\n\t\tif (!setQueryParams) return;\n\t\tconst sortingParams = { sortingBy: \"\", order: \"\" };\n\t\tif (sorting.length > 0) {\n\t\t\tsortingParams.sortingBy = sorting[0].id;\n\t\t\tsortingParams.order = sorting[0].desc ? \"DESC\" : \"ASC\";\n\t\t}\n\t\tsetQueryParams((prev) => ({\n\t\t\t...prev,\n\t\t\tpageSize,\n\t\t\tpage: currentPage,\n\t\t\t...sortingParams,\n\t\t}));\n\t}, [currentPage, pageSize, setQueryParams, sorting]);\n\n\tconst renderTableBodyContent = () => {\n\t\tif (isLoadingTable && !loadingContent) {\n\t\t\treturn <DataTableRowSkeleton columnCount={table.getAllColumns().length} />;\n\t\t}\n\n\t\tif (isLoadingTable && loadingContent) {\n\t\t\treturn (\n\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t{loadingContent}\n\t\t\t\t</TableCell>\n\t\t\t);\n\t\t}\n\n\t\tif (table.getRowModel().rows.length === 0) {\n\t\t\treturn (\n\t\t\t\t<TableRow>\n\t\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t\t<span className=\"inline-block max-w-[30rem] text-wrap break-words\">{messageEmpty}</span>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t);\n\t\t}\n\n\t\treturn table.getRowModel().rows.map((row: Row<TData>, index) => {\n\t\t\tconst rowKey = row.id ?? String(index);\n\n\t\t\treturn (\n\t\t\t\t<TableRow\n\t\t\t\t\tkey={rowKey}\n\t\t\t\t\tdata-state={row.getIsSelected() && \"selected\"}\n\t\t\t\t\tclassName=\"even:bg-body/50\"\n\t\t\t\t>\n\t\t\t\t\t{/* biome-ignore lint/suspicious/noExplicitAny: <explanation> */}\n\t\t\t\t\t{row.getVisibleCells().map((cell: any) => (\n\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\tclassName={cn(\"p-2 py-1\", dividingColumnKey?.includes(cell.column.id) && \"border-r\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\n\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t))}\n\t\t\t\t</TableRow>\n\t\t\t);\n\t\t});\n\t};\n\n\tconst shouldForceMinHeight = table.getRowModel().rows.length > 1 || isLoadingTable;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-background mx-1 h-full w-full rounded-md border whitespace-nowrap\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-full overflow-auto\",\n\t\t\t\t\t\tshouldForceMinHeight && \"force-min-height\",\n\t\t\t\t\t\tisScrollable && scrollMaxHeightClass && scrollMaxHeightClass,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Table>\n\t\t\t\t\t\t<TableHeader\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tfixedHeader && \"bg-background sticky top-0 z-10 shadow-[0_1px_0_hsl(240_6%_90%)]\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TableRow key={headerGroup.id}>\n\t\t\t\t\t\t\t\t\t\t{headerGroup.headers.map((header) => {\n\t\t\t\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\t\t\t\tcolumn: { id },\n\t\t\t\t\t\t\t\t\t\t\t} = header;\n\n\t\t\t\t\t\t\t\t\t\t\tconst isActionsColumn = [\"actions\", ...actionColumns].includes(id);\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdividingColumnKey?.includes(id) ? \"border-r\" : \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"static\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{header.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isActionsColumn && header.column.getCanSort()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"flex w-fit items-center justify-start cursor-pointer gap-1 font-medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: !isActionsColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? header.column.getToggleSortingHandler()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{flexRender(header.column.columnDef.header, header.getContext())}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(!isActionsColumn &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.getCanSort() &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tasc: <ArrowDownIcon className=\"h-3.5 w-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdesc: <ArrowUpIcon className=\"h-3.5 w-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfalse: <CaretSortIcon className=\"h-4 w-4\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}[header.column.getIsSorted() as string]) ?? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowDownIcon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</TableHeader>\n\n\t\t\t\t\t\t<TableBody>{renderTableBodyContent()}</TableBody>\n\t\t\t\t\t</Table>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{isScrollable || !showPagination ? null : isLoadingTable ? (\n\t\t\t\t<DataTablePaginationSkeleton />\n\t\t\t) : (\n\t\t\t\t<DataTablePagination\n\t\t\t\t\ttable={table}\n\t\t\t\t\tdataLabel={dataLabel}\n\t\t\t\t\tpageSizeOptions={pageSizeOptions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport React from \"react\";\ninterface DataTableSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n\t/**\n\t * The number of columns in the table.\n\t * @type number\n\t */\n\tcolumnCount: number;\n\n\t/**\n\t * The number of rows in the table.\n\t * @default 10\n\t * @type number | undefined\n\t */\n\trowCount?: number;\n\n\t/**\n\t * The number of searchable columns in the table.\n\t * @default 0\n\t * @type number | undefined\n\t */\n\tsearchableColumnCount?: number;\n\n\t/**\n\t * The number of filterable columns in the table.\n\t * @default 0\n\t * @type number | undefined\n\t */\n\tfilterableColumnCount?: number;\n\n\t/**\n\t * Flag to show the table view options.\n\t * @default undefined\n\t * @type boolean | undefined\n\t */\n\tshowViewOptions?: boolean;\n\n\t/**\n\t * The width of each cell in the table.\n\t * The length of the array should be equal to the columnCount.\n\t * Any valid CSS width value is accepted.\n\t * @default [\"auto\"]\n\t * @type string[] | undefined\n\t */\n\tcellWidths?: string[];\n\n\t/**\n\t * Flag to show the pagination bar.\n\t * @default true\n\t * @type boolean | undefined\n\t */\n\twithPagination?: boolean;\n\n\t/**\n\t * Flag to prevent the table cells from shrinking.\n\t * @default false\n\t * @type boolean | undefined\n\t */\n\tshrinkZero?: boolean;\n}\n\nexport function DataTableSkeleton(props: DataTableSkeletonProps) {\n\tconst {\n\t\tcolumnCount,\n\t\trowCount = 10,\n\t\tsearchableColumnCount = 0,\n\t\tfilterableColumnCount = 0,\n\t\tshowViewOptions = true,\n\t\tcellWidths = [\"auto\"],\n\t\twithPagination = true,\n\t\tshrinkZero = false,\n\t\tclassName,\n\t\t...skeletonProps\n\t} = props;\n\n\treturn (\n\t\t<div className={cn(\"w-full space-y-2.5 overflow-auto\", className)} {...skeletonProps}>\n\t\t\t<div className=\"flex w-full items-center justify-between space-x-2 overflow-auto p-1\">\n\t\t\t\t<div className=\"flex flex-1 items-center space-x-2\">\n\t\t\t\t\t{searchableColumnCount > 0\n\t\t\t\t\t\t? Array.from({ length: searchableColumnCount }).map((_, i) => (\n\t\t\t\t\t\t\t\t<Skeleton key={`${String(i)}`} className=\"h-7 w-40 lg:w-60\" />\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t: null}\n\t\t\t\t\t{filterableColumnCount > 0\n\t\t\t\t\t\t? Array.from({ length: filterableColumnCount }).map((_, i) => (\n\t\t\t\t\t\t\t\t<Skeleton key={`${String(i)}`} className=\"h-7 w-[4.5rem] border-dashed\" />\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t: null}\n\t\t\t\t</div>\n\t\t\t\t{showViewOptions ? <Skeleton className=\"ml-auto hidden h-7 w-[4.5rem] lg:flex\" /> : null}\n\t\t\t</div>\n\t\t\t<div className=\"rounded-md border\">\n\t\t\t\t<Table>\n\t\t\t\t\t<TableHeader>\n\t\t\t\t\t\t{Array.from({ length: 1 }).map((_, i) => (\n\t\t\t\t\t\t\t<TableRow key={`${String(i)}`} className=\"hover:bg-transparent\">\n\t\t\t\t\t\t\t\t{Array.from({ length: columnCount }).map((_, j) => (\n\t\t\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\t\t\tkey={`${String(j)}`}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\twidth: cellWidths[j],\n\t\t\t\t\t\t\t\t\t\t\tminWidth: shrinkZero ? cellWidths[j] : \"auto\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-full\" />\n\t\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableHeader>\n\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t{Array.from({ length: rowCount }).map((_, i) => (\n\t\t\t\t\t\t\t<TableRow key={`${String(i)}`} className=\"hover:bg-transparent\">\n\t\t\t\t\t\t\t\t{Array.from({ length: columnCount }).map((_, j) => (\n\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\tkey={`${String(j)}`}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\twidth: cellWidths[j],\n\t\t\t\t\t\t\t\t\t\t\tminWidth: shrinkZero ? cellWidths[j] : \"auto\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Skeleton className=\"h-6 w-full\" />\n\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableBody>\n\t\t\t\t</Table>\n\t\t\t</div>\n\t\t\t{withPagination ? (\n\t\t\t\t<div className=\"flex w-full items-center justify-between gap-4 overflow-auto p-1 sm:gap-8\">\n\t\t\t\t\t<Skeleton className=\"h-7 w-40 shrink-0\" />\n\t\t\t\t\t<div className=\"flex items-center gap-4 sm:gap-6 lg:gap-8\">\n\t\t\t\t\t\t<div className=\"flex items-center space-x-2\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-7 w-24\" />\n\t\t\t\t\t\t\t<Skeleton className=\"h-7 w-[4.5rem]\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex items-center justify-center text-sm font-medium\">\n\t\t\t\t\t\t\t<Skeleton className=\"h-7 w-20\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex items-center space-x-2\">\n\t\t\t\t\t\t\t<Skeleton className=\"hidden size-7 lg:block\" />\n\t\t\t\t\t\t\t<Skeleton className=\"size-7\" />\n\t\t\t\t\t\t\t<Skeleton className=\"size-7\" />\n\t\t\t\t\t\t\t<Skeleton className=\"hidden size-7 lg:block\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"@/components/ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport type { Table } from \"@tanstack/react-table\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport React from \"react\";\n\ninterface DataTableStatusProps<TData, TEnum> {\n\ttable: Table<TData>;\n\tuniqueStatusValues: TEnum[];\n\trenderStatusMessage(status: TEnum): string;\n\tclassName?: string;\n}\n\nexport function DataTableStatus<TData, TEnum>({\n\ttable,\n\tuniqueStatusValues,\n\trenderStatusMessage,\n\tclassName,\n}: DataTableStatusProps<TData, TEnum>) {\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\n\tconst currentFilter = table.getColumn(\"status\")?.getFilterValue() as TEnum | undefined;\n\n\treturn (\n\t\t<Popover modal>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tref={triggerRef}\n\t\t\t\t\taria-label=\"Filtre por status\"\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"border-input text-muted-foreground ring-offset-background placeholder:text-muted-foreground hover:text-muted-foreground focus:ring-ring flex h-10 w-full max-w-60 items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm hover:bg-inherit focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{currentFilter ? renderStatusMessage(currentFilter) : \"Todos os status\"}\n\t\t\t\t\t<ChevronDownIcon className=\"h-4 w-4\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent\n\t\t\t\talign=\"end\"\n\t\t\t\tclassName=\"w-44 p-0\"\n\t\t\t\tonCloseAutoFocus={() => triggerRef.current?.focus()}\n\t\t\t>\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Pesquisar status...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>Nenhum status encontrado.</CommandEmpty>\n\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\tkey=\"all\"\n\t\t\t\t\t\t\tonSelect={() => table.getColumn(\"status\")?.setFilterValue(undefined)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"truncate\">Todos os status</span>\n\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t{uniqueStatusValues.map((item) => {\n\t\t\t\t\t\t\tif (!item) return null;\n\n\t\t\t\t\t\t\tconst statusMessage = renderStatusMessage(item as TEnum);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={`${String(item)}`}\n\t\t\t\t\t\t\t\t\tonSelect={() => table.getColumn(\"status\")?.setFilterValue(item)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className=\"truncate\">{statusMessage}</span>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","import { Sortable, SortableItem } from \"@/components/ui/sortable\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { CaretSortIcon } from \"@radix-ui/react-icons\";\nimport type { ColumnDef, Row, Table as TableType } from \"@tanstack/react-table\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { DataTablePagination } from \"./DataTablePagination\";\nimport { DataTablePaginationSkeleton } from \"./DataTablePaginationSkeleton\";\nimport { DataTableRowSkeleton } from \"./DataTableRowSkeleton\";\n\ninterface DataTableViewOptionsProps<TData, TValue> {\n\ttable: TableType<TData>;\n\tcolumns: ColumnDef<TData, TValue>[];\n\tsetQueryParams?: React.Dispatch<React.SetStateAction<ListParams>>;\n\tisLoadingTable?: boolean;\n\tdataLabel: string;\n\tactionColumns?: string[];\n\tdata: TData[];\n\tonDataChange?: (newData: TData[]) => void;\n\tmessageEmpty?: React.ReactNode;\n\trowKey: keyof TData | Array<keyof TData> | ((row: TData) => string | number);\n\tdividingColumnKey?: string[];\n\tloadingContent?: React.ReactNode;\n\tpageSizeOptions?: number[];\n\tclassName?: string;\n\tisScrollable?: boolean;\n\tscrollMaxHeightClass?: string;\n\tfixedHeader?: boolean;\n\tshowPagination?: boolean;\n}\n\ntype RowData = {\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t[key: string]: any;\n};\n\ninterface ListParams {\n\t[propName: string]: string | string[];\n}\n\nconst getRowKey = <TData extends RowData>(\n\trow: TData,\n\trowKey: keyof TData | Array<keyof TData> | ((row: TData) => string | number),\n): string | number => {\n\tif (typeof rowKey === \"function\") {\n\t\treturn rowKey(row);\n\t}\n\n\tif (Array.isArray(rowKey)) {\n\t\tfor (const key of rowKey) {\n\t\t\tif (row[key] !== undefined && row[key] !== null) {\n\t\t\t\treturn row[key] as string | number;\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\treturn row[rowKey] as string | number;\n};\n\nexport const DataTableMainFrameSortable = <TData extends RowData, TValue>({\n\ttable,\n\tcolumns,\n\tisLoadingTable,\n\tloadingContent,\n\tsetQueryParams,\n\tdataLabel,\n\tactionColumns = [],\n\tdata,\n\tmessageEmpty = <>Sem resultados</>,\n\tonDataChange,\n\trowKey,\n\tdividingColumnKey,\n\tpageSizeOptions,\n\tclassName,\n\tscrollMaxHeightClass = \"sm:max-h-[calc(100vh-300px)]\",\n\tisScrollable = false,\n\tfixedHeader = false,\n\tshowPagination = true,\n}: DataTableViewOptionsProps<TData, TValue>) => {\n\tconst currentPage = Number(table.getState().pagination.pageIndex).toString();\n\tconst pageSize = Number(table.getState().pagination.pageSize).toString();\n\tconst sorting = table.getState().sorting;\n\n\tconst [newData, setNewData] = React.useState<TData[]>(data);\n\n\tconst handleValueChange = (updatedData: TData[]) => {\n\t\tsetNewData(updatedData);\n\t\tonDataChange?.(updatedData);\n\t};\n\n\tReact.useEffect(() => {\n\t\tsetNewData(data);\n\t}, [data]);\n\n\tReact.useEffect(() => {\n\t\tif (!setQueryParams) return;\n\t\tconst sortingParams = { sortingBy: \"\", order: \"\" };\n\t\tif (sorting.length > 0) {\n\t\t\tsortingParams.sortingBy = sorting[0].id;\n\t\t\tsortingParams.order = sorting[0].desc ? \"DESC\" : \"ASC\";\n\t\t}\n\t\tsetQueryParams((prev) => ({\n\t\t\t...prev,\n\t\t\tpageSize,\n\t\t\tpage: currentPage,\n\t\t\t...sortingParams,\n\t\t}));\n\t}, [currentPage, pageSize, setQueryParams, sorting]);\n\n\tconst renderTableBodyContent = () => {\n\t\tif (isLoadingTable && !loadingContent) {\n\t\t\treturn <DataTableRowSkeleton columnCount={table.getAllColumns().length} />;\n\t\t}\n\n\t\tif (isLoadingTable && loadingContent) {\n\t\t\treturn (\n\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t{loadingContent}\n\t\t\t\t</TableCell>\n\t\t\t);\n\t\t}\n\n\t\tif (table.getRowModel().rows.length === 0) {\n\t\t\treturn (\n\t\t\t\t<TableRow>\n\t\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t\t<span className=\"inline-block max-w-[30rem] text-wrap break-words\">{messageEmpty}</span>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t);\n\t\t}\n\n\t\treturn table.getRowModel().rows.map((row: Row<TData>) => {\n\t\t\tconst rowData = row.original;\n\t\t\tconst key = getRowKey(rowData, rowKey);\n\n\t\t\treturn (\n\t\t\t\t<SortableItem key={row.id} value={key} asChild>\n\t\t\t\t\t<TableRow data-state={row.getIsSelected() && \"selected\"} className=\"even:bg-body/50\">\n\t\t\t\t\t\t{/* biome-ignore lint/suspicious/noExplicitAny: <explanation> */}\n\t\t\t\t\t\t{row.getVisibleCells().map((cell: any) => (\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"p-2 py-1\",\n\t\t\t\t\t\t\t\t\tdividingColumnKey?.includes(cell.column.id) && \"border-r\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t</SortableItem>\n\t\t\t);\n\t\t});\n\t};\n\n\tconst shouldForceMinHeight = table.getRowModel().rows.length > 1 || isLoadingTable;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-background mx-1 h-full w-full rounded-md border whitespace-nowrap\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-full overflow-auto\",\n\t\t\t\t\t\tshouldForceMinHeight && \"force-min-height\",\n\t\t\t\t\t\tisScrollable && scrollMaxHeightClass && scrollMaxHeightClass,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Table>\n\t\t\t\t\t\t<TableHeader\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tfixedHeader && \"bg-background sticky top-0 z-10 shadow-[0_1px_0_hsl(240_6%_90%)]\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TableRow key={headerGroup.id}>\n\t\t\t\t\t\t\t\t\t\t{headerGroup.headers.map((header) => {\n\t\t\t\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\t\t\t\tcolumn: { id },\n\t\t\t\t\t\t\t\t\t\t\t} = header;\n\n\t\t\t\t\t\t\t\t\t\t\tconst isActionsColumn = [\"actions\", ...actionColumns].includes(id);\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={dividingColumnKey?.includes(id) ? \"border-r\" : \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{header.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isActionsColumn && header.column.getCanSort()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"flex w-fit items-center justify-start cursor-pointer gap-1 font-medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: !isActionsColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? header.column.getToggleSortingHandler()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{flexRender(header.column.columnDef.header, header.getContext())}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(!isActionsColumn &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.getCanSort() &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tasc: <ArrowDownIcon className=\"h-3.5 w-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdesc: <ArrowUpIcon className=\"h-3.5 w-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfalse: <CaretSortIcon className=\"h-4 w-4\" />,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}[header.column.getIsSorted() as string]) ?? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowDownIcon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</TableHeader>\n\n\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t<Sortable\n\t\t\t\t\t\t\t\tvalue={newData.map((item) => ({\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tid: getRowKey(item, rowKey),\n\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderTableBodyContent()}\n\t\t\t\t\t\t\t</Sortable>\n\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t</Table>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{isScrollable || !showPagination ? null : isLoadingTable ? (\n\t\t\t\t<DataTablePaginationSkeleton />\n\t\t\t) : (\n\t\t\t\t<DataTablePagination\n\t\t\t\t\ttable={table}\n\t\t\t\t\tdataLabel={dataLabel}\n\t\t\t\t\tpageSizeOptions={pageSizeOptions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n"],"names":["ArrowDown","createLucideIcon","d","key","ArrowUp","DataTableViewOptions","table","transformColumnName","triggerRef","React","useRef","createElement","Popover","modal","PopoverTrigger","asChild","Button","ref","aria-label","variant","className","ChevronDownIcon","PopoverContent","align","onCloseAutoFocus","current","focus","Command","CommandInput","placeholder","CommandList","CommandEmpty","CommandGroup","getAllColumns","filter","column","accessorFn","getCanHide","map","CommandItem","id","onSelect","toggleVisibility","getIsVisible","span","Check","cn","DataTableSearch","keySearch","div","SearchIcon","Input","value","getColumn","getFilterValue","onChange","event","setFilterValue","target","flexRender","Comp","props","component","proto","Object","getPrototypeOf","prototype","isReactComponent","isClassComponent","$$typeof","includes","description","isExoticComponent","DataTablePagination","pageSizeOptions","dataLabel","pageSize","currentPage","getState","pagination","pageIndex","rowCount","getRowCount","totalPageCount","Math","ceil","p","getRowModel","rows","length","toLocaleString","Select","String","onValueChange","setPageSize","Number","SelectTrigger","SelectValue","SelectContent","SelectItem","Fragment","onClick","previousPage","disabled","getCanPreviousPage","ChevronLeftIcon","items","i","push","setPageIndex","start","max","min","end","PaginationItem","PaginationEllipsis","renderPageNumbers","nextPage","getCanNextPage","ChevronRightIcon","DataTablePaginationSkeleton","Skeleton","DataTableRowSkeleton","columnCount","cellWidths","shrinkZero","Array","from","_","TableRow","j","TableCell","style","width","minWidth","DataTableMainFrame","columns","isLoadingTable","loadingContent","setQueryParams","actionColumns","messageEmpty","dividingColumnKey","scrollMaxHeightClass","isScrollable","fixedHeader","showPagination","toString","sorting","useEffect","sortingParams","sortingBy","order","desc","prev","page","shouldForceMinHeight","Table","TableHeader","getHeaderGroups","headerGroup","headers","header","isActionsColumn","TableHead","isPlaceholder","getCanSort","undefined","getToggleSortingHandler","columnDef","getContext","asc","ArrowDownIcon","ArrowUpIcon","false","CaretSortIcon","getIsSorted","TableBody","colSpan","row","index","rowKey","data-state","getIsSelected","getVisibleCells","cell","DataTableSkeleton","searchableColumnCount","filterableColumnCount","showViewOptions","withPagination","skeletonProps","DataTableStatus","uniqueStatusValues","renderStatusMessage","currentFilter","item","statusMessage","getRowKey","isArray","DataTableMainFrameSortable","data","onDataChange","newData","setNewData","useState","Sortable","updatedData","rowData","original","SortableItem"],"mappings":"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