@potenlab/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/chunk-2W3RBVMM.js +698 -0
  2. package/dist/chunk-2W3RBVMM.js.map +1 -0
  3. package/dist/chunk-3PDPL453.cjs +42 -0
  4. package/dist/chunk-3PDPL453.cjs.map +1 -0
  5. package/dist/chunk-6GVBJTP3.js +3 -0
  6. package/dist/chunk-6GVBJTP3.js.map +1 -0
  7. package/dist/chunk-7XPQQR3Z.cjs +586 -0
  8. package/dist/chunk-7XPQQR3Z.cjs.map +1 -0
  9. package/dist/chunk-CN4BR5A5.cjs +1442 -0
  10. package/dist/chunk-CN4BR5A5.cjs.map +1 -0
  11. package/dist/chunk-DUACVZEX.js +13 -0
  12. package/dist/chunk-DUACVZEX.js.map +1 -0
  13. package/dist/chunk-EKVWVJD4.cjs +4 -0
  14. package/dist/chunk-EKVWVJD4.cjs.map +1 -0
  15. package/dist/chunk-IIMC6ODV.js +554 -0
  16. package/dist/chunk-IIMC6ODV.js.map +1 -0
  17. package/dist/chunk-M67D4PYJ.cjs +4 -0
  18. package/dist/chunk-M67D4PYJ.cjs.map +1 -0
  19. package/dist/chunk-O4BML5KD.cjs +744 -0
  20. package/dist/chunk-O4BML5KD.cjs.map +1 -0
  21. package/dist/chunk-OF2IE7ZP.cjs +26 -0
  22. package/dist/chunk-OF2IE7ZP.cjs.map +1 -0
  23. package/dist/chunk-T2ZO7QTO.js +3 -0
  24. package/dist/chunk-T2ZO7QTO.js.map +1 -0
  25. package/dist/chunk-T3VMPVU4.js +20 -0
  26. package/dist/chunk-T3VMPVU4.js.map +1 -0
  27. package/dist/chunk-VMWIQIIN.js +1343 -0
  28. package/dist/chunk-VMWIQIIN.js.map +1 -0
  29. package/dist/chunk-YDSVKR35.js +23 -0
  30. package/dist/chunk-YDSVKR35.js.map +1 -0
  31. package/dist/chunk-YSNZIYC2.cjs +16 -0
  32. package/dist/chunk-YSNZIYC2.cjs.map +1 -0
  33. package/dist/components/common/index.cjs +54 -0
  34. package/dist/components/common/index.cjs.map +1 -0
  35. package/dist/components/common/index.d.cts +138 -0
  36. package/dist/components/common/index.d.ts +138 -0
  37. package/dist/components/common/index.js +5 -0
  38. package/dist/components/common/index.js.map +1 -0
  39. package/dist/components/layouts/index.cjs +16 -0
  40. package/dist/components/layouts/index.cjs.map +1 -0
  41. package/dist/components/layouts/index.d.cts +15 -0
  42. package/dist/components/layouts/index.d.ts +15 -0
  43. package/dist/components/layouts/index.js +3 -0
  44. package/dist/components/layouts/index.js.map +1 -0
  45. package/dist/components/ui/index.cjs +503 -0
  46. package/dist/components/ui/index.cjs.map +1 -0
  47. package/dist/components/ui/index.d.cts +217 -0
  48. package/dist/components/ui/index.d.ts +217 -0
  49. package/dist/components/ui/index.js +6 -0
  50. package/dist/components/ui/index.js.map +1 -0
  51. package/dist/hooks/index.cjs +13 -0
  52. package/dist/hooks/index.cjs.map +1 -0
  53. package/dist/hooks/index.d.cts +3 -0
  54. package/dist/hooks/index.d.ts +3 -0
  55. package/dist/hooks/index.js +4 -0
  56. package/dist/hooks/index.js.map +1 -0
  57. package/dist/index.cjs +571 -0
  58. package/dist/index.cjs.map +1 -0
  59. package/dist/index.d.cts +29 -0
  60. package/dist/index.d.ts +29 -0
  61. package/dist/index.js +10 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/lib/index.cjs +17 -0
  64. package/dist/lib/index.cjs.map +1 -0
  65. package/dist/lib/index.d.cts +6 -0
  66. package/dist/lib/index.d.ts +6 -0
  67. package/dist/lib/index.js +4 -0
  68. package/dist/lib/index.js.map +1 -0
  69. package/dist/styles/globals.css +167 -0
  70. package/package.json +137 -0
  71. package/src/styles/globals.css +167 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/common/form-field/form-field.tsx","../src/components/common/labeled-switch/labeled-switch.tsx","../src/components/common/page-header/page-header.tsx","../src/components/common/search-bar/search-bar.tsx","../src/components/common/pagination-controls/pagination-controls.tsx","../src/components/common/tab-navigation/tab-navigation.tsx","../src/components/common/data-table/data-table-pagination.tsx","../src/components/common/data-table/data-table.tsx","../src/components/common/data-table/data-table-column-header.tsx","../src/components/common/data-table/data-table-toolbar.tsx","../src/components/common/data-table/data-table-row-actions.tsx"],"names":["jsxs","jsx","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Input","Switch","Badge","formatNumber","Button","Separator","cn","React","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","Tabs","TabsList","TabsTrigger","React2","React3","useReactTable","getCoreRowModel","getSortedRowModel","getFilteredRowModel","getPaginationRowModel","Table","TableHeader","TableRow","TableHead","flexRender","TableBody","TableCell","ArrowUpDown","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","DropdownMenuItem"],"mappings":"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","file":"chunk-7XPQQR3Z.cjs","sourcesContent":["\"use client\";\n\nimport { Label } from \"../../ui/label\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface FormFieldProps {\n id: string;\n label: string;\n type: \"input\" | \"select\";\n value: string;\n options?: string[];\n onChange: (value: string) => void;\n}\n\nexport function FormField({ id, label, type, value, options, onChange }: FormFieldProps) {\n if (type === \"select\") {\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger id={id} className=\"h-[52px] pr-4\">\n <SelectValue placeholder={label} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Input\n id={id}\n className=\"h-[52px]\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { Switch } from \"../../ui/switch\";\n\nexport interface LabeledSwitchProps {\n id: string;\n label: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n}\n\nexport function LabeledSwitch({ id, label, checked, onCheckedChange }: LabeledSwitchProps) {\n return (\n <div className=\"flex items-center gap-3\">\n <label\n htmlFor={id}\n className=\"font-pretendard text-[16px] font-medium text-black select-none cursor-pointer\"\n >\n {label}\n </label>\n <Switch id={id} checked={checked} onCheckedChange={onCheckedChange} />\n </div>\n );\n}\n","\"use client\";\n\nimport type { LucideIcon } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport { Badge } from \"../../ui/badge\";\nimport { Separator } from \"../../ui/separator\";\nimport { formatNumber } from \"../../../lib/utils\";\n\nexport interface PageHeaderProps {\n title: string;\n subtitle: string;\n badgeCount?: number;\n badgeSuffix?: string;\n actionLabel: string;\n actionIcon?: LucideIcon;\n onAction?: () => void;\n}\n\nexport function PageHeader({\n title,\n subtitle,\n badgeCount,\n badgeSuffix = \"\",\n actionLabel,\n actionIcon: ActionIcon,\n onAction,\n}: PageHeaderProps) {\n return (\n <div>\n <div className=\"flex flex-row justify-between items-start\">\n {/* Left side */}\n <div>\n {/* Title row with badge */}\n <div className=\"flex items-center gap-3\">\n <h1 className=\"font-pretendard text-[32px] font-semibold text-black\">\n {title}\n </h1>\n {badgeCount !== undefined && (\n <Badge\n variant=\"green\"\n aria-label={`Total: ${formatNumber(badgeCount)}${badgeSuffix}`}\n >\n {formatNumber(badgeCount)}{badgeSuffix}\n </Badge>\n )}\n </div>\n {/* Subtitle */}\n <p className=\"font-pretendard text-[18px] font-medium text-subtitle mt-1\">\n {subtitle}\n </p>\n </div>\n\n {/* Right side */}\n <Button variant=\"primary\" onClick={onAction}>\n {ActionIcon && <ActionIcon className=\"size-5\" />}\n {actionLabel}\n </Button>\n </div>\n\n {/* Separator below header */}\n <Separator className=\"my-6\" />\n </div>\n );\n}\n","\"use client\";\n\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface SearchBarProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search...\",\n ariaLabel = \"Search\",\n className,\n}: SearchBarProps) {\n return (\n <Input\n className={cn(\"h-12 rounded-md\", className)}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n aria-label={ariaLabel}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface PaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\nexport interface PaginationControlsProps {\n currentPage: number;\n totalPages: number;\n itemsPerPage: number;\n onPageChange: (page: number) => void;\n onItemsPerPageChange: (count: number) => void;\n labels?: PaginationLabels;\n className?: string;\n}\n\nexport function PaginationControls({\n currentPage,\n totalPages,\n itemsPerPage,\n onPageChange,\n onItemsPerPageChange,\n labels,\n className,\n}: PaginationControlsProps) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const isFirstPage = currentPage <= 1;\n const isLastPage = currentPage >= totalPages;\n\n function handleGoToFirst() {\n if (!isFirstPage) {\n onPageChange(1);\n }\n }\n\n function handleGoToPrevious() {\n if (!isFirstPage) {\n onPageChange(currentPage - 1);\n }\n }\n\n function handleGoToNext() {\n if (!isLastPage) {\n onPageChange(currentPage + 1);\n }\n }\n\n function handleGoToLast() {\n if (!isLastPage) {\n onPageChange(totalPages);\n }\n }\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n onPageChange(page);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n function handleItemsPerPageChange(value: string) {\n const count = parseInt(value, 10);\n if (!isNaN(count)) {\n onItemsPerPageChange(count);\n }\n }\n\n return (\n <div className={cn(\"flex items-center justify-between\", className)}>\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={isFirstPage}\n onClick={handleGoToFirst}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={isFirstPage}\n onClick={handleGoToPrevious}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={isLastPage}\n onClick={handleGoToNext}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={isLastPage}\n onClick={handleGoToLast}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span\n className=\"flex items-center gap-1 px-2\"\n aria-live=\"polite\"\n >\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button\n variant=\"secondary\"\n size=\"secondary\"\n onClick={handlePageJump}\n >\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(itemsPerPage)}\n onValueChange={handleItemsPerPageChange}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"10\">10{itemSuffix}</SelectItem>\n <SelectItem value=\"20\">20{itemSuffix}</SelectItem>\n <SelectItem value=\"50\">50{itemSuffix}</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { Tabs, TabsList, TabsTrigger } from \"../../ui/tabs\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface TabItem {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TabNavigationProps {\n tabs: TabItem[];\n defaultValue?: string;\n value?: string;\n onTabChange?: (value: string) => void;\n className?: string;\n}\n\nexport function TabNavigation({\n tabs,\n defaultValue,\n value,\n onTabChange,\n className,\n}: TabNavigationProps) {\n return (\n <Tabs\n defaultValue={defaultValue}\n value={value}\n onValueChange={onTabChange}\n className={cn(className)}\n >\n <TabsList>\n {tabs.map((tab) => (\n <TabsTrigger key={tab.value} value={tab.value} disabled={tab.disabled}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\nimport type { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface DataTablePaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n labels?: DataTablePaginationLabels;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 50],\n labels,\n}: DataTablePaginationProps<TData>) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const currentPage = table.getState().pagination.pageIndex + 1;\n const totalPages = table.getPageCount();\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n table.setPageIndex(page - 1);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n return (\n <div className=\"flex items-center justify-between\">\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.setPageIndex(0)}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.previousPage()}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.nextPage()}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span className=\"flex items-center gap-1 px-2\" aria-live=\"polite\">\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button variant=\"secondary\" size=\"secondary\" onClick={handlePageJump}>\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}{itemSuffix}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type ColumnFiltersState,\n type OnChangeFn,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport * as React from \"react\";\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../../ui/table\";\nimport { cn } from \"../../../lib/utils\";\nimport { DataTablePagination } from \"./data-table-pagination\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n enableSorting?: boolean;\n enableFiltering?: boolean;\n enableRowSelection?: boolean;\n enablePagination?: boolean;\n manualPagination?: boolean;\n rowCount?: number;\n pageSizeOptions?: number[];\n onRowClick?: (row: TData) => void;\n emptyMessage?: string;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;\n pagination?: PaginationState;\n onPaginationChange?: OnChangeFn<PaginationState>;\n rowSelection?: RowSelectionState;\n onRowSelectionChange?: OnChangeFn<RowSelectionState>;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n enableSorting = false,\n enableFiltering = false,\n enableRowSelection = false,\n enablePagination = false,\n manualPagination = false,\n rowCount,\n pageSizeOptions,\n onRowClick,\n emptyMessage = \"No data available.\",\n sorting: sortingProp,\n onSortingChange,\n columnFilters: columnFiltersProp,\n onColumnFiltersChange,\n pagination: paginationProp,\n onPaginationChange,\n rowSelection: rowSelectionProp,\n onRowSelectionChange,\n columnVisibility: columnVisibilityProp,\n onColumnVisibilityChange,\n}: DataTableProps<TData, TValue>) {\n const [internalSorting, setInternalSorting] = React.useState<SortingState>(\n []\n );\n const [internalColumnFilters, setInternalColumnFilters] =\n React.useState<ColumnFiltersState>([]);\n const [internalRowSelection, setInternalRowSelection] =\n React.useState<RowSelectionState>({});\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({});\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({ pageIndex: 0, pageSize: 10 });\n\n const table = useReactTable({\n data,\n columns,\n rowCount: manualPagination ? rowCount : undefined,\n state: {\n sorting: sortingProp ?? internalSorting,\n columnFilters: columnFiltersProp ?? internalColumnFilters,\n rowSelection: rowSelectionProp ?? internalRowSelection,\n columnVisibility: columnVisibilityProp ?? internalColumnVisibility,\n pagination: paginationProp ?? internalPagination,\n },\n onSortingChange: onSortingChange ?? setInternalSorting,\n onColumnFiltersChange: onColumnFiltersChange ?? setInternalColumnFilters,\n onRowSelectionChange: onRowSelectionChange ?? setInternalRowSelection,\n onColumnVisibilityChange:\n onColumnVisibilityChange ?? setInternalColumnVisibility,\n onPaginationChange: onPaginationChange ?? setInternalPagination,\n getCoreRowModel: getCoreRowModel(),\n ...(enableSorting && { getSortedRowModel: getSortedRowModel() }),\n ...(enableFiltering && { getFilteredRowModel: getFilteredRowModel() }),\n ...(enablePagination &&\n !manualPagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n enableRowSelection,\n manualPagination,\n });\n\n return (\n <div className=\"space-y-4\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-table-header cursor-default\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n header.column.columnDef.meta?.headerClassName ??\n header.column.columnDef.meta?.className\n )}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n onKeyDown={\n onRowClick\n ? (e) => {\n if (e.key === \"Enter\") onRowClick(row.original);\n }\n : undefined\n }\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? \"link\" : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={cn(cell.column.columnDef.meta?.className)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {enablePagination && (\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { ArrowUpDown } from \"lucide-react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n title: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <button\n type=\"button\"\n className={cn(\"flex items-center gap-1\", className)}\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {title}\n <ArrowUpDown className=\"size-4 text-table-cell\" />\n </button>\n );\n}\n","\"use client\";\n\nimport type { Table } from \"@tanstack/react-table\";\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableToolbarProps<TData> {\n table: Table<TData>;\n searchPlaceholder?: string;\n searchColumnId?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n searchPlaceholder = \"Search...\",\n searchColumnId,\n className,\n children,\n}: DataTableToolbarProps<TData>) {\n const filterValue = searchColumnId\n ? (table.getColumn(searchColumnId)?.getFilterValue() as string) ?? \"\"\n : \"\";\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {searchColumnId && (\n <Input\n className=\"h-12 rounded-md flex-1\"\n placeholder={searchPlaceholder}\n value={filterValue}\n onChange={(e) =>\n table.getColumn(searchColumnId)?.setFilterValue(e.target.value)\n }\n aria-label={searchPlaceholder}\n />\n )}\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { MoreHorizontal } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface DataTableRowAction {\n label: string;\n onClick: () => void;\n variant?: \"default\" | \"destructive\";\n}\n\ninterface DataTableRowActionsProps {\n actions: DataTableRowAction[];\n}\n\nexport function DataTableRowActions({ actions }: DataTableRowActionsProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8 p-0\">\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive\"\n )}\n >\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}