next-data-kit 9.6.0 → 9.8.0
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/{chunk-YNII2J6V.cjs → chunk-4VG2HMRV.cjs} +146 -146
- package/dist/chunk-4VG2HMRV.cjs.map +1 -0
- package/dist/{chunk-A45O6PCJ.cjs → chunk-5TIEIY7M.cjs} +14 -4
- package/dist/chunk-5TIEIY7M.cjs.map +1 -0
- package/dist/{chunk-PSMWD5AA.js → chunk-PYLLPSZM.js} +119 -119
- package/dist/chunk-PYLLPSZM.js.map +1 -0
- package/dist/{chunk-4GSA6NBE.js → chunk-VFSNUXOW.js} +14 -4
- package/dist/chunk-VFSNUXOW.js.map +1 -0
- package/dist/client/utils/index.d.ts.map +1 -1
- package/dist/client.cjs +21 -21
- package/dist/client.js +2 -2
- package/dist/index.cjs +39 -39
- package/dist/index.js +3 -3
- package/dist/internal/hooks.cjs +2 -2
- package/dist/internal/hooks.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
- package/dist/chunk-4GSA6NBE.js.map +0 -1
- package/dist/chunk-A45O6PCJ.cjs.map +0 -1
- package/dist/chunk-PSMWD5AA.js.map +0 -1
- package/dist/chunk-YNII2J6V.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/utils.ts","../src/client/hooks/useSelection.ts","../src/client/hooks/usePagination.ts","../src/client/context/index.tsx","#style-inject:#style-inject","styles.css","../src/client/components/ui/table.tsx","../src/client/components/ui/checkbox.tsx","../src/client/components/ui/popover.tsx","../src/client/components/ui/dropdown-menu.tsx","../src/client/components/ui/button.tsx","../src/client/components/ui/pagination.tsx","../src/client/components/ui/select.tsx","../src/client/components/data-kit-table.tsx","../src/client/components/data-kit.tsx","../src/client/components/data-kit-infinity.tsx"],"names":["useState","useCallback","useMemo","createContext","jsx","useContext","cn","CheckboxPrimitive","CheckIcon","PopoverPrimitive","DropdownMenuPrimitive","cva","React","Button","Slot","jsxs","ChevronLeft","ChevronRight","MoreHorizontal","SelectPrimitive","ChevronDownIcon","ChevronUpIcon","debounce","useRef","useDataKit","action","useEffect","Filter","Loader2","Fragment","ArrowUp","ArrowDown","useInView"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","file":"chunk-4VG2HMRV.cjs","sourcesContent":["/**\n * next-data-kit - Server Utilities\n */\n\nimport type { TMongoFilterQuery, TSortEntry, TPaginationInfo } from '../types';\n\n/**\n * Check if a value is provided (not undefined, null, or empty string)\n */\nexport const isProvided = (value: unknown): boolean => value !== undefined && value !== null && value !== '';\n\n/**\n * Get a nested value from an object by path (e.g., 'user.name')\n */\nexport const getValueByPath = (obj: unknown, path: string): unknown => {\n\tif (!path) return undefined;\n\tconst parts = path.split('.');\n\tlet current: unknown = obj;\n\tfor (const part of parts) {\n\t\tif (current && typeof current === 'object' && part in (current as Record<string, unknown>)) {\n\t\t\tcurrent = (current as Record<string, unknown>)[part];\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn current;\n};\n\n/**\n * Check if a value matches exactly (supports array inclusion)\n */\nexport const matchesExact = (rowValue: unknown, needle: unknown): boolean => {\n\tif (Array.isArray(needle)) return needle.includes(rowValue as never);\n\treturn rowValue === needle;\n};\n\n/**\n * Check if a value matches a regex-like pattern (case-insensitive)\n */\nexport const matchesRegexLike = (rowValue: unknown, needle: unknown): boolean => {\n\tif (!isProvided(needle)) return true;\n\tif (rowValue === undefined || rowValue === null) return false;\n\tconst hay = String(rowValue);\n\n\tif (needle instanceof RegExp) return needle.test(hay);\n\tconst n = String(needle);\n\treturn hay.toLowerCase().includes(n.toLowerCase());\n};\n\n/**\n * Compare two values for sorting\n */\nexport const compareValues = (a: unknown, b: unknown): number => {\n\tif (a === b) return 0;\n\tif (a === undefined || a === null) return -1;\n\tif (b === undefined || b === null) return 1;\n\n\tif (typeof a === 'number' && typeof b === 'number') return a - b;\n\tif (typeof a === 'bigint' && typeof b === 'bigint') return a < b ? -1 : 1;\n\n\tconst as = String(a);\n\tconst bs = String(b);\n\treturn as.localeCompare(bs);\n};\n\n/**\n * Normalize and validate sort entries\n */\nexport const normalizeSorts = (sorts: TSortEntry[] | undefined): TSortEntry[] => (Array.isArray(sorts) ? sorts.filter(s => !!s?.path && (s.value === 1 || s.value === -1)) : []);\n\n/**\n * Check if a key is safe (not a prototype pollution key)\n */\nexport const isSafeKey = (key: string): boolean => {\n\tconst unsafeKeys = ['__proto__', 'constructor', 'prototype'];\n\treturn !unsafeKeys.includes(key);\n};\n\n/**\n * Helper to escape regex special characters in a string\n */\nexport const escapeRegex = (str: string): string => {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * Create a search filter for multiple fields\n *\n * @example\n * ```typescript\n * filterCustom: {\n * search: createSearchFilter(['name', 'email', 'phone'])\n * }\n * ```\n */\nexport const createSearchFilter = <T>(fields: (keyof T | string)[]): ((value: unknown) => TMongoFilterQuery<T>) => {\n\treturn (value: unknown): TMongoFilterQuery<T> => {\n\t\tif (!value || typeof value !== 'string') {\n\t\t\treturn {} as TMongoFilterQuery<T>;\n\t\t}\n\n\t\tconst escapedValue = escapeRegex(value);\n\t\treturn {\n\t\t\t$or: fields.map(field => ({\n\t\t\t\t[field]: { $regex: escapedValue, $options: 'i' },\n\t\t\t})),\n\t\t} as TMongoFilterQuery<T>;\n\t};\n};\n/**\n * Calculate pagination info from page, limit, and total\n */\nexport const calculatePagination = (page: number, limit: number, total: number): TPaginationInfo => ({\n\tcurrentPage: page,\n\ttotalPages: Math.ceil(total / limit),\n\ttotalItems: total,\n\titemsPerPage: limit,\n\thasNextPage: page * limit < total,\n\thasPrevPage: page > 1,\n});\n","/**\n * next-data-kit - useSelection Hook\n *\n * React hook for managing table row selection.\n */\n\n'use client';\n\nimport { useState, useCallback, useMemo } from 'react';\nimport type { TUseSelectionReturn } from '../../types';\n\n\nexport const useSelection = <T = string>(initialSelected: T[] = []): TUseSelectionReturn<T> => {\n // ** State\n const [selectedIds, setSelectedIds] = useState<Set<T>>(new Set(initialSelected));\n\n // ** Select a single item\n const select = useCallback((id: T) => {\n setSelectedIds((prev) => new Set(prev).add(id));\n }, []);\n\n // ** Deselect a single item\n const deselect = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n // ** Toggle selection of a single item\n const toggle = useCallback((id: T) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }, []);\n\n // ** Select all items\n const selectAll = useCallback((ids: T[]) => {\n setSelectedIds(new Set(ids));\n }, []);\n\n // ** Deselect all items\n const deselectAll = useCallback(() => {\n setSelectedIds(new Set());\n }, []);\n\n // ** Toggle all items selection\n const toggleAll = useCallback((ids: T[]) => {\n setSelectedIds((prev) => {\n // ** If all are selected, deselect all\n if (ids.every((id) => prev.has(id))) return new Set();\n // ** Otherwise, select all\n return new Set(ids);\n });\n }, []);\n\n // ** Check if an item is selected\n const isSelected = useCallback((id: T) => selectedIds.has(id), [selectedIds]);\n\n // ** Get array of selected IDs\n const getSelectedArray = useCallback(() => Array.from(selectedIds), [selectedIds]);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(() => selectedIds.size > 0, [selectedIds.size]);\n const isIndeterminate = useMemo(() => false, []);\n\n return {\n selectedIds,\n isAllSelected,\n isIndeterminate,\n select,\n deselect,\n toggle,\n selectAll,\n deselectAll,\n toggleAll,\n isSelected,\n getSelectedArray,\n };\n};\n\n\nexport const useSelectionWithTotal = <T = string>(\n totalItems: T[],\n initialSelected: T[] = []\n): Omit<TUseSelectionReturn<T>, 'toggleAll'> & {\n isAllSelected: boolean;\n isIndeterminate: boolean;\n toggleAll: () => void;\n} => {\n // ** Base selection hook\n const selection = useSelection<T>(initialSelected);\n\n // ** Calculate derived state\n const isAllSelected = useMemo(\n () => totalItems.length > 0 && totalItems.every((id) => selection.selectedIds.has(id)),\n [totalItems, selection.selectedIds]\n );\n\n const isIndeterminate = useMemo(\n () => selection.selectedIds.size > 0 && selection.selectedIds.size < totalItems.length,\n [totalItems.length, selection.selectedIds.size]\n );\n\n // ** Override toggleAll to use totalItems\n const toggleAll = useCallback(() => {\n if (isAllSelected) selection.deselectAll();\n else selection.selectAll(totalItems);\n }, [isAllSelected, selection, totalItems]);\n\n return {\n ...selection,\n isAllSelected,\n isIndeterminate,\n toggleAll,\n };\n};\n","/**\n * next-data-kit - usePagination Hook\n *\n * React hook for calculating pagination state.\n */\n\n'use client';\n\nimport { useMemo } from 'react';\nimport type { TPaginationInfo } from '../../types';\nimport { calculatePagination } from '../../server/utils';\n\nexport type TUsePaginationReturn = TPaginationInfo & {\n\t// ** Array of page numbers/ellipsis to display\n\tpages: (number | 'ellipsis')[];\n\t// ** First page number\n\tfirstPage: number;\n\t// ** Last page number\n\tlastPage: number;\n};\n\nconst range = (start: number, end: number): number[] => Array.from({ length: end - start + 1 }, (_, idx) => idx + start);\n\nexport const usePagination = (\n\tprops: Readonly<{\n\t\tpage: number;\n\t\tlimit: number;\n\t\ttotal: number;\n\t\t// ** Number of page buttons to show on each side of current page\n\t\tsiblingCount?: number;\n\t}>,\n): TUsePaginationReturn => {\n\t// ** Deconstruct Props\n\tconst { page, limit, total, siblingCount = 1 } = props;\n\n\t// ** Calculate pagination info\n\tconst paginationInfo = useMemo(() => calculatePagination(page, limit, total), [page, limit, total]);\n\n\t// ** Calculate page numbers to display\n\tconst pages = useMemo(() => {\n\t\tconst { totalPages } = paginationInfo;\n\n\t\t// ** Total number of page buttons = siblings on both sides + first + last + current + 2 ellipsis\n\t\tconst totalPageNumbers = siblingCount * 2 + 5;\n\n\t\t// ** If total pages is less than page numbers we want to show\n\t\tif (totalPageNumbers >= totalPages) return range(1, totalPages);\n\n\t\tconst leftSiblingIndex = Math.max(page - siblingCount, 1);\n\t\tconst rightSiblingIndex = Math.min(page + siblingCount, totalPages);\n\n\t\tconst shouldShowLeftEllipsis = leftSiblingIndex > 2;\n\t\tconst shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n\t\t// ** No left ellipsis, but right ellipsis\n\t\tif (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount);\n\t\t\treturn [...leftRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\t// ** Left ellipsis, no right ellipsis\n\t\tif (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n\t\t\tconst rightRange = range(totalPages - (3 + 2 * siblingCount) + 1, totalPages);\n\t\t\treturn [1, 'ellipsis' as const, ...rightRange];\n\t\t}\n\n\t\t// ** Both ellipsis\n\t\tif (shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n\t\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex);\n\t\t\treturn [1, 'ellipsis' as const, ...middleRange, 'ellipsis' as const, totalPages];\n\t\t}\n\n\t\treturn range(1, totalPages);\n\t}, [paginationInfo, page, siblingCount]);\n\n\treturn {\n\t\t...paginationInfo,\n\t\tpages,\n\t\tfirstPage: 1,\n\t\tlastPage: paginationInfo.totalPages,\n\t};\n};\n","/**\n * next-data-kit - DataKitContext\n *\n * React context for sharing next-data-kit state across components.\n */\n\n'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\nimport type { TUseDataKitReturn } from '../../types';\n\n\nexport type TDataKitContextValue<T = unknown, R = unknown> = TUseDataKitReturn<T, R>;\n\n\nexport const createDataKitContext = <T = unknown, R = unknown>() => {\n const Context = createContext<TDataKitContextValue<T, R> | null>(null);\n\n // ** Provider component for next-data-kit context\n const DataKitProvider = (props: Readonly<{\n value: TDataKitContextValue<T, R>;\n children: ReactNode;\n }>) => {\n const { value, children } = props;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n // ** Hook to access next-data-kit context\n const useDataKitContext = (): TDataKitContextValue<T, R> => {\n const context = useContext(Context);\n if (!context) {\n throw new Error('useDataKitContext must be used within a DataKitProvider');\n }\n return context;\n };\n\n return { DataKitProvider, useDataKitContext, Context };\n};\n\n\nconst {\n DataKitProvider: DefaultDataKitProvider,\n useDataKitContext: useDefaultDataKitContext,\n Context: DefaultDataKitContext,\n} = createDataKitContext();\n\nexport {\n DefaultDataKitProvider as DataKitProvider,\n useDefaultDataKitContext as useDataKitContext,\n DefaultDataKitContext as DataKitContext,\n};\n","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\"/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\\n@layer properties {\\n @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))) {\\n *,\\n :before,\\n :after,\\n ::backdrop {\\n --ndk-space-y-reverse:0;\\n --ndk-border-style:solid;\\n --ndk-font-weight:initial;\\n --ndk-tracking:initial;\\n --ndk-shadow:0 0 #0000;\\n --ndk-shadow-color:initial;\\n --ndk-shadow-alpha:100%;\\n --ndk-inset-shadow:0 0 #0000;\\n --ndk-inset-shadow-color:initial;\\n --ndk-inset-shadow-alpha:100%;\\n --ndk-ring-color:initial;\\n --ndk-ring-shadow:0 0 #0000;\\n --ndk-inset-ring-color:initial;\\n --ndk-inset-ring-shadow:0 0 #0000;\\n --ndk-ring-inset:initial;\\n --ndk-ring-offset-width:0px;\\n --ndk-ring-offset-color:#fff;\\n --ndk-ring-offset-shadow:0 0 #0000;\\n --ndk-translate-x:0;\\n --ndk-translate-y:0;\\n --ndk-translate-z:0;\\n }\\n }\\n}\\n@layer theme {\\n :root,\\n :host {\\n --ndk-font-sans:ui-sans-serif,system-ui,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\";\\n --ndk-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace;\\n --ndk-color-red-400:oklch(70.4% .191 22.216);\\n --ndk-color-red-500:oklch(63.7% .237 25.331);\\n --ndk-color-red-600:oklch(57.7% .245 27.325);\\n --ndk-color-red-700:oklch(50.5% .213 27.518);\\n --ndk-color-gray-50:oklch(98.5% .002 247.839);\\n --ndk-color-gray-100:oklch(96.7% .003 264.542);\\n --ndk-color-gray-200:oklch(92.8% .006 264.531);\\n --ndk-color-gray-400:oklch(70.7% .022 261.325);\\n --ndk-color-gray-500:oklch(55.1% .027 264.364);\\n --ndk-color-gray-800:oklch(27.8% .033 256.848);\\n --ndk-color-gray-900:oklch(21% .034 264.665);\\n --ndk-color-gray-950:oklch(13% .028 261.692);\\n --ndk-color-black:#000;\\n --ndk-color-white:#fff;\\n --ndk-spacing:.25rem;\\n --ndk-text-xs:.75rem;\\n --ndk-text-xs--line-height:calc(1/.75);\\n --ndk-text-sm:.875rem;\\n --ndk-text-sm--line-height:calc(1.25/.875);\\n --ndk-font-weight-medium:500;\\n --ndk-tracking-widest:.1em;\\n --ndk-radius-sm:.25rem;\\n --ndk-radius-md:.375rem;\\n --ndk-radius-lg:.5rem;\\n --ndk-animate-spin:spin 1s linear infinite;\\n --ndk-default-transition-duration:.15s;\\n --ndk-default-transition-timing-function:cubic-bezier(.4,0,.2,1);\\n --ndk-default-font-family:var(--ndk-font-sans);\\n --ndk-default-mono-font-family:var(--ndk-font-mono);\\n --ndk-animate-in:animate-in;\\n --ndk-animate-out:animate-out;\\n }\\n}\\n@layer base {\\n *,\\n :after,\\n :before,\\n ::backdrop {\\n box-sizing: border-box;\\n border: 0 solid;\\n margin: 0;\\n padding: 0;\\n }\\n ::file-selector-button {\\n box-sizing: border-box;\\n border: 0 solid;\\n margin: 0;\\n padding: 0;\\n }\\n html,\\n :host {\\n -webkit-text-size-adjust: 100%;\\n tab-size: 4;\\n line-height: 1.5;\\n font-family: var(--ndk-default-font-family,ui-sans-serif,system-ui,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\");\\n font-feature-settings: var(--ndk-default-font-feature-settings,normal);\\n font-variation-settings: var(--ndk-default-font-variation-settings,normal);\\n -webkit-tap-highlight-color: transparent;\\n }\\n hr {\\n height: 0;\\n color: inherit;\\n border-top-width: 1px;\\n }\\n abbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n }\\n h1,\\n h2,\\n h3,\\n h4,\\n h5,\\n h6 {\\n font-size: inherit;\\n font-weight: inherit;\\n }\\n a {\\n color: inherit;\\n -webkit-text-decoration: inherit;\\n -webkit-text-decoration: inherit;\\n -webkit-text-decoration: inherit;\\n text-decoration: inherit;\\n }\\n b,\\n strong {\\n font-weight: bolder;\\n }\\n code,\\n kbd,\\n samp,\\n pre {\\n font-family: var(--ndk-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace);\\n font-feature-settings: var(--ndk-default-mono-font-feature-settings,normal);\\n font-variation-settings: var(--ndk-default-mono-font-variation-settings,normal);\\n font-size: 1em;\\n }\\n small {\\n font-size: 80%;\\n }\\n sub,\\n sup {\\n vertical-align: baseline;\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n }\\n sub {\\n bottom: -.25em;\\n }\\n sup {\\n top: -.5em;\\n }\\n table {\\n text-indent: 0;\\n border-color: inherit;\\n border-collapse: collapse;\\n }\\n :-moz-focusring {\\n outline: auto;\\n }\\n progress {\\n vertical-align: baseline;\\n }\\n summary {\\n display: list-item;\\n }\\n ol,\\n ul,\\n menu {\\n list-style: none;\\n }\\n img,\\n svg,\\n video,\\n canvas,\\n audio,\\n iframe,\\n embed,\\n object {\\n vertical-align: middle;\\n display: block;\\n }\\n img,\\n video {\\n max-width: 100%;\\n height: auto;\\n }\\n button,\\n input,\\n select,\\n optgroup,\\n textarea {\\n font: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n opacity: 1;\\n background-color: #0000;\\n border-radius: 0;\\n }\\n ::file-selector-button {\\n font: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n opacity: 1;\\n background-color: #0000;\\n border-radius: 0;\\n }\\n :where(select:is([multiple], [size])) optgroup {\\n font-weight: bolder;\\n }\\n :where(select:is([multiple], [size])) optgroup option {\\n padding-inline-start: 20px;\\n }\\n ::file-selector-button {\\n margin-inline-end: 4px;\\n }\\n ::placeholder {\\n opacity: 1;\\n }\\n @supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px) {\\n ::placeholder {\\n color: currentColor;\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n ::placeholder {\\n color: color-mix(in oklab, currentcolor 50%, transparent);\\n }\\n }\\n }\\n textarea {\\n resize: vertical;\\n }\\n ::-webkit-search-decoration {\\n -webkit-appearance: none;\\n }\\n ::-webkit-date-and-time-value {\\n min-height: 1lh;\\n text-align: inherit;\\n }\\n ::-webkit-datetime-edit {\\n display: inline-flex;\\n }\\n ::-webkit-datetime-edit-fields-wrapper {\\n padding: 0;\\n }\\n ::-webkit-datetime-edit {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-year-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-month-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-day-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-hour-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-minute-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-second-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-millisecond-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-meridiem-field {\\n padding-block: 0;\\n }\\n ::-webkit-calendar-picker-indicator {\\n line-height: 1;\\n }\\n :-moz-ui-invalid {\\n box-shadow: none;\\n }\\n button,\\n input:where([type=button], [type=reset], [type=submit]) {\\n appearance: button;\\n }\\n ::file-selector-button {\\n appearance: button;\\n }\\n ::-webkit-inner-spin-button {\\n height: auto;\\n }\\n ::-webkit-outer-spin-button {\\n height: auto;\\n }\\n [hidden]:where(:not([hidden=until-found])) {\\n display: none !important;\\n }\\n}\\n@layer components;\\n@layer utilities {\\n .ndk\\\\:pointer-events-none {\\n pointer-events: none;\\n }\\n .ndk\\\\:sr-only {\\n clip-path: inset(50%);\\n white-space: nowrap;\\n border-width: 0;\\n width: 1px;\\n height: 1px;\\n margin: -1px;\\n padding: 0;\\n position: absolute;\\n overflow: hidden;\\n }\\n .ndk\\\\:absolute {\\n position: absolute;\\n }\\n .ndk\\\\:relative {\\n position: relative;\\n }\\n .ndk\\\\:right-2 {\\n right: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:left-2 {\\n left: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:z-50 {\\n z-index: 50;\\n }\\n .ndk\\\\:-mx-1 {\\n margin-inline: calc(var(--ndk-spacing)*-1);\\n }\\n .ndk\\\\:mx-0 {\\n margin-inline: calc(var(--ndk-spacing)*0);\\n }\\n .ndk\\\\:mx-auto {\\n margin-inline: auto;\\n }\\n .ndk\\\\:my-1 {\\n margin-block: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:mt-4 {\\n margin-top: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:mr-1\\\\.5 {\\n margin-right: calc(var(--ndk-spacing)*1.5);\\n }\\n .ndk\\\\:mr-2 {\\n margin-right: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:-ml-4 {\\n margin-left: calc(var(--ndk-spacing)*-4);\\n }\\n .ndk\\\\:ml-1 {\\n margin-left: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:ml-auto {\\n margin-left: auto;\\n }\\n .ndk\\\\:flex {\\n display: flex;\\n }\\n .ndk\\\\:grid {\\n display: grid;\\n }\\n .ndk\\\\:hidden {\\n display: none;\\n }\\n .ndk\\\\:inline-flex {\\n display: inline-flex;\\n }\\n .ndk\\\\:size-2 {\\n width: calc(var(--ndk-spacing)*2);\\n height: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:size-3\\\\.5 {\\n width: calc(var(--ndk-spacing)*3.5);\\n height: calc(var(--ndk-spacing)*3.5);\\n }\\n .ndk\\\\:size-4 {\\n width: calc(var(--ndk-spacing)*4);\\n height: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:size-5 {\\n width: calc(var(--ndk-spacing)*5);\\n height: calc(var(--ndk-spacing)*5);\\n }\\n .ndk\\\\:size-6 {\\n width: calc(var(--ndk-spacing)*6);\\n height: calc(var(--ndk-spacing)*6);\\n }\\n .ndk\\\\:size-8 {\\n width: calc(var(--ndk-spacing)*8);\\n height: calc(var(--ndk-spacing)*8);\\n }\\n .ndk\\\\:size-9 {\\n width: calc(var(--ndk-spacing)*9);\\n height: calc(var(--ndk-spacing)*9);\\n }\\n .ndk\\\\:size-10 {\\n width: calc(var(--ndk-spacing)*10);\\n height: calc(var(--ndk-spacing)*10);\\n }\\n .ndk\\\\:h-8 {\\n height: calc(var(--ndk-spacing)*8);\\n }\\n .ndk\\\\:h-9 {\\n height: calc(var(--ndk-spacing)*9);\\n }\\n .ndk\\\\:h-10 {\\n height: calc(var(--ndk-spacing)*10);\\n }\\n .ndk\\\\:h-24 {\\n height: calc(var(--ndk-spacing)*24);\\n }\\n .ndk\\\\:h-48 {\\n height: calc(var(--ndk-spacing)*48);\\n }\\n .ndk\\\\:h-\\\\[var\\\\(--radix-select-trigger-height\\\\)\\\\] {\\n height: var(--radix-select-trigger-height);\\n }\\n .ndk\\\\:h-auto {\\n height: auto;\\n }\\n .ndk\\\\:h-full {\\n height: 100%;\\n }\\n .ndk\\\\:h-px {\\n height: 1px;\\n }\\n .ndk\\\\:max-h-\\\\(--radix-dropdown-menu-content-available-height\\\\) {\\n max-height: var(--radix-dropdown-menu-content-available-height);\\n }\\n .ndk\\\\:max-h-\\\\(--radix-select-content-available-height\\\\) {\\n max-height: var(--radix-select-content-available-height);\\n }\\n .ndk\\\\:min-h-0 {\\n min-height: calc(var(--ndk-spacing)*0);\\n }\\n .ndk\\\\:min-h-\\\\[200px\\\\] {\\n min-height: 200px;\\n }\\n .ndk\\\\:w-12 {\\n width: calc(var(--ndk-spacing)*12);\\n }\\n .ndk\\\\:w-16 {\\n width: calc(var(--ndk-spacing)*16);\\n }\\n .ndk\\\\:w-72 {\\n width: calc(var(--ndk-spacing)*72);\\n }\\n .ndk\\\\:w-80 {\\n width: calc(var(--ndk-spacing)*80);\\n }\\n .ndk\\\\:w-auto {\\n width: auto;\\n }\\n .ndk\\\\:w-fit {\\n width: fit-content;\\n }\\n .ndk\\\\:w-full {\\n width: 100%;\\n }\\n .ndk\\\\:min-w-\\\\[8rem\\\\] {\\n min-width: 8rem;\\n }\\n .ndk\\\\:min-w-\\\\[var\\\\(--radix-select-trigger-width\\\\)\\\\] {\\n min-width: var(--radix-select-trigger-width);\\n }\\n .ndk\\\\:flex-1 {\\n flex: 1;\\n }\\n .ndk\\\\:shrink-0 {\\n flex-shrink: 0;\\n }\\n .ndk\\\\:caption-bottom {\\n caption-side: bottom;\\n }\\n .ndk\\\\:origin-\\\\(--radix-dropdown-menu-content-transform-origin\\\\) {\\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\\n }\\n .ndk\\\\:origin-\\\\(--radix-popover-content-transform-origin\\\\) {\\n transform-origin: var(--radix-popover-content-transform-origin);\\n }\\n .ndk\\\\:origin-\\\\(--radix-select-content-transform-origin\\\\) {\\n transform-origin: var(--radix-select-content-transform-origin);\\n }\\n .ndk\\\\:animate-spin {\\n animation: var(--ndk-animate-spin);\\n }\\n .ndk\\\\:cursor-default {\\n cursor: default;\\n }\\n .ndk\\\\:scroll-my-1 {\\n scroll-margin-block: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:flex-col {\\n flex-direction: column;\\n }\\n .ndk\\\\:flex-row {\\n flex-direction: row;\\n }\\n .ndk\\\\:place-content-center {\\n place-content: center;\\n }\\n .ndk\\\\:items-center {\\n align-items: center;\\n }\\n .ndk\\\\:justify-between {\\n justify-content: space-between;\\n }\\n .ndk\\\\:justify-center {\\n justify-content: center;\\n }\\n .ndk\\\\:justify-end {\\n justify-content: flex-end;\\n }\\n .ndk\\\\:gap-1 {\\n gap: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:gap-1\\\\.5 {\\n gap: calc(var(--ndk-spacing)*1.5);\\n }\\n .ndk\\\\:gap-2 {\\n gap: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:gap-3 {\\n gap: calc(var(--ndk-spacing)*3);\\n }\\n .ndk\\\\:gap-4 {\\n gap: calc(var(--ndk-spacing)*4);\\n }\\n :where(.ndk\\\\:space-y-3 > :not(:last-child)) {\\n --ndk-space-y-reverse:0;\\n margin-block-start: calc(calc(var(--ndk-spacing)*3)*var(--ndk-space-y-reverse));\\n margin-block-end: calc(calc(var(--ndk-spacing)*3)*calc(1 - var(--ndk-space-y-reverse)));\\n }\\n .ndk\\\\:overflow-hidden {\\n overflow: hidden;\\n }\\n .ndk\\\\:overflow-x-auto {\\n overflow-x: auto;\\n }\\n .ndk\\\\:overflow-x-hidden {\\n overflow-x: hidden;\\n }\\n .ndk\\\\:overflow-y-auto {\\n overflow-y: auto;\\n }\\n .ndk\\\\:rounded-\\\\[4px\\\\] {\\n border-radius: 4px;\\n }\\n .ndk\\\\:rounded-lg {\\n border-radius: var(--ndk-radius-lg);\\n }\\n .ndk\\\\:rounded-md {\\n border-radius: var(--ndk-radius-md);\\n }\\n .ndk\\\\:rounded-sm {\\n border-radius: var(--ndk-radius-sm);\\n }\\n .ndk\\\\:border {\\n border-style: var(--ndk-border-style);\\n border-width: 1px;\\n }\\n .ndk\\\\:border-t {\\n border-top-style: var(--ndk-border-style);\\n border-top-width: 1px;\\n }\\n .ndk\\\\:border-b {\\n border-bottom-style: var(--ndk-border-style);\\n border-bottom-width: 1px;\\n }\\n .ndk\\\\:border-gray-100 {\\n border-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:border-gray-200 {\\n border-color: var(--ndk-color-gray-200);\\n }\\n .ndk\\\\:bg-gray-50\\\\/70 {\\n background-color: var(--ndk-color-gray-50);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:bg-gray-50\\\\/70 {\\n background-color: color-mix(in oklab, var(--ndk-color-gray-50)70%, transparent);\\n }\\n }\\n .ndk\\\\:bg-gray-100 {\\n background-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:bg-gray-900 {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:bg-red-600 {\\n background-color: var(--ndk-color-red-600);\\n }\\n .ndk\\\\:bg-transparent {\\n background-color: #0000;\\n }\\n .ndk\\\\:bg-white {\\n background-color: var(--ndk-color-white);\\n }\\n .ndk\\\\:fill-current {\\n fill: currentColor;\\n }\\n .ndk\\\\:p-1 {\\n padding: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:p-2 {\\n padding: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:p-4 {\\n padding: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:px-2 {\\n padding-inline: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:px-2\\\\.5 {\\n padding-inline: calc(var(--ndk-spacing)*2.5);\\n }\\n .ndk\\\\:px-3 {\\n padding-inline: calc(var(--ndk-spacing)*3);\\n }\\n .ndk\\\\:px-4 {\\n padding-inline: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:px-6 {\\n padding-inline: calc(var(--ndk-spacing)*6);\\n }\\n .ndk\\\\:py-0 {\\n padding-block: calc(var(--ndk-spacing)*0);\\n }\\n .ndk\\\\:py-1 {\\n padding-block: calc(var(--ndk-spacing)*1);\\n }\\n .ndk\\\\:py-1\\\\.5 {\\n padding-block: calc(var(--ndk-spacing)*1.5);\\n }\\n .ndk\\\\:py-2 {\\n padding-block: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:py-4 {\\n padding-block: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:pt-3 {\\n padding-top: calc(var(--ndk-spacing)*3);\\n }\\n .ndk\\\\:pt-4 {\\n padding-top: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:pr-2 {\\n padding-right: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:pr-8 {\\n padding-right: calc(var(--ndk-spacing)*8);\\n }\\n .ndk\\\\:pb-3 {\\n padding-bottom: calc(var(--ndk-spacing)*3);\\n }\\n .ndk\\\\:pl-2 {\\n padding-left: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:pl-8 {\\n padding-left: calc(var(--ndk-spacing)*8);\\n }\\n .ndk\\\\:text-center {\\n text-align: center;\\n }\\n .ndk\\\\:text-left {\\n text-align: left;\\n }\\n .ndk\\\\:align-middle {\\n vertical-align: middle;\\n }\\n .ndk\\\\:text-sm {\\n font-size: var(--ndk-text-sm);\\n line-height: var(--ndk-leading,var(--ndk-text-sm--line-height));\\n }\\n .ndk\\\\:text-xs {\\n font-size: var(--ndk-text-xs);\\n line-height: var(--ndk-leading,var(--ndk-text-xs--line-height));\\n }\\n .ndk\\\\:font-medium {\\n --ndk-font-weight:var(--ndk-font-weight-medium);\\n font-weight: var(--ndk-font-weight-medium);\\n }\\n .ndk\\\\:tracking-widest {\\n --ndk-tracking:var(--ndk-tracking-widest);\\n letter-spacing: var(--ndk-tracking-widest);\\n }\\n .ndk\\\\:whitespace-nowrap {\\n white-space: nowrap;\\n }\\n .ndk\\\\:text-current {\\n color: currentColor;\\n }\\n .ndk\\\\:text-gray-500 {\\n color: var(--ndk-color-gray-500);\\n }\\n .ndk\\\\:text-gray-900 {\\n color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:text-red-500 {\\n color: var(--ndk-color-red-500);\\n }\\n .ndk\\\\:text-white {\\n color: var(--ndk-color-white);\\n }\\n .ndk\\\\:underline-offset-4 {\\n text-underline-offset: 4px;\\n }\\n .ndk\\\\:opacity-50 {\\n opacity: .5;\\n }\\n .ndk\\\\:shadow-lg {\\n --ndk-shadow:0 10px 15px -3px var(--ndk-shadow-color,#0000001a),0 4px 6px -4px var(--ndk-shadow-color,#0000001a);\\n box-shadow:\\n var(--ndk-inset-shadow),\\n var(--ndk-inset-ring-shadow),\\n var(--ndk-ring-offset-shadow),\\n var(--ndk-ring-shadow),\\n var(--ndk-shadow);\\n }\\n .ndk\\\\:shadow-md {\\n --ndk-shadow:0 4px 6px -1px var(--ndk-shadow-color,#0000001a),0 2px 4px -2px var(--ndk-shadow-color,#0000001a);\\n box-shadow:\\n var(--ndk-inset-shadow),\\n var(--ndk-inset-ring-shadow),\\n var(--ndk-ring-offset-shadow),\\n var(--ndk-ring-shadow),\\n var(--ndk-shadow);\\n }\\n .ndk\\\\:shadow-xs {\\n --ndk-shadow:0 1px 2px 0 var(--ndk-shadow-color,#0000000d);\\n box-shadow:\\n var(--ndk-inset-shadow),\\n var(--ndk-inset-ring-shadow),\\n var(--ndk-ring-offset-shadow),\\n var(--ndk-ring-shadow),\\n var(--ndk-shadow);\\n }\\n .ndk\\\\:outline-hidden {\\n --ndk-outline-style:none;\\n outline-style: none;\\n }\\n @media (forced-colors: active) {\\n .ndk\\\\:outline-hidden {\\n outline-offset: 2px;\\n outline: 2px solid #0000;\\n }\\n }\\n .ndk\\\\:transition-\\\\[color\\\\,box-shadow\\\\] {\\n transition-property: color, box-shadow;\\n transition-timing-function: var(--ndk-ease,var(--ndk-default-transition-timing-function));\\n transition-duration: var(--ndk-duration,var(--ndk-default-transition-duration));\\n }\\n .ndk\\\\:transition-all {\\n transition-property: all;\\n transition-timing-function: var(--ndk-ease,var(--ndk-default-transition-timing-function));\\n transition-duration: var(--ndk-duration,var(--ndk-default-transition-duration));\\n }\\n .ndk\\\\:transition-colors {\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n outline-color,\\n text-decoration-color,\\n fill,\\n stroke,\\n --ndk-gradient-from,\\n --ndk-gradient-via,\\n --ndk-gradient-to;\\n transition-timing-function: var(--ndk-ease,var(--ndk-default-transition-timing-function));\\n transition-duration: var(--ndk-duration,var(--ndk-default-transition-duration));\\n }\\n .ndk\\\\:transition-shadow {\\n transition-property: box-shadow;\\n transition-timing-function: var(--ndk-ease,var(--ndk-default-transition-timing-function));\\n transition-duration: var(--ndk-duration,var(--ndk-default-transition-duration));\\n }\\n .ndk\\\\:transition-none {\\n transition-property: none;\\n }\\n .ndk\\\\:outline-none {\\n --ndk-outline-style:none;\\n outline-style: none;\\n }\\n .ndk\\\\:select-none {\\n -webkit-user-select: none;\\n user-select: none;\\n }\\n @media (hover: hover) {\\n .ndk\\\\:hover\\\\:bg-gray-50:hover {\\n background-color: var(--ndk-color-gray-50);\\n }\\n .ndk\\\\:hover\\\\:bg-gray-100:hover {\\n background-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:hover\\\\:bg-gray-200:hover {\\n background-color: var(--ndk-color-gray-200);\\n }\\n .ndk\\\\:hover\\\\:bg-gray-800:hover {\\n background-color: var(--ndk-color-gray-800);\\n }\\n .ndk\\\\:hover\\\\:bg-red-700:hover {\\n background-color: var(--ndk-color-red-700);\\n }\\n .ndk\\\\:hover\\\\:text-gray-900:hover {\\n color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:hover\\\\:underline:hover {\\n text-decoration-line: underline;\\n }\\n }\\n .ndk\\\\:focus\\\\:bg-gray-50:focus {\\n background-color: var(--ndk-color-gray-50);\\n }\\n .ndk\\\\:focus\\\\:text-gray-900:focus {\\n color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:focus\\\\:ring-2:focus {\\n --ndk-ring-shadow:var(--ndk-ring-inset,)0 0 0 calc(2px + var(--ndk-ring-offset-width))var(--ndk-ring-color,currentcolor);\\n box-shadow:\\n var(--ndk-inset-shadow),\\n var(--ndk-inset-ring-shadow),\\n var(--ndk-ring-offset-shadow),\\n var(--ndk-ring-shadow),\\n var(--ndk-shadow);\\n }\\n .ndk\\\\:focus-visible\\\\:border-gray-900:focus-visible {\\n border-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:focus-visible\\\\:ring-\\\\[3px\\\\]:focus-visible {\\n --ndk-ring-shadow:var(--ndk-ring-inset,)0 0 0 calc(3px + var(--ndk-ring-offset-width))var(--ndk-ring-color,currentcolor);\\n box-shadow:\\n var(--ndk-inset-shadow),\\n var(--ndk-inset-ring-shadow),\\n var(--ndk-ring-offset-shadow),\\n var(--ndk-ring-shadow),\\n var(--ndk-shadow);\\n }\\n .ndk\\\\:focus-visible\\\\:ring-black\\\\/20:focus-visible {\\n --ndk-ring-color:var(--ndk-color-black);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:focus-visible\\\\:ring-black\\\\/20:focus-visible {\\n --ndk-ring-color:color-mix(in oklab,var(--ndk-color-black)20%,transparent);\\n }\\n }\\n .ndk\\\\:disabled\\\\:pointer-events-none:disabled {\\n pointer-events: none;\\n }\\n .ndk\\\\:disabled\\\\:cursor-not-allowed:disabled {\\n cursor: not-allowed;\\n }\\n .ndk\\\\:disabled\\\\:opacity-50:disabled {\\n opacity: .5;\\n }\\n .ndk\\\\:has-\\\\[\\\\>svg\\\\]\\\\:px-2\\\\.5:has(> svg) {\\n padding-inline: calc(var(--ndk-spacing)*2.5);\\n }\\n .ndk\\\\:has-\\\\[\\\\>svg\\\\]\\\\:px-3:has(> svg) {\\n padding-inline: calc(var(--ndk-spacing)*3);\\n }\\n .ndk\\\\:has-\\\\[\\\\>svg\\\\]\\\\:px-4:has(> svg) {\\n padding-inline: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:aria-invalid\\\\:border-red-500[aria-invalid=true] {\\n border-color: var(--ndk-color-red-500);\\n }\\n .ndk\\\\:aria-invalid\\\\:ring-red-500\\\\/20[aria-invalid=true] {\\n --ndk-ring-color:var(--ndk-color-red-500);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:aria-invalid\\\\:ring-red-500\\\\/20[aria-invalid=true] {\\n --ndk-ring-color:color-mix(in oklab,var(--ndk-color-red-500)20%,transparent);\\n }\\n }\\n .ndk\\\\:data-\\\\[disabled\\\\]\\\\:pointer-events-none[data-disabled] {\\n pointer-events: none;\\n }\\n .ndk\\\\:data-\\\\[disabled\\\\]\\\\:opacity-50[data-disabled] {\\n opacity: .5;\\n }\\n .ndk\\\\:data-\\\\[inset\\\\]\\\\:pl-8[data-inset] {\\n padding-left: calc(var(--ndk-spacing)*8);\\n }\\n .ndk\\\\:data-\\\\[placeholder\\\\]\\\\:text-gray-500[data-placeholder] {\\n color: var(--ndk-color-gray-500);\\n }\\n .ndk\\\\:data-\\\\[side\\\\=bottom\\\\]\\\\:translate-y-1[data-side=bottom] {\\n --ndk-translate-y:calc(var(--ndk-spacing)*1);\\n translate: var(--ndk-translate-x)var(--ndk-translate-y);\\n }\\n .ndk\\\\:data-\\\\[side\\\\=left\\\\]\\\\:-translate-x-1[data-side=left] {\\n --ndk-translate-x:calc(var(--ndk-spacing)*-1);\\n translate: var(--ndk-translate-x)var(--ndk-translate-y);\\n }\\n .ndk\\\\:data-\\\\[side\\\\=right\\\\]\\\\:translate-x-1[data-side=right] {\\n --ndk-translate-x:calc(var(--ndk-spacing)*1);\\n translate: var(--ndk-translate-x)var(--ndk-translate-y);\\n }\\n .ndk\\\\:data-\\\\[side\\\\=top\\\\]\\\\:-translate-y-1[data-side=top] {\\n --ndk-translate-y:calc(var(--ndk-spacing)*-1);\\n translate: var(--ndk-translate-x)var(--ndk-translate-y);\\n }\\n .ndk\\\\:data-\\\\[size\\\\=default\\\\]\\\\:h-9[data-size=default] {\\n height: calc(var(--ndk-spacing)*9);\\n }\\n .ndk\\\\:data-\\\\[size\\\\=sm\\\\]\\\\:h-8[data-size=sm] {\\n height: calc(var(--ndk-spacing)*8);\\n }\\n :is(.ndk\\\\:\\\\*\\\\:data-\\\\[slot\\\\=select-value\\\\]\\\\:line-clamp-1 > *)[data-slot=select-value] {\\n -webkit-line-clamp: 1;\\n -webkit-box-orient: vertical;\\n display: -webkit-box;\\n overflow: hidden;\\n }\\n :is(.ndk\\\\:\\\\*\\\\:data-\\\\[slot\\\\=select-value\\\\]\\\\:flex > *)[data-slot=select-value] {\\n display: flex;\\n }\\n :is(.ndk\\\\:\\\\*\\\\:data-\\\\[slot\\\\=select-value\\\\]\\\\:items-center > *)[data-slot=select-value] {\\n align-items: center;\\n }\\n :is(.ndk\\\\:\\\\*\\\\:data-\\\\[slot\\\\=select-value\\\\]\\\\:gap-2 > *)[data-slot=select-value] {\\n gap: calc(var(--ndk-spacing)*2);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:border-gray-900[data-state=checked] {\\n border-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:bg-gray-900[data-state=checked] {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:text-white[data-state=checked] {\\n color: var(--ndk-color-white);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=closed\\\\]\\\\:animate-out[data-state=closed] {\\n animation: var(--ndk-animate-out);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=open\\\\]\\\\:animate-in[data-state=open] {\\n animation: var(--ndk-animate-in);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=open\\\\]\\\\:bg-gray-50[data-state=open] {\\n background-color: var(--ndk-color-gray-50);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=open\\\\]\\\\:text-gray-900[data-state=open] {\\n color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:data-\\\\[state\\\\=selected\\\\]\\\\:bg-gray-50[data-state=selected] {\\n background-color: var(--ndk-color-gray-50);\\n }\\n .ndk\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:text-red-600[data-variant=destructive] {\\n color: var(--ndk-color-red-600);\\n }\\n .ndk\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:bg-red-500\\\\/10[data-variant=destructive]:focus {\\n background-color: var(--ndk-color-red-500);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:bg-red-500\\\\/10[data-variant=destructive]:focus {\\n background-color: color-mix(in oklab, var(--ndk-color-red-500)10%, transparent);\\n }\\n }\\n .ndk\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:text-red-700[data-variant=destructive]:focus {\\n color: var(--ndk-color-red-700);\\n }\\n @media (min-width: 40rem) {\\n .ndk\\\\:sm\\\\:block {\\n display: block;\\n }\\n .ndk\\\\:sm\\\\:hidden {\\n display: none;\\n }\\n .ndk\\\\:sm\\\\:pr-2\\\\.5 {\\n padding-right: calc(var(--ndk-spacing)*2.5);\\n }\\n .ndk\\\\:sm\\\\:pl-2\\\\.5 {\\n padding-left: calc(var(--ndk-spacing)*2.5);\\n }\\n }\\n .ndk\\\\:dark\\\\:border-gray-800:where(.dark, .dark *) {\\n border-color: var(--ndk-color-gray-800);\\n }\\n .ndk\\\\:dark\\\\:bg-gray-100:where(.dark, .dark *) {\\n background-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:bg-gray-900:where(.dark, .dark *),\\n .ndk\\\\:dark\\\\:bg-gray-900\\\\/40:where(.dark, .dark *) {\\n background-color: var(--ndk-color-gray-900);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:dark\\\\:bg-gray-900\\\\/40:where(.dark, .dark *) {\\n background-color: color-mix(in oklab, var(--ndk-color-gray-900)40%, transparent);\\n }\\n }\\n .ndk\\\\:dark\\\\:bg-gray-950:where(.dark, .dark *) {\\n background-color: var(--ndk-color-gray-950);\\n }\\n .ndk\\\\:dark\\\\:bg-red-600:where(.dark, .dark *) {\\n background-color: var(--ndk-color-red-600);\\n }\\n .ndk\\\\:dark\\\\:text-gray-100:where(.dark, .dark *) {\\n color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:text-gray-400:where(.dark, .dark *) {\\n color: var(--ndk-color-gray-400);\\n }\\n .ndk\\\\:dark\\\\:text-gray-900:where(.dark, .dark *) {\\n color: var(--ndk-color-gray-900);\\n }\\n @media (hover: hover) {\\n .ndk\\\\:dark\\\\:hover\\\\:bg-gray-200:where(.dark, .dark *):hover {\\n background-color: var(--ndk-color-gray-200);\\n }\\n .ndk\\\\:dark\\\\:hover\\\\:bg-gray-800:where(.dark, .dark *):hover {\\n background-color: var(--ndk-color-gray-800);\\n }\\n .ndk\\\\:dark\\\\:hover\\\\:bg-gray-900:where(.dark, .dark *):hover {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:dark\\\\:hover\\\\:bg-red-500:where(.dark, .dark *):hover {\\n background-color: var(--ndk-color-red-500);\\n }\\n .ndk\\\\:dark\\\\:hover\\\\:text-gray-100:where(.dark, .dark *):hover {\\n color: var(--ndk-color-gray-100);\\n }\\n }\\n .ndk\\\\:dark\\\\:focus\\\\:bg-gray-900:where(.dark, .dark *):focus {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:dark\\\\:focus\\\\:text-gray-100:where(.dark, .dark *):focus {\\n color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:focus-visible\\\\:border-gray-200:where(.dark, .dark *):focus-visible {\\n border-color: var(--ndk-color-gray-200);\\n }\\n .ndk\\\\:dark\\\\:focus-visible\\\\:ring-white\\\\/20:where(.dark, .dark *):focus-visible {\\n --ndk-ring-color:var(--ndk-color-white);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:dark\\\\:focus-visible\\\\:ring-white\\\\/20:where(.dark, .dark *):focus-visible {\\n --ndk-ring-color:color-mix(in oklab,var(--ndk-color-white)20%,transparent);\\n }\\n }\\n .ndk\\\\:dark\\\\:aria-invalid\\\\:ring-red-500\\\\/30:where(.dark, .dark *)[aria-invalid=true] {\\n --ndk-ring-color:var(--ndk-color-red-500);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:dark\\\\:aria-invalid\\\\:ring-red-500\\\\/30:where(.dark, .dark *)[aria-invalid=true] {\\n --ndk-ring-color:color-mix(in oklab,var(--ndk-color-red-500)30%,transparent);\\n }\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[placeholder\\\\]\\\\:text-gray-400:where(.dark, .dark *)[data-placeholder] {\\n color: var(--ndk-color-gray-400);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:border-gray-100:where(.dark, .dark *)[data-state=checked] {\\n border-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:bg-gray-100:where(.dark, .dark *)[data-state=checked] {\\n background-color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=checked\\\\]\\\\:text-gray-900:where(.dark, .dark *)[data-state=checked] {\\n color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=open\\\\]\\\\:bg-gray-900:where(.dark, .dark *)[data-state=open] {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=open\\\\]\\\\:text-gray-100:where(.dark, .dark *)[data-state=open] {\\n color: var(--ndk-color-gray-100);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[state\\\\=selected\\\\]\\\\:bg-gray-900:where(.dark, .dark *)[data-state=selected] {\\n background-color: var(--ndk-color-gray-900);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:text-red-500:where(.dark, .dark *)[data-variant=destructive] {\\n color: var(--ndk-color-red-500);\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:bg-red-500\\\\/15:where(.dark, .dark *)[data-variant=destructive]:focus {\\n background-color: var(--ndk-color-red-500);\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .ndk\\\\:dark\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:bg-red-500\\\\/15:where(.dark, .dark *)[data-variant=destructive]:focus {\\n background-color: color-mix(in oklab, var(--ndk-color-red-500)15%, transparent);\\n }\\n }\\n .ndk\\\\:dark\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:focus\\\\:text-red-400:where(.dark, .dark *)[data-variant=destructive]:focus {\\n color: var(--ndk-color-red-400);\\n }\\n .ndk\\\\:\\\\[\\\\&_svg\\\\]\\\\:pointer-events-none svg {\\n pointer-events: none;\\n }\\n .ndk\\\\:\\\\[\\\\&_svg\\\\]\\\\:shrink-0 svg {\\n flex-shrink: 0;\\n }\\n .ndk\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 svg:not([class*=size-]) {\\n width: calc(var(--ndk-spacing)*4);\\n height: calc(var(--ndk-spacing)*4);\\n }\\n .ndk\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'text-\\\\'\\\\]\\\\)\\\\]\\\\:text-gray-500 svg:not([class*=text-]) {\\n color: var(--ndk-color-gray-500);\\n }\\n .ndk\\\\:dark\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'text-\\\\'\\\\]\\\\)\\\\]\\\\:text-gray-400:where(.dark, .dark *) svg:not([class*=text-]) {\\n color: var(--ndk-color-gray-400);\\n }\\n .ndk\\\\:\\\\[\\\\&_tr\\\\]\\\\:border-b tr {\\n border-bottom-style: var(--ndk-border-style);\\n border-bottom-width: 1px;\\n }\\n .ndk\\\\:\\\\[\\\\&_tr\\\\:last-child\\\\]\\\\:border-0 tr:last-child {\\n border-style: var(--ndk-border-style);\\n border-width: 0;\\n }\\n .ndk\\\\:\\\\[\\\\&\\\\:has\\\\(\\\\[role\\\\=checkbox\\\\]\\\\)\\\\]\\\\:pr-0:has([role=checkbox]) {\\n padding-right: calc(var(--ndk-spacing)*0);\\n }\\n :is(.ndk\\\\:\\\\*\\\\:\\\\[span\\\\]\\\\:last\\\\:flex > *):is(span):last-child {\\n display: flex;\\n }\\n :is(.ndk\\\\:\\\\*\\\\:\\\\[span\\\\]\\\\:last\\\\:items-center > *):is(span):last-child {\\n align-items: center;\\n }\\n :is(.ndk\\\\:\\\\*\\\\:\\\\[span\\\\]\\\\:last\\\\:gap-2 > *):is(span):last-child {\\n gap: calc(var(--ndk-spacing)*2);\\n }\\n :is(.ndk\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:\\\\*\\\\:\\\\[svg\\\\]\\\\:\\\\!text-red-600[data-variant=destructive] > *):is(svg) {\\n color: var(--ndk-color-red-600) !important;\\n }\\n :is(.ndk\\\\:dark\\\\:data-\\\\[variant\\\\=destructive\\\\]\\\\:\\\\*\\\\:\\\\[svg\\\\]\\\\:\\\\!text-red-500:where(.dark, .dark *)[data-variant=destructive] > *):is(svg) {\\n color: var(--ndk-color-red-500) !important;\\n }\\n .ndk\\\\:\\\\[\\\\&\\\\>\\\\[role\\\\=checkbox\\\\]\\\\]\\\\:translate-y-\\\\[2px\\\\] > [role=checkbox] {\\n --ndk-translate-y:2px;\\n translate: var(--ndk-translate-x)var(--ndk-translate-y);\\n }\\n .ndk\\\\:\\\\[\\\\&\\\\>tr\\\\]\\\\:last\\\\:border-b-0 > tr:last-child {\\n border-bottom-style: var(--ndk-border-style);\\n border-bottom-width: 0;\\n }\\n}\\n@keyframes animate-in {\\n 0% {\\n opacity: 0;\\n transform: scale(.95);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n@keyframes animate-out {\\n 0% {\\n opacity: 1;\\n transform: scale(1);\\n }\\n to {\\n opacity: 0;\\n transform: scale(.95);\\n }\\n}\\n@property --ndk-space-y-reverse { syntax:\\\"*\\\";inherits:false;initial-value:0 }\\n@property --ndk-border-style { syntax:\\\"*\\\";inherits:false;initial-value:solid }\\n@property --ndk-font-weight { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-tracking { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --ndk-shadow-color { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-shadow-alpha { syntax:\\\"<percentage>\\\";inherits:false;initial-value:100% }\\n@property --ndk-inset-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --ndk-inset-shadow-color { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-inset-shadow-alpha { syntax:\\\"<percentage>\\\";inherits:false;initial-value:100% }\\n@property --ndk-ring-color { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-ring-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --ndk-inset-ring-color { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-inset-ring-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --ndk-ring-inset { syntax:\\\"*\\\";inherits:false }\\n@property --ndk-ring-offset-width { syntax:\\\"<length>\\\";inherits:false;initial-value:0 }\\n@property --ndk-ring-offset-color { syntax:\\\"*\\\";inherits:false;initial-value:#fff }\\n@property --ndk-ring-offset-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --ndk-translate-x { syntax:\\\"*\\\";inherits:false;initial-value:0 }\\n@property --ndk-translate-y { syntax:\\\"*\\\";inherits:false;initial-value:0 }\\n@property --ndk-translate-z { syntax:\\\"*\\\";inherits:false;initial-value:0 }\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n\")","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"ndk:relative ndk:w-full ndk:overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn('ndk:w-full ndk:caption-bottom ndk:text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('ndk:[&_tr]:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('ndk:[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'ndk:bg-gray-50/70 ndk:dark:bg-gray-900/40 ndk:border-t ndk:border-gray-200 ndk:dark:border-gray-800 ndk:font-medium ndk:[&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'ndk:hover:bg-gray-50 ndk:dark:hover:bg-gray-900 ndk:data-[state=selected]:bg-gray-50 ndk:dark:data-[state=selected]:bg-gray-900 ndk:border-b ndk:border-gray-100 ndk:dark:border-gray-800 ndk:transition-colors',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'ndk:text-gray-900 ndk:dark:text-gray-100 ndk:h-10 ndk:px-2 ndk:text-left ndk:align-middle ndk:font-medium ndk:whitespace-nowrap ndk:[&:has([role=checkbox])]:pr-0 ndk:[&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'ndk:p-2 ndk:align-middle ndk:whitespace-nowrap ndk:[&:has([role=checkbox])]:pr-0 ndk:[&>[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('ndk:text-gray-500 ndk:dark:text-gray-400 ndk:mt-4 ndk:text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '../../utils';\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'ndk:peer ndk:border-gray-200 ndk:bg-white ndk:text-gray-900 ndk:dark:border-gray-800 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:data-[state=checked]:bg-gray-900 ndk:data-[state=checked]:text-white ndk:dark:data-[state=checked]:bg-gray-100 ndk:dark:data-[state=checked]:text-gray-900 ndk:data-[state=checked]:border-gray-900 ndk:dark:data-[state=checked]:border-gray-100 ndk:focus-visible:border-gray-900 ndk:dark:focus-visible:border-gray-200 ndk:focus-visible:ring-black/20 ndk:dark:focus-visible:ring-white/20 ndk:aria-invalid:ring-red-500/20 ndk:dark:aria-invalid:ring-red-500/30 ndk:aria-invalid:border-red-500 ndk:size-4 ndk:shrink-0 ndk:rounded-[4px] ndk:border ndk:shadow-xs ndk:transition-shadow ndk:outline-none ndk:focus-visible:ring-[3px] ndk:disabled:cursor-not-allowed ndk:disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"ndk:grid ndk:place-content-center ndk:text-current ndk:transition-none\"\n >\n <CheckIcon className=\"ndk:size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","'use client';\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '../../utils';\n\nfunction Popover(\n props: React.ComponentProps<typeof PopoverPrimitive.Root>\n) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger(\n props: React.ComponentProps<typeof PopoverPrimitive.Trigger>\n) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <PopoverPrimitive.Portal container={container ?? undefined}>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'ndk:bg-white ndk:text-gray-900 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:data-[state=open]:animate-in ndk:data-[state=closed]:animate-out ndk:data-[state=closed]:fade-out-0 ndk:data-[state=open]:fade-in-0 ndk:data-[state=closed]:zoom-out-95 ndk:data-[state=open]:zoom-in-95 ndk:data-[side=bottom]:slide-in-from-top-2 ndk:data-[side=left]:slide-in-from-right-2 ndk:data-[side=right]:slide-in-from-left-2 ndk:data-[side=top]:slide-in-from-bottom-2 ndk:z-50 ndk:w-72 ndk:origin-(--radix-popover-content-transform-origin) ndk:rounded-md ndk:border ndk:border-gray-200 ndk:dark:border-gray-800 ndk:p-4 ndk:shadow-md ndk:outline-hidden',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor(\n props: React.ComponentProps<typeof PopoverPrimitive.Anchor>\n) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { cn } from '../../utils';\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"ndk:bg-white ndk:text-gray-900 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:data-[state=open]:animate-in ndk:data-[state=closed]:animate-out ndk:data-[state=closed]:fade-out-0 ndk:data-[state=open]:fade-in-0 ndk:data-[state=closed]:zoom-out-95 ndk:data-[state=open]:zoom-in-95 ndk:data-[side=bottom]:slide-in-from-top-2 ndk:data-[side=left]:slide-in-from-right-2 ndk:data-[side=right]:slide-in-from-left-2 ndk:data-[side=top]:slide-in-from-bottom-2 ndk:z-50 ndk:max-h-(--radix-dropdown-menu-content-available-height) ndk:min-w-[8rem] ndk:origin-(--radix-dropdown-menu-content-transform-origin) ndk:overflow-x-hidden ndk:overflow-y-auto ndk:rounded-md ndk:border ndk:border-gray-200 ndk:dark:border-gray-800 ndk:p-1 ndk:shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"ndk:focus:bg-gray-50 ndk:dark:focus:bg-gray-900 ndk:focus:text-gray-900 ndk:dark:focus:text-gray-100 ndk:data-[variant=destructive]:text-red-600 ndk:dark:data-[variant=destructive]:text-red-500 ndk:data-[variant=destructive]:focus:bg-red-500/10 ndk:dark:data-[variant=destructive]:focus:bg-red-500/15 ndk:data-[variant=destructive]:focus:text-red-700 ndk:dark:data-[variant=destructive]:focus:text-red-400 ndk:data-[variant=destructive]:*:[svg]:!text-red-600 ndk:dark:data-[variant=destructive]:*:[svg]:!text-red-500 ndk:[&_svg:not([class*='text-'])]:text-gray-500 ndk:dark:[&_svg:not([class*='text-'])]:text-gray-400 ndk:relative ndk:flex ndk:cursor-default ndk:items-center ndk:gap-2 ndk:rounded-sm ndk:px-2 ndk:py-1.5 ndk:text-sm ndk:outline-hidden ndk:select-none ndk:data-[disabled]:pointer-events-none ndk:data-[disabled]:opacity-50 ndk:data-[inset]:pl-8 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"ndk:focus:bg-gray-50 ndk:dark:focus:bg-gray-900 ndk:focus:text-gray-900 ndk:dark:focus:text-gray-100 ndk:relative ndk:flex ndk:cursor-default ndk:items-center ndk:gap-2 ndk:rounded-sm ndk:py-1.5 ndk:pr-2 ndk:pl-8 ndk:text-sm ndk:outline-hidden ndk:select-none ndk:data-[disabled]:pointer-events-none ndk:data-[disabled]:opacity-50 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"ndk:pointer-events-none ndk:absolute ndk:left-2 ndk:flex ndk:size-3.5 ndk:items-center ndk:justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"ndk:size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"ndk:focus:bg-gray-50 ndk:dark:focus:bg-gray-900 ndk:focus:text-gray-900 ndk:dark:focus:text-gray-100 ndk:relative ndk:flex ndk:cursor-default ndk:items-center ndk:gap-2 ndk:rounded-sm ndk:py-1.5 ndk:pr-2 ndk:pl-8 ndk:text-sm ndk:outline-hidden ndk:select-none ndk:data-[disabled]:pointer-events-none ndk:data-[disabled]:opacity-50 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"ndk:pointer-events-none ndk:absolute ndk:left-2 ndk:flex ndk:size-3.5 ndk:items-center ndk:justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"ndk:size-2 ndk:fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"ndk:px-2 ndk:py-1.5 ndk:text-sm ndk:font-medium ndk:data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"ndk:bg-gray-100 ndk:dark:bg-gray-900 ndk:-mx-1 ndk:my-1 ndk:h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ndk:text-gray-500 ndk:dark:text-gray-400 ndk:ml-auto ndk:text-xs ndk:tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"ndk:focus:bg-gray-50 ndk:dark:focus:bg-gray-900 ndk:focus:text-gray-900 ndk:dark:focus:text-gray-100 ndk:data-[state=open]:bg-gray-50 ndk:dark:data-[state=open]:bg-gray-900 ndk:data-[state=open]:text-gray-900 ndk:dark:data-[state=open]:text-gray-100 ndk:[&_svg:not([class*='text-'])]:text-gray-500 ndk:dark:[&_svg:not([class*='text-'])]:text-gray-400 ndk:flex ndk:cursor-default ndk:items-center ndk:gap-2 ndk:rounded-sm ndk:px-2 ndk:py-1.5 ndk:text-sm ndk:outline-hidden ndk:select-none ndk:data-[inset]:pl-8 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ndk:ml-auto ndk:size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"ndk:bg-white ndk:text-gray-900 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:data-[state=open]:animate-in ndk:data-[state=closed]:animate-out ndk:data-[state=closed]:fade-out-0 ndk:data-[state=open]:fade-in-0 ndk:data-[state=closed]:zoom-out-95 ndk:data-[state=open]:zoom-in-95 ndk:data-[side=bottom]:slide-in-from-top-2 ndk:data-[side=left]:slide-in-from-right-2 ndk:data-[side=right]:slide-in-from-left-2 ndk:data-[side=top]:slide-in-from-bottom-2 ndk:z-50 ndk:min-w-[8rem] ndk:origin-(--radix-dropdown-menu-content-transform-origin) ndk:overflow-hidden ndk:rounded-md ndk:border ndk:border-gray-200 ndk:dark:border-gray-800 ndk:p-1 ndk:shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from '../../utils';\n\nconst buttonVariants = cva(\n \"ndk:inline-flex ndk:items-center ndk:justify-center ndk:gap-2 ndk:whitespace-nowrap ndk:rounded-md ndk:text-sm ndk:font-medium ndk:transition-all ndk:disabled:pointer-events-none ndk:disabled:opacity-50 ndk:[&_svg]:pointer-events-none ndk:[&_svg:not([class*='size-'])]:size-4 ndk:shrink-0 ndk:[&_svg]:shrink-0 ndk:outline-none ndk:focus-visible:ring-black/20 ndk:dark:focus-visible:ring-white/20 ndk:focus-visible:ring-[3px] ndk:aria-invalid:ring-red-500/20 ndk:dark:aria-invalid:ring-red-500/30 ndk:aria-invalid:border-red-500\",\n {\n variants: {\n variant: {\n default: \"ndk:bg-gray-900 ndk:text-white ndk:hover:bg-gray-800 ndk:dark:bg-gray-100 ndk:dark:text-gray-900 ndk:dark:hover:bg-gray-200\",\n destructive:\n \"ndk:bg-red-600 ndk:text-white ndk:hover:bg-red-700 ndk:dark:bg-red-600 ndk:dark:hover:bg-red-500\",\n outline:\n \"ndk:border ndk:border-gray-200 ndk:bg-white ndk:text-gray-900 ndk:shadow-xs ndk:hover:bg-gray-50 ndk:dark:border-gray-800 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:dark:hover:bg-gray-900\",\n secondary:\n \"ndk:bg-gray-100 ndk:text-gray-900 ndk:hover:bg-gray-200 ndk:dark:bg-gray-900 ndk:dark:text-gray-100 ndk:dark:hover:bg-gray-800\",\n ghost:\n \"ndk:hover:bg-gray-100 ndk:hover:text-gray-900 ndk:dark:hover:bg-gray-900 ndk:dark:hover:text-gray-100\",\n link: \"ndk:text-gray-900 ndk:underline-offset-4 ndk:hover:underline ndk:dark:text-gray-100\",\n },\n size: {\n default: \"ndk:h-9 ndk:px-4 ndk:py-2 ndk:has-[>svg]:px-3\",\n sm: \"ndk:h-8 ndk:rounded-md ndk:gap-1.5 ndk:px-3 ndk:has-[>svg]:px-2.5\",\n lg: \"ndk:h-10 ndk:rounded-md ndk:px-6 ndk:has-[>svg]:px-4\",\n icon: \"ndk:size-9\",\n \"icon-sm\": \"ndk:size-8\",\n \"icon-lg\": \"ndk:size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n>(function Button(\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n },\n ref\n) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n})\n\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","'use client';\r\n\r\nimport * as React from 'react';\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\r\n\r\nimport { cn } from '../../utils';\r\nimport { buttonVariants, type Button } from './button';\r\n\r\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\r\n return (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n data-slot=\"pagination\"\r\n className={cn('ndk:flex', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationContent({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'ul'>) {\r\n return (\r\n <ul\r\n data-slot=\"pagination-content\"\r\n className={cn('ndk:flex ndk:flex-row ndk:items-center ndk:gap-1', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\r\n return <li data-slot=\"pagination-item\" {...props} />;\r\n}\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<React.ComponentProps<typeof Button>, 'size' | 'disabled' | 'onClick' | 'type'> &\r\n Omit<React.ComponentProps<'button'>, 'type' | 'onClick' | 'disabled'>;\r\n\r\nfunction PaginationLink({\r\n className,\r\n isActive,\r\n size = 'icon',\r\n type = 'button',\r\n ...props\r\n}: PaginationLinkProps) {\r\n return (\r\n <button\r\n aria-current={isActive ? 'page' : undefined}\r\n data-slot=\"pagination-link\"\r\n data-active={isActive ? 'true' : 'false'}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? 'outline' : 'ghost',\r\n size,\r\n }),\r\n className\r\n )}\r\n type={type}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction PaginationPrevious({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn('ndk:gap-1 ndk:px-2.5 ndk:sm:pl-2.5', className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"ndk:size-4\" aria-hidden=\"true\" />\r\n <span className=\"ndk:hidden ndk:sm:block\">Previous</span>\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationNext({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn('ndk:gap-1 ndk:px-2.5 ndk:sm:pr-2.5', className)}\r\n {...props}\r\n >\r\n <span className=\"ndk:hidden ndk:sm:block\">Next</span>\r\n <ChevronRight className=\"ndk:size-4\" aria-hidden=\"true\" />\r\n </PaginationLink>\r\n );\r\n}\r\n\r\nfunction PaginationEllipsis({\r\n className,\r\n ...props\r\n}: React.ComponentProps<'span'>) {\r\n return (\r\n <span\r\n aria-hidden=\"true\"\r\n data-slot=\"pagination-ellipsis\"\r\n className={cn('ndk:flex ndk:size-9 ndk:items-center ndk:justify-center', className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"ndk:size-4\" aria-hidden=\"true\" />\r\n <span className=\"ndk:sr-only\">More pages</span>\r\n </span>\r\n );\r\n}\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationEllipsis,\r\n};\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from '../../utils';\n\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"ndk:border-gray-200 ndk:dark:border-gray-800 ndk:data-[placeholder]:text-gray-500 ndk:dark:data-[placeholder]:text-gray-400 ndk:[&_svg:not([class*='text-'])]:text-gray-500 ndk:dark:[&_svg:not([class*='text-'])]:text-gray-400 ndk:focus-visible:border-gray-900 ndk:dark:focus-visible:border-gray-200 ndk:focus-visible:ring-black/20 ndk:dark:focus-visible:ring-white/20 ndk:aria-invalid:ring-red-500/20 ndk:dark:aria-invalid:ring-red-500/30 ndk:aria-invalid:border-red-500 ndk:bg-white ndk:dark:bg-gray-950 ndk:hover:bg-gray-50 ndk:dark:hover:bg-gray-900 ndk:flex ndk:w-fit ndk:items-center ndk:justify-between ndk:gap-2 ndk:rounded-md ndk:border ndk:px-3 ndk:py-2 ndk:text-sm ndk:whitespace-nowrap ndk:shadow-xs ndk:transition-[color,box-shadow] ndk:outline-none ndk:focus-visible:ring-[3px] ndk:disabled:cursor-not-allowed ndk:disabled:opacity-50 ndk:data-[size=default]:h-9 ndk:data-[size=sm]:h-8 ndk:*:data-[slot=select-value]:line-clamp-1 ndk:*:data-[slot=select-value]:flex ndk:*:data-[slot=select-value]:items-center ndk:*:data-[slot=select-value]:gap-2 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"ndk:size-4 ndk:opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n container,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n return (\n <SelectPrimitive.Portal container={container ?? undefined}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"ndk:bg-white ndk:text-gray-900 ndk:dark:bg-gray-950 ndk:dark:text-gray-100 ndk:data-[state=open]:animate-in ndk:data-[state=closed]:animate-out ndk:data-[state=closed]:fade-out-0 ndk:data-[state=open]:fade-in-0 ndk:data-[state=closed]:zoom-out-95 ndk:data-[state=open]:zoom-in-95 ndk:data-[side=bottom]:slide-in-from-top-2 ndk:data-[side=left]:slide-in-from-right-2 ndk:data-[side=right]:slide-in-from-left-2 ndk:data-[side=top]:slide-in-from-bottom-2 ndk:relative ndk:z-50 ndk:max-h-(--radix-select-content-available-height) ndk:min-w-[8rem] ndk:origin-(--radix-select-content-transform-origin) ndk:overflow-x-hidden ndk:overflow-y-auto ndk:rounded-md ndk:border ndk:border-gray-200 ndk:dark:border-gray-800 ndk:shadow-md\",\n position === \"popper\" &&\n \"ndk:data-[side=bottom]:translate-y-1 ndk:data-[side=left]:-translate-x-1 ndk:data-[side=right]:translate-x-1 ndk:data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"ndk:p-1\",\n position === \"popper\" &&\n \"ndk:h-[var(--radix-select-trigger-height)] ndk:w-full ndk:min-w-[var(--radix-select-trigger-width)] ndk:scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"ndk:text-gray-500 ndk:dark:text-gray-400 ndk:px-2 ndk:py-1.5 ndk:text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"ndk:focus:bg-gray-50 ndk:dark:focus:bg-gray-900 ndk:focus:text-gray-900 ndk:dark:focus:text-gray-100 ndk:[&_svg:not([class*='text-'])]:text-gray-500 ndk:dark:[&_svg:not([class*='text-'])]:text-gray-400 ndk:relative ndk:flex ndk:w-full ndk:cursor-default ndk:items-center ndk:gap-2 ndk:rounded-sm ndk:py-1.5 ndk:pr-8 ndk:pl-2 ndk:text-sm ndk:outline-hidden ndk:select-none ndk:data-[disabled]:pointer-events-none ndk:data-[disabled]:opacity-50 ndk:[&_svg]:pointer-events-none ndk:[&_svg]:shrink-0 ndk:[&_svg:not([class*='size-'])]:size-4 ndk:*:[span]:last:flex ndk:*:[span]:last:items-center ndk:*:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"ndk:absolute ndk:right-2 ndk:flex ndk:size-3.5 ndk:items-center ndk:justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"ndk:size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"ndk:bg-gray-100 ndk:dark:bg-gray-900 ndk:pointer-events-none ndk:-mx-1 ndk:my-1 ndk:h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"ndk:flex ndk:cursor-default ndk:items-center ndk:justify-center ndk:py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"ndk:size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"ndk:flex ndk:cursor-default ndk:items-center ndk:justify-center ndk:py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"ndk:size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client';\n\n// Auto-inject styles when this component is used\nimport '../../../dist/styles.css';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ArrowDown, ArrowUp, ChevronLeft, ChevronRight, Filter, Loader2, MoreHorizontal } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { useSelectionWithTotal } from '../hooks/useSelection';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Checkbox,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitComponentColumn,\n TDataKitFilterItem,\n TDataKitBulkAction,\n TDataKitController,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n\n TDataKitSelectableItem,\n} from '../../types';\n\n\nconst DataKitRoot = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>,\n TRowState = unknown\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n\n table: TDataKitComponentColumn<TExtractDataKitItemType<TAction>, TRowState>[];\n filters?: TDataKitFilterItem[];\n selectable?: {\n enabled: boolean;\n actions?: Record<string, TDataKitBulkAction<TExtractDataKitItemType<TAction>>>;\n };\n state?: TRowState;\n limit?: { default: number };\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n bordered?: boolean | 'rounded';\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n pagination?: 'SIMPLE' | 'NUMBER';\n controller?: React.MutableRefObject<TDataKitController<TExtractDataKitItemType<TAction>> | null>;\n sorts?: { path: string; value: 1 | -1 }[];\n}>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n table: columns,\n filters = [],\n selectable,\n state: initialState,\n limit: limitConfig,\n className,\n autoFetch = true,\n debounce = 300,\n bordered,\n refetchInterval,\n memory: memoryMode = 'memory',\n pagination: paginationType = 'NUMBER',\n controller,\n sorts: defaultSorts = [],\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const tableRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n const [actionLoading, setActionLoading] = useState<string | null>(null);\n const [actionsMenuOpen, setActionsMenuOpen] = useState(false);\n const [rowStates, setRowStates] = useState<Map<string | number, TRowState>>(new Map());\n const [lastSelectedIndex, setLastSelectedIndex] = useState<number | null>(null);\n\n // ** Variable\n const overlayContainer = tableRef.current;\n\n // ** Helper functions for row state management\n const getRowState = useCallback((rowId: string | number): TRowState => {\n return rowStates.get(rowId) ?? (initialState as TRowState);\n }, [rowStates, initialState]);\n\n const setRowState = useCallback((rowId: string | number, updater: React.SetStateAction<TRowState>) => {\n setRowStates(prev => {\n const current = prev.get(rowId) ?? (initialState as TRowState);\n const newState = typeof updater === 'function'\n ? (updater as (prevState: TRowState) => TRowState)(current)\n : updater;\n const newMap = new Map(prev);\n newMap.set(rowId, newState);\n return newMap;\n });\n }, [initialState]);\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: (() => {\n // Collect column-based sorts\n const columnSorts = columns.reduce<{ path: string; value: 1 | -1 }[]>((acc, col) => {\n if (col.sortable && col.sortable.default !== 0) {\n acc.push({ path: col.sortable.path, value: col.sortable.default as 1 | -1 });\n }\n return acc;\n }, []);\n\n // Merge with default sorts, avoiding duplicates (column sorts take priority)\n const columnPaths = new Set(columnSorts.map(s => s.path));\n const additionalSorts = defaultSorts.filter(s => !columnPaths.has(s.path));\n\n return [...columnSorts, ...additionalSorts];\n })(),\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const selection = useSelectionWithTotal<string | number>(dataKit.items.map((item) => item.id));\n\n // ** Variable\n const selectedCount = selection.selectedIds.size;\n const colSpan = columns.length + (selectable?.enabled ? 1 : 0);\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Handlers\n const handleSort = useCallback((path: string) => {\n const currentSort = dataKit.sorts.find((s) => s.path === path);\n const nextValue = currentSort?.value === 1 ? -1 : currentSort?.value === -1 ? null : 1;\n dataKit.actions.setSort(path, nextValue);\n }, [dataKit.sorts, dataKit.actions]);\n\n const handleSelectionAction = useCallback(async (actionKey: string) => {\n const action = selectable?.actions?.[actionKey];\n if (!action || action.type === 'SEPARATOR' || actionLoading) return;\n setActionLoading(actionKey);\n setActionsMenuOpen(false);\n try {\n const selectedItems = dataKit.items.filter((item) => selection.isSelected(item.id));\n const result = await action.function(selectedItems);\n if (result[0]) {\n const data = result[1] as { deselectAll?: boolean };\n if (data.deselectAll) selection.deselectAll();\n await dataKit.actions.refresh();\n }\n } catch (error) {\n console.error('Selection action failed:', error);\n } finally {\n setActionLoading(null);\n }\n }, [selectable?.actions, actionLoading, dataKit.items, selection, dataKit.actions]);\n\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n const getSortFor = useCallback((path: string) => dataKit.sorts.find((s) => s.path === path)?.value ?? null, [dataKit.sorts]);\n\n const handleRowSelection = useCallback((rowIndex: number, event: React.MouseEvent) => {\n if (event.shiftKey && lastSelectedIndex !== null) {\n // Range selection\n const start = Math.min(lastSelectedIndex, rowIndex);\n const end = Math.max(lastSelectedIndex, rowIndex);\n for (let i = start; i <= end; i++) {\n const item = dataKit.items[i];\n if (item && item.id !== undefined && !selection.isSelected(item.id)) {\n selection.select(item.id);\n }\n }\n } else {\n // Single selection with toggle\n const item = dataKit.items[rowIndex];\n if (item && item.id !== undefined) {\n selection.toggle(item.id);\n }\n }\n setLastSelectedIndex(rowIndex);\n }, [lastSelectedIndex, dataKit.items, selection]);\n\n // ** Effects\n useEffect(() => {\n if (controller) {\n controller.current = {\n itemPush: dataKit.actions.itemPush,\n itemUpdate: dataKit.actions.itemUpdate,\n itemDelete: dataKit.actions.itemDelete,\n refetchData: dataKit.actions.refresh,\n deleteBulk: dataKit.actions.deleteBulk,\n getSelectedItems: () => dataKit.items.filter((item) => selection.isSelected(item.id)),\n clearSelection: () => selection.deselectAll(),\n };\n }\n }, [controller, dataKit.actions, dataKit.items, selection]);\n\n useEffect(() => {\n if (!tableRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = tableRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n useEffect(() => { selection.deselectAll(); }, [dataKit.items.length]);\n\n // ** Render\n return (\n <div ref={tableRef} className={`ndk:space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"ndk:flex ndk:items-center ndk:justify-between ndk:gap-2\">\n <div className=\"ndk:flex ndk:items-center ndk:gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"ndk:mr-1.5 ndk:size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"ndk:w-80\" container={overlayContainer}>\n <div className=\"ndk:grid ndk:gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"ndk:grid ndk:gap-1.5\">\n <label className=\"ndk:text-sm ndk:font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"ndk:h-9 ndk:w-full ndk:rounded-md ndk:border ndk:bg-transparent ndk:px-3 ndk:text-sm ndk:outline-none ndk:focus:ring-2 ndk:focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"ndk:flex ndk:items-center ndk:justify-between\">\n <Checkbox\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"ndk:mt-4 ndk:flex ndk:justify-between ndk:border-t ndk:pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n </div>\n\n {/* Table */}\n <div className={`ndk:overflow-hidden ndk:border ndk:border-gray-200 ndk:dark:border-gray-800 ${bordered === 'rounded' ? 'ndk:rounded-lg' : bordered ? '' : 'ndk:rounded-lg'}`}>\n <Table>\n <TableHeader>\n <TableRow>\n {selectable?.enabled && (\n <TableHead className=\"ndk:w-12\">\n <div className=\"ndk:flex ndk:items-center ndk:gap-2\">\n <Checkbox\n checked={selection.isIndeterminate ? 'indeterminate' : selection.isAllSelected}\n onCheckedChange={() => selection.toggleAll()}\n />\n {selectable.actions && Object.keys(selectable.actions).length > 0 && (\n <DropdownMenu open={actionsMenuOpen} onOpenChange={setActionsMenuOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"ndk:size-6\"\n disabled={selectedCount === 0 || !!actionLoading}\n >\n {actionLoading ? <Loader2 className=\"ndk:size-4 ndk:animate-spin\" /> : <MoreHorizontal className=\"ndk:size-4\" />}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" container={overlayContainer}>\n {Object.entries(selectable.actions).map(([key, action]) =>\n action.type === 'SEPARATOR' ? (\n <DropdownMenuSeparator key={key} />\n ) : (\n <DropdownMenuItem key={key} disabled={!!actionLoading} onSelect={() => handleSelectionAction(key)}>\n {actionLoading === key ? 'Working…' : <>{action.icon}{action.name}</>}\n </DropdownMenuItem>\n )\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </TableHead>\n )}\n {columns.map((col, idx) => (\n <React.Fragment key={idx}>\n {col.sortable ? (\n <TableHead {...(React.isValidElement(col.head) ? (col.head.props as object) : {})}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ndk:-ml-4 ndk:h-auto ndk:py-0\"\n onClick={() => handleSort(col.sortable!.path)}\n >\n {React.isValidElement(col.head) ? (col.head as React.ReactElement<{ children?: React.ReactNode }>).props.children : col.head}\n {getSortFor(col.sortable!.path) === 1 && <ArrowUp className=\"ndk:ml-1 ndk:size-4\" />}\n {getSortFor(col.sortable!.path) === -1 && <ArrowDown className=\"ndk:ml-1 ndk:size-4\" />}\n </Button>\n </TableHead>\n ) : (\n col.head\n )}\n </React.Fragment>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {dataKit.state.isLoading ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"ndk:h-24 ndk:text-center\">\n <Loader2 className=\"ndk:mx-auto ndk:size-5 ndk:animate-spin\" />\n </TableCell>\n </TableRow>\n ) : dataKit.state.error ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"ndk:h-24 ndk:text-center ndk:text-red-500\">\n Error: {dataKit.state.error.message}\n </TableCell>\n </TableRow>\n ) : dataKit.items.length === 0 ? (\n <TableRow>\n <TableCell colSpan={colSpan} className=\"ndk:h-24 ndk:text-center ndk:text-muted-foreground\">\n No results found.\n </TableCell>\n </TableRow>\n ) : (\n dataKit.items.map((item, idx) => {\n const rowId = item.id ?? idx;\n return (\n <TableRow key={rowId}>\n {selectable?.enabled && (\n <TableCell onClick={(e) => e.stopPropagation()}>\n <Checkbox\n checked={selection.isSelected(item.id)}\n onCheckedChange={() => { }}\n onClick={(e) => handleRowSelection(idx, e)}\n />\n </TableCell>\n )}\n {columns.map((col, colIdx) => (\n <React.Fragment key={colIdx}>\n {col.body({\n item,\n index: idx,\n state: getRowState(rowId),\n setState: (updater) => setRowState(rowId, updater),\n setItem: (updatedItem) => dataKit.actions.setItemAt(idx, updatedItem),\n deleteItem: () => dataKit.actions.deleteItemAt(idx),\n })}\n </React.Fragment>\n ))}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Footer */}\n <div className=\"ndk:flex ndk:items-center ndk:gap-4 ndk:justify-between\">\n <div className=\"ndk:flex ndk:items-center ndk:gap-3\">\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"ndk:w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n <p className=\"ndk:text-sm ndk:text-muted-foreground ndk:whitespace-nowrap\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {selectable?.enabled && selectedCount > 0 && (\n <p className=\"ndk:text-sm ndk:text-foreground\">\n {selectedCount} selected\n </p>\n )}\n </div>\n <div className=\"ndk:flex ndk:justify-end\">\n {paginationType === 'SIMPLE' ? (\n <div className=\"ndk:flex ndk:items-center ndk:gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"ndk:size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"ndk:size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"ndk:w-auto\">\n <PaginationContent>\n <PaginationItem className=\"ndk:hidden ndk:sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"ndk:sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"ndk:size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"ndk:hidden ndk:sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum as number)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"ndk:sm:hidden\">\n <span className=\"ndk:flex ndk:size-9 ndk:items-center ndk:justify-center ndk:text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"ndk:hidden ndk:sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"ndk:sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"ndk:size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport const DataKitTable = Object.assign(DataKitRoot, {\n Cell: TableCell,\n Head: TableHead,\n});\n","'use client';\n\n// Auto-inject styles when this component is used\nimport '../../../dist/styles.css';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { ChevronLeft, ChevronRight, Filter, Loader2 } from 'lucide-react';\nimport { useDataKit } from '../hooks/useDataKit';\nimport { usePagination } from '../hooks/usePagination';\nimport {\n Button,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Popover,\n PopoverContent,\n PopoverTrigger,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Checkbox,\n} from './ui';\nimport type {\n TDataKitInput,\n TDataKitResult,\n TDataKitFilterItem,\n TDataKitSelectableItem,\n TDataKitMemoryMode,\n TExtractDataKitItemType,\n TUseDataKitReturn,\n TDataKitRef,\n} from '../../types';\n\n\nconst DataKitInner = <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n}>, ref: React.ForwardedRef<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>) => {\n // ** Deconstruct Props\n const {\n action,\n query,\n filters = [],\n limit: limitConfig,\n defaultSort = [],\n className,\n autoFetch = true,\n debounce = 300,\n refetchInterval,\n memory: memoryMode = 'memory',\n manual = false,\n pagination: paginationType = 'NUMBER',\n children,\n } = props;\n\n // ** Type\n type TItem = TExtractDataKitItemType<TAction>;\n\n // ** Ref\n const containerRef = useRef<HTMLDivElement>(null);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n // ** State\n const [isVisible, setIsVisible] = useState(false);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n\n // ** Variable\n const overlayContainer = containerRef.current;\n\n // ** Hooks\n const dataKit = useDataKit<unknown, TItem>({\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\n filters,\n autoFetch,\n debounce,\n memory: memoryMode,\n initial: {\n limit: limitConfig?.default ?? 10,\n query: query ?? {},\n sorts: defaultSort,\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\n return acc;\n }, {}),\n },\n });\n const pagination = usePagination({ page: dataKit.page, limit: dataKit.limit, total: dataKit.total, siblingCount: 1 });\n const limitOptions = React.useMemo(() => {\n const standardOptions = [10, 25, 50, 100];\n const currentLimit = dataKit.limit;\n if (!standardOptions.includes(currentLimit)) {\n return [...standardOptions, currentLimit].sort((a, b) => a - b);\n }\n return standardOptions;\n }, [dataKit.limit]);\n\n // ** Imperative Handle\n React.useImperativeHandle(ref, () => dataKit as unknown as TDataKitRef<unknown, TItem>, [dataKit]);\n\n // ** Handlers\n const handleResetFilters = useCallback(() => {\n filters.forEach((f) => {\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\n });\n }, [filters, dataKit.actions]);\n\n // ** Effects\n useEffect(() => {\n if (!containerRef.current || !refetchInterval) return;\n const observer = new IntersectionObserver(\n (entries) => entries[0] && setIsVisible(entries[0].isIntersecting),\n { threshold: 0.1 }\n );\n const currentRef = containerRef.current;\n observer.observe(currentRef);\n return () => { if (currentRef) observer.unobserve(currentRef); };\n }, [refetchInterval]);\n\n useEffect(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n if (refetchInterval && isVisible) {\n intervalRef.current = setInterval(dataKit.actions.refresh, refetchInterval);\n }\n return () => { if (intervalRef.current) clearInterval(intervalRef.current); };\n }, [refetchInterval, isVisible, dataKit.actions]);\n\n // ** Render\n return (\n <div ref={containerRef} className={`ndk:space-y-3 ${className ?? ''}`}>\n {/* Toolbar */}\n <div className=\"ndk:flex ndk:items-center ndk:justify-between ndk:gap-2\">\n <div className=\"ndk:flex ndk:items-center ndk:gap-2\">\n {filters.length > 0 && (\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Filter className=\"ndk:mr-1.5 ndk:size-4\" />\n Filters\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"ndk:w-80\" container={overlayContainer}>\n <div className=\"ndk:grid ndk:gap-3\">\n {filters.map((f) => (\n <div key={f.id} className=\"ndk:grid ndk:gap-1.5\">\n <label className=\"ndk:text-sm ndk:font-medium\">{f.label}</label>\n {f.type === 'TEXT' && (\n <input\n type=\"text\"\n className=\"ndk:h-9 ndk:w-full ndk:rounded-md ndk:border ndk:bg-transparent ndk:px-3 ndk:text-sm ndk:outline-none ndk:focus:ring-2 ndk:focus:ring-ring\"\n placeholder={f.placeholder}\n value={(dataKit.filter[f.id] as string) ?? ''}\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\n />\n )}\n {f.type === 'SELECT' && (\n <Select\n value={String(dataKit.filter[f.id] || '__all__')}\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\n >\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n <SelectItem value=\"__all__\">All</SelectItem>\n {f.dataset?.map((d) => (\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {f.type === 'BOOLEAN' && (\n <div className=\"ndk:flex ndk:items-center ndk:justify-between\">\n <Checkbox\n checked={Boolean(dataKit.filter[f.id])}\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"ndk:mt-4 ndk:flex ndk:justify-between ndk:border-t ndk:pt-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n\n <div className=\"ndk:flex ndk:items-center ndk:gap-1\">\n <span className=\"ndk:mr-2 ndk:text-sm ndk:text-muted-foreground\">\n {dataKit.items.length} of {dataKit.total}\n </span>\n <Select value={String(dataKit.limit)} onValueChange={(v) => dataKit.actions.setLimit(Number(v))} disabled={dataKit.state.isLoading}>\n <SelectTrigger className=\"ndk:w-16\"><SelectValue /></SelectTrigger>\n <SelectContent container={overlayContainer}>\n {limitOptions.map((v) => (\n <SelectItem key={v} value={String(v)}>{v}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {/* Content (user-provided) */}\n {manual ? (\n children(dataKit)\n ) : (\n <div className=\"ndk:min-h-[200px]\">\n {dataKit.state.isLoading ? (\n <div className=\"ndk:flex ndk:h-48 ndk:items-center ndk:justify-center\">\n <Loader2 className=\"ndk:size-6 ndk:animate-spin ndk:text-muted-foreground\" />\n </div>\n ) : dataKit.items.length === 0 ? (\n <div className=\"ndk:flex ndk:h-48 ndk:items-center ndk:justify-center ndk:text-muted-foreground\">\n No results found.\n </div>\n ) : (\n children(dataKit)\n )}\n </div>\n )}\n\n {/* Footer */}\n <div className=\"ndk:flex ndk:items-center ndk:justify-between\">\n <p className=\"ndk:text-sm ndk:text-muted-foreground\">\n Page {dataKit.page} of {pagination.totalPages}\n </p>\n {paginationType === 'SIMPLE' ? (\n <div className=\"ndk:flex ndk:items-center ndk:gap-1\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"ndk:size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"ndk:size-4\" />\n </Button>\n </div>\n ) : (\n <Pagination className=\"ndk:mx-0 ndk:w-auto\">\n <PaginationContent>\n <PaginationItem className=\"ndk:hidden ndk:sm:block\">\n <PaginationPrevious\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"ndk:sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasPrevPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page - 1)}\n >\n <ChevronLeft className=\"ndk:size-4\" />\n </PaginationLink>\n </PaginationItem>\n {pagination.pages.map((pageNum, idx) => (\n <PaginationItem key={idx} className=\"ndk:hidden ndk:sm:block\">\n {pageNum === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n isActive={pageNum === dataKit.page}\n disabled={dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(pageNum)}\n >\n {pageNum}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n <PaginationItem className=\"ndk:sm:hidden\">\n <span className=\"ndk:flex ndk:size-9 ndk:items-center ndk:justify-center ndk:text-sm\">\n {dataKit.page}\n </span>\n </PaginationItem>\n <PaginationItem className=\"ndk:hidden ndk:sm:block\">\n <PaginationNext\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n />\n </PaginationItem>\n <PaginationItem className=\"ndk:sm:hidden\">\n <PaginationLink\n disabled={!pagination.hasNextPage || dataKit.state.isLoading}\n onClick={() => dataKit.actions.setPage(dataKit.page + 1)}\n >\n <ChevronRight className=\"ndk:size-4\" />\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )}\n </div>\n </div>\n );\n};\n\nexport const DataKit = React.forwardRef(DataKitInner) as unknown as <\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\n>(\n props: Readonly<{\n action: TAction;\n query?: Record<string, unknown>;\n filters?: TDataKitFilterItem[];\n limit?: { default: number };\n defaultSort?: { path: string; value: 1 | -1 }[];\n className?: string;\n autoFetch?: boolean;\n debounce?: number;\n refetchInterval?: number;\n memory?: TDataKitMemoryMode;\n manual?: boolean;\n pagination?: 'SIMPLE' | 'NUMBER';\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\n ref?: React.Ref<TDataKitRef<unknown, TExtractDataKitItemType<TAction>>>;\n }>\n) => React.ReactElement;\n","'use client';\r\n\r\n// Auto-inject styles when this component is used\r\nimport '../../../dist/styles.css';\r\n\r\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\nimport { Filter, Loader2 } from 'lucide-react';\r\nimport { useDataKit } from '../hooks/useDataKit';\r\nimport {\r\n Button,\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n Select,\r\n SelectContent,\r\n SelectItem,\r\n SelectTrigger,\r\n SelectValue,\r\n Checkbox,\r\n} from './ui';\r\nimport type {\r\n TDataKitInput,\r\n TDataKitResult,\r\n TDataKitFilterItem,\r\n TDataKitSelectableItem,\r\n TDataKitMemoryMode,\r\n TExtractDataKitItemType,\r\n TUseDataKitReturn,\r\n} from '../../types';\r\n\r\n\r\nconst DataKitInfinityInner = <\r\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\r\n>(props: Readonly<{\r\n action: TAction;\r\n query?: Record<string, unknown>;\r\n filters?: TDataKitFilterItem[];\r\n limit?: { default: number };\r\n defaultSort?: { path: string; value: 1 | -1 }[];\r\n className?: string;\r\n autoFetch?: boolean;\r\n debounce?: number;\r\n memory?: TDataKitMemoryMode;\r\n manual?: boolean;\r\n fullHeight?: boolean;\r\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\r\n}>) => {\r\n // ** Deconstruct Props\r\n const {\r\n action,\r\n query,\r\n\r\n filters = [],\r\n limit: limitConfig,\r\n defaultSort = [],\r\n className,\r\n autoFetch = true,\r\n debounce = 300,\r\n memory: memoryMode = 'memory',\r\n manual = false,\r\n fullHeight = true,\r\n children,\r\n } = props;\r\n\r\n // ** Type\r\n type TItem = TExtractDataKitItemType<TAction>;\r\n\r\n // ** Ref\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const scrollContainerRef = useRef<HTMLDivElement>(null);\r\n const [allItems, setAllItems] = useState<TItem[]>([]);\r\n\r\n // ** State\r\n const [isFilterOpen, setIsFilterOpen] = useState(false);\r\n\r\n // ** Variable\r\n const overlayContainer = containerRef.current;\r\n\r\n // ** Hooks\r\n const dataKit = useDataKit<unknown, TItem>({\r\n action: action as unknown as (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TItem>>,\r\n filters,\r\n autoFetch: false, // We'll control fetching manually\r\n debounce,\r\n memory: memoryMode,\r\n initial: {\r\n limit: limitConfig?.default ?? 10,\r\n query: query ?? {},\r\n sorts: defaultSort,\r\n filter: filters.reduce<Record<string, unknown>>((acc, f) => {\r\n if (f.defaultValue !== undefined) acc[f.id] = f.defaultValue;\r\n return acc;\r\n }, {}),\r\n },\r\n });\r\n\r\n // ** Intersection Observer for infinite scroll\r\n const { ref: loadMoreBottomRef, inView: inViewBottom } = useInView({\r\n threshold: 0,\r\n rootMargin: '100px',\r\n });\r\n\r\n // ** Handlers\r\n const handleResetFilters = useCallback(() => {\r\n filters.forEach((f) => {\r\n dataKit.actions.setFilter(f.id, f.defaultValue ?? (f.type === 'BOOLEAN' ? false : ''));\r\n });\r\n }, [filters, dataKit.actions]);\r\n\r\n const loadMore = useCallback(() => {\r\n if (dataKit.state.isLoading || !dataKit.state.hasNextPage) return;\r\n dataKit.actions.setPage(dataKit.page + 1);\r\n }, [dataKit.state.isLoading, dataKit.state.hasNextPage, dataKit.page, dataKit.actions]);\r\n\r\n // ** Initial fetch\r\n useEffect(() => {\r\n if (autoFetch) dataKit.actions.refresh();\r\n\r\n }, [autoFetch]);\r\n\r\n // ** Append new items when dataKit items change\r\n useEffect(() => {\r\n if (dataKit.items.length > 0) {\r\n setAllItems((prev) => {\r\n if (dataKit.page === 1) return dataKit.items;\r\n return [...prev, ...dataKit.items];\r\n });\r\n } else if (dataKit.page === 1) {\r\n setAllItems([]);\r\n }\r\n }, [dataKit.items, dataKit.page]);\r\n\r\n // ** Infinite scroll trigger\r\n useEffect(() => {\r\n if (inViewBottom && !dataKit.state.isLoading && dataKit.state.hasNextPage) {\r\n loadMore();\r\n }\r\n }, [inViewBottom, dataKit.state.isLoading, dataKit.state.hasNextPage]);\r\n\r\n // ** Create enhanced dataKit with all accumulated items\r\n const enhancedDataKit = {\r\n ...dataKit,\r\n items: allItems,\r\n };\r\n\r\n // ** Render\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={`ndk:flex ndk:flex-col ${fullHeight ? 'ndk:h-full' : ''}`}\r\n >\r\n {/* Toolbar */}\r\n {filters.length > 0 && (\r\n <div className=\"ndk:shrink-0 ndk:px-4 ndk:pt-4 ndk:pb-3\">\r\n <Popover open={isFilterOpen} onOpenChange={setIsFilterOpen}>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\">\r\n <Filter className=\"ndk:mr-1.5 ndk:size-4\" />\r\n Filters\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent align=\"start\" className=\"ndk:w-80\" container={overlayContainer}>\r\n <div className=\"ndk:grid ndk:gap-3\">\r\n {filters.map((f) => (\r\n <div key={f.id} className=\"ndk:grid ndk:gap-1.5\">\r\n <label className=\"ndk:text-sm ndk:font-medium\">{f.label}</label>\r\n {f.type === 'TEXT' && (\r\n <input\r\n type=\"text\"\r\n className=\"ndk:h-9 ndk:w-full ndk:rounded-md ndk:border ndk:bg-transparent ndk:px-3 ndk:text-sm ndk:outline-none ndk:focus:ring-2 ndk:focus:ring-ring\"\r\n placeholder={f.placeholder}\r\n value={(dataKit.filter[f.id] as string) ?? ''}\r\n onChange={(e) => dataKit.actions.setFilter(f.id, e.target.value)}\r\n />\r\n )}\r\n {f.type === 'SELECT' && (\r\n <Select\r\n value={String(dataKit.filter[f.id] || '__all__')}\r\n onValueChange={(v) => dataKit.actions.setFilter(f.id, v === '__all__' ? '' : v)}\r\n >\r\n <SelectTrigger><SelectValue /></SelectTrigger>\r\n <SelectContent container={overlayContainer}>\r\n <SelectItem value=\"__all__\">All</SelectItem>\r\n {f.dataset?.map((d) => (\r\n <SelectItem key={d.id} value={d.id}>{d.label}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n )}\r\n {f.type === 'BOOLEAN' && (\r\n <div className=\"ndk:flex ndk:items-center ndk:justify-between\">\r\n <Checkbox\r\n checked={Boolean(dataKit.filter[f.id])}\r\n onCheckedChange={(c) => dataKit.actions.setFilter(f.id, c)}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n <div className=\"ndk:mt-4 ndk:flex ndk:justify-between ndk:border-t ndk:pt-3\">\r\n <Button variant=\"outline\" size=\"sm\" onClick={handleResetFilters}>Reset</Button>\r\n <Button size=\"sm\" onClick={() => setIsFilterOpen(false)}>Done</Button>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n )}\r\n\r\n\r\n {/* Scrollable Content */}\r\n <div\r\n ref={scrollContainerRef}\r\n className={`ndk:relative ndk:flex-1 ${fullHeight ? 'ndk:min-h-0' : ''} ndk:overflow-y-auto ndk:overflow-x-hidden ${className ?? ''}`}\r\n >\r\n {/* User content */}\r\n {children(enhancedDataKit)}\r\n\r\n {/* Load more trigger at bottom */}\r\n <div ref={loadMoreBottomRef} className={manual ? '' : 'ndk:flex ndk:items-center ndk:justify-center ndk:py-4'}>\r\n {!manual && (\r\n <>\r\n {dataKit.state.isLoading && <Loader2 className=\"ndk:size-6 ndk:animate-spin ndk:text-muted-foreground\" />}\r\n {!dataKit.state.isLoading && !dataKit.state.hasNextPage && allItems.length > 0 && (\r\n <p className=\"ndk:text-sm ndk:text-muted-foreground\">You're all set</p>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div >\r\n );\r\n};\r\n\r\nexport const DataKitInfinity = DataKitInfinityInner as unknown as <\r\n TAction extends (input: TDataKitInput<unknown>) => Promise<TDataKitResult<TDataKitSelectableItem>>\r\n>(\r\n props: Readonly<{\r\n action: TAction;\r\n query?: Record<string, unknown>;\r\n\r\n filters?: TDataKitFilterItem[];\r\n limit?: { default: number };\r\n defaultSort?: { path: string; value: 1 | -1 }[];\r\n className?: string;\r\n autoFetch?: boolean;\r\n debounce?: number;\r\n memory?: TDataKitMemoryMode;\r\n manual?: boolean;\r\n fullHeight?: boolean;\r\n children: (dataKit: TUseDataKitReturn<unknown, TExtractDataKitItemType<TAction>>) => React.ReactNode;\r\n }>\r\n) => React.ReactElement;\r\n"]}
|
|
@@ -60,6 +60,15 @@ var keyToSortEntries = (key) => {
|
|
|
60
60
|
return { path: path ?? "", value: parseInt(value ?? "1", 10) };
|
|
61
61
|
});
|
|
62
62
|
};
|
|
63
|
+
var parseFilterValue = (value) => {
|
|
64
|
+
if (value === "true") return true;
|
|
65
|
+
if (value === "false") return false;
|
|
66
|
+
const num = Number(value);
|
|
67
|
+
if (!isNaN(num) && isFinite(num) && value.trim() !== "") {
|
|
68
|
+
return num;
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
};
|
|
63
72
|
var parseUrlParams = (search) => {
|
|
64
73
|
const params = new URLSearchParams(search);
|
|
65
74
|
const state = {};
|
|
@@ -72,8 +81,9 @@ var parseUrlParams = (search) => {
|
|
|
72
81
|
const filter = {};
|
|
73
82
|
const query = {};
|
|
74
83
|
params.forEach((value, key) => {
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
const parsedValue = parseFilterValue(value);
|
|
85
|
+
if (key.startsWith("f_")) filter[key.slice(2)] = parsedValue;
|
|
86
|
+
else if (key.startsWith("q_")) query[key.slice(2)] = parsedValue;
|
|
77
87
|
});
|
|
78
88
|
if (Object.keys(filter).length > 0) state.filter = filter;
|
|
79
89
|
if (Object.keys(query).length > 0) state.query = query;
|
|
@@ -379,5 +389,5 @@ exports.keyToSortEntries = keyToSortEntries;
|
|
|
379
389
|
exports.sortEntriesToKey = sortEntriesToKey;
|
|
380
390
|
exports.throttle = throttle;
|
|
381
391
|
exports.useDataKit = useDataKit;
|
|
382
|
-
//# sourceMappingURL=chunk-
|
|
383
|
-
//# sourceMappingURL=chunk-
|
|
392
|
+
//# sourceMappingURL=chunk-5TIEIY7M.cjs.map
|
|
393
|
+
//# sourceMappingURL=chunk-5TIEIY7M.cjs.map
|