@nicorp/nui 0.3.0 → 0.3.1
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/index.cjs.js +10 -9
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1450 -1434
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/label.tsx","../src/components/ui/badge.tsx","../src/components/ui/separator.tsx","../src/components/ui/avatar.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../src/components/ui/select.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/time-picker.tsx","../src/components/ui/number-input.tsx","../src/components/ui/tag-input.tsx","../src/components/ui/combobox.tsx","../src/components/ui/multiselect.tsx","../src/components/ui/otp-input.tsx","../src/components/ui/file-upload.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/box.tsx","../src/components/ui/flex.tsx","../src/components/ui/stack.tsx","../src/components/ui/grid.tsx","../src/components/ui/container.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/card.tsx","../src/components/ui/table.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/tabs.tsx","../src/components/ui/accordion.tsx","../src/components/ui/dialog.tsx","../src/components/ui/sheet.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/command.tsx","../src/components/ui/alert.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../node_modules/sonner/dist/index.mjs","../src/components/ui/theme-provider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/pagination.tsx","../src/components/ui/stepper.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/hover-card.tsx","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/components/ui/carousel.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../src/components/ui/data-table.tsx","../src/components/ui/code-block.tsx","../src/components/ui/typography.tsx","../src/components/ui/chart.tsx","../src/components/ui/timeline.tsx","../src/components/ui/app-shell.tsx","../src/components/ui/metric-card.tsx","../src/components/ui/copy-input.tsx","../src/components/ui/json-viewer.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/mode-toggle.tsx","../src/components/ui/chat-bubble.tsx","../src/components/ui/chat-input.tsx","../src/components/ui/chat-container.tsx","../src/components/ui/ai-loading.tsx","../src/components/ui/markdown-renderer.tsx","../src/components/ui/prompt-suggestions.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst buttonVariants = cva(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\r\n destructive:\r\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\r\n outline:\r\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n secondary:\r\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n brand: \"bg-gradient-to-r from-violet-600 to-indigo-600 text-white hover:from-violet-500 hover:to-indigo-500 shadow-lg shadow-violet-500/25 hover:shadow-violet-500/40 hover:scale-[1.02] active:scale-[0.98]\",\r\n glow: \"bg-primary text-primary-foreground shadow-[0_0_20px_rgba(139,92,246,0.5)] hover:shadow-[0_0_30px_rgba(139,92,246,0.7)] hover:scale-[1.02] active:scale-[0.98]\",\r\n },\r\n size: {\r\n default: \"h-10 px-4 py-2\",\r\n sm: \"h-9 rounded-md px-3\",\r\n lg: \"h-11 rounded-md px-8\",\r\n xl: \"h-12 rounded-lg px-10 text-base\",\r\n icon: \"h-10 w-10\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\"\r\n return (\r\n <Comp\r\n className={cn(buttonVariants({ variant, size, className }))}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nButton.displayName = \"Button\"\r\n\r\nexport { Button, buttonVariants }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst inputVariants = cva(\r\n \"flex w-full rounded-lg text-sm transition-all duration-200 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"h-10 border border-input bg-background px-3 py-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n filled: \"h-10 border-0 bg-muted/50 px-3 py-2 focus-visible:outline-none focus-visible:bg-muted focus-visible:ring-2 focus-visible:ring-ring\",\r\n glow: \"h-10 border border-input bg-background px-3 py-2 ring-offset-background focus-visible:outline-none focus-visible:border-violet-500/50 focus-visible:ring-2 focus-visible:ring-violet-500/30 focus-visible:shadow-[0_0_15px_rgba(139,92,246,0.3)]\",\r\n ghost: \"h-10 border-0 bg-transparent px-3 py-2 focus-visible:outline-none focus-visible:bg-muted/30\",\r\n },\r\n inputSize: {\r\n default: \"h-10\",\r\n sm: \"h-9 text-xs\",\r\n lg: \"h-12 text-base\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n inputSize: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof inputVariants> { }\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type, variant, inputSize, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(inputVariants({ variant, inputSize }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nInput.displayName = \"Input\"\r\n\r\nexport { Input, inputVariants }\r\n\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(\r\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea }\r\n","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst labelVariants = cva(\r\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n)\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\r\n VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root\r\n ref={ref}\r\n className={cn(labelVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nLabel.displayName = LabelPrimitive.Root.displayName\r\n\r\nexport { Label }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive:\r\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n outline: \"text-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> { }\r\n\r\nfunction Badge({ className, variant, ...props }: BadgeProps) {\r\n return (\r\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\r\n )\r\n}\r\n\r\nexport { Badge, badgeVariants }\r\n","import * as React from \"react\"\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = \"horizontal\", ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative\r\n orientation={orientation}\r\n className={cn(\r\n \"shrink-0 bg-border\",\r\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n","import * as React from \"react\"\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatar.displayName = AvatarPrimitive.Root.displayName\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image\r\n ref={ref}\r\n className={cn(\"aspect-square h-full w-full\", className)}\r\n {...props}\r\n />\r\n))\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\r\n\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n","import * as React from \"react\"\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\r\nimport { Check } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator\r\n className={cn(\"flex items-center justify-center text-current\")}\r\n >\r\n <Check className=\"h-4 w-4\" />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n))\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\r\n\r\nexport { Checkbox }\r\n","import * as React from \"react\"\r\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Switch = React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SwitchPrimitive.Root\r\n className={cn(\r\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitive.Thumb\r\n className={cn(\r\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\r\n )}\r\n />\r\n </SwitchPrimitive.Root>\r\n))\r\nSwitch.displayName = SwitchPrimitive.Root.displayName\r\n\r\nexport { Switch }\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n position === \"popper\" &&\r\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-1\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\r\nimport { Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst RadioGroup = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <RadioGroupPrimitive.Root\r\n className={cn(\"grid gap-2\", className)}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <RadioGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n))\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\r\n\r\nexport { RadioGroup, RadioGroupItem }\r\n","import * as React from \"react\"\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full touch-none select-none items-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\r\n </SliderPrimitive.Track>\r\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\r\n </SliderPrimitive.Root>\r\n))\r\nSlider.displayName = SliderPrimitive.Root.displayName\r\n\r\nexport { Slider }\r\n","import * as React from \"react\"\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline:\r\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\r\n },\r\n size: {\r\n default: \"h-10 px-3\",\r\n sm: \"h-9 px-2.5\",\r\n lg: \"h-11 px-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root\r\n ref={ref}\r\n className={cn(toggleVariants({ variant, size, className }))}\r\n {...props}\r\n />\r\n))\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName\r\n\r\nexport { Toggle, toggleVariants }\r\n","import * as React from \"react\"\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { toggleVariants } from \"@/components/ui/toggle\"\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-1\", className)}\r\n {...props}\r\n >\r\n <ToggleGroupContext.Provider value={{ variant, size }}>\r\n {children}\r\n </ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n))\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\r\n\r\nconst ToggleGroupContext = React.createContext<\r\n VariantProps<typeof toggleVariants>\r\n>({\r\n size: \"default\",\r\n variant: \"default\",\r\n})\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext)\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n )\r\n})\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\r\n\r\nexport { ToggleGroup, ToggleGroupItem }\r\n","import * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\r\nimport {\r\n addMonths,\r\n subMonths,\r\n startOfMonth,\r\n endOfMonth,\r\n startOfWeek,\r\n endOfWeek,\r\n eachDayOfInterval,\r\n format,\r\n isSameMonth,\r\n isSameDay,\r\n isToday,\r\n} from \"date-fns\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\nexport interface CalendarProps {\r\n selected?: Date\r\n onSelect?: (date: Date | undefined) => void\r\n className?: string\r\n disabled?: (date: Date) => boolean\r\n}\r\n\r\nfunction Calendar({\r\n selected,\r\n onSelect,\r\n className,\r\n disabled,\r\n}: CalendarProps) {\r\n const [currentMonth, setCurrentMonth] = React.useState(() =>\r\n selected ? startOfMonth(selected) : startOfMonth(new Date())\r\n )\r\n\r\n const monthStart = startOfMonth(currentMonth)\r\n const monthEnd = endOfMonth(currentMonth)\r\n const calendarStart = startOfWeek(monthStart, { weekStartsOn: 1 })\r\n const calendarEnd = endOfWeek(monthEnd, { weekStartsOn: 1 })\r\n\r\n const days = eachDayOfInterval({ start: calendarStart, end: calendarEnd })\r\n\r\n const weekDays = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"]\r\n\r\n const handlePrevMonth = () => {\r\n setCurrentMonth(subMonths(currentMonth, 1))\r\n }\r\n\r\n const handleNextMonth = () => {\r\n setCurrentMonth(addMonths(currentMonth, 1))\r\n }\r\n\r\n const handleDayClick = (day: Date) => {\r\n if (disabled?.(day)) return\r\n onSelect?.(isSameDay(day, selected || new Date(0)) ? undefined : day)\r\n }\r\n\r\n return (\r\n <div className={cn(\"p-4 bg-card rounded-xl border shadow-sm w-[320px]\", className)}>\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={handlePrevMonth}\r\n className=\"h-8 w-8 rounded-full hover:bg-accent\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n <h2 className=\"text-base font-semibold\">\r\n {format(currentMonth, \"MMMM yyyy\")}\r\n </h2>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={handleNextMonth}\r\n className=\"h-8 w-8 rounded-full hover:bg-accent\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n\r\n {/* Week days header */}\r\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\r\n {weekDays.map((day) => (\r\n <div\r\n key={day}\r\n className=\"h-8 flex items-center justify-center text-xs font-medium text-muted-foreground\"\r\n >\r\n {day}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Days grid */}\r\n <div className=\"grid grid-cols-7 gap-1\">\r\n {days.map((day, index) => {\r\n const isCurrentMonth = isSameMonth(day, currentMonth)\r\n const isSelected = selected && isSameDay(day, selected)\r\n const isTodayDate = isToday(day)\r\n const isDisabled = disabled?.(day)\r\n\r\n return (\r\n <button\r\n key={index}\r\n onClick={() => handleDayClick(day)}\r\n disabled={isDisabled}\r\n className={cn(\r\n \"h-10 w-10 rounded-lg text-sm font-medium transition-all duration-150\",\r\n \"flex items-center justify-center\",\r\n \"hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1\",\r\n !isCurrentMonth && \"text-muted-foreground/40\",\r\n isCurrentMonth && !isSelected && \"text-foreground hover:text-foreground\",\r\n isSelected && \"bg-primary text-primary-foreground hover:bg-primary/90 shadow-md\",\r\n isTodayDate && !isSelected && \"bg-accent text-accent-foreground font-bold\",\r\n isDisabled && \"opacity-30 cursor-not-allowed hover:bg-transparent\"\r\n )}\r\n >\r\n {format(day, \"d\")}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n\r\n {/* Footer */}\r\n <div className=\"mt-4 pt-3 border-t flex justify-between items-center\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => {\r\n const today = new Date()\r\n setCurrentMonth(startOfMonth(today))\r\n onSelect?.(today)\r\n }}\r\n className=\"text-xs\"\r\n >\r\n Today\r\n </Button>\r\n {selected && (\r\n <span className=\"text-xs text-muted-foreground\">\r\n {format(selected, \"MMM d, yyyy\")}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nCalendar.displayName = \"Calendar\"\r\n\r\nexport { Calendar }\r\n","import * as React from \"react\"\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Popover = PopoverPrimitive.Root\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n))\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent }\r\n","import * as React from \"react\"\r\nimport { format } from \"date-fns\"\r\nimport { CalendarIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Calendar } from \"@/components/ui/calendar\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\n\r\nexport interface DatePickerProps {\r\n value?: Date\r\n onChange?: (date: Date | undefined) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction DatePicker({\r\n value,\r\n onChange,\r\n placeholder = \"Pick a date\",\r\n disabled,\r\n className,\r\n}: DatePickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-start text-left font-normal\",\r\n !value && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\r\n {value ? format(value, \"PPP\") : <span>{placeholder}</span>}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n <Calendar\r\n selected={value}\r\n onSelect={(date) => {\r\n onChange?.(date)\r\n setOpen(false)\r\n }}\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DatePicker }\r\n","import * as React from \"react\"\r\nimport { Clock } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\n\r\nexport interface TimePickerProps {\r\n value?: { hours: number; minutes: number }\r\n onChange?: (value: { hours: number; minutes: number }) => void\r\n is24Hour?: boolean\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction TimePicker({\r\n value = { hours: 12, minutes: 0 },\r\n onChange,\r\n is24Hour = false,\r\n disabled,\r\n className,\r\n}: TimePickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [period, setPeriod] = React.useState<\"AM\" | \"PM\">(value.hours >= 12 ? \"PM\" : \"AM\")\r\n\r\n const displayHours = is24Hour\r\n ? value.hours\r\n : value.hours === 0\r\n ? 12\r\n : value.hours > 12\r\n ? value.hours - 12\r\n : value.hours\r\n\r\n const formatTime = () => {\r\n const h = displayHours.toString().padStart(2, \"0\")\r\n const m = value.minutes.toString().padStart(2, \"0\")\r\n return is24Hour ? `${h}:${m}` : `${h}:${m} ${period}`\r\n }\r\n\r\n const handleHourChange = (hour: number) => {\r\n let newHours = hour\r\n if (!is24Hour) {\r\n if (period === \"PM\" && hour !== 12) newHours += 12\r\n if (period === \"AM\" && hour === 12) newHours = 0\r\n }\r\n onChange?.({ ...value, hours: newHours })\r\n }\r\n\r\n const handleMinuteChange = (minute: number) => {\r\n onChange?.({ ...value, minutes: minute })\r\n }\r\n\r\n const handlePeriodChange = (newPeriod: \"AM\" | \"PM\") => {\r\n setPeriod(newPeriod)\r\n let newHours = value.hours\r\n if (newPeriod === \"PM\" && value.hours < 12) newHours += 12\r\n if (newPeriod === \"AM\" && value.hours >= 12) newHours -= 12\r\n onChange?.({ ...value, hours: newHours })\r\n }\r\n\r\n const hours = is24Hour\r\n ? Array.from({ length: 24 }, (_, i) => i)\r\n : Array.from({ length: 12 }, (_, i) => i + 1)\r\n\r\n const minutes = Array.from({ length: 12 }, (_, i) => i * 5)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\"w-full justify-start font-normal\", className)}\r\n >\r\n <Clock className=\"mr-2 h-4 w-4\" />\r\n {formatTime()}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-2\" align=\"start\">\r\n <div className=\"flex gap-1\">\r\n {/* Hours */}\r\n <div className=\"h-32 w-12 overflow-y-auto rounded border bg-muted/30\">\r\n {hours.map((hour) => (\r\n <button\r\n key={hour}\r\n onClick={() => handleHourChange(hour)}\r\n className={cn(\r\n \"w-full py-1 text-sm font-medium transition-colors\",\r\n \"hover:bg-accent\",\r\n displayHours === hour && \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n )}\r\n >\r\n {hour.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"flex items-center text-muted-foreground font-bold\">:</div>\r\n\r\n {/* Minutes */}\r\n <div className=\"h-32 w-12 overflow-y-auto rounded border bg-muted/30\">\r\n {minutes.map((minute) => (\r\n <button\r\n key={minute}\r\n onClick={() => handleMinuteChange(minute)}\r\n className={cn(\r\n \"w-full py-1 text-sm font-medium transition-colors\",\r\n \"hover:bg-accent\",\r\n value.minutes === minute && \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n )}\r\n >\r\n {minute.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* AM/PM */}\r\n {!is24Hour && (\r\n <div className=\"flex flex-col gap-1\">\r\n <button\r\n onClick={() => handlePeriodChange(\"AM\")}\r\n className={cn(\r\n \"px-2 py-1 text-xs font-medium rounded border transition-colors flex-1\",\r\n \"hover:bg-accent\",\r\n period === \"AM\" && \"bg-primary text-primary-foreground border-primary\"\r\n )}\r\n >\r\n AM\r\n </button>\r\n <button\r\n onClick={() => handlePeriodChange(\"PM\")}\r\n className={cn(\r\n \"px-2 py-1 text-xs font-medium rounded border transition-colors flex-1\",\r\n \"hover:bg-accent\",\r\n period === \"PM\" && \"bg-primary text-primary-foreground border-primary\"\r\n )}\r\n >\r\n PM\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { TimePicker }\r\n","import * as React from \"react\"\r\nimport { Minus, Plus } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Input } from \"@/components/ui/input\"\r\n\r\nexport interface NumberInputProps {\r\n value?: number\r\n onChange?: (value: number) => void\r\n min?: number\r\n max?: number\r\n step?: number\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction NumberInput({\r\n value = 0,\r\n onChange,\r\n min = -Infinity,\r\n max = Infinity,\r\n step = 1,\r\n disabled,\r\n className,\r\n}: NumberInputProps) {\r\n const handleIncrement = () => {\r\n const newValue = Math.min(value + step, max)\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleDecrement = () => {\r\n const newValue = Math.max(value - step, min)\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const parsed = parseFloat(e.target.value)\r\n if (!isNaN(parsed)) {\r\n const clamped = Math.min(Math.max(parsed, min), max)\r\n onChange?.(clamped)\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"icon\"\r\n onClick={handleDecrement}\r\n disabled={disabled || value <= min}\r\n className=\"h-9 w-9\"\r\n >\r\n <Minus className=\"h-4 w-4\" />\r\n </Button>\r\n <Input\r\n type=\"number\"\r\n value={value}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n className=\"w-20 text-center [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"icon\"\r\n onClick={handleIncrement}\r\n disabled={disabled || value >= max}\r\n className=\"h-9 w-9\"\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport { NumberInput }\r\n","import * as React from \"react\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Badge } from \"@/components/ui/badge\"\r\n\r\nexport interface TagInputProps {\r\n values?: string[]\r\n onChange?: (values: string[]) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n className?: string\r\n maxTags?: number\r\n}\r\n\r\nfunction TagInput({\r\n values = [],\r\n onChange,\r\n placeholder = \"Add tag...\",\r\n disabled,\r\n className,\r\n maxTags,\r\n}: TagInputProps) {\r\n const [inputValue, setInputValue] = React.useState(\"\")\r\n const inputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"Enter\" && inputValue.trim()) {\r\n e.preventDefault()\r\n if (maxTags && values.length >= maxTags) return\r\n if (!values.includes(inputValue.trim())) {\r\n onChange?.([...values, inputValue.trim()])\r\n }\r\n setInputValue(\"\")\r\n } else if (e.key === \"Backspace\" && !inputValue && values.length > 0) {\r\n onChange?.(values.slice(0, -1))\r\n }\r\n }\r\n\r\n const removeTag = (tagToRemove: string) => {\r\n onChange?.(values.filter((tag) => tag !== tagToRemove))\r\n }\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-wrap gap-2 rounded-md border border-input bg-background px-3 py-2 focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n {values.map((tag) => (\r\n <Badge key={tag} variant=\"secondary\" className=\"gap-1\">\r\n {tag}\r\n {!disabled && (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n removeTag(tag)\r\n }}\r\n className=\"ml-1 rounded-full outline-none hover:bg-muted\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n )}\r\n </Badge>\r\n ))}\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={inputValue}\r\n onChange={(e) => setInputValue(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={values.length === 0 ? placeholder : \"\"}\r\n disabled={disabled || (maxTags ? values.length >= maxTags : false)}\r\n className=\"flex-1 min-w-[120px] bg-transparent outline-none placeholder:text-muted-foreground text-sm\"\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport { TagInput }\r\n","import * as React from \"react\"\r\nimport { Check, ChevronsUpDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\n\r\nexport interface ComboboxOption {\r\n value: string\r\n label: string\r\n}\r\n\r\nexport interface ComboboxProps {\r\n options: ComboboxOption[]\r\n value?: string\r\n onChange?: (value: string) => void\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n emptyText?: string\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction Combobox({\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select option...\",\r\n searchPlaceholder = \"Search...\",\r\n emptyText = \"No results found.\",\r\n disabled,\r\n className,\r\n}: ComboboxProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [search, setSearch] = React.useState(\"\")\r\n\r\n const filteredOptions = options.filter((option) =>\r\n option.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n\r\n const selectedOption = options.find((option) => option.value === value)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-between font-normal\",\r\n !value && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n {selectedOption ? selectedOption.label : placeholder}\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-full p-0\" align=\"start\">\r\n <div className=\"p-2 border-b\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n className=\"h-8\"\r\n />\r\n </div>\r\n <div className=\"max-h-60 overflow-auto p-1\">\r\n {filteredOptions.length === 0 ? (\r\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\r\n {emptyText}\r\n </div>\r\n ) : (\r\n filteredOptions.map((option) => (\r\n <button\r\n key={option.value}\r\n onClick={() => {\r\n onChange?.(option.value === value ? \"\" : option.value)\r\n setOpen(false)\r\n setSearch(\"\")\r\n }}\r\n className={cn(\r\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground\",\r\n value === option.value && \"bg-accent\"\r\n )}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n {value === option.value && <Check className=\"h-4 w-4\" />}\r\n </span>\r\n {option.label}\r\n </button>\r\n ))\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { Combobox }\r\n","import * as React from \"react\"\r\nimport { Check, ChevronsUpDown, X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Badge } from \"@/components/ui/badge\"\r\n\r\nexport interface MultiSelectOption {\r\n value: string\r\n label: string\r\n}\r\n\r\nexport interface MultiSelectProps {\r\n options: MultiSelectOption[]\r\n value?: string[]\r\n onChange?: (value: string[]) => void\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n emptyText?: string\r\n disabled?: boolean\r\n className?: string\r\n maxDisplay?: number\r\n}\r\n\r\nfunction MultiSelect({\r\n options,\r\n value = [],\r\n onChange,\r\n placeholder = \"Select options...\",\r\n searchPlaceholder = \"Search...\",\r\n emptyText = \"No results found.\",\r\n disabled,\r\n className,\r\n maxDisplay = 3,\r\n}: MultiSelectProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [search, setSearch] = React.useState(\"\")\r\n\r\n const filteredOptions = options.filter((option) =>\r\n option.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n\r\n const selectedOptions = options.filter((option) => value.includes(option.value))\r\n\r\n const handleSelect = (optionValue: string) => {\r\n const newValue = value.includes(optionValue)\r\n ? value.filter((v) => v !== optionValue)\r\n : [...value, optionValue]\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleRemove = (optionValue: string, e: React.MouseEvent) => {\r\n e.stopPropagation()\r\n onChange?.(value.filter((v) => v !== optionValue))\r\n }\r\n\r\n const displayText = () => {\r\n if (value.length === 0) return placeholder\r\n if (value.length <= maxDisplay) {\r\n return selectedOptions.map((opt) => opt.label).join(\", \")\r\n }\r\n return `${value.length} selected`\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-between font-normal\",\r\n value.length === 0 && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n <span className=\"truncate\">{displayText()}</span>\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-full p-0\" align=\"start\">\r\n <div className=\"p-2 border-b\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n className=\"h-8\"\r\n />\r\n </div>\r\n {value.length > 0 && (\r\n <div className=\"flex flex-wrap gap-1 p-2 border-b\">\r\n {selectedOptions.map((option) => (\r\n <Badge\r\n key={option.value}\r\n variant=\"secondary\"\r\n className=\"pr-1\"\r\n >\r\n {option.label}\r\n <button\r\n onClick={(e) => handleRemove(option.value, e)}\r\n className=\"ml-1 rounded-full hover:bg-muted\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n </div>\r\n )}\r\n <div className=\"max-h-60 overflow-auto p-1\">\r\n {filteredOptions.length === 0 ? (\r\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\r\n {emptyText}\r\n </div>\r\n ) : (\r\n filteredOptions.map((option) => {\r\n const isSelected = value.includes(option.value)\r\n return (\r\n <button\r\n key={option.value}\r\n onClick={() => handleSelect(option.value)}\r\n className={cn(\r\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground\",\r\n isSelected && \"bg-accent\"\r\n )}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n {isSelected && <Check className=\"h-4 w-4\" />}\r\n </span>\r\n {option.label}\r\n </button>\r\n )\r\n })\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { MultiSelect }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface OTPInputProps {\r\n length?: number\r\n value?: string\r\n onChange?: (value: string) => void\r\n onComplete?: (value: string) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction OTPInput({\r\n length = 6,\r\n value = \"\",\r\n onChange,\r\n onComplete,\r\n disabled,\r\n className,\r\n}: OTPInputProps) {\r\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([])\r\n\r\n const handleChange = (index: number, char: string) => {\r\n if (!/^\\d*$/.test(char)) return\r\n\r\n const newValue = value.split(\"\")\r\n newValue[index] = char\r\n const result = newValue.join(\"\").slice(0, length)\r\n onChange?.(result)\r\n\r\n if (char && index < length - 1) {\r\n inputRefs.current[index + 1]?.focus()\r\n }\r\n\r\n if (result.length === length) {\r\n onComplete?.(result)\r\n }\r\n }\r\n\r\n const handleKeyDown = (index: number, e: React.KeyboardEvent) => {\r\n if (e.key === \"Backspace\" && !value[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus()\r\n }\r\n }\r\n\r\n const handlePaste = (e: React.ClipboardEvent) => {\r\n e.preventDefault()\r\n const pastedData = e.clipboardData.getData(\"text\").replace(/\\D/g, \"\").slice(0, length)\r\n onChange?.(pastedData)\r\n if (pastedData.length === length) {\r\n onComplete?.(pastedData)\r\n }\r\n inputRefs.current[Math.min(pastedData.length, length - 1)]?.focus()\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex gap-2\", className)}>\r\n {Array.from({ length }).map((_, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => { inputRefs.current[index] = el }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value[index] || \"\"}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onPaste={handlePaste}\r\n disabled={disabled}\r\n className={cn(\r\n \"h-12 w-12 rounded-lg border border-input bg-background text-center text-lg font-semibold\",\r\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport { OTPInput }\r\n","import * as React from \"react\"\r\nimport { Upload, X, FileIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\nexport interface FileUploadProps {\r\n accept?: string\r\n maxSize?: number\r\n multiple?: boolean\r\n onUpload?: (files: File[]) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction FileUpload({\r\n accept,\r\n maxSize,\r\n multiple = false,\r\n onUpload,\r\n disabled,\r\n className,\r\n}: FileUploadProps) {\r\n const [files, setFiles] = React.useState<File[]>([])\r\n const [isDragging, setIsDragging] = React.useState(false)\r\n const inputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const handleFiles = (fileList: FileList | null) => {\r\n if (!fileList) return\r\n\r\n const validFiles = Array.from(fileList).filter((file) => {\r\n if (maxSize && file.size > maxSize) return false\r\n return true\r\n })\r\n\r\n const newFiles = multiple ? [...files, ...validFiles] : validFiles.slice(0, 1)\r\n setFiles(newFiles)\r\n onUpload?.(newFiles)\r\n }\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault()\r\n setIsDragging(false)\r\n if (!disabled) {\r\n handleFiles(e.dataTransfer.files)\r\n }\r\n }\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (!disabled) {\r\n setIsDragging(true)\r\n }\r\n }\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false)\r\n }\r\n\r\n const removeFile = (index: number) => {\r\n const newFiles = files.filter((_, i) => i !== index)\r\n setFiles(newFiles)\r\n onUpload?.(newFiles)\r\n }\r\n\r\n const formatSize = (bytes: number) => {\r\n if (bytes < 1024) return bytes + \" B\"\r\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\"\r\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\"\r\n }\r\n\r\n return (\r\n <div className={cn(\"space-y-4\", className)}>\r\n <div\r\n onClick={() => !disabled && inputRef.current?.click()}\r\n onDrop={handleDrop}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n className={cn(\r\n \"border-2 border-dashed rounded-lg p-8 text-center transition-colors cursor-pointer\",\r\n isDragging ? \"border-primary bg-primary/5\" : \"border-muted-foreground/25\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n \"hover:border-primary/50\"\r\n )}\r\n >\r\n <Upload className=\"h-10 w-10 mx-auto mb-4 text-muted-foreground\" />\r\n <p className=\"text-sm text-muted-foreground mb-1\">\r\n Drag & drop files here, or click to select\r\n </p>\r\n {maxSize && (\r\n <p className=\"text-xs text-muted-foreground\">\r\n Max file size: {formatSize(maxSize)}\r\n </p>\r\n )}\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={(e) => handleFiles(e.target.files)}\r\n disabled={disabled}\r\n className=\"hidden\"\r\n />\r\n </div>\r\n\r\n {files.length > 0 && (\r\n <div className=\"space-y-2\">\r\n {files.map((file, index) => (\r\n <div\r\n key={index}\r\n className=\"flex items-center gap-3 p-3 rounded-lg border bg-muted/50\"\r\n >\r\n <FileIcon className=\"h-8 w-8 text-muted-foreground\" />\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium truncate\">{file.name}</p>\r\n <p className=\"text-xs text-muted-foreground\">{formatSize(file.size)}</p>\r\n </div>\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => removeFile(index)}\r\n className=\"h-8 w-8\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport { FileUpload }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Label } from \"@/components/ui/label\"\r\n\r\nconst PRESET_COLORS = [\r\n \"#ef4444\", \"#f97316\", \"#eab308\", \"#22c55e\", \"#14b8a6\",\r\n \"#3b82f6\", \"#8b5cf6\", \"#ec4899\", \"#000000\", \"#ffffff\",\r\n]\r\n\r\nexport interface ColorPickerProps {\r\n value?: string\r\n onChange?: (value: string) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\r\n if (!result) return { h: 0, s: 100, l: 50 }\r\n\r\n let r = parseInt(result[1], 16) / 255\r\n let g = parseInt(result[2], 16) / 255\r\n let b = parseInt(result[3], 16) / 255\r\n\r\n const max = Math.max(r, g, b), min = Math.min(r, g, b)\r\n let h = 0, s = 0\r\n const l = (max + min) / 2\r\n\r\n if (max !== min) {\r\n const d = max - min\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n switch (max) {\r\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break\r\n case g: h = ((b - r) / d + 2) / 6; break\r\n case b: h = ((r - g) / d + 4) / 6; break\r\n }\r\n }\r\n\r\n return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) }\r\n}\r\n\r\nfunction hslToHex(h: number, s: number, l: number): string {\r\n s /= 100\r\n l /= 100\r\n const a = s * Math.min(l, 1 - l)\r\n const f = (n: number) => {\r\n const k = (n + h / 30) % 12\r\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\r\n return Math.round(255 * color).toString(16).padStart(2, '0')\r\n }\r\n return `#${f(0)}${f(8)}${f(4)}`\r\n}\r\n\r\nfunction ColorPicker({\r\n value = \"#3b82f6\",\r\n onChange,\r\n disabled,\r\n className,\r\n}: ColorPickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [hsl, setHsl] = React.useState(() => hexToHsl(value))\r\n const [hexInput, setHexInput] = React.useState(value)\r\n const gradientRef = React.useRef<HTMLDivElement>(null)\r\n\r\n React.useEffect(() => {\r\n setHsl(hexToHsl(value))\r\n setHexInput(value)\r\n }, [value])\r\n\r\n const updateColor = (newHsl: { h: number; s: number; l: number }) => {\r\n setHsl(newHsl)\r\n const hex = hslToHex(newHsl.h, newHsl.s, newHsl.l)\r\n setHexInput(hex)\r\n onChange?.(hex)\r\n }\r\n\r\n const handleGradientClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!gradientRef.current) return\r\n const rect = gradientRef.current.getBoundingClientRect()\r\n const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))\r\n const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height))\r\n updateColor({ ...hsl, s: Math.round(x * 100), l: Math.round((1 - y) * 100) })\r\n }\r\n\r\n const handleHexChange = (hex: string) => {\r\n setHexInput(hex)\r\n if (/^#[0-9A-Fa-f]{6}$/.test(hex)) {\r\n const newHsl = hexToHsl(hex)\r\n setHsl(newHsl)\r\n onChange?.(hex)\r\n }\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\"w-full justify-start gap-2\", className)}\r\n >\r\n <div\r\n className=\"h-5 w-5 rounded border shadow-sm\"\r\n style={{ backgroundColor: value }}\r\n />\r\n <span className=\"font-mono text-sm\">{value}</span>\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-72 p-3\" align=\"start\">\r\n <div className=\"space-y-3\">\r\n {/* Saturation/Lightness Gradient */}\r\n <div\r\n ref={gradientRef}\r\n onClick={handleGradientClick}\r\n className=\"relative h-40 rounded-lg cursor-crosshair overflow-hidden border\"\r\n style={{\r\n background: `\r\n linear-gradient(to top, #000 0%, transparent 100%),\r\n linear-gradient(to right, #fff 0%, hsl(${hsl.h}, 100%, 50%) 100%)\r\n `\r\n }}\r\n >\r\n <div\r\n className=\"absolute w-4 h-4 rounded-full border-2 border-white shadow-md transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\r\n style={{\r\n left: `${hsl.s}%`,\r\n top: `${100 - hsl.l}%`,\r\n backgroundColor: value,\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Hue Slider */}\r\n <div className=\"space-y-1\">\r\n <Label className=\"text-xs\">Hue</Label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={360}\r\n value={hsl.h}\r\n onChange={(e) => updateColor({ ...hsl, h: parseInt(e.target.value) })}\r\n className=\"w-full h-3 rounded-lg appearance-none cursor-pointer\"\r\n style={{\r\n background: `linear-gradient(to right, \r\n hsl(0, 100%, 50%), \r\n hsl(60, 100%, 50%), \r\n hsl(120, 100%, 50%), \r\n hsl(180, 100%, 50%), \r\n hsl(240, 100%, 50%), \r\n hsl(300, 100%, 50%), \r\n hsl(360, 100%, 50%)\r\n )`\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Hex Input */}\r\n <div className=\"flex gap-2 items-center\">\r\n <div\r\n className=\"h-9 w-9 rounded-md border flex-shrink-0 shadow-inner\"\r\n style={{ backgroundColor: value }}\r\n />\r\n <Input\r\n value={hexInput}\r\n onChange={(e) => handleHexChange(e.target.value)}\r\n placeholder=\"#000000\"\r\n className=\"font-mono text-sm\"\r\n />\r\n </div>\r\n\r\n {/* Presets */}\r\n <div className=\"grid grid-cols-5 gap-1.5\">\r\n {PRESET_COLORS.map((color) => (\r\n <button\r\n key={color}\r\n onClick={() => {\r\n onChange?.(color)\r\n setHsl(hexToHsl(color))\r\n setHexInput(color)\r\n }}\r\n className={cn(\r\n \"h-7 w-7 rounded-md border-2 transition-transform hover:scale-110\",\r\n value === color ? \"border-primary ring-2 ring-ring\" : \"border-transparent\"\r\n )}\r\n style={{ backgroundColor: color }}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { ColorPicker }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\r\n as?: React.ElementType\r\n}\r\n\r\nconst Box = React.forwardRef<HTMLDivElement, BoxProps>(\r\n ({ className, as: Component = \"div\", ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nBox.displayName = \"Box\"\r\n\r\nexport { Box }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: \"row\" | \"row-reverse\" | \"col\" | \"col-reverse\"\r\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\"\r\n justify?: \"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\"\r\n align?: \"start\" | \"end\" | \"center\" | \"baseline\" | \"stretch\"\r\n gap?: number | string\r\n}\r\n\r\nconst Flex = React.forwardRef<HTMLDivElement, FlexProps>(\r\n ({ className, direction, wrap, justify, align, gap, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n direction && `flex-${direction}`,\r\n wrap && `flex-${wrap}`,\r\n justify && `justify-${justify}`,\r\n align && `items-${align}`,\r\n typeof gap === \"number\" && `gap-${gap}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof gap === \"string\" ? { gap } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nFlex.displayName = \"Flex\"\r\n\r\nexport { Flex }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n spacing?: number | string\r\n align?: \"start\" | \"end\" | \"center\" | \"stretch\"\r\n}\r\n\r\nconst VStack = React.forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, spacing = 4, align, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-col\",\r\n typeof spacing === \"number\" && `gap-${spacing}`,\r\n align && `items-${align}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof spacing === \"string\" ? { gap: spacing } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nVStack.displayName = \"VStack\"\r\n\r\nconst HStack = React.forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, spacing = 4, align = \"center\", style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-row\",\r\n typeof spacing === \"number\" && `gap-${spacing}`,\r\n align && `items-${align}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof spacing === \"string\" ? { gap: spacing } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nHStack.displayName = \"HStack\"\r\n\r\nexport { VStack, HStack }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n cols?: number | { sm?: number; md?: number; lg?: number; xl?: number }\r\n gap?: number | string\r\n}\r\n\r\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, gap = 4, style, ...props }, ref) => {\r\n const colClasses = typeof cols === \"number\"\r\n ? `grid-cols-${cols}`\r\n : [\r\n cols.sm && `sm:grid-cols-${cols.sm}`,\r\n cols.md && `md:grid-cols-${cols.md}`,\r\n cols.lg && `lg:grid-cols-${cols.lg}`,\r\n cols.xl && `xl:grid-cols-${cols.xl}`,\r\n ].filter(Boolean).join(\" \")\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid\",\r\n colClasses,\r\n typeof gap === \"number\" && `gap-${gap}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof gap === \"string\" ? { gap } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nGrid.displayName = \"Grid\"\r\n\r\nexport { Grid }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\"\r\n centered?: boolean\r\n}\r\n\r\nconst maxWidthMap = {\r\n sm: \"max-w-screen-sm\",\r\n md: \"max-w-screen-md\",\r\n lg: \"max-w-screen-lg\",\r\n xl: \"max-w-screen-xl\",\r\n \"2xl\": \"max-w-screen-2xl\",\r\n full: \"max-w-full\",\r\n}\r\n\r\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n ({ className, maxWidth = \"lg\", centered = true, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4\",\r\n maxWidthMap[maxWidth],\r\n centered && \"mx-auto\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nContainer.displayName = \"Container\"\r\n\r\nexport { Container }\r\n","\r\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\r\n\r\nconst AspectRatio = AspectRatioPrimitive.Root\r\n\r\nexport { AspectRatio }\r\n","import * as React from \"react\"\r\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = React.forwardRef<\r\n React.ElementRef<typeof CollapsiblePrimitive.CollapsibleContent>,\r\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.CollapsibleContent>\r\n>(({ className, children, ...props }, ref) => (\r\n <CollapsiblePrimitive.CollapsibleContent\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden transition-all duration-300 ease-in-out\",\r\n \"data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"pb-2\">\r\n {children}\r\n </div>\r\n </CollapsiblePrimitive.CollapsibleContent>\r\n))\r\nCollapsibleContent.displayName = \"CollapsibleContent\"\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst cardVariants = cva(\r\n \"rounded-xl text-card-foreground transition-all duration-300\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-card shadow-sm\",\r\n elevated: \"border border-white/10 bg-gradient-to-br from-card/80 to-card/40 backdrop-blur-xl shadow-2xl shadow-black/20\",\r\n glass: \"border border-white/10 bg-white/5 backdrop-blur-xl shadow-xl\",\r\n ghost: \"bg-transparent\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface CardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> { }\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant }), className)}\r\n {...props}\r\n />\r\n )\r\n)\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, cardVariants, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Table = React.forwardRef<\r\n HTMLTableElement,\r\n React.HTMLAttributes<HTMLTableElement>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table\r\n ref={ref}\r\n className={cn(\"w-full caption-bottom text-sm\", className)}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nTable.displayName = \"Table\"\r\n\r\nconst TableHeader = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\r\n))\r\nTableHeader.displayName = \"TableHeader\"\r\n\r\nconst TableBody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tbody\r\n ref={ref}\r\n className={cn(\"[&_tr:last-child]:border-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableBody.displayName = \"TableBody\"\r\n\r\nconst TableFooter = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n className={cn(\r\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableFooter.displayName = \"TableFooter\"\r\n\r\nconst TableRow = React.forwardRef<\r\n HTMLTableRowElement,\r\n React.HTMLAttributes<HTMLTableRowElement>\r\n>(({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableRow.displayName = \"TableRow\"\r\n\r\nconst TableHead = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.ThHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableHead.displayName = \"TableHead\"\r\n\r\nconst TableCell = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.TdHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCell.displayName = \"TableCell\"\r\n\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n React.HTMLAttributes<HTMLTableCaptionElement>\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCaption.displayName = \"TableCaption\"\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ntype ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\"\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {\r\n orientation?: ScrollAreaOrientation\r\n }\r\n>(({ className, children, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden\", className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n {(orientation === \"vertical\" || orientation === \"both\") && (\r\n <ScrollBar orientation=\"vertical\" />\r\n )}\r\n {(orientation === \"horizontal\" || orientation === \"both\") && (\r\n <ScrollBar orientation=\"horizontal\" />\r\n )}\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n))\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" &&\r\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" &&\r\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n))\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\r\n\r\nexport { ScrollArea, ScrollBar }\r\n","import * as React from \"react\"\r\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from \"react\"\r\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Accordion = AccordionPrimitive.Root\r\n\r\nconst AccordionItem = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <AccordionPrimitive.Item\r\n ref={ref}\r\n className={cn(\"border-b\", className)}\r\n {...props}\r\n />\r\n))\r\nAccordionItem.displayName = \"AccordionItem\"\r\n\r\nconst AccordionTrigger = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Header className=\"flex\">\r\n <AccordionPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n))\r\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\r\n\r\nconst AccordionContent = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Content\r\n ref={ref}\r\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\r\n {...props}\r\n >\r\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\r\n </AccordionPrimitive.Content>\r\n))\r\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\r\n","import * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> { }\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n))\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n))\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\r\n\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n))\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n))\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-semibold\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n}\r\n","import * as React from \"react\"\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider\r\n\r\nconst Tooltip = TooltipPrimitive.Root\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\r\n","import * as React from \"react\"\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\r\nimport { Command as CommandPrimitive } from \"cmdk\"\r\nimport { Search } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommand.displayName = CommandPrimitive.displayName\r\n\r\ninterface CommandDialogProps extends DialogProps { }\r\n\r\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\r\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\r\n {children}\r\n </Command>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n))\r\n\r\nCommandInput.displayName = CommandPrimitive.Input.displayName\r\n\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandList.displayName = CommandPrimitive.List.displayName\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => (\r\n <CommandPrimitive.Empty\r\n ref={ref}\r\n className=\"py-6 text-center text-sm\"\r\n {...props}\r\n />\r\n))\r\n\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\r\n\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 h-px bg-border\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\r\n\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected='true']:text-accent-foreground data-[disabled=true]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandItem.displayName = CommandPrimitive.Item.displayName\r\n\r\nconst CommandShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nCommandShortcut.displayName = \"CommandShortcut\"\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n}\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background text-foreground\",\r\n destructive:\r\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(alertVariants({ variant }), className)}\r\n {...props}\r\n />\r\n))\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\nexport { Alert, AlertTitle, AlertDescription }\r\n","import * as React from \"react\"\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { buttonVariants } from \"@/components/ui/button\"\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n))\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action\r\n ref={ref}\r\n className={cn(buttonVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n className={cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"mt-2 sm:mt-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Progress = React.forwardRef<\r\n React.ElementRef<typeof ProgressPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\r\n>(({ className, value, ...props }, ref) => (\r\n <ProgressPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ProgressPrimitive.Indicator\r\n className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n />\r\n </ProgressPrimitive.Root>\r\n))\r\nProgress.displayName = ProgressPrimitive.Root.displayName\r\n\r\nexport { Progress }\r\n","import { cn } from \"@/lib/utils\"\r\n\r\nfunction Skeleton({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div\r\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Skeleton }\r\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n switch(type){\n case 'success':\n return SuccessIcon;\n case 'info':\n return InfoIcon;\n case 'warning':\n return WarningIcon;\n case 'error':\n return ErrorIcon;\n default:\n return null;\n }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: [\n 'sonner-loading-wrapper',\n className\n ].filter(Boolean).join(' '),\n \"data-visible\": visible\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: `spinner-bar-${i}`\n }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n React.useEffect(()=>{\n const callback = ()=>{\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return ()=>window.removeEventListener('visibilitychange', callback);\n }, []);\n return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\nclass Observer {\n constructor(){\n // We use arrow functions to maintain the correct `this` reference\n this.subscribe = (subscriber)=>{\n this.subscribers.push(subscriber);\n return ()=>{\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n this.publish = (data)=>{\n this.subscribers.forEach((subscriber)=>subscriber(data));\n };\n this.addToast = (data)=>{\n this.publish(data);\n this.toasts = [\n ...this.toasts,\n data\n ];\n };\n this.create = (data)=>{\n var _data_id;\n const { message, ...rest } = data;\n const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast)=>{\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast)=>{\n if (toast.id === id) {\n this.publish({\n ...toast,\n ...data,\n id,\n title: message\n });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message\n };\n }\n return toast;\n });\n } else {\n this.addToast({\n title: message,\n ...rest,\n dismissible,\n id\n });\n }\n return id;\n };\n this.dismiss = (id)=>{\n if (id) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({\n id,\n dismiss: true\n })));\n } else {\n this.toasts.forEach((toast)=>{\n this.subscribers.forEach((subscriber)=>subscriber({\n id: toast.id,\n dismiss: true\n }));\n });\n }\n return id;\n };\n this.message = (message, data)=>{\n return this.create({\n ...data,\n message\n });\n };\n this.error = (message, data)=>{\n return this.create({\n ...data,\n message,\n type: 'error'\n });\n };\n this.success = (message, data)=>{\n return this.create({\n ...data,\n type: 'success',\n message\n });\n };\n this.info = (message, data)=>{\n return this.create({\n ...data,\n type: 'info',\n message\n });\n };\n this.warning = (message, data)=>{\n return this.create({\n ...data,\n type: 'warning',\n message\n });\n };\n this.loading = (message, data)=>{\n return this.create({\n ...data,\n type: 'loading',\n message\n });\n };\n this.promise = (promise, data)=>{\n if (!data) {\n // Nothing to show\n return;\n }\n let id = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== undefined;\n let result;\n const originalPromise = p.then(async (response)=>{\n result = [\n 'resolve',\n response\n ];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({\n id,\n type: 'default',\n message: response\n });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (response instanceof Error) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'success',\n description,\n ...toastSettings\n });\n }\n }).catch(async (error)=>{\n result = [\n 'reject',\n error\n ];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n }\n }).finally(()=>{\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n data.finally == null ? void 0 : data.finally.call(data);\n });\n const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return {\n unwrap\n };\n } else {\n return Object.assign(id, {\n unwrap\n });\n }\n };\n this.custom = (jsx, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n this.create({\n jsx: jsx(id),\n id,\n ...data\n });\n return id;\n };\n this.getActiveToasts = ()=>{\n return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n };\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n ToastState.addToast({\n title: message,\n ...data,\n id\n });\n return id;\n};\nconst isHttpResponse = (data)=>{\n return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading\n}, {\n getHistory,\n getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n const [y, x] = position.split('-');\n const directions = [];\n if (y) {\n directions.push(y);\n }\n if (x) {\n directions.push(x);\n }\n return directions;\n}\nconst Toast = (props)=>{\n var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n const [swipeDirection, setSwipeDirection] = React.useState(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef(null);\n const toastRef = React.useRef(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n heights,\n toast.id\n ]);\n const closeButton = React.useMemo(()=>{\n var _toast_closeButton;\n return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n }, [\n toast.closeButton,\n closeButtonFromToaster\n ]);\n const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n toast.duration,\n durationFromToaster\n ]);\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(()=>{\n return heights.reduce((prev, curr, reducerIndex)=>{\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n return prev + curr.height;\n }, 0);\n }, [\n heights,\n heightIndex\n ]);\n const isDocumentHidden = useIsDocumentHidden();\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n heightIndex,\n toastsHeightBefore\n ]);\n React.useEffect(()=>{\n remainingTime.current = duration;\n }, [\n duration\n ]);\n React.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n React.useEffect(()=>{\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h)=>[\n {\n toastId: toast.id,\n height,\n position: toast.position\n },\n ...h\n ]);\n return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n }\n }, [\n setHeights,\n toast.id\n ]);\n React.useLayoutEffect(()=>{\n // Keep height up to date with the content in case it updates\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n setInitialHeight(newHeight);\n setHeights((heights)=>{\n const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n if (!alreadyExists) {\n return [\n {\n toastId: toast.id,\n height: newHeight,\n position: toast.position\n },\n ...heights\n ];\n } else {\n return heights.map((height)=>height.toastId === toast.id ? {\n ...height,\n height: newHeight\n } : height);\n }\n });\n }, [\n mounted,\n toast.title,\n toast.description,\n setHeights,\n toast.id,\n toast.jsx,\n toast.action,\n toast.cancel\n ]);\n const deleteToast = React.useCallback(()=>{\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n setTimeout(()=>{\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [\n toast,\n removeToast,\n setHeights,\n offset\n ]);\n React.useEffect(()=>{\n if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId;\n // Pause the timer on each hover\n const pauseTimer = ()=>{\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n const startTimer = ()=>{\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n closeTimerStartTimeRef.current = new Date().getTime();\n // Let the toast know it has started\n timeoutId = setTimeout(()=>{\n toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n deleteToast();\n }, remainingTime.current);\n };\n if (expanded || interacting || isDocumentHidden) {\n pauseTimer();\n } else {\n startTimer();\n }\n return ()=>clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n toast,\n toastType,\n isDocumentHidden,\n deleteToast\n ]);\n React.useEffect(()=>{\n if (toast.delete) {\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n }\n }, [\n deleteToast,\n toast.delete\n ]);\n function getLoadingIcon() {\n var _toast_classNames;\n if (icons == null ? void 0 : icons.loading) {\n var _toast_classNames1;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n \"data-visible\": toastType === 'loading'\n }, icons.loading);\n }\n return /*#__PURE__*/ React.createElement(Loader, {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n visible: toastType === 'loading'\n });\n }\n const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n var _toast_richColors, _icons_close;\n return /*#__PURE__*/ React.createElement(\"li\", {\n tabIndex: 0,\n ref: toastRef,\n className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastType]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n \"data-mounted\": mounted,\n \"data-promise\": Boolean(toast.promise),\n \"data-swiped\": isSwiped,\n \"data-removed\": removed,\n \"data-visible\": isVisible,\n \"data-y-position\": y,\n \"data-x-position\": x,\n \"data-index\": index,\n \"data-front\": isFront,\n \"data-swiping\": swiping,\n \"data-dismissible\": dismissible,\n \"data-type\": toastType,\n \"data-invert\": invert,\n \"data-swipe-out\": swipeOut,\n \"data-swipe-direction\": swipeOutDirection,\n \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n \"data-testid\": toast.testId,\n style: {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style\n },\n onDragEnd: ()=>{\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n },\n onPointerDown: (event)=>{\n if (event.button === 2) return; // Return early on right click\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n event.target.setPointerCapture(event.pointerId);\n if (event.target.tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n },\n onPointerUp: ()=>{\n var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n if (swipeOut || !dismissible) return;\n pointerStartRef.current = null;\n const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n deleteToast();\n setSwipeOut(true);\n return;\n } else {\n var _toastRef_current2, _toastRef_current3;\n (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n }\n setIsSwiped(false);\n setSwiping(false);\n setSwipeDirection(null);\n },\n onPointerMove: (event)=>{\n var _window_getSelection, // Apply transform using both x and y values\n _toastRef_current, _toastRef_current1;\n if (!pointerStartRef.current || !dismissible) return;\n const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n if (isHighlighted) return;\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n var _props_swipeDirections;\n const swipeDirections = (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n let swipeAmount = {\n x: 0,\n y: 0\n };\n const getDampening = (delta)=>{\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n };\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = yDelta * getDampening(yDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = xDelta * getDampening(xDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n }\n }\n }\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }\n }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n \"aria-label\": closeButtonAriaLabel,\n \"data-disabled\": disabled,\n \"data-close-button\": true,\n onClick: disabled || !dismissible ? ()=>{} : ()=>{\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n },\n className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-icon\": \"\",\n className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n }, toast.promise || toast.type === 'loading' && !toast.icon ? toast.icon || getLoadingIcon() : null, toast.type !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-content\": \"\",\n className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n }, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-title\": \"\",\n className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-description\": \"\",\n className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-cancel\": true,\n style: toast.cancelButtonStyle || cancelButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-action\": true,\n style: toast.actionButtonStyle || actionButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n if (event.defaultPrevented) return;\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n const dirAttribute = document.documentElement.getAttribute('dir');\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction;\n }\n return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n const styles = {};\n [\n defaultOffset,\n mobileOffset\n ].forEach((offset, index)=>{\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n function assignAll(offset) {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n return styles;\n}\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState([]);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n });\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, []);\n return {\n toasts: activeToasts\n };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n const { id, invert, position = 'bottom-right', hotkey = [\n 'altKey',\n 'KeyT'\n ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;\n const [toasts, setToasts] = React.useState([]);\n const filteredToasts = React.useMemo(()=>{\n if (id) {\n return toasts.filter((toast)=>toast.toasterId === id);\n }\n return toasts.filter((toast)=>!toast.toasterId);\n }, [\n toasts,\n id\n ]);\n const possiblePositions = React.useMemo(()=>{\n return Array.from(new Set([\n position\n ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n }, [\n filteredToasts,\n position\n ]);\n const [heights, setHeights] = React.useState([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n const listRef = React.useRef(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef(null);\n const isFocusWithinRef = React.useRef(false);\n const removeToast = React.useCallback((toastToRemove)=>{\n setToasts((toasts)=>{\n var _toasts_find;\n if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n ToastState.dismiss(toastToRemove.id);\n }\n return toasts.filter(({ id })=>id !== toastToRemove.id);\n });\n }, []);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n // Prevent batching of other state updates\n requestAnimationFrame(()=>{\n setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n ...t,\n delete: true\n } : t));\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches })=>{\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches })=>{\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [\n theme\n ]);\n React.useEffect(()=>{\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n const handleKeyDown = (event)=>{\n var _listRef_current;\n const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key);\n if (isHotkeyPressed) {\n var _listRef_current1;\n setExpanded(true);\n (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n }\n if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return ()=>document.removeEventListener('keydown', handleKeyDown);\n }, [\n hotkey\n ]);\n React.useEffect(()=>{\n if (listRef.current) {\n return ()=>{\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [\n listRef.current\n ]);\n return(// Remove item from normal navigation flow, only available via hotkey\n /*#__PURE__*/ React.createElement(\"section\", {\n ref: ref,\n \"aria-label\": `${containerAriaLabel} ${hotkeyLabel}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: true\n }, possiblePositions.map((position, index)=>{\n var _heights_;\n const [y, x] = position.split('-');\n if (!filteredToasts.length) return null;\n return /*#__PURE__*/ React.createElement(\"ol\", {\n key: position,\n dir: dir === 'auto' ? getDocumentDirection() : dir,\n tabIndex: -1,\n ref: listRef,\n className: className,\n \"data-sonner-toaster\": true,\n \"data-sonner-theme\": actualTheme,\n \"data-y-position\": y,\n \"data-x-position\": x,\n style: {\n '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset)\n },\n onBlur: (event)=>{\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n }\n }\n },\n onFocus: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget;\n }\n },\n onMouseEnter: ()=>setExpanded(true),\n onMouseMove: ()=>setExpanded(true),\n onMouseLeave: ()=>{\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n },\n onDragEnd: ()=>setExpanded(false),\n onPointerDown: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n setInteracting(true);\n },\n onPointerUp: ()=>setInteracting(false)\n }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n var _toastOptions_duration, _toastOptions_closeButton;\n return /*#__PURE__*/ React.createElement(Toast, {\n key: toast.id,\n icons: icons,\n index: index,\n toast: toast,\n defaultRichColors: richColors,\n duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n className: toastOptions == null ? void 0 : toastOptions.className,\n descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n invert: invert,\n visibleToasts: visibleToasts,\n closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n interacting: interacting,\n position: position,\n style: toastOptions == null ? void 0 : toastOptions.style,\n unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n removeToast: removeToast,\n toasts: filteredToasts.filter((t)=>t.position == toast.position),\n heights: heights.filter((h)=>h.position == toast.position),\n setHeights: setHeights,\n expandByDefault: expand,\n gap: gap,\n expanded: expanded,\n swipeDirections: props.swipeDirections\n });\n }));\n })));\n});\n\nexport { Toaster, toast, useSonner };\n","import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport type Theme = \"dark\" | \"light\" | \"system\"\r\n\r\nexport type ThemeProviderProps = {\r\n /** Wrap your application */\r\n children: React.ReactNode\r\n /** Initial theme when nothing is stored yet. @default \"system\" */\r\n defaultTheme?: Theme\r\n /** localStorage key. @default \"nui-theme\" */\r\n storageKey?: string\r\n /** HTML attribute used to apply the theme. @default \"class\" */\r\n attribute?: \"class\" | \"data-theme\"\r\n /** Allow choosing \"system\" mode. @default true */\r\n enableSystem?: boolean\r\n /** Temporarily disable CSS transitions when the theme changes to prevent intermediate flash. @default false */\r\n disableTransitionOnChange?: boolean\r\n /** Force a specific theme (ignores user choice and localStorage). Useful for per-page overrides. */\r\n forcedTheme?: Theme\r\n /** CSP nonce for injected inline styles. */\r\n nonce?: string\r\n}\r\n\r\nexport type ThemeProviderState = {\r\n /** The stored theme preference (\"dark\" | \"light\" | \"system\"). */\r\n theme: Theme\r\n /** The actual resolved theme that is applied (\"dark\" | \"light\"). */\r\n resolvedTheme: \"dark\" | \"light\"\r\n /** Update the theme. */\r\n setTheme: (theme: Theme) => void\r\n /** All available themes. */\r\n themes: readonly Theme[]\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nconst THEMES: readonly Theme[] = [\"light\", \"dark\", \"system\"] as const\r\n\r\nfunction getSystemTheme(): \"dark\" | \"light\" {\r\n if (typeof window === \"undefined\") return \"light\"\r\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\"\r\n}\r\n\r\nfunction resolveTheme(theme: Theme): \"dark\" | \"light\" {\r\n return theme === \"system\" ? getSystemTheme() : theme\r\n}\r\n\r\n/**\r\n * Disable *all* CSS transitions for one frame so the theme switch is instant\r\n * (prevents elements from slowly fading between colours).\r\n */\r\nfunction disableTransitions(nonce?: string): () => void {\r\n if (typeof document === \"undefined\") return () => {}\r\n const style = document.createElement(\"style\")\r\n if (nonce) style.setAttribute(\"nonce\", nonce)\r\n style.appendChild(\r\n document.createTextNode(\r\n \"*, *::before, *::after { transition: none !important; animation: none !important; }\"\r\n )\r\n )\r\n document.head.appendChild(style)\r\n // Force a reflow so the style is applied immediately.\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n window.getComputedStyle(document.body)\r\n return () => {\r\n // Wait for the next frame before removing so the browser has painted the new colors.\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n document.head.removeChild(style)\r\n })\r\n })\r\n }\r\n}\r\n\r\nfunction applyTheme(\r\n resolved: \"dark\" | \"light\",\r\n attribute: \"class\" | \"data-theme\",\r\n) {\r\n const root = document.documentElement\r\n if (attribute === \"class\") {\r\n root.classList.remove(\"light\", \"dark\")\r\n root.classList.add(resolved)\r\n } else {\r\n root.setAttribute(\"data-theme\", resolved)\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Context\r\n// ---------------------------------------------------------------------------\r\n\r\nconst ThemeProviderContext = createContext<ThemeProviderState | undefined>(undefined)\r\n\r\n// ---------------------------------------------------------------------------\r\n// Provider\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"system\",\r\n storageKey = \"nui-theme\",\r\n attribute = \"class\",\r\n enableSystem = true,\r\n disableTransitionOnChange = false,\r\n forcedTheme,\r\n nonce,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<Theme>(() => {\r\n if (typeof window === \"undefined\") return defaultTheme\r\n const stored = localStorage.getItem(storageKey) as Theme | null\r\n if (stored && THEMES.includes(stored)) return stored\r\n return defaultTheme\r\n })\r\n\r\n const [resolvedTheme, setResolvedTheme] = useState<\"dark\" | \"light\">(() =>\r\n resolveTheme(forcedTheme ?? theme)\r\n )\r\n\r\n // Keep a ref so the media-query listener always sees the latest theme.\r\n const themeRef = useRef(theme)\r\n themeRef.current = theme\r\n\r\n // Apply whenever theme, forcedTheme, or system preference changes.\r\n const apply = useCallback(() => {\r\n const active = forcedTheme ?? themeRef.current\r\n const resolved = resolveTheme(active)\r\n setResolvedTheme(resolved)\r\n\r\n let enableTransitions: (() => void) | undefined\r\n if (disableTransitionOnChange) {\r\n enableTransitions = disableTransitions(nonce)\r\n }\r\n\r\n applyTheme(resolved, attribute)\r\n enableTransitions?.()\r\n }, [forcedTheme, attribute, disableTransitionOnChange, nonce])\r\n\r\n // React to theme state changes.\r\n useEffect(() => {\r\n apply()\r\n }, [theme, forcedTheme, apply])\r\n\r\n // Listen to OS theme changes when theme === \"system\".\r\n useEffect(() => {\r\n if (!enableSystem) return\r\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\")\r\n const handler = () => {\r\n if ((forcedTheme ?? themeRef.current) === \"system\") {\r\n apply()\r\n }\r\n }\r\n mq.addEventListener(\"change\", handler)\r\n return () => mq.removeEventListener(\"change\", handler)\r\n }, [enableSystem, forcedTheme, apply])\r\n\r\n // Listen for storage changes from other tabs.\r\n useEffect(() => {\r\n const handler = (e: StorageEvent) => {\r\n if (e.key === storageKey && e.newValue) {\r\n const newTheme = e.newValue as Theme\r\n if (THEMES.includes(newTheme)) {\r\n setThemeState(newTheme)\r\n }\r\n }\r\n }\r\n window.addEventListener(\"storage\", handler)\r\n return () => window.removeEventListener(\"storage\", handler)\r\n }, [storageKey])\r\n\r\n const setTheme = useCallback(\r\n (newTheme: Theme) => {\r\n if (!enableSystem && newTheme === \"system\") return\r\n localStorage.setItem(storageKey, newTheme)\r\n setThemeState(newTheme)\r\n },\r\n [storageKey, enableSystem]\r\n )\r\n\r\n const themes = useMemo<readonly Theme[]>(\r\n () => (enableSystem ? THEMES : ([\"light\", \"dark\"] as const)),\r\n [enableSystem]\r\n )\r\n\r\n const value = useMemo<ThemeProviderState>(\r\n () => ({ theme: forcedTheme ?? theme, resolvedTheme, setTheme, themes }),\r\n [forcedTheme, theme, resolvedTheme, setTheme, themes]\r\n )\r\n\r\n return (\r\n <ThemeProviderContext.Provider value={value}>\r\n {children}\r\n </ThemeProviderContext.Provider>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Hook\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function useTheme(): ThemeProviderState {\r\n const context = useContext(ThemeProviderContext)\r\n if (context === undefined) {\r\n throw new Error(\"useTheme must be used within a <ThemeProvider>\")\r\n }\r\n return context\r\n}\r\n","import { Toaster as Sonner, toast } from \"sonner\"\r\nimport { useTheme } from \"@/components/ui/theme-provider\"\r\n\r\ntype ToasterProps = React.ComponentProps<typeof Sonner>\r\n\r\nconst Toaster = ({ theme: themeProp, ...props }: ToasterProps) => {\r\n let resolvedSonnerTheme = themeProp\r\n try {\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n const { resolvedTheme } = useTheme()\r\n if (!themeProp) {\r\n resolvedSonnerTheme = resolvedTheme as ToasterProps[\"theme\"]\r\n }\r\n } catch {\r\n // ThemeProvider is not available — fall back to prop or \"system\"\r\n if (!resolvedSonnerTheme) resolvedSonnerTheme = \"system\"\r\n }\r\n\r\n return (\r\n <Sonner\r\n theme={resolvedSonnerTheme}\r\n className=\"toaster group\"\r\n toastOptions={{\r\n classNames: {\r\n toast:\r\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\r\n description: \"group-[.toast]:text-muted-foreground\",\r\n actionButton:\r\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\r\n cancelButton:\r\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\r\n },\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Toaster, toast }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface EmptyStateProps {\r\n icon?: React.ReactNode\r\n title: string\r\n description?: string\r\n action?: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction EmptyState({\r\n icon,\r\n title,\r\n description,\r\n action,\r\n className,\r\n}: EmptyStateProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <div className=\"mb-4 text-muted-foreground\">{icon}</div>\r\n )}\r\n <h3 className=\"text-lg font-semibold\">{title}</h3>\r\n {description && (\r\n <p className=\"mt-1 text-sm text-muted-foreground max-w-sm\">\r\n {description}\r\n </p>\r\n )}\r\n {action && <div className=\"mt-4\">{action}</div>}\r\n </div>\r\n )\r\n}\r\n\r\nexport { EmptyState }\r\n","\r\n// Custom Navigation\r\nimport * as React from \"react\"\r\nimport { ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\">\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\r\nBreadcrumb.displayName = \"Breadcrumb\"\r\n\r\nconst BreadcrumbList = React.forwardRef<\r\n HTMLOListElement,\r\n React.ComponentPropsWithoutRef<\"ol\">\r\n>(({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbList.displayName = \"BreadcrumbList\"\r\n\r\nconst BreadcrumbItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentPropsWithoutRef<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n className={cn(\"inline-flex items-center gap-1.5\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\"\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(\"transition-colors hover:text-foreground\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\r\n\r\nconst BreadcrumbPage = React.forwardRef<\r\n HTMLSpanElement,\r\n React.ComponentPropsWithoutRef<\"span\">\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\r\n\r\nconst BreadcrumbSeparator = ({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"li\">) => (\r\n <li\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className)}\r\n {...props}\r\n >\r\n {children ?? <ChevronRight />}\r\n </li>\r\n)\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\r\n\r\nconst BreadcrumbEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <span className=\"h-4 w-4\">...</span>\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n)\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n}\r\n","import * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { type ButtonProps, buttonVariants } from \"@/components/ui/button\"\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n)\r\nPagination.displayName = \"Pagination\"\r\n\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\"flex flex-row items-center gap-1\", className)}\r\n {...props}\r\n />\r\n))\r\nPaginationContent.displayName = \"PaginationContent\"\r\n\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n))\r\nPaginationItem.displayName = \"PaginationItem\"\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean\r\n} & Pick<ButtonProps, \"size\"> &\r\n React.ComponentProps<\"a\">\r\n\r\nconst PaginationLink = ({\r\n className,\r\n isActive,\r\n size = \"icon\",\r\n ...props\r\n}: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\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 {...props}\r\n />\r\n)\r\nPaginationLink.displayName = \"PaginationLink\"\r\n\r\nconst PaginationPrevious = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pl-2.5\", className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n)\r\nPaginationPrevious.displayName = \"PaginationPrevious\"\r\n\r\nconst PaginationNext = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pr-2.5\", className)}\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n)\r\nPaginationNext.displayName = \"PaginationNext\"\r\n\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n)\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n}\r\n","import * as React from \"react\"\r\nimport { Check } from \"lucide-react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface StepProps {\r\n title: string\r\n description?: string\r\n}\r\n\r\nexport interface StepperProps {\r\n steps: StepProps[]\r\n activeStep: number\r\n orientation?: \"horizontal\" | \"vertical\"\r\n className?: string\r\n}\r\n\r\nfunction Stepper({\r\n steps,\r\n activeStep,\r\n orientation = \"horizontal\",\r\n className,\r\n}: StepperProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex\",\r\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row items-center\",\r\n className\r\n )}\r\n >\r\n {steps.map((step, index) => {\r\n const isCompleted = index < activeStep\r\n const isCurrent = index === activeStep\r\n const isLast = index === steps.length - 1\r\n\r\n return (\r\n <React.Fragment key={index}>\r\n <div\r\n className={cn(\r\n \"flex items-center\",\r\n orientation === \"vertical\" && \"flex-row\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"flex h-10 w-10 items-center justify-center rounded-full border-2 font-semibold transition-colors\",\r\n isCompleted && \"border-primary bg-primary text-primary-foreground\",\r\n isCurrent && \"border-primary text-primary\",\r\n !isCompleted && !isCurrent && \"border-muted-foreground/30 text-muted-foreground\"\r\n )}\r\n >\r\n {isCompleted ? <Check className=\"h-5 w-5\" /> : index + 1}\r\n </div>\r\n <div className={cn(\"ml-3\", orientation === \"horizontal\" && \"hidden sm:block\")}>\r\n <p\r\n className={cn(\r\n \"text-sm font-medium\",\r\n isCurrent && \"text-foreground\",\r\n !isCurrent && \"text-muted-foreground\"\r\n )}\r\n >\r\n {step.title}\r\n </p>\r\n {step.description && (\r\n <p className=\"text-xs text-muted-foreground\">{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div\r\n className={cn(\r\n \"flex-1\",\r\n orientation === \"horizontal\"\r\n ? \"mx-4 h-0.5 min-w-[3rem]\"\r\n : \"ml-5 my-2 w-0.5 min-h-[2rem]\",\r\n isCompleted ? \"bg-primary\" : \"bg-muted-foreground/30\"\r\n )}\r\n />\r\n )}\r\n </React.Fragment>\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nexport { Stepper }\r\n","import * as React from \"react\"\r\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\r\nimport { cva } from \"class-variance-authority\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst NavigationMenu = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <NavigationMenuViewport />\r\n </NavigationMenuPrimitive.Root>\r\n))\r\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\r\n\r\nconst NavigationMenuList = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\r\n\r\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\r\n\r\nconst navigationMenuTriggerStyle = cva(\r\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\r\n)\r\n\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Trigger\r\n ref={ref}\r\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\r\n {...props}\r\n >\r\n {children}{\" \"}\r\n <ChevronDown\r\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\r\n aria-hidden=\"true\"\r\n />\r\n </NavigationMenuPrimitive.Trigger>\r\n))\r\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\r\n\r\nconst NavigationMenuContent = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\r\n\r\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\r\n\r\nconst NavigationMenuViewport = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\r\n <NavigationMenuPrimitive.Viewport\r\n className={cn(\r\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nNavigationMenuViewport.displayName =\r\n NavigationMenuPrimitive.Viewport.displayName\r\n\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Indicator\r\n ref={ref}\r\n className={cn(\r\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\r\n </NavigationMenuPrimitive.Indicator>\r\n))\r\nNavigationMenuIndicator.displayName =\r\n NavigationMenuPrimitive.Indicator.displayName\r\n\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst ContextMenu = ContextMenuPrimitive.Root\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\r\n\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n))\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\r\n\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\r\n\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n))\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\r\n\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\r\n\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n))\r\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n))\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\r\n\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\r\n\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\r\n {...props}\r\n />\r\n))\r\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\r\n\r\nconst ContextMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n}\r\n","import * as React from \"react\"\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst HoverCard = HoverCardPrimitive.Root\r\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\r\n\r\nconst HoverCardContent = React.forwardRef<\r\n React.ElementRef<typeof HoverCardPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <HoverCardPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\r\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import * as React from \"react\"\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\"\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n return context\r\n}\r\n\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation,\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n }\r\n)\r\nCarousel.displayName = \"Carousel\"\r\n\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n})\r\nCarouselContent.displayName = \"CarouselContent\"\r\n\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel()\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\r\n \"min-w-0 shrink-0 grow-0 basis-full\",\r\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCarouselItem.displayName = \"CarouselItem\"\r\n\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselPrevious.displayName = \"CarouselPrevious\"\r\n\r\nconst CarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselNext.displayName = \"CarouselNext\"\r\n\r\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n}\r\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\r\nimport {\r\n flexRender,\r\n getCoreRowModel,\r\n getFilteredRowModel,\r\n getPaginationRowModel,\r\n getSortedRowModel,\r\n useReactTable,\r\n type ColumnDef,\r\n type ColumnFiltersState,\r\n type SortingState,\r\n type VisibilityState,\r\n} from \"@tanstack/react-table\"\r\nimport { ArrowUpDown, ChevronLeft, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n} from \"@/components/ui/table\"\r\n\r\nexport interface DataTableProps<TData, TValue> {\r\n columns: ColumnDef<TData, TValue>[]\r\n data: TData[]\r\n searchKey?: string\r\n searchPlaceholder?: string\r\n pageSize?: number\r\n}\r\n\r\nfunction DataTable<TData, TValue>({\r\n columns,\r\n data,\r\n searchKey,\r\n searchPlaceholder = \"Search...\",\r\n pageSize = 10,\r\n}: DataTableProps<TData, TValue>) {\r\n const [sorting, setSorting] = React.useState<SortingState>([])\r\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\r\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\r\n const [rowSelection, setRowSelection] = React.useState({})\r\n\r\n const table = useReactTable({\r\n data,\r\n columns,\r\n onSortingChange: setSorting,\r\n onColumnFiltersChange: setColumnFilters,\r\n getCoreRowModel: getCoreRowModel(),\r\n getPaginationRowModel: getPaginationRowModel(),\r\n getSortedRowModel: getSortedRowModel(),\r\n getFilteredRowModel: getFilteredRowModel(),\r\n onColumnVisibilityChange: setColumnVisibility,\r\n onRowSelectionChange: setRowSelection,\r\n state: {\r\n sorting,\r\n columnFilters,\r\n columnVisibility,\r\n rowSelection,\r\n },\r\n initialState: {\r\n pagination: {\r\n pageSize,\r\n },\r\n },\r\n })\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n {searchKey && (\r\n <div className=\"flex items-center gap-2\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={(table.getColumn(searchKey)?.getFilterValue() as string) ?? \"\"}\r\n onChange={(event) =>\r\n table.getColumn(searchKey)?.setFilterValue(event.target.value)\r\n }\r\n className=\"max-w-sm\"\r\n />\r\n </div>\r\n )}\r\n <div className=\"rounded-md border\">\r\n <Table>\r\n <TableHeader>\r\n {table.getHeaderGroups().map((headerGroup) => (\r\n <TableRow key={headerGroup.id}>\r\n {headerGroup.headers.map((header) => (\r\n <TableHead key={header.id}>\r\n {header.isPlaceholder\r\n ? null\r\n : flexRender(\r\n header.column.columnDef.header,\r\n header.getContext()\r\n )}\r\n </TableHead>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </TableHeader>\r\n <TableBody>\r\n {table.getRowModel().rows?.length ? (\r\n table.getRowModel().rows.map((row) => (\r\n <TableRow\r\n key={row.id}\r\n data-state={row.getIsSelected() && \"selected\"}\r\n >\r\n {row.getVisibleCells().map((cell) => (\r\n <TableCell key={cell.id}>\r\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))\r\n ) : (\r\n <TableRow>\r\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\r\n No results.\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n <div className=\"flex items-center justify-between px-2\">\r\n <div className=\"text-sm text-muted-foreground\">\r\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\r\n {table.getPageCount()}\r\n </div>\r\n <div className=\"flex items-center space-x-2\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => table.previousPage()}\r\n disabled={!table.getCanPreviousPage()}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n Previous\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => table.nextPage()}\r\n disabled={!table.getCanNextPage()}\r\n >\r\n Next\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// Helper for sortable header\r\nfunction DataTableColumnHeader({\r\n column,\r\n title,\r\n className,\r\n}: {\r\n column: any\r\n title: string\r\n className?: string\r\n}) {\r\n if (!column.getCanSort()) {\r\n return <div className={cn(className)}>{title}</div>\r\n }\r\n\r\n return (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className={cn(\"-ml-3 h-8\", className)}\r\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\r\n >\r\n {title}\r\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\r\n </Button>\r\n )\r\n}\r\n\r\nexport { DataTable, DataTableColumnHeader }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface CodeBlockProps {\r\n code: string\r\n language?: string\r\n showLineNumbers?: boolean\r\n showCopy?: boolean\r\n className?: string\r\n}\r\n\r\n// ---- lightweight regex tokenizer ------------------------------------------\r\n\r\ntype TokenType =\r\n | \"comment\"\r\n | \"string\"\r\n | \"keyword\"\r\n | \"number\"\r\n | \"function\"\r\n | \"tag\"\r\n | \"attr\"\r\n | \"punctuation\"\r\n | \"operator\"\r\n | \"plain\"\r\n\r\ninterface Token {\r\n type: TokenType\r\n value: string\r\n}\r\n\r\nconst KEYWORDS = new Set([\r\n \"abstract\",\"as\",\"async\",\"await\",\"break\",\"case\",\"catch\",\"class\",\"const\",\r\n \"continue\",\"debugger\",\"default\",\"delete\",\"do\",\"else\",\"enum\",\"export\",\r\n \"extends\",\"false\",\"finally\",\"for\",\"from\",\"function\",\"get\",\"if\",\"implements\",\r\n \"import\",\"in\",\"instanceof\",\"interface\",\"let\",\"new\",\"null\",\"of\",\"package\",\r\n \"private\",\"protected\",\"public\",\"return\",\"set\",\"static\",\"super\",\"switch\",\r\n \"this\",\"throw\",\"true\",\"try\",\"type\",\"typeof\",\"undefined\",\"var\",\"void\",\r\n \"while\",\"with\",\"yield\",\r\n])\r\n\r\nconst CSS_KEYWORDS = new Set([\r\n \"display\",\"flex\",\"grid\",\"none\",\"block\",\"inline\",\"relative\",\"absolute\",\r\n \"fixed\",\"sticky\",\"hidden\",\"visible\",\"auto\",\"inherit\",\"initial\",\"unset\",\r\n \"important\",\"solid\",\"dashed\",\"dotted\",\"transparent\",\"center\",\"left\",\r\n \"right\",\"top\",\"bottom\",\"normal\",\"bold\",\"italic\",\"nowrap\",\"wrap\",\r\n])\r\n\r\nfunction tokenize(code: string, language: string): Token[][] {\r\n const lines = code.split(\"\\n\")\r\n const isCSS = language === \"css\" || language === \"scss\" || language === \"less\"\r\n const isHTML = language === \"html\" || language === \"xml\" || language === \"svg\"\r\n const isJSON = language === \"json\"\r\n const isBash = language === \"bash\" || language === \"sh\" || language === \"shell\" || language === \"zsh\"\r\n\r\n return lines.map((line) => {\r\n const tokens: Token[] = []\r\n let i = 0\r\n\r\n while (i < line.length) {\r\n // --- multi-char patterns ------------------------------------------------\r\n\r\n // line comment //\r\n if (!isCSS && !isJSON && line[i] === \"/\" && line[i + 1] === \"/\") {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n continue\r\n }\r\n\r\n // bash comment #\r\n if (isBash && line[i] === \"#\") {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n continue\r\n }\r\n\r\n // block comment start /* (single-line only for simplicity)\r\n if (line[i] === \"/\" && line[i + 1] === \"*\") {\r\n const end = line.indexOf(\"*/\", i + 2)\r\n if (end !== -1) {\r\n tokens.push({ type: \"comment\", value: line.slice(i, end + 2) })\r\n i = end + 2\r\n } else {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n }\r\n continue\r\n }\r\n\r\n // template literal\r\n if (line[i] === \"`\") {\r\n let j = i + 1\r\n while (j < line.length && line[j] !== \"`\") {\r\n if (line[j] === \"\\\\\") j++\r\n j++\r\n }\r\n tokens.push({ type: \"string\", value: line.slice(i, j + 1) })\r\n i = j + 1\r\n continue\r\n }\r\n\r\n // strings\r\n if (line[i] === '\"' || line[i] === \"'\") {\r\n const quote = line[i]\r\n let j = i + 1\r\n while (j < line.length && line[j] !== quote) {\r\n if (line[j] === \"\\\\\") j++\r\n j++\r\n }\r\n tokens.push({ type: \"string\", value: line.slice(i, j + 1) })\r\n i = j + 1\r\n continue\r\n }\r\n\r\n // numbers\r\n if (/[0-9]/.test(line[i]) && (i === 0 || /[\\s,\\(\\[:=+\\-*/<>!&|^~?{]/.test(line[i - 1]))) {\r\n let j = i\r\n while (j < line.length && /[0-9a-fA-FxXoObB._eE+\\-n]/.test(line[j])) j++\r\n tokens.push({ type: \"number\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n // JSX/HTML tags <Tag or </Tag or />\r\n if ((line[i] === \"<\" && /[a-zA-Z\\/!]/.test(line[i + 1] || \"\")) || (line[i] === \"/\" && line[i + 1] === \">\")) {\r\n if (line[i] === \"/\" && line[i + 1] === \">\") {\r\n tokens.push({ type: \"punctuation\", value: \"/>\" })\r\n i += 2\r\n continue\r\n }\r\n const closing = line[i + 1] === \"/\"\r\n let j = closing ? i + 2 : i + 1\r\n while (j < line.length && /[a-zA-Z0-9.\\-_]/.test(line[j])) j++\r\n tokens.push({ type: \"punctuation\", value: line[i] + (closing ? \"/\" : \"\") })\r\n const tagName = line.slice(closing ? i + 2 : i + 1, j)\r\n if (tagName) tokens.push({ type: \"tag\", value: tagName })\r\n i = j\r\n continue\r\n }\r\n\r\n // closing >\r\n if (line[i] === \">\") {\r\n tokens.push({ type: \"punctuation\", value: \">\" })\r\n i++\r\n continue\r\n }\r\n\r\n // words (identifiers / keywords)\r\n if (/[a-zA-Z_$@]/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /[a-zA-Z0-9_$\\-]/.test(line[j])) j++\r\n const word = line.slice(i, j)\r\n\r\n if (isCSS && CSS_KEYWORDS.has(word)) {\r\n tokens.push({ type: \"keyword\", value: word })\r\n } else if (isHTML || isCSS) {\r\n // check if it's an attribute (followed by =)\r\n const rest = line.slice(j).trimStart()\r\n if (rest[0] === \"=\" || rest[0] === \":\") {\r\n tokens.push({ type: \"attr\", value: word })\r\n } else {\r\n tokens.push({ type: \"plain\", value: word })\r\n }\r\n } else if (KEYWORDS.has(word)) {\r\n tokens.push({ type: \"keyword\", value: word })\r\n } else if (!isJSON && line[j] === \"(\") {\r\n tokens.push({ type: \"function\", value: word })\r\n } else if (!isJSON && /^[A-Z]/.test(word)) {\r\n tokens.push({ type: \"tag\", value: word })\r\n } else {\r\n tokens.push({ type: \"plain\", value: word })\r\n }\r\n i = j\r\n continue\r\n }\r\n\r\n // operators\r\n if (/[=+\\-*/%<>!&|^~?:]/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /[=+\\-*/%<>!&|^~?:]/.test(line[j])) j++\r\n tokens.push({ type: \"operator\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n // punctuation\r\n if (/[{}()\\[\\],;.]/.test(line[i])) {\r\n tokens.push({ type: \"punctuation\", value: line[i] })\r\n i++\r\n continue\r\n }\r\n\r\n // whitespace & other\r\n if (/\\s/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /\\s/.test(line[j])) j++\r\n tokens.push({ type: \"plain\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n tokens.push({ type: \"plain\", value: line[i] })\r\n i++\r\n }\r\n\r\n return tokens\r\n })\r\n}\r\n\r\n// ---- color map (uses CSS variables with semantic defaults) -----------------\r\n\r\nconst tokenColors: Record<TokenType, string> = {\r\n comment: \"var(--cb-comment, #6a9955)\",\r\n string: \"var(--cb-string, #ce9178)\",\r\n keyword: \"var(--cb-keyword, #569cd6)\",\r\n number: \"var(--cb-number, #b5cea8)\",\r\n function: \"var(--cb-function, #dcdcaa)\",\r\n tag: \"var(--cb-tag, #4ec9b0)\",\r\n attr: \"var(--cb-attr, #9cdcfe)\",\r\n punctuation: \"var(--cb-punctuation, #d4d4d4)\",\r\n operator: \"var(--cb-operator, #d4d4d4)\",\r\n plain: \"var(--cb-plain, #d4d4d4)\",\r\n}\r\n\r\n// ---- component ------------------------------------------------------------\r\n\r\nfunction CodeBlock({\r\n code,\r\n language = \"tsx\",\r\n showLineNumbers = false,\r\n showCopy = true,\r\n className,\r\n}: CodeBlockProps) {\r\n const [copied, setCopied] = React.useState(false)\r\n const trimmed = code.trim()\r\n const tokenLines = React.useMemo(() => tokenize(trimmed, language), [trimmed, language])\r\n\r\n const handleCopy = async () => {\r\n try {\r\n await navigator.clipboard.writeText(trimmed)\r\n setCopied(true)\r\n setTimeout(() => setCopied(false), 2000)\r\n } catch { /* clipboard unavailable */ }\r\n }\r\n\r\n return (\r\n <div className={cn(\"relative group\", className)}>\r\n {showCopy && (\r\n <button\r\n type=\"button\"\r\n onClick={handleCopy}\r\n className=\"absolute top-3 right-3 z-10 p-1.5 rounded-md bg-white/10 backdrop-blur text-white/60 hover:text-white opacity-0 group-hover:opacity-100 transition-opacity text-xs\"\r\n aria-label=\"Copy code\"\r\n >\r\n {copied ? (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>\r\n ) : (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>\r\n )}\r\n </button>\r\n )}\r\n <pre\r\n className=\"overflow-x-auto rounded-lg p-4 text-[13px] leading-relaxed font-mono\"\r\n style={{ background: \"var(--cb-bg, #1e1e2e)\", color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n {tokenLines.map((tokens, lineIdx) => (\r\n <div key={lineIdx}>\r\n {showLineNumbers && (\r\n <span\r\n className=\"inline-block w-8 select-none text-right mr-4 opacity-40\"\r\n style={{ color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n {lineIdx + 1}\r\n </span>\r\n )}\r\n {tokens.map((tok, tokIdx) => (\r\n <span key={tokIdx} style={{ color: tokenColors[tok.type] }}>\r\n {tok.value}\r\n </span>\r\n ))}\r\n </div>\r\n ))}\r\n </pre>\r\n </div>\r\n )\r\n}\r\n\r\nexport { CodeBlock }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ============ HEADING ============\r\nconst headingVariants = cva(\"font-bold tracking-tight\", {\r\n variants: {\r\n level: {\r\n 1: \"text-2xl lg:text-3xl\",\r\n 2: \"text-xl lg:text-2xl\",\r\n 3: \"text-lg lg:text-xl\",\r\n 4: \"text-base lg:text-lg\",\r\n 5: \"text-sm lg:text-base\",\r\n 6: \"text-xs lg:text-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n level: 2,\r\n },\r\n})\r\n\r\nexport interface HeadingProps\r\n extends React.HTMLAttributes<HTMLHeadingElement>,\r\n VariantProps<typeof headingVariants> {\r\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"\r\n}\r\n\r\nfunction Heading({ className, level = 2, as, children, ...props }: HeadingProps) {\r\n const Tag = as || (`h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\")\r\n return (\r\n <Tag className={cn(headingVariants({ level }), className)} {...props}>\r\n {children}\r\n </Tag>\r\n )\r\n}\r\n\r\n// ============ TEXT ============\r\nconst textVariants = cva(\"\", {\r\n variants: {\r\n size: {\r\n xs: \"text-xs\",\r\n sm: \"text-sm\",\r\n base: \"text-base\",\r\n lg: \"text-lg\",\r\n xl: \"text-xl\",\r\n },\r\n weight: {\r\n normal: \"font-normal\",\r\n medium: \"font-medium\",\r\n semibold: \"font-semibold\",\r\n bold: \"font-bold\",\r\n },\r\n variant: {\r\n default: \"text-foreground\",\r\n muted: \"text-muted-foreground\",\r\n primary: \"text-primary\",\r\n destructive: \"text-destructive\",\r\n success: \"text-green-600 dark:text-green-400\",\r\n },\r\n leading: {\r\n tight: \"leading-tight\",\r\n normal: \"leading-normal\",\r\n relaxed: \"leading-relaxed\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"base\",\r\n weight: \"normal\",\r\n variant: \"default\",\r\n leading: \"normal\",\r\n },\r\n})\r\n\r\nexport interface TextProps extends VariantProps<typeof textVariants> {\r\n as?: \"p\" | \"span\" | \"div\"\r\n className?: string\r\n children?: React.ReactNode\r\n}\r\n\r\nfunction Text({ className, size, weight, variant, leading, as: Tag = \"p\", children, ...props }: TextProps) {\r\n return (\r\n <Tag className={cn(textVariants({ size, weight, variant, leading }), className)} {...props}>\r\n {children}\r\n </Tag>\r\n )\r\n}\r\n\r\n// ============ CODE ============\r\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> { }\r\n\r\nfunction Code({ className, ...props }: CodeProps) {\r\n return (\r\n <code\r\n className={cn(\r\n \"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n// ============ BLOCKQUOTE ============\r\nexport interface BlockquoteProps extends React.HTMLAttributes<HTMLQuoteElement> { }\r\n\r\nfunction Blockquote({ className, ...props }: BlockquoteProps) {\r\n return (\r\n <blockquote\r\n className={cn(\r\n \"border-l-4 border-primary pl-4 italic text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n// ============ LEAD (Subtitle) ============\r\nexport interface LeadProps extends React.HTMLAttributes<HTMLParagraphElement> { }\r\n\r\nfunction Lead({ className, ...props }: LeadProps) {\r\n return (\r\n <p className={cn(\"text-xl text-muted-foreground\", className)} {...props} />\r\n )\r\n}\r\n\r\n// ============ MUTED ============\r\nexport interface MutedProps extends React.HTMLAttributes<HTMLParagraphElement> { }\r\n\r\nfunction Muted({ className, ...props }: MutedProps) {\r\n return (\r\n <p className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n )\r\n}\r\n\r\nexport { Heading, headingVariants, Text, textVariants, Code, Blockquote, Lead, Muted }\r\n","import * as React from \"react\"\r\nimport { ResponsiveContainer, Tooltip as RechartsTooltip, Legend as RechartsLegend } from \"recharts\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport const ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"w-full h-full min-h-[300px]\", className)}\r\n {...props}\r\n >\r\n <ResponsiveContainer width=\"100%\" height=\"100%\">\r\n {children as React.ReactElement}\r\n </ResponsiveContainer>\r\n </div>\r\n))\r\nChartContainer.displayName = \"ChartContainer\"\r\n\r\nexport const ChartTooltip = RechartsTooltip\r\nexport const ChartLegend = RechartsLegend\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Timeline = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex flex-col space-y-4\", className)} {...props} />\r\n )\r\n)\r\nTimeline.displayName = \"Timeline\"\r\n\r\nconst TimelineItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"relative flex gap-4 pb-4 last:pb-0\", className)} {...props} />\r\n )\r\n)\r\nTimelineItem.displayName = \"TimelineItem\"\r\n\r\nconst TimelineIcon = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full border bg-background text-primary shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nTimelineIcon.displayName = \"TimelineIcon\"\r\n\r\nconst TimelineConnector = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"absolute left-4 top-8 -bottom-4 w-px bg-border\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nTimelineConnector.displayName = \"TimelineConnector\"\r\n\r\nconst TimelineContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex-1 space-y-1 pt-1\", className)} {...props} />\r\n )\r\n)\r\nTimelineContent.displayName = \"TimelineContent\"\r\n\r\nexport { Timeline, TimelineItem, TimelineIcon, TimelineConnector, TimelineContent }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/* \r\n * AppShell Layout\r\n * Structure:\r\n * - AppShell (Root, Grid)\r\n * - Sidebar (Left)\r\n * - Header (Top)\r\n * - Main (Content)\r\n */\r\n\r\ninterface AppShellProps extends React.HTMLAttributes<HTMLDivElement> { }\r\n\r\nconst AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid min-h-screen w-full lg:grid-cols-[280px_1fr]\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n }\r\n)\r\nAppShell.displayName = \"AppShell\"\r\n\r\nconst Sidebar = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"hidden border-r bg-muted/40 lg:block dark:bg-muted/10\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex h-full max-h-screen flex-col gap-2\">\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n)\r\nSidebar.displayName = \"Sidebar\"\r\n\r\nconst Header = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <header\r\n ref={ref}\r\n className={cn(\r\n \"flex h-14 items-center gap-4 border-b bg-background px-6 lg:h-[60px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </header>\r\n )\r\n)\r\nHeader.displayName = \"Header\"\r\n\r\nconst Main = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <main\r\n ref={ref}\r\n className={cn(\"flex flex-1 flex-col gap-4 p-4 lg:gap-6 lg:p-6\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </main>\r\n )\r\n)\r\nMain.displayName = \"Main\"\r\n\r\nexport { AppShell, Sidebar, Header, Main }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\r\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\r\n\r\ninterface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title: string\r\n value: string | number\r\n description?: string\r\n trend?: number // Percentage change\r\n trendLabel?: string\r\n icon?: React.ReactNode\r\n}\r\n\r\nfunction MetricCard({\r\n title,\r\n value,\r\n description,\r\n trend,\r\n trendLabel,\r\n icon,\r\n className,\r\n ...props\r\n}: MetricCardProps) {\r\n return (\r\n <Card className={cn(\"overflow-hidden\", className)} {...props}>\r\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\r\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">{title}</CardTitle>\r\n {icon && <div className=\"text-muted-foreground\">{icon}</div>}\r\n </CardHeader>\r\n <CardContent>\r\n <div className=\"text-2xl font-bold\">{value}</div>\r\n {(description || trend !== undefined) && (\r\n <div className=\"text-xs flex items-center gap-1 mt-1 text-muted-foreground\">\r\n {trend !== undefined && (\r\n <span\r\n className={cn(\r\n \"flex items-center font-medium\",\r\n trend > 0 ? \"text-green-500\" : trend < 0 ? \"text-red-500\" : \"text-muted-foreground\"\r\n )}\r\n >\r\n {trend > 0 ? <TrendingUp className=\"mr-1 h-3 w-3\" /> : trend < 0 ? <TrendingDown className=\"mr-1 h-3 w-3\" /> : <Minus className=\"mr-1 h-3 w-3\" />}\r\n {trend > 0 ? \"+\" : \"\"}{trend}%\r\n </span>\r\n )}\r\n {trendLabel && <span>{trendLabel}</span>}\r\n {description && !trend && <span>{description}</span>}\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport { MetricCard }\r\n","import * as React from \"react\"\r\nimport { Check, Copy } from \"lucide-react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Label } from \"@/components/ui/label\"\r\n\r\ninterface CopyInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string\r\n value: string\r\n}\r\n\r\nconst CopyInput = React.forwardRef<HTMLInputElement, CopyInputProps>(\r\n ({ className, label, value, ...props }, ref) => {\r\n const [hasCopied, setHasCopied] = React.useState(false)\r\n\r\n const onCopy = () => {\r\n navigator.clipboard.writeText(value)\r\n setHasCopied(true)\r\n setTimeout(() => setHasCopied(false), 2000)\r\n }\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n {label && <Label>{label}</Label>}\r\n <div className=\"flex gap-2 relative\">\r\n <Input\r\n ref={ref}\r\n value={value}\r\n readOnly\r\n className={cn(\"pr-10 font-mono text-sm\", className)}\r\n {...props}\r\n />\r\n <Button\r\n size=\"icon\"\r\n variant=\"outline\"\r\n className=\"shrink-0\"\r\n onClick={onCopy}\r\n >\r\n {hasCopied ? (\r\n <Check className=\"h-4 w-4 text-green-500\" />\r\n ) : (\r\n <Copy className=\"h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\nCopyInput.displayName = \"CopyInput\"\r\n\r\nexport { CopyInput }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface JsonViewerProps extends React.HTMLAttributes<HTMLPreElement> {\r\n data: any\r\n}\r\n\r\nconst JsonViewer = React.forwardRef<HTMLPreElement, JsonViewerProps>(\r\n ({ className, data, ...props }, ref) => {\r\n return (\r\n <pre\r\n ref={ref}\r\n className={cn(\r\n \"rounded-lg border bg-muted p-4 overflow-auto text-xs font-mono text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {JSON.stringify(data, null, 2)}\r\n </pre>\r\n )\r\n }\r\n)\r\nJsonViewer.displayName = \"JsonViewer\"\r\n\r\nexport { JsonViewer }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst statusBadgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n status: {\r\n neutral: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n success: \"border-transparent bg-green-500/15 text-green-700 dark:text-green-400 hover:bg-green-500/25\",\r\n warning: \"border-transparent bg-yellow-500/15 text-yellow-700 dark:text-yellow-400 hover:bg-yellow-500/25\",\r\n error: \"border-transparent bg-red-500/15 text-red-700 dark:text-red-400 hover:bg-red-500/25\",\r\n info: \"border-transparent bg-blue-500/15 text-blue-700 dark:text-blue-400 hover:bg-blue-500/25\",\r\n },\r\n },\r\n defaultVariants: {\r\n status: \"neutral\",\r\n },\r\n }\r\n)\r\n\r\nexport interface StatusBadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof statusBadgeVariants> {\r\n dot?: boolean\r\n}\r\n\r\nfunction StatusBadge({ className, status, dot = true, children, ...props }: StatusBadgeProps) {\r\n return (\r\n <div className={cn(statusBadgeVariants({ status }), className)} {...props}>\r\n {dot && (\r\n <span\r\n className={cn(\r\n \"mr-1.5 h-2 w-2 rounded-full\",\r\n {\r\n \"bg-current\": true, // Uses the text color of the parent\r\n }\r\n )}\r\n />\r\n )}\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nexport { StatusBadge }\r\n","import { Monitor, Moon, Sun } from \"lucide-react\"\r\n\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"@/components/ui/dropdown-menu\"\r\nimport { useTheme, type Theme } from \"./theme-provider\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ModeToggle — Dropdown variant (classic)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function ModeToggle({ className }: { className?: string }) {\r\n const { setTheme } = useTheme()\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"outline\" size=\"icon\" className={className}>\r\n <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\r\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\">\r\n <DropdownMenuItem onClick={() => setTheme(\"light\")}>\r\n <Sun className=\"mr-2 h-4 w-4\" />\r\n Light\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\r\n <Moon className=\"mr-2 h-4 w-4\" />\r\n Dark\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme(\"system\")}>\r\n <Monitor className=\"mr-2 h-4 w-4\" />\r\n System\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// ModeToggleGroup — Segmented / pill toggle (compact)\r\n// ---------------------------------------------------------------------------\r\n\r\nconst items: { value: Theme; icon: typeof Sun; label: string }[] = [\r\n { value: \"light\", icon: Sun, label: \"Light\" },\r\n { value: \"dark\", icon: Moon, label: \"Dark\" },\r\n { value: \"system\", icon: Monitor, label: \"System\" },\r\n]\r\n\r\nexport function ModeToggleGroup({ className }: { className?: string }) {\r\n const { theme, setTheme, themes } = useTheme()\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5\",\r\n className\r\n )}\r\n role=\"radiogroup\"\r\n aria-label=\"Color theme\"\r\n >\r\n {items\r\n .filter((i) => themes.includes(i.value))\r\n .map(({ value, icon: Icon, label }) => (\r\n <button\r\n key={value}\r\n role=\"radio\"\r\n aria-checked={theme === value}\r\n aria-label={label}\r\n onClick={() => setTheme(value)}\r\n className={cn(\r\n \"inline-flex items-center justify-center rounded-md px-2.5 py-1.5 text-sm font-medium transition-all\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n theme === value\r\n ? \"bg-background text-foreground shadow-sm\"\r\n : \"text-muted-foreground hover:text-foreground hover:bg-background/50\"\r\n )}\r\n >\r\n <Icon className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">{label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n )\r\n}\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubble\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: \"sent\" | \"received\"\r\n}\r\n\r\nconst ChatBubble = React.forwardRef<HTMLDivElement, ChatBubbleProps>(\r\n ({ className, variant = \"received\", children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex gap-2 max-w-[85%]\",\r\n variant === \"sent\" ? \"ml-auto flex-row-reverse\" : \"mr-auto\",\r\n className,\r\n )}\r\n data-variant={variant}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n ),\r\n)\r\nChatBubble.displayName = \"ChatBubble\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleAvatar\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\r\n src?: string\r\n fallback?: string\r\n}\r\n\r\nconst ChatBubbleAvatar = React.forwardRef<HTMLDivElement, ChatBubbleAvatarProps>(\r\n ({ className, src, fallback, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {src ? (\r\n <img src={src} alt={fallback ?? \"avatar\"} className=\"h-full w-full object-cover\" />\r\n ) : (\r\n <span>{fallback ?? \"?\"}</span>\r\n )}\r\n </div>\r\n ),\r\n)\r\nChatBubbleAvatar.displayName = \"ChatBubbleAvatar\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleMessage\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleMessageProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: \"sent\" | \"received\"\r\n isLoading?: boolean\r\n}\r\n\r\nconst ChatBubbleMessage = React.forwardRef<HTMLDivElement, ChatBubbleMessageProps>(\r\n ({ className, variant = \"received\", isLoading, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-2xl px-4 py-2.5 text-sm leading-relaxed\",\r\n variant === \"sent\"\r\n ? \"bg-primary text-primary-foreground rounded-br-md\"\r\n : \"bg-muted text-foreground rounded-bl-md\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {isLoading ? (\r\n <div className=\"flex items-center gap-1 py-1\">\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:0ms]\" />\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:150ms]\" />\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:300ms]\" />\r\n </div>\r\n ) : (\r\n children\r\n )}\r\n </div>\r\n ),\r\n)\r\nChatBubbleMessage.displayName = \"ChatBubbleMessage\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleTimestamp\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleTimestampProps extends React.HTMLAttributes<HTMLSpanElement> {}\r\n\r\nconst ChatBubbleTimestamp = React.forwardRef<HTMLSpanElement, ChatBubbleTimestampProps>(\r\n ({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n className={cn(\"text-[10px] text-muted-foreground mt-1 px-1\", className)}\r\n {...props}\r\n />\r\n ),\r\n)\r\nChatBubbleTimestamp.displayName = \"ChatBubbleTimestamp\"\r\n\r\nexport { ChatBubble, ChatBubbleAvatar, ChatBubbleMessage, ChatBubbleTimestamp }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface ChatInputProps {\r\n onSend?: (message: string) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n isLoading?: boolean\r\n showAttach?: boolean\r\n className?: string\r\n}\r\n\r\nconst ChatInput = React.forwardRef<HTMLDivElement, ChatInputProps>(\r\n ({ onSend, placeholder = \"Type a message...\", disabled, isLoading, showAttach, className }, ref) => {\r\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\r\n const [value, setValue] = React.useState(\"\")\r\n\r\n const adjustHeight = () => {\r\n const el = textareaRef.current\r\n if (!el) return\r\n el.style.height = \"auto\"\r\n el.style.height = Math.min(el.scrollHeight, 160) + \"px\"\r\n }\r\n\r\n const handleSend = () => {\r\n const trimmed = value.trim()\r\n if (!trimmed || disabled || isLoading) return\r\n onSend?.(trimmed)\r\n setValue(\"\")\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = \"auto\"\r\n }\r\n }\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault()\r\n handleSend()\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex items-end gap-2 rounded-xl border border-border bg-background p-2\",\r\n className,\r\n )}\r\n >\r\n {showAttach && (\r\n <button\r\n type=\"button\"\r\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors\"\r\n aria-label=\"Attach file\"\r\n disabled={disabled}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\r\n </svg>\r\n </button>\r\n )}\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => {\r\n setValue(e.target.value)\r\n adjustHeight()\r\n }}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={disabled || isLoading}\r\n rows={1}\r\n className=\"flex-1 resize-none bg-transparent text-sm outline-none placeholder:text-muted-foreground min-h-[36px] py-2 px-2 max-h-40\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={handleSend}\r\n disabled={disabled || isLoading || !value.trim()}\r\n className={cn(\r\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg transition-colors\",\r\n value.trim() && !disabled && !isLoading\r\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n : \"bg-muted text-muted-foreground cursor-not-allowed\",\r\n )}\r\n aria-label=\"Send message\"\r\n >\r\n {isLoading ? (\r\n <svg\r\n className=\"animate-spin\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n ) : (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"m5 12 7-7 7 7\" />\r\n <path d=\"M12 19V5\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n )\r\n },\r\n)\r\nChatInput.displayName = \"ChatInput\"\r\n\r\nexport { ChatInput }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatContainer\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatContainerProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst ChatContainer = React.forwardRef<HTMLDivElement, ChatContainerProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col h-full\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n ),\r\n)\r\nChatContainer.displayName = \"ChatContainer\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatList — auto-scrolling message list\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatListProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Auto-scroll to bottom when children change @default true */\r\n autoScroll?: boolean\r\n}\r\n\r\nconst ChatList = React.forwardRef<HTMLDivElement, ChatListProps>(\r\n ({ className, children, autoScroll = true, ...props }, ref) => {\r\n const bottomRef = React.useRef<HTMLDivElement>(null)\r\n const childCount = React.Children.count(children)\r\n\r\n React.useEffect(() => {\r\n if (autoScroll && bottomRef.current) {\r\n bottomRef.current.scrollIntoView({ behavior: \"smooth\" })\r\n }\r\n }, [childCount, autoScroll])\r\n\r\n return (\r\n <ScrollArea className=\"flex-1\" orientation=\"vertical\">\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col gap-4 p-4\", className)}\r\n {...props}\r\n >\r\n {children}\r\n <div ref={bottomRef} />\r\n </div>\r\n </ScrollArea>\r\n )\r\n },\r\n)\r\nChatList.displayName = \"ChatList\"\r\n\r\nexport { ChatContainer, ChatList }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// AILoading — typing dots\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface AILoadingProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Visual variant @default \"dots\" */\r\n variant?: \"dots\" | \"text\"\r\n /** Text shown for the \"text\" variant @default \"Thinking\" */\r\n text?: string\r\n}\r\n\r\nconst AILoading = React.forwardRef<HTMLDivElement, AILoadingProps>(\r\n ({ className, variant = \"dots\", text = \"Thinking\", ...props }, ref) => {\r\n if (variant === \"text\") {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center gap-1.5 text-sm text-muted-foreground\", className)}\r\n {...props}\r\n >\r\n <svg\r\n className=\"animate-spin h-4 w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n <span className=\"animate-pulse\">{text}…</span>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center gap-1\", className)}\r\n {...props}\r\n >\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:0ms]\" />\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:150ms]\" />\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:300ms]\" />\r\n </div>\r\n )\r\n },\r\n)\r\nAILoading.displayName = \"AILoading\"\r\n\r\nexport { AILoading }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// MarkdownRenderer — lightweight, zero‑dependency Markdown → React renderer\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface MarkdownRendererProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Raw Markdown string */\r\n content: string\r\n /** Streaming mode — suppresses layout shift by avoiding final trim @default false */\r\n streaming?: boolean\r\n}\r\n\r\n// ---- inline parser --------------------------------------------------------\r\n\r\nfunction parseInline(text: string): React.ReactNode[] {\r\n const nodes: React.ReactNode[] = []\r\n // regex order matters: code first, then bold, italic, link\r\n const re = /(`[^`]+`)|(\\*\\*[^*]+\\*\\*)|(\\*[^*]+\\*)|(\\[[^\\]]+\\]\\([^)]+\\))/g\r\n let lastIndex = 0\r\n let match: RegExpExecArray | null\r\n\r\n while ((match = re.exec(text)) !== null) {\r\n if (match.index > lastIndex) {\r\n nodes.push(text.slice(lastIndex, match.index))\r\n }\r\n const m = match[0]\r\n if (m.startsWith(\"`\")) {\r\n nodes.push(\r\n <code key={match.index} className=\"px-1 py-0.5 rounded bg-muted text-sm font-mono\">\r\n {m.slice(1, -1)}\r\n </code>,\r\n )\r\n } else if (m.startsWith(\"**\")) {\r\n nodes.push(<strong key={match.index}>{m.slice(2, -2)}</strong>)\r\n } else if (m.startsWith(\"*\")) {\r\n nodes.push(<em key={match.index}>{m.slice(1, -1)}</em>)\r\n } else if (m.startsWith(\"[\")) {\r\n const labelEnd = m.indexOf(\"]\")\r\n const label = m.slice(1, labelEnd)\r\n const url = m.slice(labelEnd + 2, -1)\r\n nodes.push(\r\n <a\r\n key={match.index}\r\n href={url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"text-primary underline underline-offset-2 hover:text-primary/80\"\r\n >\r\n {label}\r\n </a>,\r\n )\r\n }\r\n lastIndex = match.index + m.length\r\n }\r\n if (lastIndex < text.length) nodes.push(text.slice(lastIndex))\r\n return nodes\r\n}\r\n\r\n// ---- block parser ---------------------------------------------------------\r\n\r\nfunction parseBlocks(markdown: string): React.ReactNode[] {\r\n const lines = markdown.split(\"\\n\")\r\n const elements: React.ReactNode[] = []\r\n let i = 0\r\n let key = 0\r\n\r\n while (i < lines.length) {\r\n const line = lines[i]\r\n\r\n // fenced code block\r\n if (line.trimStart().startsWith(\"```\")) {\r\n const lang = line.trimStart().slice(3).trim()\r\n const codeLines: string[] = []\r\n i++\r\n while (i < lines.length && !lines[i].trimStart().startsWith(\"```\")) {\r\n codeLines.push(lines[i])\r\n i++\r\n }\r\n i++ // skip closing ```\r\n elements.push(\r\n <pre\r\n key={key++}\r\n className=\"overflow-x-auto rounded-lg p-4 text-[13px] leading-relaxed font-mono my-3\"\r\n style={{ background: \"var(--cb-bg, #1e1e2e)\", color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n <code data-language={lang || undefined}>{codeLines.join(\"\\n\")}</code>\r\n </pre>,\r\n )\r\n continue\r\n }\r\n\r\n // headings\r\n const headingMatch = line.match(/^(#{1,6})\\s+(.*)/)\r\n if (headingMatch) {\r\n const level = headingMatch[1].length as 1 | 2 | 3 | 4 | 5 | 6\r\n const text = headingMatch[2]\r\n const Tag = `h${level}` as keyof JSX.IntrinsicElements\r\n const sizes: Record<number, string> = {\r\n 1: \"text-2xl font-bold mt-6 mb-3\",\r\n 2: \"text-xl font-semibold mt-5 mb-2\",\r\n 3: \"text-lg font-semibold mt-4 mb-2\",\r\n 4: \"text-base font-semibold mt-3 mb-1\",\r\n 5: \"text-sm font-semibold mt-2 mb-1\",\r\n 6: \"text-sm font-medium mt-2 mb-1\",\r\n }\r\n elements.push(\r\n <Tag key={key++} className={sizes[level]}>\r\n {parseInline(text)}\r\n </Tag>,\r\n )\r\n i++\r\n continue\r\n }\r\n\r\n // unordered list\r\n if (/^[\\s]*[-*]\\s/.test(line)) {\r\n const items: React.ReactNode[] = []\r\n while (i < lines.length && /^[\\s]*[-*]\\s/.test(lines[i])) {\r\n items.push(\r\n <li key={key++}>{parseInline(lines[i].replace(/^[\\s]*[-*]\\s/, \"\"))}</li>,\r\n )\r\n i++\r\n }\r\n elements.push(\r\n <ul key={key++} className=\"list-disc pl-5 space-y-1 my-2 text-sm\">\r\n {items}\r\n </ul>,\r\n )\r\n continue\r\n }\r\n\r\n // ordered list\r\n if (/^\\s*\\d+\\.\\s/.test(line)) {\r\n const items: React.ReactNode[] = []\r\n while (i < lines.length && /^\\s*\\d+\\.\\s/.test(lines[i])) {\r\n items.push(\r\n <li key={key++}>{parseInline(lines[i].replace(/^\\s*\\d+\\.\\s/, \"\"))}</li>,\r\n )\r\n i++\r\n }\r\n elements.push(\r\n <ol key={key++} className=\"list-decimal pl-5 space-y-1 my-2 text-sm\">\r\n {items}\r\n </ol>,\r\n )\r\n continue\r\n }\r\n\r\n // blockquote\r\n if (line.startsWith(\">\")) {\r\n const quoteLines: string[] = []\r\n while (i < lines.length && lines[i].startsWith(\">\")) {\r\n quoteLines.push(lines[i].replace(/^>\\s?/, \"\"))\r\n i++\r\n }\r\n elements.push(\r\n <blockquote\r\n key={key++}\r\n className=\"border-l-4 border-primary/40 pl-4 italic text-muted-foreground my-3 text-sm\"\r\n >\r\n {parseInline(quoteLines.join(\" \"))}\r\n </blockquote>,\r\n )\r\n continue\r\n }\r\n\r\n // horizontal rule\r\n if (/^[-*_]{3,}\\s*$/.test(line)) {\r\n elements.push(<hr key={key++} className=\"my-4 border-border\" />)\r\n i++\r\n continue\r\n }\r\n\r\n // empty line\r\n if (line.trim() === \"\") {\r\n i++\r\n continue\r\n }\r\n\r\n // paragraph\r\n elements.push(\r\n <p key={key++} className=\"text-sm leading-relaxed my-2\">\r\n {parseInline(line)}\r\n </p>,\r\n )\r\n i++\r\n }\r\n\r\n return elements\r\n}\r\n\r\n// ---- component ------------------------------------------------------------\r\n\r\nconst MarkdownRenderer = React.forwardRef<HTMLDivElement, MarkdownRendererProps>(\r\n ({ content, streaming, className, ...props }, ref) => {\r\n const processed = streaming ? content : content.trim()\r\n const elements = React.useMemo(() => parseBlocks(processed), [processed])\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"markdown-renderer\", className)}\r\n {...props}\r\n >\r\n {elements}\r\n </div>\r\n )\r\n },\r\n)\r\nMarkdownRenderer.displayName = \"MarkdownRenderer\"\r\n\r\nexport { MarkdownRenderer }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// PromptSuggestions\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface PromptSuggestion {\r\n title: string\r\n description?: string\r\n prompt: string\r\n}\r\n\r\nexport interface PromptSuggestionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\r\n suggestions: PromptSuggestion[]\r\n onSelect?: (prompt: string) => void\r\n /** Number of grid columns @default 2 */\r\n columns?: 1 | 2 | 3 | 4\r\n}\r\n\r\nconst PromptSuggestions = React.forwardRef<HTMLDivElement, PromptSuggestionsProps>(\r\n ({ suggestions, onSelect, columns = 2, className, ...props }, ref) => {\r\n const gridCols: Record<number, string> = {\r\n 1: \"grid-cols-1\",\r\n 2: \"grid-cols-1 sm:grid-cols-2\",\r\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\r\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid gap-3\", gridCols[columns], className)}\r\n {...props}\r\n >\r\n {suggestions.map((s, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n onClick={() => onSelect?.(s.prompt)}\r\n className={cn(\r\n \"flex flex-col items-start gap-1 rounded-xl border border-border p-4\",\r\n \"bg-card text-left transition-colors hover:bg-muted/60 hover:border-primary/30\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n )}\r\n >\r\n <span className=\"text-sm font-medium text-foreground\">{s.title}</span>\r\n {s.description && (\r\n <span className=\"text-xs text-muted-foreground line-clamp-2\">\r\n {s.description}\r\n </span>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )\r\n },\r\n)\r\nPromptSuggestions.displayName = \"PromptSuggestions\"\r\n\r\nexport { PromptSuggestions }\r\n"],"names":["r","t","f","n","o","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","falsyToString","cx","cva","base","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","React","size","asChild","ref","jsx","Slot","inputVariants","Input","type","inputSize","Textarea","labelVariants","Label","LabelPrimitive","badgeVariants","Badge","Separator","orientation","SeparatorPrimitive","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Checkbox","CheckboxPrimitive","Check","Switch","SwitchPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","children","jsxs","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","Slider","SliderPrimitive","toggleVariants","Toggle","TogglePrimitive","ToggleGroup","ToggleGroupPrimitive","ToggleGroupContext","ToggleGroupItem","context","Calendar","selected","onSelect","disabled","currentMonth","setCurrentMonth","startOfMonth","monthStart","monthEnd","endOfMonth","calendarStart","startOfWeek","calendarEnd","endOfWeek","days","eachDayOfInterval","weekDays","handlePrevMonth","subMonths","handleNextMonth","addMonths","handleDayClick","day","isSameDay","ChevronLeft","format","ChevronRight","isCurrentMonth","isSameMonth","isSelected","isTodayDate","isToday","isDisabled","today","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","sideOffset","DatePicker","onChange","placeholder","open","setOpen","CalendarIcon","date","TimePicker","is24Hour","period","setPeriod","displayHours","formatTime","h","m","handleHourChange","hour","newHours","handleMinuteChange","minute","handlePeriodChange","newPeriod","hours","_","minutes","Clock","NumberInput","min","max","step","handleIncrement","newValue","handleDecrement","handleChange","e","parsed","clamped","Minus","Plus","TagInput","values","maxTags","inputValue","setInputValue","inputRef","handleKeyDown","removeTag","tagToRemove","tag","_a","X","Combobox","options","searchPlaceholder","emptyText","search","setSearch","filteredOptions","option","selectedOption","ChevronsUpDown","MultiSelect","maxDisplay","selectedOptions","handleSelect","optionValue","v","handleRemove","displayText","opt","OTPInput","length","onComplete","inputRefs","char","handlePaste","pastedData","el","FileUpload","accept","maxSize","multiple","onUpload","files","setFiles","isDragging","setIsDragging","handleFiles","fileList","validFiles","file","newFiles","handleDrop","handleDragOver","handleDragLeave","removeFile","formatSize","bytes","Upload","FileIcon","PRESET_COLORS","hexToHsl","hex","g","b","s","d","hslToHex","l","a","color","ColorPicker","hsl","setHsl","hexInput","setHexInput","gradientRef","updateColor","newHsl","handleGradientClick","rect","y","handleHexChange","Box","Component","Flex","direction","wrap","justify","gap","style","VStack","spacing","HStack","Grid","cols","colClasses","maxWidthMap","Container","maxWidth","centered","AspectRatio","AspectRatioPrimitive","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","cardVariants","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","ScrollArea","ScrollAreaPrimitive","ScrollBar","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","sheetVariants","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","DropdownMenuSubContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","checked","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","alertVariants","Alert","AlertTitle","AlertDescription","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Progress","ProgressPrimitive","Skeleton","__insertCSS","code","head","getAsset","SuccessIcon","InfoIcon","WarningIcon","ErrorIcon","bars","Loader","visible","CloseIcon","useIsDocumentHidden","isDocumentHidden","setIsDocumentHidden","callback","toastsCounter","Observer","subscriber","data","_data_id","message","rest","id","alreadyExists","toast","dismissible","promise","p","shouldDismiss","originalPromise","response","isHttpResponse","promiseData","description","toastSettings","error","unwrap","resolve","reject","ToastState","toastFunction","basicToast","getHistory","getToasts","isAction","action","VISIBLE_TOASTS_AMOUNT","VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","TOAST_LIFETIME","TOAST_WIDTH","GAP","SWIPE_THRESHOLD","TIME_BEFORE_UNMOUNT","classes","getDefaultSwipeDirections","x","directions","Toast","_toast_classNames","_toast_classNames1","_toast_classNames2","_toast_classNames3","_toast_classNames4","_toast_classNames5","_toast_classNames6","_toast_classNames7","_toast_classNames8","ToasterInvert","unstyled","interacting","setHeights","visibleToasts","heights","toasts","expanded","removeToast","defaultRichColors","closeButtonFromToaster","cancelButtonStyle","actionButtonStyle","descriptionClassName","durationFromToaster","expandByDefault","icons","closeButtonAriaLabel","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","mounted","setMounted","removed","setRemoved","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","remainingTime","dragStartTime","toastRef","isFront","isVisible","toastType","toastClassname","toastDescriptionClassname","heightIndex","height","closeButton","_toast_closeButton","duration","closeTimerStartTimeRef","offset","lastCloseTimerStartTimeRef","pointerStartRef","toastsHeightBefore","prev","curr","reducerIndex","invert","toastNode","originalHeight","newHeight","deleteToast","timeoutId","elapsedTime","getLoadingIcon","icon","_toast_richColors","_icons_close","event","_toastRef_current","_toastRef_current1","_dragStartTime_current","swipeAmountX","swipeAmountY","timeTaken","swipeAmount","velocity","_toastRef_current2","_toastRef_current3","_window_getSelection","yDelta","xDelta","_props_swipeDirections","swipeDirections","getDampening","delta","dampenedDelta","getDocumentDirection","dirAttribute","assignOffset","defaultOffset","mobileOffset","styles","isMobile","defaultValue","assignAll","Toaster","hotkey","expand","richColors","toastOptions","dir","containerAriaLabel","setToasts","filteredToasts","possiblePositions","setExpanded","setInteracting","actualTheme","setActualTheme","listRef","hotkeyLabel","lastFocusedElementRef","isFocusWithinRef","toastToRemove","_toasts_find","ReactDOM","indexOfExistingToast","darkMediaQuery","matches","_listRef_current","_listRef_current1","_heights_","_toastOptions_duration","_toastOptions_closeButton","THEMES","getSystemTheme","resolveTheme","disableTransitions","nonce","applyTheme","resolved","attribute","root","ThemeProviderContext","createContext","ThemeProvider","defaultTheme","storageKey","enableSystem","disableTransitionOnChange","forcedTheme","setThemeState","useState","stored","resolvedTheme","setResolvedTheme","themeRef","useRef","apply","useCallback","active","enableTransitions","useEffect","mq","handler","newTheme","setTheme","themes","useMemo","useTheme","useContext","themeProp","resolvedSonnerTheme","Sonner","EmptyState","title","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","PaginationPrevious","PaginationNext","PaginationEllipsis","MoreHorizontal","Stepper","steps","activeStep","isCompleted","isCurrent","isLast","NavigationMenu","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuIndicator","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isString","isBoolean","mathAbs","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","Alignment","viewSize","predefined","start","center","end","measure","EventStore","listeners","add","node","removeListener","legacyMediaQueryList","self","clear","remove","Animations","ownerDocument","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","width","Limit","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","pointerDown","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","pointerUp","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","scrollBound","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","eventStore","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","Vector1D","initialValue","normalizeInput","subtract","Translate","translate","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","findSlideBounds","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","mediaQueries","PluginsHandler","optionsHandler","activePlugins","map","EmblaCarousel","userOptions","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","optionsBase","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","CarouselContext","useCarousel","Carousel","opts","setApi","carouselRef","setCanScrollPrev","setCanScrollNext","CarouselContent","CarouselItem","CarouselPrevious","CarouselNext","functionalUpdate","updater","input","makeStateUpdater","instance","old","isFunction","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","deps","depArgs","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","createCell","table","row","column","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","_options$id","header","leafHeaders","recurseHeader","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","ColumnFaceting","includesString","filterValue","_filterValue$toString","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","nextValue","extent","mean","leafRows","count","median","mid","nums","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","ColumnOrdering","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","j","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","DataTable","searchKey","setSorting","setColumnFilters","columnVisibility","setColumnVisibility","setRowSelection","_b","DataTableColumnHeader","ArrowUpDown","KEYWORDS","CSS_KEYWORDS","tokenize","language","lines","isCSS","isHTML","isJSON","isBash","line","tokens","quote","closing","tagName","word","tokenColors","CodeBlock","showLineNumbers","showCopy","copied","setCopied","trimmed","tokenLines","handleCopy","lineIdx","tok","tokIdx","headingVariants","Heading","level","as","Tag","textVariants","Text","weight","leading","Code","Blockquote","Lead","Muted","ChartContainer","ResponsiveContainer","ChartTooltip","RechartsTooltip","ChartLegend","RechartsLegend","Timeline","TimelineItem","TimelineIcon","TimelineConnector","TimelineContent","AppShell","Sidebar","Header","Main","MetricCard","trend","trendLabel","TrendingUp","TrendingDown","CopyInput","hasCopied","setHasCopied","onCopy","Copy","JsonViewer","statusBadgeVariants","StatusBadge","status","dot","ModeToggle","Sun","Moon","Monitor","items","ModeToggleGroup","Icon","ChatBubble","ChatBubbleAvatar","src","fallback","ChatBubbleMessage","isLoading","ChatBubbleTimestamp","ChatInput","onSend","showAttach","textareaRef","setValue","adjustHeight","handleSend","ChatContainer","ChatList","autoScroll","bottomRef","childCount","AILoading","parseInline","nodes","re","lastIndex","match","labelEnd","url","parseBlocks","markdown","elements","lang","codeLines","headingMatch","sizes","quoteLines","MarkdownRenderer","streaming","processed","PromptSuggestions","suggestions"],"mappings":"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","x_google_ignoreList":[0,1,3,50,60,61,62,64,65]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/label.tsx","../src/components/ui/badge.tsx","../src/components/ui/separator.tsx","../src/components/ui/avatar.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../src/components/ui/select.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/time-picker.tsx","../src/components/ui/number-input.tsx","../src/components/ui/tag-input.tsx","../src/components/ui/combobox.tsx","../src/components/ui/multiselect.tsx","../src/components/ui/otp-input.tsx","../src/components/ui/file-upload.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/box.tsx","../src/components/ui/flex.tsx","../src/components/ui/stack.tsx","../src/components/ui/grid.tsx","../src/components/ui/container.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/card.tsx","../src/components/ui/table.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/tabs.tsx","../src/components/ui/accordion.tsx","../src/components/ui/dialog.tsx","../src/components/ui/sheet.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/command.tsx","../src/components/ui/alert.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../node_modules/sonner/dist/index.mjs","../src/components/ui/theme-provider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/pagination.tsx","../src/components/ui/stepper.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/hover-card.tsx","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/components/ui/carousel.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../src/components/ui/data-table.tsx","../src/components/ui/code-block.tsx","../src/components/ui/typography.tsx","../src/components/ui/chart.tsx","../src/components/ui/timeline.tsx","../src/components/ui/app-shell.tsx","../src/components/ui/metric-card.tsx","../src/components/ui/copy-input.tsx","../src/components/ui/json-viewer.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/mode-toggle.tsx","../src/components/ui/chat-bubble.tsx","../src/components/ui/chat-input.tsx","../src/components/ui/chat-container.tsx","../src/components/ui/ai-loading.tsx","../src/components/ui/markdown-renderer.tsx","../src/components/ui/prompt-suggestions.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst buttonVariants = cva(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\r\n destructive:\r\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\r\n outline:\r\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n secondary:\r\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n brand: \"bg-gradient-to-r from-violet-600 to-indigo-600 text-white hover:from-violet-500 hover:to-indigo-500 shadow-lg shadow-violet-500/25 hover:shadow-violet-500/40 hover:scale-[1.02] active:scale-[0.98]\",\r\n glow: \"bg-primary text-primary-foreground shadow-[0_0_20px_rgba(139,92,246,0.5)] hover:shadow-[0_0_30px_rgba(139,92,246,0.7)] hover:scale-[1.02] active:scale-[0.98]\",\r\n },\r\n size: {\r\n default: \"h-10 px-4 py-2\",\r\n sm: \"h-9 rounded-md px-3\",\r\n lg: \"h-11 rounded-md px-8\",\r\n xl: \"h-12 rounded-lg px-10 text-base\",\r\n icon: \"h-10 w-10\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\"\r\n return (\r\n <Comp\r\n className={cn(buttonVariants({ variant, size, className }))}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nButton.displayName = \"Button\"\r\n\r\nexport { Button, buttonVariants }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst inputVariants = cva(\r\n \"flex w-full rounded-lg text-sm transition-all duration-200 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"h-10 border border-input bg-background px-3 py-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n filled: \"h-10 border-0 bg-muted/50 px-3 py-2 focus-visible:outline-none focus-visible:bg-muted focus-visible:ring-2 focus-visible:ring-ring\",\r\n glow: \"h-10 border border-input bg-background px-3 py-2 ring-offset-background focus-visible:outline-none focus-visible:border-violet-500/50 focus-visible:ring-2 focus-visible:ring-violet-500/30 focus-visible:shadow-[0_0_15px_rgba(139,92,246,0.3)]\",\r\n ghost: \"h-10 border-0 bg-transparent px-3 py-2 focus-visible:outline-none focus-visible:bg-muted/30\",\r\n },\r\n inputSize: {\r\n default: \"h-10\",\r\n sm: \"h-9 text-xs\",\r\n lg: \"h-12 text-base\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n inputSize: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n VariantProps<typeof inputVariants> { }\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type, variant, inputSize, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(inputVariants({ variant, inputSize }), className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nInput.displayName = \"Input\"\r\n\r\nexport { Input, inputVariants }\r\n\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(\r\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea }\r\n","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst labelVariants = cva(\r\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n)\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\r\n VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root\r\n ref={ref}\r\n className={cn(labelVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nLabel.displayName = LabelPrimitive.Root.displayName\r\n\r\nexport { Label }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive:\r\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n outline: \"text-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> { }\r\n\r\nfunction Badge({ className, variant, ...props }: BadgeProps) {\r\n return (\r\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\r\n )\r\n}\r\n\r\nexport { Badge, badgeVariants }\r\n","import * as React from \"react\"\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = \"horizontal\", ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative\r\n orientation={orientation}\r\n className={cn(\r\n \"shrink-0 bg-border\",\r\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n","import * as React from \"react\"\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatar.displayName = AvatarPrimitive.Root.displayName\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image\r\n ref={ref}\r\n className={cn(\"aspect-square h-full w-full\", className)}\r\n {...props}\r\n />\r\n))\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\r\n\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n","import * as React from \"react\"\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\r\nimport { Check } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator\r\n className={cn(\"flex items-center justify-center text-current\")}\r\n >\r\n <Check className=\"h-4 w-4\" />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n))\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\r\n\r\nexport { Checkbox }\r\n","import * as React from \"react\"\r\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Switch = React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SwitchPrimitive.Root\r\n className={cn(\r\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitive.Thumb\r\n className={cn(\r\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\r\n )}\r\n />\r\n </SwitchPrimitive.Root>\r\n))\r\nSwitch.displayName = SwitchPrimitive.Root.displayName\r\n\r\nexport { Switch }\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n position === \"popper\" &&\r\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-1\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}\r\n","import * as React from \"react\"\r\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\r\nimport { Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst RadioGroup = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <RadioGroupPrimitive.Root\r\n className={cn(\"grid gap-2\", className)}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <RadioGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n))\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\r\n\r\nexport { RadioGroup, RadioGroupItem }\r\n","import * as React from \"react\"\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full touch-none select-none items-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\r\n </SliderPrimitive.Track>\r\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\r\n </SliderPrimitive.Root>\r\n))\r\nSlider.displayName = SliderPrimitive.Root.displayName\r\n\r\nexport { Slider }\r\n","import * as React from \"react\"\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline:\r\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\r\n },\r\n size: {\r\n default: \"h-10 px-3\",\r\n sm: \"h-9 px-2.5\",\r\n lg: \"h-11 px-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root\r\n ref={ref}\r\n className={cn(toggleVariants({ variant, size, className }))}\r\n {...props}\r\n />\r\n))\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName\r\n\r\nexport { Toggle, toggleVariants }\r\n","import * as React from \"react\"\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { toggleVariants } from \"@/components/ui/toggle\"\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-1\", className)}\r\n {...props}\r\n >\r\n <ToggleGroupContext.Provider value={{ variant, size }}>\r\n {children}\r\n </ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n))\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\r\n\r\nconst ToggleGroupContext = React.createContext<\r\n VariantProps<typeof toggleVariants>\r\n>({\r\n size: \"default\",\r\n variant: \"default\",\r\n})\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext)\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n )\r\n})\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\r\n\r\nexport { ToggleGroup, ToggleGroupItem }\r\n","import * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\r\nimport {\r\n addMonths,\r\n subMonths,\r\n startOfMonth,\r\n endOfMonth,\r\n startOfWeek,\r\n endOfWeek,\r\n eachDayOfInterval,\r\n format,\r\n isSameMonth,\r\n isSameDay,\r\n isToday,\r\n} from \"date-fns\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\nexport interface CalendarProps {\r\n selected?: Date\r\n onSelect?: (date: Date | undefined) => void\r\n className?: string\r\n disabled?: (date: Date) => boolean\r\n}\r\n\r\nfunction Calendar({\r\n selected,\r\n onSelect,\r\n className,\r\n disabled,\r\n}: CalendarProps) {\r\n const [currentMonth, setCurrentMonth] = React.useState(() =>\r\n selected ? startOfMonth(selected) : startOfMonth(new Date())\r\n )\r\n\r\n const monthStart = startOfMonth(currentMonth)\r\n const monthEnd = endOfMonth(currentMonth)\r\n const calendarStart = startOfWeek(monthStart, { weekStartsOn: 1 })\r\n const calendarEnd = endOfWeek(monthEnd, { weekStartsOn: 1 })\r\n\r\n const days = eachDayOfInterval({ start: calendarStart, end: calendarEnd })\r\n\r\n const weekDays = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"]\r\n\r\n const handlePrevMonth = () => {\r\n setCurrentMonth(subMonths(currentMonth, 1))\r\n }\r\n\r\n const handleNextMonth = () => {\r\n setCurrentMonth(addMonths(currentMonth, 1))\r\n }\r\n\r\n const handleDayClick = (day: Date) => {\r\n if (disabled?.(day)) return\r\n onSelect?.(isSameDay(day, selected || new Date(0)) ? undefined : day)\r\n }\r\n\r\n return (\r\n <div className={cn(\"p-4 bg-card rounded-xl border shadow-sm w-[320px]\", className)}>\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={handlePrevMonth}\r\n className=\"h-8 w-8 rounded-full hover:bg-accent\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n <h2 className=\"text-base font-semibold\">\r\n {format(currentMonth, \"MMMM yyyy\")}\r\n </h2>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={handleNextMonth}\r\n className=\"h-8 w-8 rounded-full hover:bg-accent\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n\r\n {/* Week days header */}\r\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\r\n {weekDays.map((day) => (\r\n <div\r\n key={day}\r\n className=\"h-8 flex items-center justify-center text-xs font-medium text-muted-foreground\"\r\n >\r\n {day}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Days grid */}\r\n <div className=\"grid grid-cols-7 gap-1\">\r\n {days.map((day, index) => {\r\n const isCurrentMonth = isSameMonth(day, currentMonth)\r\n const isSelected = selected && isSameDay(day, selected)\r\n const isTodayDate = isToday(day)\r\n const isDisabled = disabled?.(day)\r\n\r\n return (\r\n <button\r\n key={index}\r\n onClick={() => handleDayClick(day)}\r\n disabled={isDisabled}\r\n className={cn(\r\n \"h-10 w-10 rounded-lg text-sm font-medium transition-all duration-150\",\r\n \"flex items-center justify-center\",\r\n \"hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1\",\r\n !isCurrentMonth && \"text-muted-foreground/40\",\r\n isCurrentMonth && !isSelected && \"text-foreground hover:text-foreground\",\r\n isSelected && \"bg-primary text-primary-foreground hover:bg-primary/90 shadow-md\",\r\n isTodayDate && !isSelected && \"bg-accent text-accent-foreground font-bold\",\r\n isDisabled && \"opacity-30 cursor-not-allowed hover:bg-transparent\"\r\n )}\r\n >\r\n {format(day, \"d\")}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n\r\n {/* Footer */}\r\n <div className=\"mt-4 pt-3 border-t flex justify-between items-center\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => {\r\n const today = new Date()\r\n setCurrentMonth(startOfMonth(today))\r\n onSelect?.(today)\r\n }}\r\n className=\"text-xs\"\r\n >\r\n Today\r\n </Button>\r\n {selected && (\r\n <span className=\"text-xs text-muted-foreground\">\r\n {format(selected, \"MMM d, yyyy\")}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nCalendar.displayName = \"Calendar\"\r\n\r\nexport { Calendar }\r\n","import * as React from \"react\"\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Popover = PopoverPrimitive.Root\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n))\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent }\r\n","import * as React from \"react\"\r\nimport { format } from \"date-fns\"\r\nimport { CalendarIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Calendar } from \"@/components/ui/calendar\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\n\r\nexport interface DatePickerProps {\r\n value?: Date\r\n onChange?: (date: Date | undefined) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction DatePicker({\r\n value,\r\n onChange,\r\n placeholder = \"Pick a date\",\r\n disabled,\r\n className,\r\n}: DatePickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-start text-left font-normal\",\r\n !value && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\r\n {value ? format(value, \"PPP\") : <span>{placeholder}</span>}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n <Calendar\r\n selected={value}\r\n onSelect={(date) => {\r\n onChange?.(date)\r\n setOpen(false)\r\n }}\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DatePicker }\r\n","import * as React from \"react\"\r\nimport { Clock } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\n\r\nexport interface TimePickerProps {\r\n value?: { hours: number; minutes: number }\r\n onChange?: (value: { hours: number; minutes: number }) => void\r\n is24Hour?: boolean\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction TimePicker({\r\n value = { hours: 12, minutes: 0 },\r\n onChange,\r\n is24Hour = false,\r\n disabled,\r\n className,\r\n}: TimePickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [period, setPeriod] = React.useState<\"AM\" | \"PM\">(value.hours >= 12 ? \"PM\" : \"AM\")\r\n\r\n const displayHours = is24Hour\r\n ? value.hours\r\n : value.hours === 0\r\n ? 12\r\n : value.hours > 12\r\n ? value.hours - 12\r\n : value.hours\r\n\r\n const formatTime = () => {\r\n const h = displayHours.toString().padStart(2, \"0\")\r\n const m = value.minutes.toString().padStart(2, \"0\")\r\n return is24Hour ? `${h}:${m}` : `${h}:${m} ${period}`\r\n }\r\n\r\n const handleHourChange = (hour: number) => {\r\n let newHours = hour\r\n if (!is24Hour) {\r\n if (period === \"PM\" && hour !== 12) newHours += 12\r\n if (period === \"AM\" && hour === 12) newHours = 0\r\n }\r\n onChange?.({ ...value, hours: newHours })\r\n }\r\n\r\n const handleMinuteChange = (minute: number) => {\r\n onChange?.({ ...value, minutes: minute })\r\n }\r\n\r\n const handlePeriodChange = (newPeriod: \"AM\" | \"PM\") => {\r\n setPeriod(newPeriod)\r\n let newHours = value.hours\r\n if (newPeriod === \"PM\" && value.hours < 12) newHours += 12\r\n if (newPeriod === \"AM\" && value.hours >= 12) newHours -= 12\r\n onChange?.({ ...value, hours: newHours })\r\n }\r\n\r\n const hours = is24Hour\r\n ? Array.from({ length: 24 }, (_, i) => i)\r\n : Array.from({ length: 12 }, (_, i) => i + 1)\r\n\r\n const minutes = Array.from({ length: 12 }, (_, i) => i * 5)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\"w-full justify-start font-normal\", className)}\r\n >\r\n <Clock className=\"mr-2 h-4 w-4\" />\r\n {formatTime()}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-2\" align=\"start\">\r\n <div className=\"flex gap-1\">\r\n {/* Hours */}\r\n <div className=\"h-32 w-12 overflow-y-auto rounded border bg-muted/30\">\r\n {hours.map((hour) => (\r\n <button\r\n key={hour}\r\n onClick={() => handleHourChange(hour)}\r\n className={cn(\r\n \"w-full py-1 text-sm font-medium transition-colors\",\r\n \"hover:bg-accent\",\r\n displayHours === hour && \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n )}\r\n >\r\n {hour.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"flex items-center text-muted-foreground font-bold\">:</div>\r\n\r\n {/* Minutes */}\r\n <div className=\"h-32 w-12 overflow-y-auto rounded border bg-muted/30\">\r\n {minutes.map((minute) => (\r\n <button\r\n key={minute}\r\n onClick={() => handleMinuteChange(minute)}\r\n className={cn(\r\n \"w-full py-1 text-sm font-medium transition-colors\",\r\n \"hover:bg-accent\",\r\n value.minutes === minute && \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n )}\r\n >\r\n {minute.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* AM/PM */}\r\n {!is24Hour && (\r\n <div className=\"flex flex-col gap-1\">\r\n <button\r\n onClick={() => handlePeriodChange(\"AM\")}\r\n className={cn(\r\n \"px-2 py-1 text-xs font-medium rounded border transition-colors flex-1\",\r\n \"hover:bg-accent\",\r\n period === \"AM\" && \"bg-primary text-primary-foreground border-primary\"\r\n )}\r\n >\r\n AM\r\n </button>\r\n <button\r\n onClick={() => handlePeriodChange(\"PM\")}\r\n className={cn(\r\n \"px-2 py-1 text-xs font-medium rounded border transition-colors flex-1\",\r\n \"hover:bg-accent\",\r\n period === \"PM\" && \"bg-primary text-primary-foreground border-primary\"\r\n )}\r\n >\r\n PM\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { TimePicker }\r\n","import * as React from \"react\"\r\nimport { Minus, Plus } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Input } from \"@/components/ui/input\"\r\n\r\nexport interface NumberInputProps {\r\n value?: number\r\n onChange?: (value: number) => void\r\n min?: number\r\n max?: number\r\n step?: number\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction NumberInput({\r\n value = 0,\r\n onChange,\r\n min = -Infinity,\r\n max = Infinity,\r\n step = 1,\r\n disabled,\r\n className,\r\n}: NumberInputProps) {\r\n const handleIncrement = () => {\r\n const newValue = Math.min(value + step, max)\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleDecrement = () => {\r\n const newValue = Math.max(value - step, min)\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const parsed = parseFloat(e.target.value)\r\n if (!isNaN(parsed)) {\r\n const clamped = Math.min(Math.max(parsed, min), max)\r\n onChange?.(clamped)\r\n }\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"icon\"\r\n onClick={handleDecrement}\r\n disabled={disabled || value <= min}\r\n className=\"h-9 w-9\"\r\n >\r\n <Minus className=\"h-4 w-4\" />\r\n </Button>\r\n <Input\r\n type=\"number\"\r\n value={value}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n className=\"w-20 text-center [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"icon\"\r\n onClick={handleIncrement}\r\n disabled={disabled || value >= max}\r\n className=\"h-9 w-9\"\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport { NumberInput }\r\n","import * as React from \"react\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Badge } from \"@/components/ui/badge\"\r\n\r\nexport interface TagInputProps {\r\n values?: string[]\r\n onChange?: (values: string[]) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n className?: string\r\n maxTags?: number\r\n}\r\n\r\nfunction TagInput({\r\n values = [],\r\n onChange,\r\n placeholder = \"Add tag...\",\r\n disabled,\r\n className,\r\n maxTags,\r\n}: TagInputProps) {\r\n const [inputValue, setInputValue] = React.useState(\"\")\r\n const inputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"Enter\" && inputValue.trim()) {\r\n e.preventDefault()\r\n if (maxTags && values.length >= maxTags) return\r\n if (!values.includes(inputValue.trim())) {\r\n onChange?.([...values, inputValue.trim()])\r\n }\r\n setInputValue(\"\")\r\n } else if (e.key === \"Backspace\" && !inputValue && values.length > 0) {\r\n onChange?.(values.slice(0, -1))\r\n }\r\n }\r\n\r\n const removeTag = (tagToRemove: string) => {\r\n onChange?.(values.filter((tag) => tag !== tagToRemove))\r\n }\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-wrap gap-2 rounded-md border border-input bg-background px-3 py-2 focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n {values.map((tag) => (\r\n <Badge key={tag} variant=\"secondary\" className=\"gap-1\">\r\n {tag}\r\n {!disabled && (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n removeTag(tag)\r\n }}\r\n className=\"ml-1 rounded-full outline-none hover:bg-muted\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n )}\r\n </Badge>\r\n ))}\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={inputValue}\r\n onChange={(e) => setInputValue(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={values.length === 0 ? placeholder : \"\"}\r\n disabled={disabled || (maxTags ? values.length >= maxTags : false)}\r\n className=\"flex-1 min-w-[120px] bg-transparent outline-none placeholder:text-muted-foreground text-sm\"\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport { TagInput }\r\n","import * as React from \"react\"\r\nimport { Check, ChevronsUpDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\n\r\nexport interface ComboboxOption {\r\n value: string\r\n label: string\r\n}\r\n\r\nexport interface ComboboxProps {\r\n options: ComboboxOption[]\r\n value?: string\r\n onChange?: (value: string) => void\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n emptyText?: string\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction Combobox({\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select option...\",\r\n searchPlaceholder = \"Search...\",\r\n emptyText = \"No results found.\",\r\n disabled,\r\n className,\r\n}: ComboboxProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [search, setSearch] = React.useState(\"\")\r\n\r\n const filteredOptions = options.filter((option) =>\r\n option.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n\r\n const selectedOption = options.find((option) => option.value === value)\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-between font-normal\",\r\n !value && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n {selectedOption ? selectedOption.label : placeholder}\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-full p-0\" align=\"start\">\r\n <div className=\"p-2 border-b\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n className=\"h-8\"\r\n />\r\n </div>\r\n <div className=\"max-h-60 overflow-auto p-1\">\r\n {filteredOptions.length === 0 ? (\r\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\r\n {emptyText}\r\n </div>\r\n ) : (\r\n filteredOptions.map((option) => (\r\n <button\r\n key={option.value}\r\n onClick={() => {\r\n onChange?.(option.value === value ? \"\" : option.value)\r\n setOpen(false)\r\n setSearch(\"\")\r\n }}\r\n className={cn(\r\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground\",\r\n value === option.value && \"bg-accent\"\r\n )}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n {value === option.value && <Check className=\"h-4 w-4\" />}\r\n </span>\r\n {option.label}\r\n </button>\r\n ))\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { Combobox }\r\n","import * as React from \"react\"\r\nimport { Check, ChevronsUpDown, X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Badge } from \"@/components/ui/badge\"\r\n\r\nexport interface MultiSelectOption {\r\n value: string\r\n label: string\r\n}\r\n\r\nexport interface MultiSelectProps {\r\n options: MultiSelectOption[]\r\n value?: string[]\r\n onChange?: (value: string[]) => void\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n emptyText?: string\r\n disabled?: boolean\r\n className?: string\r\n maxDisplay?: number\r\n}\r\n\r\nfunction MultiSelect({\r\n options,\r\n value = [],\r\n onChange,\r\n placeholder = \"Select options...\",\r\n searchPlaceholder = \"Search...\",\r\n emptyText = \"No results found.\",\r\n disabled,\r\n className,\r\n maxDisplay = 3,\r\n}: MultiSelectProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [search, setSearch] = React.useState(\"\")\r\n\r\n const filteredOptions = options.filter((option) =>\r\n option.label.toLowerCase().includes(search.toLowerCase())\r\n )\r\n\r\n const selectedOptions = options.filter((option) => value.includes(option.value))\r\n\r\n const handleSelect = (optionValue: string) => {\r\n const newValue = value.includes(optionValue)\r\n ? value.filter((v) => v !== optionValue)\r\n : [...value, optionValue]\r\n onChange?.(newValue)\r\n }\r\n\r\n const handleRemove = (optionValue: string, e: React.MouseEvent) => {\r\n e.stopPropagation()\r\n onChange?.(value.filter((v) => v !== optionValue))\r\n }\r\n\r\n const displayText = () => {\r\n if (value.length === 0) return placeholder\r\n if (value.length <= maxDisplay) {\r\n return selectedOptions.map((opt) => opt.label).join(\", \")\r\n }\r\n return `${value.length} selected`\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n disabled={disabled}\r\n className={cn(\r\n \"w-full justify-between font-normal\",\r\n value.length === 0 && \"text-muted-foreground\",\r\n className\r\n )}\r\n >\r\n <span className=\"truncate\">{displayText()}</span>\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-full p-0\" align=\"start\">\r\n <div className=\"p-2 border-b\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n className=\"h-8\"\r\n />\r\n </div>\r\n {value.length > 0 && (\r\n <div className=\"flex flex-wrap gap-1 p-2 border-b\">\r\n {selectedOptions.map((option) => (\r\n <Badge\r\n key={option.value}\r\n variant=\"secondary\"\r\n className=\"pr-1\"\r\n >\r\n {option.label}\r\n <button\r\n onClick={(e) => handleRemove(option.value, e)}\r\n className=\"ml-1 rounded-full hover:bg-muted\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n </div>\r\n )}\r\n <div className=\"max-h-60 overflow-auto p-1\">\r\n {filteredOptions.length === 0 ? (\r\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\r\n {emptyText}\r\n </div>\r\n ) : (\r\n filteredOptions.map((option) => {\r\n const isSelected = value.includes(option.value)\r\n return (\r\n <button\r\n key={option.value}\r\n onClick={() => handleSelect(option.value)}\r\n className={cn(\r\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground\",\r\n isSelected && \"bg-accent\"\r\n )}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n {isSelected && <Check className=\"h-4 w-4\" />}\r\n </span>\r\n {option.label}\r\n </button>\r\n )\r\n })\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { MultiSelect }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface OTPInputProps {\r\n length?: number\r\n value?: string\r\n onChange?: (value: string) => void\r\n onComplete?: (value: string) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction OTPInput({\r\n length = 6,\r\n value = \"\",\r\n onChange,\r\n onComplete,\r\n disabled,\r\n className,\r\n}: OTPInputProps) {\r\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([])\r\n\r\n const handleChange = (index: number, char: string) => {\r\n if (!/^\\d*$/.test(char)) return\r\n\r\n const newValue = value.split(\"\")\r\n newValue[index] = char\r\n const result = newValue.join(\"\").slice(0, length)\r\n onChange?.(result)\r\n\r\n if (char && index < length - 1) {\r\n inputRefs.current[index + 1]?.focus()\r\n }\r\n\r\n if (result.length === length) {\r\n onComplete?.(result)\r\n }\r\n }\r\n\r\n const handleKeyDown = (index: number, e: React.KeyboardEvent) => {\r\n if (e.key === \"Backspace\" && !value[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus()\r\n }\r\n }\r\n\r\n const handlePaste = (e: React.ClipboardEvent) => {\r\n e.preventDefault()\r\n const pastedData = e.clipboardData.getData(\"text\").replace(/\\D/g, \"\").slice(0, length)\r\n onChange?.(pastedData)\r\n if (pastedData.length === length) {\r\n onComplete?.(pastedData)\r\n }\r\n inputRefs.current[Math.min(pastedData.length, length - 1)]?.focus()\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex gap-2\", className)}>\r\n {Array.from({ length }).map((_, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => { inputRefs.current[index] = el }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value[index] || \"\"}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onPaste={handlePaste}\r\n disabled={disabled}\r\n className={cn(\r\n \"h-12 w-12 rounded-lg border border-input bg-background text-center text-lg font-semibold\",\r\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport { OTPInput }\r\n","import * as React from \"react\"\r\nimport { Upload, X, FileIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\nexport interface FileUploadProps {\r\n accept?: string\r\n maxSize?: number\r\n multiple?: boolean\r\n onUpload?: (files: File[]) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction FileUpload({\r\n accept,\r\n maxSize,\r\n multiple = false,\r\n onUpload,\r\n disabled,\r\n className,\r\n}: FileUploadProps) {\r\n const [files, setFiles] = React.useState<File[]>([])\r\n const [isDragging, setIsDragging] = React.useState(false)\r\n const inputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const handleFiles = (fileList: FileList | null) => {\r\n if (!fileList) return\r\n\r\n const validFiles = Array.from(fileList).filter((file) => {\r\n if (maxSize && file.size > maxSize) return false\r\n return true\r\n })\r\n\r\n const newFiles = multiple ? [...files, ...validFiles] : validFiles.slice(0, 1)\r\n setFiles(newFiles)\r\n onUpload?.(newFiles)\r\n }\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault()\r\n setIsDragging(false)\r\n if (!disabled) {\r\n handleFiles(e.dataTransfer.files)\r\n }\r\n }\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault()\r\n if (!disabled) {\r\n setIsDragging(true)\r\n }\r\n }\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false)\r\n }\r\n\r\n const removeFile = (index: number) => {\r\n const newFiles = files.filter((_, i) => i !== index)\r\n setFiles(newFiles)\r\n onUpload?.(newFiles)\r\n }\r\n\r\n const formatSize = (bytes: number) => {\r\n if (bytes < 1024) return bytes + \" B\"\r\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\"\r\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\"\r\n }\r\n\r\n return (\r\n <div className={cn(\"space-y-4\", className)}>\r\n <div\r\n onClick={() => !disabled && inputRef.current?.click()}\r\n onDrop={handleDrop}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n className={cn(\r\n \"border-2 border-dashed rounded-lg p-8 text-center transition-colors cursor-pointer\",\r\n isDragging ? \"border-primary bg-primary/5\" : \"border-muted-foreground/25\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n \"hover:border-primary/50\"\r\n )}\r\n >\r\n <Upload className=\"h-10 w-10 mx-auto mb-4 text-muted-foreground\" />\r\n <p className=\"text-sm text-muted-foreground mb-1\">\r\n Drag & drop files here, or click to select\r\n </p>\r\n {maxSize && (\r\n <p className=\"text-xs text-muted-foreground\">\r\n Max file size: {formatSize(maxSize)}\r\n </p>\r\n )}\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={(e) => handleFiles(e.target.files)}\r\n disabled={disabled}\r\n className=\"hidden\"\r\n />\r\n </div>\r\n\r\n {files.length > 0 && (\r\n <div className=\"space-y-2\">\r\n {files.map((file, index) => (\r\n <div\r\n key={index}\r\n className=\"flex items-center gap-3 p-3 rounded-lg border bg-muted/50\"\r\n >\r\n <FileIcon className=\"h-8 w-8 text-muted-foreground\" />\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium truncate\">{file.name}</p>\r\n <p className=\"text-xs text-muted-foreground\">{formatSize(file.size)}</p>\r\n </div>\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => removeFile(index)}\r\n className=\"h-8 w-8\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport { FileUpload }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Label } from \"@/components/ui/label\"\r\n\r\nconst PRESET_COLORS = [\r\n \"#ef4444\", \"#f97316\", \"#eab308\", \"#22c55e\", \"#14b8a6\",\r\n \"#3b82f6\", \"#8b5cf6\", \"#ec4899\", \"#000000\", \"#ffffff\",\r\n]\r\n\r\nexport interface ColorPickerProps {\r\n value?: string\r\n onChange?: (value: string) => void\r\n disabled?: boolean\r\n className?: string\r\n}\r\n\r\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\r\n if (!result) return { h: 0, s: 100, l: 50 }\r\n\r\n let r = parseInt(result[1], 16) / 255\r\n let g = parseInt(result[2], 16) / 255\r\n let b = parseInt(result[3], 16) / 255\r\n\r\n const max = Math.max(r, g, b), min = Math.min(r, g, b)\r\n let h = 0, s = 0\r\n const l = (max + min) / 2\r\n\r\n if (max !== min) {\r\n const d = max - min\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n switch (max) {\r\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break\r\n case g: h = ((b - r) / d + 2) / 6; break\r\n case b: h = ((r - g) / d + 4) / 6; break\r\n }\r\n }\r\n\r\n return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) }\r\n}\r\n\r\nfunction hslToHex(h: number, s: number, l: number): string {\r\n s /= 100\r\n l /= 100\r\n const a = s * Math.min(l, 1 - l)\r\n const f = (n: number) => {\r\n const k = (n + h / 30) % 12\r\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\r\n return Math.round(255 * color).toString(16).padStart(2, '0')\r\n }\r\n return `#${f(0)}${f(8)}${f(4)}`\r\n}\r\n\r\nfunction ColorPicker({\r\n value = \"#3b82f6\",\r\n onChange,\r\n disabled,\r\n className,\r\n}: ColorPickerProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [hsl, setHsl] = React.useState(() => hexToHsl(value))\r\n const [hexInput, setHexInput] = React.useState(value)\r\n const gradientRef = React.useRef<HTMLDivElement>(null)\r\n\r\n React.useEffect(() => {\r\n setHsl(hexToHsl(value))\r\n setHexInput(value)\r\n }, [value])\r\n\r\n const updateColor = (newHsl: { h: number; s: number; l: number }) => {\r\n setHsl(newHsl)\r\n const hex = hslToHex(newHsl.h, newHsl.s, newHsl.l)\r\n setHexInput(hex)\r\n onChange?.(hex)\r\n }\r\n\r\n const handleGradientClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!gradientRef.current) return\r\n const rect = gradientRef.current.getBoundingClientRect()\r\n const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))\r\n const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height))\r\n updateColor({ ...hsl, s: Math.round(x * 100), l: Math.round((1 - y) * 100) })\r\n }\r\n\r\n const handleHexChange = (hex: string) => {\r\n setHexInput(hex)\r\n if (/^#[0-9A-Fa-f]{6}$/.test(hex)) {\r\n const newHsl = hexToHsl(hex)\r\n setHsl(newHsl)\r\n onChange?.(hex)\r\n }\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n disabled={disabled}\r\n className={cn(\"w-full justify-start gap-2\", className)}\r\n >\r\n <div\r\n className=\"h-5 w-5 rounded border shadow-sm\"\r\n style={{ backgroundColor: value }}\r\n />\r\n <span className=\"font-mono text-sm\">{value}</span>\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-72 p-3\" align=\"start\">\r\n <div className=\"space-y-3\">\r\n {/* Saturation/Lightness Gradient */}\r\n <div\r\n ref={gradientRef}\r\n onClick={handleGradientClick}\r\n className=\"relative h-40 rounded-lg cursor-crosshair overflow-hidden border\"\r\n style={{\r\n background: `\r\n linear-gradient(to top, #000 0%, transparent 100%),\r\n linear-gradient(to right, #fff 0%, hsl(${hsl.h}, 100%, 50%) 100%)\r\n `\r\n }}\r\n >\r\n <div\r\n className=\"absolute w-4 h-4 rounded-full border-2 border-white shadow-md transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\r\n style={{\r\n left: `${hsl.s}%`,\r\n top: `${100 - hsl.l}%`,\r\n backgroundColor: value,\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Hue Slider */}\r\n <div className=\"space-y-1\">\r\n <Label className=\"text-xs\">Hue</Label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={360}\r\n value={hsl.h}\r\n onChange={(e) => updateColor({ ...hsl, h: parseInt(e.target.value) })}\r\n className=\"w-full h-3 rounded-lg appearance-none cursor-pointer\"\r\n style={{\r\n background: `linear-gradient(to right, \r\n hsl(0, 100%, 50%), \r\n hsl(60, 100%, 50%), \r\n hsl(120, 100%, 50%), \r\n hsl(180, 100%, 50%), \r\n hsl(240, 100%, 50%), \r\n hsl(300, 100%, 50%), \r\n hsl(360, 100%, 50%)\r\n )`\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Hex Input */}\r\n <div className=\"flex gap-2 items-center\">\r\n <div\r\n className=\"h-9 w-9 rounded-md border flex-shrink-0 shadow-inner\"\r\n style={{ backgroundColor: value }}\r\n />\r\n <Input\r\n value={hexInput}\r\n onChange={(e) => handleHexChange(e.target.value)}\r\n placeholder=\"#000000\"\r\n className=\"font-mono text-sm\"\r\n />\r\n </div>\r\n\r\n {/* Presets */}\r\n <div className=\"grid grid-cols-5 gap-1.5\">\r\n {PRESET_COLORS.map((color) => (\r\n <button\r\n key={color}\r\n onClick={() => {\r\n onChange?.(color)\r\n setHsl(hexToHsl(color))\r\n setHexInput(color)\r\n }}\r\n className={cn(\r\n \"h-7 w-7 rounded-md border-2 transition-transform hover:scale-110\",\r\n value === color ? \"border-primary ring-2 ring-ring\" : \"border-transparent\"\r\n )}\r\n style={{ backgroundColor: color }}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { ColorPicker }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\r\n as?: React.ElementType\r\n}\r\n\r\nconst Box = React.forwardRef<HTMLDivElement, BoxProps>(\r\n ({ className, as: Component = \"div\", ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nBox.displayName = \"Box\"\r\n\r\nexport { Box }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: \"row\" | \"row-reverse\" | \"col\" | \"col-reverse\"\r\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\"\r\n justify?: \"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\"\r\n align?: \"start\" | \"end\" | \"center\" | \"baseline\" | \"stretch\"\r\n gap?: number | string\r\n}\r\n\r\nconst Flex = React.forwardRef<HTMLDivElement, FlexProps>(\r\n ({ className, direction, wrap, justify, align, gap, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n direction && `flex-${direction}`,\r\n wrap && `flex-${wrap}`,\r\n justify && `justify-${justify}`,\r\n align && `items-${align}`,\r\n typeof gap === \"number\" && `gap-${gap}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof gap === \"string\" ? { gap } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nFlex.displayName = \"Flex\"\r\n\r\nexport { Flex }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n spacing?: number | string\r\n align?: \"start\" | \"end\" | \"center\" | \"stretch\"\r\n}\r\n\r\nconst VStack = React.forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, spacing = 4, align, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-col\",\r\n typeof spacing === \"number\" && `gap-${spacing}`,\r\n align && `items-${align}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof spacing === \"string\" ? { gap: spacing } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nVStack.displayName = \"VStack\"\r\n\r\nconst HStack = React.forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, spacing = 4, align = \"center\", style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-row\",\r\n typeof spacing === \"number\" && `gap-${spacing}`,\r\n align && `items-${align}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof spacing === \"string\" ? { gap: spacing } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nHStack.displayName = \"HStack\"\r\n\r\nexport { VStack, HStack }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n cols?: number | { sm?: number; md?: number; lg?: number; xl?: number }\r\n gap?: number | string\r\n}\r\n\r\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, gap = 4, style, ...props }, ref) => {\r\n const colClasses = typeof cols === \"number\"\r\n ? `grid-cols-${cols}`\r\n : [\r\n cols.sm && `sm:grid-cols-${cols.sm}`,\r\n cols.md && `md:grid-cols-${cols.md}`,\r\n cols.lg && `lg:grid-cols-${cols.lg}`,\r\n cols.xl && `xl:grid-cols-${cols.xl}`,\r\n ].filter(Boolean).join(\" \")\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid\",\r\n colClasses,\r\n typeof gap === \"number\" && `gap-${gap}`,\r\n className\r\n )}\r\n style={{\r\n ...(typeof gap === \"string\" ? { gap } : {}),\r\n ...style,\r\n }}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nGrid.displayName = \"Grid\"\r\n\r\nexport { Grid }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\"\r\n centered?: boolean\r\n}\r\n\r\nconst maxWidthMap = {\r\n sm: \"max-w-screen-sm\",\r\n md: \"max-w-screen-md\",\r\n lg: \"max-w-screen-lg\",\r\n xl: \"max-w-screen-xl\",\r\n \"2xl\": \"max-w-screen-2xl\",\r\n full: \"max-w-full\",\r\n}\r\n\r\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n ({ className, maxWidth = \"lg\", centered = true, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4\",\r\n maxWidthMap[maxWidth],\r\n centered && \"mx-auto\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nContainer.displayName = \"Container\"\r\n\r\nexport { Container }\r\n","\r\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\r\n\r\nconst AspectRatio = AspectRatioPrimitive.Root\r\n\r\nexport { AspectRatio }\r\n","import * as React from \"react\"\r\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = React.forwardRef<\r\n React.ElementRef<typeof CollapsiblePrimitive.CollapsibleContent>,\r\n React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.CollapsibleContent>\r\n>(({ className, children, ...props }, ref) => (\r\n <CollapsiblePrimitive.CollapsibleContent\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden transition-all duration-300 ease-in-out\",\r\n \"data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"pb-2\">\r\n {children}\r\n </div>\r\n </CollapsiblePrimitive.CollapsibleContent>\r\n))\r\nCollapsibleContent.displayName = \"CollapsibleContent\"\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst cardVariants = cva(\r\n \"rounded-xl text-card-foreground transition-all duration-300\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-card shadow-sm\",\r\n elevated: \"border border-white/10 bg-gradient-to-br from-card/80 to-card/40 backdrop-blur-xl shadow-2xl shadow-black/20\",\r\n glass: \"border border-white/10 bg-white/5 backdrop-blur-xl shadow-xl\",\r\n ghost: \"bg-transparent\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface CardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> { }\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant }), className)}\r\n {...props}\r\n />\r\n )\r\n)\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, cardVariants, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Table = React.forwardRef<\r\n HTMLTableElement,\r\n React.HTMLAttributes<HTMLTableElement>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table\r\n ref={ref}\r\n className={cn(\"w-full caption-bottom text-sm\", className)}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nTable.displayName = \"Table\"\r\n\r\nconst TableHeader = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\r\n))\r\nTableHeader.displayName = \"TableHeader\"\r\n\r\nconst TableBody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tbody\r\n ref={ref}\r\n className={cn(\"[&_tr:last-child]:border-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableBody.displayName = \"TableBody\"\r\n\r\nconst TableFooter = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n className={cn(\r\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableFooter.displayName = \"TableFooter\"\r\n\r\nconst TableRow = React.forwardRef<\r\n HTMLTableRowElement,\r\n React.HTMLAttributes<HTMLTableRowElement>\r\n>(({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableRow.displayName = \"TableRow\"\r\n\r\nconst TableHead = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.ThHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableHead.displayName = \"TableHead\"\r\n\r\nconst TableCell = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.TdHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCell.displayName = \"TableCell\"\r\n\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n React.HTMLAttributes<HTMLTableCaptionElement>\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCaption.displayName = \"TableCaption\"\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ntype ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\"\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {\r\n orientation?: ScrollAreaOrientation\r\n }\r\n>(({ className, children, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden\", className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n {(orientation === \"vertical\" || orientation === \"both\") && (\r\n <ScrollBar orientation=\"vertical\" />\r\n )}\r\n {(orientation === \"horizontal\" || orientation === \"both\") && (\r\n <ScrollBar orientation=\"horizontal\" />\r\n )}\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n))\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" &&\r\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" &&\r\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n))\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\r\n\r\nexport { ScrollArea, ScrollBar }\r\n","import * as React from \"react\"\r\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from \"react\"\r\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Accordion = AccordionPrimitive.Root\r\n\r\nconst AccordionItem = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <AccordionPrimitive.Item\r\n ref={ref}\r\n className={cn(\"border-b\", className)}\r\n {...props}\r\n />\r\n))\r\nAccordionItem.displayName = \"AccordionItem\"\r\n\r\nconst AccordionTrigger = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Header className=\"flex\">\r\n <AccordionPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n))\r\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\r\n\r\nconst AccordionContent = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Content\r\n ref={ref}\r\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\r\n {...props}\r\n >\r\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\r\n </AccordionPrimitive.Content>\r\n))\r\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\r\n","import * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> { }\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n}\r\n","import * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n))\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n))\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\r\n\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n))\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n))\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-semibold\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n}\r\n","import * as React from \"react\"\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider\r\n\r\nconst Tooltip = TooltipPrimitive.Root\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\r\n","import * as React from \"react\"\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\r\nimport { Command as CommandPrimitive } from \"cmdk\"\r\nimport { Search } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommand.displayName = CommandPrimitive.displayName\r\n\r\ninterface CommandDialogProps extends DialogProps { }\r\n\r\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\r\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\r\n {children}\r\n </Command>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n))\r\n\r\nCommandInput.displayName = CommandPrimitive.Input.displayName\r\n\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandList.displayName = CommandPrimitive.List.displayName\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => (\r\n <CommandPrimitive.Empty\r\n ref={ref}\r\n className=\"py-6 text-center text-sm\"\r\n {...props}\r\n />\r\n))\r\n\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\r\n\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 h-px bg-border\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\r\n\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected='true']:text-accent-foreground data-[disabled=true]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\n\r\nCommandItem.displayName = CommandPrimitive.Item.displayName\r\n\r\nconst CommandShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nCommandShortcut.displayName = \"CommandShortcut\"\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n}\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background text-foreground\",\r\n destructive:\r\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(alertVariants({ variant }), className)}\r\n {...props}\r\n />\r\n))\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\nexport { Alert, AlertTitle, AlertDescription }\r\n","import * as React from \"react\"\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { buttonVariants } from \"@/components/ui/button\"\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n))\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action\r\n ref={ref}\r\n className={cn(buttonVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n className={cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"mt-2 sm:mt-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Progress = React.forwardRef<\r\n React.ElementRef<typeof ProgressPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\r\n>(({ className, value, ...props }, ref) => (\r\n <ProgressPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ProgressPrimitive.Indicator\r\n className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n />\r\n </ProgressPrimitive.Root>\r\n))\r\nProgress.displayName = ProgressPrimitive.Root.displayName\r\n\r\nexport { Progress }\r\n","import { cn } from \"@/lib/utils\"\r\n\r\nfunction Skeleton({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div\r\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Skeleton }\r\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n switch(type){\n case 'success':\n return SuccessIcon;\n case 'info':\n return InfoIcon;\n case 'warning':\n return WarningIcon;\n case 'error':\n return ErrorIcon;\n default:\n return null;\n }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: [\n 'sonner-loading-wrapper',\n className\n ].filter(Boolean).join(' '),\n \"data-visible\": visible\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: `spinner-bar-${i}`\n }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n React.useEffect(()=>{\n const callback = ()=>{\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return ()=>window.removeEventListener('visibilitychange', callback);\n }, []);\n return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\nclass Observer {\n constructor(){\n // We use arrow functions to maintain the correct `this` reference\n this.subscribe = (subscriber)=>{\n this.subscribers.push(subscriber);\n return ()=>{\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n this.publish = (data)=>{\n this.subscribers.forEach((subscriber)=>subscriber(data));\n };\n this.addToast = (data)=>{\n this.publish(data);\n this.toasts = [\n ...this.toasts,\n data\n ];\n };\n this.create = (data)=>{\n var _data_id;\n const { message, ...rest } = data;\n const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast)=>{\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast)=>{\n if (toast.id === id) {\n this.publish({\n ...toast,\n ...data,\n id,\n title: message\n });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message\n };\n }\n return toast;\n });\n } else {\n this.addToast({\n title: message,\n ...rest,\n dismissible,\n id\n });\n }\n return id;\n };\n this.dismiss = (id)=>{\n if (id) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({\n id,\n dismiss: true\n })));\n } else {\n this.toasts.forEach((toast)=>{\n this.subscribers.forEach((subscriber)=>subscriber({\n id: toast.id,\n dismiss: true\n }));\n });\n }\n return id;\n };\n this.message = (message, data)=>{\n return this.create({\n ...data,\n message\n });\n };\n this.error = (message, data)=>{\n return this.create({\n ...data,\n message,\n type: 'error'\n });\n };\n this.success = (message, data)=>{\n return this.create({\n ...data,\n type: 'success',\n message\n });\n };\n this.info = (message, data)=>{\n return this.create({\n ...data,\n type: 'info',\n message\n });\n };\n this.warning = (message, data)=>{\n return this.create({\n ...data,\n type: 'warning',\n message\n });\n };\n this.loading = (message, data)=>{\n return this.create({\n ...data,\n type: 'loading',\n message\n });\n };\n this.promise = (promise, data)=>{\n if (!data) {\n // Nothing to show\n return;\n }\n let id = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== undefined;\n let result;\n const originalPromise = p.then(async (response)=>{\n result = [\n 'resolve',\n response\n ];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({\n id,\n type: 'default',\n message: response\n });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (response instanceof Error) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'success',\n description,\n ...toastSettings\n });\n }\n }).catch(async (error)=>{\n result = [\n 'reject',\n error\n ];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n }\n }).finally(()=>{\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n data.finally == null ? void 0 : data.finally.call(data);\n });\n const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return {\n unwrap\n };\n } else {\n return Object.assign(id, {\n unwrap\n });\n }\n };\n this.custom = (jsx, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n this.create({\n jsx: jsx(id),\n id,\n ...data\n });\n return id;\n };\n this.getActiveToasts = ()=>{\n return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n };\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n ToastState.addToast({\n title: message,\n ...data,\n id\n });\n return id;\n};\nconst isHttpResponse = (data)=>{\n return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading\n}, {\n getHistory,\n getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n const [y, x] = position.split('-');\n const directions = [];\n if (y) {\n directions.push(y);\n }\n if (x) {\n directions.push(x);\n }\n return directions;\n}\nconst Toast = (props)=>{\n var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n const [swipeDirection, setSwipeDirection] = React.useState(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef(null);\n const toastRef = React.useRef(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n heights,\n toast.id\n ]);\n const closeButton = React.useMemo(()=>{\n var _toast_closeButton;\n return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n }, [\n toast.closeButton,\n closeButtonFromToaster\n ]);\n const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n toast.duration,\n durationFromToaster\n ]);\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(()=>{\n return heights.reduce((prev, curr, reducerIndex)=>{\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n return prev + curr.height;\n }, 0);\n }, [\n heights,\n heightIndex\n ]);\n const isDocumentHidden = useIsDocumentHidden();\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n heightIndex,\n toastsHeightBefore\n ]);\n React.useEffect(()=>{\n remainingTime.current = duration;\n }, [\n duration\n ]);\n React.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n React.useEffect(()=>{\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h)=>[\n {\n toastId: toast.id,\n height,\n position: toast.position\n },\n ...h\n ]);\n return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n }\n }, [\n setHeights,\n toast.id\n ]);\n React.useLayoutEffect(()=>{\n // Keep height up to date with the content in case it updates\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n setInitialHeight(newHeight);\n setHeights((heights)=>{\n const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n if (!alreadyExists) {\n return [\n {\n toastId: toast.id,\n height: newHeight,\n position: toast.position\n },\n ...heights\n ];\n } else {\n return heights.map((height)=>height.toastId === toast.id ? {\n ...height,\n height: newHeight\n } : height);\n }\n });\n }, [\n mounted,\n toast.title,\n toast.description,\n setHeights,\n toast.id,\n toast.jsx,\n toast.action,\n toast.cancel\n ]);\n const deleteToast = React.useCallback(()=>{\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n setTimeout(()=>{\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [\n toast,\n removeToast,\n setHeights,\n offset\n ]);\n React.useEffect(()=>{\n if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId;\n // Pause the timer on each hover\n const pauseTimer = ()=>{\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n const startTimer = ()=>{\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n closeTimerStartTimeRef.current = new Date().getTime();\n // Let the toast know it has started\n timeoutId = setTimeout(()=>{\n toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n deleteToast();\n }, remainingTime.current);\n };\n if (expanded || interacting || isDocumentHidden) {\n pauseTimer();\n } else {\n startTimer();\n }\n return ()=>clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n toast,\n toastType,\n isDocumentHidden,\n deleteToast\n ]);\n React.useEffect(()=>{\n if (toast.delete) {\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n }\n }, [\n deleteToast,\n toast.delete\n ]);\n function getLoadingIcon() {\n var _toast_classNames;\n if (icons == null ? void 0 : icons.loading) {\n var _toast_classNames1;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n \"data-visible\": toastType === 'loading'\n }, icons.loading);\n }\n return /*#__PURE__*/ React.createElement(Loader, {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n visible: toastType === 'loading'\n });\n }\n const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n var _toast_richColors, _icons_close;\n return /*#__PURE__*/ React.createElement(\"li\", {\n tabIndex: 0,\n ref: toastRef,\n className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastType]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n \"data-mounted\": mounted,\n \"data-promise\": Boolean(toast.promise),\n \"data-swiped\": isSwiped,\n \"data-removed\": removed,\n \"data-visible\": isVisible,\n \"data-y-position\": y,\n \"data-x-position\": x,\n \"data-index\": index,\n \"data-front\": isFront,\n \"data-swiping\": swiping,\n \"data-dismissible\": dismissible,\n \"data-type\": toastType,\n \"data-invert\": invert,\n \"data-swipe-out\": swipeOut,\n \"data-swipe-direction\": swipeOutDirection,\n \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n \"data-testid\": toast.testId,\n style: {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style\n },\n onDragEnd: ()=>{\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n },\n onPointerDown: (event)=>{\n if (event.button === 2) return; // Return early on right click\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n event.target.setPointerCapture(event.pointerId);\n if (event.target.tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n },\n onPointerUp: ()=>{\n var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n if (swipeOut || !dismissible) return;\n pointerStartRef.current = null;\n const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n deleteToast();\n setSwipeOut(true);\n return;\n } else {\n var _toastRef_current2, _toastRef_current3;\n (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n }\n setIsSwiped(false);\n setSwiping(false);\n setSwipeDirection(null);\n },\n onPointerMove: (event)=>{\n var _window_getSelection, // Apply transform using both x and y values\n _toastRef_current, _toastRef_current1;\n if (!pointerStartRef.current || !dismissible) return;\n const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n if (isHighlighted) return;\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n var _props_swipeDirections;\n const swipeDirections = (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n let swipeAmount = {\n x: 0,\n y: 0\n };\n const getDampening = (delta)=>{\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n };\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = yDelta * getDampening(yDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = xDelta * getDampening(xDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n }\n }\n }\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }\n }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n \"aria-label\": closeButtonAriaLabel,\n \"data-disabled\": disabled,\n \"data-close-button\": true,\n onClick: disabled || !dismissible ? ()=>{} : ()=>{\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n },\n className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-icon\": \"\",\n className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n }, toast.promise || toast.type === 'loading' && !toast.icon ? toast.icon || getLoadingIcon() : null, toast.type !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-content\": \"\",\n className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n }, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-title\": \"\",\n className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-description\": \"\",\n className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-cancel\": true,\n style: toast.cancelButtonStyle || cancelButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-action\": true,\n style: toast.actionButtonStyle || actionButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n if (event.defaultPrevented) return;\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n const dirAttribute = document.documentElement.getAttribute('dir');\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction;\n }\n return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n const styles = {};\n [\n defaultOffset,\n mobileOffset\n ].forEach((offset, index)=>{\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n function assignAll(offset) {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n return styles;\n}\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState([]);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n });\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, []);\n return {\n toasts: activeToasts\n };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n const { id, invert, position = 'bottom-right', hotkey = [\n 'altKey',\n 'KeyT'\n ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;\n const [toasts, setToasts] = React.useState([]);\n const filteredToasts = React.useMemo(()=>{\n if (id) {\n return toasts.filter((toast)=>toast.toasterId === id);\n }\n return toasts.filter((toast)=>!toast.toasterId);\n }, [\n toasts,\n id\n ]);\n const possiblePositions = React.useMemo(()=>{\n return Array.from(new Set([\n position\n ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n }, [\n filteredToasts,\n position\n ]);\n const [heights, setHeights] = React.useState([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n const listRef = React.useRef(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef(null);\n const isFocusWithinRef = React.useRef(false);\n const removeToast = React.useCallback((toastToRemove)=>{\n setToasts((toasts)=>{\n var _toasts_find;\n if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n ToastState.dismiss(toastToRemove.id);\n }\n return toasts.filter(({ id })=>id !== toastToRemove.id);\n });\n }, []);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n // Prevent batching of other state updates\n requestAnimationFrame(()=>{\n setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n ...t,\n delete: true\n } : t));\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches })=>{\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches })=>{\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [\n theme\n ]);\n React.useEffect(()=>{\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n const handleKeyDown = (event)=>{\n var _listRef_current;\n const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key);\n if (isHotkeyPressed) {\n var _listRef_current1;\n setExpanded(true);\n (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n }\n if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return ()=>document.removeEventListener('keydown', handleKeyDown);\n }, [\n hotkey\n ]);\n React.useEffect(()=>{\n if (listRef.current) {\n return ()=>{\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [\n listRef.current\n ]);\n return(// Remove item from normal navigation flow, only available via hotkey\n /*#__PURE__*/ React.createElement(\"section\", {\n ref: ref,\n \"aria-label\": `${containerAriaLabel} ${hotkeyLabel}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: true\n }, possiblePositions.map((position, index)=>{\n var _heights_;\n const [y, x] = position.split('-');\n if (!filteredToasts.length) return null;\n return /*#__PURE__*/ React.createElement(\"ol\", {\n key: position,\n dir: dir === 'auto' ? getDocumentDirection() : dir,\n tabIndex: -1,\n ref: listRef,\n className: className,\n \"data-sonner-toaster\": true,\n \"data-sonner-theme\": actualTheme,\n \"data-y-position\": y,\n \"data-x-position\": x,\n style: {\n '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset)\n },\n onBlur: (event)=>{\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n }\n }\n },\n onFocus: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget;\n }\n },\n onMouseEnter: ()=>setExpanded(true),\n onMouseMove: ()=>setExpanded(true),\n onMouseLeave: ()=>{\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n },\n onDragEnd: ()=>setExpanded(false),\n onPointerDown: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n setInteracting(true);\n },\n onPointerUp: ()=>setInteracting(false)\n }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n var _toastOptions_duration, _toastOptions_closeButton;\n return /*#__PURE__*/ React.createElement(Toast, {\n key: toast.id,\n icons: icons,\n index: index,\n toast: toast,\n defaultRichColors: richColors,\n duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n className: toastOptions == null ? void 0 : toastOptions.className,\n descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n invert: invert,\n visibleToasts: visibleToasts,\n closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n interacting: interacting,\n position: position,\n style: toastOptions == null ? void 0 : toastOptions.style,\n unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n removeToast: removeToast,\n toasts: filteredToasts.filter((t)=>t.position == toast.position),\n heights: heights.filter((h)=>h.position == toast.position),\n setHeights: setHeights,\n expandByDefault: expand,\n gap: gap,\n expanded: expanded,\n swipeDirections: props.swipeDirections\n });\n }));\n })));\n});\n\nexport { Toaster, toast, useSonner };\n","import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport type Theme = \"dark\" | \"light\" | \"system\"\r\n\r\nexport type ThemeProviderProps = {\r\n /** Wrap your application */\r\n children: React.ReactNode\r\n /** Initial theme when nothing is stored yet. @default \"system\" */\r\n defaultTheme?: Theme\r\n /** localStorage key. @default \"nui-theme\" */\r\n storageKey?: string\r\n /** HTML attribute used to apply the theme. @default \"class\" */\r\n attribute?: \"class\" | \"data-theme\"\r\n /** Allow choosing \"system\" mode. @default true */\r\n enableSystem?: boolean\r\n /** Temporarily disable CSS transitions when the theme changes to prevent intermediate flash. @default false */\r\n disableTransitionOnChange?: boolean\r\n /** Force a specific theme (ignores user choice and localStorage). Useful for per-page overrides. */\r\n forcedTheme?: Theme\r\n /** CSP nonce for injected inline styles. */\r\n nonce?: string\r\n}\r\n\r\nexport type ThemeProviderState = {\r\n /** The stored theme preference (\"dark\" | \"light\" | \"system\"). */\r\n theme: Theme\r\n /** The actual resolved theme that is applied (\"dark\" | \"light\"). */\r\n resolvedTheme: \"dark\" | \"light\"\r\n /** Update the theme. */\r\n setTheme: (theme: Theme) => void\r\n /** All available themes. */\r\n themes: readonly Theme[]\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nconst THEMES: readonly Theme[] = [\"light\", \"dark\", \"system\"] as const\r\n\r\nfunction getSystemTheme(): \"dark\" | \"light\" {\r\n if (typeof window === \"undefined\") return \"light\"\r\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\"\r\n}\r\n\r\nfunction resolveTheme(theme: Theme): \"dark\" | \"light\" {\r\n return theme === \"system\" ? getSystemTheme() : theme\r\n}\r\n\r\n/**\r\n * Disable *all* CSS transitions for one frame so the theme switch is instant\r\n * (prevents elements from slowly fading between colours).\r\n */\r\nfunction disableTransitions(nonce?: string): () => void {\r\n if (typeof document === \"undefined\") return () => {}\r\n const style = document.createElement(\"style\")\r\n if (nonce) style.setAttribute(\"nonce\", nonce)\r\n style.appendChild(\r\n document.createTextNode(\r\n \"*, *::before, *::after { transition: none !important; animation: none !important; }\"\r\n )\r\n )\r\n document.head.appendChild(style)\r\n // Force a reflow so the style is applied immediately.\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n window.getComputedStyle(document.body)\r\n return () => {\r\n // Wait for the next frame before removing so the browser has painted the new colors.\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n document.head.removeChild(style)\r\n })\r\n })\r\n }\r\n}\r\n\r\nfunction applyTheme(\r\n resolved: \"dark\" | \"light\",\r\n attribute: \"class\" | \"data-theme\",\r\n) {\r\n const root = document.documentElement\r\n if (attribute === \"class\") {\r\n root.classList.remove(\"light\", \"dark\")\r\n root.classList.add(resolved)\r\n } else {\r\n root.setAttribute(\"data-theme\", resolved)\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Context\r\n// ---------------------------------------------------------------------------\r\n\r\nconst ThemeProviderContext = createContext<ThemeProviderState | undefined>(undefined)\r\n\r\n// ---------------------------------------------------------------------------\r\n// Provider\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"system\",\r\n storageKey = \"nui-theme\",\r\n attribute = \"class\",\r\n enableSystem = true,\r\n disableTransitionOnChange = false,\r\n forcedTheme,\r\n nonce,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<Theme>(() => {\r\n if (typeof window === \"undefined\") return defaultTheme\r\n const stored = localStorage.getItem(storageKey) as Theme | null\r\n if (stored && THEMES.includes(stored)) return stored\r\n return defaultTheme\r\n })\r\n\r\n const [resolvedTheme, setResolvedTheme] = useState<\"dark\" | \"light\">(() =>\r\n resolveTheme(forcedTheme ?? theme)\r\n )\r\n\r\n // Keep a ref so the media-query listener always sees the latest theme.\r\n const themeRef = useRef(theme)\r\n themeRef.current = theme\r\n\r\n // Apply whenever theme, forcedTheme, or system preference changes.\r\n const apply = useCallback(() => {\r\n const active = forcedTheme ?? themeRef.current\r\n const resolved = resolveTheme(active)\r\n setResolvedTheme(resolved)\r\n\r\n let enableTransitions: (() => void) | undefined\r\n if (disableTransitionOnChange) {\r\n enableTransitions = disableTransitions(nonce)\r\n }\r\n\r\n applyTheme(resolved, attribute)\r\n enableTransitions?.()\r\n }, [forcedTheme, attribute, disableTransitionOnChange, nonce])\r\n\r\n // React to theme state changes.\r\n useEffect(() => {\r\n apply()\r\n }, [theme, forcedTheme, apply])\r\n\r\n // Listen to OS theme changes when theme === \"system\".\r\n useEffect(() => {\r\n if (!enableSystem) return\r\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\")\r\n const handler = () => {\r\n if ((forcedTheme ?? themeRef.current) === \"system\") {\r\n apply()\r\n }\r\n }\r\n mq.addEventListener(\"change\", handler)\r\n return () => mq.removeEventListener(\"change\", handler)\r\n }, [enableSystem, forcedTheme, apply])\r\n\r\n // Listen for storage changes from other tabs.\r\n useEffect(() => {\r\n const handler = (e: StorageEvent) => {\r\n if (e.key === storageKey && e.newValue) {\r\n const newTheme = e.newValue as Theme\r\n if (THEMES.includes(newTheme)) {\r\n setThemeState(newTheme)\r\n }\r\n }\r\n }\r\n window.addEventListener(\"storage\", handler)\r\n return () => window.removeEventListener(\"storage\", handler)\r\n }, [storageKey])\r\n\r\n const setTheme = useCallback(\r\n (newTheme: Theme) => {\r\n if (!enableSystem && newTheme === \"system\") return\r\n localStorage.setItem(storageKey, newTheme)\r\n setThemeState(newTheme)\r\n },\r\n [storageKey, enableSystem]\r\n )\r\n\r\n const themes = useMemo<readonly Theme[]>(\r\n () => (enableSystem ? THEMES : ([\"light\", \"dark\"] as const)),\r\n [enableSystem]\r\n )\r\n\r\n const value = useMemo<ThemeProviderState>(\r\n () => ({ theme: forcedTheme ?? theme, resolvedTheme, setTheme, themes }),\r\n [forcedTheme, theme, resolvedTheme, setTheme, themes]\r\n )\r\n\r\n return (\r\n <ThemeProviderContext.Provider value={value}>\r\n {children}\r\n </ThemeProviderContext.Provider>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Hook\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function useTheme(): ThemeProviderState {\r\n const context = useContext(ThemeProviderContext)\r\n if (context === undefined) {\r\n throw new Error(\"useTheme must be used within a <ThemeProvider>\")\r\n }\r\n return context\r\n}\r\n","import { Toaster as Sonner, toast } from \"sonner\"\r\nimport { useTheme } from \"@/components/ui/theme-provider\"\r\n\r\ntype ToasterProps = React.ComponentProps<typeof Sonner>\r\n\r\nconst Toaster = ({ theme: themeProp, ...props }: ToasterProps) => {\r\n let resolvedSonnerTheme = themeProp\r\n try {\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n const { resolvedTheme } = useTheme()\r\n if (!themeProp) {\r\n resolvedSonnerTheme = resolvedTheme as ToasterProps[\"theme\"]\r\n }\r\n } catch {\r\n // ThemeProvider is not available — fall back to prop or \"system\"\r\n if (!resolvedSonnerTheme) resolvedSonnerTheme = \"system\"\r\n }\r\n\r\n return (\r\n <Sonner\r\n theme={resolvedSonnerTheme}\r\n className=\"toaster group\"\r\n toastOptions={{\r\n classNames: {\r\n toast:\r\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\r\n description: \"group-[.toast]:text-muted-foreground\",\r\n actionButton:\r\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\r\n cancelButton:\r\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\r\n },\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Toaster, toast }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface EmptyStateProps {\r\n icon?: React.ReactNode\r\n title: string\r\n description?: string\r\n action?: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction EmptyState({\r\n icon,\r\n title,\r\n description,\r\n action,\r\n className,\r\n}: EmptyStateProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <div className=\"mb-4 text-muted-foreground\">{icon}</div>\r\n )}\r\n <h3 className=\"text-lg font-semibold\">{title}</h3>\r\n {description && (\r\n <p className=\"mt-1 text-sm text-muted-foreground max-w-sm\">\r\n {description}\r\n </p>\r\n )}\r\n {action && <div className=\"mt-4\">{action}</div>}\r\n </div>\r\n )\r\n}\r\n\r\nexport { EmptyState }\r\n","\r\n// Custom Navigation\r\nimport * as React from \"react\"\r\nimport { ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\">\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\r\nBreadcrumb.displayName = \"Breadcrumb\"\r\n\r\nconst BreadcrumbList = React.forwardRef<\r\n HTMLOListElement,\r\n React.ComponentPropsWithoutRef<\"ol\">\r\n>(({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbList.displayName = \"BreadcrumbList\"\r\n\r\nconst BreadcrumbItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentPropsWithoutRef<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n className={cn(\"inline-flex items-center gap-1.5\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\"\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(\"transition-colors hover:text-foreground\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\r\n\r\nconst BreadcrumbPage = React.forwardRef<\r\n HTMLSpanElement,\r\n React.ComponentPropsWithoutRef<\"span\">\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\r\n\r\nconst BreadcrumbSeparator = ({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"li\">) => (\r\n <li\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className)}\r\n {...props}\r\n >\r\n {children ?? <ChevronRight />}\r\n </li>\r\n)\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\r\n\r\nconst BreadcrumbEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <span className=\"h-4 w-4\">...</span>\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n)\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n}\r\n","import * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { type ButtonProps, buttonVariants } from \"@/components/ui/button\"\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n)\r\nPagination.displayName = \"Pagination\"\r\n\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\"flex flex-row items-center gap-1\", className)}\r\n {...props}\r\n />\r\n))\r\nPaginationContent.displayName = \"PaginationContent\"\r\n\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n))\r\nPaginationItem.displayName = \"PaginationItem\"\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean\r\n} & Pick<ButtonProps, \"size\"> &\r\n React.ComponentProps<\"a\">\r\n\r\nconst PaginationLink = ({\r\n className,\r\n isActive,\r\n size = \"icon\",\r\n ...props\r\n}: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\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 {...props}\r\n />\r\n)\r\nPaginationLink.displayName = \"PaginationLink\"\r\n\r\nconst PaginationPrevious = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pl-2.5\", className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n)\r\nPaginationPrevious.displayName = \"PaginationPrevious\"\r\n\r\nconst PaginationNext = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pr-2.5\", className)}\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n)\r\nPaginationNext.displayName = \"PaginationNext\"\r\n\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n)\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n}\r\n","import * as React from \"react\"\r\nimport { Check } from \"lucide-react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface StepProps {\r\n title: string\r\n description?: string\r\n}\r\n\r\nexport interface StepperProps {\r\n steps: StepProps[]\r\n activeStep: number\r\n orientation?: \"horizontal\" | \"vertical\"\r\n className?: string\r\n}\r\n\r\nfunction Stepper({\r\n steps,\r\n activeStep,\r\n orientation = \"horizontal\",\r\n className,\r\n}: StepperProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex\",\r\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row items-center\",\r\n className\r\n )}\r\n >\r\n {steps.map((step, index) => {\r\n const isCompleted = index < activeStep\r\n const isCurrent = index === activeStep\r\n const isLast = index === steps.length - 1\r\n\r\n return (\r\n <React.Fragment key={index}>\r\n <div\r\n className={cn(\r\n \"flex items-center\",\r\n orientation === \"vertical\" && \"flex-row\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"flex h-10 w-10 items-center justify-center rounded-full border-2 font-semibold transition-colors\",\r\n isCompleted && \"border-primary bg-primary text-primary-foreground\",\r\n isCurrent && \"border-primary text-primary\",\r\n !isCompleted && !isCurrent && \"border-muted-foreground/30 text-muted-foreground\"\r\n )}\r\n >\r\n {isCompleted ? <Check className=\"h-5 w-5\" /> : index + 1}\r\n </div>\r\n <div className={cn(\"ml-3\", orientation === \"horizontal\" && \"hidden sm:block\")}>\r\n <p\r\n className={cn(\r\n \"text-sm font-medium\",\r\n isCurrent && \"text-foreground\",\r\n !isCurrent && \"text-muted-foreground\"\r\n )}\r\n >\r\n {step.title}\r\n </p>\r\n {step.description && (\r\n <p className=\"text-xs text-muted-foreground\">{step.description}</p>\r\n )}\r\n </div>\r\n </div>\r\n {!isLast && (\r\n <div\r\n className={cn(\r\n \"flex-1\",\r\n orientation === \"horizontal\"\r\n ? \"mx-4 h-0.5 min-w-[3rem]\"\r\n : \"ml-5 my-2 w-0.5 min-h-[2rem]\",\r\n isCompleted ? \"bg-primary\" : \"bg-muted-foreground/30\"\r\n )}\r\n />\r\n )}\r\n </React.Fragment>\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nexport { Stepper }\r\n","import * as React from \"react\"\r\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\r\nimport { cva } from \"class-variance-authority\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst NavigationMenu = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <NavigationMenuViewport />\r\n </NavigationMenuPrimitive.Root>\r\n))\r\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\r\n\r\nconst NavigationMenuList = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\r\n\r\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\r\n\r\nconst navigationMenuTriggerStyle = cva(\r\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\r\n)\r\n\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Trigger\r\n ref={ref}\r\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\r\n {...props}\r\n >\r\n {children}{\" \"}\r\n <ChevronDown\r\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\r\n aria-hidden=\"true\"\r\n />\r\n </NavigationMenuPrimitive.Trigger>\r\n))\r\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\r\n\r\nconst NavigationMenuContent = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\r\n\r\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\r\n\r\nconst NavigationMenuViewport = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\r\n <NavigationMenuPrimitive.Viewport\r\n className={cn(\r\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nNavigationMenuViewport.displayName =\r\n NavigationMenuPrimitive.Viewport.displayName\r\n\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Indicator\r\n ref={ref}\r\n className={cn(\r\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\r\n </NavigationMenuPrimitive.Indicator>\r\n))\r\nNavigationMenuIndicator.displayName =\r\n NavigationMenuPrimitive.Indicator.displayName\r\n\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst ContextMenu = ContextMenuPrimitive.Root\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\r\n\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n))\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\r\n\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\r\n\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n))\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\r\n\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\r\n\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n))\r\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n))\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\r\n\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\r\n\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\r\n {...props}\r\n />\r\n))\r\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\r\n\r\nconst ContextMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n}\r\n","import * as React from \"react\"\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst HoverCard = HoverCardPrimitive.Root\r\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\r\n\r\nconst HoverCardContent = React.forwardRef<\r\n React.ElementRef<typeof HoverCardPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <HoverCardPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\r\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import * as React from \"react\"\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\"\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n return context\r\n}\r\n\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation,\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n }\r\n)\r\nCarousel.displayName = \"Carousel\"\r\n\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n})\r\nCarouselContent.displayName = \"CarouselContent\"\r\n\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel()\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\r\n \"min-w-0 shrink-0 grow-0 basis-full\",\r\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCarouselItem.displayName = \"CarouselItem\"\r\n\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselPrevious.displayName = \"CarouselPrevious\"\r\n\r\nconst CarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselNext.displayName = \"CarouselNext\"\r\n\r\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n}\r\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\r\nimport {\r\n flexRender,\r\n getCoreRowModel,\r\n getFilteredRowModel,\r\n getPaginationRowModel,\r\n getSortedRowModel,\r\n useReactTable,\r\n type ColumnDef,\r\n type ColumnFiltersState,\r\n type SortingState,\r\n type VisibilityState,\r\n} from \"@tanstack/react-table\"\r\nimport { ArrowUpDown, ChevronLeft, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n} from \"@/components/ui/table\"\r\n\r\nexport interface DataTableProps<TData, TValue> {\r\n columns: ColumnDef<TData, TValue>[]\r\n data: TData[]\r\n searchKey?: string\r\n searchPlaceholder?: string\r\n pageSize?: number\r\n}\r\n\r\nfunction DataTable<TData, TValue>({\r\n columns,\r\n data,\r\n searchKey,\r\n searchPlaceholder = \"Search...\",\r\n pageSize = 10,\r\n}: DataTableProps<TData, TValue>) {\r\n const [sorting, setSorting] = React.useState<SortingState>([])\r\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\r\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\r\n const [rowSelection, setRowSelection] = React.useState({})\r\n\r\n const table = useReactTable({\r\n data,\r\n columns,\r\n onSortingChange: setSorting,\r\n onColumnFiltersChange: setColumnFilters,\r\n getCoreRowModel: getCoreRowModel(),\r\n getPaginationRowModel: getPaginationRowModel(),\r\n getSortedRowModel: getSortedRowModel(),\r\n getFilteredRowModel: getFilteredRowModel(),\r\n onColumnVisibilityChange: setColumnVisibility,\r\n onRowSelectionChange: setRowSelection,\r\n state: {\r\n sorting,\r\n columnFilters,\r\n columnVisibility,\r\n rowSelection,\r\n },\r\n initialState: {\r\n pagination: {\r\n pageSize,\r\n },\r\n },\r\n })\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n {searchKey && (\r\n <div className=\"flex items-center gap-2\">\r\n <Input\r\n placeholder={searchPlaceholder}\r\n value={(table.getColumn(searchKey)?.getFilterValue() as string) ?? \"\"}\r\n onChange={(event) =>\r\n table.getColumn(searchKey)?.setFilterValue(event.target.value)\r\n }\r\n className=\"max-w-sm\"\r\n />\r\n </div>\r\n )}\r\n <div className=\"rounded-md border\">\r\n <Table>\r\n <TableHeader>\r\n {table.getHeaderGroups().map((headerGroup) => (\r\n <TableRow key={headerGroup.id}>\r\n {headerGroup.headers.map((header) => (\r\n <TableHead key={header.id}>\r\n {header.isPlaceholder\r\n ? null\r\n : flexRender(\r\n header.column.columnDef.header,\r\n header.getContext()\r\n )}\r\n </TableHead>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </TableHeader>\r\n <TableBody>\r\n {table.getRowModel().rows?.length ? (\r\n table.getRowModel().rows.map((row) => (\r\n <TableRow\r\n key={row.id}\r\n data-state={row.getIsSelected() && \"selected\"}\r\n >\r\n {row.getVisibleCells().map((cell) => (\r\n <TableCell key={cell.id}>\r\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))\r\n ) : (\r\n <TableRow>\r\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\r\n No results.\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n <div className=\"flex items-center justify-between px-2\">\r\n <div className=\"text-sm text-muted-foreground\">\r\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\r\n {table.getPageCount()}\r\n </div>\r\n <div className=\"flex items-center space-x-2\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => table.previousPage()}\r\n disabled={!table.getCanPreviousPage()}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n Previous\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => table.nextPage()}\r\n disabled={!table.getCanNextPage()}\r\n >\r\n Next\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// Helper for sortable header\r\nfunction DataTableColumnHeader({\r\n column,\r\n title,\r\n className,\r\n}: {\r\n column: any\r\n title: string\r\n className?: string\r\n}) {\r\n if (!column.getCanSort()) {\r\n return <div className={cn(className)}>{title}</div>\r\n }\r\n\r\n return (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className={cn(\"-ml-3 h-8\", className)}\r\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\r\n >\r\n {title}\r\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\r\n </Button>\r\n )\r\n}\r\n\r\nexport { DataTable, DataTableColumnHeader }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface CodeBlockProps {\r\n code: string\r\n language?: string\r\n showLineNumbers?: boolean\r\n showCopy?: boolean\r\n className?: string\r\n}\r\n\r\n// ---- lightweight regex tokenizer ------------------------------------------\r\n\r\ntype TokenType =\r\n | \"comment\"\r\n | \"string\"\r\n | \"keyword\"\r\n | \"number\"\r\n | \"function\"\r\n | \"tag\"\r\n | \"attr\"\r\n | \"punctuation\"\r\n | \"operator\"\r\n | \"plain\"\r\n\r\ninterface Token {\r\n type: TokenType\r\n value: string\r\n}\r\n\r\nconst KEYWORDS = new Set([\r\n \"abstract\",\"as\",\"async\",\"await\",\"break\",\"case\",\"catch\",\"class\",\"const\",\r\n \"continue\",\"debugger\",\"default\",\"delete\",\"do\",\"else\",\"enum\",\"export\",\r\n \"extends\",\"false\",\"finally\",\"for\",\"from\",\"function\",\"get\",\"if\",\"implements\",\r\n \"import\",\"in\",\"instanceof\",\"interface\",\"let\",\"new\",\"null\",\"of\",\"package\",\r\n \"private\",\"protected\",\"public\",\"return\",\"set\",\"static\",\"super\",\"switch\",\r\n \"this\",\"throw\",\"true\",\"try\",\"type\",\"typeof\",\"undefined\",\"var\",\"void\",\r\n \"while\",\"with\",\"yield\",\r\n])\r\n\r\nconst CSS_KEYWORDS = new Set([\r\n \"display\",\"flex\",\"grid\",\"none\",\"block\",\"inline\",\"relative\",\"absolute\",\r\n \"fixed\",\"sticky\",\"hidden\",\"visible\",\"auto\",\"inherit\",\"initial\",\"unset\",\r\n \"important\",\"solid\",\"dashed\",\"dotted\",\"transparent\",\"center\",\"left\",\r\n \"right\",\"top\",\"bottom\",\"normal\",\"bold\",\"italic\",\"nowrap\",\"wrap\",\r\n])\r\n\r\nfunction tokenize(code: string, language: string): Token[][] {\r\n const lines = code.split(\"\\n\")\r\n const isCSS = language === \"css\" || language === \"scss\" || language === \"less\"\r\n const isHTML = language === \"html\" || language === \"xml\" || language === \"svg\"\r\n const isJSON = language === \"json\"\r\n const isBash = language === \"bash\" || language === \"sh\" || language === \"shell\" || language === \"zsh\"\r\n\r\n return lines.map((line) => {\r\n const tokens: Token[] = []\r\n let i = 0\r\n const maxIter = line.length * 4 // safety: prevent runaway loops\r\n let iter = 0\r\n\r\n while (i < line.length && iter++ < maxIter) {\r\n // --- multi-char patterns ------------------------------------------------\r\n\r\n // line comment //\r\n if (!isCSS && !isJSON && line[i] === \"/\" && line[i + 1] === \"/\") {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n continue\r\n }\r\n\r\n // bash comment #\r\n if (isBash && line[i] === \"#\") {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n continue\r\n }\r\n\r\n // block comment start /* (single-line only for simplicity)\r\n if (line[i] === \"/\" && line[i + 1] === \"*\") {\r\n const end = line.indexOf(\"*/\", i + 2)\r\n if (end !== -1) {\r\n tokens.push({ type: \"comment\", value: line.slice(i, end + 2) })\r\n i = end + 2\r\n } else {\r\n tokens.push({ type: \"comment\", value: line.slice(i) })\r\n i = line.length\r\n }\r\n continue\r\n }\r\n\r\n // template literal\r\n if (line[i] === \"`\") {\r\n let j = i + 1\r\n while (j < line.length && line[j] !== \"`\") {\r\n if (line[j] === \"\\\\\") j++\r\n j++\r\n }\r\n tokens.push({ type: \"string\", value: line.slice(i, j + 1) })\r\n i = j + 1\r\n continue\r\n }\r\n\r\n // strings\r\n if (line[i] === '\"' || line[i] === \"'\") {\r\n const quote = line[i]\r\n let j = i + 1\r\n while (j < line.length && line[j] !== quote) {\r\n if (line[j] === \"\\\\\") j++\r\n j++\r\n }\r\n tokens.push({ type: \"string\", value: line.slice(i, j + 1) })\r\n i = j + 1\r\n continue\r\n }\r\n\r\n // numbers\r\n if (/[0-9]/.test(line[i]) && (i === 0 || /[\\s,\\(\\[:=+\\-*/<>!&|^~?{]/.test(line[i - 1]))) {\r\n let j = i\r\n while (j < line.length && /[0-9a-fA-FxXoObB._eE+\\-n]/.test(line[j])) j++\r\n tokens.push({ type: \"number\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n // JSX/HTML tags <Tag or </Tag or />\r\n if ((line[i] === \"<\" && /[a-zA-Z\\/!]/.test(line[i + 1] || \"\")) || (line[i] === \"/\" && line[i + 1] === \">\")) {\r\n if (line[i] === \"/\" && line[i + 1] === \">\") {\r\n tokens.push({ type: \"punctuation\", value: \"/>\" })\r\n i += 2\r\n continue\r\n }\r\n const closing = line[i + 1] === \"/\"\r\n let j = closing ? i + 2 : i + 1\r\n while (j < line.length && /[a-zA-Z0-9.\\-_]/.test(line[j])) j++\r\n tokens.push({ type: \"punctuation\", value: line[i] + (closing ? \"/\" : \"\") })\r\n const tagName = line.slice(closing ? i + 2 : i + 1, j)\r\n if (tagName) tokens.push({ type: \"tag\", value: tagName })\r\n i = j\r\n continue\r\n }\r\n\r\n // closing >\r\n if (line[i] === \">\") {\r\n tokens.push({ type: \"punctuation\", value: \">\" })\r\n i++\r\n continue\r\n }\r\n\r\n // words (identifiers / keywords)\r\n if (/[a-zA-Z_$@]/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /[a-zA-Z0-9_$@\\-]/.test(line[j])) j++\r\n if (j === i) j++ // safety: always advance at least 1 char\r\n const word = line.slice(i, j)\r\n\r\n if (isCSS && CSS_KEYWORDS.has(word)) {\r\n tokens.push({ type: \"keyword\", value: word })\r\n } else if (isHTML || isCSS) {\r\n // check if it's an attribute (followed by =)\r\n const rest = line.slice(j).trimStart()\r\n if (rest[0] === \"=\" || rest[0] === \":\") {\r\n tokens.push({ type: \"attr\", value: word })\r\n } else {\r\n tokens.push({ type: \"plain\", value: word })\r\n }\r\n } else if (KEYWORDS.has(word)) {\r\n tokens.push({ type: \"keyword\", value: word })\r\n } else if (!isJSON && line[j] === \"(\") {\r\n tokens.push({ type: \"function\", value: word })\r\n } else if (!isJSON && /^[A-Z]/.test(word)) {\r\n tokens.push({ type: \"tag\", value: word })\r\n } else {\r\n tokens.push({ type: \"plain\", value: word })\r\n }\r\n i = j\r\n continue\r\n }\r\n\r\n // operators\r\n if (/[=+\\-*/%<>!&|^~?:]/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /[=+\\-*/%<>!&|^~?:]/.test(line[j])) j++\r\n tokens.push({ type: \"operator\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n // punctuation\r\n if (/[{}()\\[\\],;.]/.test(line[i])) {\r\n tokens.push({ type: \"punctuation\", value: line[i] })\r\n i++\r\n continue\r\n }\r\n\r\n // whitespace & other\r\n if (/\\s/.test(line[i])) {\r\n let j = i\r\n while (j < line.length && /\\s/.test(line[j])) j++\r\n tokens.push({ type: \"plain\", value: line.slice(i, j) })\r\n i = j\r\n continue\r\n }\r\n\r\n tokens.push({ type: \"plain\", value: line[i] })\r\n i++\r\n }\r\n\r\n return tokens\r\n })\r\n}\r\n\r\n// ---- color map (uses CSS variables with semantic defaults) -----------------\r\n\r\nconst tokenColors: Record<TokenType, string> = {\r\n comment: \"var(--cb-comment, #6a9955)\",\r\n string: \"var(--cb-string, #ce9178)\",\r\n keyword: \"var(--cb-keyword, #569cd6)\",\r\n number: \"var(--cb-number, #b5cea8)\",\r\n function: \"var(--cb-function, #dcdcaa)\",\r\n tag: \"var(--cb-tag, #4ec9b0)\",\r\n attr: \"var(--cb-attr, #9cdcfe)\",\r\n punctuation: \"var(--cb-punctuation, #d4d4d4)\",\r\n operator: \"var(--cb-operator, #d4d4d4)\",\r\n plain: \"var(--cb-plain, #d4d4d4)\",\r\n}\r\n\r\n// ---- component ------------------------------------------------------------\r\n\r\nfunction CodeBlock({\r\n code,\r\n language = \"tsx\",\r\n showLineNumbers = false,\r\n showCopy = true,\r\n className,\r\n}: CodeBlockProps) {\r\n const [copied, setCopied] = React.useState(false)\r\n const trimmed = code.trim()\r\n const tokenLines = React.useMemo(() => {\r\n try {\r\n return tokenize(trimmed, language)\r\n } catch {\r\n // fallback: no highlighting\r\n return trimmed.split(\"\\n\").map((l) => [{ type: \"plain\" as TokenType, value: l }])\r\n }\r\n }, [trimmed, language])\r\n\r\n const handleCopy = async () => {\r\n try {\r\n await navigator.clipboard.writeText(trimmed)\r\n setCopied(true)\r\n setTimeout(() => setCopied(false), 2000)\r\n } catch { /* clipboard unavailable */ }\r\n }\r\n\r\n return (\r\n <div className={cn(\"relative group\", className)}>\r\n {showCopy && (\r\n <button\r\n type=\"button\"\r\n onClick={handleCopy}\r\n className=\"absolute top-3 right-3 z-10 p-1.5 rounded-md bg-white/10 backdrop-blur text-white/60 hover:text-white opacity-0 group-hover:opacity-100 transition-opacity text-xs\"\r\n aria-label=\"Copy code\"\r\n >\r\n {copied ? (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>\r\n ) : (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>\r\n )}\r\n </button>\r\n )}\r\n <pre\r\n className=\"overflow-x-auto rounded-lg p-4 text-[13px] leading-relaxed font-mono\"\r\n style={{ background: \"var(--cb-bg, #1e1e2e)\", color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n {tokenLines.map((tokens, lineIdx) => (\r\n <div key={lineIdx}>\r\n {showLineNumbers && (\r\n <span\r\n className=\"inline-block w-8 select-none text-right mr-4 opacity-40\"\r\n style={{ color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n {lineIdx + 1}\r\n </span>\r\n )}\r\n {tokens.map((tok, tokIdx) => (\r\n <span key={tokIdx} style={{ color: tokenColors[tok.type] }}>\r\n {tok.value}\r\n </span>\r\n ))}\r\n </div>\r\n ))}\r\n </pre>\r\n </div>\r\n )\r\n}\r\n\r\nexport { CodeBlock }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ============ HEADING ============\r\nconst headingVariants = cva(\"font-bold tracking-tight\", {\r\n variants: {\r\n level: {\r\n 1: \"text-2xl lg:text-3xl\",\r\n 2: \"text-xl lg:text-2xl\",\r\n 3: \"text-lg lg:text-xl\",\r\n 4: \"text-base lg:text-lg\",\r\n 5: \"text-sm lg:text-base\",\r\n 6: \"text-xs lg:text-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n level: 2,\r\n },\r\n})\r\n\r\nexport interface HeadingProps\r\n extends React.HTMLAttributes<HTMLHeadingElement>,\r\n VariantProps<typeof headingVariants> {\r\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"\r\n}\r\n\r\nfunction Heading({ className, level = 2, as, children, ...props }: HeadingProps) {\r\n const Tag = as || (`h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\")\r\n return (\r\n <Tag className={cn(headingVariants({ level }), className)} {...props}>\r\n {children}\r\n </Tag>\r\n )\r\n}\r\n\r\n// ============ TEXT ============\r\nconst textVariants = cva(\"\", {\r\n variants: {\r\n size: {\r\n xs: \"text-xs\",\r\n sm: \"text-sm\",\r\n base: \"text-base\",\r\n lg: \"text-lg\",\r\n xl: \"text-xl\",\r\n },\r\n weight: {\r\n normal: \"font-normal\",\r\n medium: \"font-medium\",\r\n semibold: \"font-semibold\",\r\n bold: \"font-bold\",\r\n },\r\n variant: {\r\n default: \"text-foreground\",\r\n muted: \"text-muted-foreground\",\r\n primary: \"text-primary\",\r\n destructive: \"text-destructive\",\r\n success: \"text-green-600 dark:text-green-400\",\r\n },\r\n leading: {\r\n tight: \"leading-tight\",\r\n normal: \"leading-normal\",\r\n relaxed: \"leading-relaxed\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"base\",\r\n weight: \"normal\",\r\n variant: \"default\",\r\n leading: \"normal\",\r\n },\r\n})\r\n\r\nexport interface TextProps extends VariantProps<typeof textVariants> {\r\n as?: \"p\" | \"span\" | \"div\"\r\n className?: string\r\n children?: React.ReactNode\r\n}\r\n\r\nfunction Text({ className, size, weight, variant, leading, as: Tag = \"p\", children, ...props }: TextProps) {\r\n return (\r\n <Tag className={cn(textVariants({ size, weight, variant, leading }), className)} {...props}>\r\n {children}\r\n </Tag>\r\n )\r\n}\r\n\r\n// ============ CODE ============\r\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> { }\r\n\r\nfunction Code({ className, ...props }: CodeProps) {\r\n return (\r\n <code\r\n className={cn(\r\n \"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n// ============ BLOCKQUOTE ============\r\nexport interface BlockquoteProps extends React.HTMLAttributes<HTMLQuoteElement> { }\r\n\r\nfunction Blockquote({ className, ...props }: BlockquoteProps) {\r\n return (\r\n <blockquote\r\n className={cn(\r\n \"border-l-4 border-primary pl-4 italic text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n// ============ LEAD (Subtitle) ============\r\nexport interface LeadProps extends React.HTMLAttributes<HTMLParagraphElement> { }\r\n\r\nfunction Lead({ className, ...props }: LeadProps) {\r\n return (\r\n <p className={cn(\"text-xl text-muted-foreground\", className)} {...props} />\r\n )\r\n}\r\n\r\n// ============ MUTED ============\r\nexport interface MutedProps extends React.HTMLAttributes<HTMLParagraphElement> { }\r\n\r\nfunction Muted({ className, ...props }: MutedProps) {\r\n return (\r\n <p className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n )\r\n}\r\n\r\nexport { Heading, headingVariants, Text, textVariants, Code, Blockquote, Lead, Muted }\r\n","import * as React from \"react\"\r\nimport { ResponsiveContainer, Tooltip as RechartsTooltip, Legend as RechartsLegend } from \"recharts\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport const ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"w-full h-full min-h-[300px]\", className)}\r\n {...props}\r\n >\r\n <ResponsiveContainer width=\"100%\" height=\"100%\">\r\n {children as React.ReactElement}\r\n </ResponsiveContainer>\r\n </div>\r\n))\r\nChartContainer.displayName = \"ChartContainer\"\r\n\r\nexport const ChartTooltip = RechartsTooltip\r\nexport const ChartLegend = RechartsLegend\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Timeline = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex flex-col space-y-4\", className)} {...props} />\r\n )\r\n)\r\nTimeline.displayName = \"Timeline\"\r\n\r\nconst TimelineItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"relative flex gap-4 pb-4 last:pb-0\", className)} {...props} />\r\n )\r\n)\r\nTimelineItem.displayName = \"TimelineItem\"\r\n\r\nconst TimelineIcon = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full border bg-background text-primary shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nTimelineIcon.displayName = \"TimelineIcon\"\r\n\r\nconst TimelineConnector = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"absolute left-4 top-8 -bottom-4 w-px bg-border\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nTimelineConnector.displayName = \"TimelineConnector\"\r\n\r\nconst TimelineContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex-1 space-y-1 pt-1\", className)} {...props} />\r\n )\r\n)\r\nTimelineContent.displayName = \"TimelineContent\"\r\n\r\nexport { Timeline, TimelineItem, TimelineIcon, TimelineConnector, TimelineContent }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/* \r\n * AppShell Layout\r\n * Structure:\r\n * - AppShell (Root, Grid)\r\n * - Sidebar (Left)\r\n * - Header (Top)\r\n * - Main (Content)\r\n */\r\n\r\ninterface AppShellProps extends React.HTMLAttributes<HTMLDivElement> { }\r\n\r\nconst AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid min-h-screen w-full lg:grid-cols-[280px_1fr]\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n }\r\n)\r\nAppShell.displayName = \"AppShell\"\r\n\r\nconst Sidebar = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"hidden border-r bg-muted/40 lg:block dark:bg-muted/10\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex h-full max-h-screen flex-col gap-2\">\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n)\r\nSidebar.displayName = \"Sidebar\"\r\n\r\nconst Header = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <header\r\n ref={ref}\r\n className={cn(\r\n \"flex h-14 items-center gap-4 border-b bg-background px-6 lg:h-[60px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </header>\r\n )\r\n)\r\nHeader.displayName = \"Header\"\r\n\r\nconst Main = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <main\r\n ref={ref}\r\n className={cn(\"flex flex-1 flex-col gap-4 p-4 lg:gap-6 lg:p-6\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </main>\r\n )\r\n)\r\nMain.displayName = \"Main\"\r\n\r\nexport { AppShell, Sidebar, Header, Main }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\r\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\r\n\r\ninterface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title: string\r\n value: string | number\r\n description?: string\r\n trend?: number // Percentage change\r\n trendLabel?: string\r\n icon?: React.ReactNode\r\n}\r\n\r\nfunction MetricCard({\r\n title,\r\n value,\r\n description,\r\n trend,\r\n trendLabel,\r\n icon,\r\n className,\r\n ...props\r\n}: MetricCardProps) {\r\n return (\r\n <Card className={cn(\"overflow-hidden\", className)} {...props}>\r\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\r\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">{title}</CardTitle>\r\n {icon && <div className=\"text-muted-foreground\">{icon}</div>}\r\n </CardHeader>\r\n <CardContent>\r\n <div className=\"text-2xl font-bold\">{value}</div>\r\n {(description || trend !== undefined) && (\r\n <div className=\"text-xs flex items-center gap-1 mt-1 text-muted-foreground\">\r\n {trend !== undefined && (\r\n <span\r\n className={cn(\r\n \"flex items-center font-medium\",\r\n trend > 0 ? \"text-green-500\" : trend < 0 ? \"text-red-500\" : \"text-muted-foreground\"\r\n )}\r\n >\r\n {trend > 0 ? <TrendingUp className=\"mr-1 h-3 w-3\" /> : trend < 0 ? <TrendingDown className=\"mr-1 h-3 w-3\" /> : <Minus className=\"mr-1 h-3 w-3\" />}\r\n {trend > 0 ? \"+\" : \"\"}{trend}%\r\n </span>\r\n )}\r\n {trendLabel && <span>{trendLabel}</span>}\r\n {description && !trend && <span>{description}</span>}\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport { MetricCard }\r\n","import * as React from \"react\"\r\nimport { Check, Copy } from \"lucide-react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport { Label } from \"@/components/ui/label\"\r\n\r\ninterface CopyInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string\r\n value: string\r\n}\r\n\r\nconst CopyInput = React.forwardRef<HTMLInputElement, CopyInputProps>(\r\n ({ className, label, value, ...props }, ref) => {\r\n const [hasCopied, setHasCopied] = React.useState(false)\r\n\r\n const onCopy = () => {\r\n navigator.clipboard.writeText(value)\r\n setHasCopied(true)\r\n setTimeout(() => setHasCopied(false), 2000)\r\n }\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n {label && <Label>{label}</Label>}\r\n <div className=\"flex gap-2 relative\">\r\n <Input\r\n ref={ref}\r\n value={value}\r\n readOnly\r\n className={cn(\"pr-10 font-mono text-sm\", className)}\r\n {...props}\r\n />\r\n <Button\r\n size=\"icon\"\r\n variant=\"outline\"\r\n className=\"shrink-0\"\r\n onClick={onCopy}\r\n >\r\n {hasCopied ? (\r\n <Check className=\"h-4 w-4 text-green-500\" />\r\n ) : (\r\n <Copy className=\"h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\nCopyInput.displayName = \"CopyInput\"\r\n\r\nexport { CopyInput }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface JsonViewerProps extends React.HTMLAttributes<HTMLPreElement> {\r\n data: any\r\n}\r\n\r\nconst JsonViewer = React.forwardRef<HTMLPreElement, JsonViewerProps>(\r\n ({ className, data, ...props }, ref) => {\r\n return (\r\n <pre\r\n ref={ref}\r\n className={cn(\r\n \"rounded-lg border bg-muted p-4 overflow-auto text-xs font-mono text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {JSON.stringify(data, null, 2)}\r\n </pre>\r\n )\r\n }\r\n)\r\nJsonViewer.displayName = \"JsonViewer\"\r\n\r\nexport { JsonViewer }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst statusBadgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n status: {\r\n neutral: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n success: \"border-transparent bg-green-500/15 text-green-700 dark:text-green-400 hover:bg-green-500/25\",\r\n warning: \"border-transparent bg-yellow-500/15 text-yellow-700 dark:text-yellow-400 hover:bg-yellow-500/25\",\r\n error: \"border-transparent bg-red-500/15 text-red-700 dark:text-red-400 hover:bg-red-500/25\",\r\n info: \"border-transparent bg-blue-500/15 text-blue-700 dark:text-blue-400 hover:bg-blue-500/25\",\r\n },\r\n },\r\n defaultVariants: {\r\n status: \"neutral\",\r\n },\r\n }\r\n)\r\n\r\nexport interface StatusBadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof statusBadgeVariants> {\r\n dot?: boolean\r\n}\r\n\r\nfunction StatusBadge({ className, status, dot = true, children, ...props }: StatusBadgeProps) {\r\n return (\r\n <div className={cn(statusBadgeVariants({ status }), className)} {...props}>\r\n {dot && (\r\n <span\r\n className={cn(\r\n \"mr-1.5 h-2 w-2 rounded-full\",\r\n {\r\n \"bg-current\": true, // Uses the text color of the parent\r\n }\r\n )}\r\n />\r\n )}\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nexport { StatusBadge }\r\n","import { Monitor, Moon, Sun } from \"lucide-react\"\r\n\r\nimport { Button } from \"@/components/ui/button\"\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"@/components/ui/dropdown-menu\"\r\nimport { useTheme, type Theme } from \"./theme-provider\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ModeToggle — Dropdown variant (classic)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function ModeToggle({ className }: { className?: string }) {\r\n const { setTheme } = useTheme()\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"outline\" size=\"icon\" className={className}>\r\n <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\r\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\">\r\n <DropdownMenuItem onClick={() => setTheme(\"light\")}>\r\n <Sun className=\"mr-2 h-4 w-4\" />\r\n Light\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\r\n <Moon className=\"mr-2 h-4 w-4\" />\r\n Dark\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme(\"system\")}>\r\n <Monitor className=\"mr-2 h-4 w-4\" />\r\n System\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// ModeToggleGroup — Segmented / pill toggle (compact)\r\n// ---------------------------------------------------------------------------\r\n\r\nconst items: { value: Theme; icon: typeof Sun; label: string }[] = [\r\n { value: \"light\", icon: Sun, label: \"Light\" },\r\n { value: \"dark\", icon: Moon, label: \"Dark\" },\r\n { value: \"system\", icon: Monitor, label: \"System\" },\r\n]\r\n\r\nexport function ModeToggleGroup({ className }: { className?: string }) {\r\n const { theme, setTheme, themes } = useTheme()\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5\",\r\n className\r\n )}\r\n role=\"radiogroup\"\r\n aria-label=\"Color theme\"\r\n >\r\n {items\r\n .filter((i) => themes.includes(i.value))\r\n .map(({ value, icon: Icon, label }) => (\r\n <button\r\n key={value}\r\n role=\"radio\"\r\n aria-checked={theme === value}\r\n aria-label={label}\r\n onClick={() => setTheme(value)}\r\n className={cn(\r\n \"inline-flex items-center justify-center rounded-md px-2.5 py-1.5 text-sm font-medium transition-all\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n theme === value\r\n ? \"bg-background text-foreground shadow-sm\"\r\n : \"text-muted-foreground hover:text-foreground hover:bg-background/50\"\r\n )}\r\n >\r\n <Icon className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">{label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n )\r\n}\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubble\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: \"sent\" | \"received\"\r\n}\r\n\r\nconst ChatBubble = React.forwardRef<HTMLDivElement, ChatBubbleProps>(\r\n ({ className, variant = \"received\", children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex gap-2 max-w-[85%]\",\r\n variant === \"sent\" ? \"ml-auto flex-row-reverse\" : \"mr-auto\",\r\n className,\r\n )}\r\n data-variant={variant}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n ),\r\n)\r\nChatBubble.displayName = \"ChatBubble\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleAvatar\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\r\n src?: string\r\n fallback?: string\r\n}\r\n\r\nconst ChatBubbleAvatar = React.forwardRef<HTMLDivElement, ChatBubbleAvatarProps>(\r\n ({ className, src, fallback, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {src ? (\r\n <img src={src} alt={fallback ?? \"avatar\"} className=\"h-full w-full object-cover\" />\r\n ) : (\r\n <span>{fallback ?? \"?\"}</span>\r\n )}\r\n </div>\r\n ),\r\n)\r\nChatBubbleAvatar.displayName = \"ChatBubbleAvatar\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleMessage\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleMessageProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: \"sent\" | \"received\"\r\n isLoading?: boolean\r\n}\r\n\r\nconst ChatBubbleMessage = React.forwardRef<HTMLDivElement, ChatBubbleMessageProps>(\r\n ({ className, variant = \"received\", isLoading, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-2xl px-4 py-2.5 text-sm leading-relaxed\",\r\n variant === \"sent\"\r\n ? \"bg-primary text-primary-foreground rounded-br-md\"\r\n : \"bg-muted text-foreground rounded-bl-md\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {isLoading ? (\r\n <div className=\"flex items-center gap-1 py-1\">\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:0ms]\" />\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:150ms]\" />\r\n <span className=\"h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:300ms]\" />\r\n </div>\r\n ) : (\r\n children\r\n )}\r\n </div>\r\n ),\r\n)\r\nChatBubbleMessage.displayName = \"ChatBubbleMessage\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatBubbleTimestamp\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatBubbleTimestampProps extends React.HTMLAttributes<HTMLSpanElement> {}\r\n\r\nconst ChatBubbleTimestamp = React.forwardRef<HTMLSpanElement, ChatBubbleTimestampProps>(\r\n ({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n className={cn(\"text-[10px] text-muted-foreground mt-1 px-1\", className)}\r\n {...props}\r\n />\r\n ),\r\n)\r\nChatBubbleTimestamp.displayName = \"ChatBubbleTimestamp\"\r\n\r\nexport { ChatBubble, ChatBubbleAvatar, ChatBubbleMessage, ChatBubbleTimestamp }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface ChatInputProps {\r\n onSend?: (message: string) => void\r\n placeholder?: string\r\n disabled?: boolean\r\n isLoading?: boolean\r\n showAttach?: boolean\r\n className?: string\r\n}\r\n\r\nconst ChatInput = React.forwardRef<HTMLDivElement, ChatInputProps>(\r\n ({ onSend, placeholder = \"Type a message...\", disabled, isLoading, showAttach, className }, ref) => {\r\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\r\n const [value, setValue] = React.useState(\"\")\r\n\r\n const adjustHeight = () => {\r\n const el = textareaRef.current\r\n if (!el) return\r\n el.style.height = \"auto\"\r\n el.style.height = Math.min(el.scrollHeight, 160) + \"px\"\r\n }\r\n\r\n const handleSend = () => {\r\n const trimmed = value.trim()\r\n if (!trimmed || disabled || isLoading) return\r\n onSend?.(trimmed)\r\n setValue(\"\")\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = \"auto\"\r\n }\r\n }\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault()\r\n handleSend()\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex items-end gap-2 rounded-xl border border-border bg-background p-2\",\r\n className,\r\n )}\r\n >\r\n {showAttach && (\r\n <button\r\n type=\"button\"\r\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors\"\r\n aria-label=\"Attach file\"\r\n disabled={disabled}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\r\n </svg>\r\n </button>\r\n )}\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => {\r\n setValue(e.target.value)\r\n adjustHeight()\r\n }}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={disabled || isLoading}\r\n rows={1}\r\n className=\"flex-1 resize-none bg-transparent text-sm outline-none placeholder:text-muted-foreground min-h-[36px] py-2 px-2 max-h-40\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={handleSend}\r\n disabled={disabled || isLoading || !value.trim()}\r\n className={cn(\r\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg transition-colors\",\r\n value.trim() && !disabled && !isLoading\r\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\r\n : \"bg-muted text-muted-foreground cursor-not-allowed\",\r\n )}\r\n aria-label=\"Send message\"\r\n >\r\n {isLoading ? (\r\n <svg\r\n className=\"animate-spin\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n ) : (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"m5 12 7-7 7 7\" />\r\n <path d=\"M12 19V5\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n )\r\n },\r\n)\r\nChatInput.displayName = \"ChatInput\"\r\n\r\nexport { ChatInput }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatContainer\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatContainerProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst ChatContainer = React.forwardRef<HTMLDivElement, ChatContainerProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col h-full\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n ),\r\n)\r\nChatContainer.displayName = \"ChatContainer\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// ChatList — auto-scrolling message list\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ChatListProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Auto-scroll to bottom when children change @default true */\r\n autoScroll?: boolean\r\n}\r\n\r\nconst ChatList = React.forwardRef<HTMLDivElement, ChatListProps>(\r\n ({ className, children, autoScroll = true, ...props }, ref) => {\r\n const bottomRef = React.useRef<HTMLDivElement>(null)\r\n const childCount = React.Children.count(children)\r\n\r\n React.useEffect(() => {\r\n if (autoScroll && bottomRef.current) {\r\n bottomRef.current.scrollIntoView({ behavior: \"smooth\" })\r\n }\r\n }, [childCount, autoScroll])\r\n\r\n return (\r\n <ScrollArea className=\"flex-1\" orientation=\"vertical\">\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col gap-4 p-4\", className)}\r\n {...props}\r\n >\r\n {children}\r\n <div ref={bottomRef} />\r\n </div>\r\n </ScrollArea>\r\n )\r\n },\r\n)\r\nChatList.displayName = \"ChatList\"\r\n\r\nexport { ChatContainer, ChatList }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// AILoading — typing dots\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface AILoadingProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Visual variant @default \"dots\" */\r\n variant?: \"dots\" | \"text\"\r\n /** Text shown for the \"text\" variant @default \"Thinking\" */\r\n text?: string\r\n}\r\n\r\nconst AILoading = React.forwardRef<HTMLDivElement, AILoadingProps>(\r\n ({ className, variant = \"dots\", text = \"Thinking\", ...props }, ref) => {\r\n if (variant === \"text\") {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center gap-1.5 text-sm text-muted-foreground\", className)}\r\n {...props}\r\n >\r\n <svg\r\n className=\"animate-spin h-4 w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n <span className=\"animate-pulse\">{text}…</span>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center gap-1\", className)}\r\n {...props}\r\n >\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:0ms]\" />\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:150ms]\" />\r\n <span className=\"h-2 w-2 rounded-full bg-muted-foreground/60 animate-bounce [animation-delay:300ms]\" />\r\n </div>\r\n )\r\n },\r\n)\r\nAILoading.displayName = \"AILoading\"\r\n\r\nexport { AILoading }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// MarkdownRenderer — lightweight, zero‑dependency Markdown → React renderer\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface MarkdownRendererProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Raw Markdown string */\r\n content: string\r\n /** Streaming mode — suppresses layout shift by avoiding final trim @default false */\r\n streaming?: boolean\r\n}\r\n\r\n// ---- inline parser --------------------------------------------------------\r\n\r\nfunction parseInline(text: string): React.ReactNode[] {\r\n const nodes: React.ReactNode[] = []\r\n // regex order matters: code first, then bold, italic, link\r\n const re = /(`[^`]+`)|(\\*\\*[^*]+\\*\\*)|(\\*[^*]+\\*)|(\\[[^\\]]+\\]\\([^)]+\\))/g\r\n let lastIndex = 0\r\n let match: RegExpExecArray | null\r\n\r\n while ((match = re.exec(text)) !== null) {\r\n if (match.index > lastIndex) {\r\n nodes.push(text.slice(lastIndex, match.index))\r\n }\r\n const m = match[0]\r\n if (m.startsWith(\"`\")) {\r\n nodes.push(\r\n <code key={match.index} className=\"px-1 py-0.5 rounded bg-muted text-sm font-mono\">\r\n {m.slice(1, -1)}\r\n </code>,\r\n )\r\n } else if (m.startsWith(\"**\")) {\r\n nodes.push(<strong key={match.index}>{m.slice(2, -2)}</strong>)\r\n } else if (m.startsWith(\"*\")) {\r\n nodes.push(<em key={match.index}>{m.slice(1, -1)}</em>)\r\n } else if (m.startsWith(\"[\")) {\r\n const labelEnd = m.indexOf(\"]\")\r\n const label = m.slice(1, labelEnd)\r\n const url = m.slice(labelEnd + 2, -1)\r\n nodes.push(\r\n <a\r\n key={match.index}\r\n href={url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"text-primary underline underline-offset-2 hover:text-primary/80\"\r\n >\r\n {label}\r\n </a>,\r\n )\r\n }\r\n lastIndex = match.index + m.length\r\n }\r\n if (lastIndex < text.length) nodes.push(text.slice(lastIndex))\r\n return nodes\r\n}\r\n\r\n// ---- block parser ---------------------------------------------------------\r\n\r\nfunction parseBlocks(markdown: string): React.ReactNode[] {\r\n const lines = markdown.split(\"\\n\")\r\n const elements: React.ReactNode[] = []\r\n let i = 0\r\n let key = 0\r\n\r\n while (i < lines.length) {\r\n const line = lines[i]\r\n\r\n // fenced code block\r\n if (line.trimStart().startsWith(\"```\")) {\r\n const lang = line.trimStart().slice(3).trim()\r\n const codeLines: string[] = []\r\n i++\r\n while (i < lines.length && !lines[i].trimStart().startsWith(\"```\")) {\r\n codeLines.push(lines[i])\r\n i++\r\n }\r\n i++ // skip closing ```\r\n elements.push(\r\n <pre\r\n key={key++}\r\n className=\"overflow-x-auto rounded-lg p-4 text-[13px] leading-relaxed font-mono my-3\"\r\n style={{ background: \"var(--cb-bg, #1e1e2e)\", color: \"var(--cb-plain, #d4d4d4)\" }}\r\n >\r\n <code data-language={lang || undefined}>{codeLines.join(\"\\n\")}</code>\r\n </pre>,\r\n )\r\n continue\r\n }\r\n\r\n // headings\r\n const headingMatch = line.match(/^(#{1,6})\\s+(.*)/)\r\n if (headingMatch) {\r\n const level = headingMatch[1].length as 1 | 2 | 3 | 4 | 5 | 6\r\n const text = headingMatch[2]\r\n const Tag = `h${level}` as keyof JSX.IntrinsicElements\r\n const sizes: Record<number, string> = {\r\n 1: \"text-2xl font-bold mt-6 mb-3\",\r\n 2: \"text-xl font-semibold mt-5 mb-2\",\r\n 3: \"text-lg font-semibold mt-4 mb-2\",\r\n 4: \"text-base font-semibold mt-3 mb-1\",\r\n 5: \"text-sm font-semibold mt-2 mb-1\",\r\n 6: \"text-sm font-medium mt-2 mb-1\",\r\n }\r\n elements.push(\r\n <Tag key={key++} className={sizes[level]}>\r\n {parseInline(text)}\r\n </Tag>,\r\n )\r\n i++\r\n continue\r\n }\r\n\r\n // unordered list\r\n if (/^[\\s]*[-*]\\s/.test(line)) {\r\n const items: React.ReactNode[] = []\r\n while (i < lines.length && /^[\\s]*[-*]\\s/.test(lines[i])) {\r\n items.push(\r\n <li key={key++}>{parseInline(lines[i].replace(/^[\\s]*[-*]\\s/, \"\"))}</li>,\r\n )\r\n i++\r\n }\r\n elements.push(\r\n <ul key={key++} className=\"list-disc pl-5 space-y-1 my-2 text-sm\">\r\n {items}\r\n </ul>,\r\n )\r\n continue\r\n }\r\n\r\n // ordered list\r\n if (/^\\s*\\d+\\.\\s/.test(line)) {\r\n const items: React.ReactNode[] = []\r\n while (i < lines.length && /^\\s*\\d+\\.\\s/.test(lines[i])) {\r\n items.push(\r\n <li key={key++}>{parseInline(lines[i].replace(/^\\s*\\d+\\.\\s/, \"\"))}</li>,\r\n )\r\n i++\r\n }\r\n elements.push(\r\n <ol key={key++} className=\"list-decimal pl-5 space-y-1 my-2 text-sm\">\r\n {items}\r\n </ol>,\r\n )\r\n continue\r\n }\r\n\r\n // blockquote\r\n if (line.startsWith(\">\")) {\r\n const quoteLines: string[] = []\r\n while (i < lines.length && lines[i].startsWith(\">\")) {\r\n quoteLines.push(lines[i].replace(/^>\\s?/, \"\"))\r\n i++\r\n }\r\n elements.push(\r\n <blockquote\r\n key={key++}\r\n className=\"border-l-4 border-primary/40 pl-4 italic text-muted-foreground my-3 text-sm\"\r\n >\r\n {parseInline(quoteLines.join(\" \"))}\r\n </blockquote>,\r\n )\r\n continue\r\n }\r\n\r\n // horizontal rule\r\n if (/^[-*_]{3,}\\s*$/.test(line)) {\r\n elements.push(<hr key={key++} className=\"my-4 border-border\" />)\r\n i++\r\n continue\r\n }\r\n\r\n // empty line\r\n if (line.trim() === \"\") {\r\n i++\r\n continue\r\n }\r\n\r\n // paragraph\r\n elements.push(\r\n <p key={key++} className=\"text-sm leading-relaxed my-2\">\r\n {parseInline(line)}\r\n </p>,\r\n )\r\n i++\r\n }\r\n\r\n return elements\r\n}\r\n\r\n// ---- component ------------------------------------------------------------\r\n\r\nconst MarkdownRenderer = React.forwardRef<HTMLDivElement, MarkdownRendererProps>(\r\n ({ content, streaming, className, ...props }, ref) => {\r\n const processed = streaming ? content : content.trim()\r\n const elements = React.useMemo(() => {\r\n try {\r\n return parseBlocks(processed)\r\n } catch {\r\n return [React.createElement(\"p\", { className: \"text-sm\" }, processed)]\r\n }\r\n }, [processed])\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"markdown-renderer\", className)}\r\n {...props}\r\n >\r\n {elements}\r\n </div>\r\n )\r\n },\r\n)\r\nMarkdownRenderer.displayName = \"MarkdownRenderer\"\r\n\r\nexport { MarkdownRenderer }\r\n","import * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// PromptSuggestions\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface PromptSuggestion {\r\n title: string\r\n description?: string\r\n prompt: string\r\n}\r\n\r\nexport interface PromptSuggestionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\r\n suggestions: PromptSuggestion[]\r\n onSelect?: (prompt: string) => void\r\n /** Number of grid columns @default 2 */\r\n columns?: 1 | 2 | 3 | 4\r\n}\r\n\r\nconst PromptSuggestions = React.forwardRef<HTMLDivElement, PromptSuggestionsProps>(\r\n ({ suggestions, onSelect, columns = 2, className, ...props }, ref) => {\r\n const gridCols: Record<number, string> = {\r\n 1: \"grid-cols-1\",\r\n 2: \"grid-cols-1 sm:grid-cols-2\",\r\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\r\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid gap-3\", gridCols[columns], className)}\r\n {...props}\r\n >\r\n {suggestions.map((s, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n onClick={() => onSelect?.(s.prompt)}\r\n className={cn(\r\n \"flex flex-col items-start gap-1 rounded-xl border border-border p-4\",\r\n \"bg-card text-left transition-colors hover:bg-muted/60 hover:border-primary/30\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n )}\r\n >\r\n <span className=\"text-sm font-medium text-foreground\">{s.title}</span>\r\n {s.description && (\r\n <span className=\"text-xs text-muted-foreground line-clamp-2\">\r\n {s.description}\r\n </span>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )\r\n },\r\n)\r\nPromptSuggestions.displayName = \"PromptSuggestions\"\r\n\r\nexport { PromptSuggestions }\r\n"],"names":["r","t","f","n","o","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","falsyToString","cx","cva","base","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","React","size","asChild","ref","jsx","Slot","inputVariants","Input","type","inputSize","Textarea","labelVariants","Label","LabelPrimitive","badgeVariants","Badge","Separator","orientation","SeparatorPrimitive","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Checkbox","CheckboxPrimitive","Check","Switch","SwitchPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","children","jsxs","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","Slider","SliderPrimitive","toggleVariants","Toggle","TogglePrimitive","ToggleGroup","ToggleGroupPrimitive","ToggleGroupContext","ToggleGroupItem","context","Calendar","selected","onSelect","disabled","currentMonth","setCurrentMonth","startOfMonth","monthStart","monthEnd","endOfMonth","calendarStart","startOfWeek","calendarEnd","endOfWeek","days","eachDayOfInterval","weekDays","handlePrevMonth","subMonths","handleNextMonth","addMonths","handleDayClick","day","isSameDay","ChevronLeft","format","ChevronRight","isCurrentMonth","isSameMonth","isSelected","isTodayDate","isToday","isDisabled","today","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","sideOffset","DatePicker","onChange","placeholder","open","setOpen","CalendarIcon","date","TimePicker","is24Hour","period","setPeriod","displayHours","formatTime","h","m","handleHourChange","hour","newHours","handleMinuteChange","minute","handlePeriodChange","newPeriod","hours","_","minutes","Clock","NumberInput","min","max","step","handleIncrement","newValue","handleDecrement","handleChange","e","parsed","clamped","Minus","Plus","TagInput","values","maxTags","inputValue","setInputValue","inputRef","handleKeyDown","removeTag","tagToRemove","tag","_a","X","Combobox","options","searchPlaceholder","emptyText","search","setSearch","filteredOptions","option","selectedOption","ChevronsUpDown","MultiSelect","maxDisplay","selectedOptions","handleSelect","optionValue","v","handleRemove","displayText","opt","OTPInput","length","onComplete","inputRefs","char","handlePaste","pastedData","el","FileUpload","accept","maxSize","multiple","onUpload","files","setFiles","isDragging","setIsDragging","handleFiles","fileList","validFiles","file","newFiles","handleDrop","handleDragOver","handleDragLeave","removeFile","formatSize","bytes","Upload","FileIcon","PRESET_COLORS","hexToHsl","hex","g","b","s","d","hslToHex","l","a","color","ColorPicker","hsl","setHsl","hexInput","setHexInput","gradientRef","updateColor","newHsl","handleGradientClick","rect","y","handleHexChange","Box","Component","Flex","direction","wrap","justify","gap","style","VStack","spacing","HStack","Grid","cols","colClasses","maxWidthMap","Container","maxWidth","centered","AspectRatio","AspectRatioPrimitive","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","cardVariants","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","ScrollArea","ScrollAreaPrimitive","ScrollBar","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","sheetVariants","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","DropdownMenuSubContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","checked","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","alertVariants","Alert","AlertTitle","AlertDescription","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Progress","ProgressPrimitive","Skeleton","__insertCSS","code","head","getAsset","SuccessIcon","InfoIcon","WarningIcon","ErrorIcon","bars","Loader","visible","CloseIcon","useIsDocumentHidden","isDocumentHidden","setIsDocumentHidden","callback","toastsCounter","Observer","subscriber","data","_data_id","message","rest","id","alreadyExists","toast","dismissible","promise","p","shouldDismiss","originalPromise","response","isHttpResponse","promiseData","description","toastSettings","error","unwrap","resolve","reject","ToastState","toastFunction","basicToast","getHistory","getToasts","isAction","action","VISIBLE_TOASTS_AMOUNT","VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","TOAST_LIFETIME","TOAST_WIDTH","GAP","SWIPE_THRESHOLD","TIME_BEFORE_UNMOUNT","classes","getDefaultSwipeDirections","x","directions","Toast","_toast_classNames","_toast_classNames1","_toast_classNames2","_toast_classNames3","_toast_classNames4","_toast_classNames5","_toast_classNames6","_toast_classNames7","_toast_classNames8","ToasterInvert","unstyled","interacting","setHeights","visibleToasts","heights","toasts","expanded","removeToast","defaultRichColors","closeButtonFromToaster","cancelButtonStyle","actionButtonStyle","descriptionClassName","durationFromToaster","expandByDefault","icons","closeButtonAriaLabel","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","mounted","setMounted","removed","setRemoved","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","remainingTime","dragStartTime","toastRef","isFront","isVisible","toastType","toastClassname","toastDescriptionClassname","heightIndex","height","closeButton","_toast_closeButton","duration","closeTimerStartTimeRef","offset","lastCloseTimerStartTimeRef","pointerStartRef","toastsHeightBefore","prev","curr","reducerIndex","invert","toastNode","originalHeight","newHeight","deleteToast","timeoutId","elapsedTime","getLoadingIcon","icon","_toast_richColors","_icons_close","event","_toastRef_current","_toastRef_current1","_dragStartTime_current","swipeAmountX","swipeAmountY","timeTaken","swipeAmount","velocity","_toastRef_current2","_toastRef_current3","_window_getSelection","yDelta","xDelta","_props_swipeDirections","swipeDirections","getDampening","delta","dampenedDelta","getDocumentDirection","dirAttribute","assignOffset","defaultOffset","mobileOffset","styles","isMobile","defaultValue","assignAll","Toaster","hotkey","expand","richColors","toastOptions","dir","containerAriaLabel","setToasts","filteredToasts","possiblePositions","setExpanded","setInteracting","actualTheme","setActualTheme","listRef","hotkeyLabel","lastFocusedElementRef","isFocusWithinRef","toastToRemove","_toasts_find","ReactDOM","indexOfExistingToast","darkMediaQuery","matches","_listRef_current","_listRef_current1","_heights_","_toastOptions_duration","_toastOptions_closeButton","THEMES","getSystemTheme","resolveTheme","disableTransitions","nonce","applyTheme","resolved","attribute","root","ThemeProviderContext","createContext","ThemeProvider","defaultTheme","storageKey","enableSystem","disableTransitionOnChange","forcedTheme","setThemeState","useState","stored","resolvedTheme","setResolvedTheme","themeRef","useRef","apply","useCallback","active","enableTransitions","useEffect","mq","handler","newTheme","setTheme","themes","useMemo","useTheme","useContext","themeProp","resolvedSonnerTheme","Sonner","EmptyState","title","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","PaginationPrevious","PaginationNext","PaginationEllipsis","MoreHorizontal","Stepper","steps","activeStep","isCompleted","isCurrent","isLast","NavigationMenu","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuIndicator","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isString","isBoolean","mathAbs","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","Alignment","viewSize","predefined","start","center","end","measure","EventStore","listeners","add","node","removeListener","legacyMediaQueryList","self","clear","remove","Animations","ownerDocument","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","width","Limit","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","pointerDown","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","pointerUp","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","scrollBound","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","eventStore","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","Vector1D","initialValue","normalizeInput","subtract","Translate","translate","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","findSlideBounds","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","mediaQueries","PluginsHandler","optionsHandler","activePlugins","map","EmblaCarousel","userOptions","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","optionsBase","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","CarouselContext","useCarousel","Carousel","opts","setApi","carouselRef","setCanScrollPrev","setCanScrollNext","CarouselContent","CarouselItem","CarouselPrevious","CarouselNext","functionalUpdate","updater","input","makeStateUpdater","instance","old","isFunction","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","deps","depArgs","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","createCell","table","row","column","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","_options$id","header","leafHeaders","recurseHeader","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","ColumnFaceting","includesString","filterValue","_filterValue$toString","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","nextValue","extent","mean","leafRows","count","median","mid","nums","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","ColumnOrdering","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","j","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","_table$getColumn","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","DataTable","searchKey","setSorting","setColumnFilters","columnVisibility","setColumnVisibility","setRowSelection","_b","DataTableColumnHeader","ArrowUpDown","KEYWORDS","CSS_KEYWORDS","tokenize","language","lines","isCSS","isHTML","isJSON","isBash","line","tokens","maxIter","iter","quote","closing","tagName","word","tokenColors","CodeBlock","showLineNumbers","showCopy","copied","setCopied","trimmed","tokenLines","handleCopy","lineIdx","tok","tokIdx","headingVariants","Heading","level","as","Tag","textVariants","Text","weight","leading","Code","Blockquote","Lead","Muted","ChartContainer","ResponsiveContainer","ChartTooltip","RechartsTooltip","ChartLegend","RechartsLegend","Timeline","TimelineItem","TimelineIcon","TimelineConnector","TimelineContent","AppShell","Sidebar","Header","Main","MetricCard","trend","trendLabel","TrendingUp","TrendingDown","CopyInput","hasCopied","setHasCopied","onCopy","Copy","JsonViewer","statusBadgeVariants","StatusBadge","status","dot","ModeToggle","Sun","Moon","Monitor","items","ModeToggleGroup","Icon","ChatBubble","ChatBubbleAvatar","src","fallback","ChatBubbleMessage","isLoading","ChatBubbleTimestamp","ChatInput","onSend","showAttach","textareaRef","setValue","adjustHeight","handleSend","ChatContainer","ChatList","autoScroll","bottomRef","childCount","AILoading","parseInline","nodes","re","lastIndex","match","labelEnd","url","parseBlocks","markdown","elements","lang","codeLines","headingMatch","sizes","quoteLines","MarkdownRenderer","streaming","processed","PromptSuggestions","suggestions"],"mappings":"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","x_google_ignoreList":[0,1,3,50,60,61,62,64,65]}
|