@nccirtu/tablefy 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/columns/index.d.ts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.esm.js +160 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +162 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/tablefy/data-table-header.tsx","../src/tablefy/data-table-empty.tsx","../src/tablefy/data-table-pagination.tsx","../src/builders/table-schema.ts","../src/builders/empty-state.ts","../src/tablefy/data-table.tsx","../src/tablefy/data-table-schema.tsx","../src/tablefy/avatar-list.tsx","../src/columns/base-column.ts","../src/columns/avatar-group-column.tsx","../src/columns/badge-column.tsx","../src/columns/button-column.tsx","../src/columns/checkbox-column.tsx","../src/columns/date-column.tsx","../src/columns/dropdown-column.tsx","../src/columns/icon-column.tsx","../src/columns/image-column.tsx","../src/columns/input-column.tsx","../src/columns/link-column.tsx","../src/columns/number-column.tsx","../src/columns/progress-column.tsx","../src/columns/select-column.tsx","../src/columns/enum-column.tsx","../src/confirm/confirm.ts","../src/confirm/ConfirmProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X, Columns } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../types\";\n\ninterface DataTableHeaderProps<TData> {\n title?: string;\n description?: string;\n actions?: HeaderAction<TData>[];\n search?: SearchConfig;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n table?: TanstackTable<TData>;\n selectedCount?: number;\n enableColumnVisibility?: boolean;\n columnVisibilityLabel?: string;\n className?: string;\n}\n\nexport function DataTableHeader<TData>({\n title,\n description,\n actions = [],\n search,\n searchValue = \"\",\n onSearchChange,\n table,\n selectedCount = 0,\n enableColumnVisibility = false,\n columnVisibilityLabel = \"Spalten\",\n className,\n}: DataTableHeaderProps<TData>) {\n const normalActions = actions.filter((a) => !a.bulk && !a.hidden);\n const bulkActions = actions.filter((a) => a.bulk && !a.hidden);\n const showBulkActions = selectedCount > 0 && bulkActions.length > 0;\n\n const getSelectedRows = (): TData[] => {\n if (!table) return [];\n return table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n };\n\n const renderAction = (action: HeaderAction<TData>, index: number) => {\n // Custom render function takes priority\n if (action.render) {\n return <div key={action.id || index}>{action.render()}</div>;\n }\n\n if (action.children && action.children.length > 0) {\n return (\n <DropdownMenu key={action.id || index}>\n <DropdownMenuTrigger asChild>\n <Button\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n >\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {action.children.map((child, childIndex) => (\n <DropdownMenuItem\n key={child.id || childIndex}\n onClick={child.onClick}\n className={cn(\n child.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n >\n {child.icon && <span className=\"mr-2\">{child.icon}</span>}\n {child.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n if (action.href) {\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n asChild\n >\n <a href={action.href}>\n {action.icon}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n onClick={() => {\n if (action.bulk && action.bulkOnClick) {\n action.bulkOnClick(getSelectedRows());\n } else if (action.onClick) {\n action.onClick();\n }\n }}\n >\n {action.loading ? (\n <svg className=\"animate-spin h-4 w-4\" viewBox=\"0 0 24 24\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n action.icon\n )}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon || action.loading ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </Button>\n );\n };\n\n if (\n !title &&\n !description &&\n normalActions.length === 0 &&\n bulkActions.length === 0 &&\n !search?.enabled\n ) {\n return null;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {(search?.enabled || normalActions.length > 0 || showBulkActions) && (\n <div className=\"flex items-center justify-between gap-4 mb-4\">\n {search?.enabled && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={search.placeholder || \"Suchen...\"}\n value={searchValue}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onSearchChange?.(e.target.value)\n }\n className=\"pl-9 pr-9\"\n />\n {searchValue && (\n <button\n onClick={() => onSearchChange?.(\"\")}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showBulkActions && (\n <span className=\"text-sm text-muted-foreground\">\n {selectedCount} ausgewählt\n </span>\n )}\n {showBulkActions &&\n bulkActions.map((action, index) => renderAction(action, index))}\n\n {enableColumnVisibility && table && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"default\">\n <Columns className=\"h-4 w-4\" />\n <span className=\"ml-2\">{columnVisibilityLabel}</span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{columnVisibilityLabel}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n const meta = column.columnDef.meta as any;\n const label = meta?.visibilityLabel || column.id;\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value: boolean) =>\n column.toggleVisibility(!!value)\n }\n >\n {label}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../types\";\n\ninterface DataTableEmptyProps {\n config: EmptyStateConfig;\n colSpan: number;\n className?: string;\n}\n\nexport function DataTableEmpty({\n config,\n colSpan,\n className,\n}: DataTableEmptyProps) {\n const { icon, imageUrl, title, description, action, variant } = config;\n\n return (\n <tr>\n <td colSpan={colSpan} className={cn(\"h-[400px]\", className)}>\n <div className=\"flex h-full flex-col items-center justify-center gap-4 text-center p-8\">\n {imageUrl ? (\n <img className=\"w-24 h-24\" src={imageUrl} alt=\"Empty State\" />\n ) : icon ? (\n <div\n className={cn(\n \"rounded-full p-4\",\n variant === \"error\" ? \"bg-destructive/10\" : \"bg-muted\",\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"w-full flex flex-col items-center justify-center gap-2\">\n <h3 className=\"text-sm font-semibold text-foreground whitespace-normal break-words\">\n {title}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground font-normal whitespace-normal break-words leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n\n {action && (\n <Button\n variant={variant === \"error\" ? \"outline\" : \"default\"}\n onClick={action.onClick}\n asChild={!!action.href}\n className=\"mt-2\"\n >\n {action.href ? (\n <a href={action.href}>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </a>\n ) : (\n <>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </>\n )}\n </Button>\n )}\n </div>\n </td>\n </tr>\n );\n}\n","\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { PaginationConfig } from \"../types\";\n\ninterface DataTablePaginationProps<TData> {\n table: TanstackTable<TData>;\n config?: PaginationConfig;\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n config,\n className,\n}: DataTablePaginationProps<TData>) {\n if (!config?.enabled) return null;\n\n const {\n showPageInfo = true,\n showPageSizeSelector = true,\n pageSizeOptions = [10, 20, 30, 50, 100],\n } = config;\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between\",\n className,\n )}\n >\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length > 0 ? (\n <span>\n {table.getFilteredSelectedRowModel().rows.length} von{\" \"}\n {table.getFilteredRowModel().rows.length} Zeile(n) ausgewählt\n </span>\n ) : showPageInfo ? (\n <span>{table.getFilteredRowModel().rows.length} Einträge</span>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:gap-6\">\n {showPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Zeilen pro Seite\n </span>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value: string) =>\n table.setPageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {showPageInfo && (\n <div className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Seite{\" \"}\n {table.getPageCount() > 0\n ? table.getState().pagination.pageIndex + 1\n : 0}{\" \"}\n von {Math.max(table.getPageCount(), 0)}\n </div>\n )}\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Erste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Vorherige Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Nächste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Letzte Seite</span>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableConfig } from \"../types/table\";\nimport { HeaderAction } from \"../types/actions\";\nimport { EmptyStateConfig } from \"../types/empty-state\";\nimport { SearchConfig } from \"../types/filters\";\nimport React from \"react\";\n\ntype ColumnBuilder<TData> = { build(): ColumnDef<TData, unknown> };\n\n/**\n * Table Schema Builder\n * Fluent API for building complete table configurations\n */\nexport class TableSchema<TData> {\n private columnBuilders: ColumnBuilder<TData>[] = [];\n private config: Partial<DataTableConfig<TData>> = {};\n\n static make<TData>(): TableSchema<TData> {\n return new TableSchema();\n }\n\n // Configuration Methods\n description(text: string): this {\n this.config.description = text;\n return this;\n }\n\n title(text: string): this {\n this.config.title = text;\n return this;\n }\n\n headerActions(actions: HeaderAction<TData>[]): this {\n this.config.headerActions = actions;\n return this;\n }\n\n emptyState(config: EmptyStateConfig): this {\n this.config.emptyState = config;\n return this;\n }\n\n searchEmptyState(config: EmptyStateConfig): this {\n this.config.searchEmptyState = config;\n return this;\n }\n\n filterEmptyState(config: EmptyStateConfig): this {\n this.config.filterEmptyState = config;\n return this;\n }\n\n // Feature Methods\n searchable(config?: { placeholder?: string } | boolean): this {\n if (typeof config === \"boolean\") {\n this.config.search = config ? { enabled: true } : { enabled: false };\n } else {\n this.config.search = {\n enabled: true,\n placeholder: config?.placeholder,\n };\n }\n return this;\n }\n\n paginated(\n config?: { pageSize?: number; pageSizeOptions?: number[] } | boolean,\n ): this {\n if (typeof config === \"boolean\") {\n this.config.pagination = { enabled: config };\n } else {\n this.config.pagination = {\n enabled: true,\n pageSize: config?.pageSize,\n pageSizeOptions: config?.pageSizeOptions,\n };\n }\n return this;\n }\n\n selectable(multiSelect: boolean = true): this {\n this.config.enableRowSelection = true;\n this.config.enableMultiRowSelection = multiSelect;\n return this;\n }\n\n sortable(defaultSort?: { id: string; desc: boolean }): this {\n this.config.enableSorting = true;\n if (defaultSort) {\n this.config.defaultSort = defaultSort;\n }\n return this;\n }\n\n columnVisibility(enabled: boolean = true): this {\n this.config.enableColumnVisibility = enabled;\n return this;\n }\n\n // Styling Methods\n bordered(enabled: boolean = true): this {\n this.config.bordered = enabled;\n return this;\n }\n\n striped(enabled: boolean = true): this {\n this.config.striped = enabled;\n return this;\n }\n\n hoverable(enabled: boolean = true): this {\n this.config.hoverable = enabled;\n return this;\n }\n\n density(density: \"compact\" | \"default\" | \"comfortable\"): this {\n this.config.density = density;\n return this;\n }\n\n // Columns\n columns(...builders: ColumnBuilder<TData>[]): this {\n this.columnBuilders.push(...builders);\n return this;\n }\n\n // Build\n build(): {\n columns: ColumnDef<TData, unknown>[];\n config: DataTableConfig<TData>;\n } {\n return {\n columns: this.columnBuilders.map((builder) => builder.build()),\n config: this.config as DataTableConfig<TData>,\n };\n }\n}\n","import { EmptyStateConfig } from \"../types/empty-state\";\nimport React from \"react\";\n\n/**\n * Empty State Builder\n * Fluent API for building empty state configurations\n */\nexport class EmptyStateBuilder {\n private config: EmptyStateConfig = {\n title: \"No data\",\n variant: \"default\",\n };\n\n static make(): EmptyStateBuilder {\n return new EmptyStateBuilder();\n }\n\n title(title: string): this {\n this.config.title = title;\n return this;\n }\n\n description(description: string): this {\n this.config.description = description;\n return this;\n }\n\n icon(icon: React.ReactNode): this {\n this.config.icon = icon;\n return this;\n }\n\n imageUrl(imageUrl: string): this {\n this.config.imageUrl = imageUrl;\n return this;\n }\n\n action(\n label: string,\n onClick?: () => void,\n href?: string,\n icon?: React.ReactNode,\n ): this {\n this.config.action = { label, onClick, href, icon };\n return this;\n }\n\n variant(variant: \"default\" | \"search\" | \"filter\" | \"error\" | \"custom\"): this {\n this.config.variant = variant;\n return this;\n }\n\n error(params: { onRetry?: () => void } = {}): this {\n this.config.variant = \"error\";\n this.config.title = \"Error\";\n this.config.description = \"Something went wrong. Please try again.\";\n if (params.onRetry) {\n this.config.action = { label: \"Retry\", onClick: params.onRetry };\n }\n return this;\n }\n\n noSearchResults(params: { onClear?: () => void } = {}): this {\n this.config.variant = \"search\";\n this.config.title = \"No results found\";\n this.config.description = \"Try adjusting your search terms.\";\n if (params.onClear) {\n this.config.action = { label: \"Clear search\", onClick: params.onClear };\n }\n return this;\n }\n\n noFilterResults(params: { onReset?: () => void } = {}): this {\n this.config.variant = \"filter\";\n this.config.title = \"No results match your filters\";\n this.config.description = \"Try adjusting or clearing your filters.\";\n if (params.onReset) {\n this.config.action = { label: \"Reset filters\", onClick: params.onReset };\n }\n return this;\n }\n\n noData(): this {\n this.config.variant = \"default\";\n this.config.title = \"No data\";\n this.config.description = \"There is no data to display.\";\n return this;\n }\n\n build(): EmptyStateConfig {\n return this.config;\n }\n\n // Static helper methods for quick configuration\n static noData(config: {\n title: string;\n description: string;\n createLabel?: string;\n createHref?: string;\n createOnClick?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"default\",\n title: config.title,\n description: config.description,\n action: config.createLabel\n ? {\n label: config.createLabel,\n href: config.createHref,\n onClick: config.createOnClick,\n }\n : undefined,\n };\n }\n\n static noSearchResults(config: {\n title: string;\n description: string;\n clearLabel?: string;\n onClear?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"search\",\n title: config.title,\n description: config.description,\n action: config.clearLabel\n ? {\n label: config.clearLabel,\n onClick: config.onClear,\n }\n : undefined,\n };\n }\n\n static noFilterResults(config: {\n title: string;\n description: string;\n resetLabel?: string;\n onReset?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"filter\",\n title: config.title,\n description: config.description,\n action: config.resetLabel\n ? {\n label: config.resetLabel,\n onClick: config.onReset,\n }\n : undefined,\n };\n }\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\n// shadcn components - installed by user via `npx shadcn add table`\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { DataTableConfig } from \"../types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../builders\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n config?: DataTableConfig<TData>;\n className?: string;\n isLoading?: boolean;\n isError?: boolean;\n onRetry?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n config = {},\n className,\n isLoading = false,\n isError = false,\n onRetry,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>(\n config.defaultSort ? [config.defaultSort] : [],\n );\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n // Initialize column visibility based on visibleByDefault\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n () => {\n const initialVisibility: VisibilityState = {};\n columns.forEach((column: any) => {\n if (column.meta?.visibleByDefault === false) {\n initialVisibility[column.accessorKey || column.id] = false;\n }\n });\n return initialVisibility;\n },\n );\n\n const [rowSelection, setRowSelection] = useState({});\n const [globalFilter, setGlobalFilter] = useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n globalFilter,\n },\n enableRowSelection: config.enableRowSelection ?? false,\n enableMultiRowSelection:\n config.enableMultiRowSelection ?? config.enableRowSelection ?? false,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: config.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: config.pagination?.enabled\n ? getPaginationRowModel()\n : undefined,\n });\n\n const getEmptyState = () => {\n if (isError) {\n return (\n config.emptyState || EmptyStateBuilder.make().error({ onRetry }).build()\n );\n }\n\n if (globalFilter && data.length > 0) {\n return (\n config.searchEmptyState ||\n EmptyStateBuilder.make().noSearchResults({}).build()\n );\n }\n\n if (columnFilters.length > 0 && data.length > 0) {\n return (\n config.filterEmptyState ||\n EmptyStateBuilder.make().noFilterResults({}).build()\n );\n }\n\n return config.emptyState || EmptyStateBuilder.make().noData().build();\n };\n\n const densityClasses = {\n compact: \"[&_td]:py-1 [&_th]:py-1\",\n default: \"[&_td]:py-3 [&_th]:py-3\",\n comfortable: \"[&_td]:py-4 [&_th]:py-4\",\n };\n\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n const hasRows = table.getRowModel().rows?.length > 0;\n\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <DataTableHeader\n title={config.title}\n description={config.description}\n actions={config.headerActions}\n search={config.search}\n searchValue={globalFilter}\n onSearchChange={setGlobalFilter}\n table={table}\n selectedCount={selectedCount}\n enableColumnVisibility={config.enableColumnVisibility}\n columnVisibilityLabel={config.columnVisibilityLabel}\n />\n\n <div\n className={cn(\n \"overflow-hidden\",\n config.bordered !== false && \"rounded-md border\",\n )}\n >\n <Table\n className={cn(\n densityClasses[config.density || \"default\"],\n config.striped ? \"[&_tr:nth-child(even)]:bg-muted/50\" : \"\",\n config.hoverable !== false && \"[&_tr:hover]:bg-muted/50\",\n )}\n >\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\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 {isLoading ? (\n <tr>\n <td colSpan={columns.length} className=\"h-[400px]\">\n <div className=\"flex h-full items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4\">\n <svg\n className=\"animate-spin h-8 w-8 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"text-sm text-muted-foreground\">\n Laden...\n </span>\n </div>\n </div>\n </td>\n </tr>\n ) : hasRows ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <DataTableEmpty\n config={getEmptyState()}\n colSpan={columns.length}\n />\n )}\n </TableBody>\n </Table>\n </div>\n\n {config.pagination?.enabled && hasRows && (\n <DataTablePagination table={table} config={config.pagination} />\n )}\n </div>\n );\n}\n","\"use client\";\n\ninterface DataTableSchemaProps {\n schema?: Record<string, unknown>;\n}\n\nexport const DataTableSchema = () => {\n return (\n <div className=\"data-table-schema\">\n <p>TableSchema Placeholder</p>\n </div>\n );\n};\n","import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n visibleByDefault(visible = true): this {\n this.config.visibleByDefault = visible;\n return this;\n }\n\n visibilityLabel(label: string): this {\n this.config.visibilityLabel = label;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants } = this.config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const variantConfig = variants?.[value];\n\n if (!variantConfig) {\n return (\n <Badge variant=\"outline\" className={this.config.cellClassName}>\n {value}\n </Badge>\n );\n }\n\n return (\n <Badge\n variant={\n variantConfig.variant === \"success\" ||\n variantConfig.variant === \"warning\" ||\n variantConfig.variant === \"info\" ||\n variantConfig.variant === \"muted\"\n ? \"default\"\n : variantConfig.variant || \"default\"\n }\n className={cn(variantConfig.className, this.config.cellClassName)}\n >\n {variantConfig.icon}\n {variantConfig.label || value}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n","import { ConfirmOptions, ConfirmHandler } from \"./types\";\n\nlet confirmHandler: ConfirmHandler | null = null;\n\nexport function registerConfirm(handler: ConfirmHandler | null): void {\n confirmHandler = handler;\n}\n\nexport function confirm(options: ConfirmOptions): Promise<boolean> {\n if (!confirmHandler) {\n throw new Error(\n \"ConfirmProvider is not mounted. Please wrap your app with <ConfirmProvider>.\",\n );\n }\n return confirmHandler(options);\n}\n","\"use client\";\nimport { useState, useEffect, ReactNode } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { registerConfirm } from \"./confirm\";\nimport { ConfirmOptions } from \"./types\";\n\ninterface ConfirmRequest {\n options: ConfirmOptions;\n resolve: (value: boolean) => void;\n}\n\ninterface ConfirmProviderProps {\n children: ReactNode;\n}\n\nexport function ConfirmProvider({ children }: ConfirmProviderProps) {\n const [queue, setQueue] = useState<ConfirmRequest[]>([]);\n const currentRequest = queue[0];\n\n useEffect(() => {\n registerConfirm(async (options: ConfirmOptions) => {\n return new Promise<boolean>((resolve) => {\n setQueue((q) => [...q, { options, resolve }]);\n });\n });\n\n return () => {\n registerConfirm(null);\n };\n }, []);\n\n const handleConfirm = () => {\n if (currentRequest) {\n currentRequest.resolve(true);\n setQueue((q) => q.slice(1));\n }\n };\n\n const handleCancel = () => {\n if (currentRequest) {\n currentRequest.resolve(false);\n setQueue((q) => q.slice(1));\n }\n };\n\n const {\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant,\n icon,\n image,\n } = currentRequest?.options || {};\n\n return (\n <>\n {children}\n <AlertDialog\n open={!!currentRequest}\n onOpenChange={(open: boolean) => !open && handleCancel()}\n >\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"text-center\">\n {title || \"Bestätigung erforderlich\"}\n </AlertDialogTitle>\n {description && (\n <AlertDialogDescription className=\"text-center\">\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n {image && (\n <div className=\"flex justify-center py-4\">\n <img\n src={image}\n alt=\"Confirmation\"\n className=\"h-24 w-24 object-contain\"\n />\n </div>\n )}\n {icon && !image && (\n <div className=\"flex justify-center py-4 text-6xl\">{icon}</div>\n )}\n <AlertDialogFooter className=\"flex flex-row !justify-between w-full\">\n <AlertDialogCancel onClick={handleCancel} className=\"mt-0\">\n {cancelLabel || \"Abbrechen\"}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n >\n {confirmLabel || \"Bestätigen\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/tablefy/data-table-header.tsx","../src/tablefy/data-table-empty.tsx","../src/tablefy/data-table-pagination.tsx","../src/builders/table-schema.ts","../src/builders/empty-state.ts","../src/tablefy/data-table.tsx","../src/tablefy/data-table-schema.tsx","../src/tablefy/avatar-list.tsx","../src/columns/base-column.ts","../src/columns/avatar-group-column.tsx","../src/columns/badge-column.tsx","../src/columns/button-column.tsx","../src/columns/checkbox-column.tsx","../src/columns/date-column.tsx","../src/columns/dropdown-column.tsx","../src/columns/icon-column.tsx","../src/columns/image-column.tsx","../src/columns/input-column.tsx","../src/columns/link-column.tsx","../src/columns/number-column.tsx","../src/columns/progress-column.tsx","../src/columns/select-column.tsx","../src/columns/text-column.tsx","../src/columns/actions-column.tsx","../src/columns/enum-column.tsx","../src/confirm/confirm.ts","../src/confirm/ConfirmProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X, Columns } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../types\";\n\ninterface DataTableHeaderProps<TData> {\n title?: string;\n description?: string;\n actions?: HeaderAction<TData>[];\n search?: SearchConfig;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n table?: TanstackTable<TData>;\n selectedCount?: number;\n enableColumnVisibility?: boolean;\n columnVisibilityLabel?: string;\n className?: string;\n}\n\nexport function DataTableHeader<TData>({\n title,\n description,\n actions = [],\n search,\n searchValue = \"\",\n onSearchChange,\n table,\n selectedCount = 0,\n enableColumnVisibility = false,\n columnVisibilityLabel = \"Spalten\",\n className,\n}: DataTableHeaderProps<TData>) {\n const normalActions = actions.filter((a) => !a.bulk && !a.hidden);\n const bulkActions = actions.filter((a) => a.bulk && !a.hidden);\n const showBulkActions = selectedCount > 0 && bulkActions.length > 0;\n\n const getSelectedRows = (): TData[] => {\n if (!table) return [];\n return table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n };\n\n const renderAction = (action: HeaderAction<TData>, index: number) => {\n // Custom render function takes priority\n if (action.render) {\n return <div key={action.id || index}>{action.render()}</div>;\n }\n\n if (action.children && action.children.length > 0) {\n return (\n <DropdownMenu key={action.id || index}>\n <DropdownMenuTrigger asChild>\n <Button\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n >\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {action.children.map((child, childIndex) => (\n <DropdownMenuItem\n key={child.id || childIndex}\n onClick={child.onClick}\n className={cn(\n child.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n >\n {child.icon && <span className=\"mr-2\">{child.icon}</span>}\n {child.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n if (action.href) {\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n asChild\n >\n <a href={action.href}>\n {action.icon}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n onClick={() => {\n if (action.bulk && action.bulkOnClick) {\n action.bulkOnClick(getSelectedRows());\n } else if (action.onClick) {\n action.onClick();\n }\n }}\n >\n {action.loading ? (\n <svg className=\"animate-spin h-4 w-4\" viewBox=\"0 0 24 24\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n action.icon\n )}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon || action.loading ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </Button>\n );\n };\n\n if (\n !title &&\n !description &&\n normalActions.length === 0 &&\n bulkActions.length === 0 &&\n !search?.enabled\n ) {\n return null;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {(search?.enabled || normalActions.length > 0 || showBulkActions) && (\n <div className=\"flex items-center justify-between gap-4 mb-4\">\n {search?.enabled && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={search.placeholder || \"Suchen...\"}\n value={searchValue}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onSearchChange?.(e.target.value)\n }\n className=\"pl-9 pr-9\"\n />\n {searchValue && (\n <button\n onClick={() => onSearchChange?.(\"\")}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showBulkActions && (\n <span className=\"text-sm text-muted-foreground\">\n {selectedCount} ausgewählt\n </span>\n )}\n {showBulkActions &&\n bulkActions.map((action, index) => renderAction(action, index))}\n\n {enableColumnVisibility && table && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"default\">\n <Columns className=\"h-4 w-4\" />\n <span className=\"ml-2\">{columnVisibilityLabel}</span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{columnVisibilityLabel}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n const meta = column.columnDef.meta as any;\n const label = meta?.visibilityLabel || column.id;\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value: boolean) =>\n column.toggleVisibility(!!value)\n }\n >\n {label}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../types\";\n\ninterface DataTableEmptyProps {\n config: EmptyStateConfig;\n colSpan: number;\n className?: string;\n}\n\nexport function DataTableEmpty({\n config,\n colSpan,\n className,\n}: DataTableEmptyProps) {\n const { icon, imageUrl, title, description, action, variant } = config;\n\n return (\n <tr>\n <td colSpan={colSpan} className={cn(\"h-[400px]\", className)}>\n <div className=\"flex h-full flex-col items-center justify-center gap-4 text-center p-8\">\n {imageUrl ? (\n <img className=\"w-24 h-24\" src={imageUrl} alt=\"Empty State\" />\n ) : icon ? (\n <div\n className={cn(\n \"rounded-full p-4\",\n variant === \"error\" ? \"bg-destructive/10\" : \"bg-muted\",\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"w-full flex flex-col items-center justify-center gap-2\">\n <h3 className=\"text-sm font-semibold text-foreground whitespace-normal break-words\">\n {title}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground font-normal whitespace-normal break-words leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n\n {action && (\n <Button\n variant={variant === \"error\" ? \"outline\" : \"default\"}\n onClick={action.onClick}\n asChild={!!action.href}\n className=\"mt-2\"\n >\n {action.href ? (\n <a href={action.href}>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </a>\n ) : (\n <>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </>\n )}\n </Button>\n )}\n </div>\n </td>\n </tr>\n );\n}\n","\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { PaginationConfig } from \"../types\";\n\ninterface DataTablePaginationProps<TData> {\n table: TanstackTable<TData>;\n config?: PaginationConfig;\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n config,\n className,\n}: DataTablePaginationProps<TData>) {\n if (!config?.enabled) return null;\n\n const {\n showPageInfo = true,\n showPageSizeSelector = true,\n pageSizeOptions = [10, 20, 30, 50, 100],\n } = config;\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between\",\n className,\n )}\n >\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length > 0 ? (\n <span>\n {table.getFilteredSelectedRowModel().rows.length} von{\" \"}\n {table.getFilteredRowModel().rows.length} Zeile(n) ausgewählt\n </span>\n ) : showPageInfo ? (\n <span>{table.getFilteredRowModel().rows.length} Einträge</span>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:gap-6\">\n {showPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Zeilen pro Seite\n </span>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value: string) =>\n table.setPageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {showPageInfo && (\n <div className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Seite{\" \"}\n {table.getPageCount() > 0\n ? table.getState().pagination.pageIndex + 1\n : 0}{\" \"}\n von {Math.max(table.getPageCount(), 0)}\n </div>\n )}\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Erste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Vorherige Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Nächste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Letzte Seite</span>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableConfig } from \"../types/table\";\nimport { HeaderAction } from \"../types/actions\";\nimport { EmptyStateConfig } from \"../types/empty-state\";\nimport { SearchConfig } from \"../types/filters\";\nimport React from \"react\";\n\ntype ColumnBuilder<TData> = { build(): ColumnDef<TData, unknown> };\n\n/**\n * Table Schema Builder\n * Fluent API for building complete table configurations\n */\nexport class TableSchema<TData> {\n private columnBuilders: ColumnBuilder<TData>[] = [];\n private config: Partial<DataTableConfig<TData>> = {};\n\n static make<TData>(): TableSchema<TData> {\n return new TableSchema();\n }\n\n // Configuration Methods\n description(text: string): this {\n this.config.description = text;\n return this;\n }\n\n title(text: string): this {\n this.config.title = text;\n return this;\n }\n\n headerActions(actions: HeaderAction<TData>[]): this {\n this.config.headerActions = actions;\n return this;\n }\n\n emptyState(config: EmptyStateConfig): this {\n this.config.emptyState = config;\n return this;\n }\n\n searchEmptyState(config: EmptyStateConfig): this {\n this.config.searchEmptyState = config;\n return this;\n }\n\n filterEmptyState(config: EmptyStateConfig): this {\n this.config.filterEmptyState = config;\n return this;\n }\n\n // Feature Methods\n searchable(config?: { placeholder?: string } | boolean): this {\n if (typeof config === \"boolean\") {\n this.config.search = config ? { enabled: true } : { enabled: false };\n } else {\n this.config.search = {\n enabled: true,\n placeholder: config?.placeholder,\n };\n }\n return this;\n }\n\n paginated(\n config?: { pageSize?: number; pageSizeOptions?: number[] } | boolean,\n ): this {\n if (typeof config === \"boolean\") {\n this.config.pagination = { enabled: config };\n } else {\n this.config.pagination = {\n enabled: true,\n pageSize: config?.pageSize,\n pageSizeOptions: config?.pageSizeOptions,\n };\n }\n return this;\n }\n\n selectable(multiSelect: boolean = true): this {\n this.config.enableRowSelection = true;\n this.config.enableMultiRowSelection = multiSelect;\n return this;\n }\n\n sortable(defaultSort?: { id: string; desc: boolean }): this {\n this.config.enableSorting = true;\n if (defaultSort) {\n this.config.defaultSort = defaultSort;\n }\n return this;\n }\n\n columnVisibility(enabled: boolean = true): this {\n this.config.enableColumnVisibility = enabled;\n return this;\n }\n\n // Styling Methods\n bordered(enabled: boolean = true): this {\n this.config.bordered = enabled;\n return this;\n }\n\n striped(enabled: boolean = true): this {\n this.config.striped = enabled;\n return this;\n }\n\n hoverable(enabled: boolean = true): this {\n this.config.hoverable = enabled;\n return this;\n }\n\n density(density: \"compact\" | \"default\" | \"comfortable\"): this {\n this.config.density = density;\n return this;\n }\n\n // Columns\n columns(...builders: ColumnBuilder<TData>[]): this {\n this.columnBuilders.push(...builders);\n return this;\n }\n\n // Build\n build(): {\n columns: ColumnDef<TData, unknown>[];\n config: DataTableConfig<TData>;\n } {\n return {\n columns: this.columnBuilders.map((builder) => builder.build()),\n config: this.config as DataTableConfig<TData>,\n };\n }\n}\n","import { EmptyStateConfig } from \"../types/empty-state\";\nimport React from \"react\";\n\n/**\n * Empty State Builder\n * Fluent API for building empty state configurations\n */\nexport class EmptyStateBuilder {\n private config: EmptyStateConfig = {\n title: \"No data\",\n variant: \"default\",\n };\n\n static make(): EmptyStateBuilder {\n return new EmptyStateBuilder();\n }\n\n title(title: string): this {\n this.config.title = title;\n return this;\n }\n\n description(description: string): this {\n this.config.description = description;\n return this;\n }\n\n icon(icon: React.ReactNode): this {\n this.config.icon = icon;\n return this;\n }\n\n imageUrl(imageUrl: string): this {\n this.config.imageUrl = imageUrl;\n return this;\n }\n\n action(\n label: string,\n onClick?: () => void,\n href?: string,\n icon?: React.ReactNode,\n ): this {\n this.config.action = { label, onClick, href, icon };\n return this;\n }\n\n variant(variant: \"default\" | \"search\" | \"filter\" | \"error\" | \"custom\"): this {\n this.config.variant = variant;\n return this;\n }\n\n error(params: { onRetry?: () => void } = {}): this {\n this.config.variant = \"error\";\n this.config.title = \"Error\";\n this.config.description = \"Something went wrong. Please try again.\";\n if (params.onRetry) {\n this.config.action = { label: \"Retry\", onClick: params.onRetry };\n }\n return this;\n }\n\n noSearchResults(params: { onClear?: () => void } = {}): this {\n this.config.variant = \"search\";\n this.config.title = \"No results found\";\n this.config.description = \"Try adjusting your search terms.\";\n if (params.onClear) {\n this.config.action = { label: \"Clear search\", onClick: params.onClear };\n }\n return this;\n }\n\n noFilterResults(params: { onReset?: () => void } = {}): this {\n this.config.variant = \"filter\";\n this.config.title = \"No results match your filters\";\n this.config.description = \"Try adjusting or clearing your filters.\";\n if (params.onReset) {\n this.config.action = { label: \"Reset filters\", onClick: params.onReset };\n }\n return this;\n }\n\n noData(): this {\n this.config.variant = \"default\";\n this.config.title = \"No data\";\n this.config.description = \"There is no data to display.\";\n return this;\n }\n\n build(): EmptyStateConfig {\n return this.config;\n }\n\n // Static helper methods for quick configuration\n static noData(config: {\n title: string;\n description: string;\n createLabel?: string;\n createHref?: string;\n createOnClick?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"default\",\n title: config.title,\n description: config.description,\n action: config.createLabel\n ? {\n label: config.createLabel,\n href: config.createHref,\n onClick: config.createOnClick,\n }\n : undefined,\n };\n }\n\n static noSearchResults(config: {\n title: string;\n description: string;\n clearLabel?: string;\n onClear?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"search\",\n title: config.title,\n description: config.description,\n action: config.clearLabel\n ? {\n label: config.clearLabel,\n onClick: config.onClear,\n }\n : undefined,\n };\n }\n\n static noFilterResults(config: {\n title: string;\n description: string;\n resetLabel?: string;\n onReset?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"filter\",\n title: config.title,\n description: config.description,\n action: config.resetLabel\n ? {\n label: config.resetLabel,\n onClick: config.onReset,\n }\n : undefined,\n };\n }\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\n// shadcn components - installed by user via `npx shadcn add table`\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { DataTableConfig } from \"../types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../builders\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n config?: DataTableConfig<TData>;\n className?: string;\n isLoading?: boolean;\n isError?: boolean;\n onRetry?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n config = {},\n className,\n isLoading = false,\n isError = false,\n onRetry,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>(\n config.defaultSort ? [config.defaultSort] : [],\n );\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n // Initialize column visibility based on visibleByDefault\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n () => {\n const initialVisibility: VisibilityState = {};\n columns.forEach((column: any) => {\n if (column.meta?.visibleByDefault === false) {\n initialVisibility[column.accessorKey || column.id] = false;\n }\n });\n return initialVisibility;\n },\n );\n\n const [rowSelection, setRowSelection] = useState({});\n const [globalFilter, setGlobalFilter] = useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n globalFilter,\n },\n enableRowSelection: config.enableRowSelection ?? false,\n enableMultiRowSelection:\n config.enableMultiRowSelection ?? config.enableRowSelection ?? false,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: config.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: config.pagination?.enabled\n ? getPaginationRowModel()\n : undefined,\n });\n\n const getEmptyState = () => {\n if (isError) {\n return (\n config.emptyState || EmptyStateBuilder.make().error({ onRetry }).build()\n );\n }\n\n if (globalFilter && data.length > 0) {\n return (\n config.searchEmptyState ||\n EmptyStateBuilder.make().noSearchResults({}).build()\n );\n }\n\n if (columnFilters.length > 0 && data.length > 0) {\n return (\n config.filterEmptyState ||\n EmptyStateBuilder.make().noFilterResults({}).build()\n );\n }\n\n return config.emptyState || EmptyStateBuilder.make().noData().build();\n };\n\n const densityClasses = {\n compact: \"[&_td]:py-1 [&_th]:py-1\",\n default: \"[&_td]:py-3 [&_th]:py-3\",\n comfortable: \"[&_td]:py-4 [&_th]:py-4\",\n };\n\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n const hasRows = table.getRowModel().rows?.length > 0;\n\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <DataTableHeader\n title={config.title}\n description={config.description}\n actions={config.headerActions}\n search={config.search}\n searchValue={globalFilter}\n onSearchChange={setGlobalFilter}\n table={table}\n selectedCount={selectedCount}\n enableColumnVisibility={config.enableColumnVisibility}\n columnVisibilityLabel={config.columnVisibilityLabel}\n />\n\n <div\n className={cn(\n \"overflow-hidden\",\n config.bordered !== false && \"rounded-md border\",\n )}\n >\n <Table\n className={cn(\n densityClasses[config.density || \"default\"],\n config.striped ? \"[&_tr:nth-child(even)]:bg-muted/50\" : \"\",\n config.hoverable !== false && \"[&_tr:hover]:bg-muted/50\",\n )}\n >\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\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 {isLoading ? (\n <tr>\n <td colSpan={columns.length} className=\"h-[400px]\">\n <div className=\"flex h-full items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4\">\n <svg\n className=\"animate-spin h-8 w-8 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"text-sm text-muted-foreground\">\n Laden...\n </span>\n </div>\n </div>\n </td>\n </tr>\n ) : hasRows ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <DataTableEmpty\n config={getEmptyState()}\n colSpan={columns.length}\n />\n )}\n </TableBody>\n </Table>\n </div>\n\n {config.pagination?.enabled && hasRows && (\n <DataTablePagination table={table} config={config.pagination} />\n )}\n </div>\n );\n}\n","\"use client\";\n\ninterface DataTableSchemaProps {\n schema?: Record<string, unknown>;\n}\n\nexport const DataTableSchema = () => {\n return (\n <div className=\"data-table-schema\">\n <p>TableSchema Placeholder</p>\n </div>\n );\n};\n","import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n visibleByDefault(visible = true): this {\n this.config.visibleByDefault = visible;\n return this;\n }\n\n visibilityLabel(label: string): this {\n this.config.visibilityLabel = label;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants } = this.config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const variantConfig = variants?.[value];\n\n if (!variantConfig) {\n return (\n <Badge variant=\"outline\" className={this.config.cellClassName}>\n {value}\n </Badge>\n );\n }\n\n return (\n <Badge\n variant={\n variantConfig.variant === \"success\" ||\n variantConfig.variant === \"warning\" ||\n variantConfig.variant === \"info\" ||\n variantConfig.variant === \"muted\"\n ? \"default\"\n : variantConfig.variant || \"default\"\n }\n className={cn(variantConfig.className, this.config.cellClassName)}\n >\n {variantConfig.icon}\n {variantConfig.label || value}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { FormattedColumnConfig } from \"./types\";\n\nexport class TextColumn<TData> extends BaseColumn<\n TData,\n FormattedColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): TextColumn<TData> {\n return new TextColumn(accessor);\n }\n\n formatter(fn: (value: unknown, row: Row<TData>) => React.ReactNode): this {\n this.config.formatter = fn;\n return this;\n }\n\n prefix(prefix: string): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n this.config.suffix = suffix;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n // Shortcuts für gängige Formatierungen\n uppercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toUpperCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n lowercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toLowerCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n limit(chars: number): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n if (typeof result === \"string\" && result.length > chars) {\n return result.slice(0, chars) + \"...\";\n }\n return result as React.ReactNode;\n };\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n prefix,\n suffix,\n placeholder,\n formatter,\n visibleByDefault,\n visibilityLabel,\n } = this.config;\n\n return {\n accessorKey: accessor as string,\n meta: {\n visibleByDefault,\n visibilityLabel: visibilityLabel || label || String(accessor),\n },\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ row, getValue }) => {\n let value = getValue();\n\n // Custom Formatter anwenden\n if (formatter) {\n value = formatter(value, row);\n }\n\n // Placeholder wenn leer\n if (value === null || value === undefined || value === \"\") {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || \"\"}${value}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(this.getAlignmentClass(), this.config.cellClassName)}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nexport interface ActionItem<TData> {\n label?: string; // optional when render is used\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\n render?: (row: TData) => ReactNode; // custom renderer for complex UI\n variant?: \"default\" | \"destructive\";\n separator?: boolean;\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n}\n\ninterface ActionsColumnConfig<TData> {\n actions: ActionItem<TData>[];\n label?: string;\n triggerIcon?: ReactNode;\n}\n\nexport class ActionsColumn<TData> {\n private config: ActionsColumnConfig<TData> = {\n actions: [],\n label: \"Aktionen\",\n };\n\n static make<TData>(): ActionsColumn<TData> {\n return new ActionsColumn();\n }\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n triggerIcon(icon: ReactNode): this {\n this.config.triggerIcon = icon;\n return this;\n }\n\n // Action hinzufügen\n action(action: ActionItem<TData>): this {\n this.config.actions.push(action);\n return this;\n }\n\n // Shortcuts für gängige Actions\n view(onClick: (row: TData) => void): this {\n return this.action({ label: \"Anzeigen\", onClick });\n }\n\n edit(onClick: (row: TData) => void): this {\n return this.action({ label: \"Bearbeiten\", onClick });\n }\n\n delete(onClick: (row: TData) => void): this {\n return this.action({\n label: \"Löschen\",\n onClick,\n variant: \"destructive\",\n separator: true,\n });\n }\n\n link(label: string, href: (row: TData) => string): this {\n return this.action({ label, href });\n }\n\n separator(): this {\n if (this.config.actions.length > 0) {\n this.config.actions[this.config.actions.length - 1].separator = true;\n }\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { actions, label, triggerIcon } = this.config;\n\n return {\n id: \"actions\",\n header: () => <span className=\"sr-only\">{label}</span>,\n cell: ({ row }) => {\n const data = row.original;\n\n const visibleActions = actions.filter(\n (action) => !action.hidden || !action.hidden(data),\n );\n\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"h-10 w-10 p-0\">\n <span className=\"sr-only\">{label}</span>\n {triggerIcon || <MoreHorizontal className=\"h-8 w-8\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleActions.map((action, index) => (\n <div key={index}>\n {action.render ? (\n // Custom render function takes priority\n action.render(data)\n ) : (\n // Standard menu item\n <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(\n action.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n onClick={() => {\n if (action.href) {\n window.location.href = action.href(data);\n } else if (action.onClick) {\n action.onClick(data);\n }\n }}\n >\n {action.icon && (\n <span className=\"mr-2\">{action.icon}</span>\n )}\n {action.label}\n </DropdownMenuItem>\n )}\n {action.separator && index < visibleActions.length - 1 && (\n <DropdownMenuSeparator />\n )}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n","import { ConfirmOptions, ConfirmHandler } from \"./types\";\n\nlet confirmHandler: ConfirmHandler | null = null;\n\nexport function registerConfirm(handler: ConfirmHandler | null): void {\n confirmHandler = handler;\n}\n\nexport function confirm(options: ConfirmOptions): Promise<boolean> {\n if (!confirmHandler) {\n throw new Error(\n \"ConfirmProvider is not mounted. Please wrap your app with <ConfirmProvider>.\",\n );\n }\n return confirmHandler(options);\n}\n","\"use client\";\nimport { useState, useEffect, ReactNode } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { registerConfirm } from \"./confirm\";\nimport { ConfirmOptions } from \"./types\";\n\ninterface ConfirmRequest {\n options: ConfirmOptions;\n resolve: (value: boolean) => void;\n}\n\ninterface ConfirmProviderProps {\n children: ReactNode;\n}\n\nexport function ConfirmProvider({ children }: ConfirmProviderProps) {\n const [queue, setQueue] = useState<ConfirmRequest[]>([]);\n const currentRequest = queue[0];\n\n useEffect(() => {\n registerConfirm(async (options: ConfirmOptions) => {\n return new Promise<boolean>((resolve) => {\n setQueue((q) => [...q, { options, resolve }]);\n });\n });\n\n return () => {\n registerConfirm(null);\n };\n }, []);\n\n const handleConfirm = () => {\n if (currentRequest) {\n currentRequest.resolve(true);\n setQueue((q) => q.slice(1));\n }\n };\n\n const handleCancel = () => {\n if (currentRequest) {\n currentRequest.resolve(false);\n setQueue((q) => q.slice(1));\n }\n };\n\n const {\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant,\n icon,\n image,\n } = currentRequest?.options || {};\n\n return (\n <>\n {children}\n <AlertDialog\n open={!!currentRequest}\n onOpenChange={(open: boolean) => !open && handleCancel()}\n >\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"text-center\">\n {title || \"Bestätigung erforderlich\"}\n </AlertDialogTitle>\n {description && (\n <AlertDialogDescription className=\"text-center\">\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n {image && (\n <div className=\"flex justify-center py-4\">\n <img\n src={image}\n alt=\"Confirmation\"\n className=\"h-24 w-24 object-contain\"\n />\n </div>\n )}\n {icon && !image && (\n <div className=\"flex justify-center py-4 text-6xl\">{icon}</div>\n )}\n <AlertDialogFooter className=\"flex flex-row !justify-between w-full\">\n <AlertDialogCancel onClick={handleCancel} className=\"mt-0\">\n {cancelLabel || \"Abbrechen\"}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n >\n {confirmLabel || \"Bestätigen\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|