@nccirtu/tablefy 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/forms/index.esm.js +3 -7
- package/dist/forms/index.esm.js.map +1 -1
- package/dist/forms/index.js +2 -6
- package/dist/forms/index.js.map +1 -1
- package/dist/index.esm.js +3 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/inertia/index.d.ts +4 -25
- package/package.json +4 -3
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/tablefy/data-table-header.tsx","../src/tablefy/data-table-empty.tsx","../src/tablefy/data-table-pagination.tsx","../src/builders/table-schema.ts","../src/builders/empty-state.ts","../src/tablefy/data-table.tsx","../src/tablefy/data-table-schema.tsx","../src/tablefy/avatar-list.tsx","../src/columns/base-column.ts","../src/columns/avatar-group-column.tsx","../src/columns/badge-column.tsx","../src/columns/button-column.tsx","../src/columns/checkbox-column.tsx","../src/columns/date-column.tsx","../src/columns/dropdown-column.tsx","../src/columns/icon-column.tsx","../src/columns/image-column.tsx","../src/columns/input-column.tsx","../src/columns/link-column.tsx","../src/columns/number-column.tsx","../src/columns/progress-column.tsx","../src/columns/select-column.tsx","../src/columns/text-column.tsx","../src/columns/actions-column.tsx","../src/columns/enum-column.tsx","../src/confirm/confirm.ts","../src/confirm/ConfirmProvider.tsx","../src/forms/builders/actions-builder.ts","../src/forms/builders/form-schema.ts","../src/forms/builders/section-builder.ts","../src/forms/builders/tab-builder.ts","../src/forms/builders/wizard-builder.ts","../src/forms/fields/base-field.ts","../src/forms/fields/text-input.tsx","../src/forms/fields/textarea.tsx","../src/forms/fields/select.tsx","../src/forms/fields/checkbox.tsx","../src/forms/fields/toggle.tsx","../src/forms/fields/radio-group.tsx","../src/forms/fields/date-picker.tsx","../src/forms/fields/hidden.tsx","../src/forms/fields/file-upload.tsx","../src/forms/fields/checkbox-group.tsx","../src/forms/fields/repeater.tsx","../src/forms/components/field-renderer.tsx","../src/forms/components/grid-layout.tsx","../src/forms/components/form-actions.tsx","../src/forms/components/section-renderer.tsx","../src/forms/components/tab-renderer.tsx","../src/forms/components/wizard-renderer.tsx","../src/forms/components/form-renderer.tsx"],"sourcesContent":["\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X, Columns } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../types\";\n\ninterface DataTableHeaderProps<TData> {\n title?: string;\n description?: string;\n actions?: HeaderAction<TData>[];\n search?: SearchConfig;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n table?: TanstackTable<TData>;\n selectedCount?: number;\n enableColumnVisibility?: boolean;\n columnVisibilityLabel?: string;\n className?: string;\n}\n\nexport function DataTableHeader<TData>({\n title,\n description,\n actions = [],\n search,\n searchValue = \"\",\n onSearchChange,\n table,\n selectedCount = 0,\n enableColumnVisibility = false,\n columnVisibilityLabel = \"Spalten\",\n className,\n}: DataTableHeaderProps<TData>) {\n const normalActions = actions.filter((a) => !a.bulk && !a.hidden);\n const bulkActions = actions.filter((a) => a.bulk && !a.hidden);\n const showBulkActions = selectedCount > 0 && bulkActions.length > 0;\n\n const getSelectedRows = (): TData[] => {\n if (!table) return [];\n return table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n };\n\n const renderAction = (action: HeaderAction<TData>, index: number) => {\n // Custom render function takes priority\n if (action.render) {\n return <div key={action.id || index}>{action.render()}</div>;\n }\n\n if (action.children && action.children.length > 0) {\n return (\n <DropdownMenu key={action.id || index}>\n <DropdownMenuTrigger asChild>\n <Button\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n >\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {action.children.map((child, childIndex) => (\n <DropdownMenuItem\n key={child.id || childIndex}\n onClick={child.onClick}\n className={cn(\n child.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n >\n {child.icon && <span className=\"mr-2\">{child.icon}</span>}\n {child.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n if (action.href) {\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n asChild\n >\n <a href={action.href}>\n {action.icon}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n onClick={() => {\n if (action.bulk && action.bulkOnClick) {\n action.bulkOnClick(getSelectedRows());\n } else if (action.onClick) {\n action.onClick();\n }\n }}\n >\n {action.loading ? (\n <svg className=\"animate-spin h-4 w-4\" viewBox=\"0 0 24 24\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n action.icon\n )}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon || action.loading ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </Button>\n );\n };\n\n if (\n !title &&\n !description &&\n normalActions.length === 0 &&\n bulkActions.length === 0 &&\n !search?.enabled\n ) {\n return null;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {(search?.enabled || normalActions.length > 0 || showBulkActions) && (\n <div className=\"flex items-center justify-between gap-4 mb-4\">\n {search?.enabled && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={search.placeholder || \"Suchen...\"}\n value={searchValue}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onSearchChange?.(e.target.value)\n }\n className=\"pl-9 pr-9\"\n />\n {searchValue && (\n <button\n onClick={() => onSearchChange?.(\"\")}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showBulkActions && (\n <span className=\"text-sm text-muted-foreground\">\n {selectedCount} ausgewählt\n </span>\n )}\n {showBulkActions &&\n bulkActions.map((action, index) => renderAction(action, index))}\n\n {enableColumnVisibility && table && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"default\">\n <Columns className=\"h-4 w-4\" />\n <span className=\"ml-2\">{columnVisibilityLabel}</span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{columnVisibilityLabel}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n const meta = column.columnDef.meta as any;\n const label = meta?.visibilityLabel || column.id;\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value: boolean) =>\n column.toggleVisibility(!!value)\n }\n >\n {label}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../types\";\n\ninterface DataTableEmptyProps {\n config: EmptyStateConfig;\n colSpan: number;\n className?: string;\n}\n\nexport function DataTableEmpty({\n config,\n colSpan,\n className,\n}: DataTableEmptyProps) {\n const { icon, imageUrl, title, description, action, variant } = config;\n\n return (\n <tr>\n <td colSpan={colSpan} className={cn(\"h-[400px]\", className)}>\n <div className=\"flex h-full flex-col items-center justify-center gap-4 text-center p-8\">\n {imageUrl ? (\n <img className=\"w-24 h-24\" src={imageUrl} alt=\"Empty State\" />\n ) : icon ? (\n <div\n className={cn(\n \"rounded-full p-4\",\n variant === \"error\" ? \"bg-destructive/10\" : \"bg-muted\",\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"w-full flex flex-col items-center justify-center gap-2\">\n <h3 className=\"text-sm font-semibold text-foreground whitespace-normal break-words\">\n {title}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground font-normal whitespace-normal break-words leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n\n {action && (\n <Button\n variant={variant === \"error\" ? \"outline\" : \"default\"}\n onClick={action.onClick}\n asChild={!!action.href}\n className=\"mt-2\"\n >\n {action.href ? (\n <a href={action.href}>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </a>\n ) : (\n <>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </>\n )}\n </Button>\n )}\n </div>\n </td>\n </tr>\n );\n}\n","\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { PaginationConfig } from \"../types\";\n\ninterface DataTablePaginationProps<TData> {\n table: TanstackTable<TData>;\n config?: PaginationConfig;\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n config,\n className,\n}: DataTablePaginationProps<TData>) {\n if (!config?.enabled) return null;\n\n const {\n showPageInfo = true,\n showPageSizeSelector = true,\n pageSizeOptions = [10, 20, 30, 50, 100],\n } = config;\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between\",\n className,\n )}\n >\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length > 0 ? (\n <span>\n {table.getFilteredSelectedRowModel().rows.length} von{\" \"}\n {table.getFilteredRowModel().rows.length} Zeile(n) ausgewählt\n </span>\n ) : showPageInfo ? (\n <span>{table.getFilteredRowModel().rows.length} Einträge</span>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:gap-6\">\n {showPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Zeilen pro Seite\n </span>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value: string) =>\n table.setPageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {showPageInfo && (\n <div className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Seite{\" \"}\n {table.getPageCount() > 0\n ? table.getState().pagination.pageIndex + 1\n : 0}{\" \"}\n von {Math.max(table.getPageCount(), 0)}\n </div>\n )}\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Erste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Vorherige Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Nächste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Letzte Seite</span>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableConfig } from \"../types/table\";\nimport { HeaderAction } from \"../types/actions\";\nimport { EmptyStateConfig } from \"../types/empty-state\";\nimport { SearchConfig } from \"../types/filters\";\nimport React from \"react\";\n\ntype ColumnBuilder<TData> = { build(): ColumnDef<TData, unknown> };\n\n/**\n * Table Schema Builder\n * Fluent API for building complete table configurations\n */\nexport class TableSchema<TData> {\n private columnBuilders: ColumnBuilder<TData>[] = [];\n private config: Partial<DataTableConfig<TData>> = {};\n\n static make<TData>(): TableSchema<TData> {\n return new TableSchema();\n }\n\n // Configuration Methods\n description(text: string): this {\n this.config.description = text;\n return this;\n }\n\n title(text: string): this {\n this.config.title = text;\n return this;\n }\n\n headerActions(actions: HeaderAction<TData>[]): this {\n this.config.headerActions = actions;\n return this;\n }\n\n emptyState(config: EmptyStateConfig): this {\n this.config.emptyState = config;\n return this;\n }\n\n searchEmptyState(config: EmptyStateConfig): this {\n this.config.searchEmptyState = config;\n return this;\n }\n\n filterEmptyState(config: EmptyStateConfig): this {\n this.config.filterEmptyState = config;\n return this;\n }\n\n // Feature Methods\n searchable(config?: { placeholder?: string } | boolean): this {\n if (typeof config === \"boolean\") {\n this.config.search = config ? { enabled: true } : { enabled: false };\n } else {\n this.config.search = {\n enabled: true,\n placeholder: config?.placeholder,\n };\n }\n return this;\n }\n\n paginated(\n config?: { pageSize?: number; pageSizeOptions?: number[] } | boolean,\n ): this {\n if (typeof config === \"boolean\") {\n this.config.pagination = { enabled: config };\n } else {\n this.config.pagination = {\n enabled: true,\n pageSize: config?.pageSize,\n pageSizeOptions: config?.pageSizeOptions,\n };\n }\n return this;\n }\n\n selectable(multiSelect: boolean = true): this {\n this.config.enableRowSelection = true;\n this.config.enableMultiRowSelection = multiSelect;\n return this;\n }\n\n sortable(defaultSort?: { id: string; desc: boolean }): this {\n this.config.enableSorting = true;\n if (defaultSort) {\n this.config.defaultSort = defaultSort;\n }\n return this;\n }\n\n columnVisibility(enabled: boolean = true): this {\n this.config.enableColumnVisibility = enabled;\n return this;\n }\n\n // Styling Methods\n bordered(enabled: boolean = true): this {\n this.config.bordered = enabled;\n return this;\n }\n\n striped(enabled: boolean = true): this {\n this.config.striped = enabled;\n return this;\n }\n\n hoverable(enabled: boolean = true): this {\n this.config.hoverable = enabled;\n return this;\n }\n\n density(density: \"compact\" | \"default\" | \"comfortable\"): this {\n this.config.density = density;\n return this;\n }\n\n // Columns\n columns(...builders: ColumnBuilder<TData>[]): this {\n this.columnBuilders.push(...builders);\n return this;\n }\n\n // Build\n build(): {\n columns: ColumnDef<TData, unknown>[];\n config: DataTableConfig<TData>;\n } {\n return {\n columns: this.columnBuilders.map((builder) => builder.build()),\n config: this.config as DataTableConfig<TData>,\n };\n }\n}\n","import { EmptyStateConfig } from \"../types/empty-state\";\nimport React from \"react\";\n\n/**\n * Empty State Builder\n * Fluent API for building empty state configurations\n */\nexport class EmptyStateBuilder {\n private config: EmptyStateConfig = {\n title: \"No data\",\n variant: \"default\",\n };\n\n static make(): EmptyStateBuilder {\n return new EmptyStateBuilder();\n }\n\n title(title: string): this {\n this.config.title = title;\n return this;\n }\n\n description(description: string): this {\n this.config.description = description;\n return this;\n }\n\n icon(icon: React.ReactNode): this {\n this.config.icon = icon;\n return this;\n }\n\n imageUrl(imageUrl: string): this {\n this.config.imageUrl = imageUrl;\n return this;\n }\n\n action(\n label: string,\n onClick?: () => void,\n href?: string,\n icon?: React.ReactNode,\n ): this {\n this.config.action = { label, onClick, href, icon };\n return this;\n }\n\n variant(variant: \"default\" | \"search\" | \"filter\" | \"error\" | \"custom\"): this {\n this.config.variant = variant;\n return this;\n }\n\n error(params: { onRetry?: () => void } = {}): this {\n this.config.variant = \"error\";\n this.config.title = \"Error\";\n this.config.description = \"Something went wrong. Please try again.\";\n if (params.onRetry) {\n this.config.action = { label: \"Retry\", onClick: params.onRetry };\n }\n return this;\n }\n\n noSearchResults(params: { onClear?: () => void } = {}): this {\n this.config.variant = \"search\";\n this.config.title = \"No results found\";\n this.config.description = \"Try adjusting your search terms.\";\n if (params.onClear) {\n this.config.action = { label: \"Clear search\", onClick: params.onClear };\n }\n return this;\n }\n\n noFilterResults(params: { onReset?: () => void } = {}): this {\n this.config.variant = \"filter\";\n this.config.title = \"No results match your filters\";\n this.config.description = \"Try adjusting or clearing your filters.\";\n if (params.onReset) {\n this.config.action = { label: \"Reset filters\", onClick: params.onReset };\n }\n return this;\n }\n\n noData(): this {\n this.config.variant = \"default\";\n this.config.title = \"No data\";\n this.config.description = \"There is no data to display.\";\n return this;\n }\n\n build(): EmptyStateConfig {\n return this.config;\n }\n\n // Static helper methods for quick configuration\n static noData(config: {\n title: string;\n description: string;\n createLabel?: string;\n createHref?: string;\n createOnClick?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"default\",\n title: config.title,\n description: config.description,\n action: config.createLabel\n ? {\n label: config.createLabel,\n href: config.createHref,\n onClick: config.createOnClick,\n }\n : undefined,\n };\n }\n\n static noSearchResults(config: {\n title: string;\n description: string;\n clearLabel?: string;\n onClear?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"search\",\n title: config.title,\n description: config.description,\n action: config.clearLabel\n ? {\n label: config.clearLabel,\n onClick: config.onClear,\n }\n : undefined,\n };\n }\n\n static noFilterResults(config: {\n title: string;\n description: string;\n resetLabel?: string;\n onReset?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"filter\",\n title: config.title,\n description: config.description,\n action: config.resetLabel\n ? {\n label: config.resetLabel,\n onClick: config.onReset,\n }\n : undefined,\n };\n }\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\n// shadcn components - installed by user via `npx shadcn add table`\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { DataTableConfig } from \"../types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../builders\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n config?: DataTableConfig<TData>;\n className?: string;\n isLoading?: boolean;\n isError?: boolean;\n onRetry?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n config = {},\n className,\n isLoading = false,\n isError = false,\n onRetry,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>(\n config.defaultSort ? [config.defaultSort] : [],\n );\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n // Initialize column visibility based on visibleByDefault\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n () => {\n const initialVisibility: VisibilityState = {};\n columns.forEach((column: any) => {\n if (column.meta?.visibleByDefault === false) {\n initialVisibility[column.accessorKey || column.id] = false;\n }\n });\n return initialVisibility;\n },\n );\n\n const [rowSelection, setRowSelection] = useState({});\n const [globalFilter, setGlobalFilter] = useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n globalFilter,\n },\n enableRowSelection: config.enableRowSelection ?? false,\n enableMultiRowSelection:\n config.enableMultiRowSelection ?? config.enableRowSelection ?? false,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: config.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: config.pagination?.enabled\n ? getPaginationRowModel()\n : undefined,\n });\n\n const getEmptyState = () => {\n if (isError) {\n return (\n config.emptyState || EmptyStateBuilder.make().error({ onRetry }).build()\n );\n }\n\n if (globalFilter && data.length > 0) {\n return (\n config.searchEmptyState ||\n EmptyStateBuilder.make().noSearchResults({}).build()\n );\n }\n\n if (columnFilters.length > 0 && data.length > 0) {\n return (\n config.filterEmptyState ||\n EmptyStateBuilder.make().noFilterResults({}).build()\n );\n }\n\n return config.emptyState || EmptyStateBuilder.make().noData().build();\n };\n\n const densityClasses = {\n compact: \"[&_td]:py-1 [&_th]:py-1\",\n default: \"[&_td]:py-3 [&_th]:py-3\",\n comfortable: \"[&_td]:py-4 [&_th]:py-4\",\n };\n\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n const hasRows = table.getRowModel().rows?.length > 0;\n\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <DataTableHeader\n title={config.title}\n description={config.description}\n actions={config.headerActions}\n search={config.search}\n searchValue={globalFilter}\n onSearchChange={setGlobalFilter}\n table={table}\n selectedCount={selectedCount}\n enableColumnVisibility={config.enableColumnVisibility}\n columnVisibilityLabel={config.columnVisibilityLabel}\n />\n\n <div\n className={cn(\n \"overflow-hidden\",\n config.bordered !== false && \"rounded-md border\",\n )}\n >\n <Table\n className={cn(\n densityClasses[config.density || \"default\"],\n config.striped ? \"[&_tr:nth-child(even)]:bg-muted/50\" : \"\",\n config.hoverable !== false && \"[&_tr:hover]:bg-muted/50\",\n )}\n >\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {isLoading ? (\n <tr>\n <td colSpan={columns.length} className=\"h-[400px]\">\n <div className=\"flex h-full items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4\">\n <svg\n className=\"animate-spin h-8 w-8 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"text-sm text-muted-foreground\">\n Laden...\n </span>\n </div>\n </div>\n </td>\n </tr>\n ) : hasRows ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <DataTableEmpty\n config={getEmptyState()}\n colSpan={columns.length}\n />\n )}\n </TableBody>\n </Table>\n </div>\n\n {config.pagination?.enabled && hasRows && (\n <DataTablePagination table={table} config={config.pagination} />\n )}\n </div>\n );\n}\n","\"use client\";\n\ninterface DataTableSchemaProps {\n schema?: Record<string, unknown>;\n}\n\nexport const DataTableSchema = () => {\n return (\n <div className=\"data-table-schema\">\n <p>TableSchema Placeholder</p>\n </div>\n );\n};\n","import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n visibleByDefault(visible = true): this {\n this.config.visibleByDefault = visible;\n return this;\n }\n\n visibilityLabel(label: string): this {\n this.config.visibilityLabel = label;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n // Dynamische Variante basierend auf Row-Daten\n variantFn(\n fn: (\n value: unknown,\n row: TData,\n ) => {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n },\n ): this {\n this.config.variantFn = fn;\n return this;\n }\n\n // Dynamische className basierend auf Row-Daten\n classNameFn(fn: (value: unknown, row: TData) => string): this {\n this.config.classNameFn = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants, variantFn, classNameFn } =\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: ({ getValue, row }) => {\n const value = getValue();\n const stringValue = String(value);\n\n // Priority 1: Dynamic variantFn (highest priority)\n if (variantFn) {\n const dynamicConfig = variantFn(value, row.original);\n return (\n <Badge\n variant={\n dynamicConfig.variant === \"success\" ||\n dynamicConfig.variant === \"warning\" ||\n dynamicConfig.variant === \"info\" ||\n dynamicConfig.variant === \"muted\"\n ? \"default\"\n : dynamicConfig.variant || \"default\"\n }\n className={cn(\n dynamicConfig.className,\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {dynamicConfig.icon}\n {dynamicConfig.label || stringValue}\n </Badge>\n );\n }\n\n // Priority 2: Static variants lookup\n const variantConfig = variants?.[stringValue];\n if (variantConfig) {\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(\n variantConfig.className,\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {variantConfig.icon}\n {variantConfig.label || stringValue}\n </Badge>\n );\n }\n\n // Priority 3: Default badge with optional dynamic className\n return (\n <Badge\n variant=\"outline\"\n className={cn(\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {stringValue}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { FormattedColumnConfig } from \"./types\";\n\nexport class TextColumn<TData> extends BaseColumn<\n TData,\n FormattedColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): TextColumn<TData> {\n return new TextColumn(accessor);\n }\n\n formatter(fn: (value: unknown, row: Row<TData>) => React.ReactNode): this {\n this.config.formatter = fn;\n return this;\n }\n\n prefix(prefix: string): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n this.config.suffix = suffix;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n // Shortcuts für gängige Formatierungen\n uppercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toUpperCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n lowercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toLowerCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n limit(chars: number): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n if (typeof result === \"string\" && result.length > chars) {\n return result.slice(0, chars) + \"...\";\n }\n return result as React.ReactNode;\n };\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n prefix,\n suffix,\n placeholder,\n formatter,\n visibleByDefault,\n visibilityLabel,\n } = this.config;\n\n return {\n accessorKey: accessor as string,\n meta: {\n visibleByDefault,\n visibilityLabel: visibilityLabel || label || String(accessor),\n },\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ row, getValue }) => {\n let value = getValue();\n\n // Custom Formatter anwenden\n if (formatter) {\n value = formatter(value, row);\n }\n\n // Placeholder wenn leer\n if (value === null || value === undefined || value === \"\") {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || \"\"}${value}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(this.getAlignmentClass(), this.config.cellClassName)}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nexport interface ActionItem<TData> {\n label?: string; // optional when render is used\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\n render?: (row: TData) => ReactNode; // custom renderer for complex UI\n variant?: \"default\" | \"destructive\";\n separator?: boolean;\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n}\n\ninterface ActionsColumnConfig<TData> {\n actions: ActionItem<TData>[];\n label?: string;\n triggerIcon?: ReactNode;\n}\n\nexport class ActionsColumn<TData> {\n private config: ActionsColumnConfig<TData> = {\n actions: [],\n label: \"Aktionen\",\n };\n\n static make<TData>(): ActionsColumn<TData> {\n return new ActionsColumn();\n }\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n triggerIcon(icon: ReactNode): this {\n this.config.triggerIcon = icon;\n return this;\n }\n\n // Action hinzufügen\n action(action: ActionItem<TData>): this {\n this.config.actions.push(action);\n return this;\n }\n\n // Shortcuts für gängige Actions\n view(onClick: (row: TData) => void): this {\n return this.action({ label: \"Anzeigen\", onClick });\n }\n\n edit(onClick: (row: TData) => void): this {\n return this.action({ label: \"Bearbeiten\", onClick });\n }\n\n delete(onClick: (row: TData) => void): this {\n return this.action({\n label: \"Löschen\",\n onClick,\n variant: \"destructive\",\n separator: true,\n });\n }\n\n link(label: string, href: (row: TData) => string): this {\n return this.action({ label, href });\n }\n\n separator(): this {\n if (this.config.actions.length > 0) {\n this.config.actions[this.config.actions.length - 1].separator = true;\n }\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { actions, label, triggerIcon } = this.config;\n\n return {\n id: \"actions\",\n header: () => <span className=\"sr-only\">{label}</span>,\n cell: ({ row }) => {\n const data = row.original;\n\n const visibleActions = actions.filter(\n (action) => !action.hidden || !action.hidden(data),\n );\n\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"h-10 w-10 p-0\">\n <span className=\"sr-only\">{label}</span>\n {triggerIcon || <MoreHorizontal className=\"h-8 w-8\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleActions.map((action, index) => (\n <div key={index}>\n {action.render ? (\n // Custom render function takes priority\n action.render(data)\n ) : (\n // Standard menu item\n <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(\n action.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n onClick={() => {\n if (action.href) {\n window.location.href = action.href(data);\n } else if (action.onClick) {\n action.onClick(data);\n }\n }}\n >\n {action.icon && (\n <span className=\"mr-2\">{action.icon}</span>\n )}\n {action.label}\n </DropdownMenuItem>\n )}\n {action.separator && index < visibleActions.length - 1 && (\n <DropdownMenuSeparator />\n )}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n","import { ConfirmOptions, ConfirmHandler } from \"./types\";\n\nlet confirmHandler: ConfirmHandler | null = null;\n\nexport function registerConfirm(handler: ConfirmHandler | null): void {\n confirmHandler = handler;\n}\n\nexport function confirm(options: ConfirmOptions): Promise<boolean> {\n if (!confirmHandler) {\n throw new Error(\n \"ConfirmProvider is not mounted. Please wrap your app with <ConfirmProvider>.\",\n );\n }\n return confirmHandler(options);\n}\n","\"use client\";\nimport { useState, useEffect, ReactNode } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { registerConfirm } from \"./confirm\";\nimport { ConfirmOptions } from \"./types\";\n\ninterface ConfirmRequest {\n options: ConfirmOptions;\n resolve: (value: boolean) => void;\n}\n\ninterface ConfirmProviderProps {\n children: ReactNode;\n}\n\nexport function ConfirmProvider({ children }: ConfirmProviderProps) {\n const [queue, setQueue] = useState<ConfirmRequest[]>([]);\n const currentRequest = queue[0];\n\n useEffect(() => {\n registerConfirm(async (options: ConfirmOptions) => {\n return new Promise<boolean>((resolve) => {\n setQueue((q) => [...q, { options, resolve }]);\n });\n });\n\n return () => {\n registerConfirm(null);\n };\n }, []);\n\n const handleConfirm = () => {\n if (currentRequest) {\n currentRequest.resolve(true);\n setQueue((q) => q.slice(1));\n }\n };\n\n const handleCancel = () => {\n if (currentRequest) {\n currentRequest.resolve(false);\n setQueue((q) => q.slice(1));\n }\n };\n\n const {\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant,\n icon,\n image,\n } = currentRequest?.options || {};\n\n return (\n <>\n {children}\n <AlertDialog\n open={!!currentRequest}\n onOpenChange={(open: boolean) => !open && handleCancel()}\n >\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"text-center\">\n {title || \"Bestätigung erforderlich\"}\n </AlertDialogTitle>\n {description && (\n <AlertDialogDescription className=\"text-center\">\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n {image && (\n <div className=\"flex justify-center py-4\">\n <img\n src={image}\n alt=\"Confirmation\"\n className=\"h-24 w-24 object-contain\"\n />\n </div>\n )}\n {icon && !image && (\n <div className=\"flex justify-center py-4 text-6xl\">{icon}</div>\n )}\n <AlertDialogFooter className=\"flex flex-row !justify-between w-full\">\n <AlertDialogCancel onClick={handleCancel} className=\"mt-0\">\n {cancelLabel || \"Abbrechen\"}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n >\n {confirmLabel || \"Bestätigen\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","import { FormActionConfig } from \"../types/actions\";\n\nexport class ActionsBuilder<TData extends Record<string, any>> {\n private actionsList: FormActionConfig<TData>[] = [];\n\n submit(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"submit\",\n label: opts.label || \"Submit\",\n variant: opts.variant || \"default\",\n ...opts,\n });\n return this;\n }\n\n cancel(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"cancel\",\n label: opts.label || \"Cancel\",\n variant: opts.variant || \"outline\",\n ...opts,\n });\n return this;\n }\n\n custom(opts: Omit<FormActionConfig<TData>, \"type\"> & { label: string }): this {\n this.actionsList.push({ ...opts, type: \"custom\" });\n return this;\n }\n\n build(): FormActionConfig<TData>[] {\n return [...this.actionsList];\n }\n}\n","import { FormSchemaConfig, FormBuildResult, BuiltField } from \"../types/form\";\nimport { SectionConfig, TabConfig, WizardStepConfig } from \"../types/layout\";\nimport { FormActionConfig } from \"../types/actions\";\nimport { ActionsBuilder } from \"./actions-builder\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\n/**\n * Form Schema Builder\n * Fluent API for building complete form configurations\n */\nexport class FormSchema<TData extends Record<string, any>> {\n private fieldBuilders: FieldBuilder<TData>[] = [];\n private schemaConfig: Partial<FormSchemaConfig<TData>> = {};\n\n static make<TData extends Record<string, any>>(): FormSchema<TData> {\n return new FormSchema();\n }\n\n // --- Configuration ---\n\n title(title: string | ((data: TData) => string)): this {\n this.schemaConfig.title = title;\n return this;\n }\n\n description(description: string | ((data: TData) => string)): this {\n this.schemaConfig.description = description;\n return this;\n }\n\n columns(columns: number): this {\n this.schemaConfig.columns = columns;\n return this;\n }\n\n bordered(bordered = true): this {\n this.schemaConfig.bordered = bordered;\n return this;\n }\n\n spacing(spacing: \"compact\" | \"normal\" | \"relaxed\"): this {\n this.schemaConfig.spacing = spacing;\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean)): this {\n this.schemaConfig.disabled = disabled;\n return this;\n }\n\n // --- Fields ---\n\n fields(...builders: FieldBuilder<TData>[]): this {\n this.fieldBuilders.push(...builders);\n return this;\n }\n\n // --- Layout ---\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.schemaConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n tabs(...tabs: { build(): TabConfig<TData> }[]): this {\n this.schemaConfig.tabs = tabs.map((t) => t.build());\n return this;\n }\n\n wizard(\n ...steps: { build(): WizardStepConfig<TData> }[]\n ): this {\n this.schemaConfig.wizardSteps = steps.map((s) => s.build());\n return this;\n }\n\n // --- Actions ---\n\n actions(\n fn: (builder: ActionsBuilder<TData>) => ActionsBuilder<TData>,\n ): this {\n const builder = new ActionsBuilder<TData>();\n this.schemaConfig.actions = fn(builder).build();\n return this;\n }\n\n actionsPosition(position: \"start\" | \"end\" | \"between\" | \"center\"): this {\n this.schemaConfig.actionsPosition = position;\n return this;\n }\n\n // --- Build ---\n\n build(): FormBuildResult<TData> {\n const fields = this.fieldBuilders.map((b) => b.build());\n return {\n fields,\n config: {\n ...(this.schemaConfig as FormSchemaConfig<TData>),\n fields,\n },\n };\n }\n}\n","import { ReactNode } from \"react\";\nimport { SectionConfig } from \"../types/layout\";\n\nexport class SectionBuilder<TData extends Record<string, any>> {\n private sectionConfig: SectionConfig<TData>;\n\n constructor(title: string) {\n this.sectionConfig = {\n id: title.toLowerCase().replace(/\\s+/g, \"-\"),\n title,\n fields: [],\n columns: 1,\n collapsible: false,\n collapsed: false,\n };\n }\n\n static make<TData extends Record<string, any>>(\n title: string,\n ): SectionBuilder<TData> {\n return new SectionBuilder(title);\n }\n\n id(id: string): this {\n this.sectionConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.sectionConfig.description = description;\n return this;\n }\n\n fields(fields: string[]): this {\n this.sectionConfig.fields = fields;\n return this;\n }\n\n columns(columns: number): this {\n this.sectionConfig.columns = columns;\n return this;\n }\n\n collapsible(collapsible = true): this {\n this.sectionConfig.collapsible = collapsible;\n return this;\n }\n\n collapsed(collapsed = true): this {\n this.sectionConfig.collapsed = collapsed;\n this.sectionConfig.collapsible = true;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.sectionConfig.icon = icon;\n return this;\n }\n\n hidden(fn: (data: TData) => boolean): this {\n this.sectionConfig.hidden = fn;\n return this;\n }\n\n build(): SectionConfig<TData> {\n return { ...this.sectionConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { TabConfig, SectionConfig } from \"../types/layout\";\n\nexport class TabBuilder<TData extends Record<string, any>> {\n private tabConfig: TabConfig<TData>;\n\n constructor(label: string) {\n this.tabConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): TabBuilder<TData> {\n return new TabBuilder(label);\n }\n\n id(id: string): this {\n this.tabConfig.id = id;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.tabConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.tabConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.tabConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n badge(\n badge: string | number | ((data: TData) => string | number),\n ): this {\n this.tabConfig.badge = badge;\n return this;\n }\n\n disabled(fn: (data: TData) => boolean): this {\n this.tabConfig.disabled = fn;\n return this;\n }\n\n build(): TabConfig<TData> {\n return { ...this.tabConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { WizardStepConfig, SectionConfig } from \"../types/layout\";\n\nexport class WizardStep<TData extends Record<string, any>> {\n private stepConfig: WizardStepConfig<TData>;\n\n constructor(label: string) {\n this.stepConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): WizardStep<TData> {\n return new WizardStep(label);\n }\n\n id(id: string): this {\n this.stepConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.stepConfig.description = description;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.stepConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.stepConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.stepConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n canProceed(fn: (data: TData) => boolean): this {\n this.stepConfig.canProceed = fn;\n return this;\n }\n\n beforeNext(fn: (data: TData) => Promise<boolean> | boolean): this {\n this.stepConfig.beforeNext = fn;\n return this;\n }\n\n build(): WizardStepConfig<TData> {\n return { ...this.stepConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport {\n BaseFieldConfig,\n ValidationRule,\n DependencyConfig,\n} from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\nexport abstract class BaseField<\n TData extends Record<string, any>,\n TConfig extends BaseFieldConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(name: string) {\n this.config = {\n name,\n required: false,\n disabled: false,\n readOnly: false,\n hidden: false,\n columnSpan: 1,\n rules: [],\n dependsOn: [],\n } as unknown as TConfig;\n }\n\n // --- Fluent API ---\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n helperText(text: string): this {\n this.config.helperText = text;\n return this;\n }\n\n required(required = true): this {\n this.config.required = required;\n if (\n required &&\n !this.config.rules?.some((r: ValidationRule) => r.type === \"required\")\n ) {\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"required\",\n message: `${this.config.label || this.config.name} is required`,\n },\n ];\n }\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean) = true): this {\n this.config.disabled = disabled;\n return this;\n }\n\n readOnly(readOnly = true): this {\n this.config.readOnly = readOnly;\n return this;\n }\n\n hidden(hidden: boolean | ((data: TData) => boolean) = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n default(value: any): this {\n this.config.defaultValue = value;\n return this;\n }\n\n columnSpan(span: number): this {\n this.config.columnSpan = span;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n rules(rules: ValidationRule[]): this {\n this.config.rules = [...(this.config.rules || []), ...rules];\n return this;\n }\n\n zodSchema(schema: any): this {\n this.config.zodSchema = schema;\n return this;\n }\n\n dependsOn<K extends string & keyof TData>(\n field: K,\n condition: (value: TData[K], data: TData) => boolean,\n effect: \"show\" | \"hide\" | \"enable\" | \"disable\" | \"setValue\" = \"show\",\n effectValue?: any,\n ): this {\n this.config.dependsOn = [\n ...(this.config.dependsOn || []),\n { field, condition, effect, effectValue } as DependencyConfig<TData>,\n ];\n return this;\n }\n\n reactive(reactive = true): this {\n this.config.reactive = reactive;\n return this;\n }\n\n // --- Abstract ---\n\n abstract readonly fieldType: FieldType;\n\n abstract renderField(props: FieldRenderProps<TData>): ReactNode;\n\n // --- Build ---\n\n build(): BuiltField<TData> {\n return {\n name: this.config.name,\n type: this.fieldType,\n config: { ...this.config },\n render: (props: FieldRenderProps<TData>) => this.renderField(props),\n };\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextInputConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class TextInput<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextInputConfig<TData>> {\n readonly fieldType: FieldType = \"text\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): TextInput<TData> {\n return new TextInput(name);\n }\n\n type(type: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\"): this {\n this.config.type = type;\n return this;\n }\n\n email(): this {\n return this.type(\"email\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n tel(): this {\n return this.type(\"tel\");\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n prefix(prefix: string | ReactNode): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string | ReactNode): this {\n this.config.suffix = suffix;\n return this;\n }\n\n autocomplete(value: string): this {\n this.config.autocomplete = value;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const {\n type,\n placeholder,\n maxLength,\n readOnly,\n autocomplete,\n className,\n prefix,\n suffix,\n } = this.config;\n\n const input = (\n <Input\n type={type || \"text\"}\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onChange(\n type === \"number\" ? Number(e.target.value) : e.target.value,\n )\n }\n onBlur={onBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autocomplete}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n\n if (prefix || suffix) {\n return (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-muted-foreground\">{prefix}</span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-muted-foreground\">{suffix}</span>\n )}\n </div>\n );\n }\n\n return input;\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Textarea as ShadcnTextarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextareaConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Textarea<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextareaConfig<TData>> {\n readonly fieldType: FieldType = \"textarea\";\n\n constructor(name: string) {\n super(name);\n this.config.rows = 3;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Textarea<TData> {\n return new Textarea(name);\n }\n\n rows(rows: number): this {\n this.config.rows = rows;\n return this;\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n autoResize(autoResize = true): this {\n this.config.autoResize = autoResize;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, rows, maxLength, readOnly, className } = this.config;\n\n return (\n <ShadcnTextarea\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChange(e.target.value)\n }\n onBlur={onBlur}\n placeholder={placeholder}\n rows={rows}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n Select as ShadcnSelect,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { SelectConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Select<\n TData extends Record<string, any>,\n> extends BaseField<TData, SelectConfig<TData>> {\n readonly fieldType: FieldType = \"select\";\n\n constructor(name: string) {\n super(name);\n (this.config as SelectConfig<TData>).options = [];\n (this.config as SelectConfig<TData>).multiple = false;\n (this.config as SelectConfig<TData>).searchable = false;\n (this.config as SelectConfig<TData>).clearable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Select<TData> {\n return new Select(name);\n }\n\n options(\n options: SelectOption[] | ((data: TData) => SelectOption[]),\n ): this {\n (this.config as SelectConfig<TData>).options = options;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as SelectConfig<TData>).multiple = multiple;\n return this;\n }\n\n searchable(searchable = true): this {\n (this.config as SelectConfig<TData>).searchable = searchable;\n return this;\n }\n\n clearable(clearable = true): this {\n (this.config as SelectConfig<TData>).clearable = clearable;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as SelectConfig<TData>).maxItems = max;\n return this;\n }\n\n loadOptions(fn: (query: string) => Promise<SelectOption[]>): this {\n (this.config as SelectConfig<TData>).loadOptions = fn;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as SelectConfig<TData>;\n const resolvedOptions =\n typeof cfg.options === \"function\" ? cfg.options(data) : cfg.options;\n\n return (\n <ShadcnSelect\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(error && \"border-destructive\", cfg.className)}\n >\n <SelectValue placeholder={cfg.placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {resolvedOptions.map((opt) => (\n <SelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </ShadcnSelect>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Checkbox<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Checkbox<TData> {\n return new Checkbox(name);\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { className } = this.config;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <ShadcnCheckbox\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(!!checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {this.config.label && (\n <label\n htmlFor={this.config.name}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n error && \"text-destructive\",\n )}\n >\n {this.config.label}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { ToggleConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Toggle<\n TData extends Record<string, any>,\n> extends BaseField<TData, ToggleConfig<TData>> {\n readonly fieldType: FieldType = \"toggle\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Toggle<TData> {\n return new Toggle(name);\n }\n\n onLabel(label: string): this {\n this.config.onLabel = label;\n return this;\n }\n\n offLabel(label: string): this {\n this.config.offLabel = label;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { onLabel, offLabel, className } = this.config;\n const displayLabel = value ? onLabel : offLabel;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <Switch\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {displayLabel && (\n <label\n htmlFor={this.config.name}\n className=\"text-sm text-muted-foreground\"\n >\n {displayLabel}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n RadioGroup as ShadcnRadioGroup,\n RadioGroupItem,\n} from \"@/components/ui/radio-group\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { RadioGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class RadioGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, RadioGroupConfig<TData>> {\n readonly fieldType: FieldType = \"radio-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as RadioGroupConfig<TData>).options = [];\n (this.config as RadioGroupConfig<TData>).orientation = \"vertical\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): RadioGroup<TData> {\n return new RadioGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as RadioGroupConfig<TData>).options = options;\n return this;\n }\n\n orientation(orientation: \"horizontal\" | \"vertical\"): this {\n (this.config as RadioGroupConfig<TData>).orientation = orientation;\n return this;\n }\n\n horizontal(): this {\n return this.orientation(\"horizontal\");\n }\n\n vertical(): this {\n return this.orientation(\"vertical\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RadioGroupConfig<TData>;\n const isHorizontal = cfg.orientation === \"horizontal\";\n\n return (\n <ShadcnRadioGroup\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n className={cn(\n isHorizontal ? \"flex flex-row gap-4\" : \"flex flex-col gap-2\",\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={opt.value}\n id={`${cfg.name}-${opt.value}`}\n disabled={opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n}\n","import React, { ReactNode, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { DatePickerConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class DatePicker<\n TData extends Record<string, any>,\n> extends BaseField<TData, DatePickerConfig<TData>> {\n readonly fieldType: FieldType = \"date-picker\";\n\n constructor(name: string) {\n super(name);\n this.config.format = \"PPP\";\n this.config.includeTime = false;\n this.config.locale = \"en-US\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): DatePicker<TData> {\n return new DatePicker(name);\n }\n\n minDate(date: Date | ((data: TData) => Date)): this {\n this.config.minDate = date;\n return this;\n }\n\n maxDate(date: Date | ((data: TData) => Date)): this {\n this.config.maxDate = date;\n return this;\n }\n\n format(format: string): this {\n this.config.format = format;\n return this;\n }\n\n includeTime(includeTime = true): this {\n this.config.includeTime = includeTime;\n if (includeTime) {\n (this as any).fieldType = \"date-time-picker\";\n }\n return this;\n }\n\n locale(locale: string): this {\n this.config.locale = locale;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, className, locale } = this.config;\n\n const resolvedMinDate =\n typeof this.config.minDate === \"function\"\n ? this.config.minDate(data)\n : this.config.minDate;\n const resolvedMaxDate =\n typeof this.config.maxDate === \"function\"\n ? this.config.maxDate(data)\n : this.config.maxDate;\n\n const dateValue = value ? new Date(value) : undefined;\n\n const formatDate = (date: Date): string => {\n return date.toLocaleDateString(locale || \"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateValue && \"text-muted-foreground\",\n error && \"border-destructive\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateValue ? formatDate(dateValue) : placeholder || \"Pick a date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={dateValue}\n onSelect={(date) =>\n onChange(date ? date.toISOString().split(\"T\")[0] : \"\")\n }\n disabled={(date) => {\n if (resolvedMinDate && date < resolvedMinDate) return true;\n if (resolvedMaxDate && date > resolvedMaxDate) return true;\n return false;\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseField } from \"./base-field\";\nimport { HiddenConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Hidden<\n TData extends Record<string, any>,\n> extends BaseField<TData, HiddenConfig<TData>> {\n readonly fieldType: FieldType = \"hidden\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Hidden<TData> {\n return new Hidden(name);\n }\n\n renderField({ value }: FieldRenderProps<TData>): ReactNode {\n return <input type=\"hidden\" name={this.config.name} value={value ?? \"\"} />;\n }\n}\n","\"use client\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Upload, X, File } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { FileUploadConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class FileUpload<\n TData extends Record<string, any>,\n> extends BaseField<TData, FileUploadConfig<TData>> {\n readonly fieldType: FieldType = \"file-upload\";\n\n constructor(name: string) {\n super(name);\n (this.config as FileUploadConfig<TData>).multiple = false;\n (this.config as FileUploadConfig<TData>).preview = true;\n (this.config as FileUploadConfig<TData>).maxFiles = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): FileUpload<TData> {\n return new FileUpload(name);\n }\n\n accept(accept: string): this {\n (this.config as FileUploadConfig<TData>).accept = accept;\n return this;\n }\n\n maxSize(bytes: number): this {\n (this.config as FileUploadConfig<TData>).maxSize = bytes;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as FileUploadConfig<TData>).multiple = multiple;\n return this;\n }\n\n maxFiles(max: number): this {\n (this.config as FileUploadConfig<TData>).maxFiles = max;\n return this;\n }\n\n preview(preview = true): this {\n (this.config as FileUploadConfig<TData>).preview = preview;\n return this;\n }\n\n image(): this {\n return this.accept(\"image/*\");\n }\n\n pdf(): this {\n return this.accept(\"application/pdf\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as FileUploadConfig<TData>;\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n\n const files: File[] = Array.isArray(value) ? value : value ? [value] : [];\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList) return;\n const newFiles = Array.from(fileList);\n\n if (cfg.maxSize) {\n const oversized = newFiles.find((f) => f.size > cfg.maxSize!);\n if (oversized) return;\n }\n\n if (cfg.multiple) {\n const combined = [...files, ...newFiles].slice(0, cfg.maxFiles);\n onChange(combined);\n } else {\n onChange(newFiles[0] || null);\n }\n };\n\n const removeFile = (index: number) => {\n if (cfg.multiple) {\n const updated = files.filter((_, i) => i !== index);\n onChange(updated.length ? updated : null);\n } else {\n onChange(null);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", cfg.className)}>\n <div\n className={cn(\n \"flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 transition-colors\",\n dragOver\n ? \"border-primary bg-primary/5\"\n : \"border-muted-foreground/25\",\n error && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDragOver(false);\n if (!disabled) handleFiles(e.dataTransfer.files);\n }}\n >\n <Upload className=\"mb-2 h-8 w-8 text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop or{\" \"}\n <button\n type=\"button\"\n className=\"text-primary underline\"\n onClick={() => inputRef.current?.click()}\n disabled={disabled}\n >\n browse\n </button>\n </p>\n {cfg.accept && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Accepted: {cfg.accept}\n </p>\n )}\n <input\n ref={inputRef}\n type=\"file\"\n accept={cfg.accept}\n multiple={cfg.multiple}\n onChange={(e) => handleFiles(e.target.files)}\n className=\"hidden\"\n disabled={disabled}\n />\n </div>\n\n {files.length > 0 && (\n <ul className=\"space-y-1\">\n {files.map((file, index) => (\n <li\n key={index}\n className=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <File className=\"h-4 w-4 text-muted-foreground\" />\n {file.name}\n </span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => removeFile(index)}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class CheckboxGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxGroupConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as CheckboxGroupConfig<TData>).options = [];\n (this.config as CheckboxGroupConfig<TData>).columns = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): CheckboxGroup<TData> {\n return new CheckboxGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as CheckboxGroupConfig<TData>).options = options;\n return this;\n }\n\n columns(columns: number): this {\n (this.config as CheckboxGroupConfig<TData>).columns = columns;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as CheckboxGroupConfig<TData>;\n const selectedValues: string[] = Array.isArray(value) ? value : [];\n\n const gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n const handleToggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...selectedValues, optionValue]);\n } else {\n onChange(selectedValues.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div\n className={cn(\n \"grid gap-2\",\n gridColsClass[cfg.columns || 1] || gridColsClass[1],\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <ShadcnCheckbox\n id={`${cfg.name}-${opt.value}`}\n checked={selectedValues.includes(opt.value)}\n onCheckedChange={(checked) =>\n handleToggle(opt.value, !!checked)\n }\n disabled={disabled || opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </div>\n );\n }\n}\n","\"use client\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { Plus, Trash2, GripVertical } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { RepeaterConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\nexport class Repeater<\n TData extends Record<string, any>,\n> extends BaseField<TData, RepeaterConfig<TData>> {\n readonly fieldType: FieldType = \"repeater\";\n private fieldBuilders: FieldBuilder<any>[] = [];\n\n constructor(name: string) {\n super(name);\n (this.config as RepeaterConfig<TData>).minItems = 0;\n (this.config as RepeaterConfig<TData>).maxItems = Infinity;\n (this.config as RepeaterConfig<TData>).addLabel = \"Add item\";\n (this.config as RepeaterConfig<TData>).collapsible = false;\n (this.config as RepeaterConfig<TData>).orderable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Repeater<TData> {\n return new Repeater(name);\n }\n\n fields(...builders: FieldBuilder<any>[]): this {\n this.fieldBuilders = builders;\n (this.config as RepeaterConfig<TData>).fields = builders.map((b) =>\n b.build(),\n );\n return this;\n }\n\n minItems(min: number): this {\n (this.config as RepeaterConfig<TData>).minItems = min;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as RepeaterConfig<TData>).maxItems = max;\n return this;\n }\n\n addLabel(label: string): this {\n (this.config as RepeaterConfig<TData>).addLabel = label;\n return this;\n }\n\n collapsible(collapsible = true): this {\n (this.config as RepeaterConfig<TData>).collapsible = collapsible;\n return this;\n }\n\n orderable(orderable = true): this {\n (this.config as RepeaterConfig<TData>).orderable = orderable;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RepeaterConfig<TData>;\n const items: Record<string, any>[] = Array.isArray(value) ? value : [];\n const builtFields = cfg.fields as BuiltField<any>[];\n\n const addItem = () => {\n if (items.length >= (cfg.maxItems || Infinity)) return;\n const defaults: Record<string, any> = {};\n builtFields.forEach((f) => {\n defaults[f.name] = f.config.defaultValue ?? \"\";\n });\n onChange([...items, defaults]);\n };\n\n const removeItem = (index: number) => {\n if (items.length <= (cfg.minItems || 0)) return;\n onChange(items.filter((_, i) => i !== index));\n };\n\n const updateItem = (\n index: number,\n fieldName: string,\n fieldValue: any,\n ) => {\n const updated = items.map((item, i) =>\n i === index ? { ...item, [fieldName]: fieldValue } : item,\n );\n onChange(updated);\n };\n\n const canAdd = items.length < (cfg.maxItems || Infinity);\n const canRemove = items.length > (cfg.minItems || 0);\n\n return (\n <div className={cn(\"space-y-3\", cfg.className)}>\n {items.map((item, index) => (\n <Card key={index}>\n <CardContent className=\"flex items-start gap-3 pt-4\">\n {cfg.orderable && (\n <GripVertical className=\"mt-2 h-5 w-5 cursor-grab text-muted-foreground\" />\n )}\n <div className=\"grid flex-1 gap-3\">\n {builtFields.map((field) => (\n <div key={field.name} className=\"space-y-1\">\n {field.config.label && (\n <label className=\"text-sm font-medium\">\n {field.config.label}\n </label>\n )}\n {field.render({\n value: item[field.name],\n onChange: (v) => updateItem(index, field.name, v),\n disabled,\n data,\n })}\n </div>\n ))}\n </div>\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"mt-1 h-8 w-8 p-0 text-destructive\"\n onClick={() => removeItem(index)}\n disabled={disabled}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n )}\n </CardContent>\n </Card>\n ))}\n\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addItem}\n disabled={disabled}\n className=\"w-full\"\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n {cfg.addLabel}\n </Button>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BuiltField, FieldRenderProps } from \"../types/form\";\n\nexport interface FieldRendererProps<TData extends Record<string, any>> {\n field: BuiltField<TData>;\n value: any;\n error?: string;\n disabled?: boolean;\n data: TData;\n onChange: (value: any) => void;\n onBlur?: () => void;\n}\n\nexport function FieldRenderer<TData extends Record<string, any>>({\n field,\n value,\n error,\n disabled,\n data,\n onChange,\n onBlur,\n}: FieldRendererProps<TData>): ReactNode {\n // Hidden fields render without wrapper\n if (field.type === \"hidden\") {\n return field.render({ value, onChange, onBlur, error, disabled, data });\n }\n\n // Checkbox and Toggle handle their own labels inline\n const skipLabel = field.type === \"checkbox\" || field.type === \"toggle\";\n\n return (\n <div\n className={cn(\n \"space-y-2\",\n field.config.columnSpan && field.config.columnSpan > 1\n ? `col-span-${field.config.columnSpan}`\n : undefined,\n field.config.className,\n )}\n >\n {field.config.label && !skipLabel && (\n <Label\n htmlFor={field.name}\n className={cn(error && \"text-destructive\")}\n >\n {field.config.label}\n {field.config.required && (\n <span className=\"text-destructive ml-1\">*</span>\n )}\n </Label>\n )}\n {field.render({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n data,\n })}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n {!error && field.config.helperText && (\n <p className=\"text-sm text-muted-foreground\">\n {field.config.helperText}\n </p>\n )}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface GridLayoutProps {\n columns?: number;\n children: ReactNode;\n className?: string;\n}\n\nconst gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function GridLayout({\n columns = 1,\n children,\n className,\n}: GridLayoutProps): ReactNode {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n gridColsClass[columns] || gridColsClass[1],\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { FormActionConfig } from \"../types/actions\";\n\nexport interface FormActionsProps<TData extends Record<string, any>> {\n actions: FormActionConfig<TData>[];\n position?: \"start\" | \"end\" | \"between\" | \"center\";\n data: TData;\n processing?: boolean;\n}\n\nconst positionClass: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n end: \"justify-end\",\n};\n\nexport function FormActions<TData extends Record<string, any>>({\n actions,\n position = \"end\",\n data,\n processing = false,\n}: FormActionsProps<TData>): ReactNode {\n if (!actions.length) return null;\n\n return (\n <div className={cn(\"flex gap-2\", positionClass[position])}>\n {actions.map((action, i) => {\n const isDisabled =\n typeof action.disabled === \"function\"\n ? action.disabled(data, processing)\n : action.disabled;\n\n if (action.type === \"submit\") {\n return (\n <Button\n key={i}\n type=\"submit\"\n variant={action.variant || \"default\"}\n disabled={isDisabled || processing}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {processing ? \"Processing...\" : action.label}\n </Button>\n );\n }\n\n if (action.type === \"cancel\" && action.href) {\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n disabled={processing}\n asChild\n >\n <a href={action.href}>\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n onClick={action.onClick}\n disabled={isDisabled || (action.type === \"cancel\" && processing)}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState } from \"react\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { SectionConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface SectionRendererProps<TData extends Record<string, any>> {\n section: SectionConfig<TData>;\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n}\n\nexport function SectionRenderer<TData extends Record<string, any>>({\n section,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n}: SectionRendererProps<TData>): ReactNode {\n const [isCollapsed, setIsCollapsed] = useState(section.collapsed ?? false);\n\n if (section.hidden && section.hidden(data)) return null;\n\n const sectionFields = fields.filter((f) =>\n section.fields.includes(f.name),\n );\n\n return (\n <Card>\n <CardHeader\n className={cn(\n section.collapsible && \"cursor-pointer select-none\",\n )}\n onClick={\n section.collapsible ? () => setIsCollapsed(!isCollapsed) : undefined\n }\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {section.icon}\n <CardTitle className=\"text-lg\">{section.title}</CardTitle>\n </div>\n {section.collapsible && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n </Button>\n )}\n </div>\n {section.description && (\n <CardDescription>{section.description}</CardDescription>\n )}\n </CardHeader>\n {!isCollapsed && (\n <CardContent>\n <GridLayout columns={section.columns}>\n {sectionFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n </CardContent>\n )}\n </Card>\n );\n}\n","\"use client\";\nimport React, { ReactNode } from \"react\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"@/components/ui/tabs\";\nimport { cn } from \"@/lib/utils\";\nimport { TabConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface TabRendererProps<TData extends Record<string, any>> {\n tabs: TabConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n}\n\nexport function TabRenderer<TData extends Record<string, any>>({\n tabs,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n}: TabRendererProps<TData>): ReactNode {\n const firstTab = tabs[0]?.id;\n\n return (\n <Tabs defaultValue={firstTab}>\n <TabsList>\n {tabs.map((tab) => {\n const isDisabled = tab.disabled ? tab.disabled(data) : false;\n const badge =\n typeof tab.badge === \"function\" ? tab.badge(data) : tab.badge;\n\n return (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n disabled={isDisabled}\n >\n <span className=\"flex items-center gap-2\">\n {tab.icon}\n {tab.label}\n {badge !== undefined && badge !== null && (\n <span className=\"ml-1 rounded-full bg-muted px-2 py-0.5 text-xs\">\n {badge}\n </span>\n )}\n </span>\n </TabsTrigger>\n );\n })}\n </TabsList>\n {tabs.map((tab) => {\n const tabFields = tab.fields\n ? fields.filter((f) => tab.fields!.includes(f.name))\n : [];\n\n return (\n <TabsContent key={tab.id} value={tab.id} className=\"mt-4\">\n {tab.sections ? (\n <div className=\"space-y-4\">\n {tab.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {tabFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) =>\n onChange(field.name as keyof TData, v)\n }\n onBlur={\n onBlur ? () => onBlur(field.name) : undefined\n }\n />\n );\n })}\n </GridLayout>\n )}\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Check } from \"lucide-react\";\nimport { WizardStepConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface WizardRendererProps<TData extends Record<string, any>> {\n steps: WizardStepConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n onSubmit: () => void;\n processing?: boolean;\n}\n\nexport function WizardRenderer<TData extends Record<string, any>>({\n steps,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n onSubmit,\n processing = false,\n}: WizardRendererProps<TData>): ReactNode {\n const [currentStep, setCurrentStep] = useState(0);\n\n const currentStepConfig = steps[currentStep];\n const isLastStep = currentStep === steps.length - 1;\n const isFirstStep = currentStep === 0;\n\n const canProceed = currentStepConfig?.canProceed\n ? currentStepConfig.canProceed(data)\n : true;\n\n const handleNext = useCallback(async () => {\n if (currentStepConfig?.beforeNext) {\n const canContinue = await currentStepConfig.beforeNext(data);\n if (!canContinue) return;\n }\n if (isLastStep) {\n onSubmit();\n } else {\n setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));\n }\n }, [currentStep, currentStepConfig, data, isLastStep, onSubmit, steps.length]);\n\n const handlePrevious = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const stepFields = currentStepConfig?.fields\n ? fields.filter((f) => currentStepConfig.fields!.includes(f.name))\n : [];\n\n return (\n <div className=\"space-y-6\">\n {/* Step indicators */}\n <nav aria-label=\"Progress\">\n <ol className=\"flex items-center\">\n {steps.map((step, index) => (\n <li\n key={step.id}\n className={cn(\n \"flex items-center\",\n index < steps.length - 1 && \"flex-1\",\n )}\n >\n <div className=\"flex items-center gap-2\">\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-medium\",\n index < currentStep &&\n \"border-primary bg-primary text-primary-foreground\",\n index === currentStep &&\n \"border-primary text-primary\",\n index > currentStep &&\n \"border-muted-foreground/25 text-muted-foreground\",\n )}\n >\n {index < currentStep ? (\n <Check className=\"h-4 w-4\" />\n ) : (\n index + 1\n )}\n </div>\n <div className=\"hidden sm:block\">\n <p\n className={cn(\n \"text-sm font-medium\",\n index <= currentStep\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-xs text-muted-foreground\">\n {step.description}\n </p>\n )}\n </div>\n </div>\n {index < steps.length - 1 && (\n <div\n className={cn(\n \"mx-4 hidden h-0.5 flex-1 sm:block\",\n index < currentStep ? \"bg-primary\" : \"bg-muted\",\n )}\n />\n )}\n </li>\n ))}\n </ol>\n </nav>\n\n {/* Step content */}\n <div>\n {currentStepConfig?.sections ? (\n <div className=\"space-y-4\">\n {currentStepConfig.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {stepFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n )}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button\n type={isLastStep ? \"submit\" : \"button\"}\n onClick={handleNext}\n disabled={!canProceed || (isLastStep && processing)}\n >\n {isLastStep\n ? processing\n ? \"Processing...\"\n : \"Submit\"\n : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useMemo, useCallback } from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { FormBuildResult, BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\nimport { FormActions } from \"./form-actions\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { TabRenderer } from \"./tab-renderer\";\nimport { WizardRenderer } from \"./wizard-renderer\";\n\nexport interface FormRendererProps<TData extends Record<string, any>> {\n schema: FormBuildResult<TData>;\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onSubmit: () => void;\n processing?: boolean;\n className?: string;\n disabled?: boolean;\n onBlur?: (field: string) => void;\n}\n\nexport function FormRenderer<TData extends Record<string, any>>({\n schema,\n data,\n errors,\n onChange,\n onSubmit,\n processing = false,\n className,\n disabled = false,\n onBlur,\n}: FormRendererProps<TData>): ReactNode {\n const { fields, config } = schema;\n\n const resolvedTitle = useMemo(() => {\n if (typeof config.title === \"function\") return config.title(data);\n return config.title;\n }, [config.title, data]);\n\n const resolvedDescription = useMemo(() => {\n if (typeof config.description === \"function\")\n return config.description(data);\n return config.description;\n }, [config.description, data]);\n\n const isFieldVisible = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (typeof field.config.hidden === \"function\")\n return !field.config.hidden(data);\n if (typeof field.config.hidden === \"boolean\")\n return !field.config.hidden;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"show\" && !dep.condition(depValue, data))\n return false;\n if (dep.effect === \"hide\" && dep.condition(depValue, data))\n return false;\n }\n return true;\n },\n [data],\n );\n\n const isFieldDisabled = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (disabled) return true;\n if (typeof config.disabled === \"function\" && config.disabled(data))\n return true;\n if (typeof config.disabled === \"boolean\" && config.disabled) return true;\n if (typeof field.config.disabled === \"function\")\n return field.config.disabled(data);\n if (typeof field.config.disabled === \"boolean\")\n return field.config.disabled;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"disable\" && dep.condition(depValue, data))\n return true;\n if (\n dep.effect === \"enable\" &&\n !dep.condition(depValue, data)\n )\n return true;\n }\n return false;\n },\n [disabled, config.disabled, data],\n );\n\n const renderFieldsFlat = () => (\n <GridLayout columns={config.columns}>\n {fields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n );\n\n const renderContent = () => {\n // Wizard mode\n if (config.wizardSteps?.length) {\n return (\n <WizardRenderer\n steps={config.wizardSteps}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n onSubmit={onSubmit}\n processing={processing}\n />\n );\n }\n\n // Tabs mode\n if (config.tabs?.length) {\n return (\n <TabRenderer\n tabs={config.tabs}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n />\n );\n }\n\n // Sections mode\n if (config.sections?.length) {\n return (\n <div className=\"space-y-4\">\n {config.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n );\n }\n\n // Flat mode (default)\n return renderFieldsFlat();\n };\n\n const spacingClass = {\n compact: \"space-y-3\",\n normal: \"space-y-6\",\n relaxed: \"space-y-8\",\n }[config.spacing || \"normal\"];\n\n // Wizard handles its own submit button\n const showActions =\n config.actions?.length && !config.wizardSteps?.length;\n\n const formBody = (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n className={cn(spacingClass, className)}\n >\n {(resolvedTitle || resolvedDescription) && (\n <div className=\"space-y-1\">\n {resolvedTitle && (\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n {resolvedTitle}\n </h2>\n )}\n {resolvedDescription && (\n <p className=\"text-sm text-muted-foreground\">\n {resolvedDescription}\n </p>\n )}\n </div>\n )}\n\n {renderContent()}\n\n {showActions && (\n <FormActions\n actions={config.actions!}\n position={config.actionsPosition}\n data={data}\n processing={processing}\n />\n )}\n </form>\n );\n\n if (config.bordered) {\n return (\n <Card>\n <CardContent className=\"pt-6\">{formBody}</CardContent>\n </Card>\n );\n }\n\n return formBody;\n}\n"],"names":["_jsx","_jsxs","_Fragment","Select","Checkbox","ShadcnTextarea","ShadcnSelect","ShadcnCheckbox","ShadcnRadioGroup","Calendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/tablefy/data-table-header.tsx","../src/tablefy/data-table-empty.tsx","../src/tablefy/data-table-pagination.tsx","../src/builders/table-schema.ts","../src/builders/empty-state.ts","../src/tablefy/data-table.tsx","../src/tablefy/data-table-schema.tsx","../src/tablefy/avatar-list.tsx","../src/columns/base-column.ts","../src/columns/avatar-group-column.tsx","../src/columns/badge-column.tsx","../src/columns/button-column.tsx","../src/columns/checkbox-column.tsx","../src/columns/date-column.tsx","../src/columns/dropdown-column.tsx","../src/columns/icon-column.tsx","../src/columns/image-column.tsx","../src/columns/input-column.tsx","../src/columns/link-column.tsx","../src/columns/number-column.tsx","../src/columns/progress-column.tsx","../src/columns/select-column.tsx","../src/columns/text-column.tsx","../src/columns/actions-column.tsx","../src/columns/enum-column.tsx","../src/confirm/confirm.ts","../src/confirm/ConfirmProvider.tsx","../src/forms/builders/actions-builder.ts","../src/forms/builders/form-schema.ts","../src/forms/builders/section-builder.ts","../src/forms/builders/tab-builder.ts","../src/forms/builders/wizard-builder.ts","../src/forms/fields/base-field.ts","../src/forms/fields/text-input.tsx","../src/forms/fields/textarea.tsx","../src/forms/fields/select.tsx","../src/forms/fields/checkbox.tsx","../src/forms/fields/toggle.tsx","../src/forms/fields/radio-group.tsx","../src/forms/fields/date-picker.tsx","../src/forms/fields/hidden.tsx","../src/forms/fields/file-upload.tsx","../src/forms/fields/checkbox-group.tsx","../src/forms/fields/repeater.tsx","../src/forms/components/field-renderer.tsx","../src/forms/components/grid-layout.tsx","../src/forms/components/form-actions.tsx","../src/forms/components/section-renderer.tsx","../src/forms/components/tab-renderer.tsx","../src/forms/components/wizard-renderer.tsx","../src/forms/components/form-renderer.tsx"],"sourcesContent":["\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { ChevronDown, Search, X, Columns } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { HeaderAction, SearchConfig } from \"../types\";\n\ninterface DataTableHeaderProps<TData> {\n title?: string;\n description?: string;\n actions?: HeaderAction<TData>[];\n search?: SearchConfig;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n table?: TanstackTable<TData>;\n selectedCount?: number;\n enableColumnVisibility?: boolean;\n columnVisibilityLabel?: string;\n className?: string;\n}\n\nexport function DataTableHeader<TData>({\n title,\n description,\n actions = [],\n search,\n searchValue = \"\",\n onSearchChange,\n table,\n selectedCount = 0,\n enableColumnVisibility = false,\n columnVisibilityLabel = \"Spalten\",\n className,\n}: DataTableHeaderProps<TData>) {\n const normalActions = actions.filter((a) => !a.bulk && !a.hidden);\n const bulkActions = actions.filter((a) => a.bulk && !a.hidden);\n const showBulkActions = selectedCount > 0 && bulkActions.length > 0;\n\n const getSelectedRows = (): TData[] => {\n if (!table) return [];\n return table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n };\n\n const renderAction = (action: HeaderAction<TData>, index: number) => {\n // Custom render function takes priority\n if (action.render) {\n return <div key={action.id || index}>{action.render()}</div>;\n }\n\n if (action.children && action.children.length > 0) {\n return (\n <DropdownMenu key={action.id || index}>\n <DropdownMenuTrigger asChild>\n <Button\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n >\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {action.children.map((child, childIndex) => (\n <DropdownMenuItem\n key={child.id || childIndex}\n onClick={child.onClick}\n className={cn(\n child.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n >\n {child.icon && <span className=\"mr-2\">{child.icon}</span>}\n {child.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n if (action.href) {\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n asChild\n >\n <a href={action.href}>\n {action.icon}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={action.id || index}\n variant={action.variant || \"outline\"}\n size={action.size || \"default\"}\n disabled={action.disabled || action.loading}\n onClick={() => {\n if (action.bulk && action.bulkOnClick) {\n action.bulkOnClick(getSelectedRows());\n } else if (action.onClick) {\n action.onClick();\n }\n }}\n >\n {action.loading ? (\n <svg className=\"animate-spin h-4 w-4\" viewBox=\"0 0 24 24\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n action.icon\n )}\n {action.size !== \"icon\" && (\n <span className={cn(action.icon || action.loading ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n )}\n </Button>\n );\n };\n\n if (\n !title &&\n !description &&\n normalActions.length === 0 &&\n bulkActions.length === 0 &&\n !search?.enabled\n ) {\n return null;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {(search?.enabled || normalActions.length > 0 || showBulkActions) && (\n <div className=\"flex items-center justify-between gap-4 mb-4\">\n {search?.enabled && (\n <div className=\"relative max-w-sm flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={search.placeholder || \"Suchen...\"}\n value={searchValue}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onSearchChange?.(e.target.value)\n }\n className=\"pl-9 pr-9\"\n />\n {searchValue && (\n <button\n onClick={() => onSearchChange?.(\"\")}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showBulkActions && (\n <span className=\"text-sm text-muted-foreground\">\n {selectedCount} ausgewählt\n </span>\n )}\n {showBulkActions &&\n bulkActions.map((action, index) => renderAction(action, index))}\n\n {enableColumnVisibility && table && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"default\">\n <Columns className=\"h-4 w-4\" />\n <span className=\"ml-2\">{columnVisibilityLabel}</span>\n <ChevronDown className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{columnVisibilityLabel}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n const meta = column.columnDef.meta as any;\n const label = meta?.visibilityLabel || column.id;\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value: boolean) =>\n column.toggleVisibility(!!value)\n }\n >\n {label}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {normalActions.length > 0 &&\n normalActions.map((action, index) => renderAction(action, index))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { EmptyStateConfig } from \"../types\";\n\ninterface DataTableEmptyProps {\n config: EmptyStateConfig;\n colSpan: number;\n className?: string;\n}\n\nexport function DataTableEmpty({\n config,\n colSpan,\n className,\n}: DataTableEmptyProps) {\n const { icon, imageUrl, title, description, action, variant } = config;\n\n return (\n <tr>\n <td colSpan={colSpan} className={cn(\"h-[400px]\", className)}>\n <div className=\"flex h-full flex-col items-center justify-center gap-4 text-center p-8\">\n {imageUrl ? (\n <img className=\"w-24 h-24\" src={imageUrl} alt=\"Empty State\" />\n ) : icon ? (\n <div\n className={cn(\n \"rounded-full p-4\",\n variant === \"error\" ? \"bg-destructive/10\" : \"bg-muted\",\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"w-full flex flex-col items-center justify-center gap-2\">\n <h3 className=\"text-sm font-semibold text-foreground whitespace-normal break-words\">\n {title}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground font-normal whitespace-normal break-words leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n\n {action && (\n <Button\n variant={variant === \"error\" ? \"outline\" : \"default\"}\n onClick={action.onClick}\n asChild={!!action.href}\n className=\"mt-2\"\n >\n {action.href ? (\n <a href={action.href}>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </a>\n ) : (\n <>\n {action.icon}\n <span className={cn(action.icon ? \"ml-2\" : \"\")}>\n {action.label}\n </span>\n </>\n )}\n </Button>\n )}\n </div>\n </td>\n </tr>\n );\n}\n","\"use client\";\n\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { PaginationConfig } from \"../types\";\n\ninterface DataTablePaginationProps<TData> {\n table: TanstackTable<TData>;\n config?: PaginationConfig;\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n config,\n className,\n}: DataTablePaginationProps<TData>) {\n if (!config?.enabled) return null;\n\n const {\n showPageInfo = true,\n showPageSizeSelector = true,\n pageSizeOptions = [10, 20, 30, 50, 100],\n } = config;\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between\",\n className,\n )}\n >\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length > 0 ? (\n <span>\n {table.getFilteredSelectedRowModel().rows.length} von{\" \"}\n {table.getFilteredRowModel().rows.length} Zeile(n) ausgewählt\n </span>\n ) : showPageInfo ? (\n <span>{table.getFilteredRowModel().rows.length} Einträge</span>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:gap-6\">\n {showPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Zeilen pro Seite\n </span>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value: string) =>\n table.setPageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {showPageInfo && (\n <div className=\"text-sm text-muted-foreground whitespace-nowrap\">\n Seite{\" \"}\n {table.getPageCount() > 0\n ? table.getState().pagination.pageIndex + 1\n : 0}{\" \"}\n von {Math.max(table.getPageCount(), 0)}\n </div>\n )}\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Erste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Vorherige Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Nächste Seite</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Letzte Seite</span>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableConfig } from \"../types/table\";\nimport { HeaderAction } from \"../types/actions\";\nimport { EmptyStateConfig } from \"../types/empty-state\";\nimport { SearchConfig } from \"../types/filters\";\nimport React from \"react\";\n\ntype ColumnBuilder<TData> = { build(): ColumnDef<TData, unknown> };\n\n/**\n * Table Schema Builder\n * Fluent API for building complete table configurations\n */\nexport class TableSchema<TData> {\n private columnBuilders: ColumnBuilder<TData>[] = [];\n private config: Partial<DataTableConfig<TData>> = {};\n\n static make<TData>(): TableSchema<TData> {\n return new TableSchema();\n }\n\n // Configuration Methods\n description(text: string): this {\n this.config.description = text;\n return this;\n }\n\n title(text: string): this {\n this.config.title = text;\n return this;\n }\n\n headerActions(actions: HeaderAction<TData>[]): this {\n this.config.headerActions = actions;\n return this;\n }\n\n emptyState(config: EmptyStateConfig): this {\n this.config.emptyState = config;\n return this;\n }\n\n searchEmptyState(config: EmptyStateConfig): this {\n this.config.searchEmptyState = config;\n return this;\n }\n\n filterEmptyState(config: EmptyStateConfig): this {\n this.config.filterEmptyState = config;\n return this;\n }\n\n // Feature Methods\n searchable(config?: { placeholder?: string } | boolean): this {\n if (typeof config === \"boolean\") {\n this.config.search = config ? { enabled: true } : { enabled: false };\n } else {\n this.config.search = {\n enabled: true,\n placeholder: config?.placeholder,\n };\n }\n return this;\n }\n\n paginated(\n config?: { pageSize?: number; pageSizeOptions?: number[] } | boolean,\n ): this {\n if (typeof config === \"boolean\") {\n this.config.pagination = { enabled: config };\n } else {\n this.config.pagination = {\n enabled: true,\n pageSize: config?.pageSize,\n pageSizeOptions: config?.pageSizeOptions,\n };\n }\n return this;\n }\n\n selectable(multiSelect: boolean = true): this {\n this.config.enableRowSelection = true;\n this.config.enableMultiRowSelection = multiSelect;\n return this;\n }\n\n sortable(defaultSort?: { id: string; desc: boolean }): this {\n this.config.enableSorting = true;\n if (defaultSort) {\n this.config.defaultSort = defaultSort;\n }\n return this;\n }\n\n columnVisibility(enabled: boolean = true): this {\n this.config.enableColumnVisibility = enabled;\n return this;\n }\n\n // Styling Methods\n bordered(enabled: boolean = true): this {\n this.config.bordered = enabled;\n return this;\n }\n\n striped(enabled: boolean = true): this {\n this.config.striped = enabled;\n return this;\n }\n\n hoverable(enabled: boolean = true): this {\n this.config.hoverable = enabled;\n return this;\n }\n\n density(density: \"compact\" | \"default\" | \"comfortable\"): this {\n this.config.density = density;\n return this;\n }\n\n // Columns\n columns(...builders: ColumnBuilder<TData>[]): this {\n this.columnBuilders.push(...builders);\n return this;\n }\n\n // Build\n build(): {\n columns: ColumnDef<TData, unknown>[];\n config: DataTableConfig<TData>;\n } {\n return {\n columns: this.columnBuilders.map((builder) => builder.build()),\n config: this.config as DataTableConfig<TData>,\n };\n }\n}\n","import { EmptyStateConfig } from \"../types/empty-state\";\nimport React from \"react\";\n\n/**\n * Empty State Builder\n * Fluent API for building empty state configurations\n */\nexport class EmptyStateBuilder {\n private config: EmptyStateConfig = {\n title: \"No data\",\n variant: \"default\",\n };\n\n static make(): EmptyStateBuilder {\n return new EmptyStateBuilder();\n }\n\n title(title: string): this {\n this.config.title = title;\n return this;\n }\n\n description(description: string): this {\n this.config.description = description;\n return this;\n }\n\n icon(icon: React.ReactNode): this {\n this.config.icon = icon;\n return this;\n }\n\n imageUrl(imageUrl: string): this {\n this.config.imageUrl = imageUrl;\n return this;\n }\n\n action(\n label: string,\n onClick?: () => void,\n href?: string,\n icon?: React.ReactNode,\n ): this {\n this.config.action = { label, onClick, href, icon };\n return this;\n }\n\n variant(variant: \"default\" | \"search\" | \"filter\" | \"error\" | \"custom\"): this {\n this.config.variant = variant;\n return this;\n }\n\n error(params: { onRetry?: () => void } = {}): this {\n this.config.variant = \"error\";\n this.config.title = \"Error\";\n this.config.description = \"Something went wrong. Please try again.\";\n if (params.onRetry) {\n this.config.action = { label: \"Retry\", onClick: params.onRetry };\n }\n return this;\n }\n\n noSearchResults(params: { onClear?: () => void } = {}): this {\n this.config.variant = \"search\";\n this.config.title = \"No results found\";\n this.config.description = \"Try adjusting your search terms.\";\n if (params.onClear) {\n this.config.action = { label: \"Clear search\", onClick: params.onClear };\n }\n return this;\n }\n\n noFilterResults(params: { onReset?: () => void } = {}): this {\n this.config.variant = \"filter\";\n this.config.title = \"No results match your filters\";\n this.config.description = \"Try adjusting or clearing your filters.\";\n if (params.onReset) {\n this.config.action = { label: \"Reset filters\", onClick: params.onReset };\n }\n return this;\n }\n\n noData(): this {\n this.config.variant = \"default\";\n this.config.title = \"No data\";\n this.config.description = \"There is no data to display.\";\n return this;\n }\n\n build(): EmptyStateConfig {\n return this.config;\n }\n\n // Static helper methods for quick configuration\n static noData(config: {\n title: string;\n description: string;\n createLabel?: string;\n createHref?: string;\n createOnClick?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"default\",\n title: config.title,\n description: config.description,\n action: config.createLabel\n ? {\n label: config.createLabel,\n href: config.createHref,\n onClick: config.createOnClick,\n }\n : undefined,\n };\n }\n\n static noSearchResults(config: {\n title: string;\n description: string;\n clearLabel?: string;\n onClear?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"search\",\n title: config.title,\n description: config.description,\n action: config.clearLabel\n ? {\n label: config.clearLabel,\n onClick: config.onClear,\n }\n : undefined,\n };\n }\n\n static noFilterResults(config: {\n title: string;\n description: string;\n resetLabel?: string;\n onReset?: () => void;\n }): EmptyStateConfig {\n return {\n variant: \"filter\",\n title: config.title,\n description: config.description,\n action: config.resetLabel\n ? {\n label: config.resetLabel,\n onClick: config.onReset,\n }\n : undefined,\n };\n }\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\n// shadcn components - installed by user via `npx shadcn add table`\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\nimport { DataTableConfig } from \"../types\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableEmpty } from \"./data-table-empty\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { EmptyStateBuilder } from \"../builders\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n config?: DataTableConfig<TData>;\n className?: string;\n isLoading?: boolean;\n isError?: boolean;\n onRetry?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n config = {},\n className,\n isLoading = false,\n isError = false,\n onRetry,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>(\n config.defaultSort ? [config.defaultSort] : [],\n );\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n // Initialize column visibility based on visibleByDefault\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n () => {\n const initialVisibility: VisibilityState = {};\n columns.forEach((column: any) => {\n if (column.meta?.visibleByDefault === false) {\n initialVisibility[column.accessorKey || column.id] = false;\n }\n });\n return initialVisibility;\n },\n );\n\n const [rowSelection, setRowSelection] = useState({});\n const [globalFilter, setGlobalFilter] = useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n globalFilter,\n },\n enableRowSelection: config.enableRowSelection ?? false,\n enableMultiRowSelection:\n config.enableMultiRowSelection ?? config.enableRowSelection ?? false,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: config.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: config.pagination?.enabled\n ? getPaginationRowModel()\n : undefined,\n });\n\n const getEmptyState = () => {\n if (isError) {\n return (\n config.emptyState || EmptyStateBuilder.make().error({ onRetry }).build()\n );\n }\n\n if (globalFilter && data.length > 0) {\n return (\n config.searchEmptyState ||\n EmptyStateBuilder.make().noSearchResults({}).build()\n );\n }\n\n if (columnFilters.length > 0 && data.length > 0) {\n return (\n config.filterEmptyState ||\n EmptyStateBuilder.make().noFilterResults({}).build()\n );\n }\n\n return config.emptyState || EmptyStateBuilder.make().noData().build();\n };\n\n const densityClasses = {\n compact: \"[&_td]:py-1 [&_th]:py-1\",\n default: \"[&_td]:py-3 [&_th]:py-3\",\n comfortable: \"[&_td]:py-4 [&_th]:py-4\",\n };\n\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n const hasRows = table.getRowModel().rows?.length > 0;\n\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <DataTableHeader\n title={config.title}\n description={config.description}\n actions={config.headerActions}\n search={config.search}\n searchValue={globalFilter}\n onSearchChange={setGlobalFilter}\n table={table}\n selectedCount={selectedCount}\n enableColumnVisibility={config.enableColumnVisibility}\n columnVisibilityLabel={config.columnVisibilityLabel}\n />\n\n <div\n className={cn(\n \"overflow-hidden\",\n config.bordered !== false && \"rounded-md border\",\n )}\n >\n <Table\n className={cn(\n densityClasses[config.density || \"default\"],\n config.striped ? \"[&_tr:nth-child(even)]:bg-muted/50\" : \"\",\n config.hoverable !== false && \"[&_tr:hover]:bg-muted/50\",\n )}\n >\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {isLoading ? (\n <tr>\n <td colSpan={columns.length} className=\"h-[400px]\">\n <div className=\"flex h-full items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4\">\n <svg\n className=\"animate-spin h-8 w-8 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"text-sm text-muted-foreground\">\n Laden...\n </span>\n </div>\n </div>\n </td>\n </tr>\n ) : hasRows ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <DataTableEmpty\n config={getEmptyState()}\n colSpan={columns.length}\n />\n )}\n </TableBody>\n </Table>\n </div>\n\n {config.pagination?.enabled && hasRows && (\n <DataTablePagination table={table} config={config.pagination} />\n )}\n </div>\n );\n}\n","\"use client\";\n\ninterface DataTableSchemaProps {\n schema?: Record<string, unknown>;\n}\n\nexport const DataTableSchema = () => {\n return (\n <div className=\"data-table-schema\">\n <p>TableSchema Placeholder</p>\n </div>\n );\n};\n","import React from \"react\";\n\ninterface AvatarItem {\n id: string;\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ninterface AvatarListProps {\n items: AvatarItem[];\n maxVisible?: number;\n size?: number | string;\n [key: string]: any;\n}\n\nexport const AvatarList: React.FC<AvatarListProps> = ({\n items,\n maxVisible = 5,\n size = 32,\n ...props\n}) => {\n const sizeValue = typeof size === \"string\" ? parseInt(size, 10) || 32 : size;\n\n return (\n <div\n className=\"avatar-list\"\n style={{ \"--avatar-size\": `${sizeValue}px` } as React.CSSProperties}\n {...props}\n >\n {items.slice(0, maxVisible).map((item) => (\n <div key={item.id} className=\"avatar-item\">\n {item.src ? (\n <img\n src={item.src}\n alt={item.alt || \"Avatar\"}\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n />\n ) : (\n <div\n className=\"avatar-initials\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n {item.initials || \"?\"}\n </div>\n )}\n </div>\n ))}\n {items.length > maxVisible && (\n <div\n className=\"avatar-count\"\n style={{ width: `${sizeValue}px`, height: `${sizeValue}px` }}\n >\n +{items.length - maxVisible}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarList;\n","import { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport abstract class BaseColumn<\n TData,\n TConfig extends BaseColumnConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(accessor: keyof TData | string) {\n this.config = {\n accessor,\n sortable: false,\n searchable: false,\n hidden: false,\n align: \"left\",\n } as TConfig;\n }\n\n // Fluent API Methods\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n sortable(sortable = true): this {\n this.config.sortable = sortable;\n return this;\n }\n\n searchable(searchable = true): this {\n this.config.searchable = searchable;\n return this;\n }\n\n hidden(hidden = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n visibleByDefault(visible = true): this {\n this.config.visibleByDefault = visible;\n return this;\n }\n\n visibilityLabel(label: string): this {\n this.config.visibilityLabel = label;\n return this;\n }\n\n alignLeft(): this {\n this.config.align = \"left\";\n return this;\n }\n\n alignCenter(): this {\n this.config.align = \"center\";\n return this;\n }\n\n alignRight(): this {\n this.config.align = \"right\";\n return this;\n }\n\n width(width: string | number): this {\n this.config.width = width;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n headerClassName(className: string): this {\n this.config.headerClassName = className;\n return this;\n }\n\n cellClassName(className: string): this {\n this.config.cellClassName = className;\n return this;\n }\n\n // Abstract method - jede Column-Art implementiert das selbst\n abstract build(): ColumnDef<TData, unknown>;\n\n // Hilfsfunktion für Alignment-Klassen\n protected getAlignmentClass(): string {\n const baseClasses = \"text-sm text-muted-foreground\";\n switch (this.config.align) {\n case \"center\":\n return `${baseClasses} text-center`;\n case \"right\":\n return `${baseClasses} text-right`;\n default:\n return `${baseClasses} text-left`;\n }\n }\n}\n","import AvatarList from \"../tablefy/avatar-list\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface AvatarItem {\n src?: string;\n name: string;\n fallback?: string;\n}\n\ninterface AvatarGroupColumnConfig<TData> extends BaseColumnConfig<TData> {\n maxVisible?: number;\n size?: number;\n overlap?: \"none\" | \"sm\" | \"md\" | \"lg\";\n showTooltip?: boolean;\n nameField?: keyof TData | ((row: TData) => AvatarItem[]);\n srcField?: string;\n fallbackField?: string;\n showNames?: boolean;\n maxNames?: number;\n}\n\nexport class AvatarGroupColumn<TData> extends BaseColumn<\n TData,\n AvatarGroupColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.maxVisible = 4;\n config.size = 40;\n config.overlap = \"md\";\n config.showTooltip = true;\n config.showNames = false;\n config.maxNames = 2;\n }\n\n static make<TData>(accessor: keyof TData | string): AvatarGroupColumn<TData> {\n return new AvatarGroupColumn(accessor);\n }\n\n // Maximale Anzahl sichtbarer Avatare\n maxVisible(max: number): this {\n (this.config as AvatarGroupColumnConfig<TData>).maxVisible = max;\n return this;\n }\n\n // Größe der Avatare\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n const sizeMap = { xs: 24, sm: 32, md: 40, lg: 48 };\n (this.config as AvatarGroupColumnConfig<TData>).size = sizeMap[size];\n return this;\n }\n\n // Überlappung\n overlap(overlap: \"none\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as AvatarGroupColumnConfig<TData>).overlap = overlap;\n return this;\n }\n\n // Keine Überlappung\n noOverlap(): this {\n return this.overlap(\"none\");\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as AvatarGroupColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Felder für Avatar-Daten definieren (wenn Array von Objekten)\n fields(config: { src?: string; name: string; fallback?: string }): this {\n const c = this.config as AvatarGroupColumnConfig<TData>;\n c.srcField = config.src;\n c.nameField = config.name as keyof TData;\n c.fallbackField = config.fallback;\n return this;\n }\n\n // Custom Mapper für komplexe Datenstrukturen\n mapItems(fn: (row: TData) => AvatarItem[]): this {\n (this.config as AvatarGroupColumnConfig<TData>).nameField = fn;\n return this;\n }\n\n // Namen neben Avataren anzeigen\n showNames(show = true, max = 2): this {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n config.showNames = show;\n config.maxNames = max;\n return this;\n }\n\n // Konvertiere AvatarItem zu Datenstruktur für AvatarList\n private toContactItems(\n items: AvatarItem[],\n ): { id: string; src: string; alt: string; initials: string }[] {\n return items.map((item) => ({\n id: item.name,\n src: item.src || \"\",\n alt: item.name,\n initials: item.fallback || \"\",\n }));\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as AvatarGroupColumnConfig<TData>;\n const {\n accessor,\n label,\n maxVisible,\n size,\n overlap,\n showTooltip,\n nameField,\n srcField,\n fallbackField,\n showNames,\n maxNames,\n } = config;\n\n const sizeClasses = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n };\n\n const overlapClasses = {\n none: \"\",\n sm: \"-ml-1\",\n md: \"-ml-2\",\n lg: \"-ml-3\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {label || String(accessor)}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const rawValue = getValue();\n\n // Items aus den Daten extrahieren\n let items: AvatarItem[] = [];\n\n if (typeof nameField === \"function\") {\n // Custom Mapper\n items = nameField(row.original);\n } else if (Array.isArray(rawValue)) {\n // Array von Objekten oder Strings\n items = rawValue.map((item: unknown) => {\n if (typeof item === \"string\") {\n return { name: item };\n }\n if (typeof item === \"object\" && item !== null) {\n const obj = item as Record<string, unknown>;\n return {\n name: String(obj[nameField as string] || obj[\"name\"] || \"\"),\n src: srcField ? String(obj[srcField] || \"\") : undefined,\n fallback: fallbackField\n ? String(obj[fallbackField] || \"\")\n : undefined,\n };\n }\n return { name: String(item) };\n });\n }\n\n if (items.length === 0) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Konvertiere zu Datenstruktur für AvatarList\n const contacts = this.toContactItems(items);\n\n return (\n <div className={cn(\"flex items-center\", this.config.cellClassName)}>\n <AvatarList\n items={contacts.map((contact) => ({\n id: contact.id,\n src: contact.src,\n alt: contact.alt,\n initials: contact.initials,\n }))}\n size={Number(size || \"md\")}\n limit={maxVisible || 4}\n />\n </div>\n );\n },\n };\n }\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BadgeColumnConfig } from \"./types\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted\";\n\ninterface VariantConfig {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n}\n\nexport class BadgeColumn<TData> extends BaseColumn<\n TData,\n BadgeColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): BadgeColumn<TData> {\n return new BadgeColumn(accessor);\n }\n\n // Varianten definieren\n variants(variants: Record<string, VariantConfig>): this {\n this.config.variants = variants;\n return this;\n }\n\n // Shortcut für Boolean-Felder\n boolean(trueLabel = \"Ja\", falseLabel = \"Nein\"): this {\n this.config.variants = {\n true: { label: trueLabel, variant: \"default\", className: \"bg-green-500\" },\n false: { label: falseLabel, variant: \"secondary\" },\n };\n return this;\n }\n\n // Shortcut für Status-Felder\n status(statuses: Record<string, { label: string; color: string }>): this {\n const variants: Record<string, VariantConfig> = {};\n for (const [key, config] of Object.entries(statuses)) {\n variants[key] = {\n label: config.label,\n variant: \"outline\",\n className: config.color,\n };\n }\n this.config.variants = variants;\n return this;\n }\n\n // Dynamische Variante basierend auf Row-Daten\n variantFn(\n fn: (\n value: unknown,\n row: TData,\n ) => {\n label?: string;\n variant?: BadgeVariant;\n className?: string;\n icon?: ReactNode;\n },\n ): this {\n this.config.variantFn = fn;\n return this;\n }\n\n // Dynamische className basierend auf Row-Daten\n classNameFn(fn: (value: unknown, row: TData) => string): this {\n this.config.classNameFn = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { accessor, label, sortable, variants, variantFn, classNameFn } =\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: ({ getValue, row }) => {\n const value = getValue();\n const stringValue = String(value);\n\n // Priority 1: Dynamic variantFn (highest priority)\n if (variantFn) {\n const dynamicConfig = variantFn(value, row.original);\n return (\n <Badge\n variant={\n dynamicConfig.variant === \"success\" ||\n dynamicConfig.variant === \"warning\" ||\n dynamicConfig.variant === \"info\" ||\n dynamicConfig.variant === \"muted\"\n ? \"default\"\n : dynamicConfig.variant || \"default\"\n }\n className={cn(\n dynamicConfig.className,\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {dynamicConfig.icon}\n {dynamicConfig.label || stringValue}\n </Badge>\n );\n }\n\n // Priority 2: Static variants lookup\n const variantConfig = variants?.[stringValue];\n if (variantConfig) {\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(\n variantConfig.className,\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {variantConfig.icon}\n {variantConfig.label || stringValue}\n </Badge>\n );\n }\n\n // Priority 3: Default badge with optional dynamic className\n return (\n <Badge\n variant=\"outline\"\n className={cn(\n classNameFn?.(value, row.original),\n this.config.cellClassName,\n )}\n >\n {stringValue}\n </Badge>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface ButtonColumnConfig {\n accessorKey?: string;\n header?: string;\n label?: string;\n onClick?: (data: any) => void;\n}\n\nexport const ButtonColumn = (config: ButtonColumnConfig) => {\n const accessorKey = config.accessorKey || \"button\";\n return {\n accessorKey,\n header: config.header || \"Button\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <Button onClick={() => config.onClick && config.onClick(row.original)}>\n {value || config.label || \"Click\"}\n </Button>\n );\n },\n };\n};\n\nexport { ButtonColumn as buttonColumn };\n\n","import { Checkbox } from \"@/components/ui/checkbox\";\nimport { ColumnDef } from \"@tanstack/react-table\";\n\nexport class CheckboxColumn<TData> {\n static make<TData>(): CheckboxColumn<TData> {\n return new CheckboxColumn();\n }\n\n build(): ColumnDef<TData, unknown> {\n return {\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Alle auswählen\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Zeile auswählen\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, Calendar } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface DateColumnConfig<TData> extends BaseColumnConfig<TData> {\n format?: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\" | string;\n locale?: string;\n showIcon?: boolean;\n}\n\nexport class DateColumn<TData> extends BaseColumn<\n TData,\n DateColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as DateColumnConfig<TData>).format = \"short\";\n (this.config as DateColumnConfig<TData>).locale = \"de-DE\";\n (this.config as DateColumnConfig<TData>).showIcon = false;\n }\n\n static make<TData>(accessor: keyof TData | string): DateColumn<TData> {\n return new DateColumn(accessor);\n }\n\n format(format: \"short\" | \"long\" | \"relative\" | \"time\" | \"datetime\"): this {\n (this.config as DateColumnConfig<TData>).format = format;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as DateColumnConfig<TData>).locale = locale;\n return this;\n }\n\n withIcon(show = true): this {\n (this.config as DateColumnConfig<TData>).showIcon = show;\n return this;\n }\n\n // Shortcuts\n short(): this {\n return this.format(\"short\");\n }\n long(): this {\n return this.format(\"long\");\n }\n relative(): this {\n return this.format(\"relative\");\n }\n time(): this {\n return this.format(\"time\");\n }\n datetime(): this {\n return this.format(\"datetime\");\n }\n\n private formatDate(date: Date, format: string, locale: string): string {\n if (format === \"relative\") {\n return this.getRelativeTime(date);\n }\n\n const formatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: \"2-digit\", month: \"2-digit\", year: \"numeric\" },\n long: { day: \"numeric\", month: \"long\", year: \"numeric\" },\n time: { hour: \"2-digit\", minute: \"2-digit\" },\n datetime: {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n };\n\n const options = formatOptions[format] || {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n };\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n\n private getRelativeTime(date: Date): string {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n const intervals = [\n { label: \"Jahr\", seconds: 31536000 },\n { label: \"Monat\", seconds: 2592000 },\n { label: \"Woche\", seconds: 604800 },\n { label: \"Tag\", seconds: 86400 },\n { label: \"Stunde\", seconds: 3600 },\n { label: \"Minute\", seconds: 60 },\n ];\n\n for (const interval of intervals) {\n const count = Math.floor(diffInSeconds / interval.seconds);\n if (count >= 1) {\n const plural =\n count > 1 ? (interval.label === \"Monat\" ? \"e\" : \"en\") : \"\";\n return `vor ${count} ${interval.label}${plural}`;\n }\n }\n\n return \"gerade eben\";\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as DateColumnConfig<TData>;\n const { accessor, label, sortable, format, locale, showIcon } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const date = value instanceof Date ? value : new Date(value as string);\n\n if (isNaN(date.getTime())) {\n return (\n <span className=\"text-muted-foreground\">Ungültiges Datum</span>\n );\n }\n\n const formatted = this.formatDate(\n date,\n format || \"short\",\n locale || \"de-DE\",\n );\n\n return (\n <span\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {showIcon && <Calendar className=\"text-muted-foreground h-4 w-4\" />}\n {formatted}\n </span>\n );\n },\n };\n }\n}\n","\"use client\";\nimport React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface DropdownOption {\n label: string;\n onClick?: (data: any) => void;\n}\n\ninterface DropdownColumnConfig {\n accessorKey?: string;\n header?: string;\n options: DropdownOption[];\n}\n\nexport const DropdownColumn = (config: DropdownColumnConfig) => {\n const accessorKey = config.accessorKey || \"dropdown\";\n return {\n accessorKey,\n header: config.header || \"Options\",\n cell: ({ row }: { row: any }) => {\n const value = row.getValue(accessorKey);\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">{value || \"Options\"}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {config.options.map((option: DropdownOption, index: number) => (\n <DropdownMenuItem\n key={index}\n onClick={() => option.onClick && option.onClick(row.original)}\n >\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n};\n\nexport { DropdownColumn as dropdownColumn };\n\n","import { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface IconState {\n icon: ReactNode | LucideIcon;\n label?: string;\n color?: string;\n bgColor?: string;\n tooltip?: string;\n}\n\ninterface IconColumnConfig<TData> extends BaseColumnConfig<TData> {\n states?: Record<string, IconState>;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n showTooltip?: boolean;\n withBackground?: boolean;\n defaultIcon?: ReactNode;\n defaultLabel?: string;\n}\n\nexport class IconColumn<TData> extends BaseColumn<\n TData,\n IconColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as IconColumnConfig<TData>;\n config.states = {};\n config.size = \"md\";\n config.showLabel = false;\n config.showTooltip = true;\n config.withBackground = false;\n config.align = \"center\";\n }\n\n static make<TData>(accessor: keyof TData | string): IconColumn<TData> {\n return new IconColumn(accessor);\n }\n\n // Einzelnen State definieren\n state(value: string, config: IconState): this {\n const c = this.config as IconColumnConfig<TData>;\n if (!c.states) c.states = {};\n c.states[value] = config;\n return this;\n }\n\n // Mehrere States auf einmal\n states(states: Record<string, IconState>): this {\n (this.config as IconColumnConfig<TData>).states = states;\n return this;\n }\n\n // Größe\n size(size: \"xs\" | \"sm\" | \"md\" | \"lg\"): this {\n (this.config as IconColumnConfig<TData>).size = size;\n return this;\n }\n\n // Label neben Icon anzeigen\n showLabel(show = true): this {\n (this.config as IconColumnConfig<TData>).showLabel = show;\n return this;\n }\n\n // Tooltip deaktivieren\n hideTooltip(): this {\n (this.config as IconColumnConfig<TData>).showTooltip = false;\n return this;\n }\n\n // Hintergrund anzeigen (runder Badge)\n withBackground(show = true): this {\n (this.config as IconColumnConfig<TData>).withBackground = show;\n return this;\n }\n\n // Default für unbekannte Werte\n default(icon: ReactNode, label?: string): this {\n const config = this.config as IconColumnConfig<TData>;\n config.defaultIcon = icon;\n config.defaultLabel = label;\n return this;\n }\n\n // === PRESET STATES ===\n\n // Boolean State (true/false)\n boolean(config?: {\n trueIcon?: ReactNode;\n falseIcon?: ReactNode;\n trueLabel?: string;\n falseLabel?: string;\n trueColor?: string;\n falseColor?: string;\n trueBgColor?: string;\n falseBgColor?: string;\n }): this {\n const c = this.config as IconColumnConfig<TData>;\n c.states = {\n true: {\n icon: config?.trueIcon || this.createCheckIcon(),\n label: config?.trueLabel || \"Ja\",\n color: config?.trueColor || \"text-green-500\",\n bgColor: config?.trueBgColor,\n },\n false: {\n icon: config?.falseIcon || this.createXIcon(),\n label: config?.falseLabel || \"Nein\",\n color: config?.falseColor || \"text-red-500\",\n bgColor: config?.falseBgColor,\n },\n };\n return this;\n }\n\n // Active/Inactive State\n activeInactive(): this {\n return this.states({\n active: {\n icon: this.createCircleIcon(),\n label: \"Aktiv\",\n color: \"text-green-500\",\n tooltip: \"Status: Aktiv\",\n },\n inactive: {\n icon: this.createCircleIcon(),\n label: \"Inaktiv\",\n color: \"text-gray-400\",\n tooltip: \"Status: Inaktiv\",\n },\n });\n }\n\n // Online/Offline/Away Status\n onlineStatus(): this {\n return this.states({\n online: {\n icon: this.createCircleIcon(),\n label: \"Online\",\n color: \"text-green-500\",\n bgColor: \"bg-green-500\",\n },\n offline: {\n icon: this.createCircleIcon(),\n label: \"Offline\",\n color: \"text-gray-400\",\n bgColor: \"bg-gray-400\",\n },\n away: {\n icon: this.createCircleIcon(),\n label: \"Abwesend\",\n color: \"text-yellow-500\",\n bgColor: \"bg-yellow-500\",\n },\n busy: {\n icon: this.createCircleIcon(),\n label: \"Beschäftigt\",\n color: \"text-red-500\",\n bgColor: \"bg-red-500\",\n },\n });\n }\n\n // Priority Icons\n priority(): this {\n return this.states({\n low: {\n icon: this.createArrowDownIcon(),\n label: \"Niedrig\",\n color: \"text-blue-500\",\n },\n medium: {\n icon: this.createMinusIcon(),\n label: \"Mittel\",\n color: \"text-yellow-500\",\n },\n high: {\n icon: this.createArrowUpIcon(),\n label: \"Hoch\",\n color: \"text-orange-500\",\n },\n critical: {\n icon: this.createAlertIcon(),\n label: \"Kritisch\",\n color: \"text-red-500\",\n },\n });\n }\n\n // Verification Status\n verification(): this {\n return this.states({\n verified: {\n icon: this.createShieldCheckIcon(),\n label: \"Verifiziert\",\n color: \"text-green-500\",\n },\n pending: {\n icon: this.createClockIcon(),\n label: \"Ausstehend\",\n color: \"text-yellow-500\",\n },\n rejected: {\n icon: this.createShieldXIcon(),\n label: \"Abgelehnt\",\n color: \"text-red-500\",\n },\n });\n }\n\n // === ICON HELPERS (inline SVGs um Lucide-Abhängigkeit zu vermeiden) ===\n\n private createCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n\n private createXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n\n private createCircleIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n );\n }\n\n private createArrowUpIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\" />\n <polyline points=\"5 12 12 5 19 12\" />\n </svg>\n );\n }\n\n private createArrowDownIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <polyline points=\"19 12 12 19 5 12\" />\n </svg>\n );\n }\n\n private createMinusIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n }\n\n private createAlertIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n }\n\n private createShieldCheckIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </svg>\n );\n }\n\n private createShieldXIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n </svg>\n );\n }\n\n private createClockIcon(): ReactNode {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-full w-full\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as IconColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n states,\n size,\n showLabel,\n showTooltip,\n withBackground,\n defaultIcon,\n defaultLabel,\n } = config;\n\n const sizeClasses = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const bgSizeClasses = {\n xs: \"h-5 w-5\",\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n const iconInBgSizeClasses = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = String(getValue());\n const stateConfig = states?.[value];\n\n // Default verwenden wenn State nicht gefunden\n const icon = stateConfig?.icon || defaultIcon;\n const stateLabel = stateConfig?.label || defaultLabel || value;\n const color = stateConfig?.color || \"text-muted-foreground\";\n const bgColor = stateConfig?.bgColor;\n const tooltip = stateConfig?.tooltip || stateLabel;\n\n if (!icon) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // Icon als Element rendern (falls LucideIcon übergeben wurde)\n const IconElement =\n typeof icon === \"function\" ? (icon as LucideIcon) : null;\n const renderedIcon = IconElement ? (\n <IconElement className=\"h-full w-full\" />\n ) : (\n (icon as ReactNode)\n );\n\n const iconElement = (\n <div\n className={cn(\n \"flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {withBackground ? (\n <div\n className={cn(\n \"inline-flex items-center justify-center rounded-md\",\n bgSizeClasses[size || \"md\"],\n bgColor || \"bg-blue-50\",\n )}\n >\n <div className={cn(iconInBgSizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n </div>\n ) : (\n <div className={cn(sizeClasses[size || \"md\"], color)}>\n {renderedIcon}\n </div>\n )}\n\n {showLabel && (\n <span className={cn(\"text-sm\", color)}>{stateLabel}</span>\n )}\n </div>\n );\n\n if (showTooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n },\n };\n }\n}\n","import { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ImageColumnConfig<TData> extends BaseColumnConfig<TData> {\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n fallback?: string;\n alt?: (row: TData) => string;\n}\n\nexport class ImageColumn<TData> extends BaseColumn<\n TData,\n ImageColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n (this.config as ImageColumnConfig<TData>).size = \"md\";\n (this.config as ImageColumnConfig<TData>).rounded = \"md\";\n }\n\n static make<TData>(accessor: keyof TData | string): ImageColumn<TData> {\n return new ImageColumn(accessor);\n }\n\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ImageColumnConfig<TData>).size = size;\n return this;\n }\n\n rounded(rounded: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"): this {\n (this.config as ImageColumnConfig<TData>).rounded = rounded;\n return this;\n }\n\n circular(): this {\n return this.rounded(\"full\");\n }\n\n square(): this {\n return this.rounded(\"none\");\n }\n\n fallback(url: string): this {\n (this.config as ImageColumnConfig<TData>).fallback = url;\n return this;\n }\n\n alt(fn: (row: TData) => string): this {\n (this.config as ImageColumnConfig<TData>).alt = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ImageColumnConfig<TData>;\n const { accessor, label, size, rounded, fallback, alt } = config;\n\n const sizeClasses = {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n };\n\n const roundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return {\n accessorKey: accessor as string,\n header: () => (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.config.headerClassName,\n )}\n >\n {label || \"\"}\n </span>\n ),\n cell: ({ getValue, row }) => {\n const src = getValue() as string;\n const altText = alt ? alt(row.original) : \"Bild\";\n\n return (\n <img\n src={src || fallback || \"/placeholder.png\"}\n alt={altText}\n className={cn(\n \"object-cover\",\n sizeClasses[size || \"md\"],\n roundedClasses[rounded || \"md\"],\n this.config.cellClassName,\n )}\n onError={(e) => {\n if (fallback) {\n (e.target as HTMLImageElement).src = fallback;\n }\n }}\n />\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface InputColumnConfig<TData> extends BaseColumnConfig<TData> {\n placeholder?: string;\n type?: \"text\" | \"email\" | \"number\" | \"password\" | \"url\";\n disabled?: boolean | ((row: TData) => boolean);\n onSave?: (row: TData, newValue: string) => void;\n onChange?: (row: TData, newValue: string) => void;\n debounce?: number;\n}\n\nexport class InputColumn<TData> extends BaseColumn<\n TData,\n InputColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as InputColumnConfig<TData>;\n config.type = \"text\";\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): InputColumn<TData> {\n return new InputColumn(accessor);\n }\n\n placeholder(placeholder: string): this {\n (this.config as InputColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n type(type: \"text\" | \"email\" | \"number\" | \"password\" | \"url\"): this {\n (this.config as InputColumnConfig<TData>).type = type;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as InputColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onSave(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onSave = handler;\n return this;\n }\n\n onChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as InputColumnConfig<TData>).onChange = handler;\n return this;\n }\n\n debounce(ms: number): this {\n (this.config as InputColumnConfig<TData>).debounce = ms;\n return this;\n }\n\n // Shortcuts\n email(): this {\n return this.type(\"email\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as InputColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n placeholder,\n type,\n disabled,\n onSave,\n onChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalValue(newValue);\n if (onChange) {\n onChange(row.original, newValue);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onSave && newValue !== initialValue) {\n onSave(row.original, newValue);\n }\n };\n\n return (\n <Input\n type={type || \"text\"}\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={isDisabled}\n className={cn(\"h-8\", this.config.cellClassName)}\n />\n );\n },\n };\n }\n}\n\nexport { InputColumn as inputColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown, ExternalLink } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface LinkColumnConfig<TData> extends BaseColumnConfig<TData> {\n href?: string | ((row: TData) => string);\n external?: boolean;\n icon?: ReactNode;\n showExternalIcon?: boolean;\n underline?: \"always\" | \"hover\" | \"never\";\n openInNewTab?: boolean;\n onClick?: (row: TData) => void;\n}\n\nexport class LinkColumn<TData> extends BaseColumn<\n TData,\n LinkColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as LinkColumnConfig<TData>;\n config.external = false;\n config.showExternalIcon = false;\n config.underline = \"hover\";\n config.openInNewTab = false;\n }\n\n static make<TData>(accessor: keyof TData | string): LinkColumn<TData> {\n return new LinkColumn(accessor);\n }\n\n // URL setzen (statisch oder dynamisch)\n href(href: string | ((row: TData) => string)): this {\n (this.config as LinkColumnConfig<TData>).href = href;\n return this;\n }\n\n // URL aus einem anderen Feld nehmen\n urlFromField(field: keyof TData): this {\n (this.config as LinkColumnConfig<TData>).href = (row) => String(row[field]);\n return this;\n }\n\n // Externer Link (zeigt Icon)\n external(external = true): this {\n const config = this.config as LinkColumnConfig<TData>;\n config.external = external;\n config.showExternalIcon = external;\n config.openInNewTab = external;\n return this;\n }\n\n // Icon vor dem Text\n icon(icon: ReactNode): this {\n (this.config as LinkColumnConfig<TData>).icon = icon;\n return this;\n }\n\n // External-Icon anzeigen\n showExternalIcon(show = true): this {\n (this.config as LinkColumnConfig<TData>).showExternalIcon = show;\n return this;\n }\n\n // Unterstreichung\n underline(style: \"always\" | \"hover\" | \"never\"): this {\n (this.config as LinkColumnConfig<TData>).underline = style;\n return this;\n }\n\n // In neuem Tab öffnen\n openInNewTab(open = true): this {\n (this.config as LinkColumnConfig<TData>).openInNewTab = open;\n return this;\n }\n\n // Click-Handler (für programmatische Navigation)\n onClick(handler: (row: TData) => void): this {\n (this.config as LinkColumnConfig<TData>).onClick = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as LinkColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n href,\n icon,\n showExternalIcon,\n underline,\n openInNewTab,\n onClick,\n } = config;\n\n const underlineClasses = {\n always: \"underline\",\n hover: \"hover:underline\",\n never: \"no-underline\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const value = getValue() as string;\n\n if (!value) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n // URL berechnen\n const url =\n typeof href === \"function\" ? href(row.original) : href || value;\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n onClick(row.original);\n }\n };\n\n // Alignment ohne text-muted-foreground für Links\n const alignmentClass =\n this.config.align === \"center\"\n ? \"text-center\"\n : this.config.align === \"right\"\n ? \"text-right\"\n : \"text-left\";\n\n return (\n <a\n href={url}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n onClick={onClick ? handleClick : undefined}\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm text-blue-500\",\n underlineClasses[underline || \"hover\"],\n \"hover:text-blue-500/80\",\n alignmentClass,\n this.config.cellClassName,\n )}\n >\n {icon}\n <span>{value}</span>\n {showExternalIcon && (\n <ExternalLink className=\"text-muted-foreground h-3 w-3\" />\n )}\n </a>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface NumberColumnConfig<TData> extends BaseColumnConfig<TData> {\n decimals?: number;\n locale?: string;\n currency?: string;\n percent?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport class NumberColumn<TData> extends BaseColumn<\n TData,\n NumberColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.align = \"right\"; // Zahlen standardmäßig rechtsbündig\n (this.config as NumberColumnConfig<TData>).decimals = 0;\n (this.config as NumberColumnConfig<TData>).locale = \"de-DE\";\n }\n\n static make<TData>(accessor: keyof TData | string): NumberColumn<TData> {\n return new NumberColumn(accessor);\n }\n\n decimals(decimals: number): this {\n (this.config as NumberColumnConfig<TData>).decimals = decimals;\n return this;\n }\n\n locale(locale: string): this {\n (this.config as NumberColumnConfig<TData>).locale = locale;\n return this;\n }\n\n // Währungsformatierung\n money(currency = \"EUR\"): this {\n (this.config as NumberColumnConfig<TData>).currency = currency;\n (this.config as NumberColumnConfig<TData>).decimals = 2;\n return this;\n }\n\n // Prozentformatierung\n percent(): this {\n (this.config as NumberColumnConfig<TData>).percent = true;\n return this;\n }\n\n prefix(prefix: string): this {\n (this.config as NumberColumnConfig<TData>).prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n (this.config as NumberColumnConfig<TData>).suffix = suffix;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as NumberColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n decimals,\n locale,\n currency,\n percent,\n prefix,\n suffix,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n let formatted: string;\n\n if (currency) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n } else if (percent) {\n formatted = new Intl.NumberFormat(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n } else {\n formatted = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value);\n }\n\n const displayValue = `${prefix || \"\"}${formatted}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(\n \"tabular-nums\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\ninterface ProgressColumnConfig<TData> extends BaseColumnConfig<TData> {\n max?: number;\n showValue?: boolean;\n showPercentage?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?:\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | ((value: number, max: number) => string);\n thresholds?: {\n warning?: number;\n danger?: number;\n };\n format?: (value: number, max: number) => string;\n}\n\nexport class ProgressColumn<TData> extends BaseColumn<\n TData,\n ProgressColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as ProgressColumnConfig<TData>;\n config.max = 100;\n config.showValue = false;\n config.showPercentage = true;\n config.size = \"md\";\n config.color = \"default\";\n }\n\n static make<TData>(accessor: keyof TData | string): ProgressColumn<TData> {\n return new ProgressColumn(accessor);\n }\n\n // Maximalwert setzen\n max(max: number): this {\n (this.config as ProgressColumnConfig<TData>).max = max;\n return this;\n }\n\n // Absoluten Wert anzeigen (z.B. \"75/100\")\n showValue(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showValue = show;\n return this;\n }\n\n // Prozent anzeigen (z.B. \"75%\")\n showPercentage(show = true): this {\n (this.config as ProgressColumnConfig<TData>).showPercentage = show;\n return this;\n }\n\n // Keine Werte anzeigen\n hideLabel(): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.showValue = false;\n config.showPercentage = false;\n return this;\n }\n\n // Größe\n size(size: \"sm\" | \"md\" | \"lg\"): this {\n (this.config as ProgressColumnConfig<TData>).size = size;\n return this;\n }\n\n // Feste Farbe\n color(color: \"default\" | \"success\" | \"warning\" | \"danger\"): this {\n (this.config as ProgressColumnConfig<TData>).color = color;\n return this;\n }\n\n // Dynamische Farbe basierend auf Schwellwerten\n colorByThreshold(warning = 50, danger = 25): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent <= danger) return \"danger\";\n if (percent <= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Umgekehrte Schwellwerte (z.B. für Kapazität - voll = schlecht)\n colorByThresholdInverse(warning = 75, danger = 90): this {\n const config = this.config as ProgressColumnConfig<TData>;\n config.thresholds = { warning, danger };\n config.color = (value, max) => {\n const percent = (value / max) * 100;\n if (percent >= danger) return \"danger\";\n if (percent >= warning) return \"warning\";\n return \"success\";\n };\n return this;\n }\n\n // Custom Formatierung\n format(fn: (value: number, max: number) => string): this {\n (this.config as ProgressColumnConfig<TData>).format = fn;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as ProgressColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n max,\n showValue,\n showPercentage,\n size,\n color,\n format,\n } = config;\n\n const sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const colorClasses = {\n default: \"[&>div]:bg-primary\",\n success: \"[&>div]:bg-green-500\",\n warning: \"[&>div]:bg-yellow-500\",\n danger: \"[&>div]:bg-red-500\",\n };\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue() as number;\n const maxValue = max || 100;\n\n if (value === null || value === undefined) {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n\n const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));\n\n // Farbe berechnen\n const currentColor =\n typeof color === \"function\"\n ? color(value, maxValue)\n : color || \"default\";\n\n // Label erstellen\n let labelText = \"\";\n if (format) {\n labelText = format(value, maxValue);\n } else if (showValue) {\n labelText = `${value}/${maxValue}`;\n } else if (showPercentage) {\n labelText = `${Math.round(percentage)}%`;\n }\n\n return (\n <div\n className={cn(\n \"flex min-w-[120px] items-center gap-3\",\n this.config.cellClassName,\n )}\n >\n <Progress\n value={percentage}\n className={cn(\n \"flex-1\",\n sizeClasses[size || \"md\"],\n colorClasses[currentColor as keyof typeof colorClasses],\n )}\n />\n {labelText && (\n <span className=\"text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums\">\n {labelText}\n </span>\n )}\n </div>\n );\n },\n };\n }\n}\n","\"use client\";\nimport { useState, useEffect } from \"react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectColumnConfig<TData> extends BaseColumnConfig<TData> {\n options?: SelectOption[];\n placeholder?: string;\n disabled?: boolean | ((row: TData) => boolean);\n onValueChange?: (row: TData, newValue: string) => void;\n}\n\nexport class SelectColumn<TData> extends BaseColumn<\n TData,\n SelectColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n const config = this.config as SelectColumnConfig<TData>;\n config.options = [];\n config.disabled = false;\n }\n\n static make<TData>(accessor: keyof TData | string): SelectColumn<TData> {\n return new SelectColumn(accessor);\n }\n\n options(options: SelectOption[]): this {\n (this.config as SelectColumnConfig<TData>).options = options;\n return this;\n }\n\n placeholder(placeholder: string): this {\n (this.config as SelectColumnConfig<TData>).placeholder = placeholder;\n return this;\n }\n\n disabled(disabled: boolean | ((row: TData) => boolean)): this {\n (this.config as SelectColumnConfig<TData>).disabled = disabled;\n return this;\n }\n\n onValueChange(handler: (row: TData, newValue: string) => void): this {\n (this.config as SelectColumnConfig<TData>).onValueChange = handler;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const config = this.config as SelectColumnConfig<TData>;\n const {\n accessor,\n label,\n sortable,\n options,\n placeholder,\n disabled,\n onValueChange,\n } = config;\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue, row }) => {\n const initialValue = getValue() as string;\n const [localValue, setLocalValue] = useState(initialValue || \"\");\n const isDisabled =\n typeof disabled === \"function\" ? disabled(row.original) : disabled;\n\n // Sync local value with table data when it changes externally\n useEffect(() => {\n setLocalValue(initialValue || \"\");\n }, [initialValue]);\n\n const handleValueChange = (newValue: string) => {\n setLocalValue(newValue);\n if (onValueChange) {\n onValueChange(row.original, newValue);\n }\n };\n\n return (\n <Select\n value={localValue}\n onValueChange={handleValueChange}\n disabled={isDisabled}\n >\n <SelectTrigger className={cn(\"h-8\", this.config.cellClassName)}>\n <SelectValue placeholder={placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option, index) => (\n <SelectItem\n key={index}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n },\n };\n }\n}\n\nexport { SelectColumn as selectColumn };\n","import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { FormattedColumnConfig } from \"./types\";\n\nexport class TextColumn<TData> extends BaseColumn<\n TData,\n FormattedColumnConfig<TData>\n> {\n static make<TData>(accessor: keyof TData | string): TextColumn<TData> {\n return new TextColumn(accessor);\n }\n\n formatter(fn: (value: unknown, row: Row<TData>) => React.ReactNode): this {\n this.config.formatter = fn;\n return this;\n }\n\n prefix(prefix: string): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string): this {\n this.config.suffix = suffix;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n // Shortcuts für gängige Formatierungen\n uppercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toUpperCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n lowercase(): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n return typeof result === \"string\"\n ? result.toLowerCase()\n : (result as React.ReactNode);\n };\n return this;\n }\n\n limit(chars: number): this {\n const existingFormatter = this.config.formatter;\n this.config.formatter = (value, row): React.ReactNode => {\n const result = existingFormatter ? existingFormatter(value, row) : value;\n if (typeof result === \"string\" && result.length > chars) {\n return result.slice(0, chars) + \"...\";\n }\n return result as React.ReactNode;\n };\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n prefix,\n suffix,\n placeholder,\n formatter,\n visibleByDefault,\n visibilityLabel,\n } = this.config;\n\n return {\n accessorKey: accessor as string,\n meta: {\n visibleByDefault,\n visibilityLabel: visibilityLabel || label || String(accessor),\n },\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ row, getValue }) => {\n let value = getValue();\n\n // Custom Formatter anwenden\n if (formatter) {\n value = formatter(value, row);\n }\n\n // Placeholder wenn leer\n if (value === null || value === undefined || value === \"\") {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n // Prefix/Suffix hinzufügen\n const displayValue = `${prefix || \"\"}${value}${suffix || \"\"}`;\n\n return (\n <span\n className={cn(this.getAlignmentClass(), this.config.cellClassName)}\n >\n {displayValue}\n </span>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { MoreHorizontal } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nexport interface ActionItem<TData> {\n label?: string; // optional when render is used\n icon?: ReactNode;\n onClick?: (row: TData) => void;\n href?: (row: TData) => string;\n render?: (row: TData) => ReactNode; // custom renderer for complex UI\n variant?: \"default\" | \"destructive\";\n separator?: boolean;\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n}\n\ninterface ActionsColumnConfig<TData> {\n actions: ActionItem<TData>[];\n label?: string;\n triggerIcon?: ReactNode;\n}\n\nexport class ActionsColumn<TData> {\n private config: ActionsColumnConfig<TData> = {\n actions: [],\n label: \"Aktionen\",\n };\n\n static make<TData>(): ActionsColumn<TData> {\n return new ActionsColumn();\n }\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n triggerIcon(icon: ReactNode): this {\n this.config.triggerIcon = icon;\n return this;\n }\n\n // Action hinzufügen\n action(action: ActionItem<TData>): this {\n this.config.actions.push(action);\n return this;\n }\n\n // Shortcuts für gängige Actions\n view(onClick: (row: TData) => void): this {\n return this.action({ label: \"Anzeigen\", onClick });\n }\n\n edit(onClick: (row: TData) => void): this {\n return this.action({ label: \"Bearbeiten\", onClick });\n }\n\n delete(onClick: (row: TData) => void): this {\n return this.action({\n label: \"Löschen\",\n onClick,\n variant: \"destructive\",\n separator: true,\n });\n }\n\n link(label: string, href: (row: TData) => string): this {\n return this.action({ label, href });\n }\n\n separator(): this {\n if (this.config.actions.length > 0) {\n this.config.actions[this.config.actions.length - 1].separator = true;\n }\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const { actions, label, triggerIcon } = this.config;\n\n return {\n id: \"actions\",\n header: () => <span className=\"sr-only\">{label}</span>,\n cell: ({ row }) => {\n const data = row.original;\n\n const visibleActions = actions.filter(\n (action) => !action.hidden || !action.hidden(data),\n );\n\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"h-10 w-10 p-0\">\n <span className=\"sr-only\">{label}</span>\n {triggerIcon || <MoreHorizontal className=\"h-8 w-8\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleActions.map((action, index) => (\n <div key={index}>\n {action.render ? (\n // Custom render function takes priority\n action.render(data)\n ) : (\n // Standard menu item\n <DropdownMenuItem\n disabled={action.disabled?.(data)}\n className={cn(\n action.variant === \"destructive\" &&\n \"text-destructive focus:text-destructive\",\n )}\n onClick={() => {\n if (action.href) {\n window.location.href = action.href(data);\n } else if (action.onClick) {\n action.onClick(data);\n }\n }}\n >\n {action.icon && (\n <span className=\"mr-2\">{action.icon}</span>\n )}\n {action.label}\n </DropdownMenuItem>\n )}\n {action.separator && index < visibleActions.length - 1 && (\n <DropdownMenuSeparator />\n )}\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n },\n };\n }\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\nimport { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { ArrowUpDown, LucideIcon } from \"lucide-react\";\nimport { BaseColumn } from \"./base-column\";\nimport { BaseColumnConfig } from \"./types\";\n\nexport interface EnumOption<T = string | number> {\n value: T;\n label: string;\n icon?: LucideIcon;\n color?:\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"info\";\n className?: string;\n}\n\ninterface EnumColumnConfig<TData> extends BaseColumnConfig<TData> {\n options: EnumOption[];\n asBadge?: boolean;\n showIcon?: boolean;\n iconPosition?: \"left\" | \"right\";\n placeholder?: string;\n}\n\nexport class EnumColumn<TData> extends BaseColumn<\n TData,\n EnumColumnConfig<TData>\n> {\n constructor(accessor: keyof TData | string) {\n super(accessor);\n this.config.asBadge = true;\n this.config.showIcon = true;\n this.config.iconPosition = \"left\";\n }\n\n static make<TData>(accessor: keyof TData | string): EnumColumn<TData> {\n return new EnumColumn(accessor);\n }\n\n /**\n * Define the enum options with labels, icons, and colors\n */\n options(options: EnumOption[]): this {\n this.config.options = options;\n return this;\n }\n\n /**\n * Display as plain text instead of badge\n */\n asText(): this {\n this.config.asBadge = false;\n return this;\n }\n\n /**\n * Display as badge (default)\n */\n asBadge(): this {\n this.config.asBadge = true;\n return this;\n }\n\n /**\n * Hide icons\n */\n hideIcon(): this {\n this.config.showIcon = false;\n return this;\n }\n\n /**\n * Show icons (default)\n */\n showIcon(): this {\n this.config.showIcon = true;\n return this;\n }\n\n /**\n * Set icon position\n */\n iconPosition(position: \"left\" | \"right\"): this {\n this.config.iconPosition = position;\n return this;\n }\n\n /**\n * Placeholder for unknown values\n */\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n build(): ColumnDef<TData, unknown> {\n const {\n accessor,\n label,\n sortable,\n options,\n asBadge,\n showIcon,\n iconPosition,\n placeholder,\n } = this.config;\n\n if (!options || options.length === 0) {\n throw new Error(\n `EnumColumn \"${String(accessor)}\" requires options to be defined`,\n );\n }\n\n return {\n accessorKey: accessor as string,\n header: ({ column }) => {\n const displayLabel = label || String(accessor);\n\n if (!sortable) {\n return (\n <span\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n </span>\n );\n }\n\n return (\n <Button\n variant=\"table_header\"\n size=\"table_header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n className={cn(\n \"text-muted-foreground font-medium\",\n this.getAlignmentClass(),\n this.config.headerClassName,\n )}\n >\n {displayLabel}\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n </Button>\n );\n },\n cell: ({ getValue }) => {\n const value = getValue();\n\n // Find matching option\n const option = options.find((opt) => opt.value === value);\n\n // Handle unknown values\n if (!option) {\n return (\n <span\n className={cn(\n \"text-muted-foreground\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n {placeholder || \"—\"}\n </span>\n );\n }\n\n const Icon = option.icon;\n const iconElement =\n showIcon && Icon ? <Icon className=\"h-4 w-4\" /> : null;\n\n // Render as Badge\n if (asBadge) {\n return (\n <div\n className={cn(\n this.getAlignmentClass(),\n this.config.cellClassName,\n )}\n >\n <Badge\n variant={option.color || \"default\"}\n className={cn(\n \"inline-flex items-center gap-1.5\",\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n {option.label}\n {iconPosition === \"right\" && iconElement}\n </Badge>\n </div>\n );\n }\n\n // Render as plain text with icon\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2\",\n this.getAlignmentClass(),\n this.config.cellClassName,\n option.className,\n )}\n >\n {iconPosition === \"left\" && iconElement}\n <span>{option.label}</span>\n {iconPosition === \"right\" && iconElement}\n </div>\n );\n },\n };\n }\n}\n","import { ConfirmOptions, ConfirmHandler } from \"./types\";\n\nlet confirmHandler: ConfirmHandler | null = null;\n\nexport function registerConfirm(handler: ConfirmHandler | null): void {\n confirmHandler = handler;\n}\n\nexport function confirm(options: ConfirmOptions): Promise<boolean> {\n if (!confirmHandler) {\n throw new Error(\n \"ConfirmProvider is not mounted. Please wrap your app with <ConfirmProvider>.\",\n );\n }\n return confirmHandler(options);\n}\n","\"use client\";\nimport { useState, useEffect, ReactNode } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { registerConfirm } from \"./confirm\";\nimport { ConfirmOptions } from \"./types\";\n\ninterface ConfirmRequest {\n options: ConfirmOptions;\n resolve: (value: boolean) => void;\n}\n\ninterface ConfirmProviderProps {\n children: ReactNode;\n}\n\nexport function ConfirmProvider({ children }: ConfirmProviderProps) {\n const [queue, setQueue] = useState<ConfirmRequest[]>([]);\n const currentRequest = queue[0];\n\n useEffect(() => {\n registerConfirm(async (options: ConfirmOptions) => {\n return new Promise<boolean>((resolve) => {\n setQueue((q) => [...q, { options, resolve }]);\n });\n });\n\n return () => {\n registerConfirm(null);\n };\n }, []);\n\n const handleConfirm = () => {\n if (currentRequest) {\n currentRequest.resolve(true);\n setQueue((q) => q.slice(1));\n }\n };\n\n const handleCancel = () => {\n if (currentRequest) {\n currentRequest.resolve(false);\n setQueue((q) => q.slice(1));\n }\n };\n\n const {\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant,\n icon,\n image,\n } = currentRequest?.options || {};\n\n return (\n <>\n {children}\n <AlertDialog\n open={!!currentRequest}\n onOpenChange={(open: boolean) => !open && handleCancel()}\n >\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"text-center\">\n {title || \"Bestätigung erforderlich\"}\n </AlertDialogTitle>\n {description && (\n <AlertDialogDescription className=\"text-center\">\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n {image && (\n <div className=\"flex justify-center py-4\">\n <img\n src={image}\n alt=\"Confirmation\"\n className=\"h-24 w-24 object-contain\"\n />\n </div>\n )}\n {icon && !image && (\n <div className=\"flex justify-center py-4 text-6xl\">{icon}</div>\n )}\n <AlertDialogFooter className=\"flex flex-row !justify-between w-full\">\n <AlertDialogCancel onClick={handleCancel} className=\"mt-0\">\n {cancelLabel || \"Abbrechen\"}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n >\n {confirmLabel || \"Bestätigen\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","import { FormActionConfig } from \"../types/actions\";\n\nexport class ActionsBuilder<TData extends Record<string, any>> {\n private actionsList: FormActionConfig<TData>[] = [];\n\n submit(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"submit\",\n label: opts.label || \"Submit\",\n variant: opts.variant || \"default\",\n ...opts,\n });\n return this;\n }\n\n cancel(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"cancel\",\n label: opts.label || \"Cancel\",\n variant: opts.variant || \"outline\",\n ...opts,\n });\n return this;\n }\n\n custom(opts: Omit<FormActionConfig<TData>, \"type\"> & { label: string }): this {\n this.actionsList.push({ ...opts, type: \"custom\" });\n return this;\n }\n\n build(): FormActionConfig<TData>[] {\n return [...this.actionsList];\n }\n}\n","import { FormSchemaConfig, FormBuildResult, BuiltField } from \"../types/form\";\nimport { SectionConfig, TabConfig, WizardStepConfig } from \"../types/layout\";\nimport { FormActionConfig } from \"../types/actions\";\nimport { ActionsBuilder } from \"./actions-builder\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\n/**\n * Form Schema Builder\n * Fluent API for building complete form configurations\n */\nexport class FormSchema<TData extends Record<string, any>> {\n private fieldBuilders: FieldBuilder<TData>[] = [];\n private schemaConfig: Partial<FormSchemaConfig<TData>> = {};\n\n static make<TData extends Record<string, any>>(): FormSchema<TData> {\n return new FormSchema();\n }\n\n // --- Configuration ---\n\n title(title: string | ((data: TData) => string)): this {\n this.schemaConfig.title = title;\n return this;\n }\n\n description(description: string | ((data: TData) => string)): this {\n this.schemaConfig.description = description;\n return this;\n }\n\n columns(columns: number): this {\n this.schemaConfig.columns = columns;\n return this;\n }\n\n bordered(bordered = true): this {\n this.schemaConfig.bordered = bordered;\n return this;\n }\n\n spacing(spacing: \"compact\" | \"normal\" | \"relaxed\"): this {\n this.schemaConfig.spacing = spacing;\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean)): this {\n this.schemaConfig.disabled = disabled;\n return this;\n }\n\n // --- Fields ---\n\n fields(...builders: FieldBuilder<TData>[]): this {\n this.fieldBuilders.push(...builders);\n return this;\n }\n\n // --- Layout ---\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.schemaConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n tabs(...tabs: { build(): TabConfig<TData> }[]): this {\n this.schemaConfig.tabs = tabs.map((t) => t.build());\n return this;\n }\n\n wizard(\n ...steps: { build(): WizardStepConfig<TData> }[]\n ): this {\n this.schemaConfig.wizardSteps = steps.map((s) => s.build());\n return this;\n }\n\n // --- Actions ---\n\n actions(\n fn: (builder: ActionsBuilder<TData>) => ActionsBuilder<TData>,\n ): this {\n const builder = new ActionsBuilder<TData>();\n this.schemaConfig.actions = fn(builder).build();\n return this;\n }\n\n actionsPosition(position: \"start\" | \"end\" | \"between\" | \"center\"): this {\n this.schemaConfig.actionsPosition = position;\n return this;\n }\n\n // --- Build ---\n\n build(): FormBuildResult<TData> {\n const fields = this.fieldBuilders.map((b) => b.build());\n return {\n fields,\n config: {\n ...(this.schemaConfig as FormSchemaConfig<TData>),\n fields,\n },\n };\n }\n}\n","import { ReactNode } from \"react\";\nimport { SectionConfig } from \"../types/layout\";\n\nexport class SectionBuilder<TData extends Record<string, any>> {\n private sectionConfig: SectionConfig<TData>;\n\n constructor(title: string) {\n this.sectionConfig = {\n id: title.toLowerCase().replace(/\\s+/g, \"-\"),\n title,\n fields: [],\n columns: 1,\n collapsible: false,\n collapsed: false,\n };\n }\n\n static make<TData extends Record<string, any>>(\n title: string,\n ): SectionBuilder<TData> {\n return new SectionBuilder(title);\n }\n\n id(id: string): this {\n this.sectionConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.sectionConfig.description = description;\n return this;\n }\n\n fields(fields: string[]): this {\n this.sectionConfig.fields = fields;\n return this;\n }\n\n columns(columns: number): this {\n this.sectionConfig.columns = columns;\n return this;\n }\n\n collapsible(collapsible = true): this {\n this.sectionConfig.collapsible = collapsible;\n return this;\n }\n\n collapsed(collapsed = true): this {\n this.sectionConfig.collapsed = collapsed;\n this.sectionConfig.collapsible = true;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.sectionConfig.icon = icon;\n return this;\n }\n\n hidden(fn: (data: TData) => boolean): this {\n this.sectionConfig.hidden = fn;\n return this;\n }\n\n build(): SectionConfig<TData> {\n return { ...this.sectionConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { TabConfig, SectionConfig } from \"../types/layout\";\n\nexport class TabBuilder<TData extends Record<string, any>> {\n private tabConfig: TabConfig<TData>;\n\n constructor(label: string) {\n this.tabConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): TabBuilder<TData> {\n return new TabBuilder(label);\n }\n\n id(id: string): this {\n this.tabConfig.id = id;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.tabConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.tabConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.tabConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n badge(\n badge: string | number | ((data: TData) => string | number),\n ): this {\n this.tabConfig.badge = badge;\n return this;\n }\n\n disabled(fn: (data: TData) => boolean): this {\n this.tabConfig.disabled = fn;\n return this;\n }\n\n build(): TabConfig<TData> {\n return { ...this.tabConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { WizardStepConfig, SectionConfig } from \"../types/layout\";\n\nexport class WizardStep<TData extends Record<string, any>> {\n private stepConfig: WizardStepConfig<TData>;\n\n constructor(label: string) {\n this.stepConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): WizardStep<TData> {\n return new WizardStep(label);\n }\n\n id(id: string): this {\n this.stepConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.stepConfig.description = description;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.stepConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.stepConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.stepConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n canProceed(fn: (data: TData) => boolean): this {\n this.stepConfig.canProceed = fn;\n return this;\n }\n\n beforeNext(fn: (data: TData) => Promise<boolean> | boolean): this {\n this.stepConfig.beforeNext = fn;\n return this;\n }\n\n build(): WizardStepConfig<TData> {\n return { ...this.stepConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport {\n BaseFieldConfig,\n ValidationRule,\n DependencyConfig,\n} from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\nexport abstract class BaseField<\n TData extends Record<string, any>,\n TConfig extends BaseFieldConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(name: string) {\n this.config = {\n name,\n required: false,\n disabled: false,\n readOnly: false,\n hidden: false,\n columnSpan: 1,\n rules: [],\n dependsOn: [],\n } as unknown as TConfig;\n }\n\n // --- Fluent API ---\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n helperText(text: string): this {\n this.config.helperText = text;\n return this;\n }\n\n required(required = true): this {\n this.config.required = required;\n if (\n required &&\n !this.config.rules?.some((r: ValidationRule) => r.type === \"required\")\n ) {\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"required\",\n message: `${this.config.label || this.config.name} is required`,\n },\n ];\n }\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean) = true): this {\n this.config.disabled = disabled;\n return this;\n }\n\n readOnly(readOnly = true): this {\n this.config.readOnly = readOnly;\n return this;\n }\n\n hidden(hidden: boolean | ((data: TData) => boolean) = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n default(value: any): this {\n this.config.defaultValue = value;\n return this;\n }\n\n columnSpan(span: number): this {\n this.config.columnSpan = span;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n rules(rules: ValidationRule[]): this {\n this.config.rules = [...(this.config.rules || []), ...rules];\n return this;\n }\n\n zodSchema(schema: any): this {\n this.config.zodSchema = schema;\n return this;\n }\n\n dependsOn<K extends string & keyof TData>(\n field: K,\n condition: (value: TData[K], data: TData) => boolean,\n effect: \"show\" | \"hide\" | \"enable\" | \"disable\" | \"setValue\" = \"show\",\n effectValue?: any,\n ): this {\n this.config.dependsOn = [\n ...(this.config.dependsOn || []),\n { field, condition, effect, effectValue } as DependencyConfig<TData>,\n ];\n return this;\n }\n\n reactive(reactive = true): this {\n this.config.reactive = reactive;\n return this;\n }\n\n // --- Abstract ---\n\n abstract readonly fieldType: FieldType;\n\n abstract renderField(props: FieldRenderProps<TData>): ReactNode;\n\n // --- Build ---\n\n build(): BuiltField<TData> {\n return {\n name: this.config.name,\n type: this.fieldType,\n config: { ...this.config },\n render: (props: FieldRenderProps<TData>) => this.renderField(props),\n };\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextInputConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class TextInput<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextInputConfig<TData>> {\n readonly fieldType: FieldType = \"text\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): TextInput<TData> {\n return new TextInput(name);\n }\n\n type(type: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\"): this {\n this.config.type = type;\n return this;\n }\n\n email(): this {\n return this.type(\"email\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n tel(): this {\n return this.type(\"tel\");\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n prefix(prefix: string | ReactNode): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string | ReactNode): this {\n this.config.suffix = suffix;\n return this;\n }\n\n autocomplete(value: string): this {\n this.config.autocomplete = value;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const {\n type,\n placeholder,\n maxLength,\n readOnly,\n autocomplete,\n className,\n prefix,\n suffix,\n } = this.config;\n\n const input = (\n <Input\n type={type || \"text\"}\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onChange(\n type === \"number\" ? Number(e.target.value) : e.target.value,\n )\n }\n onBlur={onBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autocomplete}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n\n if (prefix || suffix) {\n return (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-muted-foreground\">{prefix}</span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-muted-foreground\">{suffix}</span>\n )}\n </div>\n );\n }\n\n return input;\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Textarea as ShadcnTextarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextareaConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Textarea<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextareaConfig<TData>> {\n readonly fieldType: FieldType = \"textarea\";\n\n constructor(name: string) {\n super(name);\n this.config.rows = 3;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Textarea<TData> {\n return new Textarea(name);\n }\n\n rows(rows: number): this {\n this.config.rows = rows;\n return this;\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n autoResize(autoResize = true): this {\n this.config.autoResize = autoResize;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, rows, maxLength, readOnly, className } = this.config;\n\n return (\n <ShadcnTextarea\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChange(e.target.value)\n }\n onBlur={onBlur}\n placeholder={placeholder}\n rows={rows}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n Select as ShadcnSelect,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { SelectConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Select<\n TData extends Record<string, any>,\n> extends BaseField<TData, SelectConfig<TData>> {\n readonly fieldType: FieldType = \"select\";\n\n constructor(name: string) {\n super(name);\n (this.config as SelectConfig<TData>).options = [];\n (this.config as SelectConfig<TData>).multiple = false;\n (this.config as SelectConfig<TData>).searchable = false;\n (this.config as SelectConfig<TData>).clearable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Select<TData> {\n return new Select(name);\n }\n\n options(\n options: SelectOption[] | ((data: TData) => SelectOption[]),\n ): this {\n (this.config as SelectConfig<TData>).options = options;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as SelectConfig<TData>).multiple = multiple;\n return this;\n }\n\n searchable(searchable = true): this {\n (this.config as SelectConfig<TData>).searchable = searchable;\n return this;\n }\n\n clearable(clearable = true): this {\n (this.config as SelectConfig<TData>).clearable = clearable;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as SelectConfig<TData>).maxItems = max;\n return this;\n }\n\n loadOptions(fn: (query: string) => Promise<SelectOption[]>): this {\n (this.config as SelectConfig<TData>).loadOptions = fn;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as SelectConfig<TData>;\n const resolvedOptions =\n typeof cfg.options === \"function\" ? cfg.options(data) : cfg.options;\n\n return (\n <ShadcnSelect\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(error && \"border-destructive\", cfg.className)}\n >\n <SelectValue placeholder={cfg.placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {resolvedOptions.map((opt) => (\n <SelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </ShadcnSelect>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Checkbox<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Checkbox<TData> {\n return new Checkbox(name);\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { className } = this.config;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <ShadcnCheckbox\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(!!checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {this.config.label && (\n <label\n htmlFor={this.config.name}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n error && \"text-destructive\",\n )}\n >\n {this.config.label}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { ToggleConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Toggle<\n TData extends Record<string, any>,\n> extends BaseField<TData, ToggleConfig<TData>> {\n readonly fieldType: FieldType = \"toggle\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Toggle<TData> {\n return new Toggle(name);\n }\n\n onLabel(label: string): this {\n this.config.onLabel = label;\n return this;\n }\n\n offLabel(label: string): this {\n this.config.offLabel = label;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { onLabel, offLabel, className } = this.config;\n const displayLabel = value ? onLabel : offLabel;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <Switch\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {displayLabel && (\n <label\n htmlFor={this.config.name}\n className=\"text-sm text-muted-foreground\"\n >\n {displayLabel}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n RadioGroup as ShadcnRadioGroup,\n RadioGroupItem,\n} from \"@/components/ui/radio-group\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { RadioGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class RadioGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, RadioGroupConfig<TData>> {\n readonly fieldType: FieldType = \"radio-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as RadioGroupConfig<TData>).options = [];\n (this.config as RadioGroupConfig<TData>).orientation = \"vertical\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): RadioGroup<TData> {\n return new RadioGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as RadioGroupConfig<TData>).options = options;\n return this;\n }\n\n orientation(orientation: \"horizontal\" | \"vertical\"): this {\n (this.config as RadioGroupConfig<TData>).orientation = orientation;\n return this;\n }\n\n horizontal(): this {\n return this.orientation(\"horizontal\");\n }\n\n vertical(): this {\n return this.orientation(\"vertical\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RadioGroupConfig<TData>;\n const isHorizontal = cfg.orientation === \"horizontal\";\n\n return (\n <ShadcnRadioGroup\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n className={cn(\n isHorizontal ? \"flex flex-row gap-4\" : \"flex flex-col gap-2\",\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={opt.value}\n id={`${cfg.name}-${opt.value}`}\n disabled={opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n}\n","import React, { ReactNode, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { DatePickerConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class DatePicker<\n TData extends Record<string, any>,\n> extends BaseField<TData, DatePickerConfig<TData>> {\n readonly fieldType: FieldType = \"date-picker\";\n\n constructor(name: string) {\n super(name);\n this.config.format = \"PPP\";\n this.config.includeTime = false;\n this.config.locale = \"en-US\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): DatePicker<TData> {\n return new DatePicker(name);\n }\n\n minDate(date: Date | ((data: TData) => Date)): this {\n this.config.minDate = date;\n return this;\n }\n\n maxDate(date: Date | ((data: TData) => Date)): this {\n this.config.maxDate = date;\n return this;\n }\n\n format(format: string): this {\n this.config.format = format;\n return this;\n }\n\n includeTime(includeTime = true): this {\n this.config.includeTime = includeTime;\n if (includeTime) {\n (this as any).fieldType = \"date-time-picker\";\n }\n return this;\n }\n\n locale(locale: string): this {\n this.config.locale = locale;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, className, locale } = this.config;\n\n const resolvedMinDate =\n typeof this.config.minDate === \"function\"\n ? this.config.minDate(data)\n : this.config.minDate;\n const resolvedMaxDate =\n typeof this.config.maxDate === \"function\"\n ? this.config.maxDate(data)\n : this.config.maxDate;\n\n const dateValue = value ? new Date(value) : undefined;\n\n const formatDate = (date: Date): string => {\n return date.toLocaleDateString(locale || \"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateValue && \"text-muted-foreground\",\n error && \"border-destructive\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateValue ? formatDate(dateValue) : placeholder || \"Pick a date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={dateValue}\n onSelect={(date) =>\n onChange(date ? date.toISOString().split(\"T\")[0] : \"\")\n }\n disabled={(date) => {\n if (resolvedMinDate && date < resolvedMinDate) return true;\n if (resolvedMaxDate && date > resolvedMaxDate) return true;\n return false;\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseField } from \"./base-field\";\nimport { HiddenConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Hidden<\n TData extends Record<string, any>,\n> extends BaseField<TData, HiddenConfig<TData>> {\n readonly fieldType: FieldType = \"hidden\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Hidden<TData> {\n return new Hidden(name);\n }\n\n renderField({ value }: FieldRenderProps<TData>): ReactNode {\n return <input type=\"hidden\" name={this.config.name} value={value ?? \"\"} />;\n }\n}\n","\"use client\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Upload, X, File } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { FileUploadConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class FileUpload<\n TData extends Record<string, any>,\n> extends BaseField<TData, FileUploadConfig<TData>> {\n readonly fieldType: FieldType = \"file-upload\";\n\n constructor(name: string) {\n super(name);\n (this.config as FileUploadConfig<TData>).multiple = false;\n (this.config as FileUploadConfig<TData>).preview = true;\n (this.config as FileUploadConfig<TData>).maxFiles = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): FileUpload<TData> {\n return new FileUpload(name);\n }\n\n accept(accept: string): this {\n (this.config as FileUploadConfig<TData>).accept = accept;\n return this;\n }\n\n maxSize(bytes: number): this {\n (this.config as FileUploadConfig<TData>).maxSize = bytes;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as FileUploadConfig<TData>).multiple = multiple;\n return this;\n }\n\n maxFiles(max: number): this {\n (this.config as FileUploadConfig<TData>).maxFiles = max;\n return this;\n }\n\n preview(preview = true): this {\n (this.config as FileUploadConfig<TData>).preview = preview;\n return this;\n }\n\n image(): this {\n return this.accept(\"image/*\");\n }\n\n pdf(): this {\n return this.accept(\"application/pdf\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as FileUploadConfig<TData>;\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n\n const files: File[] = Array.isArray(value) ? value : value ? [value] : [];\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList) return;\n const newFiles = Array.from(fileList);\n\n if (cfg.maxSize) {\n const oversized = newFiles.find((f) => f.size > cfg.maxSize!);\n if (oversized) return;\n }\n\n if (cfg.multiple) {\n const combined = [...files, ...newFiles].slice(0, cfg.maxFiles);\n onChange(combined);\n } else {\n onChange(newFiles[0] || null);\n }\n };\n\n const removeFile = (index: number) => {\n if (cfg.multiple) {\n const updated = files.filter((_, i) => i !== index);\n onChange(updated.length ? updated : null);\n } else {\n onChange(null);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", cfg.className)}>\n <div\n className={cn(\n \"flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 transition-colors\",\n dragOver\n ? \"border-primary bg-primary/5\"\n : \"border-muted-foreground/25\",\n error && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDragOver(false);\n if (!disabled) handleFiles(e.dataTransfer.files);\n }}\n >\n <Upload className=\"mb-2 h-8 w-8 text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop or{\" \"}\n <button\n type=\"button\"\n className=\"text-primary underline\"\n onClick={() => inputRef.current?.click()}\n disabled={disabled}\n >\n browse\n </button>\n </p>\n {cfg.accept && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Accepted: {cfg.accept}\n </p>\n )}\n <input\n ref={inputRef}\n type=\"file\"\n accept={cfg.accept}\n multiple={cfg.multiple}\n onChange={(e) => handleFiles(e.target.files)}\n className=\"hidden\"\n disabled={disabled}\n />\n </div>\n\n {files.length > 0 && (\n <ul className=\"space-y-1\">\n {files.map((file, index) => (\n <li\n key={index}\n className=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <File className=\"h-4 w-4 text-muted-foreground\" />\n {file.name}\n </span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => removeFile(index)}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class CheckboxGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxGroupConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as CheckboxGroupConfig<TData>).options = [];\n (this.config as CheckboxGroupConfig<TData>).columns = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): CheckboxGroup<TData> {\n return new CheckboxGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as CheckboxGroupConfig<TData>).options = options;\n return this;\n }\n\n columns(columns: number): this {\n (this.config as CheckboxGroupConfig<TData>).columns = columns;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as CheckboxGroupConfig<TData>;\n const selectedValues: string[] = Array.isArray(value) ? value : [];\n\n const gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n const handleToggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...selectedValues, optionValue]);\n } else {\n onChange(selectedValues.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div\n className={cn(\n \"grid gap-2\",\n gridColsClass[cfg.columns || 1] || gridColsClass[1],\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <ShadcnCheckbox\n id={`${cfg.name}-${opt.value}`}\n checked={selectedValues.includes(opt.value)}\n onCheckedChange={(checked) =>\n handleToggle(opt.value, !!checked)\n }\n disabled={disabled || opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </div>\n );\n }\n}\n","\"use client\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { Plus, Trash2, GripVertical } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { RepeaterConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\nexport class Repeater<\n TData extends Record<string, any>,\n> extends BaseField<TData, RepeaterConfig<TData>> {\n readonly fieldType: FieldType = \"repeater\";\n private fieldBuilders: FieldBuilder<any>[] = [];\n\n constructor(name: string) {\n super(name);\n (this.config as RepeaterConfig<TData>).minItems = 0;\n (this.config as RepeaterConfig<TData>).maxItems = Infinity;\n (this.config as RepeaterConfig<TData>).addLabel = \"Add item\";\n (this.config as RepeaterConfig<TData>).collapsible = false;\n (this.config as RepeaterConfig<TData>).orderable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Repeater<TData> {\n return new Repeater(name);\n }\n\n fields(...builders: FieldBuilder<any>[]): this {\n this.fieldBuilders = builders;\n (this.config as RepeaterConfig<TData>).fields = builders.map((b) =>\n b.build(),\n );\n return this;\n }\n\n minItems(min: number): this {\n (this.config as RepeaterConfig<TData>).minItems = min;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as RepeaterConfig<TData>).maxItems = max;\n return this;\n }\n\n addLabel(label: string): this {\n (this.config as RepeaterConfig<TData>).addLabel = label;\n return this;\n }\n\n collapsible(collapsible = true): this {\n (this.config as RepeaterConfig<TData>).collapsible = collapsible;\n return this;\n }\n\n orderable(orderable = true): this {\n (this.config as RepeaterConfig<TData>).orderable = orderable;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RepeaterConfig<TData>;\n const items: Record<string, any>[] = Array.isArray(value) ? value : [];\n const builtFields = cfg.fields as BuiltField<any>[];\n\n const addItem = () => {\n if (items.length >= (cfg.maxItems || Infinity)) return;\n const defaults: Record<string, any> = {};\n builtFields.forEach((f) => {\n defaults[f.name] = f.config.defaultValue ?? \"\";\n });\n onChange([...items, defaults]);\n };\n\n const removeItem = (index: number) => {\n if (items.length <= (cfg.minItems || 0)) return;\n onChange(items.filter((_, i) => i !== index));\n };\n\n const updateItem = (\n index: number,\n fieldName: string,\n fieldValue: any,\n ) => {\n const updated = items.map((item, i) =>\n i === index ? { ...item, [fieldName]: fieldValue } : item,\n );\n onChange(updated);\n };\n\n const canAdd = items.length < (cfg.maxItems || Infinity);\n const canRemove = items.length > (cfg.minItems || 0);\n\n return (\n <div className={cn(\"space-y-3\", cfg.className)}>\n {items.map((item, index) => (\n <Card key={index}>\n <CardContent className=\"flex items-start gap-3 pt-4\">\n {cfg.orderable && (\n <GripVertical className=\"mt-2 h-5 w-5 cursor-grab text-muted-foreground\" />\n )}\n <div className=\"grid flex-1 gap-3\">\n {builtFields.map((field) => (\n <div key={field.name} className=\"space-y-1\">\n {field.config.label && (\n <label className=\"text-sm font-medium\">\n {field.config.label}\n </label>\n )}\n {field.render({\n value: item[field.name],\n onChange: (v) => updateItem(index, field.name, v),\n disabled,\n data,\n })}\n </div>\n ))}\n </div>\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"mt-1 h-8 w-8 p-0 text-destructive\"\n onClick={() => removeItem(index)}\n disabled={disabled}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n )}\n </CardContent>\n </Card>\n ))}\n\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addItem}\n disabled={disabled}\n className=\"w-full\"\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n {cfg.addLabel}\n </Button>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BuiltField, FieldRenderProps } from \"../types/form\";\n\nexport interface FieldRendererProps<TData extends Record<string, any>> {\n field: BuiltField<TData>;\n value: any;\n error?: string;\n disabled?: boolean;\n data: TData;\n onChange: (value: any) => void;\n onBlur?: () => void;\n}\n\nexport function FieldRenderer<TData extends Record<string, any>>({\n field,\n value,\n error,\n disabled,\n data,\n onChange,\n onBlur,\n}: FieldRendererProps<TData>): ReactNode {\n // Hidden fields render without wrapper\n if (field.type === \"hidden\") {\n return field.render({ value, onChange, onBlur, error, disabled, data });\n }\n\n // Checkbox and Toggle handle their own labels inline\n const skipLabel = field.type === \"checkbox\" || field.type === \"toggle\";\n\n return (\n <div\n className={cn(\n \"space-y-2\",\n field.config.columnSpan && field.config.columnSpan > 1\n ? `col-span-${field.config.columnSpan}`\n : undefined,\n field.config.className,\n )}\n >\n {field.config.label && !skipLabel && (\n <Label\n htmlFor={field.name}\n className={cn(error && \"text-destructive\")}\n >\n {field.config.label}\n {field.config.required && (\n <span className=\"text-destructive ml-1\">*</span>\n )}\n </Label>\n )}\n {field.render({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n data,\n })}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n {!error && field.config.helperText && (\n <p className=\"text-sm text-muted-foreground\">\n {field.config.helperText}\n </p>\n )}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface GridLayoutProps {\n columns?: number;\n children: ReactNode;\n className?: string;\n}\n\nconst gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function GridLayout({\n columns = 1,\n children,\n className,\n}: GridLayoutProps): ReactNode {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n gridColsClass[columns] || gridColsClass[1],\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { FormActionConfig } from \"../types/actions\";\n\nexport interface FormActionsProps<TData extends Record<string, any>> {\n actions: FormActionConfig<TData>[];\n position?: \"start\" | \"end\" | \"between\" | \"center\";\n data: TData;\n processing?: boolean;\n}\n\nconst positionClass: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n end: \"justify-end\",\n};\n\nexport function FormActions<TData extends Record<string, any>>({\n actions,\n position = \"end\",\n data,\n processing = false,\n}: FormActionsProps<TData>): ReactNode {\n if (!actions.length) return null;\n\n return (\n <div className={cn(\"flex gap-2\", positionClass[position])}>\n {actions.map((action, i) => {\n const isDisabled =\n typeof action.disabled === \"function\"\n ? action.disabled(data, processing)\n : action.disabled;\n\n if (action.type === \"submit\") {\n return (\n <Button\n key={i}\n type=\"submit\"\n variant={action.variant || \"default\"}\n disabled={isDisabled || processing}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {processing ? \"Processing...\" : action.label}\n </Button>\n );\n }\n\n if (action.type === \"cancel\" && action.href) {\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n disabled={processing}\n asChild\n >\n <a href={action.href}>\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n onClick={action.onClick}\n disabled={isDisabled || (action.type === \"cancel\" && processing)}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState } from \"react\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { SectionConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface SectionRendererProps<TData extends Record<string, any>> {\n section: SectionConfig<TData>;\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n}\n\nexport function SectionRenderer<TData extends Record<string, any>>({\n section,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n}: SectionRendererProps<TData>): ReactNode {\n const [isCollapsed, setIsCollapsed] = useState(section.collapsed ?? false);\n\n if (section.hidden && section.hidden(data)) return null;\n\n const sectionFields = fields.filter((f) =>\n section.fields.includes(f.name),\n );\n\n return (\n <Card>\n <CardHeader\n className={cn(\n section.collapsible && \"cursor-pointer select-none\",\n )}\n onClick={\n section.collapsible ? () => setIsCollapsed(!isCollapsed) : undefined\n }\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {section.icon}\n <CardTitle className=\"text-lg\">{section.title}</CardTitle>\n </div>\n {section.collapsible && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n </Button>\n )}\n </div>\n {section.description && (\n <CardDescription>{section.description}</CardDescription>\n )}\n </CardHeader>\n {!isCollapsed && (\n <CardContent>\n <GridLayout columns={section.columns}>\n {sectionFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n </CardContent>\n )}\n </Card>\n );\n}\n","\"use client\";\nimport React, { ReactNode } from \"react\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"@/components/ui/tabs\";\nimport { cn } from \"@/lib/utils\";\nimport { TabConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface TabRendererProps<TData extends Record<string, any>> {\n tabs: TabConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n}\n\nexport function TabRenderer<TData extends Record<string, any>>({\n tabs,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n}: TabRendererProps<TData>): ReactNode {\n const firstTab = tabs[0]?.id;\n\n return (\n <Tabs defaultValue={firstTab}>\n <TabsList>\n {tabs.map((tab) => {\n const isDisabled = tab.disabled ? tab.disabled(data) : false;\n const badge =\n typeof tab.badge === \"function\" ? tab.badge(data) : tab.badge;\n\n return (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n disabled={isDisabled}\n >\n <span className=\"flex items-center gap-2\">\n {tab.icon}\n {tab.label}\n {badge !== undefined && badge !== null && (\n <span className=\"ml-1 rounded-full bg-muted px-2 py-0.5 text-xs\">\n {badge}\n </span>\n )}\n </span>\n </TabsTrigger>\n );\n })}\n </TabsList>\n {tabs.map((tab) => {\n const tabFields = tab.fields\n ? fields.filter((f) => tab.fields!.includes(f.name))\n : [];\n\n return (\n <TabsContent key={tab.id} value={tab.id} className=\"mt-4\">\n {tab.sections ? (\n <div className=\"space-y-4\">\n {tab.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {tabFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) =>\n onChange(field.name as keyof TData, v)\n }\n onBlur={\n onBlur ? () => onBlur(field.name) : undefined\n }\n />\n );\n })}\n </GridLayout>\n )}\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { WizardStepConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface WizardRendererProps<TData extends Record<string, any>> {\n steps: WizardStepConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n onSubmit: () => void;\n processing?: boolean;\n}\n\nexport function WizardRenderer<TData extends Record<string, any>>({\n steps,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n onSubmit,\n processing = false,\n}: WizardRendererProps<TData>): ReactNode {\n const [currentStep, setCurrentStep] = useState(0);\n\n const currentStepConfig = steps[currentStep];\n const isLastStep = currentStep === steps.length - 1;\n const isFirstStep = currentStep === 0;\n const progressPercent = Math.round(((currentStep + 1) / steps.length) * 100);\n\n const canProceed = currentStepConfig?.canProceed\n ? currentStepConfig.canProceed(data)\n : true;\n\n const handleNext = useCallback(async () => {\n if (currentStepConfig?.beforeNext) {\n const canContinue = await currentStepConfig.beforeNext(data);\n if (!canContinue) return;\n }\n if (isLastStep) {\n onSubmit();\n } else {\n setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));\n }\n }, [currentStep, currentStepConfig, data, isLastStep, onSubmit, steps.length]);\n\n const handlePrevious = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const stepFields = currentStepConfig?.fields\n ? fields.filter((f) => currentStepConfig.fields!.includes(f.name))\n : [];\n\n return (\n <div className=\"space-y-6\">\n {/* Progress header */}\n <div className=\"rounded-lg bg-muted/50 p-6\">\n <p className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">\n Step: {currentStep + 1} of {steps.length}\n </p>\n <div className=\"mt-1 flex items-center justify-between gap-4\">\n <div>\n <h3 className=\"text-xl font-bold text-foreground\">\n {currentStepConfig?.label}\n </h3>\n {currentStepConfig?.description && (\n <p className=\"mt-0.5 text-sm text-muted-foreground\">\n {currentStepConfig.description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-3 w-40 overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-primary transition-all duration-300 ease-in-out\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n <span className=\"text-sm font-medium text-muted-foreground\">\n {progressPercent}%\n </span>\n </div>\n </div>\n </div>\n\n {/* Step content */}\n <div>\n {currentStepConfig?.sections ? (\n <div className=\"space-y-4\">\n {currentStepConfig.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {stepFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n )}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button\n type={isLastStep ? \"submit\" : \"button\"}\n onClick={handleNext}\n disabled={!canProceed || (isLastStep && processing)}\n >\n {isLastStep\n ? processing\n ? \"Processing...\"\n : \"Submit\"\n : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useMemo, useCallback } from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { FormBuildResult, BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\nimport { FormActions } from \"./form-actions\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { TabRenderer } from \"./tab-renderer\";\nimport { WizardRenderer } from \"./wizard-renderer\";\n\nexport interface FormRendererProps<TData extends Record<string, any>> {\n schema: FormBuildResult<TData>;\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onSubmit: () => void;\n processing?: boolean;\n className?: string;\n disabled?: boolean;\n onBlur?: (field: string) => void;\n}\n\nexport function FormRenderer<TData extends Record<string, any>>({\n schema,\n data,\n errors,\n onChange,\n onSubmit,\n processing = false,\n className,\n disabled = false,\n onBlur,\n}: FormRendererProps<TData>): ReactNode {\n const { fields, config } = schema;\n\n const resolvedTitle = useMemo(() => {\n if (typeof config.title === \"function\") return config.title(data);\n return config.title;\n }, [config.title, data]);\n\n const resolvedDescription = useMemo(() => {\n if (typeof config.description === \"function\")\n return config.description(data);\n return config.description;\n }, [config.description, data]);\n\n const isFieldVisible = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (typeof field.config.hidden === \"function\")\n return !field.config.hidden(data);\n if (typeof field.config.hidden === \"boolean\")\n return !field.config.hidden;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"show\" && !dep.condition(depValue, data))\n return false;\n if (dep.effect === \"hide\" && dep.condition(depValue, data))\n return false;\n }\n return true;\n },\n [data],\n );\n\n const isFieldDisabled = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (disabled) return true;\n if (typeof config.disabled === \"function\" && config.disabled(data))\n return true;\n if (typeof config.disabled === \"boolean\" && config.disabled) return true;\n if (typeof field.config.disabled === \"function\")\n return field.config.disabled(data);\n if (typeof field.config.disabled === \"boolean\")\n return field.config.disabled;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"disable\" && dep.condition(depValue, data))\n return true;\n if (\n dep.effect === \"enable\" &&\n !dep.condition(depValue, data)\n )\n return true;\n }\n return false;\n },\n [disabled, config.disabled, data],\n );\n\n const renderFieldsFlat = () => (\n <GridLayout columns={config.columns}>\n {fields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n );\n\n const renderContent = () => {\n // Wizard mode\n if (config.wizardSteps?.length) {\n return (\n <WizardRenderer\n steps={config.wizardSteps}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n onSubmit={onSubmit}\n processing={processing}\n />\n );\n }\n\n // Tabs mode\n if (config.tabs?.length) {\n return (\n <TabRenderer\n tabs={config.tabs}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n />\n );\n }\n\n // Sections mode\n if (config.sections?.length) {\n return (\n <div className=\"space-y-4\">\n {config.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n );\n }\n\n // Flat mode (default)\n return renderFieldsFlat();\n };\n\n const spacingClass = {\n compact: \"space-y-3\",\n normal: \"space-y-6\",\n relaxed: \"space-y-8\",\n }[config.spacing || \"normal\"];\n\n // Wizard handles its own submit button\n const showActions =\n config.actions?.length && !config.wizardSteps?.length;\n\n const formBody = (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n className={cn(spacingClass, className)}\n >\n {(resolvedTitle || resolvedDescription) && (\n <div className=\"space-y-1\">\n {resolvedTitle && (\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n {resolvedTitle}\n </h2>\n )}\n {resolvedDescription && (\n <p className=\"text-sm text-muted-foreground\">\n {resolvedDescription}\n </p>\n )}\n </div>\n )}\n\n {renderContent()}\n\n {showActions && (\n <FormActions\n actions={config.actions!}\n position={config.actionsPosition}\n data={data}\n processing={processing}\n />\n )}\n </form>\n );\n\n if (config.bordered) {\n return (\n <Card>\n <CardContent className=\"pt-6\">{formBody}</CardContent>\n </Card>\n );\n }\n\n return formBody;\n}\n"],"names":["_jsx","_jsxs","_Fragment","Select","Checkbox","ShadcnTextarea","ShadcnSelect","ShadcnCheckbox","ShadcnRadioGroup","Calendar"],"mappings":"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"}
|