@nccirtu/tablefy 0.7.3 → 0.7.4

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/tablefy/avatar-list.tsx","../../src/columns/base-column.ts","../../src/columns/avatar-group-column.tsx","../../src/columns/badge-column.tsx","../../src/columns/button-column.tsx","../../src/columns/checkbox-column.tsx","../../src/columns/date-column.tsx","../../src/columns/dropdown-column.tsx","../../src/columns/icon-column.tsx","../../src/columns/image-column.tsx","../../src/columns/input-column.tsx","../../src/columns/link-column.tsx","../../src/columns/number-column.tsx","../../src/columns/progress-column.tsx","../../src/columns/select-column.tsx","../../src/columns/text-column.tsx","../../src/columns/actions-column.tsx","../../src/columns/enum-column.tsx"],"sourcesContent":["import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants } = this.config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const variantConfig = variants?.[value];\n\n if (!variantConfig) {\n return (\n <Badge variant=\"outline\" className={this.config.cellClassName}>\n {value}\n </Badge>\n );\n }\n\n return (\n <Badge\n variant={\n variantConfig.variant === \"success\" ||\n variantConfig.variant === \"warning\" ||\n variantConfig.variant === \"info\" ||\n variantConfig.variant === \"muted\"\n ? \"default\"\n : variantConfig.variant || \"default\"\n }\n className={cn(variantConfig.className, this.config.cellClassName)}\n >\n {variantConfig.icon}\n {variantConfig.label || value}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { FormattedColumnConfig } from \"./types\";\n\nexport class TextColumn<TData> extends BaseColumn<\n TData,\n FormattedColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): TextColumn<TData> {\n return new TextColumn(accessor);\n }\n\n formatter(fn: (value: unknown, row: Row<TData>) => React.ReactNode): this {\n this.config.formatter = fn;\n return this;\n }\n\n prefix(prefix: string): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n this.config.suffix = suffix;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n // Shortcuts für gängige Formatierungen\n uppercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toUpperCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n lowercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toLowerCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n limit(chars: number): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n if (typeof result === \"string\" && result.length > chars) {\n return result.slice(0, chars) + \"...\";\n }\n return result as React.ReactNode;\n };\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n prefix,\n suffix,\n placeholder,\n formatter,\n } = 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: ({ row, getValue }) => {\n let value = getValue();\n\n // Custom Formatter anwenden\n if (formatter) {\n value = formatter(value, row);\n }\n\n // Placeholder wenn leer\n if (value === null || value === undefined || value === \"\") {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || \"\"}${value}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(this.getAlignmentClass(), this.config.cellClassName)}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nexport interface ActionItem<TData> {\n label?: string; // optional when render is used\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\n render?: (row: TData) => ReactNode; // custom renderer for complex UI\n variant?: \"default\" | \"destructive\";\n separator?: boolean;\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n}\n\ninterface ActionsColumnConfig<TData> {\n actions: ActionItem<TData>[];\n label?: string;\n triggerIcon?: ReactNode;\n}\n\nexport class ActionsColumn<TData> {\n private config: ActionsColumnConfig<TData> = {\n actions: [],\n label: \"Aktionen\",\n };\n\n static make<TData>(): ActionsColumn<TData> {\n return new ActionsColumn();\n }\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n triggerIcon(icon: ReactNode): this {\n this.config.triggerIcon = icon;\n return this;\n }\n\n // Action hinzufügen\n action(action: ActionItem<TData>): this {\n this.config.actions.push(action);\n return this;\n }\n\n // Shortcuts für gängige Actions\n view(onClick: (row: TData) => void): this {\n return this.action({ label: \"Anzeigen\", onClick });\n }\n\n edit(onClick: (row: TData) => void): this {\n return this.action({ label: \"Bearbeiten\", onClick });\n }\n\n delete(onClick: (row: TData) => void): this {\n return this.action({\n label: \"Löschen\",\n onClick,\n variant: \"destructive\",\n separator: true,\n });\n }\n\n link(label: string, href: (row: TData) => string): this {\n return this.action({ label, href });\n }\n\n separator(): this {\n if (this.config.actions.length > 0) {\n this.config.actions[this.config.actions.length - 1].separator = true;\n }\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { actions, label, triggerIcon } = this.config;\n\n return {\n id: \"actions\",\n header: () => <span className=\"sr-only\">{label}</span>,\n cell: ({ row }) => {\n const data = row.original;\n\n const visibleActions = actions.filter(\n (action) => !action.hidden || !action.hidden(data),\n );\n\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"h-10 w-10 p-0\">\n <span className=\"sr-only\">{label}</span>\n {triggerIcon || <MoreHorizontal className=\"h-8 w-8\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleActions.map((action, index) => (\n <div key={index}>\n {action.render ? (\n // Custom render function takes priority\n action.render(data)\n ) : (\n // Standard menu item\n <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(\n action.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n onClick={() => {\n if (action.href) {\n window.location.href = action.href(data);\n } else if (action.onClick) {\n action.onClick(data);\n }\n }}\n >\n {action.icon && (\n <span className=\"mr-2\">{action.icon}</span>\n )}\n {action.label}\n </DropdownMenuItem>\n )}\n {action.separator && index < visibleActions.length - 1 && (\n <DropdownMenuSeparator />\n )}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/tablefy/avatar-list.tsx","../../src/columns/base-column.ts","../../src/columns/avatar-group-column.tsx","../../src/columns/badge-column.tsx","../../src/columns/button-column.tsx","../../src/columns/checkbox-column.tsx","../../src/columns/date-column.tsx","../../src/columns/dropdown-column.tsx","../../src/columns/icon-column.tsx","../../src/columns/image-column.tsx","../../src/columns/input-column.tsx","../../src/columns/link-column.tsx","../../src/columns/number-column.tsx","../../src/columns/progress-column.tsx","../../src/columns/select-column.tsx","../../src/columns/text-column.tsx","../../src/columns/actions-column.tsx","../../src/columns/enum-column.tsx"],"sourcesContent":["import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n visibleByDefault(visible = true): this {\n this.config.visibleByDefault = visible;\n return this;\n }\n\n visibilityLabel(label: string): this {\n this.config.visibilityLabel = label;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants } = this.config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const variantConfig = variants?.[value];\n\n if (!variantConfig) {\n return (\n <Badge variant=\"outline\" className={this.config.cellClassName}>\n {value}\n </Badge>\n );\n }\n\n return (\n <Badge\n variant={\n variantConfig.variant === \"success\" ||\n variantConfig.variant === \"warning\" ||\n variantConfig.variant === \"info\" ||\n variantConfig.variant === \"muted\"\n ? \"default\"\n : variantConfig.variant || \"default\"\n }\n className={cn(variantConfig.className, this.config.cellClassName)}\n >\n {variantConfig.icon}\n {variantConfig.label || value}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { FormattedColumnConfig } from \"./types\";\n\nexport class TextColumn<TData> extends BaseColumn<\n TData,\n FormattedColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): TextColumn<TData> {\n return new TextColumn(accessor);\n }\n\n formatter(fn: (value: unknown, row: Row<TData>) => React.ReactNode): this {\n this.config.formatter = fn;\n return this;\n }\n\n prefix(prefix: string): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n this.config.suffix = suffix;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n // Shortcuts für gängige Formatierungen\n uppercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toUpperCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n lowercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toLowerCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n limit(chars: number): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n if (typeof result === \"string\" && result.length > chars) {\n return result.slice(0, chars) + \"...\";\n }\n return result as React.ReactNode;\n };\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n prefix,\n suffix,\n placeholder,\n formatter,\n visibleByDefault,\n visibilityLabel,\n } = this.config;\n\n return {\n accessorKey: accessor as string,\n meta: {\n visibleByDefault,\n visibilityLabel: visibilityLabel || label || String(accessor),\n },\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ row, getValue }) => {\n let value = getValue();\n\n // Custom Formatter anwenden\n if (formatter) {\n value = formatter(value, row);\n }\n\n // Placeholder wenn leer\n if (value === null || value === undefined || value === \"\") {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || \"\"}${value}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(this.getAlignmentClass(), this.config.cellClassName)}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nexport interface ActionItem<TData> {\n label?: string; // optional when render is used\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\n render?: (row: TData) => ReactNode; // custom renderer for complex UI\n variant?: \"default\" | \"destructive\";\n separator?: boolean;\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n}\n\ninterface ActionsColumnConfig<TData> {\n actions: ActionItem<TData>[];\n label?: string;\n triggerIcon?: ReactNode;\n}\n\nexport class ActionsColumn<TData> {\n private config: ActionsColumnConfig<TData> = {\n actions: [],\n label: \"Aktionen\",\n };\n\n static make<TData>(): ActionsColumn<TData> {\n return new ActionsColumn();\n }\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n triggerIcon(icon: ReactNode): this {\n this.config.triggerIcon = icon;\n return this;\n }\n\n // Action hinzufügen\n action(action: ActionItem<TData>): this {\n this.config.actions.push(action);\n return this;\n }\n\n // Shortcuts für gängige Actions\n view(onClick: (row: TData) => void): this {\n return this.action({ label: \"Anzeigen\", onClick });\n }\n\n edit(onClick: (row: TData) => void): this {\n return this.action({ label: \"Bearbeiten\", onClick });\n }\n\n delete(onClick: (row: TData) => void): this {\n return this.action({\n label: \"Löschen\",\n onClick,\n variant: \"destructive\",\n separator: true,\n });\n }\n\n link(label: string, href: (row: TData) => string): this {\n return this.action({ label, href });\n }\n\n separator(): this {\n if (this.config.actions.length > 0) {\n this.config.actions[this.config.actions.length - 1].separator = true;\n }\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { actions, label, triggerIcon } = this.config;\n\n return {\n id: \"actions\",\n header: () => <span className=\"sr-only\">{label}</span>,\n cell: ({ row }) => {\n const data = row.original;\n\n const visibleActions = actions.filter(\n (action) => !action.hidden || !action.hidden(data),\n );\n\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"h-10 w-10 p-0\">\n <span className=\"sr-only\">{label}</span>\n {triggerIcon || <MoreHorizontal className=\"h-8 w-8\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleActions.map((action, index) => (\n <div key={index}>\n {action.render ? (\n // Custom render function takes priority\n action.render(data)\n ) : (\n // Standard menu item\n <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(\n action.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n onClick={() => {\n if (action.href) {\n window.location.href = action.href(data);\n } else if (action.onClick) {\n action.onClick(data);\n }\n }}\n >\n {action.icon && (\n <span className=\"mr-2\">{action.icon}</span>\n )}\n {action.label}\n </DropdownMenuItem>\n )}\n {action.separator && index < visibleActions.length - 1 && (\n <DropdownMenuSeparator />\n )}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}