@mdigital_ui/ui 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/button/index.js +1 -1
- package/dist/cascader/index.js +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/{chunk-W7BQYIXF.js → chunk-267WNY3E.js} +6 -6
- package/dist/chunk-267WNY3E.js.map +1 -0
- package/dist/{chunk-H2HIBD5Y.js → chunk-4XXDRVFM.js} +3 -3
- package/dist/chunk-4XXDRVFM.js.map +1 -0
- package/dist/{chunk-E2CYDDYC.js → chunk-6V5I5HJ2.js} +3 -3
- package/dist/{chunk-E2CYDDYC.js.map → chunk-6V5I5HJ2.js.map} +1 -1
- package/dist/{chunk-L3SP7GHC.js → chunk-77DW6PAW.js} +5 -5
- package/dist/{chunk-L3SP7GHC.js.map → chunk-77DW6PAW.js.map} +1 -1
- package/dist/{chunk-JZCHZ4B3.js → chunk-ASW7TEAN.js} +3 -3
- package/dist/chunk-ASW7TEAN.js.map +1 -0
- package/dist/{chunk-EYTOKUBM.js → chunk-BH4DXQC4.js} +3 -3
- package/dist/{chunk-EYTOKUBM.js.map → chunk-BH4DXQC4.js.map} +1 -1
- package/dist/{chunk-SERJ3TZE.js → chunk-G6TAVRTJ.js} +3 -3
- package/dist/chunk-G6TAVRTJ.js.map +1 -0
- package/dist/{chunk-KTBPIEP2.js → chunk-GEWR5ROK.js} +3 -3
- package/dist/chunk-GEWR5ROK.js.map +1 -0
- package/dist/{chunk-RQBXZKTH.js → chunk-JLTDJ3VZ.js} +6 -6
- package/dist/{chunk-RQBXZKTH.js.map → chunk-JLTDJ3VZ.js.map} +1 -1
- package/dist/{chunk-LBJG2UWT.js → chunk-KTAIRCOL.js} +3 -3
- package/dist/{chunk-LBJG2UWT.js.map → chunk-KTAIRCOL.js.map} +1 -1
- package/dist/{chunk-52M2PO3O.js → chunk-QPJL66S7.js} +3 -3
- package/dist/chunk-QPJL66S7.js.map +1 -0
- package/dist/{chunk-CLLQDCDR.js → chunk-UAMFKX6L.js} +6 -6
- package/dist/chunk-UAMFKX6L.js.map +1 -0
- package/dist/{chunk-2JGAYDZR.js → chunk-XMKNYG7I.js} +6 -6
- package/dist/{chunk-2JGAYDZR.js.map → chunk-XMKNYG7I.js.map} +1 -1
- package/dist/{chunk-AOITJRSV.js → chunk-YZ6V6BQ7.js} +3 -3
- package/dist/chunk-YZ6V6BQ7.js.map +1 -0
- package/dist/date-picker/index.js +1 -1
- package/dist/index.js +19 -19
- package/dist/input/index.js +1 -1
- package/dist/input-password/index.js +2 -2
- package/dist/multi-select/index.js +1 -1
- package/dist/progress/index.js +1 -1
- package/dist/radio/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/styles/base.css +1923 -182
- package/dist/styles/global.css +241 -175
- package/dist/styles/themes/dark.css +44 -40
- package/dist/styles/themes/light.css +12 -9
- package/dist/switch/index.js +1 -1
- package/dist/table/index.js +4 -4
- package/dist/transfer/index.js +2 -2
- package/dist/tree-select/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-52M2PO3O.js.map +0 -1
- package/dist/chunk-AOITJRSV.js.map +0 -1
- package/dist/chunk-CLLQDCDR.js.map +0 -1
- package/dist/chunk-H2HIBD5Y.js.map +0 -1
- package/dist/chunk-JZCHZ4B3.js.map +0 -1
- package/dist/chunk-KTBPIEP2.js.map +0 -1
- package/dist/chunk-SERJ3TZE.js.map +0 -1
- package/dist/chunk-W7BQYIXF.js.map +0 -1
- package/examples/README.md +0 -166
- package/examples/custom-theme.css +0 -189
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/table/EditableCell.tsx","../src/table/TableActions.tsx","../src/table/variants.ts","../src/table/TableCell.tsx","../src/table/TableHeaderCell.tsx","../src/table/TableRow.tsx","../src/table/TableSkeleton.tsx","../src/table/index.tsx"],"names":["jsx","jsxs","_","useState","useRef","useEffect","table","ChevronDown","Pin","PinOff","Fragment","pageSize"],"mappings":"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","file":"chunk-L3SP7GHC.js","sourcesContent":["import { useEffect, useRef, useState } from 'react'\n\nimport Input from '../input'\nimport { cn } from '../utils'\nimport type { TableSize } from './types'\n\ninterface EditableCellProps<TValue = unknown> {\n value: TValue\n onValueChange: (value: TValue) => void\n size?: TableSize\n className?: string\n}\n\nexport function EditableCell<TValue = unknown>({\n value,\n onValueChange,\n size = 'md',\n className,\n}: EditableCellProps<TValue>) {\n const [isEditing, setIsEditing] = useState(false)\n const [editValue, setEditValue] = useState(String(value ?? ''))\n const inputRef = useRef<HTMLInputElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus()\n inputRef.current.select()\n }\n }, [isEditing])\n\n useEffect(() => {\n setEditValue(String(value ?? ''))\n }, [value])\n\n const handleSave = () => {\n setIsEditing(false)\n if (editValue !== String(value ?? '')) {\n onValueChange(editValue as TValue)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n handleSave()\n } else if (e.key === 'Escape') {\n setEditValue(String(value ?? ''))\n setIsEditing(false)\n }\n }\n\n const sizeClasses = {\n xs: 'text-xs py-0.5',\n sm: 'text-sm py-1',\n md: 'text-base py-1.5',\n lg: 'text-lg py-2',\n }\n\n const inputSizeMap = {\n xs: 'sm' as const,\n sm: 'sm' as const,\n md: 'md' as const,\n lg: 'lg' as const,\n }\n\n return (\n <div\n ref={containerRef}\n className=\"relative w-full max-w-full overflow-hidden\"\n >\n {isEditing ? (\n <div className=\"w-full\">\n <Input\n ref={inputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onBlur={handleSave}\n onKeyDown={handleKeyDown}\n size={inputSizeMap[size]}\n className={cn('w-full min-w-0 max-w-full', className)}\n />\n </div>\n ) : (\n <div\n onClick={() => setIsEditing(true)}\n className={cn(\n 'cursor-text hover:bg-surface/50 rounded transition-colors min-h-[20px] px-3 w-full overflow-hidden text-ellipsis whitespace-nowrap',\n sizeClasses[size],\n className,\n )}\n title=\"Click to edit\"\n >\n {String(value ?? '')}\n </div>\n )}\n </div>\n )\n}\n\nEditableCell.displayName = 'EditableCell'\n","import { Columns3, Search } from 'lucide-react'\n\nimport Button from '../button'\nimport Checkbox from '../checkbox'\nimport Input from '../input'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport ToggleGroup from '../toggle-group'\nimport { iconSizes } from '../utils'\nimport type { TableColor, TableSize } from './types'\n\ninterface TableActionsProps {\n searchValue: string\n onSearchChange: (value: string) => void\n visibleColumns: string[]\n allColumns: Array<{ id: string; label: string }>\n onVisibleColumnsChange: (columns: string[]) => void\n size: TableSize\n onSizeChange: (size: TableSize) => void\n color?: TableColor\n}\n\nexport function TableActions({\n searchValue,\n onSearchChange,\n visibleColumns,\n allColumns,\n onVisibleColumnsChange,\n size,\n onSizeChange,\n color = 'default',\n}: TableActionsProps) {\n const handleColumnToggle = (columnId: string) => {\n if (visibleColumns.includes(columnId)) {\n onVisibleColumnsChange(visibleColumns.filter((id) => id !== columnId))\n } else {\n onVisibleColumnsChange([...visibleColumns, columnId])\n }\n }\n\n const sizeOptions = [\n { value: 'sm', label: 'SM' },\n { value: 'md', label: 'MD' },\n { value: 'lg', label: 'LG' },\n ]\n\n return (\n <div className=\"flex flex-wrap items-center gap-4 rounded-md\">\n {/* Search Input - Left */}\n <div className=\"w-auto mr-auto\">\n <Input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchValue}\n onChange={(e) => onSearchChange(e.target.value)}\n size=\"sm\"\n rightIcon={<Search className={iconSizes[size]} />}\n />\n </div>\n\n {/* Column Visibility Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<Columns3 className={iconSizes[size]} />}\n >\n Columns\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56 p-2\">\n <div className=\"space-y-1 max-h-[300px] overflow-y-auto\">\n {allColumns.map((col) => (\n <label\n key={col.id}\n className=\"flex items-center gap-2 px-3 py-2 hover:bg-surface rounded cursor-pointer\"\n >\n <Checkbox\n checked={visibleColumns.includes(col.id)}\n onChange={() => handleColumnToggle(col.id)}\n color={color === 'default' ? 'primary' : color}\n size=\"sm\"\n />\n <span className=\"text-sm text-text-primary\">{col.label}</span>\n </label>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Size Toggle Group */}\n <ToggleGroup\n options={sizeOptions}\n value={size}\n onChange={(value) => onSizeChange(value as TableSize)}\n color={color}\n size=\"sm\"\n variant=\"default\"\n />\n </div>\n )\n}\n\nTableActions.displayName = 'TableActions'\n","import { cva } from 'class-variance-authority'\n\nexport const tableVariants = cva('w-full border-collapse', {\n variants: {\n variant: {\n outline: '',\n line: '',\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n})\n\nexport const cellVariants = cva('text-left transition-colors', {\n variants: {\n size: {\n xs: 'px-2 py-1 text-xs',\n sm: 'px-3 py-2 text-sm',\n md: 'px-4 py-3 text-base',\n lg: 'px-6 py-4 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import { cn } from '../utils'\nimport type { TableSize } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n size?: TableSize\n bordered?: boolean\n fixed?: 'left' | 'right'\n}\n\nexport const TableCell = ({\n size = 'md',\n bordered = false,\n fixed,\n className,\n children,\n ...props\n}: TableCellProps) => {\n return (\n <td\n className={cn(\n cellVariants({ size }),\n 'text-text-primary',\n bordered && 'border-r border-border last:border-r-0',\n fixed === 'left' && 'sticky left-0 bg-background z-10',\n fixed === 'right' && 'sticky right-0 bg-background z-10',\n className,\n )}\n {...props}\n >\n {children}\n </td>\n )\n}\n\nTableCell.displayName = 'TableCell'\n","import type { Header } from '@tanstack/react-table'\nimport { ChevronDown, ChevronsUpDown, Pin, PinOff } from 'lucide-react'\n\nimport { cn } from '../utils'\nimport type { TableColor, TableSize, TableVariant } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableHeaderCellProps<TData>\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n header: Header<TData, unknown>\n size?: TableSize\n variant?: TableVariant\n color?: TableColor\n bordered?: boolean\n enableColumnPinning?: boolean\n}\n\nexport function TableHeaderCell<TData>({\n header,\n size = 'md',\n variant = 'outline',\n color = 'default',\n bordered = false,\n enableColumnPinning = false,\n className,\n ...props\n}: TableHeaderCellProps<TData>) {\n const isPinnedLeft = header.column.getIsPinned() === 'left'\n const isPinnedRight = header.column.getIsPinned() === 'right'\n\n const colorHoverClasses = {\n default: 'hover:bg-surface',\n primary: 'hover:bg-primary/10',\n secondary: 'hover:bg-secondary/10',\n accent: 'hover:bg-accent/10',\n success: 'hover:bg-success/10',\n error: 'hover:bg-error/10',\n warning: 'hover:bg-warning/10',\n info: 'hover:bg-info/10',\n }\n\n const colorIconClasses = {\n default: 'text-text-primary',\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n success: 'text-success',\n error: 'text-error',\n warning: 'text-warning',\n info: 'text-info',\n }\n\n return (\n <th\n className={cn(\n cellVariants({ size }),\n 'font-semibold text-text-primary border-b border-border relative group',\n variant === 'line' && 'border-b-2',\n bordered && 'border-r border-border last:border-r-0',\n header.column.getCanSort() &&\n 'cursor-pointer select-none hover:bg-background',\n isPinnedLeft && 'sticky left-0 bg-surface z-20',\n isPinnedRight && 'sticky right-0 bg-surface z-20',\n className,\n )}\n onClick={header.column.getToggleSortingHandler()}\n {...props}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"flex-1\">\n {header.isPlaceholder\n ? null\n : typeof header.column.columnDef.header === 'function'\n ? header.column.columnDef.header(header.getContext())\n : header.column.columnDef.header}\n </span>\n <div className=\"flex items-center gap-1\">\n {header.column.getCanSort() && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n header.column.toggleSorting()\n }}\n className={cn(\n 'p-1 rounded transition-all',\n header.column.getIsSorted()\n ? `opacity-100 ${colorHoverClasses[color]}`\n : `opacity-0 group-hover:opacity-100 ${colorHoverClasses[color]}`,\n header.column.getIsSorted() && colorIconClasses[color],\n )}\n >\n {header.column.getIsSorted() === 'asc' ? (\n <ChevronDown className=\"w-3.5 h-3.5 rotate-180\" />\n ) : header.column.getIsSorted() === 'desc' ? (\n <ChevronDown className=\"w-3.5 h-3.5\" />\n ) : (\n <ChevronsUpDown className=\"w-3.5 h-3.5\" />\n )}\n </button>\n )}\n {enableColumnPinning && header.column.getCanPin() && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n const isPinned = header.column.getIsPinned()\n if (isPinned) {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n className={cn(\n 'p-1 rounded transition-all',\n isPinnedLeft || isPinnedRight\n ? `opacity-100 ${colorHoverClasses[color]} ${colorIconClasses[color]}`\n : `opacity-0 group-hover:opacity-100 ${colorHoverClasses[color]}`,\n )}\n >\n {isPinnedLeft || isPinnedRight ? (\n <PinOff className=\"w-3.5 h-3.5\" />\n ) : (\n <Pin className=\"w-3.5 h-3.5\" />\n )}\n </button>\n )}\n </div>\n </div>\n </th>\n )\n}\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import type { Row } from '@tanstack/react-table'\n\nimport { cn } from '../utils'\n\ninterface TableRowProps<TData>\n extends React.HTMLAttributes<HTMLTableRowElement> {\n row: Row<TData>\n index: number\n striped?: boolean\n hoverable?: boolean\n onRowClick?: (row: TData) => void\n isPinned?: boolean\n isExpanded?: boolean\n}\n\nexport function TableRow<TData>({\n row,\n index,\n striped = false,\n hoverable = true,\n onRowClick,\n isPinned = false,\n isExpanded = false,\n className,\n children,\n ...props\n}: TableRowProps<TData>) {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (onRowClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onRowClick(row.original)\n }\n }\n\n return (\n <tr\n className={cn(\n 'border-b border-border last:border-b-0',\n striped && index % 2 === 1 && 'bg-surface/50',\n hoverable && 'hover:bg-surface cursor-pointer',\n onRowClick && 'cursor-pointer',\n isPinned && 'bg-primary/5 border-primary/20',\n row.getIsSelected() && 'bg-primary/10',\n className,\n )}\n onClick={() => onRowClick?.(row.original)}\n onKeyDown={handleKeyDown}\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? 'button' : undefined}\n {...props}\n >\n {children}\n </tr>\n )\n}\n\nTableRow.displayName = 'TableRow'\n","import { cn } from '../utils'\nimport type { TableSize } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableSkeletonProps {\n rows?: number\n columns: number\n size?: TableSize\n}\n\nexport const TableSkeleton = ({\n rows = 5,\n columns,\n size = 'md',\n}: TableSkeletonProps) => {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr\n key={rowIndex}\n className=\"border-b border-border\"\n >\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td\n key={colIndex}\n className={cn(cellVariants({ size }))}\n >\n <div className=\"animate-pulse\">\n <div className=\"h-4 bg-surface rounded w-full\" />\n </div>\n </td>\n ))}\n </tr>\n ))}\n </>\n )\n}\n\nTableSkeleton.displayName = 'TableSkeleton'\n","import {\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n type GroupingState,\n type Row,\n type SortingState,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { ChevronDown, ChevronRight, Inbox, Pin, PinOff } from 'lucide-react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nimport Checkbox from '../checkbox'\nimport Pagination from '../pagination'\nimport { cn, iconSizes } from '../utils'\nimport { EditableCell } from './EditableCell'\nimport { TableActions } from './TableActions'\nimport { TableCell } from './TableCell'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { TableRow } from './TableRow'\nimport { TableSkeleton } from './TableSkeleton'\nimport type {\n TableCellContext,\n TableHeaderContext,\n TableProps,\n TableSize,\n} from './types'\nimport { cellVariants } from './variants'\n\nfunction Table<TData>({\n data,\n columns,\n columnGroups,\n variant = 'outline',\n size: initialSize = 'md',\n color = 'default',\n striped = false,\n hoverable = true,\n bordered = false,\n enableSorting = true,\n enableFiltering = false,\n enablePagination = false,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableRowPinning = false,\n enableExpandable = false,\n enableGrouping = false,\n enableVirtualization = false,\n enableClickToSelect = false,\n enableColumnPinning = false,\n enableActions = false,\n paginationPosition = 'bottomcenter',\n expandedContent,\n footer,\n emptyState,\n loading = false,\n loadingRows = 5,\n pageSize = 10,\n pageSizeOptions = [5, 10, 20, 50],\n onRowClick,\n onSelectionChange,\n onCellEdit,\n pinnedRowIds = [],\n onPinnedRowsChange,\n className,\n}: TableProps<TData>) {\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [rowSelection, setRowSelection] = useState({})\n const [expanded, setExpanded] = useState<ExpandedState>({})\n const [grouping, setGrouping] = useState<GroupingState>([])\n const [pinnedRows, setPinnedRows] = useState<string[]>(pinnedRowIds)\n const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({\n left: [],\n right: [],\n })\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n const [searchValue, setSearchValue] = useState('')\n const [size, setSize] = useState<TableSize>(initialSize)\n\n const tableContainerRef = useRef<HTMLDivElement>(null)\n const prevAutoPinnedIdsRef = useRef<string>('')\n\n // Memoize auto-pinned IDs to prevent infinite loops\n const autoPinnedIds = useMemo(() => {\n if (!enableRowPinning || data.length === 0) return []\n\n return data\n .map((row, index) => ({ row, id: String(index) }))\n .filter(({ row }) => (row as Record<string, unknown>).pin === true)\n .map(({ id }) => id)\n }, [data, enableRowPinning])\n\n // Initialize pinned rows from data\n useEffect(() => {\n if (autoPinnedIds.length > 0) {\n const combinedPinnedIds = [\n ...new Set([...pinnedRowIds, ...autoPinnedIds]),\n ]\n\n // Only update if auto-pinned IDs changed (use string comparison to avoid array reference issues)\n const autoPinnedIdsStr = autoPinnedIds.sort().join(',')\n if (autoPinnedIdsStr !== prevAutoPinnedIdsRef.current) {\n prevAutoPinnedIdsRef.current = autoPinnedIdsStr\n setPinnedRows(combinedPinnedIds)\n }\n }\n }, [autoPinnedIds, pinnedRowIds])\n\n // Initialize column pinning from column definitions\n useEffect(() => {\n if (enableColumnPinning && columns.length > 0) {\n const leftPinned = columns\n .filter((col) => (col as unknown as Record<string, unknown>).pin === 'left')\n .map(\n (col) =>\n (col.id as string) ||\n ((col as unknown as Record<string, unknown>).accessorKey as string),\n )\n const rightPinned = columns\n .filter((col) => (col as unknown as Record<string, unknown>).pin === 'right')\n .map(\n (col) =>\n (col.id as string) ||\n ((col as unknown as Record<string, unknown>).accessorKey as string),\n )\n\n if (leftPinned.length > 0 || rightPinned.length > 0) {\n setColumnPinning({\n left: leftPinned,\n right: rightPinned,\n })\n }\n }\n }, [columns, enableColumnPinning])\n\n // Add selection column if row selection is enabled\n const enhancedColumns = useMemo(\n () =>\n enableRowSelection\n ? [\n {\n id: 'select',\n header: ({ table }: TableHeaderContext<TData>) =>\n enableMultiRowSelection ? (\n <Checkbox\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n size=\"sm\"\n />\n ) : null,\n cell: ({ row }: TableCellContext<TData>) => (\n <Checkbox\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onChange={row.getToggleSelectedHandler()}\n size=\"sm\"\n />\n ),\n size: 50,\n },\n ...columns,\n ]\n : columns,\n [columns, enableRowSelection, enableMultiRowSelection],\n )\n\n // Add expand column if expandable is enabled\n const finalColumns = useMemo(\n () =>\n enableExpandable\n ? [\n {\n id: 'expand',\n header: () => null,\n cell: ({ row }: TableCellContext<TData>) => (\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary transition-colors\"\n aria-label={\n row.getIsExpanded() ? 'Collapse row' : 'Expand row'\n }\n aria-expanded={row.getIsExpanded()}\n >\n {row.getIsExpanded() ? (\n <ChevronDown\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n ) : (\n <ChevronRight\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n )}\n </button>\n ),\n size: 50,\n },\n ...enhancedColumns,\n ]\n : enhancedColumns,\n [enhancedColumns, enableExpandable],\n )\n\n // Add pin column if row pinning is enabled\n const columnsWithPinning = useMemo(\n () =>\n enableRowPinning\n ? [\n ...finalColumns,\n {\n id: 'pin',\n header: () => <Pin className=\"w-4 h-4 text-text-muted\" />,\n cell: ({ row }: TableCellContext<TData>) => {\n const rowId = row.id\n const isPinned = pinnedRows.includes(rowId)\n\n return (\n <button\n onClick={(e) => {\n e.stopPropagation()\n const newPinnedRows = isPinned\n ? pinnedRows.filter((id) => id !== rowId)\n : [...pinnedRows, rowId]\n setPinnedRows(newPinnedRows)\n onPinnedRowsChange?.(newPinnedRows)\n }}\n className={cn(\n 'text-text-muted hover:text-text-primary transition-colors',\n isPinned && 'text-primary',\n )}\n aria-label={isPinned ? 'Unpin row' : 'Pin row'}\n aria-pressed={isPinned}\n >\n {isPinned ? (\n <PinOff\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n ) : (\n <Pin\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n )}\n </button>\n )\n },\n size: 50,\n },\n ]\n : finalColumns,\n [finalColumns, enableRowPinning, pinnedRows, onPinnedRowsChange],\n )\n\n // Wrap editable columns with EditableCell\n const columnsWithEditable = useMemo(\n () =>\n columnsWithPinning.map((col) => {\n const colAny = col as Record<string, unknown>\n if (colAny.editable && onCellEdit) {\n return {\n ...col,\n cell: ({ row, getValue }: TableCellContext<TData>) => {\n const value =\n getValue?.() ??\n (row.original as Record<string, unknown>)[\n colAny.accessorKey as string\n ]\n return (\n <EditableCell\n value={value}\n size={size}\n onValueChange={(newValue) => {\n onCellEdit({\n rowIndex: row.index,\n columnId:\n (colAny.id as string) || (colAny.accessorKey as string),\n value: newValue,\n row: row.original,\n })\n }}\n />\n )\n },\n }\n }\n return col\n }),\n [columnsWithPinning, onCellEdit, size],\n )\n\n // Filter data based on search\n const filteredData = useMemo(() => {\n if (!enableActions || !searchValue.trim()) {\n return data\n }\n\n const searchLower = searchValue.toLowerCase()\n return data.filter((row) => {\n return Object.values(row as Record<string, unknown>).some((value) =>\n String(value).toLowerCase().includes(searchLower),\n )\n })\n }, [data, searchValue, enableActions])\n\n // Build column list for actions\n const allColumnsList = useMemo(() => {\n return columns.map((col) => {\n const colAny = col as unknown as Record<string, unknown>\n return {\n id: (col.id as string) || (colAny.accessorKey as string),\n label:\n typeof colAny.header === 'string'\n ? colAny.header\n : (col.id as string) || (colAny.accessorKey as string),\n }\n })\n }, [columns])\n\n const visibleColumnIds = useMemo(() => {\n return Object.keys(columnVisibility).length === 0\n ? allColumnsList.map((c) => c.id)\n : allColumnsList\n .filter((c) => columnVisibility[c.id] !== false)\n .map((c) => c.id)\n }, [columnVisibility, allColumnsList])\n\n const table = useReactTable({\n data: filteredData,\n columns: columnsWithEditable as typeof columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: enableFiltering ? getFilteredRowModel() : undefined,\n getPaginationRowModel:\n enablePagination && !enableVirtualization\n ? getPaginationRowModel()\n : undefined,\n getExpandedRowModel: enableExpandable ? getExpandedRowModel() : undefined,\n getGroupedRowModel: enableGrouping ? getGroupedRowModel() : undefined,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onRowSelectionChange: setRowSelection,\n onExpandedChange: setExpanded,\n onGroupingChange: setGrouping,\n onColumnPinningChange: setColumnPinning,\n onColumnVisibilityChange: setColumnVisibility,\n enableRowSelection,\n enableMultiRowSelection,\n enableGrouping,\n enableColumnPinning,\n getRowCanExpand: enableExpandable ? () => true : undefined,\n state: {\n sorting,\n columnFilters,\n rowSelection,\n expanded,\n grouping,\n columnPinning,\n columnVisibility,\n },\n initialState: {\n pagination: {\n pageSize,\n },\n },\n })\n\n // Notify parent of selection changes\n useEffect(() => {\n if (onSelectionChange) {\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((row) => row.original)\n onSelectionChange(selectedRows)\n }\n }, [rowSelection, onSelectionChange, table])\n\n // Separate pinned and unpinned rows\n const rows = table.getRowModel().rows\n const pinnedRowsData = rows.filter((row) => pinnedRows.includes(row.id))\n const unpinnedRows = rows.filter((row) => !pinnedRows.includes(row.id))\n const allRowsOrdered = [...pinnedRowsData, ...unpinnedRows]\n\n // Virtualization setup\n const rowVirtualizer = useVirtualizer({\n count: allRowsOrdered.length,\n getScrollElement: () => tableContainerRef.current,\n estimateSize: () => (size === 'sm' ? 44 : size === 'lg' ? 68 : 56),\n overscan: 5,\n enabled: enableVirtualization,\n })\n\n const handleRowClick = (row: Row<TData>, rowData: TData) => {\n if (enableClickToSelect && enableRowSelection) {\n row.toggleSelected()\n }\n onRowClick?.(rowData)\n }\n\n // Build column groups map\n const columnGroupsMap = new Map<string, { header: string; span: number }>()\n if (columnGroups) {\n columnGroups.forEach((group) => {\n group.columns.forEach((colId) => {\n columnGroupsMap.set(colId, {\n header: group.header,\n span: group.columns.length,\n })\n })\n })\n }\n\n const renderColumnGroups = () => {\n if (!columnGroups || columnGroups.length === 0) return null\n\n const headerGroups = table.getHeaderGroups()[0]\n if (!headerGroups) return null\n\n const groupedHeaders: Array<{\n header: string\n span: number\n startIndex: number\n }> = []\n const processedCols = new Set<string>()\n\n headerGroups.headers.forEach((header, index) => {\n const colId = header.column.id\n\n if (processedCols.has(colId)) return\n\n const group = columnGroups.find((g) => g.columns.includes(colId))\n\n if (group) {\n // Mark all columns in this group as processed\n group.columns.forEach((c) => processedCols.add(c))\n\n groupedHeaders.push({\n header: group.header,\n span: group.columns.length,\n startIndex: index,\n })\n } else {\n groupedHeaders.push({\n header: '',\n span: 1,\n startIndex: index,\n })\n }\n })\n\n return (\n <tr className=\"border-b border-border\">\n {groupedHeaders.map((group, idx) => (\n <th\n key={idx}\n colSpan={group.span}\n className={cn(\n cellVariants({ size }),\n 'font-bold text-text-primary bg-surface/70 border-border text-center',\n bordered && 'border-r border-border last:border-r-0',\n )}\n >\n {group.header}\n </th>\n ))}\n </tr>\n )\n }\n\n const renderRows = () => {\n if (loading) {\n return (\n <TableSkeleton\n rows={loadingRows}\n columns={columnsWithPinning.length}\n size={size}\n />\n )\n }\n\n if (allRowsOrdered.length === 0) {\n return (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n className=\"px-4 py-12 text-center\"\n >\n {emptyState || (\n <div className=\"flex flex-col items-center justify-center gap-2 text-text-muted\">\n <Inbox className=\"w-12 h-12 opacity-20\" />\n <p className=\"text-sm\">No data available</p>\n </div>\n )}\n </td>\n </tr>\n )\n }\n\n if (enableVirtualization) {\n const virtualRows = rowVirtualizer.getVirtualItems()\n const paddingTop = virtualRows.length > 0 ? virtualRows[0]?.start || 0 : 0\n const paddingBottom =\n virtualRows.length > 0\n ? rowVirtualizer.getTotalSize() -\n (virtualRows[virtualRows.length - 1]?.end || 0)\n : 0\n\n return (\n <>\n {paddingTop > 0 && (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n style={{ height: `${paddingTop}px`, padding: 0, border: 0 }}\n />\n </tr>\n )}\n {virtualRows.map((virtualRow) => {\n const row = allRowsOrdered[virtualRow.index]\n if (!row) return null\n\n const isLastVirtualRow =\n virtualRow.index === allRowsOrdered.length - 1\n\n return (\n <TableRow\n key={row.id}\n row={row}\n index={virtualRow.index}\n striped={striped}\n hoverable={hoverable}\n onRowClick={() => handleRowClick(row, row.original)}\n isPinned={pinnedRows.includes(row.id)}\n className={cn(isLastVirtualRow && 'border-b-0')}\n >\n {row.getVisibleCells().map((cell) => {\n const isPinnedLeft = cell.column.getIsPinned() === 'left'\n const isPinnedRight = cell.column.getIsPinned() === 'right'\n\n return (\n <TableCell\n key={cell.id}\n size={size}\n bordered={bordered}\n fixed={\n isPinnedLeft\n ? 'left'\n : isPinnedRight\n ? 'right'\n : undefined\n }\n >\n {cell.getIsGrouped() ? (\n <div className=\"flex items-center gap-2\">\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary\"\n >\n {row.getIsExpanded() ? (\n <ChevronDown className={iconSizes[size]} />\n ) : (\n <ChevronRight className={iconSizes[size]} />\n )}\n </button>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}{' '}\n ({row.subRows.length})\n </div>\n ) : cell.getIsAggregated() ? (\n flexRender(\n cell.column.columnDef.aggregatedCell ??\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n ) : cell.getIsPlaceholder() ? null : (\n flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n )}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n {paddingBottom > 0 && (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n style={{ height: `${paddingBottom}px`, padding: 0, border: 0 }}\n />\n </tr>\n )}\n </>\n )\n }\n\n return allRowsOrdered.map((row, index) => (\n <>\n <TableRow\n key={row.id}\n row={row}\n index={index}\n striped={striped}\n hoverable={hoverable}\n onRowClick={() => handleRowClick(row, row.original)}\n isPinned={pinnedRows.includes(row.id)}\n >\n {row.getVisibleCells().map((cell) => {\n const isPinnedLeft = cell.column.getIsPinned() === 'left'\n const isPinnedRight = cell.column.getIsPinned() === 'right'\n\n return (\n <TableCell\n key={cell.id}\n size={size}\n bordered={bordered}\n fixed={\n isPinnedLeft ? 'left' : isPinnedRight ? 'right' : undefined\n }\n >\n {cell.getIsGrouped() ? (\n <div className=\"flex items-center gap-2\">\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary\"\n >\n {row.getIsExpanded() ? (\n <ChevronDown className={iconSizes[size]} />\n ) : (\n <ChevronRight className={iconSizes[size]} />\n )}\n </button>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}{' '}\n ({row.subRows.length})\n </div>\n ) : cell.getIsAggregated() ? (\n flexRender(\n cell.column.columnDef.aggregatedCell ??\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n ) : cell.getIsPlaceholder() ? null : (\n flexRender(cell.column.columnDef.cell, cell.getContext())\n )}\n </TableCell>\n )\n })}\n </TableRow>\n {/* Expanded Content Row */}\n {enableExpandable && row.getIsExpanded() && expandedContent && (\n <tr>\n <td\n colSpan={row.getVisibleCells().length}\n className=\"bg-surface/30 border-b border-border p-4\"\n >\n {expandedContent(row)}\n </td>\n </tr>\n )}\n </>\n ))\n }\n\n const renderPagination = () => {\n if (\n !enablePagination ||\n table.getPageCount() === 0 ||\n loading ||\n enableVirtualization\n ) {\n return null\n }\n\n const getPaginationPositionClasses = () => {\n const positionClasses = {\n topleft: 'justify-start',\n topcenter: 'w-full justify-between',\n topright: 'justify-end',\n bottomleft: 'justify-start',\n bottomcenter: 'w-full justify-between',\n bottomright: 'justify-end',\n }\n return positionClasses[paginationPosition]\n }\n\n return (\n <Pagination\n total={table.getFilteredRowModel().rows.length}\n current={table.getState().pagination.pageIndex + 1}\n pageSize={table.getState().pagination.pageSize}\n onChange={(page, pageSize) => {\n table.setPageIndex(page - 1)\n table.setPageSize(pageSize)\n }}\n showSizeChanger\n pageSizeOptions={pageSizeOptions}\n showTotal={(total, range) => (\n <>\n Showing {range[0]}-{range[1]} of {total} rows\n </>\n )}\n color={color}\n size=\"sm\"\n className={cn('flex', getPaginationPositionClasses())}\n />\n )\n }\n\n const shouldShowTopPagination = paginationPosition.startsWith('top')\n const shouldShowBottomPagination = paginationPosition.startsWith('bottom')\n\n const handleVisibleColumnsChange = (newVisibleColumns: string[]) => {\n const newVisibility: VisibilityState = {}\n allColumnsList.forEach((col) => {\n newVisibility[col.id] = newVisibleColumns.includes(col.id)\n })\n setColumnVisibility(newVisibility)\n }\n\n return (\n <div className=\"w-full space-y-4\">\n {enableActions && (\n <TableActions\n searchValue={searchValue}\n onSearchChange={setSearchValue}\n visibleColumns={visibleColumnIds}\n allColumns={allColumnsList}\n onVisibleColumnsChange={handleVisibleColumnsChange}\n size={size}\n onSizeChange={setSize}\n color={color}\n />\n )}\n\n {shouldShowTopPagination && renderPagination()}\n\n <div\n ref={tableContainerRef}\n className={cn(\n 'overflow-auto rounded-md',\n enableVirtualization && 'max-h-[500px]',\n variant === 'outline' && 'border border-border',\n )}\n >\n <table\n className={cn(\n 'w-full border-collapse',\n variant === 'line' && 'border-0',\n variant === 'ghost' && 'border-0',\n className,\n )}\n >\n <thead className=\"bg-surface sticky top-0 z-30\">\n {renderColumnGroups()}\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHeaderCell\n key={header.id}\n header={header}\n size={size}\n variant={variant}\n color={color}\n bordered={bordered}\n enableColumnPinning={enableColumnPinning}\n />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>{renderRows()}</tbody>\n {footer && (\n <tfoot className=\"bg-surface border-t border-border sticky bottom-0 z-30\">\n {table.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => {\n const isPinnedLeft = header.column.getIsPinned() === 'left'\n const isPinnedRight =\n header.column.getIsPinned() === 'right'\n\n return (\n <th\n key={header.id}\n className={cn(\n 'px-4 py-3 text-left font-semibold text-text-primary',\n bordered && 'border-r border-border last:border-r-0',\n isPinnedLeft && 'sticky left-0 bg-surface z-20',\n isPinnedRight && 'sticky right-0 bg-surface z-20',\n )}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.footer,\n header.getContext(),\n )}\n </th>\n )\n })}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n\n {shouldShowBottomPagination && renderPagination()}\n </div>\n )\n}\n\nTable.displayName = 'Table'\n\nexport { TableCell } from './TableCell'\nexport { TableHeaderCell } from './TableHeaderCell'\nexport { TableRow } from './TableRow'\nexport { TableSkeleton } from './TableSkeleton'\nexport { TableActions } from './TableActions'\nexport { EditableCell } from './EditableCell'\nexport type * from './types'\nexport default Table\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/table/EditableCell.tsx","../src/table/TableActions.tsx","../src/table/variants.ts","../src/table/TableCell.tsx","../src/table/TableHeaderCell.tsx","../src/table/TableRow.tsx","../src/table/TableSkeleton.tsx","../src/table/index.tsx"],"names":["jsx","jsxs","_","useState","useRef","useEffect","table","ChevronDown","Pin","PinOff","Fragment","pageSize"],"mappings":";;;;;;;;;;;;;;AAaO,SAAS,YAAA,CAA+B;AAAA,EAC7C,KAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,WAAW,YAAY,CAAA,GAAI,SAAS,MAAA,CAAO,KAAA,IAAS,EAAE,CAAC,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,IAAa,SAAS,OAAA,EAAS;AACjC,MAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AACvB,MAAA,QAAA,CAAS,QAAQ,MAAA,EAAO;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,MAAA,CAAO,KAAA,IAAS,EAAE,CAAC,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,IAAI,SAAA,KAAc,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,EAAG;AACrC,MAAA,aAAA,CAAc,SAAmB,CAAA;AAAA,IACnC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA6C;AAClE,IAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,MAAA,UAAA,EAAW;AAAA,IACb,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,MAAA,YAAA,CAAa,MAAA,CAAO,KAAA,IAAS,EAAE,CAAC,CAAA;AAChC,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,EAAA,EAAI,gBAAA;AAAA,IACJ,EAAA,EAAI,cAAA;AAAA,IACJ,EAAA,EAAI,kBAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAEA,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAU,4CAAA;AAAA,MAET,QAAA,EAAA,SAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EACb,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,MAAA;AAAA,UACL,KAAA,EAAO,SAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UAC5C,MAAA,EAAQ,UAAA;AAAA,UACR,SAAA,EAAW,aAAA;AAAA,UACX,IAAA,EAAM,aAAa,IAAI,CAAA;AAAA,UACvB,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS;AAAA;AAAA,SAExD,CAAA,mBAEA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,UAChC,SAAA,EAAW,EAAA;AAAA,YACT,oIAAA;AAAA,YACA,YAAY,IAAI,CAAA;AAAA,YAChB;AAAA,WACF;AAAA,UACA,KAAA,EAAM,eAAA;AAAA,UAEL,QAAA,EAAA,MAAA,CAAO,SAAS,EAAE;AAAA;AAAA;AACrB;AAAA,GAEJ;AAEJ;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AC/EpB,SAAS,YAAA,CAAa;AAAA,EAC3B,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,sBAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAAsB;AACpB,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,IAAI,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG;AACrC,MAAA,sBAAA,CAAuB,eAAe,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,KAAO,QAAQ,CAAC,CAAA;AAAA,IACvE,CAAA,MAAO;AACL,MAAA,sBAAA,CAAuB,CAAC,GAAG,cAAA,EAAgB,QAAQ,CAAC,CAAA;AAAA,IACtD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AAAA,IAC3B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AAAA,IAC3B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA;AAAK,GAC7B;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EAEb,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,WAAA,EAAY,WAAA;AAAA,QACZ,KAAA,EAAO,WAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAC9C,IAAA,EAAK,IAAA;AAAA,QACL,2BAAWA,GAAAA,CAAC,UAAO,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA;AAAA,KACjD,EACF,CAAA;AAAA,yBAGC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,0BAAUA,GAAAA,CAAC,YAAS,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA;AAAA,UACjD,QAAA,EAAA;AAAA;AAAA,OAED,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EACxB,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,qBACf,IAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,2EAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAA,GAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,gBACvC,QAAA,EAAU,MAAM,kBAAA,CAAmB,GAAA,CAAI,EAAE,CAAA;AAAA,gBACzC,KAAA,EAAO,KAAA,KAAU,SAAA,GAAY,SAAA,GAAY,KAAA;AAAA,gBACzC,IAAA,EAAK;AAAA;AAAA,aACP;AAAA,4BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,cAAI,KAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QATlD,GAAA,CAAI;AAAA,OAWZ,GACH,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAA,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,IAAA;AAAA,QACP,QAAA,EAAU,CAAC,KAAA,KAAU,YAAA,CAAa,KAAkB,CAAA;AAAA,QACpD,KAAA;AAAA,QACA,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAQ;AAAA;AAAA;AACV,GAAA,EACF,CAAA;AAEJ;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;ACrGE,IAAI,wBAAA,EAA0B;AAAA,EACzD,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,YAAA,GAAe,IAAI,6BAAA,EAA+B;AAAA,EAC7D,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,mBAAA;AAAA,MACJ,EAAA,EAAI,mBAAA;AAAA,MACJ,EAAA,EAAI,qBAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;ACjBM,IAAM,YAAY,CAAC;AAAA,EACxB,IAAA,GAAO,IAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAsB;AACpB,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA;AAAA,QACrB,mBAAA;AAAA,QACA,QAAA,IAAY,wCAAA;AAAA,QACZ,UAAU,MAAA,IAAU,kCAAA;AAAA,QACpB,UAAU,OAAA,IAAW,mCAAA;AAAA,QACrB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AClBjB,SAAS,eAAA,CAAuB;AAAA,EACrC,MAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,SAAA;AAAA,EACV,KAAA,GAAQ,SAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,mBAAA,GAAsB,KAAA;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA;AACrD,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA;AAEtD,EAAA,MAAM,iBAAA,GAAoB;AAAA,IACxB,OAAA,EAAS,kBAAA;AAAA,IACT,OAAA,EAAS,qBAAA;AAAA,IACT,SAAA,EAAW,uBAAA;AAAA,IACX,MAAA,EAAQ,oBAAA;AAAA,IACR,OAAA,EAAS,qBAAA;AAAA,IACT,KAAA,EAAO,mBAAA;AAAA,IACP,OAAA,EAAS,qBAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAEA,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,OAAA,EAAS,mBAAA;AAAA,IACT,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW,gBAAA;AAAA,IACX,MAAA,EAAQ,aAAA;AAAA,IACR,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,YAAA;AAAA,IACP,OAAA,EAAS,cAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA;AAAA,QACrB,uEAAA;AAAA,QACA,YAAY,MAAA,IAAU,YAAA;AAAA,QACtB,QAAA,IAAY,wCAAA;AAAA,QACZ,MAAA,CAAO,MAAA,CAAO,UAAA,EAAW,IACvB,gDAAA;AAAA,QACF,YAAA,IAAgB,+BAAA;AAAA,QAChB,aAAA,IAAiB,gCAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACA,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,uBAAA,EAAwB;AAAA,MAC9C,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EACb,QAAA,EAAA,MAAA,CAAO,gBACJ,IAAA,GACA,OAAO,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAA,KAAW,aACxC,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,CAAA,GAClD,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAA,EAChC,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA,CAAO,UAAA,EAAW,oBACxBD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,MAAA,CAAO,OAAO,aAAA,EAAc;AAAA,cAC9B,CAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,4BAAA;AAAA,gBACA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,GACtB,CAAA,YAAA,EAAe,iBAAA,CAAkB,KAAK,CAAC,CAAA,CAAA,GACvC,CAAA,kCAAA,EAAqC,iBAAA,CAAkB,KAAK,CAAC,CAAA,CAAA;AAAA,gBACjE,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,IAAK,iBAAiB,KAAK;AAAA,eACvD;AAAA,cAEC,QAAA,EAAA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,KAAA,mBAC/BA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,wBAAA,EAAyB,CAAA,GAC9C,MAAA,CAAO,MAAA,CAAO,aAAY,KAAM,MAAA,mBAClCA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,aAAA,EAAc,CAAA,mBAErCA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA,WAE5C;AAAA,UAED,mBAAA,IAAuB,MAAA,CAAO,MAAA,CAAO,SAAA,sBACpCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAC3C,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,MAAA,CAAO,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,gBACzB,CAAA,MAAO;AACL,kBAAA,MAAA,CAAO,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,gBAC1B;AAAA,cACF,CAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,4BAAA;AAAA,gBACA,YAAA,IAAgB,aAAA,GACZ,CAAA,YAAA,EAAe,iBAAA,CAAkB,KAAK,CAAC,CAAA,CAAA,EAAI,gBAAA,CAAiB,KAAK,CAAC,CAAA,CAAA,GAClE,CAAA,kCAAA,EAAqC,iBAAA,CAAkB,KAAK,CAAC,CAAA;AAAA,eACnE;AAAA,cAEC,QAAA,EAAA,YAAA,IAAgB,aAAA,mBACfA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA,mBAEhCA,GAAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAEjC,SAAA,EAEJ;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACpHvB,SAAS,QAAA,CAAgB;AAAA,EAC9B,GAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAgD;AACrE,IAAA,IAAI,eAAe,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACtD,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,UAAA,CAAW,IAAI,QAAQ,CAAA;AAAA,IACzB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wCAAA;AAAA,QACA,OAAA,IAAW,KAAA,GAAQ,CAAA,KAAM,CAAA,IAAK,eAAA;AAAA,QAC9B,SAAA,IAAa,iCAAA;AAAA,QACb,UAAA,IAAc,gBAAA;AAAA,QACd,QAAA,IAAY,gCAAA;AAAA,QACZ,GAAA,CAAI,eAAc,IAAK,eAAA;AAAA,QACvB;AAAA,OACF;AAAA,MACA,OAAA,EAAS,MAAM,UAAA,GAAa,GAAA,CAAI,QAAQ,CAAA;AAAA,MACxC,SAAA,EAAW,aAAA;AAAA,MACX,QAAA,EAAU,aAAa,CAAA,GAAI,MAAA;AAAA,MAC3B,IAAA,EAAM,aAAa,QAAA,GAAW,MAAA;AAAA,MAC7B,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AC9ChB,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA,GAAO,CAAA;AAAA,EACP,OAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,KAA0B;AACxB,EAAA,uBACEA,GAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,6BACpCA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAU,wBAAA;AAAA,MAET,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAACE,EAAAA,EAAG,QAAA,qBACvCF,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,UAEpC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EAAgC,CAAA,EACjD;AAAA,SAAA;AAAA,QALK;AAAA,OAOR;AAAA,KAAA;AAAA,IAZI;AAAA,GAcR,CAAA,EACH,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;ACA5B,SAAS,KAAA,CAAa;AAAA,EACpB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,MAAM,WAAA,GAAc,IAAA;AAAA,EACpB,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,aAAA,GAAgB,IAAA;AAAA,EAChB,eAAA,GAAkB,KAAA;AAAA,EAClB,gBAAA,GAAmB,KAAA;AAAA,EACnB,kBAAA,GAAqB,KAAA;AAAA,EACrB,uBAAA,GAA0B,IAAA;AAAA,EAC1B,gBAAA,GAAmB,KAAA;AAAA,EACnB,gBAAA,GAAmB,KAAA;AAAA,EACnB,cAAA,GAAiB,KAAA;AAAA,EACjB,oBAAA,GAAuB,KAAA;AAAA,EACvB,mBAAA,GAAsB,KAAA;AAAA,EACtB,mBAAA,GAAsB,KAAA;AAAA,EACtB,aAAA,GAAgB,KAAA;AAAA,EAChB,kBAAA,GAAqB,cAAA;AAAA,EACrB,eAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,WAAA,GAAc,CAAA;AAAA,EACd,QAAA,GAAW,EAAA;AAAA,EACX,eAAA,GAAkB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAE,CAAA;AAAA,EAChC,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAe,EAAC;AAAA,EAChB,kBAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIG,QAAAA,CAAuB,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA,CAA6B,EAAE,CAAA;AACzE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA,CAAS,EAAE,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA,CAAwB,EAAE,CAAA;AAC1D,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA,CAAwB,EAAE,CAAA;AAC1D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAmB,YAAY,CAAA;AACnE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA,CAA6B;AAAA,IACrE,MAAM,EAAC;AAAA,IACP,OAAO;AAAC,GACT,CAAA;AACD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,QAAAA,CAA0B,EAAE,CAAA;AAC5E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAoB,WAAW,CAAA;AAEvD,EAAA,MAAM,iBAAA,GAAoBC,OAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,oBAAA,GAAuBA,OAAe,EAAE,CAAA;AAG9C,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM;AAClC,IAAA,IAAI,CAAC,gBAAA,IAAoB,IAAA,CAAK,MAAA,KAAW,CAAA,SAAU,EAAC;AAEpD,IAAA,OAAO,IAAA,CACJ,GAAA,CAAI,CAAC,GAAA,EAAK,KAAA,MAAW,EAAE,GAAA,EAAK,EAAA,EAAI,MAAA,CAAO,KAAK,CAAA,EAAE,CAAE,CAAA,CAChD,MAAA,CAAO,CAAC,EAAE,GAAA,EAAI,KAAO,GAAA,CAAgC,GAAA,KAAQ,IAAI,CAAA,CACjE,GAAA,CAAI,CAAC,EAAE,EAAA,EAAG,KAAM,EAAE,CAAA;AAAA,EACvB,CAAA,EAAG,CAAC,IAAA,EAAM,gBAAgB,CAAC,CAAA;AAG3B,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,MAAA,MAAM,iBAAA,GAAoB;AAAA,QACxB,uBAAO,GAAA,CAAI,CAAC,GAAG,YAAA,EAAc,GAAG,aAAa,CAAC;AAAA,OAChD;AAGA,MAAA,MAAM,gBAAA,GAAmB,aAAA,CAAc,IAAA,EAAK,CAAE,KAAK,GAAG,CAAA;AACtD,MAAA,IAAI,gBAAA,KAAqB,qBAAqB,OAAA,EAAS;AACrD,QAAA,oBAAA,CAAqB,OAAA,GAAU,gBAAA;AAC/B,QAAA,aAAA,CAAc,iBAAiB,CAAA;AAAA,MACjC;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,aAAA,EAAe,YAAY,CAAC,CAAA;AAGhC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,mBAAA,IAAuB,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC7C,MAAA,MAAM,UAAA,GAAa,QAChB,MAAA,CAAO,CAAC,QAAS,GAAA,CAA2C,GAAA,KAAQ,MAAM,CAAA,CAC1E,GAAA;AAAA,QACC,CAAC,GAAA,KACE,GAAA,CAAI,EAAA,IACH,GAAA,CAA2C;AAAA,OACjD;AACF,MAAA,MAAM,WAAA,GAAc,QACjB,MAAA,CAAO,CAAC,QAAS,GAAA,CAA2C,GAAA,KAAQ,OAAO,CAAA,CAC3E,GAAA;AAAA,QACC,CAAC,GAAA,KACE,GAAA,CAAI,EAAA,IACH,GAAA,CAA2C;AAAA,OACjD;AAEF,MAAA,IAAI,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AACnD,QAAA,gBAAA,CAAiB;AAAA,UACf,IAAA,EAAM,UAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,mBAAmB,CAAC,CAAA;AAGjC,EAAA,MAAM,eAAA,GAAkB,OAAA;AAAA,IACtB,MACE,kBAAA,GACI;AAAA,MACE;AAAA,QACE,EAAA,EAAI,QAAA;AAAA,QACJ,QAAQ,CAAC,EAAE,OAAAC,MAAAA,EAAM,KACf,0CACEN,GAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAASM,OAAM,oBAAA,EAAqB;AAAA,YACpC,aAAA,EAAeA,OAAM,qBAAA,EAAsB;AAAA,YAC3C,QAAA,EAAUA,OAAM,+BAAA,EAAgC;AAAA,YAChD,IAAA,EAAK;AAAA;AAAA,SACP,GACE,IAAA;AAAA,QACN,IAAA,EAAM,CAAC,EAAE,GAAA,uBACPN,GAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,YAC3B,QAAA,EAAU,CAAC,GAAA,CAAI,YAAA,EAAa;AAAA,YAC5B,QAAA,EAAU,IAAI,wBAAA,EAAyB;AAAA,YACvC,IAAA,EAAK;AAAA;AAAA,SACP;AAAA,QAEF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,GAAG;AAAA,KACL,GACA,OAAA;AAAA,IACN,CAAC,OAAA,EAAS,kBAAA,EAAoB,uBAAuB;AAAA,GACvD;AAGA,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,MACE,gBAAA,GACI;AAAA,MACE;AAAA,QACE,EAAA,EAAI,QAAA;AAAA,QACJ,QAAQ,MAAM,IAAA;AAAA,QACd,IAAA,EAAM,CAAC,EAAE,GAAA,uBACPA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,GAAA,CAAI,cAAA,EAAe;AAAA,YACrB,CAAA;AAAA,YACA,SAAA,EAAU,2DAAA;AAAA,YACV,YAAA,EACE,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,YAEzC,eAAA,EAAe,IAAI,aAAA,EAAc;AAAA,YAEhC,QAAA,EAAA,GAAA,CAAI,aAAA,EAAc,mBACjBA,GAAAA;AAAA,cAACO,WAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,UAAU,IAAI,CAAA;AAAA,gBACzB,aAAA,EAAY;AAAA;AAAA,gCAGdP,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,UAAU,IAAI,CAAA;AAAA,gBACzB,aAAA,EAAY;AAAA;AAAA;AACd;AAAA,SAEJ;AAAA,QAEF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,GAAG;AAAA,KACL,GACA,eAAA;AAAA,IACN,CAAC,iBAAiB,gBAAgB;AAAA,GACpC;AAGA,EAAA,MAAM,kBAAA,GAAqB,OAAA;AAAA,IACzB,MACE,gBAAA,GACI;AAAA,MACE,GAAG,YAAA;AAAA,MACH;AAAA,QACE,EAAA,EAAI,KAAA;AAAA,QACJ,QAAQ,sBAAMA,IAACQ,GAAAA,EAAA,EAAI,WAAU,yBAAA,EAA0B,CAAA;AAAA,QACvD,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAA+B;AAC1C,UAAA,MAAM,QAAQ,GAAA,CAAI,EAAA;AAClB,UAAA,MAAM,QAAA,GAAW,UAAA,CAAW,QAAA,CAAS,KAAK,CAAA;AAE1C,UAAA,uBACER,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,MAAM,aAAA,GAAgB,QAAA,GAClB,UAAA,CAAW,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,KAAO,KAAK,CAAA,GACtC,CAAC,GAAG,UAAA,EAAY,KAAK,CAAA;AACzB,gBAAA,aAAA,CAAc,aAAa,CAAA;AAC3B,gBAAA,kBAAA,GAAqB,aAAa,CAAA;AAAA,cACpC,CAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,2DAAA;AAAA,gBACA,QAAA,IAAY;AAAA,eACd;AAAA,cACA,YAAA,EAAY,WAAW,WAAA,GAAc,SAAA;AAAA,cACrC,cAAA,EAAc,QAAA;AAAA,cAEb,qCACCA,GAAAA;AAAA,gBAACS,MAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,UAAU,IAAI,CAAA;AAAA,kBACzB,aAAA,EAAY;AAAA;AAAA,kCAGdT,GAAAA;AAAA,gBAACQ,GAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,UAAU,IAAI,CAAA;AAAA,kBACzB,aAAA,EAAY;AAAA;AAAA;AACd;AAAA,WAEJ;AAAA,QAEJ,CAAA;AAAA,QACA,IAAA,EAAM;AAAA;AACR,KACF,GACA,YAAA;AAAA,IACN,CAAC,YAAA,EAAc,gBAAA,EAAkB,UAAA,EAAY,kBAAkB;AAAA,GACjE;AAGA,EAAA,MAAM,mBAAA,GAAsB,OAAA;AAAA,IAC1B,MACE,kBAAA,CAAmB,GAAA,CAAI,CAAC,GAAA,KAAQ;AAC9B,MAAA,MAAM,MAAA,GAAS,GAAA;AACf,MAAA,IAAI,MAAA,CAAO,YAAY,UAAA,EAAY;AACjC,QAAA,OAAO;AAAA,UACL,GAAG,GAAA;AAAA,UACH,IAAA,EAAM,CAAC,EAAE,GAAA,EAAK,UAAS,KAA+B;AACpD,YAAA,MAAM,QACJ,QAAA,IAAW,IACV,GAAA,CAAI,QAAA,CACH,OAAO,WACT,CAAA;AACF,YAAA,uBACER,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,KAAA;AAAA,gBACA,IAAA;AAAA,gBACA,aAAA,EAAe,CAAC,QAAA,KAAa;AAC3B,kBAAA,UAAA,CAAW;AAAA,oBACT,UAAU,GAAA,CAAI,KAAA;AAAA,oBACd,QAAA,EACG,MAAA,CAAO,EAAA,IAAkB,MAAA,CAAO,WAAA;AAAA,oBACnC,KAAA,EAAO,QAAA;AAAA,oBACP,KAAK,GAAA,CAAI;AAAA,mBACV,CAAA;AAAA,gBACH;AAAA;AAAA,aACF;AAAA,UAEJ;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAC,CAAA;AAAA,IACH,CAAC,kBAAA,EAAoB,UAAA,EAAY,IAAI;AAAA,GACvC;AAGA,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,aAAA,IAAiB,CAAC,WAAA,CAAY,MAAK,EAAG;AACzC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAA,GAAc,YAAY,WAAA,EAAY;AAC5C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAQ;AAC1B,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,GAA8B,CAAA,CAAE,IAAA;AAAA,QAAK,CAAC,UACzD,MAAA,CAAO,KAAK,EAAE,WAAA,EAAY,CAAE,SAAS,WAAW;AAAA,OAClD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,IAAA,EAAM,WAAA,EAAa,aAAa,CAAC,CAAA;AAGrC,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AAC1B,MAAA,MAAM,MAAA,GAAS,GAAA;AACf,MAAA,OAAO;AAAA,QACL,EAAA,EAAK,GAAA,CAAI,EAAA,IAAkB,MAAA,CAAO,WAAA;AAAA,QAClC,KAAA,EACE,OAAO,MAAA,CAAO,MAAA,KAAW,WACrB,MAAA,CAAO,MAAA,GACN,GAAA,CAAI,EAAA,IAAkB,MAAA,CAAO;AAAA,OACtC;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,gBAAgB,CAAA,CAAE,MAAA,KAAW,CAAA,GAC5C,cAAA,CAAe,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAA,GAC9B,cAAA,CACG,MAAA,CAAO,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,EAAE,CAAA,KAAM,KAAK,CAAA,CAC9C,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,gBAAA,EAAkB,cAAc,CAAC,CAAA;AAErC,EAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,IAC1B,IAAA,EAAM,YAAA;AAAA,IACN,OAAA,EAAS,mBAAA;AAAA,IACT,iBAAiB,eAAA,EAAgB;AAAA,IACjC,iBAAA,EAAmB,aAAA,GAAgB,iBAAA,EAAkB,GAAI,MAAA;AAAA,IACzD,mBAAA,EAAqB,eAAA,GAAkB,mBAAA,EAAoB,GAAI,MAAA;AAAA,IAC/D,qBAAA,EACE,gBAAA,IAAoB,CAAC,oBAAA,GACjB,uBAAsB,GACtB,MAAA;AAAA,IACN,mBAAA,EAAqB,gBAAA,GAAmB,mBAAA,EAAoB,GAAI,MAAA;AAAA,IAChE,kBAAA,EAAoB,cAAA,GAAiB,kBAAA,EAAmB,GAAI,MAAA;AAAA,IAC5D,eAAA,EAAiB,UAAA;AAAA,IACjB,qBAAA,EAAuB,gBAAA;AAAA,IACvB,oBAAA,EAAsB,eAAA;AAAA,IACtB,gBAAA,EAAkB,WAAA;AAAA,IAClB,gBAAA,EAAkB,WAAA;AAAA,IAClB,qBAAA,EAAuB,gBAAA;AAAA,IACvB,wBAAA,EAA0B,mBAAA;AAAA,IAC1B,kBAAA;AAAA,IACA,uBAAA;AAAA,IACA,cAAA;AAAA,IACA,mBAAA;AAAA,IACA,eAAA,EAAiB,gBAAA,GAAmB,MAAM,IAAA,GAAO,MAAA;AAAA,IACjD,KAAA,EAAO;AAAA,MACL,OAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,UAAA,EAAY;AAAA,QACV;AAAA;AACF;AACF,GACD,CAAA;AAGD,EAAAK,UAAU,MAAM;AACd,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,MAAM,YAAA,GAAe,MAClB,mBAAA,EAAoB,CACpB,KAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,QAAQ,CAAA;AACjC,MAAA,iBAAA,CAAkB,YAAY,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,iBAAA,EAAmB,KAAK,CAAC,CAAA;AAG3C,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA;AACjC,EAAA,MAAM,cAAA,GAAiB,KAAK,MAAA,CAAO,CAAC,QAAQ,UAAA,CAAW,QAAA,CAAS,GAAA,CAAI,EAAE,CAAC,CAAA;AACvE,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,UAAA,CAAW,QAAA,CAAS,GAAA,CAAI,EAAE,CAAC,CAAA;AACtE,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAG,cAAA,EAAgB,GAAG,YAAY,CAAA;AAG1D,EAAA,MAAM,iBAAiB,cAAA,CAAe;AAAA,IACpC,OAAO,cAAA,CAAe,MAAA;AAAA,IACtB,gBAAA,EAAkB,MAAM,iBAAA,CAAkB,OAAA;AAAA,IAC1C,cAAc,MAAO,IAAA,KAAS,OAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AAAA,IAC/D,QAAA,EAAU,CAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAA,EAAiB,OAAA,KAAmB;AAC1D,IAAA,IAAI,uBAAuB,kBAAA,EAAoB;AAC7C,MAAA,GAAA,CAAI,cAAA,EAAe;AAAA,IACrB;AACA,IAAA,UAAA,GAAa,OAAO,CAAA;AAAA,EACtB,CAAA;AAGA,EAAA,MAAM,eAAA,uBAAsB,GAAA,EAA8C;AAC1E,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC9B,MAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC/B,QAAA,eAAA,CAAgB,IAAI,KAAA,EAAO;AAAA,UACzB,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,IAAA,EAAM,MAAM,OAAA,CAAQ;AAAA,SACrB,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,CAAa,MAAA,KAAW,GAAG,OAAO,IAAA;AAEvD,IAAA,MAAM,YAAA,GAAe,KAAA,CAAM,eAAA,EAAgB,CAAE,CAAC,CAAA;AAC9C,IAAA,IAAI,CAAC,cAAc,OAAO,IAAA;AAE1B,IAAA,MAAM,iBAID,EAAC;AACN,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AAEtC,IAAA,YAAA,CAAa,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC9C,MAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,CAAO,EAAA;AAE5B,MAAA,IAAI,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA,EAAG;AAE9B,MAAA,MAAM,KAAA,GAAQ,aAAa,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAC,CAAA;AAEhE,MAAA,IAAI,KAAA,EAAO;AAET,QAAA,KAAA,CAAM,QAAQ,OAAA,CAAQ,CAAC,MAAM,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA;AAEjD,QAAA,cAAA,CAAe,IAAA,CAAK;AAAA,UAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,IAAA,EAAM,MAAM,OAAA,CAAQ,MAAA;AAAA,UACpB,UAAA,EAAY;AAAA,SACb,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,IAAA,CAAK;AAAA,UAClB,MAAA,EAAQ,EAAA;AAAA,UACR,IAAA,EAAM,CAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACb,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,uBACEL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wBAAA,EACX,yBAAe,GAAA,CAAI,CAAC,KAAA,EAAO,GAAA,qBAC1BA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,SAAS,KAAA,CAAM,IAAA;AAAA,QACf,SAAA,EAAW,EAAA;AAAA,UACT,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA;AAAA,UACrB,qEAAA;AAAA,UACA,QAAA,IAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM;AAAA,OAAA;AAAA,MARF;AAAA,KAUR,CAAA,EACH,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,WAAA;AAAA,UACN,SAAS,kBAAA,CAAmB,MAAA;AAAA,UAC5B;AAAA;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/B,MAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAS,kBAAA,CAAmB,MAAA;AAAA,UAC5B,SAAA,EAAU,wBAAA;AAAA,UAET,QAAA,EAAA,UAAA,oBACCC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iEAAA,EACb,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,sBAAA,EAAuB,CAAA;AAAA,4BACxCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,WAAU,QAAA,EAAA,mBAAA,EAAiB;AAAA,WAAA,EAC1C;AAAA;AAAA,OAEJ,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,MAAM,WAAA,GAAc,eAAe,eAAA,EAAgB;AACnD,MAAA,MAAM,UAAA,GAAa,YAAY,MAAA,GAAS,CAAA,GAAI,YAAY,CAAC,CAAA,EAAG,SAAS,CAAA,GAAI,CAAA;AACzE,MAAA,MAAM,aAAA,GACJ,WAAA,CAAY,MAAA,GAAS,CAAA,GACjB,cAAA,CAAe,YAAA,EAAa,IAC3B,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,EAAG,OAAO,CAAA,CAAA,GAC7C,CAAA;AAEN,MAAA,uBACEC,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,UAAA,GAAa,CAAA,oBACZV,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAS,kBAAA,CAAmB,MAAA;AAAA,YAC5B,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,UAAU,CAAA,EAAA,CAAA,EAAM,OAAA,EAAS,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAE;AAAA,SAC5D,EACF,CAAA;AAAA,QAED,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,KAAe;AAC/B,UAAA,MAAM,GAAA,GAAM,cAAA,CAAe,UAAA,CAAW,KAAK,CAAA;AAC3C,UAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AAEjB,UAAA,MAAM,gBAAA,GACJ,UAAA,CAAW,KAAA,KAAU,cAAA,CAAe,MAAA,GAAS,CAAA;AAE/C,UAAA,uBACEA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,GAAA;AAAA,cACA,OAAO,UAAA,CAAW,KAAA;AAAA,cAClB,OAAA;AAAA,cACA,SAAA;AAAA,cACA,UAAA,EAAY,MAAM,cAAA,CAAe,GAAA,EAAK,IAAI,QAAQ,CAAA;AAAA,cAClD,QAAA,EAAU,UAAA,CAAW,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,cACpC,SAAA,EAAW,EAAA,CAAG,gBAAA,IAAoB,YAAY,CAAA;AAAA,cAE7C,QAAA,EAAA,GAAA,CAAI,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AACnC,gBAAA,MAAM,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA;AACnD,gBAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA;AAEpD,gBAAA,uBACEA,GAAAA;AAAA,kBAAC,SAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA;AAAA,oBACA,QAAA;AAAA,oBACA,KAAA,EACE,YAAA,GACI,MAAA,GACA,aAAA,GACE,OAAA,GACA,MAAA;AAAA,oBAGP,eAAK,YAAA,EAAa,mBACjBC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sCAAAD,GAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,4BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,4BAAA,GAAA,CAAI,cAAA,EAAe;AAAA,0BACrB,CAAA;AAAA,0BACA,SAAA,EAAU,yCAAA;AAAA,0BAET,cAAI,aAAA,EAAc,mBACjBA,GAAAA,CAACO,WAAAA,EAAA,EAAY,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,oBAEzCP,GAAAA,CAAC,gBAAa,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA;AAAA,uBAE9C;AAAA,sBACC,UAAA;AAAA,wBACC,IAAA,CAAK,OAAO,SAAA,CAAU,IAAA;AAAA,wBACtB,KAAK,UAAA;AAAW,uBAClB;AAAA,sBAAG,GAAA;AAAA,sBAAI,GAAA;AAAA,sBACL,IAAI,OAAA,CAAQ,MAAA;AAAA,sBAAO;AAAA,qBAAA,EACvB,CAAA,GACE,IAAA,CAAK,eAAA,EAAgB,GACvB,UAAA;AAAA,sBACE,KAAK,MAAA,CAAO,SAAA,CAAU,cAAA,IACpB,IAAA,CAAK,OAAO,SAAA,CAAU,IAAA;AAAA,sBACxB,KAAK,UAAA;AAAW,qBAClB,GACE,IAAA,CAAK,gBAAA,EAAiB,GAAI,IAAA,GAC5B,UAAA;AAAA,sBACE,IAAA,CAAK,OAAO,SAAA,CAAU,IAAA;AAAA,sBACtB,KAAK,UAAA;AAAW;AAClB,mBAAA;AAAA,kBA1CG,IAAA,CAAK;AAAA,iBA4CZ;AAAA,cAEJ,CAAC;AAAA,aAAA;AAAA,YA7DI,GAAA,CAAI;AAAA,WA8DX;AAAA,QAEJ,CAAC,CAAA;AAAA,QACA,aAAA,GAAgB,CAAA,oBACfA,GAAAA,CAAC,QACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAS,kBAAA,CAAmB,MAAA;AAAA,YAC5B,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,aAAa,CAAA,EAAA,CAAA,EAAM,OAAA,EAAS,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAE;AAAA,SAC/D,EACF;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ;AAEA,IAAA,OAAO,cAAA,CAAe,IAAI,CAAC,GAAA,EAAK,0BAC9BC,IAAAA,CAAAS,UAAA,EACE,QAAA,EAAA;AAAA,sBAAAV,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,GAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA,EAAY,MAAM,cAAA,CAAe,GAAA,EAAK,IAAI,QAAQ,CAAA;AAAA,UAClD,QAAA,EAAU,UAAA,CAAW,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,UAEnC,QAAA,EAAA,GAAA,CAAI,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AACnC,YAAA,MAAM,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA;AACnD,YAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA;AAEpD,YAAA,uBACEA,GAAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBAEC,IAAA;AAAA,gBACA,QAAA;AAAA,gBACA,KAAA,EACE,YAAA,GAAe,MAAA,GAAS,aAAA,GAAgB,OAAA,GAAU,MAAA;AAAA,gBAGnD,eAAK,YAAA,EAAa,mBACjBC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,GAAA,CAAI,cAAA,EAAe;AAAA,sBACrB,CAAA;AAAA,sBACA,SAAA,EAAU,yCAAA;AAAA,sBAET,cAAI,aAAA,EAAc,mBACjBA,GAAAA,CAACO,WAAAA,EAAA,EAAY,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,oBAEzCP,GAAAA,CAAC,gBAAa,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA;AAAA,mBAE9C;AAAA,kBACC,WAAW,IAAA,CAAK,MAAA,CAAO,UAAU,IAAA,EAAM,IAAA,CAAK,YAAY,CAAA;AAAA,kBAAG,GAAA;AAAA,kBAAI,GAAA;AAAA,kBAC9D,IAAI,OAAA,CAAQ,MAAA;AAAA,kBAAO;AAAA,iBAAA,EACvB,CAAA,GACE,IAAA,CAAK,eAAA,EAAgB,GACvB,UAAA;AAAA,kBACE,KAAK,MAAA,CAAO,SAAA,CAAU,cAAA,IACpB,IAAA,CAAK,OAAO,SAAA,CAAU,IAAA;AAAA,kBACxB,KAAK,UAAA;AAAW,iBAClB,GACE,IAAA,CAAK,gBAAA,EAAiB,GAAI,IAAA,GAC5B,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,UAAA,EAAY;AAAA,eAAA;AAAA,cAhCrD,IAAA,CAAK;AAAA,aAkCZ;AAAA,UAEJ,CAAC;AAAA,SAAA;AAAA,QAlDI,GAAA,CAAI;AAAA,OAmDX;AAAA,MAEC,gBAAA,IAAoB,IAAI,aAAA,EAAc,IAAK,mCAC1CA,GAAAA,CAAC,QACC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,GAAA,CAAI,eAAA,EAAgB,CAAE,MAAA;AAAA,UAC/B,SAAA,EAAU,0CAAA;AAAA,UAET,0BAAgB,GAAG;AAAA;AAAA,OACtB,EACF;AAAA,KAAA,EAEJ,CACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IACE,CAAC,gBAAA,IACD,KAAA,CAAM,cAAa,KAAM,CAAA,IACzB,WACA,oBAAA,EACA;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,+BAA+B,MAAM;AACzC,MAAA,MAAM,eAAA,GAAkB;AAAA,QACtB,OAAA,EAAS,eAAA;AAAA,QACT,SAAA,EAAW,wBAAA;AAAA,QACX,QAAA,EAAU,aAAA;AAAA,QACV,UAAA,EAAY,eAAA;AAAA,QACZ,YAAA,EAAc,wBAAA;AAAA,QACd,WAAA,EAAa;AAAA,OACf;AACA,MAAA,OAAO,gBAAgB,kBAAkB,CAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,KAAA,CAAM,mBAAA,EAAoB,CAAE,IAAA,CAAK,MAAA;AAAA,QACxC,OAAA,EAAS,KAAA,CAAM,QAAA,EAAS,CAAE,WAAW,SAAA,GAAY,CAAA;AAAA,QACjD,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,CAAE,UAAA,CAAW,QAAA;AAAA,QACtC,QAAA,EAAU,CAAC,IAAA,EAAMW,SAAAA,KAAa;AAC5B,UAAA,KAAA,CAAM,YAAA,CAAa,OAAO,CAAC,CAAA;AAC3B,UAAA,KAAA,CAAM,YAAYA,SAAQ,CAAA;AAAA,QAC5B,CAAA;AAAA,QACA,eAAA,EAAe,IAAA;AAAA,QACf,eAAA;AAAA,QACA,WAAW,CAAC,KAAA,EAAO,0BACjBV,IAAAA,CAAAS,UAAA,EAAE,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,UACS,MAAM,CAAC,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,MAAM,CAAC,CAAA;AAAA,UAAE,MAAA;AAAA,UAAK,KAAA;AAAA,UAAM;AAAA,SAAA,EAC1C,CAAA;AAAA,QAEF,KAAA;AAAA,QACA,IAAA,EAAK,IAAA;AAAA,QACL,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,4BAAA,EAA8B;AAAA;AAAA,KACtD;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,uBAAA,GAA0B,kBAAA,CAAmB,UAAA,CAAW,KAAK,CAAA;AACnE,EAAA,MAAM,0BAAA,GAA6B,kBAAA,CAAmB,UAAA,CAAW,QAAQ,CAAA;AAEzE,EAAA,MAAM,0BAAA,GAA6B,CAAC,iBAAA,KAAgC;AAClE,IAAA,MAAM,gBAAiC,EAAC;AACxC,IAAA,cAAA,CAAe,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC9B,MAAA,aAAA,CAAc,IAAI,EAAE,CAAA,GAAI,iBAAA,CAAkB,QAAA,CAAS,IAAI,EAAE,CAAA;AAAA,IAC3D,CAAC,CAAA;AACD,IAAA,mBAAA,CAAoB,aAAa,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,uBACET,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,aAAA,oBACCD,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,cAAA,EAAgB,cAAA;AAAA,QAChB,cAAA,EAAgB,gBAAA;AAAA,QAChB,UAAA,EAAY,cAAA;AAAA,QACZ,sBAAA,EAAwB,0BAAA;AAAA,QACxB,IAAA;AAAA,QACA,YAAA,EAAc,OAAA;AAAA,QACd;AAAA;AAAA,KACF;AAAA,IAGD,2BAA2B,gBAAA,EAAiB;AAAA,oBAE7CA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,iBAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,0BAAA;AAAA,UACA,oBAAA,IAAwB,eAAA;AAAA,UACxB,YAAY,SAAA,IAAa;AAAA,SAC3B;AAAA,QAEA,QAAA,kBAAAC,IAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,wBAAA;AAAA,cACA,YAAY,MAAA,IAAU,UAAA;AAAA,cACtB,YAAY,OAAA,IAAW,UAAA;AAAA,cACvB;AAAA,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,8BAAA,EACd,QAAA,EAAA;AAAA,gBAAA,kBAAA,EAAmB;AAAA,gBACnB,KAAA,CAAM,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,WAAA,qBAC5BD,GAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,2BACxBA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBAEC,MAAA;AAAA,oBACA,IAAA;AAAA,oBACA,OAAA;AAAA,oBACA,KAAA;AAAA,oBACA,QAAA;AAAA,oBACA;AAAA,mBAAA;AAAA,kBANK,MAAA,CAAO;AAAA,iBAQf,CAAA,EAAA,EAXM,WAAA,CAAY,EAYrB,CACD;AAAA,eAAA,EACH,CAAA;AAAA,8BACAA,GAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,UAAA,EAAW,EAAE,CAAA;AAAA,cACpB,0BACCA,GAAAA,CAAC,WAAM,SAAA,EAAU,wDAAA,EACd,gBAAM,eAAA,EAAgB,CAAE,IAAI,CAAC,WAAA,qBAC5BA,GAAAA,CAAC,IAAA,EAAA,EACE,sBAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACnC,gBAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA;AACrD,gBAAA,MAAM,aAAA,GACJ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA;AAElC,gBAAA,uBACEA,GAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,SAAA,EAAW,EAAA;AAAA,sBACT,qDAAA;AAAA,sBACA,QAAA,IAAY,wCAAA;AAAA,sBACZ,YAAA,IAAgB,+BAAA;AAAA,sBAChB,aAAA,IAAiB;AAAA,qBACnB;AAAA,oBAEC,QAAA,EAAA,MAAA,CAAO,gBACJ,IAAA,GACA,UAAA;AAAA,sBACE,MAAA,CAAO,OAAO,SAAA,CAAU,MAAA;AAAA,sBACxB,OAAO,UAAA;AAAW;AACpB,mBAAA;AAAA,kBAbC,MAAA,CAAO;AAAA,iBAcd;AAAA,cAEJ,CAAC,CAAA,EAAA,EAxBM,WAAA,CAAY,EAyBrB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AAEJ;AAAA,KACF;AAAA,IAEC,8BAA8B,gBAAA;AAAiB,GAAA,EAClD,CAAA;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AASpB,IAAO,aAAA,GAAQ","file":"chunk-77DW6PAW.js","sourcesContent":["import { useEffect, useRef, useState } from 'react'\n\nimport Input from '../input'\nimport { cn } from '../utils'\nimport type { TableSize } from './types'\n\ninterface EditableCellProps<TValue = unknown> {\n value: TValue\n onValueChange: (value: TValue) => void\n size?: TableSize\n className?: string\n}\n\nexport function EditableCell<TValue = unknown>({\n value,\n onValueChange,\n size = 'md',\n className,\n}: EditableCellProps<TValue>) {\n const [isEditing, setIsEditing] = useState(false)\n const [editValue, setEditValue] = useState(String(value ?? ''))\n const inputRef = useRef<HTMLInputElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus()\n inputRef.current.select()\n }\n }, [isEditing])\n\n useEffect(() => {\n setEditValue(String(value ?? ''))\n }, [value])\n\n const handleSave = () => {\n setIsEditing(false)\n if (editValue !== String(value ?? '')) {\n onValueChange(editValue as TValue)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n handleSave()\n } else if (e.key === 'Escape') {\n setEditValue(String(value ?? ''))\n setIsEditing(false)\n }\n }\n\n const sizeClasses = {\n xs: 'text-xs py-0.5',\n sm: 'text-sm py-1',\n md: 'text-base py-1.5',\n lg: 'text-lg py-2',\n }\n\n const inputSizeMap = {\n xs: 'sm' as const,\n sm: 'sm' as const,\n md: 'md' as const,\n lg: 'lg' as const,\n }\n\n return (\n <div\n ref={containerRef}\n className=\"relative w-full max-w-full overflow-hidden\"\n >\n {isEditing ? (\n <div className=\"w-full\">\n <Input\n ref={inputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onBlur={handleSave}\n onKeyDown={handleKeyDown}\n size={inputSizeMap[size]}\n className={cn('w-full min-w-0 max-w-full', className)}\n />\n </div>\n ) : (\n <div\n onClick={() => setIsEditing(true)}\n className={cn(\n 'cursor-text hover:bg-surface/50 rounded transition-colors min-h-[20px] px-3 w-full overflow-hidden text-ellipsis whitespace-nowrap',\n sizeClasses[size],\n className,\n )}\n title=\"Click to edit\"\n >\n {String(value ?? '')}\n </div>\n )}\n </div>\n )\n}\n\nEditableCell.displayName = 'EditableCell'\n","import { Columns3, Search } from 'lucide-react'\n\nimport Button from '../button'\nimport Checkbox from '../checkbox'\nimport Input from '../input'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport ToggleGroup from '../toggle-group'\nimport { iconSizes } from '../utils'\nimport type { TableColor, TableSize } from './types'\n\ninterface TableActionsProps {\n searchValue: string\n onSearchChange: (value: string) => void\n visibleColumns: string[]\n allColumns: Array<{ id: string; label: string }>\n onVisibleColumnsChange: (columns: string[]) => void\n size: TableSize\n onSizeChange: (size: TableSize) => void\n color?: TableColor\n}\n\nexport function TableActions({\n searchValue,\n onSearchChange,\n visibleColumns,\n allColumns,\n onVisibleColumnsChange,\n size,\n onSizeChange,\n color = 'default',\n}: TableActionsProps) {\n const handleColumnToggle = (columnId: string) => {\n if (visibleColumns.includes(columnId)) {\n onVisibleColumnsChange(visibleColumns.filter((id) => id !== columnId))\n } else {\n onVisibleColumnsChange([...visibleColumns, columnId])\n }\n }\n\n const sizeOptions = [\n { value: 'sm', label: 'SM' },\n { value: 'md', label: 'MD' },\n { value: 'lg', label: 'LG' },\n ]\n\n return (\n <div className=\"flex flex-wrap items-center gap-4 rounded-md\">\n {/* Search Input - Left */}\n <div className=\"w-auto mr-auto\">\n <Input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchValue}\n onChange={(e) => onSearchChange(e.target.value)}\n size=\"sm\"\n rightIcon={<Search className={iconSizes[size]} />}\n />\n </div>\n\n {/* Column Visibility Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<Columns3 className={iconSizes[size]} />}\n >\n Columns\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56 p-2\">\n <div className=\"space-y-1 max-h-[300px] overflow-y-auto\">\n {allColumns.map((col) => (\n <label\n key={col.id}\n className=\"flex items-center gap-2 px-3 py-2 hover:bg-surface rounded cursor-pointer\"\n >\n <Checkbox\n checked={visibleColumns.includes(col.id)}\n onChange={() => handleColumnToggle(col.id)}\n color={color === 'default' ? 'primary' : color}\n size=\"sm\"\n />\n <span className=\"text-sm text-text-primary\">{col.label}</span>\n </label>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Size Toggle Group */}\n <ToggleGroup\n options={sizeOptions}\n value={size}\n onChange={(value) => onSizeChange(value as TableSize)}\n color={color}\n size=\"sm\"\n variant=\"default\"\n />\n </div>\n )\n}\n\nTableActions.displayName = 'TableActions'\n","import { cva } from 'class-variance-authority'\n\nexport const tableVariants = cva('w-full border-collapse', {\n variants: {\n variant: {\n outline: '',\n line: '',\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n})\n\nexport const cellVariants = cva('text-left transition-colors', {\n variants: {\n size: {\n xs: 'px-2 py-1 text-xs',\n sm: 'px-3 py-2 text-sm',\n md: 'px-4 py-3 text-base',\n lg: 'px-6 py-4 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n","import { cn } from '../utils'\nimport type { TableSize } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n size?: TableSize\n bordered?: boolean\n fixed?: 'left' | 'right'\n}\n\nexport const TableCell = ({\n size = 'md',\n bordered = false,\n fixed,\n className,\n children,\n ...props\n}: TableCellProps) => {\n return (\n <td\n className={cn(\n cellVariants({ size }),\n 'text-text-primary',\n bordered && 'border-r border-border last:border-r-0',\n fixed === 'left' && 'sticky left-0 bg-background z-10',\n fixed === 'right' && 'sticky right-0 bg-background z-10',\n className,\n )}\n {...props}\n >\n {children}\n </td>\n )\n}\n\nTableCell.displayName = 'TableCell'\n","import type { Header } from '@tanstack/react-table'\nimport { ChevronDown, ChevronsUpDown, Pin, PinOff } from 'lucide-react'\n\nimport { cn } from '../utils'\nimport type { TableColor, TableSize, TableVariant } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableHeaderCellProps<TData>\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n header: Header<TData, unknown>\n size?: TableSize\n variant?: TableVariant\n color?: TableColor\n bordered?: boolean\n enableColumnPinning?: boolean\n}\n\nexport function TableHeaderCell<TData>({\n header,\n size = 'md',\n variant = 'outline',\n color = 'default',\n bordered = false,\n enableColumnPinning = false,\n className,\n ...props\n}: TableHeaderCellProps<TData>) {\n const isPinnedLeft = header.column.getIsPinned() === 'left'\n const isPinnedRight = header.column.getIsPinned() === 'right'\n\n const colorHoverClasses = {\n default: 'hover:bg-surface',\n primary: 'hover:bg-primary/10',\n secondary: 'hover:bg-secondary/10',\n accent: 'hover:bg-accent/10',\n success: 'hover:bg-success/10',\n error: 'hover:bg-error/10',\n warning: 'hover:bg-warning/10',\n info: 'hover:bg-info/10',\n }\n\n const colorIconClasses = {\n default: 'text-text-primary',\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n success: 'text-success',\n error: 'text-error',\n warning: 'text-warning',\n info: 'text-info',\n }\n\n return (\n <th\n className={cn(\n cellVariants({ size }),\n 'font-semibold text-text-primary border-b border-border relative group',\n variant === 'line' && 'border-b-2',\n bordered && 'border-r border-border last:border-r-0',\n header.column.getCanSort() &&\n 'cursor-pointer select-none hover:bg-background',\n isPinnedLeft && 'sticky left-0 bg-surface z-20',\n isPinnedRight && 'sticky right-0 bg-surface z-20',\n className,\n )}\n onClick={header.column.getToggleSortingHandler()}\n {...props}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"flex-1\">\n {header.isPlaceholder\n ? null\n : typeof header.column.columnDef.header === 'function'\n ? header.column.columnDef.header(header.getContext())\n : header.column.columnDef.header}\n </span>\n <div className=\"flex items-center gap-1\">\n {header.column.getCanSort() && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n header.column.toggleSorting()\n }}\n className={cn(\n 'p-1 rounded transition-all',\n header.column.getIsSorted()\n ? `opacity-100 ${colorHoverClasses[color]}`\n : `opacity-0 group-hover:opacity-100 ${colorHoverClasses[color]}`,\n header.column.getIsSorted() && colorIconClasses[color],\n )}\n >\n {header.column.getIsSorted() === 'asc' ? (\n <ChevronDown className=\"w-3.5 h-3.5 rotate-180\" />\n ) : header.column.getIsSorted() === 'desc' ? (\n <ChevronDown className=\"w-3.5 h-3.5\" />\n ) : (\n <ChevronsUpDown className=\"w-3.5 h-3.5\" />\n )}\n </button>\n )}\n {enableColumnPinning && header.column.getCanPin() && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n const isPinned = header.column.getIsPinned()\n if (isPinned) {\n header.column.pin(false)\n } else {\n header.column.pin('left')\n }\n }}\n className={cn(\n 'p-1 rounded transition-all',\n isPinnedLeft || isPinnedRight\n ? `opacity-100 ${colorHoverClasses[color]} ${colorIconClasses[color]}`\n : `opacity-0 group-hover:opacity-100 ${colorHoverClasses[color]}`,\n )}\n >\n {isPinnedLeft || isPinnedRight ? (\n <PinOff className=\"w-3.5 h-3.5\" />\n ) : (\n <Pin className=\"w-3.5 h-3.5\" />\n )}\n </button>\n )}\n </div>\n </div>\n </th>\n )\n}\n\nTableHeaderCell.displayName = 'TableHeaderCell'\n","import type { Row } from '@tanstack/react-table'\n\nimport { cn } from '../utils'\n\ninterface TableRowProps<TData>\n extends React.HTMLAttributes<HTMLTableRowElement> {\n row: Row<TData>\n index: number\n striped?: boolean\n hoverable?: boolean\n onRowClick?: (row: TData) => void\n isPinned?: boolean\n isExpanded?: boolean\n}\n\nexport function TableRow<TData>({\n row,\n index,\n striped = false,\n hoverable = true,\n onRowClick,\n isPinned = false,\n isExpanded = false,\n className,\n children,\n ...props\n}: TableRowProps<TData>) {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (onRowClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onRowClick(row.original)\n }\n }\n\n return (\n <tr\n className={cn(\n 'border-b border-border last:border-b-0',\n striped && index % 2 === 1 && 'bg-surface/50',\n hoverable && 'hover:bg-surface cursor-pointer',\n onRowClick && 'cursor-pointer',\n isPinned && 'bg-primary/5 border-primary/20',\n row.getIsSelected() && 'bg-primary/10',\n className,\n )}\n onClick={() => onRowClick?.(row.original)}\n onKeyDown={handleKeyDown}\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? 'button' : undefined}\n {...props}\n >\n {children}\n </tr>\n )\n}\n\nTableRow.displayName = 'TableRow'\n","import { cn } from '../utils'\nimport type { TableSize } from './types'\nimport { cellVariants } from './variants'\n\ninterface TableSkeletonProps {\n rows?: number\n columns: number\n size?: TableSize\n}\n\nexport const TableSkeleton = ({\n rows = 5,\n columns,\n size = 'md',\n}: TableSkeletonProps) => {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr\n key={rowIndex}\n className=\"border-b border-border\"\n >\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td\n key={colIndex}\n className={cn(cellVariants({ size }))}\n >\n <div className=\"animate-pulse\">\n <div className=\"h-4 bg-surface rounded w-full\" />\n </div>\n </td>\n ))}\n </tr>\n ))}\n </>\n )\n}\n\nTableSkeleton.displayName = 'TableSkeleton'\n","import {\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n type GroupingState,\n type Row,\n type SortingState,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { ChevronDown, ChevronRight, Inbox, Pin, PinOff } from 'lucide-react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nimport Checkbox from '../checkbox'\nimport Pagination from '../pagination'\nimport { cn, iconSizes } from '../utils'\nimport { EditableCell } from './EditableCell'\nimport { TableActions } from './TableActions'\nimport { TableCell } from './TableCell'\nimport { TableHeaderCell } from './TableHeaderCell'\nimport { TableRow } from './TableRow'\nimport { TableSkeleton } from './TableSkeleton'\nimport type {\n TableCellContext,\n TableHeaderContext,\n TableProps,\n TableSize,\n} from './types'\nimport { cellVariants } from './variants'\n\nfunction Table<TData>({\n data,\n columns,\n columnGroups,\n variant = 'outline',\n size: initialSize = 'md',\n color = 'default',\n striped = false,\n hoverable = true,\n bordered = false,\n enableSorting = true,\n enableFiltering = false,\n enablePagination = false,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableRowPinning = false,\n enableExpandable = false,\n enableGrouping = false,\n enableVirtualization = false,\n enableClickToSelect = false,\n enableColumnPinning = false,\n enableActions = false,\n paginationPosition = 'bottomcenter',\n expandedContent,\n footer,\n emptyState,\n loading = false,\n loadingRows = 5,\n pageSize = 10,\n pageSizeOptions = [5, 10, 20, 50],\n onRowClick,\n onSelectionChange,\n onCellEdit,\n pinnedRowIds = [],\n onPinnedRowsChange,\n className,\n}: TableProps<TData>) {\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [rowSelection, setRowSelection] = useState({})\n const [expanded, setExpanded] = useState<ExpandedState>({})\n const [grouping, setGrouping] = useState<GroupingState>([])\n const [pinnedRows, setPinnedRows] = useState<string[]>(pinnedRowIds)\n const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({\n left: [],\n right: [],\n })\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n const [searchValue, setSearchValue] = useState('')\n const [size, setSize] = useState<TableSize>(initialSize)\n\n const tableContainerRef = useRef<HTMLDivElement>(null)\n const prevAutoPinnedIdsRef = useRef<string>('')\n\n // Memoize auto-pinned IDs to prevent infinite loops\n const autoPinnedIds = useMemo(() => {\n if (!enableRowPinning || data.length === 0) return []\n\n return data\n .map((row, index) => ({ row, id: String(index) }))\n .filter(({ row }) => (row as Record<string, unknown>).pin === true)\n .map(({ id }) => id)\n }, [data, enableRowPinning])\n\n // Initialize pinned rows from data\n useEffect(() => {\n if (autoPinnedIds.length > 0) {\n const combinedPinnedIds = [\n ...new Set([...pinnedRowIds, ...autoPinnedIds]),\n ]\n\n // Only update if auto-pinned IDs changed (use string comparison to avoid array reference issues)\n const autoPinnedIdsStr = autoPinnedIds.sort().join(',')\n if (autoPinnedIdsStr !== prevAutoPinnedIdsRef.current) {\n prevAutoPinnedIdsRef.current = autoPinnedIdsStr\n setPinnedRows(combinedPinnedIds)\n }\n }\n }, [autoPinnedIds, pinnedRowIds])\n\n // Initialize column pinning from column definitions\n useEffect(() => {\n if (enableColumnPinning && columns.length > 0) {\n const leftPinned = columns\n .filter((col) => (col as unknown as Record<string, unknown>).pin === 'left')\n .map(\n (col) =>\n (col.id as string) ||\n ((col as unknown as Record<string, unknown>).accessorKey as string),\n )\n const rightPinned = columns\n .filter((col) => (col as unknown as Record<string, unknown>).pin === 'right')\n .map(\n (col) =>\n (col.id as string) ||\n ((col as unknown as Record<string, unknown>).accessorKey as string),\n )\n\n if (leftPinned.length > 0 || rightPinned.length > 0) {\n setColumnPinning({\n left: leftPinned,\n right: rightPinned,\n })\n }\n }\n }, [columns, enableColumnPinning])\n\n // Add selection column if row selection is enabled\n const enhancedColumns = useMemo(\n () =>\n enableRowSelection\n ? [\n {\n id: 'select',\n header: ({ table }: TableHeaderContext<TData>) =>\n enableMultiRowSelection ? (\n <Checkbox\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n size=\"sm\"\n />\n ) : null,\n cell: ({ row }: TableCellContext<TData>) => (\n <Checkbox\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onChange={row.getToggleSelectedHandler()}\n size=\"sm\"\n />\n ),\n size: 50,\n },\n ...columns,\n ]\n : columns,\n [columns, enableRowSelection, enableMultiRowSelection],\n )\n\n // Add expand column if expandable is enabled\n const finalColumns = useMemo(\n () =>\n enableExpandable\n ? [\n {\n id: 'expand',\n header: () => null,\n cell: ({ row }: TableCellContext<TData>) => (\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary transition-colors\"\n aria-label={\n row.getIsExpanded() ? 'Collapse row' : 'Expand row'\n }\n aria-expanded={row.getIsExpanded()}\n >\n {row.getIsExpanded() ? (\n <ChevronDown\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n ) : (\n <ChevronRight\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n )}\n </button>\n ),\n size: 50,\n },\n ...enhancedColumns,\n ]\n : enhancedColumns,\n [enhancedColumns, enableExpandable],\n )\n\n // Add pin column if row pinning is enabled\n const columnsWithPinning = useMemo(\n () =>\n enableRowPinning\n ? [\n ...finalColumns,\n {\n id: 'pin',\n header: () => <Pin className=\"w-4 h-4 text-text-muted\" />,\n cell: ({ row }: TableCellContext<TData>) => {\n const rowId = row.id\n const isPinned = pinnedRows.includes(rowId)\n\n return (\n <button\n onClick={(e) => {\n e.stopPropagation()\n const newPinnedRows = isPinned\n ? pinnedRows.filter((id) => id !== rowId)\n : [...pinnedRows, rowId]\n setPinnedRows(newPinnedRows)\n onPinnedRowsChange?.(newPinnedRows)\n }}\n className={cn(\n 'text-text-muted hover:text-text-primary transition-colors',\n isPinned && 'text-primary',\n )}\n aria-label={isPinned ? 'Unpin row' : 'Pin row'}\n aria-pressed={isPinned}\n >\n {isPinned ? (\n <PinOff\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n ) : (\n <Pin\n className={iconSizes[size]}\n aria-hidden=\"true\"\n />\n )}\n </button>\n )\n },\n size: 50,\n },\n ]\n : finalColumns,\n [finalColumns, enableRowPinning, pinnedRows, onPinnedRowsChange],\n )\n\n // Wrap editable columns with EditableCell\n const columnsWithEditable = useMemo(\n () =>\n columnsWithPinning.map((col) => {\n const colAny = col as Record<string, unknown>\n if (colAny.editable && onCellEdit) {\n return {\n ...col,\n cell: ({ row, getValue }: TableCellContext<TData>) => {\n const value =\n getValue?.() ??\n (row.original as Record<string, unknown>)[\n colAny.accessorKey as string\n ]\n return (\n <EditableCell\n value={value}\n size={size}\n onValueChange={(newValue) => {\n onCellEdit({\n rowIndex: row.index,\n columnId:\n (colAny.id as string) || (colAny.accessorKey as string),\n value: newValue,\n row: row.original,\n })\n }}\n />\n )\n },\n }\n }\n return col\n }),\n [columnsWithPinning, onCellEdit, size],\n )\n\n // Filter data based on search\n const filteredData = useMemo(() => {\n if (!enableActions || !searchValue.trim()) {\n return data\n }\n\n const searchLower = searchValue.toLowerCase()\n return data.filter((row) => {\n return Object.values(row as Record<string, unknown>).some((value) =>\n String(value).toLowerCase().includes(searchLower),\n )\n })\n }, [data, searchValue, enableActions])\n\n // Build column list for actions\n const allColumnsList = useMemo(() => {\n return columns.map((col) => {\n const colAny = col as unknown as Record<string, unknown>\n return {\n id: (col.id as string) || (colAny.accessorKey as string),\n label:\n typeof colAny.header === 'string'\n ? colAny.header\n : (col.id as string) || (colAny.accessorKey as string),\n }\n })\n }, [columns])\n\n const visibleColumnIds = useMemo(() => {\n return Object.keys(columnVisibility).length === 0\n ? allColumnsList.map((c) => c.id)\n : allColumnsList\n .filter((c) => columnVisibility[c.id] !== false)\n .map((c) => c.id)\n }, [columnVisibility, allColumnsList])\n\n const table = useReactTable({\n data: filteredData,\n columns: columnsWithEditable as typeof columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: enableFiltering ? getFilteredRowModel() : undefined,\n getPaginationRowModel:\n enablePagination && !enableVirtualization\n ? getPaginationRowModel()\n : undefined,\n getExpandedRowModel: enableExpandable ? getExpandedRowModel() : undefined,\n getGroupedRowModel: enableGrouping ? getGroupedRowModel() : undefined,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onRowSelectionChange: setRowSelection,\n onExpandedChange: setExpanded,\n onGroupingChange: setGrouping,\n onColumnPinningChange: setColumnPinning,\n onColumnVisibilityChange: setColumnVisibility,\n enableRowSelection,\n enableMultiRowSelection,\n enableGrouping,\n enableColumnPinning,\n getRowCanExpand: enableExpandable ? () => true : undefined,\n state: {\n sorting,\n columnFilters,\n rowSelection,\n expanded,\n grouping,\n columnPinning,\n columnVisibility,\n },\n initialState: {\n pagination: {\n pageSize,\n },\n },\n })\n\n // Notify parent of selection changes\n useEffect(() => {\n if (onSelectionChange) {\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((row) => row.original)\n onSelectionChange(selectedRows)\n }\n }, [rowSelection, onSelectionChange, table])\n\n // Separate pinned and unpinned rows\n const rows = table.getRowModel().rows\n const pinnedRowsData = rows.filter((row) => pinnedRows.includes(row.id))\n const unpinnedRows = rows.filter((row) => !pinnedRows.includes(row.id))\n const allRowsOrdered = [...pinnedRowsData, ...unpinnedRows]\n\n // Virtualization setup\n const rowVirtualizer = useVirtualizer({\n count: allRowsOrdered.length,\n getScrollElement: () => tableContainerRef.current,\n estimateSize: () => (size === 'sm' ? 44 : size === 'lg' ? 68 : 56),\n overscan: 5,\n enabled: enableVirtualization,\n })\n\n const handleRowClick = (row: Row<TData>, rowData: TData) => {\n if (enableClickToSelect && enableRowSelection) {\n row.toggleSelected()\n }\n onRowClick?.(rowData)\n }\n\n // Build column groups map\n const columnGroupsMap = new Map<string, { header: string; span: number }>()\n if (columnGroups) {\n columnGroups.forEach((group) => {\n group.columns.forEach((colId) => {\n columnGroupsMap.set(colId, {\n header: group.header,\n span: group.columns.length,\n })\n })\n })\n }\n\n const renderColumnGroups = () => {\n if (!columnGroups || columnGroups.length === 0) return null\n\n const headerGroups = table.getHeaderGroups()[0]\n if (!headerGroups) return null\n\n const groupedHeaders: Array<{\n header: string\n span: number\n startIndex: number\n }> = []\n const processedCols = new Set<string>()\n\n headerGroups.headers.forEach((header, index) => {\n const colId = header.column.id\n\n if (processedCols.has(colId)) return\n\n const group = columnGroups.find((g) => g.columns.includes(colId))\n\n if (group) {\n // Mark all columns in this group as processed\n group.columns.forEach((c) => processedCols.add(c))\n\n groupedHeaders.push({\n header: group.header,\n span: group.columns.length,\n startIndex: index,\n })\n } else {\n groupedHeaders.push({\n header: '',\n span: 1,\n startIndex: index,\n })\n }\n })\n\n return (\n <tr className=\"border-b border-border\">\n {groupedHeaders.map((group, idx) => (\n <th\n key={idx}\n colSpan={group.span}\n className={cn(\n cellVariants({ size }),\n 'font-bold text-text-primary bg-surface/70 border-border text-center',\n bordered && 'border-r border-border last:border-r-0',\n )}\n >\n {group.header}\n </th>\n ))}\n </tr>\n )\n }\n\n const renderRows = () => {\n if (loading) {\n return (\n <TableSkeleton\n rows={loadingRows}\n columns={columnsWithPinning.length}\n size={size}\n />\n )\n }\n\n if (allRowsOrdered.length === 0) {\n return (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n className=\"px-4 py-12 text-center\"\n >\n {emptyState || (\n <div className=\"flex flex-col items-center justify-center gap-2 text-text-muted\">\n <Inbox className=\"w-12 h-12 opacity-20\" />\n <p className=\"text-sm\">No data available</p>\n </div>\n )}\n </td>\n </tr>\n )\n }\n\n if (enableVirtualization) {\n const virtualRows = rowVirtualizer.getVirtualItems()\n const paddingTop = virtualRows.length > 0 ? virtualRows[0]?.start || 0 : 0\n const paddingBottom =\n virtualRows.length > 0\n ? rowVirtualizer.getTotalSize() -\n (virtualRows[virtualRows.length - 1]?.end || 0)\n : 0\n\n return (\n <>\n {paddingTop > 0 && (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n style={{ height: `${paddingTop}px`, padding: 0, border: 0 }}\n />\n </tr>\n )}\n {virtualRows.map((virtualRow) => {\n const row = allRowsOrdered[virtualRow.index]\n if (!row) return null\n\n const isLastVirtualRow =\n virtualRow.index === allRowsOrdered.length - 1\n\n return (\n <TableRow\n key={row.id}\n row={row}\n index={virtualRow.index}\n striped={striped}\n hoverable={hoverable}\n onRowClick={() => handleRowClick(row, row.original)}\n isPinned={pinnedRows.includes(row.id)}\n className={cn(isLastVirtualRow && 'border-b-0')}\n >\n {row.getVisibleCells().map((cell) => {\n const isPinnedLeft = cell.column.getIsPinned() === 'left'\n const isPinnedRight = cell.column.getIsPinned() === 'right'\n\n return (\n <TableCell\n key={cell.id}\n size={size}\n bordered={bordered}\n fixed={\n isPinnedLeft\n ? 'left'\n : isPinnedRight\n ? 'right'\n : undefined\n }\n >\n {cell.getIsGrouped() ? (\n <div className=\"flex items-center gap-2\">\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary\"\n >\n {row.getIsExpanded() ? (\n <ChevronDown className={iconSizes[size]} />\n ) : (\n <ChevronRight className={iconSizes[size]} />\n )}\n </button>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}{' '}\n ({row.subRows.length})\n </div>\n ) : cell.getIsAggregated() ? (\n flexRender(\n cell.column.columnDef.aggregatedCell ??\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n ) : cell.getIsPlaceholder() ? null : (\n flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n )}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n {paddingBottom > 0 && (\n <tr>\n <td\n colSpan={columnsWithPinning.length}\n style={{ height: `${paddingBottom}px`, padding: 0, border: 0 }}\n />\n </tr>\n )}\n </>\n )\n }\n\n return allRowsOrdered.map((row, index) => (\n <>\n <TableRow\n key={row.id}\n row={row}\n index={index}\n striped={striped}\n hoverable={hoverable}\n onRowClick={() => handleRowClick(row, row.original)}\n isPinned={pinnedRows.includes(row.id)}\n >\n {row.getVisibleCells().map((cell) => {\n const isPinnedLeft = cell.column.getIsPinned() === 'left'\n const isPinnedRight = cell.column.getIsPinned() === 'right'\n\n return (\n <TableCell\n key={cell.id}\n size={size}\n bordered={bordered}\n fixed={\n isPinnedLeft ? 'left' : isPinnedRight ? 'right' : undefined\n }\n >\n {cell.getIsGrouped() ? (\n <div className=\"flex items-center gap-2\">\n <button\n onClick={(e) => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n className=\"text-text-muted hover:text-text-primary\"\n >\n {row.getIsExpanded() ? (\n <ChevronDown className={iconSizes[size]} />\n ) : (\n <ChevronRight className={iconSizes[size]} />\n )}\n </button>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}{' '}\n ({row.subRows.length})\n </div>\n ) : cell.getIsAggregated() ? (\n flexRender(\n cell.column.columnDef.aggregatedCell ??\n cell.column.columnDef.cell,\n cell.getContext(),\n )\n ) : cell.getIsPlaceholder() ? null : (\n flexRender(cell.column.columnDef.cell, cell.getContext())\n )}\n </TableCell>\n )\n })}\n </TableRow>\n {/* Expanded Content Row */}\n {enableExpandable && row.getIsExpanded() && expandedContent && (\n <tr>\n <td\n colSpan={row.getVisibleCells().length}\n className=\"bg-surface/30 border-b border-border p-4\"\n >\n {expandedContent(row)}\n </td>\n </tr>\n )}\n </>\n ))\n }\n\n const renderPagination = () => {\n if (\n !enablePagination ||\n table.getPageCount() === 0 ||\n loading ||\n enableVirtualization\n ) {\n return null\n }\n\n const getPaginationPositionClasses = () => {\n const positionClasses = {\n topleft: 'justify-start',\n topcenter: 'w-full justify-between',\n topright: 'justify-end',\n bottomleft: 'justify-start',\n bottomcenter: 'w-full justify-between',\n bottomright: 'justify-end',\n }\n return positionClasses[paginationPosition]\n }\n\n return (\n <Pagination\n total={table.getFilteredRowModel().rows.length}\n current={table.getState().pagination.pageIndex + 1}\n pageSize={table.getState().pagination.pageSize}\n onChange={(page, pageSize) => {\n table.setPageIndex(page - 1)\n table.setPageSize(pageSize)\n }}\n showSizeChanger\n pageSizeOptions={pageSizeOptions}\n showTotal={(total, range) => (\n <>\n Showing {range[0]}-{range[1]} of {total} rows\n </>\n )}\n color={color}\n size=\"sm\"\n className={cn('flex', getPaginationPositionClasses())}\n />\n )\n }\n\n const shouldShowTopPagination = paginationPosition.startsWith('top')\n const shouldShowBottomPagination = paginationPosition.startsWith('bottom')\n\n const handleVisibleColumnsChange = (newVisibleColumns: string[]) => {\n const newVisibility: VisibilityState = {}\n allColumnsList.forEach((col) => {\n newVisibility[col.id] = newVisibleColumns.includes(col.id)\n })\n setColumnVisibility(newVisibility)\n }\n\n return (\n <div className=\"w-full space-y-4\">\n {enableActions && (\n <TableActions\n searchValue={searchValue}\n onSearchChange={setSearchValue}\n visibleColumns={visibleColumnIds}\n allColumns={allColumnsList}\n onVisibleColumnsChange={handleVisibleColumnsChange}\n size={size}\n onSizeChange={setSize}\n color={color}\n />\n )}\n\n {shouldShowTopPagination && renderPagination()}\n\n <div\n ref={tableContainerRef}\n className={cn(\n 'overflow-auto rounded-md',\n enableVirtualization && 'max-h-[500px]',\n variant === 'outline' && 'border border-border',\n )}\n >\n <table\n className={cn(\n 'w-full border-collapse',\n variant === 'line' && 'border-0',\n variant === 'ghost' && 'border-0',\n className,\n )}\n >\n <thead className=\"bg-surface sticky top-0 z-30\">\n {renderColumnGroups()}\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHeaderCell\n key={header.id}\n header={header}\n size={size}\n variant={variant}\n color={color}\n bordered={bordered}\n enableColumnPinning={enableColumnPinning}\n />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>{renderRows()}</tbody>\n {footer && (\n <tfoot className=\"bg-surface border-t border-border sticky bottom-0 z-30\">\n {table.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => {\n const isPinnedLeft = header.column.getIsPinned() === 'left'\n const isPinnedRight =\n header.column.getIsPinned() === 'right'\n\n return (\n <th\n key={header.id}\n className={cn(\n 'px-4 py-3 text-left font-semibold text-text-primary',\n bordered && 'border-r border-border last:border-r-0',\n isPinnedLeft && 'sticky left-0 bg-surface z-20',\n isPinnedRight && 'sticky right-0 bg-surface z-20',\n )}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.footer,\n header.getContext(),\n )}\n </th>\n )\n })}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n\n {shouldShowBottomPagination && renderPagination()}\n </div>\n )\n}\n\nTable.displayName = 'Table'\n\nexport { TableCell } from './TableCell'\nexport { TableHeaderCell } from './TableHeaderCell'\nexport { TableRow } from './TableRow'\nexport { TableSkeleton } from './TableSkeleton'\nexport { TableActions } from './TableActions'\nexport { EditableCell } from './EditableCell'\nexport type * from './types'\nexport default Table\n"]}
|
|
@@ -18,7 +18,7 @@ var treeSelectTriggerVariants = cva(
|
|
|
18
18
|
success: "border-success"
|
|
19
19
|
},
|
|
20
20
|
size: {
|
|
21
|
-
xs: "h-
|
|
21
|
+
xs: "h-[var(--select-height-xs)] px-[var(--select-padding-x-xs)] text-xs gap-1.5",
|
|
22
22
|
sm: "h-[var(--input-height-sm)] px-1 text-sm gap-2",
|
|
23
23
|
md: "h-[var(--input-height-md)] px-2 text-base gap-2",
|
|
24
24
|
lg: "h-[var(--input-height-lg)] px-3 text-lg gap-3"
|
|
@@ -483,5 +483,5 @@ TreeSelect.displayName = "TreeSelect";
|
|
|
483
483
|
var tree_select_default = TreeSelect;
|
|
484
484
|
|
|
485
485
|
export { tree_select_default };
|
|
486
|
-
//# sourceMappingURL=chunk-
|
|
487
|
-
//# sourceMappingURL=chunk-
|
|
486
|
+
//# sourceMappingURL=chunk-ASW7TEAN.js.map
|
|
487
|
+
//# sourceMappingURL=chunk-ASW7TEAN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tree-select/index.tsx"],"names":["info"],"mappings":"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","file":"chunk-ASW7TEAN.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { ChevronDown, Loader2, Search, X } from 'lucide-react'\nimport React from 'react'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport Tree from '../tree'\nimport type { TreeNode } from '../tree/types'\nimport {\n cn,\n getValidationStatus,\n iconSizes,\n statusMessageVariants,\n} from '../utils'\nimport type { TreeSelectProps } from './types'\n\nconst treeSelectTriggerVariants = cva(\n 'w-full flex items-center justify-between rounded-md bg-background text-text-primary border focus:border-primary outline-none disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer transition-colors',\n {\n variants: {\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'h-[var(--select-height-xs)] px-[var(--select-padding-x-xs)] text-xs gap-1.5',\n sm: 'h-[var(--input-height-sm)] px-1 text-sm gap-2',\n md: 'h-[var(--input-height-md)] px-2 text-base gap-2',\n lg: 'h-[var(--input-height-lg)] px-3 text-lg gap-3',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\nconst TreeSelect = React.memo<TreeSelectProps>(\n ({\n size = 'md',\n label,\n helperText,\n error,\n warning,\n info,\n success,\n data = [],\n placeholder = 'Select an option',\n loading = false,\n fullWidth = true,\n value,\n defaultValue,\n onChange,\n disabled,\n required,\n multiple = false,\n checkable = false,\n searchable = true,\n maxChipsVisible = 3,\n maxDropdownHeight = 300,\n defaultExpandAll = false,\n defaultExpandedKeys = [],\n showLine = false,\n showIcon = true,\n className,\n ref,\n ...props\n }) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState<string | string[]>(\n defaultValue || (multiple ? [] : ''),\n )\n const [searchQuery, setSearchQuery] = React.useState('')\n const [expandedKeys, setExpandedKeys] = React.useState<string[]>(\n defaultExpandAll ? [] : defaultExpandedKeys,\n )\n const [visibleChipsCount, setVisibleChipsCount] =\n React.useState(maxChipsVisible)\n\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const currentValue = value !== undefined ? value : internalValue\n\n // Use shared validation status utility\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n // Get all nodes in a flat structure for search and lookup\n const getAllNodes = React.useCallback((nodes: TreeNode[]): TreeNode[] => {\n const result: TreeNode[] = []\n const traverse = (items: TreeNode[]) => {\n items.forEach((item) => {\n result.push(item)\n if (item.children) {\n traverse(item.children)\n }\n })\n }\n traverse(nodes)\n return result\n }, [])\n\n const allNodes = React.useMemo(() => getAllNodes(data), [data, getAllNodes])\n\n // Find node by key\n const getNodeByKey = React.useCallback(\n (key: string): TreeNode | null => {\n return allNodes.find((node) => node.key === key) || null\n },\n [allNodes],\n )\n\n // Get selected nodes\n const getSelectedNodes = React.useCallback(\n (keys: string | string[]): TreeNode[] => {\n const keyArray = Array.isArray(keys) ? keys : [keys]\n return keyArray\n .map((key) => getNodeByKey(key))\n .filter((node): node is TreeNode => node !== null)\n },\n [getNodeByKey],\n )\n\n // Filter tree data based on search query\n const filteredData = React.useMemo(() => {\n if (!searchQuery) return data\n\n const matchingKeys = new Set<string>()\n\n // Find all nodes that match the search\n allNodes.forEach((node) => {\n if (node.label.toLowerCase().includes(searchQuery.toLowerCase())) {\n // Add the node and all its ancestors\n let current: TreeNode | null = node\n while (current) {\n matchingKeys.add(current.key)\n // Find parent\n const parent = allNodes.find((n) =>\n n.children?.some((child) => child.key === current!.key),\n )\n current = parent || null\n }\n }\n })\n\n // Filter tree to only include matching nodes and their paths\n const filterTree = (nodes: TreeNode[]): TreeNode[] => {\n return nodes\n .filter((node) => matchingKeys.has(node.key))\n .map((node) => ({\n ...node,\n children: node.children ? filterTree(node.children) : undefined,\n }))\n }\n\n return filterTree(data)\n }, [data, searchQuery, allNodes])\n\n // Get display value\n const selectedNodes = React.useMemo(\n () => getSelectedNodes(currentValue),\n [currentValue, getSelectedNodes],\n )\n\n const getDisplayValue = React.useMemo(() => {\n if (!selectedNodes.length) return ''\n if (selectedNodes.length === 1) return selectedNodes[0]?.label\n return `${selectedNodes.length} selected`\n }, [selectedNodes])\n\n const handleSelect = React.useCallback(\n (_: string[], info: { selected: boolean; node: TreeNode }) => {\n if (disabled) return\n\n // Prevent selection of directory nodes (nodes with children)\n if (info.node.children && info.node.children.length > 0) {\n return\n }\n\n let newValue: string | string[]\n\n if (multiple) {\n // For multiple selection\n const currentArray = Array.isArray(currentValue) ? currentValue : []\n if (info.selected) {\n newValue = [...currentArray, info.node.key]\n } else {\n newValue = currentArray.filter((k) => k !== info.node.key)\n }\n } else {\n // For single selection\n if (info.selected) {\n newValue = info.node.key\n setIsOpen(false)\n setSearchQuery('')\n } else {\n newValue = ''\n }\n }\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n\n const selectedNodesResult = getSelectedNodes(newValue)\n onChange?.(newValue, selectedNodesResult)\n },\n [disabled, multiple, currentValue, value, onChange, getSelectedNodes],\n )\n\n const handleCheck = React.useCallback(\n (\n keys: string[],\n info: {\n checked: boolean\n node: TreeNode\n checkedNodes: TreeNode[]\n },\n ) => {\n if (disabled) return\n\n // Filter out directory nodes (nodes with children) from checked keys\n const leafKeys = keys.filter((key) => {\n const node = getNodeByKey(key)\n return node && (!node.children || node.children.length === 0)\n })\n\n const leafNodes = info.checkedNodes.filter(\n (node) => !node.children || node.children.length === 0,\n )\n\n if (value === undefined) {\n setInternalValue(leafKeys)\n }\n\n onChange?.(leafKeys, leafNodes)\n },\n [disabled, value, onChange, getNodeByKey],\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value)\n if (!isOpen) setIsOpen(true)\n },\n [isOpen],\n )\n\n const handleInputFocus = React.useCallback(() => {\n setIsOpen(true)\n }, [])\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n const newValue = multiple ? [] : ''\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue, [])\n setSearchQuery('')\n },\n [multiple, value, onChange],\n )\n\n const handleRemoveItem = React.useCallback(\n (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n keyToRemove: string,\n ) => {\n e.stopPropagation()\n if (!multiple || disabled) return\n\n const currentArray = Array.isArray(currentValue) ? currentValue : []\n const newValue = currentArray.filter((k) => k !== keyToRemove)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n\n const selectedNodesResult = getSelectedNodes(newValue)\n onChange?.(newValue, selectedNodesResult)\n },\n [multiple, disabled, currentValue, value, onChange, getSelectedNodes],\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (!isOpen && e.key !== 'Tab') {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault()\n setIsOpen(true)\n }\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n setIsOpen(false)\n setSearchQuery('')\n triggerRef.current?.focus()\n }\n },\n [isOpen],\n )\n\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n e.key === 'Backspace' &&\n !searchQuery &&\n multiple &&\n Array.isArray(currentValue) &&\n currentValue.length > 0\n ) {\n e.preventDefault()\n const lastKey = currentValue[currentValue.length - 1]\n handleRemoveItem(e as any, lastKey || '')\n } else {\n handleKeyDown(e)\n }\n },\n [searchQuery, currentValue, multiple, handleRemoveItem, handleKeyDown],\n )\n\n // Dynamic badge size calculation\n React.useEffect(() => {\n if (selectedNodes.length === 0 || !triggerRef.current) {\n setVisibleChipsCount(maxChipsVisible)\n return\n }\n\n const calculateVisibleChips = () => {\n const container = triggerRef.current\n if (!container) return\n\n const hiddenChips = container.querySelectorAll('[data-hidden-chip]')\n if (hiddenChips.length === 0) return\n\n const containerWidth = container.offsetWidth\n const padding =\n size === 'sm' ? 12 : size === 'md' ? 16 : size === 'lg' ? 20 : 16\n\n // Account for icons on the right (clear + chevron/search)\n // Use a generous estimate to avoid overflow\n const iconsWidth = 60 // Enough space for clear button + chevron + gap\n\n const gap = 4\n const plusIndicatorWidth = 40 // Width of \"+X\" badge\n\n const availableWidth = containerWidth - padding * 2 - iconsWidth\n let totalWidth = 0\n let visibleCount = 0\n\n for (let i = 0; i < hiddenChips.length; i++) {\n const chipWidth = hiddenChips[i]?.getBoundingClientRect().width || 0\n const requiredSpace =\n totalWidth + chipWidth + (visibleCount > 0 ? gap : 0)\n\n const needsPlusIndicator = i < hiddenChips.length - 1\n const spaceWithIndicator =\n requiredSpace + (needsPlusIndicator ? gap + plusIndicatorWidth : 0)\n\n if (spaceWithIndicator <= availableWidth) {\n totalWidth = requiredSpace\n visibleCount++\n } else {\n break\n }\n }\n\n setVisibleChipsCount(Math.max(1, visibleCount))\n }\n\n const timeoutId = setTimeout(calculateVisibleChips, 0)\n\n const resizeObserver = new ResizeObserver(() => {\n calculateVisibleChips()\n })\n\n if (triggerRef.current) {\n resizeObserver.observe(triggerRef.current)\n }\n\n return () => {\n clearTimeout(timeoutId)\n resizeObserver.disconnect()\n }\n }, [selectedNodes, size, maxChipsVisible])\n\n const treeSelectElement = (\n <div\n className={cn('relative group', fullWidth ? 'w-full' : 'inline-block')}\n ref={ref}\n {...props}\n >\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <PopoverTrigger asChild>\n <button\n ref={triggerRef}\n type=\"button\"\n className={cn(\n treeSelectTriggerVariants({ status, size, fullWidth }),\n loading && 'opacity-50',\n className,\n )}\n disabled={disabled || loading}\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-labelledby={label ? 'tree-select-label' : undefined}\n >\n {multiple && selectedNodes.length > 0 && (\n <div className=\"flex gap-1 flex-shrink-0\">\n {selectedNodes.slice(0, visibleChipsCount).map((node) => (\n <span\n key={node.key}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded text-sm whitespace-nowrap\"\n >\n {node.label}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveItem(e, node.key)}\n className=\"hover:bg-primary/20 rounded-sm\"\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n ))}\n {selectedNodes.length > visibleChipsCount && (\n <span className=\"inline-flex items-center px-2 py-0.5 bg-surface text-text-muted rounded text-sm whitespace-nowrap\">\n +{selectedNodes.length - visibleChipsCount}\n </span>\n )}\n </div>\n )}\n <div\n className=\"absolute opacity-0 pointer-events-none whitespace-nowrap\"\n aria-hidden=\"true\"\n >\n {selectedNodes.map((node) => (\n <span\n key={node.key}\n data-hidden-chip\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded text-sm whitespace-nowrap\"\n >\n {node.label}\n <X className=\"h-3 w-3\" />\n </span>\n ))}\n </div>\n <input\n ref={inputRef}\n type=\"text\"\n className=\"bg-transparent outline-none cursor-pointer placeholder:text-text-muted flex-1 min-w-0 pointer-events-none\"\n placeholder={selectedNodes.length > 0 ? '' : placeholder}\n value={searchQuery}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n disabled={disabled || loading}\n readOnly={!isOpen || !searchable}\n tabIndex={-1}\n />\n <div className=\"flex items-center gap-1 text-text-muted\">\n {getDisplayValue && !disabled && !loading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"hover:text-text-primary transition-colors\"\n tabIndex={-1}\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n {loading ? (\n <Loader2 className={cn('animate-spin', iconSizes[size])} />\n ) : (\n <>\n {isOpen && searchable ? (\n <Search className={iconSizes[size]} />\n ) : (\n <ChevronDown\n className={cn(\n iconSizes[size],\n 'transition-transform duration-200',\n isOpen && 'rotate-180',\n )}\n />\n )}\n </>\n )}\n </div>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"p-2 w-[var(--radix-popover-trigger-width)]\"\n align=\"start\"\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n inputRef.current?.focus()\n }}\n >\n <div\n className=\"overflow-auto\"\n style={{ maxHeight: maxDropdownHeight }}\n role=\"tree\"\n aria-labelledby={label ? 'tree-select-label' : undefined}\n >\n {filteredData.length === 0 ? (\n <div className=\"px-3 py-4 text-center text-sm text-text-muted\">\n No options found\n </div>\n ) : (\n <Tree\n data={filteredData}\n checkable={checkable}\n checkedKeys={\n checkable && Array.isArray(currentValue)\n ? currentValue\n : undefined\n }\n onCheck={checkable ? handleCheck : undefined}\n selectable={!checkable}\n selectedKeys={\n !checkable\n ? Array.isArray(currentValue)\n ? currentValue\n : currentValue\n ? [currentValue]\n : []\n : undefined\n }\n onSelect={!checkable ? handleSelect : undefined}\n disabled={disabled}\n size={size}\n showLine={showLine}\n showIcon={showIcon}\n defaultExpandAll={defaultExpandAll || !!searchQuery}\n expandedKeys={searchQuery ? undefined : expandedKeys}\n onExpand={setExpandedKeys}\n />\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n\n if (!label && !helperMessage) return treeSelectElement\n\n return (\n <div className={cn('w-full flex flex-col', !fullWidth && 'inline-block')}>\n <div className=\"flex gap-2 items-center\">\n {label && (\n <label\n id=\"tree-select-label\"\n className=\"block mb-0.5\"\n >\n <span className=\"text-sm font-medium text-text-muted\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n {helperMessage && (\n <p className={statusMessageVariants({ status })}>{helperMessage}</p>\n )}\n </div>\n {treeSelectElement}\n </div>\n )\n },\n)\n\nTreeSelect.displayName = 'TreeSelect'\n\nexport type * from './types'\nexport default TreeSelect\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { checkbox_default } from './chunk-
|
|
1
|
+
import { checkbox_default } from './chunk-4XXDRVFM.js';
|
|
2
2
|
import { cn, getValidationStatus, iconSizes, statusMessageVariants } from './chunk-YNNAOXU5.js';
|
|
3
3
|
import { Search, ChevronRight, ChevronLeft, ChevronsRight, ChevronsLeft } from 'lucide-react';
|
|
4
4
|
import React from 'react';
|
|
@@ -397,5 +397,5 @@ var Transfer = React.memo(
|
|
|
397
397
|
Transfer.displayName = "Transfer";
|
|
398
398
|
|
|
399
399
|
export { Transfer };
|
|
400
|
-
//# sourceMappingURL=chunk-
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
400
|
+
//# sourceMappingURL=chunk-BH4DXQC4.js.map
|
|
401
|
+
//# sourceMappingURL=chunk-BH4DXQC4.js.map
|