@nccirtu/tablefy 0.6.1 → 0.6.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/lib/utils.ts","../src/tablefy/data-table-header.tsx","../src/tablefy/data-table-empty.tsx","../src/tablefy/data-table-pagination.tsx","../src/lib/builders/table-schema.ts","../src/lib/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"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport clsx from \"clsx\";\n\nexport function cn(...inputs: Array<string | boolean | undefined | null>) {\n return clsx(inputs.filter(Boolean));\n}\n\n","\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\n// shadcn components - installed by user\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../lib/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 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 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 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 {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\n// shadcn components - installed by user\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../lib/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\";\n// shadcn components - installed by user\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 \"../lib/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 * Header Actions Builder\n * Fluent API for building header actions\n */\nclass HeaderActionsBuilder<TData> {\n private actions: HeaderAction<TData>[] = [];\n\n create(config: {\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n }): this {\n this.actions.push({\n id: \"create\",\n label: config.label,\n href: config.href,\n onClick: config.onClick,\n icon: config.icon,\n variant: \"default\",\n });\n return this;\n }\n\n export(config: {\n label: string;\n icon?: React.ReactNode;\n formats?: Array<{ label: string; onClick: () => void }>;\n }): this {\n if (config.formats && config.formats.length > 0) {\n this.actions.push({\n id: \"export\",\n label: config.label,\n icon: config.icon,\n variant: \"outline\",\n children: config.formats.map((format, index) => ({\n id: `export-${index}`,\n label: format.label,\n onClick: format.onClick,\n })),\n });\n } else {\n this.actions.push({\n id: \"export\",\n label: config.label,\n icon: config.icon,\n variant: \"outline\",\n });\n }\n return this;\n }\n\n import(config: {\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n }): this {\n this.actions.push({\n id: \"import\",\n label: config.label,\n icon: config.icon,\n onClick: config.onClick,\n variant: \"outline\",\n });\n return this;\n }\n\n bulkExport(config: {\n label: string;\n icon?: React.ReactNode;\n onExport: (rows: TData[]) => void;\n }): this {\n this.actions.push({\n id: \"bulk-export\",\n label: config.label,\n icon: config.icon,\n bulk: true,\n bulkOnClick: config.onExport,\n variant: \"outline\",\n });\n return this;\n }\n\n bulkDelete(config: {\n label: string;\n icon?: React.ReactNode;\n onDelete: (rows: TData[]) => void;\n }): this {\n this.actions.push({\n id: \"bulk-delete\",\n label: config.label,\n icon: config.icon,\n bulk: true,\n bulkOnClick: config.onDelete,\n variant: \"destructive\",\n });\n return this;\n }\n\n custom(action: HeaderAction<TData>): this {\n this.actions.push(action);\n return this;\n }\n\n build(): HeaderAction<TData>[] {\n return this.actions;\n }\n}\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(\n builder: (b: HeaderActionsBuilder<TData>) => HeaderActionsBuilder<TData>,\n ): this {\n const actionsBuilder = new HeaderActionsBuilder<TData>();\n this.config.headerActions = builder(actionsBuilder).build();\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 \"../lib/types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../lib/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 const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\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 />\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 // Definieren Sie hier die spezifischen Props\n schema?: Record<string, unknown>;\n // Weitere Props nach Bedarf hinzufügen\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","// lib/table/columns/base-column.ts\nimport { ColumnDef } from '@tanstack/react-table';\nimport { BaseColumnConfig } from './types';\n\nexport abstract class BaseColumn<TData, TConfig extends BaseColumnConfig<TData>> {\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 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\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","// lib/table/columns/badge-column.tsx\nimport { 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\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","// lib/table/columns/checkbox-column.tsx\nimport { 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={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')}\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox checked={row.getIsSelected()} onCheckedChange={(value) => row.toggleSelected(!!value)} aria-label=\"Zeile auswählen\" />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n\n","// lib/table/columns/date-column.tsx\nimport { 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<TData, DateColumnConfig<TData>> {\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: { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' },\n };\n\n const options = formatOptions[format] || { day: '2-digit', month: '2-digit', year: 'numeric' };\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 = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 <span className=\"text-muted-foreground\">Ungültiges Datum</span>;\n }\n\n const formatted = this.formatDate(date, format || 'short', locale || 'de-DE');\n\n return (\n <span className={cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName)}>\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\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","// lib/table/columns/icon-column.tsx\nimport { Button } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } 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<TData, IconColumnConfig<TData>> {\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 xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-full w-full\">\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 { accessor, label, sortable, states, size, showLabel, showTooltip, withBackground, defaultIcon, defaultLabel } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = typeof icon === 'function' ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? <IconElement className=\"h-full w-full\" /> : (icon as ReactNode);\n\n const iconElement = (\n <div className={cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName)}>\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)}>{renderedIcon}</div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || 'md'], color)}>{renderedIcon}</div>\n )}\n\n {showLabel && <span className={cn('text-sm', color)}>{stateLabel}</span>}\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\n","// lib/table/columns/image-column.tsx\nimport { 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<TData, ImageColumnConfig<TData>> {\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: () => <span className={cn('text-muted-foreground font-medium', this.config.headerClassName)}>{label || ''}</span>,\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('object-cover', sizeClasses[size || 'md'], roundedClasses[rounded || 'md'], this.config.cellClassName)}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n\n","\"use client\";\nimport React from \"react\";\nimport { Input } from \"@/components/ui/input\";\n\ninterface InputColumnConfig {\n accessorKey?: string;\n header?: string;\n placeholder?: string;\n onChange?: (data: any, value: string) => void;\n}\n\nexport const InputColumn = (config: InputColumnConfig) => {\n const accessorKey = config.accessorKey || \"input\";\n return {\n accessorKey,\n header: config.header || \"Input\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Input\n value={value || \"\"}\n onChange={(e) =>\n config.onChange && config.onChange(row.original, e.target.value)\n }\n placeholder={config.placeholder || \"Enter value\"}\n />\n );\n },\n };\n};\n\nexport { InputColumn as inputColumn };\n\n","// lib/table/columns/link-column.tsx\nimport { 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<TData, LinkColumnConfig<TData>> {\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 { accessor, label, sortable, href, icon, showExternalIcon, underline, openInNewTab, onClick } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = 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 = this.config.align === 'center' ? 'text-center' : this.config.align === 'right' ? 'text-right' : '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 && <ExternalLink className=\"text-muted-foreground h-3 w-3\" />}\n </a>\n );\n },\n };\n }\n}\n\n","// lib/table/columns/number-column.tsx\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 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<TData, NumberColumnConfig<TData>> {\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 { accessor, label, sortable, decimals, locale, currency, percent, prefix, suffix } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 <span className={cn('tabular-nums', this.getAlignmentClass(), this.config.cellClassName)}>{displayValue}</span>;\n },\n };\n }\n}\n\n","// lib/table/columns/progress-column.tsx\nimport { 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?: 'default' | 'success' | 'warning' | 'danger' | ((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<TData, ProgressColumnConfig<TData>> {\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 { accessor, label, sortable, max, showValue, showPercentage, size, color, format } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = typeof color === 'function' ? color(value, maxValue) : 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 className={cn('flex min-w-[120px] items-center gap-3', this.config.cellClassName)}>\n <Progress\n value={percentage}\n className={cn('flex-1', sizeClasses[size || 'md'], colorClasses[currentColor as keyof typeof colorClasses])}\n />\n {labelText && <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">{labelText}</span>}\n </div>\n );\n },\n };\n }\n}\n\n","\"use client\";\nimport React from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ninterface SelectOption {\n label: string;\n value: string;\n}\n\ninterface SelectColumnConfig {\n accessorKey?: string;\n header?: string;\n placeholder?: string;\n options: SelectOption[];\n onChange?: (data: any, value: string) => void;\n}\n\nexport const SelectColumn = (config: SelectColumnConfig) => {\n const accessorKey = config.accessorKey || \"select\";\n return {\n accessorKey,\n header: config.header || \"Select\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Select\n value={value || \"\"}\n onValueChange={(value) =>\n config.onChange && config.onChange(row.original, value)\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={config.placeholder || \"Select an option\"}\n />\n </SelectTrigger>\n <SelectContent>\n {config.options.map((option: SelectOption, index: number) => (\n <SelectItem key={index} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n};\n\nexport { SelectColumn as selectColumn };\n\n","// lib/table/columns/text-column.tsx\nimport { 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<TData, FormattedColumnConfig<TData>> {\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' ? result.toUpperCase() : (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' ? result.toLowerCase() : (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 { accessor, label, sortable, prefix, suffix, placeholder, formatter } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 className={cn('text-muted-foreground', this.getAlignmentClass(), this.config.cellClassName)}>{placeholder || '—'}</span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || ''}${value}${suffix || ''}`;\n\n return <span className={cn(this.getAlignmentClass(), this.config.cellClassName)}>{displayValue}</span>;\n },\n };\n }\n}\n\n","// lib/table/columns/actions-column.tsx\nimport { Button } from '@/components/ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } 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\ninterface ActionItem<TData> {\n label: string;\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\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((action) => !action.hidden || !action.hidden(data));\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 <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(action.variant === 'destructive' && 'text-destructive focus:text-destructive')}\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 && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </DropdownMenuItem>\n {action.separator && index < visibleActions.length - 1 && <DropdownMenuSeparator />}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n\n"],"names":["_jsxs","_jsx","_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/lib/builders/table-schema.ts","../src/lib/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"],"sourcesContent":["\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\n// shadcn components - installed by user\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../lib/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 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 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 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 {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\n// shadcn components - installed by user\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../lib/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\";\n// shadcn components - installed by user\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 \"../lib/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 * Header Actions Builder\n * Fluent API for building header actions\n */\nclass HeaderActionsBuilder<TData> {\n private actions: HeaderAction<TData>[] = [];\n\n create(config: {\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n }): this {\n this.actions.push({\n id: \"create\",\n label: config.label,\n href: config.href,\n onClick: config.onClick,\n icon: config.icon,\n variant: \"default\",\n });\n return this;\n }\n\n export(config: {\n label: string;\n icon?: React.ReactNode;\n formats?: Array<{ label: string; onClick: () => void }>;\n }): this {\n if (config.formats && config.formats.length > 0) {\n this.actions.push({\n id: \"export\",\n label: config.label,\n icon: config.icon,\n variant: \"outline\",\n children: config.formats.map((format, index) => ({\n id: `export-${index}`,\n label: format.label,\n onClick: format.onClick,\n })),\n });\n } else {\n this.actions.push({\n id: \"export\",\n label: config.label,\n icon: config.icon,\n variant: \"outline\",\n });\n }\n return this;\n }\n\n import(config: {\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n }): this {\n this.actions.push({\n id: \"import\",\n label: config.label,\n icon: config.icon,\n onClick: config.onClick,\n variant: \"outline\",\n });\n return this;\n }\n\n bulkExport(config: {\n label: string;\n icon?: React.ReactNode;\n onExport: (rows: TData[]) => void;\n }): this {\n this.actions.push({\n id: \"bulk-export\",\n label: config.label,\n icon: config.icon,\n bulk: true,\n bulkOnClick: config.onExport,\n variant: \"outline\",\n });\n return this;\n }\n\n bulkDelete(config: {\n label: string;\n icon?: React.ReactNode;\n onDelete: (rows: TData[]) => void;\n }): this {\n this.actions.push({\n id: \"bulk-delete\",\n label: config.label,\n icon: config.icon,\n bulk: true,\n bulkOnClick: config.onDelete,\n variant: \"destructive\",\n });\n return this;\n }\n\n custom(action: HeaderAction<TData>): this {\n this.actions.push(action);\n return this;\n }\n\n build(): HeaderAction<TData>[] {\n return this.actions;\n }\n}\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(\n builder: (b: HeaderActionsBuilder<TData>) => HeaderActionsBuilder<TData>,\n ): this {\n const actionsBuilder = new HeaderActionsBuilder<TData>();\n this.config.headerActions = builder(actionsBuilder).build();\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 \"../lib/types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../lib/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 const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\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 />\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 // Definieren Sie hier die spezifischen Props\n schema?: Record<string, unknown>;\n // Weitere Props nach Bedarf hinzufügen\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","// lib/table/columns/base-column.ts\nimport { ColumnDef } from '@tanstack/react-table';\nimport { BaseColumnConfig } from './types';\n\nexport abstract class BaseColumn<TData, TConfig extends BaseColumnConfig<TData>> {\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 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\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","// lib/table/columns/badge-column.tsx\nimport { 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\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","// lib/table/columns/checkbox-column.tsx\nimport { 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={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')}\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox checked={row.getIsSelected()} onCheckedChange={(value) => row.toggleSelected(!!value)} aria-label=\"Zeile auswählen\" />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n\n","// lib/table/columns/date-column.tsx\nimport { 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<TData, DateColumnConfig<TData>> {\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: { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' },\n };\n\n const options = formatOptions[format] || { day: '2-digit', month: '2-digit', year: 'numeric' };\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 = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 <span className=\"text-muted-foreground\">Ungültiges Datum</span>;\n }\n\n const formatted = this.formatDate(date, format || 'short', locale || 'de-DE');\n\n return (\n <span className={cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName)}>\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\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","// lib/table/columns/icon-column.tsx\nimport { Button } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } 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<TData, IconColumnConfig<TData>> {\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 xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-full w-full\">\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 { accessor, label, sortable, states, size, showLabel, showTooltip, withBackground, defaultIcon, defaultLabel } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = typeof icon === 'function' ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? <IconElement className=\"h-full w-full\" /> : (icon as ReactNode);\n\n const iconElement = (\n <div className={cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName)}>\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)}>{renderedIcon}</div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || 'md'], color)}>{renderedIcon}</div>\n )}\n\n {showLabel && <span className={cn('text-sm', color)}>{stateLabel}</span>}\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\n","// lib/table/columns/image-column.tsx\nimport { 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<TData, ImageColumnConfig<TData>> {\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: () => <span className={cn('text-muted-foreground font-medium', this.config.headerClassName)}>{label || ''}</span>,\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('object-cover', sizeClasses[size || 'md'], roundedClasses[rounded || 'md'], this.config.cellClassName)}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n\n","\"use client\";\nimport React from \"react\";\nimport { Input } from \"@/components/ui/input\";\n\ninterface InputColumnConfig {\n accessorKey?: string;\n header?: string;\n placeholder?: string;\n onChange?: (data: any, value: string) => void;\n}\n\nexport const InputColumn = (config: InputColumnConfig) => {\n const accessorKey = config.accessorKey || \"input\";\n return {\n accessorKey,\n header: config.header || \"Input\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Input\n value={value || \"\"}\n onChange={(e) =>\n config.onChange && config.onChange(row.original, e.target.value)\n }\n placeholder={config.placeholder || \"Enter value\"}\n />\n );\n },\n };\n};\n\nexport { InputColumn as inputColumn };\n\n","// lib/table/columns/link-column.tsx\nimport { 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<TData, LinkColumnConfig<TData>> {\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 { accessor, label, sortable, href, icon, showExternalIcon, underline, openInNewTab, onClick } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = 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 = this.config.align === 'center' ? 'text-center' : this.config.align === 'right' ? 'text-right' : '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 && <ExternalLink className=\"text-muted-foreground h-3 w-3\" />}\n </a>\n );\n },\n };\n }\n}\n\n","// lib/table/columns/number-column.tsx\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 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<TData, NumberColumnConfig<TData>> {\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 { accessor, label, sortable, decimals, locale, currency, percent, prefix, suffix } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 <span className={cn('tabular-nums', this.getAlignmentClass(), this.config.cellClassName)}>{displayValue}</span>;\n },\n };\n }\n}\n\n","// lib/table/columns/progress-column.tsx\nimport { 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?: 'default' | 'success' | 'warning' | 'danger' | ((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<TData, ProgressColumnConfig<TData>> {\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 { accessor, label, sortable, max, showValue, showPercentage, size, color, format } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 = typeof color === 'function' ? color(value, maxValue) : 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 className={cn('flex min-w-[120px] items-center gap-3', this.config.cellClassName)}>\n <Progress\n value={percentage}\n className={cn('flex-1', sizeClasses[size || 'md'], colorClasses[currentColor as keyof typeof colorClasses])}\n />\n {labelText && <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">{labelText}</span>}\n </div>\n );\n },\n };\n }\n}\n\n","\"use client\";\nimport React from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ninterface SelectOption {\n label: string;\n value: string;\n}\n\ninterface SelectColumnConfig {\n accessorKey?: string;\n header?: string;\n placeholder?: string;\n options: SelectOption[];\n onChange?: (data: any, value: string) => void;\n}\n\nexport const SelectColumn = (config: SelectColumnConfig) => {\n const accessorKey = config.accessorKey || \"select\";\n return {\n accessorKey,\n header: config.header || \"Select\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Select\n value={value || \"\"}\n onValueChange={(value) =>\n config.onChange && config.onChange(row.original, value)\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={config.placeholder || \"Select an option\"}\n />\n </SelectTrigger>\n <SelectContent>\n {config.options.map((option: SelectOption, index: number) => (\n <SelectItem key={index} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n};\n\nexport { SelectColumn as selectColumn };\n\n","// lib/table/columns/text-column.tsx\nimport { 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<TData, FormattedColumnConfig<TData>> {\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' ? result.toUpperCase() : (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' ? result.toLowerCase() : (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 { accessor, label, sortable, prefix, suffix, placeholder, formatter } = 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 className={cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}>\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('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName)}\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 className={cn('text-muted-foreground', this.getAlignmentClass(), this.config.cellClassName)}>{placeholder || '—'}</span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || ''}${value}${suffix || ''}`;\n\n return <span className={cn(this.getAlignmentClass(), this.config.cellClassName)}>{displayValue}</span>;\n },\n };\n }\n}\n\n","// lib/table/columns/actions-column.tsx\nimport { Button } from '@/components/ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } 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\ninterface ActionItem<TData> {\n label: string;\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\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((action) => !action.hidden || !action.hidden(data));\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 <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(action.variant === 'destructive' && 'text-destructive focus:text-destructive')}\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 && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </DropdownMenuItem>\n {action.separator && index < visibleActions.length - 1 && <DropdownMenuSeparator />}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}