@mhome/ui 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/menu.jsx +298 -45
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.js","../src/components/card.jsx","../../../node_modules/class-variance-authority/dist/index.mjs","../src/components/button.jsx","../src/common/adaptive-theme-provider.js","../src/global-state.js","../src/components/dialog.jsx","../src/components/icon-button.jsx","../src/components/typography.jsx","../src/components/chip.jsx","../src/components/text-field.jsx","../../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/check.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../../node_modules/lucide-react/dist/esm/icons/info.js","../../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/select.jsx","../src/components/checkbox.jsx","../src/components/list.jsx","../src/components/accordion.jsx","../src/components/alert.jsx","../src/components/tabs.jsx","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/tippy.js/dist/tippy.esm.js","../src/components/tooltip.jsx","../../../node_modules/dayjs/dayjs.min.js","../src/components/autocomplete.jsx","../src/components/date-picker.jsx","../src/components/drawer.jsx","../src/components/form-control-label.jsx","../src/components/form-label.jsx","../src/components/form-group.jsx","../src/components/radio-group.jsx","../src/components/radio.jsx","../src/components/collapse.jsx","../src/components/dialog-content-text.jsx","../src/components/container.jsx","../src/components/divider.jsx","../src/components/avatar.jsx","../src/components/stack.jsx","../src/components/input-adornment.jsx","../src/components/paper.jsx","../src/components/app-bar.jsx","../src/components/toolbar.jsx","../src/components/menu.jsx","../src/components/table.jsx","../src/components/toggle-button.jsx","../src/lib/useMediaQuery.js","../src/components/grid.jsx","../src/components/input-label.jsx","../src/components/slider.jsx","../src/components/box.jsx"],"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 React from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n\n// Convert MUI spacing unit to pixels (MUI spacing unit = 8px)\nexport function spacingToPx(value) {\n if (typeof value === \"number\") {\n return `${value * 8}px`;\n }\n return value;\n}\n\n// Helper function to convert MUI sx prop to style object\nexport const convertSxToStyle = (sx) => {\n if (!sx) return {};\n const style = {};\n for (const key in sx) {\n if (Object.prototype.hasOwnProperty.call(sx, key)) {\n const value = sx[key];\n // Handle spacing values\n if (\n typeof value === \"number\" &&\n [\n \"p\",\n \"px\",\n \"py\",\n \"pt\",\n \"pb\",\n \"pl\",\n \"pr\",\n \"m\",\n \"mx\",\n \"my\",\n \"mt\",\n \"mb\",\n \"ml\",\n \"mr\",\n \"gap\",\n ].includes(key)\n ) {\n const cssProp = {\n p: \"padding\",\n px: [\"paddingLeft\", \"paddingRight\"],\n py: [\"paddingTop\", \"paddingBottom\"],\n pt: \"paddingTop\",\n pb: \"paddingBottom\",\n pl: \"paddingLeft\",\n pr: \"paddingRight\",\n m: \"margin\",\n mx: [\"marginLeft\", \"marginRight\"],\n my: [\"marginTop\", \"marginBottom\"],\n mt: \"marginTop\",\n mb: \"marginBottom\",\n ml: \"marginLeft\",\n mr: \"marginRight\",\n gap: \"gap\",\n }[key];\n\n if (Array.isArray(cssProp)) {\n cssProp.forEach((prop) => (style[prop] = spacingToPx(value)));\n } else {\n style[cssProp] = spacingToPx(value);\n }\n } else if (key === \"bgcolor\") {\n // Handle bgcolor - convert theme paths to CSS variables\n if (typeof value === \"string\" && value.includes(\".\")) {\n const bgcolorMap = {\n \"background.paper\": \"hsl(var(--card))\",\n \"background.default\": \"hsl(var(--background))\",\n \"background.card\": \"hsl(var(--card))\",\n };\n style.backgroundColor = bgcolorMap[value] || value;\n } else {\n style.backgroundColor = value;\n }\n } else {\n style[key] = value;\n }\n }\n }\n return style;\n};\n\n// Hook to detect dark mode by checking document class\nexport const useIsDarkMode = () => {\n const [isDark, setIsDark] = React.useState(() => {\n if (typeof document !== \"undefined\") {\n return document.documentElement.classList.contains(\"dark\");\n }\n return false;\n });\n\n React.useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return isDark ? \"dark\" : \"light\";\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Card = React.forwardRef(\n ({ className, elevation = 1, variant = \"elevation\", square = false, style, ...props }, ref) => {\n // Get elevation shadow (Material Design elevation system)\n const getElevationShadow = () => {\n // If variant is \"outlined\", no shadow\n if (variant === \"outlined\") {\n return {\n boxShadow: \"none\",\n border: \"1px solid hsl(var(--border))\",\n };\n }\n \n // elevation variant (default)\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range and get shadow\n const clampedElevation = Math.max(0, Math.min(24, Math.round(elevation)));\n return { boxShadow: shadows[clampedElevation] || shadows[1] };\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-card text-card-foreground\",\n !square && \"rounded-lg\",\n variant === \"outlined\" ? \"border\" : \"border\",\n elevation === 0 && variant === \"elevation\" && \"shadow-none\",\n className\n )}\n style={{\n ...getElevationShadow(),\n ...style,\n }}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n ))\n);\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n ))\n);\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n ))\n);\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.memo(\n React.forwardRef(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(\"p-6\", className)} {...props} />;\n })\n);\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n ))\n);\nCardFooter.displayName = \"CardFooter\";\n\nconst CardActionArea = React.forwardRef(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={0}\n className={cn(\n \"cursor-pointer rounded-lg transition-colors hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n className\n )}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (props.onClick) {\n props.onClick(e);\n }\n }\n }}\n {...props}\n />\n );\n});\nCardActionArea.displayName = \"CardActionArea\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n CardActionArea,\n};\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\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium 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\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst Button = React.forwardRef(\n (\n {\n className,\n variant,\n size,\n startIcon,\n endIcon,\n children,\n style,\n color,\n fullWidth = false,\n disabled = false,\n href,\n component,\n ...props\n },\n ref\n ) => {\n // Map MUI variants to shadcn variants\n const mappedVariant =\n variant === \"outlined\"\n ? \"outline\"\n : variant === \"contained\"\n ? \"default\"\n : variant === \"text\"\n ? \"ghost\"\n : color === \"error\"\n ? \"destructive\"\n : variant;\n\n // Map MUI size to shadcn size\n const mappedSize =\n size === \"small\"\n ? \"sm\"\n : size === \"medium\"\n ? \"default\"\n : size === \"large\"\n ? \"lg\"\n : size || \"default\";\n\n const Component = component || (href ? \"a\" : \"button\");\n const buttonProps = href\n ? { href, ...props }\n : { type: \"button\", disabled, ...props };\n\n return (\n <Component\n className={cn(\n buttonVariants({ variant: mappedVariant, size: mappedSize }),\n fullWidth && \"w-full\",\n className\n )}\n ref={ref}\n style={style}\n {...buttonProps}\n >\n {startIcon && (\n <span className=\"mr-2 inline-flex items-center\">{startIcon}</span>\n )}\n {children}\n {endIcon && (\n <span className=\"ml-2 inline-flex items-center\">{endIcon}</span>\n )}\n </Component>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","// Simplified version for examples project\nimport React from \"react\";\n\nexport const getBackground = (backgroundType, isDark) => {\n // Return null for solid backgrounds, or gradient strings for gradient backgrounds\n // This is a simplified version - in the real project this would handle theme logic\n return null;\n};\n\n// Hook for getting component background color\nexport const useComponentBackgroundColor = () => {\n // Simplified version - return a function that accepts a default color\n // In the real project, this would use theme context or state management\n return (defaultColor) => {\n // Return the default color passed in, or fallback to background\n return defaultColor || \"hsl(var(--background))\";\n };\n};\n\n","// Simplified version for examples project\n// In the real project, this would use Recoil for state management\n// For examples, we'll use a simple React context or just return default values\n\nimport React from \"react\";\n\n// Create a simple context for background type\nconst BackgroundTypeContext = React.createContext(\"solid\");\n\nexport const BackgroundTypeProvider = ({ children, value = \"solid\" }) => {\n return (\n <BackgroundTypeContext.Provider value={value}>\n {children}\n </BackgroundTypeContext.Provider>\n );\n};\n\n// Mock Recoil atom for background type\nexport const backgroundTypeState = {\n key: \"backgroundType\",\n default: \"solid\",\n};\n\n// Mock useRecoilValue hook\nexport const useRecoilValue = (atom) => {\n const context = React.useContext(BackgroundTypeContext);\n return context || atom.default || \"solid\";\n};\n\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn, spacingToPx, useIsDarkMode } from \"../lib/utils\";\nimport { getBackground } from \"../common/adaptive-theme-provider\";\nimport { useRecoilValue, backgroundTypeState } from \"../global-state\";\n\nconst Dialog = ({\n open,\n onClose,\n children,\n variant,\n maxWidth,\n fullWidth,\n fullScreen = false,\n PaperProps,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}) => {\n const dialogId = React.useId();\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n\n // All hooks must be called before any early returns\n // This ensures hooks are called in the same order on every render\n // Merge sx styles from PaperProps if provided\n const paperSxStyles = React.useMemo(() => {\n if (!PaperProps?.sx) return {};\n const sxObj =\n typeof PaperProps.sx === \"function\"\n ? PaperProps.sx({}) // Empty theme object for compatibility\n : PaperProps.sx;\n return sxObj;\n }, [PaperProps?.sx]);\n\n if (!open) return null;\n\n const maxWidthClass =\n {\n xs: \"max-w-xs\",\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n }[maxWidth] || \"max-w-lg\";\n\n // Get pops variant styles from theme\n const popsStyles =\n variant === \"pops\"\n ? {\n minWidth: \"300px\",\n maxWidth: \"800px\",\n }\n : {};\n\n // Drawer variant styles\n const drawerStyles =\n variant === \"drawer\"\n ? {\n margin: 0,\n maxHeight: \"100vh\",\n height: \"100vh\",\n borderRadius: \"16px 0 0 16px\",\n }\n : {};\n\n // For drawer variant, use background gradient if available, otherwise use standard background\n const paperBg =\n variant === \"drawer\"\n ? getBackground(backgroundType, actualMode === \"dark\")\n : null;\n const isGradient =\n paperBg &&\n typeof paperBg === \"string\" &&\n (paperBg.startsWith(\"linear-gradient\") ||\n paperBg.startsWith(\"radial-gradient\") ||\n paperBg.startsWith(\"conic-gradient\"));\n\n const borderRadius =\n variant === \"pops\"\n ? \"16px\"\n : variant === \"drawer\"\n ? \"16px 0 0 16px\"\n : \"8px\";\n\n // Handle PaperProps (MUI compatibility)\n const paperPropsStyle = PaperProps?.style || {};\n const paperPropsClassName = PaperProps?.className || \"\";\n\n // Determine container alignment based on variant\n const containerClass =\n variant === \"drawer\"\n ? \"flex items-stretch justify-end\"\n : fullScreen\n ? \"flex items-stretch\"\n : \"flex items-center justify-center\";\n\n // Get z-index from CSS variable or use default\n const zIndex =\n variant === \"drawer\"\n ? parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1300\",\n 10\n )\n : parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-modal\"\n ) || \"1300\",\n 10\n );\n\n // Render dialog content using Portal to body to avoid parent container constraints\n const dialogContent = (\n <>\n {/* Backdrop - more opaque for better separation */}\n <div\n className={cn(\n \"fixed inset-0\",\n actualMode === \"dark\" ? \"bg-black/80\" : \"bg-black/60\"\n )}\n style={{\n zIndex: zIndex - 1,\n pointerEvents: \"auto\",\n }}\n onClick={(e) => {\n if (onClose) onClose(e, \"backdropClick\");\n }}\n />\n {/* Dialog content - fully opaque, above backdrop */}\n <div\n className={cn(\"fixed inset-0\", containerClass)}\n style={{\n zIndex: zIndex,\n pointerEvents: \"none\",\n }}\n {...props}\n >\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabelledBy || `${dialogId}-title`}\n aria-describedby={ariaDescribedBy || `${dialogId}-description`}\n className={cn(\n \"relative shadow-2xl\",\n fullScreen || variant === \"drawer\"\n ? \"h-full w-full\"\n : \"w-full max-w-[calc(100%-32px)]\",\n fullScreen || variant === \"drawer\" ? \"\" : \"mx-4\",\n !fullScreen && variant !== \"drawer\" && maxWidthClass,\n fullWidth && !fullScreen && variant !== \"drawer\" && \"max-w-full\",\n variant === \"drawer\" && !isGradient && \"bg-background\",\n !isGradient && variant !== \"drawer\" && \"bg-card\",\n paperPropsClassName\n )}\n style={{\n // Use background for gradients, className for solid colors\n ...(isGradient ? { background: paperBg } : {}),\n borderRadius: fullScreen ? 0 : borderRadius,\n position: \"relative\",\n opacity: 1,\n pointerEvents: \"auto\",\n touchAction: \"none\",\n ...popsStyles,\n ...drawerStyles,\n ...paperSxStyles,\n ...paperPropsStyle,\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n\n // Use Portal to render dialog to body, ensuring it's not constrained by parent containers\n return typeof document !== \"undefined\"\n ? createPortal(dialogContent, document.body)\n : null;\n};\n\nconst DialogContent = React.forwardRef(\n ({ className, children, style, sx, ...props }, ref) => {\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n const bgColor = getBackground(backgroundType, actualMode === \"dark\");\n const isGradient =\n bgColor &&\n typeof bgColor === \"string\" &&\n (bgColor.startsWith(\"linear-gradient\") ||\n bgColor.startsWith(\"radial-gradient\") ||\n bgColor.startsWith(\"conic-gradient\"));\n\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx; // Empty theme object for compatibility\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding class, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"p-6\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"text-left rounded-b-[inherit]\",\n defaultPaddingClass,\n \"p-6\",\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n ...(backgroundColor !== undefined\n ? backgroundColor.startsWith(\"linear-gradient\") ||\n backgroundColor.startsWith(\"radial-gradient\") ||\n backgroundColor.startsWith(\"conic-gradient\")\n ? { background: backgroundColor }\n : { backgroundColor }\n : {}),\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n opacity: 1,\n pointerEvents: \"auto\",\n ...sxStyles,\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = ({ className, ...props }) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left px-6 pt-6\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 px-6 pb-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef(\n ({ className, style, sx, ...props }, ref) => {\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n const bgColor = getBackground(backgroundType, actualMode === \"dark\");\n const isGradient =\n bgColor &&\n typeof bgColor === \"string\" &&\n (bgColor.startsWith(\"linear-gradient\") ||\n bgColor.startsWith(\"radial-gradient\") ||\n bgColor.startsWith(\"conic-gradient\"));\n\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx; // Empty theme object for compatibility\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n // Check if padding is explicitly set (if padding is set, individual paddings should be undefined)\n // If no padding is set at all, use defaults\n const hasAnyPadding =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n return (\n <h2\n ref={ref}\n className={cn(\n \"rounded-t-[inherit]\",\n \"text-lg font-semibold leading-none tracking-tight\",\n \"text-foreground\",\n // DialogTitle is typically used inside DialogHeader which has padding\n // Only add padding if explicitly needed (when used standalone)\n // For normal use, padding is handled by DialogHeader\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n ...(backgroundColor !== undefined\n ? backgroundColor.startsWith(\"linear-gradient\") ||\n backgroundColor.startsWith(\"radial-gradient\") ||\n backgroundColor.startsWith(\"conic-gradient\")\n ? { background: backgroundColor }\n : { backgroundColor }\n : {}),\n // Allow padding override via style prop\n padding: padding,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n ...sxStyles,\n ...restStyle,\n }}\n {...props}\n />\n );\n }\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef(\n ({ className, id, ...props }, ref) => (\n <p\n ref={ref}\n id={id}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nconst DialogActions = ({ className, style, ...props }) => {\n const actualMode = useIsDarkMode();\n\n // Extract padding and gap from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n gap,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n return (\n <div\n className={cn(\n \"flex items-center justify-end rounded-b-[inherit]\",\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n backgroundColor: backgroundColor,\n // If padding is set, let it control all sides; otherwise use individual defaults\n padding: padding,\n paddingLeft:\n paddingLeft !== undefined\n ? paddingLeft\n : padding !== undefined\n ? undefined\n : \"1rem\",\n paddingRight:\n paddingRight !== undefined\n ? paddingRight\n : padding !== undefined\n ? undefined\n : \"1rem\",\n paddingTop:\n paddingTop !== undefined\n ? paddingTop\n : padding !== undefined\n ? undefined\n : \"0.5rem\",\n paddingBottom:\n paddingBottom !== undefined\n ? paddingBottom\n : padding !== undefined\n ? undefined\n : \"1rem\",\n gap: gap !== undefined ? gap : \"0.5rem\",\n opacity: 1,\n ...restStyle,\n }}\n {...props}\n />\n );\n};\nDialogActions.displayName = \"DialogActions\";\n\nexport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogActions,\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { cva } from \"class-variance-authority\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center 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\",\n {\n variants: {\n variant: {\n default: \"hover:bg-accent hover:text-accent-foreground\",\n destructive: \"hover:bg-destructive hover:text-destructive-foreground\",\n outline:\n \"border border-input hover:bg-accent hover:text-accent-foreground\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 w-10\",\n sm: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst IconButton = React.forwardRef(\n (\n {\n className,\n variant,\n size = \"default\",\n style,\n color,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n ref\n ) => {\n // Get color class based on color prop\n const getColorClass = () => {\n if (color === \"primary\") return \"text-primary\";\n if (color === \"secondary\") return \"text-secondary-foreground\";\n if (color === \"error\") return \"text-destructive\";\n if (color === \"inherit\") return \"text-inherit\";\n return \"text-muted-foreground\"; // Default\n };\n\n // Get icon size based on button size\n const getIconSize = () => {\n if (size === \"sm\") return 16;\n if (size === \"lg\") return 24;\n return 20; // default\n };\n\n // Clone children to apply size if it's a React element (like lucide-react icons)\n const childrenWithSize = React.useMemo(() => {\n if (React.isValidElement(children) && typeof children.type !== \"string\") {\n // Check if the element has a size prop (like lucide-react icons)\n if (children.props.size === undefined) {\n return React.cloneElement(children, {\n size: getIconSize(),\n });\n }\n }\n return children;\n }, [children, size]);\n\n // Warn if no aria-label is provided (accessibility best practice)\n React.useEffect(() => {\n if (!ariaLabel && !props[\"aria-labelledby\"]) {\n console.warn(\n \"IconButton: Missing aria-label or aria-labelledby. Icon-only buttons should have accessible labels.\"\n );\n }\n }, [ariaLabel, props[\"aria-labelledby\"]]);\n\n return (\n <button\n className={cn(\n iconButtonVariants({ variant, size }),\n \"rounded-2xl\",\n getColorClass(),\n className\n )}\n ref={ref}\n style={style}\n aria-label={ariaLabel}\n {...props}\n >\n {childrenWithSize}\n </button>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst typographyVariants = cva(\"\", {\n variants: {\n variant: {\n h1: \"scroll-m-20 text-4xl font-extralight tracking-tight lg:text-5xl\",\n h2: \"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\",\n h3: \"scroll-m-20 text-2xl font-semibold tracking-tight\",\n h4: \"scroll-m-20 text-xl font-semibold tracking-tight\",\n h5: \"scroll-m-20 text-lg font-semibold tracking-tight\",\n h6: \"scroll-m-20 text-base font-semibold tracking-tight\",\n p: \"leading-7 [&:not(:first-child)]:mt-6\",\n blockquote: \"mt-6 border-l-2 pl-6 italic\",\n list: \"my-6 ml-6 list-disc [&>li]:mt-2\",\n inlineCode:\n \"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\",\n lead: \"text-xl text-muted-foreground\",\n largeText: \"text-lg font-semibold\",\n smallText: \"text-sm font-medium leading-none\",\n mutedText: \"text-sm text-muted-foreground\",\n // MUI compatibility variants\n body1: \"text-base leading-normal\",\n body2: \"text-sm leading-normal\",\n subtitle1: \"text-base font-normal leading-normal\",\n subtitle2: \"text-sm font-medium leading-normal\",\n caption: \"text-xs leading-normal\",\n overline: \"text-xs font-normal uppercase leading-normal tracking-wide\",\n },\n color: {\n default: \"text-foreground\",\n primary: \"text-primary\",\n secondary: \"text-secondary-foreground\",\n muted: \"text-muted-foreground\",\n destructive: \"text-destructive\",\n error: \"text-destructive\",\n inherit: \"text-inherit\",\n },\n },\n defaultVariants: {\n variant: \"body1\",\n color: \"default\",\n },\n});\n\nconst Typography = React.forwardRef(\n (\n { className, variant = \"body1\", component, style, color, ...props },\n ref\n ) => {\n // Map MUI color props to shadcn colors\n const mappedColor =\n color === \"text.secondary\" || color === \"textSecondary\"\n ? \"muted\"\n : color === \"text.primary\" || color === \"textPrimary\"\n ? \"default\"\n : color;\n\n const Component = component || (variant.startsWith(\"h\") ? variant : \"p\");\n\n return (\n <Component\n ref={ref}\n className={cn(\n typographyVariants({ variant, color: mappedColor }),\n className\n )}\n style={style}\n {...props}\n />\n );\n }\n);\nTypography.displayName = \"Typography\";\n\nexport { Typography, typographyVariants };\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst chipVariants = cva(\n \"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors\",\n {\n variants: {\n variant: {\n default: \"text-white\",\n secondary: \"bg-secondary text-secondary-foreground\",\n outline: \"border border-input bg-background hover:bg-accent\",\n outlined: \"border border-input bg-background hover:bg-accent\",\n },\n size: {\n small: \"h-6 text-xs px-2\",\n medium: \"h-7 text-sm px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n }\n);\n\nconst Chip = React.forwardRef(\n (\n {\n className,\n variant,\n size,\n label,\n onClick,\n onDelete,\n style,\n icon,\n color,\n ...props\n },\n ref\n ) => {\n const Component = onClick || onDelete ? \"button\" : \"span\";\n\n // Get color classes based on color prop\n const getColorClasses = () => {\n if (color === \"primary\")\n return \"bg-primary text-primary-foreground hover:bg-primary/90\";\n if (color === \"secondary\")\n return \"bg-secondary text-secondary-foreground hover:bg-secondary/80\";\n if (color === \"error\" || color === \"destructive\")\n return \"bg-destructive text-destructive-foreground hover:bg-destructive/90\";\n if (color === \"success\")\n return \"bg-success text-success-foreground hover:bg-success/90\";\n if (color === \"info\")\n return \"bg-info text-info-foreground hover:bg-info/90\";\n if (color === \"warning\")\n return \"bg-warning text-warning-foreground hover:bg-warning/90\";\n return \"bg-primary text-primary-foreground hover:bg-primary/90\"; // Default\n };\n\n // Get border class for outlined variant\n const getBorderClass = () => {\n if (variant === \"outlined\" || variant === \"outline\") {\n if (color === \"primary\") return \"border-primary\";\n if (color === \"secondary\") return \"border-secondary\";\n if (color === \"error\" || color === \"destructive\")\n return \"border-destructive\";\n return \"border-border\"; // Default border\n }\n return \"\";\n };\n\n return (\n <Component\n ref={ref}\n className={cn(\n chipVariants({ variant, size }),\n variant !== \"outline\" && variant !== \"outlined\" && getColorClasses(),\n getBorderClass(),\n (onClick || onDelete) && \"cursor-pointer\",\n className\n )}\n style={style}\n onClick={onClick}\n {...props}\n >\n {icon && React.isValidElement(icon) && (\n <span\n className=\"flex items-center justify-center flex-shrink-0 mr-1\"\n style={{\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n }}\n >\n {React.cloneElement(icon, {\n style: {\n ...(icon.props?.style || {}),\n width: icon.props?.style?.width || \"16px\",\n height: icon.props?.style?.height || \"16px\",\n fontSize: icon.props?.style?.fontSize || \"16px\",\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sx: icon.props?.sx,\n })}\n </span>\n )}\n <span\n className=\"flex items-center\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n maxWidth: \"100%\",\n lineHeight: 1,\n }}\n >\n {label}\n </span>\n {onDelete && (\n <span className=\"ml-1 cursor-pointer\" onClick={onDelete}>\n ×\n </span>\n )}\n </Component>\n );\n }\n);\nChip.displayName = \"Chip\";\n\nexport { Chip };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { useComponentBackgroundColor } from \"../common/adaptive-theme-provider\";\n\nconst TextField = React.forwardRef(\n (\n {\n className,\n fullWidth = false,\n variant = \"outlined\",\n size = \"small\",\n InputProps,\n label,\n error = false,\n helperText,\n placeholder,\n multiline = false,\n rows,\n maxRows,\n disabled = false,\n value,\n floatingLabel = false,\n required = false,\n ...props\n },\n ref\n ) => {\n const getComponentBgColor = useComponentBackgroundColor();\n const [focused, setFocused] = React.useState(false);\n const inputRef = React.useRef(null);\n const combinedRef = React.useCallback(\n (node) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n const hasValue = value !== undefined && value !== null && value !== \"\";\n const shouldShrinkLabel = floatingLabel && (focused || hasValue);\n\n const sizeClasses = {\n small: \"text-sm\",\n medium: \"text-base\",\n };\n \n const sizePadding = {\n small: \"px-2.5 py-1.5\",\n medium: \"px-3 py-2\",\n };\n\n // Get background color based on variant\n const getVariantBackgroundColor = () => {\n if (InputProps?.style?.backgroundColor !== undefined) {\n return InputProps.style.backgroundColor;\n }\n if (props.style?.backgroundColor !== undefined) {\n return props.style.backgroundColor;\n }\n \n // Variant-specific background colors\n if (variant === \"filled\") {\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"hsl(var(--muted) / 0.3)\"; // Light gray background for filled\n } else if (variant === \"standard\") {\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"hsl(var(--muted) / 0.5)\"; // More prominent gray for standard\n } else {\n // outlined (default)\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"transparent\";\n }\n };\n\n const inputBackgroundColor = getVariantBackgroundColor();\n\n const {\n backgroundColor: propsBgColor,\n height: propsHeight,\n ...restPropsStyle\n } = props.style || {};\n\n const finalBackgroundColor =\n InputProps?.style?.backgroundColor !== undefined\n ? InputProps.style.backgroundColor\n : inputBackgroundColor;\n\n const inputHeight = InputProps?.style?.height || propsHeight;\n\n // Remove style and InputProps from props to avoid conflicts\n const {\n style: propsStyle,\n InputProps: propsInputProps,\n ...restProps\n } = props;\n\n // Get border style based on variant\n const getVariantBorderStyle = () => {\n if (variant === \"standard\") {\n // Standard: only bottom border\n return {\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: error\n ? \"2px solid hsl(var(--destructive))\"\n : focused\n ? \"2px solid hsl(var(--ring))\"\n : \"2px solid hsl(var(--input))\",\n borderRadius: \"0\",\n };\n } else {\n // outlined and filled: full border\n return {\n borderColor: error\n ? \"hsl(var(--destructive))\"\n : focused\n ? \"hsl(var(--ring))\"\n : \"hsl(var(--input))\",\n };\n }\n };\n\n // Build final style object - backgroundColor must come from finalBackgroundColor\n // backgroundColor must be set explicitly to ensure it's not overridden\n const finalStyle = {\n ...getVariantBorderStyle(),\n color: \"hsl(var(--foreground))\",\n ...(inputHeight && { height: inputHeight }),\n ...restPropsStyle,\n // Ensure backgroundColor is set last to override anything from restPropsStyle\n backgroundColor: finalBackgroundColor,\n };\n\n const InputComponent = multiline ? \"textarea\" : \"input\";\n // Only show placeholder when there's no value\n const shouldShowPlaceholder =\n !hasValue && (placeholder || restProps.placeholder);\n \n // Get type from props, default to \"text\" for input, undefined for textarea\n const inputType = multiline ? undefined : (restProps.type || \"text\");\n \n const inputProps = {\n ...restProps,\n type: inputType,\n value,\n placeholder: shouldShowPlaceholder\n ? placeholder || restProps.placeholder\n : undefined,\n disabled,\n rows: multiline ? rows : undefined,\n };\n\n if (floatingLabel) {\n // Floating label mode: NO label displayed - user should use InputLabel component separately\n return (\n <div className={cn(fullWidth && \"w-full\", className)}>\n <div className=\"relative\">\n <InputComponent\n ref={combinedRef}\n type={inputType}\n className={cn(\n \"w-full transition-all\",\n variant === \"standard\" ? \"\" : \"rounded-2xl border\",\n sizeClasses[size],\n sizePadding[size],\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n InputProps?.startAdornment && \"pl-10\",\n InputProps?.endAdornment && \"pr-10\",\n multiline && \"resize-none\"\n )}\n style={{\n ...restPropsStyle,\n ...getVariantBorderStyle(),\n color: \"hsl(var(--foreground))\",\n backgroundColor: finalBackgroundColor,\n ...(inputHeight && {\n height: inputHeight,\n lineHeight: inputHeight,\n }),\n }}\n onFocus={(e) => {\n setFocused(true);\n if (props.onFocus) props.onFocus(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n if (props.onBlur) props.onBlur(e);\n }}\n {...inputProps}\n />\n {InputProps?.startAdornment && (\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center z-10\">\n {InputProps.startAdornment}\n </div>\n )}\n {InputProps?.endAdornment && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center z-10\">\n {InputProps.endAdornment}\n </div>\n )}\n </div>\n {helperText && (\n <div\n className=\"text-xs mt-1\"\n style={{\n color: error\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n }}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n\n // Non-floating label version\n return (\n <div className={cn(fullWidth && \"w-full\", className)}>\n {label && (\n <label className=\"block text-sm font-medium mb-2 text-foreground\">\n {label}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </label>\n )}\n <div className=\"relative w-full\">\n <InputComponent\n ref={combinedRef}\n type={inputType}\n className={cn(\n \"w-full transition-colors\",\n variant === \"standard\" ? \"\" : \"rounded-2xl border\",\n sizeClasses[size],\n sizePadding[size],\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n InputProps?.startAdornment && \"pl-10\",\n InputProps?.endAdornment && \"pr-10\",\n multiline && \"resize-none\"\n )}\n style={finalStyle}\n onFocus={(e) => {\n setFocused(true);\n if (props.onFocus) props.onFocus(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n if (props.onBlur) props.onBlur(e);\n }}\n {...inputProps}\n />\n {InputProps?.startAdornment && (\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center\">\n {InputProps.startAdornment}\n </div>\n )}\n {InputProps?.endAdornment && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center\">\n {InputProps.endAdornment}\n </div>\n )}\n </div>\n {helperText && (\n <div\n className={cn(\n \"text-xs mt-1\",\n error ? \"text-destructive\" : \"text-muted-foreground\"\n )}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n);\nTextField.displayName = \"TextField\";\n\nexport { TextField };\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import * as React from \"react\";\nimport {\n cn,\n spacingToPx,\n convertSxToStyle,\n useIsDarkMode,\n} from \"../lib/utils\";\nimport { useComponentBackgroundColor } from \"../common/adaptive-theme-provider\";\nimport { ChevronDown } from \"lucide-react\";\n\nconst Select = React.forwardRef(\n (\n {\n className,\n children,\n value,\n onChange,\n size = \"small\",\n label,\n error = false,\n helperText,\n disabled = false,\n displayEmpty = false,\n native = false,\n renderValue,\n startAdornment,\n endAdornment,\n multiple = false,\n sx,\n style,\n ...props\n },\n ref\n ) => {\n const getComponentBgColor = useComponentBackgroundColor();\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n const [focused, setFocused] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n const [open, setOpen] = React.useState(false);\n const selectRef = React.useRef(null);\n const menuRef = React.useRef(null);\n const selectId = React.useId();\n\n React.useImperativeHandle(ref, () => selectRef.current);\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return convertSxToStyle(sxObj, {});\n }, [sx]);\n\n const sizeClasses = {\n small: \"h-9 text-sm\",\n medium: \"h-10\",\n };\n\n const isMultiple = multiple && Array.isArray(value);\n const selectedValues = isMultiple ? value : [value];\n\n const selectedOption = React.useMemo(() => {\n if (!children) return \"\";\n if (isMultiple) {\n return \"\"; // For multiple, always use renderValue\n }\n const childrenArray = React.Children.toArray(children);\n const selected = childrenArray.find(\n (child) => React.isValidElement(child) && child.props.value === value\n );\n return selected && React.isValidElement(selected)\n ? selected.props.children\n : \"\";\n }, [children, value, isMultiple]);\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event) => {\n if (\n menuRef.current &&\n !menuRef.current.contains(event.target) &&\n selectRef.current &&\n !selectRef.current.contains(event.target)\n ) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [open]);\n\n const handleOptionClick = (optionValue) => {\n if (onChange) {\n if (isMultiple) {\n const currentValues = Array.isArray(value) ? value : [];\n const newValues = currentValues.includes(optionValue)\n ? currentValues.filter((v) => v !== optionValue)\n : [...currentValues, optionValue];\n onChange({ target: { value: newValues } });\n } else {\n onChange({ target: { value: optionValue } });\n setOpen(false);\n }\n }\n };\n\n return (\n <div className=\"relative w-full\" style={{ overflow: \"visible\" }}>\n {label && (\n <label className=\"block text-sm font-medium mb-1 text-foreground\">\n {label}\n </label>\n )}\n <button\n ref={selectRef}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={label || \"Select an option\"}\n aria-controls={open ? `${selectId}-listbox` : undefined}\n onClick={() => !disabled && setOpen(!open)}\n disabled={disabled}\n className={cn(\n \"w-full rounded-3xl border transition-colors flex items-center\",\n sizeClasses[size],\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n style={{\n borderColor: error\n ? \"hsl(var(--destructive))\"\n : focused || open\n ? \"hsl(var(--primary))\"\n : hovered\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--input))\",\n backgroundColor:\n focused || open\n ? getComponentBgColor(\"hsl(var(--input))\")\n : hovered\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n textAlign: \"left\",\n fontWeight: \"normal\",\n // Use consistent padding: 14px (0.875rem) horizontal, 6px (0.375rem) vertical\n paddingLeft: startAdornment ? \"8px\" : \"14px\",\n paddingRight: endAdornment ? \"8px\" : \"14px\",\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n // If borderRadius is provided in props.style, use it; otherwise let Tailwind's rounded-3xl class handle it\n ...(style?.borderRadius !== undefined\n ? { borderRadius: style.borderRadius }\n : {}),\n ...sxStyles,\n ...Object.fromEntries(\n Object.entries(style || {}).filter(\n ([key]) => key !== \"borderRadius\"\n )\n ),\n }}\n onFocus={() => !disabled && setFocused(true)}\n onBlur={() => setFocused(false)}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {startAdornment}\n <span style={{ flex: 1, textAlign: \"left\" }}>\n {renderValue\n ? renderValue(value)\n : selectedOption || (displayEmpty ? \"\" : \"Select...\")}\n </span>\n {endAdornment || (\n <ChevronDown\n size={16}\n className={cn(\n \"transition-transform text-foreground\",\n open && \"rotate-180\"\n )}\n />\n )}\n </button>\n\n {open && (\n <div\n ref={menuRef}\n id={`${selectId}-listbox`}\n role=\"listbox\"\n aria-label={label || \"Options\"}\n className=\"absolute z-50 w-full mt-1 rounded-lg shadow-lg\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n boxShadow: isDark\n ? \"0px 4px 12px rgba(0, 0, 0, 0.4), 0px 0px 0px 1px rgba(255, 255, 255, 0.1)\"\n : \"0px 4px 12px rgba(0, 0, 0, 0.15)\",\n border: isDark\n ? \"1px solid rgba(255, 255, 255, 0.1)\"\n : \"1px solid hsl(var(--border))\",\n borderRadius: \"8px\",\n }}\n >\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return null;\n const isSelected = isMultiple\n ? selectedValues.includes(child.props.value)\n : child.props.value === value;\n const menuBgColor = \"hsl(var(--card))\";\n\n return (\n <div\n key={child.props.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => handleOptionClick(child.props.value)}\n className=\"cursor-pointer transition-colors focus:outline-none focus:bg-accent\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : menuBgColor,\n color: \"hsl(var(--foreground))\",\n paddingLeft: \"0.875rem\",\n paddingRight: \"0.875rem\",\n paddingTop: \"0.5rem\",\n paddingBottom: \"0.5rem\",\n fontSize: \"0.875rem\",\n fontWeight: \"normal\",\n textAlign: \"left\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleOptionClick(child.props.value);\n }\n }}\n tabIndex={0}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor = menuBgColor;\n } else {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n >\n {child.props.children}\n </div>\n );\n })}\n </div>\n )}\n {helperText && (\n <div\n className=\"text-xs mt-1\"\n style={{\n color: error\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n }}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n);\nSelect.displayName = \"Select\";\n\nconst MenuItem = React.forwardRef(\n ({ className, value, children, ...props }, ref) => {\n return null;\n }\n);\nMenuItem.displayName = \"MenuItem\";\n\nconst FormControl = React.forwardRef(\n ({ className, fullWidth = false, size, children, style, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(fullWidth && \"w-full\", className)}\n style={{\n position: \"relative\",\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nFormControl.displayName = \"FormControl\";\n\nexport { Select, MenuItem, FormControl };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Check } from \"lucide-react\";\n\nconst Checkbox = React.forwardRef(\n (\n {\n className,\n checked,\n onChange,\n disabled,\n style,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n return (\n <label\n className={cn(\n \"relative inline-flex items-center justify-center cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n style={style}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n className=\"sr-only\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n {...props}\n />\n <div\n className={cn(\n \"flex items-center justify-center transition-colors w-5 h-5 border-2 rounded\",\n checked\n ? \"bg-primary border-primary\"\n : hovered && !disabled\n ? \"border-primary\"\n : \"border-input bg-transparent\",\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n aria-hidden=\"true\"\n >\n {checked && <Check size={14} className=\"text-primary-foreground\" />}\n </div>\n </label>\n );\n }\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Typography } from \"./typography\";\n\nconst List = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"w-full\", className)}\n style={{\n padding: 0,\n margin: 0,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nList.displayName = \"List\";\n\nconst ListItem = React.forwardRef(\n (\n {\n className,\n style,\n alignItems = \"flex-start\",\n disablePadding,\n dense,\n children,\n ...props\n },\n ref\n ) => {\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // If disablePadding is true, don't apply default padding\n // If dense is true, use smaller padding\n let defaultPaddingClass = \"\";\n if (!disablePadding && !hasPaddingInStyle) {\n defaultPaddingClass = dense ? \"py-2 px-8\" : \"py-4 px-8\";\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", defaultPaddingClass, className)}\n style={{\n alignItems: alignItems,\n padding: disablePadding ? 0 : padding,\n paddingTop: disablePadding ? 0 : paddingTop,\n paddingBottom: disablePadding ? 0 : paddingBottom,\n paddingLeft: disablePadding ? 0 : paddingLeft,\n paddingRight: disablePadding ? 0 : paddingRight,\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItem.displayName = \"ListItem\";\n\nconst ListItemIcon = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n // Extract margin and color from style to allow override\n const { marginRight, minWidth, color, ...restStyle } = style || {};\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: minWidth !== undefined ? minWidth : \"auto\",\n marginRight: marginRight !== undefined ? marginRight : \"1rem\",\n ...(color !== undefined && { color }),\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemIcon.displayName = \"ListItemIcon\";\n\nconst ListItemText = React.forwardRef(\n ({ className, style, primary, secondary, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n style={{\n flex: 1,\n margin: 0,\n ...style,\n }}\n {...props}\n >\n {primary && (\n <div className={cn(secondary && \"mb-2\")}>\n {React.isValidElement(primary) ? (\n primary\n ) : (\n <Typography variant=\"body1\" color=\"default\">\n {primary}\n </Typography>\n )}\n </div>\n )}\n {secondary && (\n <div>\n {React.isValidElement(secondary) ? (\n secondary\n ) : (\n <Typography variant=\"body2\" color=\"muted\">\n {secondary}\n </Typography>\n )}\n </div>\n )}\n {children}\n </div>\n );\n }\n);\nListItemText.displayName = \"ListItemText\";\n\nconst ListItemButton = React.forwardRef(\n (\n { className, style, selected, onClick, disabled, children, dense, disablePadding, ...props },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n // Support Enter and Space keys for keyboard navigation\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n };\n\n // Calculate padding for ListItemButton\n let paddingClass = \"\";\n if (!disablePadding) {\n paddingClass = dense ? \"py-2 px-8\" : \"py-4 px-8\";\n }\n\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n aria-selected={selected}\n className={cn(\n \"flex cursor-pointer transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n paddingClass,\n selected\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : hovered\n ? \"bg-accent text-accent-foreground\"\n : \"hover:bg-accent hover:text-accent-foreground\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n style={{\n alignItems: \"center\",\n ...style,\n }}\n onClick={disabled ? undefined : onClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemButton.displayName = \"ListItemButton\";\n\nconst ListItemAvatar = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n // Extract margin and minWidth from style to allow override\n const { marginRight, minWidth, ...restStyle } = style || {};\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: minWidth !== undefined ? minWidth : \"40px\",\n marginRight: marginRight !== undefined ? marginRight : \"1rem\",\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemAvatar.displayName = \"ListItemAvatar\";\n\nexport {\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n ListItemButton,\n ListItemAvatar,\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\n\nconst Accordion = React.forwardRef(\n (\n {\n className,\n style,\n expanded,\n onChange,\n children,\n defaultExpanded,\n ...props\n },\n ref\n ) => {\n const [isExpanded, setIsExpanded] = React.useState(\n defaultExpanded || false\n );\n const accordionId = React.useId();\n\n // Use ref to store latest onChange and expanded to avoid stale closures\n const onChangeRef = React.useRef(onChange);\n const expandedRef = React.useRef(expanded);\n React.useEffect(() => {\n onChangeRef.current = onChange;\n expandedRef.current = expanded;\n }, [onChange, expanded]);\n\n const handleChange = React.useCallback(\n (event) => {\n if (event) {\n event.preventDefault?.();\n event.stopPropagation?.();\n }\n\n // Use ref to get the latest expanded value to avoid stale closures\n const currentExpandedValue = expandedRef.current;\n const currentState =\n currentExpandedValue !== undefined\n ? currentExpandedValue\n : isExpanded;\n const newExpanded = !currentState;\n\n // Always update internal state for uncontrolled mode\n setIsExpanded(newExpanded);\n\n // Always call onChange with the new state\n // The parent component will update the expanded prop if it's controlled\n if (onChangeRef.current) {\n // MUI Accordion onChange signature: onChange(event, expanded)\n onChangeRef.current(event, newExpanded);\n }\n },\n [isExpanded]\n );\n\n const currentExpanded = expanded !== undefined ? expanded : isExpanded;\n\n const finalBackgroundColor = style?.backgroundColor || \"hsl(var(--card))\";\n\n const {\n marginBottom,\n border,\n borderRadius,\n boxShadow,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n return (\n <div\n ref={ref}\n role=\"region\"\n className={cn(\n \"overflow-hidden rounded-2xl\",\n marginBottom === undefined && \"mb-2\",\n className\n )}\n style={{\n border:\n border !== undefined ? border : \"1px solid hsl(var(--border))\",\n borderRadius: borderRadius !== undefined ? borderRadius : 16,\n boxShadow: boxShadow !== undefined ? boxShadow : \"none\",\n backgroundColor:\n backgroundColor !== undefined\n ? backgroundColor\n : \"hsl(var(--card))\",\n marginBottom: marginBottom,\n ...restStyle,\n }}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === AccordionSummary) {\n return React.cloneElement(child, {\n expanded: currentExpanded,\n onChange: handleChange,\n id: `${accordionId}-summary`,\n });\n }\n if (child.type === AccordionDetails) {\n return React.cloneElement(child, {\n expanded: currentExpanded,\n id: `${accordionId}-content`,\n });\n }\n }\n return child;\n })}\n </div>\n );\n }\n);\nAccordion.displayName = \"Accordion\";\n\nconst AccordionSummary = React.forwardRef(\n (\n {\n className,\n style,\n expandIcon,\n children,\n expanded,\n onChange,\n id,\n ...props\n },\n ref\n ) => {\n // AccordionSummary receives onChange from Accordion which is handleChange\n // handleChange expects (event) and will handle the expanded state internally\n // Extract padding and backgroundColor from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n // Check if padding is explicitly set in style\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"py-2 px-4\";\n const minHeight = style?.minHeight !== undefined ? style.minHeight : \"auto\";\n\n const contentId = id ? `${id}-content` : undefined;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n aria-expanded={expanded}\n aria-controls={contentId}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (onChange) {\n // AccordionSummary receives onChange from Accordion, which expects (event, expanded)\n // But we need to call it with just the event, and Accordion will handle the expanded state\n onChange(e);\n }\n }}\n className={cn(\n \"w-full flex items-center justify-between transition-colors focus:outline-none\",\n defaultPaddingClass,\n className\n )}\n style={{\n border: \"none\",\n borderTop: \"none\",\n borderBottom: \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n backgroundColor:\n backgroundColor !== undefined ? backgroundColor : \"transparent\",\n minHeight: minHeight,\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n ...restStyle,\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onChange) {\n onChange(e);\n }\n }\n }}\n {...props}\n >\n <div style={{ flex: 1 }}>{children}</div>\n {expandIcon !== false &&\n (expandIcon || (\n <ChevronDown\n size={20}\n className=\"text-foreground\"\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n marginLeft: \"0.5rem\",\n }}\n />\n ))}\n </button>\n );\n }\n);\nAccordionSummary.displayName = \"AccordionSummary\";\n\nconst AccordionDetails = React.forwardRef(\n ({ className, style, expanded, children, id, ...props }, ref) => {\n if (!expanded) return null;\n\n const {\n backgroundColor: styleBackgroundColor,\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n // Remove padding-related properties from restStyle to avoid conflicts\n const {\n padding: _,\n paddingTop: __,\n paddingBottom: ___,\n paddingLeft: ____,\n paddingRight: _____,\n ...cleanRestStyle\n } = restStyle;\n\n // Check if padding (all sides) is explicitly set\n const hasPadding = padding !== undefined;\n\n // Check if individual padding sides are set\n const hasIndividualPadding =\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding: use \"1rem\" (16px) for all sides if no padding is set\n // If padding is explicitly set, use it\n // If individual paddings are set, don't set padding (let individual ones work)\n // Otherwise use default \"1rem\"\n const finalPadding = hasPadding\n ? padding\n : hasIndividualPadding\n ? undefined\n : \"1rem\";\n\n // Build style object, only include padding properties if they are defined\n const styleObj = {\n backgroundColor: styleBackgroundColor || \"transparent\",\n ...cleanRestStyle,\n };\n\n // Only set padding if finalPadding is defined\n if (finalPadding !== undefined) {\n styleObj.padding = finalPadding;\n }\n\n // Only set individual padding properties if they are defined\n if (paddingTop !== undefined) styleObj.paddingTop = paddingTop;\n if (paddingBottom !== undefined) styleObj.paddingBottom = paddingBottom;\n if (paddingLeft !== undefined) styleObj.paddingLeft = paddingLeft;\n if (paddingRight !== undefined) styleObj.paddingRight = paddingRight;\n\n return (\n <div\n ref={ref}\n id={id}\n role=\"region\"\n aria-labelledby={id ? id.replace(\"-content\", \"-summary\") : undefined}\n className={cn(\"text-foreground\", className)}\n style={{\n ...styleObj,\n borderTop: \"none\",\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nAccordionDetails.displayName = \"AccordionDetails\";\n\nexport { Accordion, AccordionSummary, AccordionDetails };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { AlertCircle, CheckCircle, Info, AlertTriangle, X } from \"lucide-react\";\n\nconst Alert = React.forwardRef(\n (\n {\n className,\n severity = \"info\",\n variant = \"standard\",\n onClose,\n action,\n icon,\n iconMapping,\n children,\n style,\n ...props\n },\n ref\n ) => {\n // Default icon mapping\n const defaultIconMapping = {\n error: AlertCircle,\n warning: AlertTriangle,\n info: Info,\n success: CheckCircle,\n };\n\n // Check if icon is a React element (already rendered) or a component\n const isReactElement = icon && typeof icon === \"object\" && icon.$$typeof;\n const IconComponent =\n !isReactElement &&\n (icon || iconMapping?.[severity] || defaultIconMapping[severity] || Info);\n\n // Get severity classes\n const getSeverityClasses = () => {\n const classes = {\n error: {\n standard: \"bg-destructive/10 text-destructive\",\n filled: \"bg-destructive text-destructive-foreground\",\n outlined: \"border-destructive text-destructive bg-transparent\",\n },\n warning: {\n standard: \"bg-warning/10 text-warning\",\n filled: \"bg-warning text-warning-foreground\",\n outlined: \"border-warning text-warning bg-transparent\",\n },\n info: {\n standard: \"bg-info/10 text-info\",\n filled: \"bg-info text-info-foreground\",\n outlined: \"border-info text-info bg-transparent\",\n },\n success: {\n standard: \"bg-success/10 text-success\",\n filled: \"bg-success text-success-foreground\",\n outlined: \"border-success text-success bg-transparent\",\n },\n };\n return classes[severity]?.[variant] || classes.info.standard;\n };\n\n const severityClasses = getSeverityClasses();\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding class, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"p-4\";\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"relative flex items-center gap-3 rounded-2xl text-sm\",\n defaultPaddingClass,\n variant === \"outlined\" && \"border\",\n severityClasses,\n className\n )}\n style={{\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n ...restStyle,\n }}\n {...props}\n >\n {icon !== false &&\n (isReactElement ? (\n <div className=\"flex-shrink-0 flex items-center text-current\">\n {icon}\n </div>\n ) : (\n <IconComponent\n size={20}\n className=\"flex-shrink-0 text-current\"\n />\n ))}\n <div className=\"flex-1 flex items-center\">{children}</div>\n {(onClose || action) && (\n <div className=\"flex items-center gap-1\">\n {action}\n {onClose && (\n <button\n onClick={onClose}\n className=\"flex items-center justify-center rounded-sm opacity-70 hover:opacity-100 transition-opacity p-2 text-current\"\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Tabs = React.forwardRef(\n (\n {\n className,\n value,\n onChange,\n children,\n centered,\n variant, // \"standard\" for underline style, undefined/\"pills\"/\"button\" for circle button style\n style,\n ...props\n },\n ref\n ) => {\n const tabsContainerRef = React.useRef(null);\n const indicatorRef = React.useRef(null);\n const [selectedValue, setSelectedValue] = React.useState(() => {\n return value !== undefined ? value : 0;\n });\n\n // Sync internal state with value prop\n React.useEffect(() => {\n if (value !== undefined) {\n setSelectedValue(value);\n }\n }, [value]);\n\n const handleTabClick = React.useCallback(\n (index) => {\n const newValue = index;\n if (value === undefined) {\n setSelectedValue(newValue);\n }\n if (onChange) {\n onChange(null, newValue);\n }\n },\n [value, onChange]\n );\n\n const currentValue = value !== undefined ? value : selectedValue;\n const isStandardVariant = variant === \"standard\";\n\n // Update indicator position when selected tab changes (only for standard variant)\n React.useEffect(() => {\n if (\n !isStandardVariant ||\n !tabsContainerRef.current ||\n !indicatorRef.current\n )\n return;\n\n const tabs =\n tabsContainerRef.current.querySelectorAll(\"[data-tab-index]\");\n const selectedTab = tabs[currentValue];\n\n if (selectedTab) {\n const containerRect = tabsContainerRef.current.getBoundingClientRect();\n const tabRect = selectedTab.getBoundingClientRect();\n\n indicatorRef.current.style.left = `${\n tabRect.left - containerRect.left\n }px`;\n indicatorRef.current.style.width = `${tabRect.width}px`;\n }\n }, [currentValue, children, isStandardVariant]);\n\n const tabsId = React.useId();\n\n return (\n <div\n ref={ref}\n className={cn(\n isStandardVariant ? \"relative mb-4\" : \"flex\",\n !isStandardVariant && centered && \"justify-center\",\n className\n )}\n style={{\n minHeight: \"auto\",\n ...style,\n }}\n {...props}\n >\n <div\n ref={tabsContainerRef}\n role=\"tablist\"\n aria-label=\"Tabs\"\n className={cn(\n isStandardVariant\n ? \"flex border-b relative w-full\"\n : \"flex gap-4 px-8 py-4\"\n )}\n style={{\n ...(isStandardVariant && { borderColor: \"hsl(var(--border))\" }),\n ...(isStandardVariant && { display: \"flex\", width: \"100%\" }),\n }}\n >\n {React.Children.map(children, (child, index) => {\n // Check if child is a Tab component by checking displayName or type\n const isTabComponent =\n React.isValidElement(child) &&\n (child.type === Tab || child.type?.displayName === \"Tab\");\n\n if (isTabComponent) {\n // Ensure both values are numbers for comparison\n const isSelected = Number(currentValue) === Number(index);\n return React.cloneElement(child, {\n ...child.props,\n selected: isSelected,\n onClick: () => handleTabClick(index),\n index: index,\n \"data-tab-index\": index,\n variant: isStandardVariant ? \"standard\" : undefined,\n id: `${tabsId}-tab-${index}`,\n \"aria-controls\": `${tabsId}-panel-${index}`,\n });\n }\n return child;\n })}\n </div>\n {/* Indicator line - only for standard variant */}\n {isStandardVariant && (\n <div\n ref={indicatorRef}\n style={{\n position: \"absolute\",\n bottom: 0,\n height: \"2px\",\n backgroundColor: \"hsl(var(--primary))\",\n transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n )}\n </div>\n );\n }\n);\nTabs.displayName = \"Tabs\";\n\nconst Tab = React.forwardRef(\n (\n {\n className,\n label,\n selected,\n onClick,\n index,\n style,\n variant,\n id,\n \"aria-controls\": ariaControls,\n ...props\n },\n ref\n ) => {\n const isStandardVariant = variant === \"standard\";\n\n const {\n padding,\n paddingLeft,\n paddingRight,\n paddingTop,\n paddingBottom,\n margin,\n marginLeft,\n marginRight,\n backgroundColor: styleBackgroundColor,\n color: styleColor,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined;\n\n // Tab styles based on variant\n if (isStandardVariant) {\n // Standard variant: underline style (NEW)\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"px-3 py-4\";\n const finalColor =\n styleColor !== undefined\n ? styleColor\n : selected\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--muted-foreground))\";\n\n const { onClick: propsOnClick, ...restProps } = props;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={ariaControls}\n tabIndex={selected ? 0 : -1}\n onClick={(e) => {\n if (onClick) {\n onClick(e);\n }\n if (propsOnClick) {\n propsOnClick(e);\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n }}\n className={cn(\n \"cursor-pointer transition-all duration-200 text-sm border-none bg-transparent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n defaultPaddingClass,\n \"min-w-[72px] min-h-[48px] flex-1\",\n selected ? \"font-semibold\" : \"font-medium\",\n className\n )}\n style={{\n color: finalColor,\n textTransform: \"none\",\n flex: 1,\n minWidth: 0,\n padding: padding,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n margin: margin,\n marginLeft: marginLeft,\n marginRight: marginRight,\n ...restStyle,\n }}\n onMouseEnter={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n {...restProps}\n >\n {label}\n </button>\n );\n } else {\n // Pills variant: existing circle button style (DO NOT CHANGE - backward compatibility)\n const getTabColors = () => {\n if (selected) {\n return {\n color: \"hsl(var(--primary-foreground))\",\n backgroundColor: \"hsl(var(--primary))\",\n };\n }\n // Unselected tabs all have the same style\n return {\n color: \"hsl(var(--foreground))\",\n backgroundColor: \"hsl(var(--accent))\",\n };\n };\n\n const tabColors = getTabColors();\n\n const hasMarginInStyle =\n margin !== undefined ||\n marginLeft !== undefined ||\n marginRight !== undefined;\n\n // Default padding/margin classes, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"px-4 py-3\";\n const defaultMarginClass = hasMarginInStyle ? \"\" : \"mx-2\";\n\n // Use style backgroundColor if provided, otherwise use tabColors\n const finalBackgroundColor =\n styleBackgroundColor !== undefined\n ? styleBackgroundColor\n : tabColors.backgroundColor;\n\n const finalColor =\n styleColor !== undefined ? styleColor : tabColors.color;\n\n // Ensure restStyle doesn't override backgroundColor or color\n const { backgroundColor: _, color: __, ...cleanRestStyle } = restStyle;\n\n // Extract onClick from props to avoid override\n const { onClick: propsOnClick, ...restProps } = props;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={ariaControls}\n tabIndex={selected ? 0 : -1}\n onClick={(e) => {\n if (onClick) {\n onClick(e);\n }\n if (propsOnClick) {\n propsOnClick(e);\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n }}\n className={cn(\n \"cursor-pointer transition-all duration-200 min-h-[32px] min-w-[100px] rounded-2xl text-sm border-none focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n defaultPaddingClass,\n defaultMarginClass,\n selected ? \"font-semibold\" : \"font-medium\",\n className\n )}\n style={{\n color: finalColor,\n backgroundColor: finalBackgroundColor,\n ...(padding !== undefined && { padding }),\n ...(paddingLeft !== undefined && { paddingLeft }),\n ...(paddingRight !== undefined && { paddingRight }),\n ...(paddingTop !== undefined && { paddingTop }),\n ...(paddingBottom !== undefined && { paddingBottom }),\n ...(margin !== undefined && { margin }),\n ...(marginLeft !== undefined && { marginLeft }),\n ...(marginRight !== undefined && { marginRight }),\n ...cleanRestStyle,\n }}\n onMouseEnter={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent))\";\n } else {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--primary) / 0.9)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = finalBackgroundColor;\n }}\n {...restProps}\n >\n {label}\n </button>\n );\n }\n }\n);\nTab.displayName = \"Tab\";\n\nexport { Tabs, Tab };\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n\n while (target) {\n var _target$getRootNode;\n\n if (parent.contains(target)) {\n return true;\n }\n\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n\n return false;\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ? // @ts-ignore\n!!window.msCrypto : false;\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n var _name;\n\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n\n }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function (instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function (acc, item) {\n return acc.concat(item);\n }, []);\n }\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n\n function prepareInstance(singleton, target) {\n var index = triggerTargets.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n var _references$index;\n\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n\n singleton.showNext = function () {\n var first = references[0];\n\n if (!currentTarget) {\n return singleton.show(0);\n }\n\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n\n if (!currentTarget) {\n return singleton.show(last);\n }\n\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","import * as React from \"react\";\nimport tippy, { roundArrow } from \"tippy.js\";\nimport \"tippy.js/dist/tippy.css\";\nimport \"tippy.js/themes/material.css\";\n\n// Custom styles to match MUI Tooltip\nconst tooltipStyles = `\n .tippy-box[data-theme~='material'] {\n font-size: 0.75rem;\n font-weight: 400;\n padding: 2px 6px;\n line-height: 1.4;\n }\n .tippy-box[data-theme~='material'] .tippy-content {\n padding: 0;\n }\n`;\n\nconst Tooltip = React.forwardRef(\n (\n {\n title,\n children,\n placement = \"top\",\n arrow = true,\n delay = [100, 0],\n className,\n style,\n ...props\n },\n ref\n ) => {\n const childRef = React.useRef(null);\n const tippyInstanceRef = React.useRef(null);\n\n // Combine refs\n React.useImperativeHandle(ref, () => childRef.current);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n // If no title, don't create tooltip\n if (!title) {\n // Clean up existing tooltip if title is removed\n if (tippyInstanceRef.current) {\n tippyInstanceRef.current.destroy();\n tippyInstanceRef.current = null;\n }\n return;\n }\n\n // Inject custom styles if not already injected\n if (!document.getElementById(\"mui-tooltip-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"mui-tooltip-styles\";\n style.textContent = tooltipStyles;\n document.head.appendChild(style);\n }\n\n // Create tippy instance\n tippyInstanceRef.current = tippy(childRef.current, {\n content: title,\n placement: placement,\n arrow: arrow ? roundArrow : false,\n delay: delay,\n theme: \"material\",\n animation: \"fade\",\n duration: [200, 150],\n // Use theme colors\n popperOptions: {\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ],\n },\n });\n\n return () => {\n if (tippyInstanceRef.current) {\n tippyInstanceRef.current.destroy();\n tippyInstanceRef.current = null;\n }\n };\n }, [title, placement, arrow, delay]);\n\n // Update content when title changes\n React.useEffect(() => {\n if (tippyInstanceRef.current && title) {\n tippyInstanceRef.current.setContent(title);\n }\n }, [title]);\n\n // Clone child element and attach ref\n const childElement = React.Children.only(children);\n\n if (!React.isValidElement(childElement)) {\n return children;\n }\n\n return React.cloneElement(childElement, {\n ref: (node) => {\n childRef.current = node;\n // Handle original ref if it exists\n if (typeof childElement.ref === \"function\") {\n childElement.ref(node);\n } else if (childElement.ref) {\n childElement.ref.current = node;\n }\n },\n className: className\n ? `${childElement.props.className || \"\"} ${className}`.trim()\n : childElement.props.className,\n style: { ...childElement.props.style, ...style },\n ...props,\n });\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip };\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { TextField } from \"./text-field\";\n\nconst Autocomplete = React.forwardRef(\n (\n {\n options = [],\n getOptionLabel,\n value,\n onChange,\n inputValue,\n onInputChange,\n filterOptions,\n renderInput,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false);\n const [filteredOptions, setFilteredOptions] = React.useState(options);\n const inputRef = React.useRef(null);\n const listRef = React.useRef(null);\n\n // Combine refs\n React.useImperativeHandle(ref, () => inputRef.current);\n\n // Filter options when inputValue or options change\n React.useEffect(() => {\n // Ensure inputValue is always a string\n const searchValue = typeof inputValue === \"string\" ? inputValue : (inputValue ? String(inputValue) : \"\");\n \n if (filterOptions) {\n const filtered = filterOptions(options, {\n inputValue: searchValue,\n });\n setFilteredOptions(filtered);\n } else {\n // Default filtering: filter options based on inputValue\n if (searchValue) {\n const filtered = options.filter((option) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n return String(optionLabel).toLowerCase().includes(searchValue.toLowerCase());\n });\n setFilteredOptions(filtered);\n } else {\n // Show all options if input is empty\n setFilteredOptions(options);\n }\n }\n }, [options, inputValue, filterOptions, getOptionLabel]);\n\n const handleInputChange = (event) => {\n // Extract value from event, ensuring it's always a string\n let newValue = \"\";\n if (event?.target?.value !== undefined) {\n newValue = String(event.target.value);\n } else if (typeof event === \"string\") {\n newValue = event;\n } else if (event) {\n newValue = String(event);\n }\n \n if (onInputChange) {\n onInputChange(event, newValue);\n }\n if (!open) {\n setOpen(true);\n }\n };\n\n const handleOptionClick = (option) => {\n if (onChange) {\n onChange(null, option);\n }\n // Update inputValue when option is selected\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n // Ensure optionLabel is a string\n const labelString = typeof optionLabel === \"string\" ? optionLabel : String(optionLabel || \"\");\n if (onInputChange) {\n onInputChange(null, labelString);\n }\n setOpen(false);\n };\n\n const handleClickOutside = (event) => {\n if (\n listRef.current &&\n !listRef.current.contains(event.target) &&\n inputRef.current &&\n !inputRef.current.contains(event.target)\n ) {\n setOpen(false);\n }\n };\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [open]);\n\n const displayValue = value\n ? getOptionLabel\n ? getOptionLabel(value)\n : value?.name || value?.label || String(value)\n : \"\";\n\n // Determine the input value: use inputValue if provided, otherwise use displayValue\n // When value is selected, show displayValue unless user is typing\n const getInputValue = () => {\n // Always ensure we return a string\n if (inputValue !== undefined && inputValue !== null) {\n // If user is typing, show inputValue (ensure it's a string)\n return typeof inputValue === \"string\" ? inputValue : String(inputValue);\n }\n // If value is selected, show displayValue\n return typeof displayValue === \"string\" ? displayValue : String(displayValue || \"\");\n };\n\n const inputProps = {\n ref: inputRef,\n value: getInputValue(),\n onChange: handleInputChange,\n onFocus: () => setOpen(true),\n ...props,\n };\n\n // If renderInput is provided, use it (for MUI compatibility)\n if (renderInput) {\n return (\n <div ref={ref} className={cn(\"relative\", className)} style={style}>\n {renderInput({\n ...inputProps,\n InputProps: {\n ...(inputProps.InputProps || {}),\n endAdornment: (\n <div\n className=\"absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(!open);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n ),\n },\n })}\n {open && filteredOptions.length > 0 && (\n <div\n ref={listRef}\n className=\"absolute z-50 w-full mt-1 rounded-2xl border shadow-lg overflow-auto\"\n style={{\n maxHeight: \"200px\", // Ensure at least 4 options are visible (each ~50px)\n minHeight: \"160px\", // Minimum height for better UX\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n }}\n >\n {filteredOptions.map((option, index) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n const isSelected =\n value &&\n (getOptionLabel\n ? getOptionLabel(value) === optionLabel\n : value === option ||\n (value?.id && option?.id && value.id === option.id));\n\n return (\n <div\n key={index}\n className=\"px-3 py-2 cursor-pointer hover:bg-accent transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onClick={() => handleOptionClick(option)}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {optionLabel}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n\n // Default render with TextField\n return (\n <div ref={ref} className={cn(\"relative\", className)} style={style}>\n <TextField\n {...inputProps}\n style={{\n ...inputProps.style,\n height: inputProps.style?.height || \"40px\",\n }}\n InputProps={{\n ...inputProps.InputProps,\n style: {\n ...inputProps.InputProps?.style,\n backgroundColor:\n inputProps.InputProps?.style?.backgroundColor || \"transparent\",\n height: inputProps.InputProps?.style?.height || \"40px\",\n },\n endAdornment: (\n <div\n className=\"absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(!open);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n ),\n }}\n />\n {open && filteredOptions.length > 0 && (\n <div\n ref={listRef}\n className=\"absolute z-50 w-full mt-1 rounded-2xl border shadow-lg overflow-auto\"\n style={{\n maxHeight: \"200px\", // Ensure at least 4 options are visible (each ~50px)\n minHeight: \"160px\", // Minimum height for better UX\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n }}\n >\n {filteredOptions.map((option, index) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n const isSelected =\n value &&\n (getOptionLabel\n ? getOptionLabel(value) === optionLabel\n : value === option ||\n (value?.id && option?.id && value.id === option.id));\n\n return (\n <div\n key={index}\n className=\"px-3 py-2 cursor-pointer hover:bg-accent transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onClick={() => handleOptionClick(option)}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {optionLabel}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\nAutocomplete.displayName = \"Autocomplete\";\n\nexport { Autocomplete };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { TextField } from \"./text-field\";\nimport * as dayjsModule from \"dayjs\";\nconst dayjs = dayjsModule.default || dayjsModule;\n\nconst DatePicker = React.forwardRef(\n (\n {\n value,\n onChange,\n clearable = false,\n slotProps,\n className,\n style,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false);\n const [selectedDate, setSelectedDate] = React.useState(\n value ? dayjs(value) : null\n );\n const calendarRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const yearPickerRef = React.useRef(null);\n const currentYearButtonRef = React.useRef(null);\n\n React.useImperativeHandle(ref, () => inputRef.current);\n\n React.useEffect(() => {\n setSelectedDate(value ? dayjs(value) : null);\n }, [value]);\n\n const handleDateChange = (newDate) => {\n setSelectedDate(newDate);\n if (onChange) {\n onChange(newDate);\n }\n setOpen(false);\n if (onOpenChange) {\n onOpenChange(false);\n }\n };\n\n const handleClear = (e) => {\n e.stopPropagation();\n setSelectedDate(null);\n if (onChange) {\n onChange(null);\n }\n };\n\n const handleClickOutside = (event) => {\n if (\n calendarRef.current &&\n !calendarRef.current.contains(event.target) &&\n inputRef.current &&\n !inputRef.current.contains(event.target)\n ) {\n setOpen(false);\n setShowYearPicker(false);\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [open]);\n\n const textFieldProps = slotProps?.textField || {};\n const displayValue = selectedDate ? selectedDate.format(\"YYYY-MM-DD\") : \"\";\n const [viewMode, setViewMode] = React.useState(\"month\"); // \"month\" or \"year\"\n const [showYearPicker, setShowYearPicker] = React.useState(false);\n\n // Scroll to current year when year picker opens\n React.useEffect(() => {\n if (\n showYearPicker &&\n currentYearButtonRef.current &&\n yearPickerRef.current\n ) {\n // Use setTimeout to ensure DOM is rendered\n setTimeout(() => {\n const button = currentYearButtonRef.current;\n const container = yearPickerRef.current;\n if (button && container) {\n const buttonTop = button.offsetTop;\n const containerHeight = container.clientHeight;\n const scrollTop =\n buttonTop - containerHeight / 2 + button.clientHeight / 2;\n container.scrollTop = scrollTop;\n }\n }, 0);\n }\n }, [showYearPicker]);\n\n // Generate calendar days\n const getCalendarDays = () => {\n const startOfMonth = selectedDate\n ? selectedDate.startOf(\"month\")\n : dayjs().startOf(\"month\");\n const endOfMonth = selectedDate\n ? selectedDate.endOf(\"month\")\n : dayjs().endOf(\"month\");\n const startDate = startOfMonth.startOf(\"week\");\n const endDate = endOfMonth.endOf(\"week\");\n const days = [];\n let currentDate = startDate;\n\n while (currentDate.isBefore(endDate) || currentDate.isSame(endDate)) {\n days.push(currentDate);\n currentDate = currentDate.add(1, \"day\");\n }\n\n return days;\n };\n\n const calendarDays = getCalendarDays();\n const currentMonth = selectedDate ? selectedDate.month() : dayjs().month();\n const currentYear = selectedDate ? selectedDate.year() : dayjs().year();\n\n const handlePrevMonth = () => {\n const newDate = selectedDate\n ? selectedDate.subtract(1, \"month\")\n : dayjs().subtract(1, \"month\");\n setSelectedDate(newDate);\n };\n\n const handleNextMonth = () => {\n const newDate = selectedDate\n ? selectedDate.add(1, \"month\")\n : dayjs().add(1, \"month\");\n setSelectedDate(newDate);\n };\n\n const handleDayClick = (day) => {\n handleDateChange(day);\n };\n\n return (\n <div\n ref={calendarRef}\n className={cn(\"relative\", className)}\n style={style}\n >\n <TextField\n {...textFieldProps}\n ref={inputRef}\n value={displayValue || \"\"}\n onClick={() => {\n const newOpen = !open;\n setOpen(newOpen);\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n }}\n readOnly\n placeholder={textFieldProps.placeholder || \"MM/DD/YYYY\"}\n style={{\n ...textFieldProps.style,\n fontSize: \"0.875rem\",\n height: textFieldProps.style?.height || \"40px\",\n }}\n InputProps={{\n ...textFieldProps.InputProps,\n style: {\n ...textFieldProps.InputProps?.style,\n backgroundColor:\n textFieldProps.InputProps?.style?.backgroundColor,\n },\n endAdornment: (\n <div className=\"flex items-center gap-1\">\n {clearable && selectedDate && (\n <div\n className=\"cursor-pointer\"\n onClick={handleClear}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"4px\",\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n )}\n <div\n className=\"cursor-pointer\"\n style={{ padding: \"4px\" }}\n onClick={(e) => {\n e.stopPropagation();\n const newOpen = !open;\n setOpen(newOpen);\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 2V4M14 2V4M3 8H17M4 4H16C16.5523 4 17 4.44772 17 5V16C17 16.5523 16.5523 17 16 17H4C3.44772 17 3 16.5523 3 16V5C3 4.44772 3.44772 4 4 4Z\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n ),\n }}\n />\n {open && (\n <div\n className=\"absolute z-50 mt-1 rounded-2xl border shadow-lg p-4\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n minWidth: \"300px\",\n }}\n >\n {/* Calendar Header */}\n <div\n className=\"flex items-center justify-between mb-4\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"year\") {\n setSelectedDate(\n selectedDate\n ? selectedDate.subtract(10, \"year\")\n : dayjs().subtract(10, \"year\")\n );\n } else {\n handlePrevMonth();\n }\n }}\n className=\"p-1 rounded-lg hover:bg-action-hover transition-colors\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 15L7 10L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"month\") {\n setShowYearPicker(!showYearPicker);\n } else {\n setViewMode(\"month\");\n }\n }}\n className=\"font-semibold px-2 py-1 rounded-lg hover:bg-action-hover transition-colors flex items-center gap-1 text-foreground\"\n >\n {viewMode === \"month\"\n ? `${dayjs()\n .month(currentMonth)\n .format(\"MMMM\")} ${currentYear}`\n : `${currentYear}`}\n {viewMode === \"month\" && (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{\n transform: showYearPicker\n ? \"rotate(180deg)\"\n : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n {showYearPicker && viewMode === \"month\" && (\n <div\n ref={yearPickerRef}\n className=\"absolute z-10 mt-1 rounded-lg border shadow-lg max-h-48 overflow-auto\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n left: 0,\n minWidth: \"120px\",\n }}\n >\n {Array.from({ length: 201 }, (_, i) => {\n // Generate years from currentYear - 100 to currentYear + 100\n const currentYearValue = dayjs().year();\n const year = currentYearValue - 100 + i;\n const isCurrentYear = year === currentYear;\n return (\n <button\n key={year}\n ref={isCurrentYear ? currentYearButtonRef : null}\n type=\"button\"\n onClick={() => {\n const newDate = selectedDate\n ? selectedDate.year(year)\n : dayjs().year(year).month(currentMonth);\n setSelectedDate(newDate);\n setShowYearPicker(false);\n }}\n className=\"w-full px-3 py-1.5 text-sm text-left hover:bg-action-hover transition-colors\"\n style={{\n backgroundColor: isCurrentYear\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onMouseEnter={(e) => {\n if (!isCurrentYear) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor =\n isCurrentYear\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\";\n }}\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"year\") {\n setSelectedDate(\n selectedDate\n ? selectedDate.add(10, \"year\")\n : dayjs().add(10, \"year\")\n );\n } else {\n handleNextMonth();\n }\n }}\n className=\"p-1 rounded-lg hover:bg-action-hover transition-colors\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 5L13 10L8 15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {viewMode === \"month\" ? (\n <>\n {/* Calendar Grid */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n (day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium py-1 text-muted-foreground\"\n >\n {day}\n </div>\n )\n )}\n </div>\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isCurrentMonth = day.month() === currentMonth;\n const isToday = day.isSame(dayjs(), \"day\");\n const isSelected =\n selectedDate && day.isSame(selectedDate, \"day\");\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={() => handleDayClick(day)}\n className={cn(\n \"aspect-square rounded-lg text-sm transition-colors\",\n !isCurrentMonth && \"opacity-30\",\n isSelected && \"font-semibold\"\n )}\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--primary))\"\n : isToday\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\"\n : \"transparent\",\n color: isSelected\n ? \"hsl(var(--primary-foreground))\"\n : \"hsl(var(--foreground))\",\n border:\n isToday && !isSelected\n ? \"1px solid hsl(var(--primary))\"\n : \"none\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--primary))\"\n : isToday\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\"\n : \"transparent\";\n }}\n >\n {day.date()}\n </button>\n );\n })}\n </div>\n </>\n ) : (\n /* Year View */\n <div className=\"grid grid-cols-4 gap-2\">\n {Array.from({ length: 12 }, (_, i) => {\n const monthIndex = i;\n const isCurrentMonth =\n monthIndex === dayjs().month() &&\n currentYear === dayjs().year();\n const isSelected =\n selectedDate &&\n selectedDate.month() === monthIndex &&\n selectedDate.year() === currentYear;\n\n return (\n <button\n key={monthIndex}\n type=\"button\"\n onClick={() => {\n const newDate = selectedDate\n ? selectedDate.month(monthIndex)\n : dayjs().month(monthIndex).year(currentYear);\n setSelectedDate(newDate);\n setViewMode(\"month\");\n }}\n className=\"p-2 rounded-lg text-sm transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--primary))\"\n : isCurrentMonth\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: isSelected\n ? \"hsl(var(--primary-foreground))\"\n : \"hsl(var(--foreground))\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--primary))\"\n : isCurrentMonth\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {dayjs().month(monthIndex).format(\"MMM\")}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Drawer = React.forwardRef(\n (\n {\n anchor = \"left\",\n open = false,\n onClose,\n onOpenChange,\n children,\n className,\n sx,\n PaperProps,\n transitionDuration = 300,\n keepMounted = false,\n variant = \"temporary\",\n ModalProps,\n SlideProps,\n ...props\n },\n ref\n ) => {\n const drawerRef = React.useRef(null);\n\n React.useImperativeHandle(ref, () => drawerRef.current);\n\n // Handle backdrop click - only for temporary variant\n const handleBackdropClick = (e) => {\n if (variant === \"temporary\" && e.target === e.currentTarget && onClose) {\n onClose(e, \"backdropClick\");\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n \n // Handle open state changes\n React.useEffect(() => {\n if (onOpenChange) {\n onOpenChange(open);\n }\n }, [open, onOpenChange]);\n\n // Handle escape key\n React.useEffect(() => {\n if (!open) return;\n\n const handleEscape = (e) => {\n if (e.key === \"Escape\" && onClose) {\n onClose(e, \"escapeKeyDown\");\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, onClose]);\n\n // Merge sx styles - handle root and paper selectors\n const { rootStyles, paperStyles: sxPaperStyles } = React.useMemo(() => {\n if (!sx) return { rootStyles: {}, paperStyles: {} };\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n\n // Extract root-level styles (direct properties)\n const rootStyles = {};\n // Extract paper styles from \"& .MuiDrawer-paper\" selector\n const paperStyles = {};\n\n Object.keys(sxObj).forEach((key) => {\n if (key === \"& .MuiDrawer-paper\" || key === \"&.MuiDrawer-paper\") {\n Object.assign(paperStyles, sxObj[key]);\n } else if (key.startsWith(\"&\")) {\n // Other selectors - could be handled here if needed\n } else {\n // Direct style properties go to root\n rootStyles[key] = sxObj[key];\n }\n });\n\n return { rootStyles, paperStyles };\n }, [sx]);\n\n // Get PaperProps styles\n const paperPropsStyles = React.useMemo(() => {\n const paperSx = PaperProps?.sx;\n if (!paperSx) return {};\n return typeof paperSx === \"function\" ? paperSx({}) : paperSx;\n }, [PaperProps]);\n\n // Get anchor styles\n const getAnchorStyles = () => {\n const baseStyles = {\n position: \"fixed\",\n zIndex: parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1200\",\n 10\n ),\n transition: `transform ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n };\n\n switch (anchor) {\n case \"left\":\n return {\n ...baseStyles,\n top: 0,\n left: 0,\n bottom: 0,\n transform: open ? \"translateX(0)\" : \"translateX(-100%)\",\n };\n case \"right\":\n return {\n ...baseStyles,\n top: 0,\n right: 0,\n bottom: 0,\n transform: open ? \"translateX(0)\" : \"translateX(100%)\",\n };\n case \"top\":\n return {\n ...baseStyles,\n top: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n transform: open ? \"translateY(0)\" : \"translateY(-100%)\",\n };\n case \"bottom\":\n return {\n ...baseStyles,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n transform: open ? \"translateY(0)\" : \"translateY(100%)\",\n };\n default:\n return baseStyles;\n }\n };\n\n const anchorStyles = getAnchorStyles();\n\n // Early return after all hooks\n // For permanent variant, always render if keepMounted is true\n if (!open && !keepMounted && variant !== \"permanent\") return null;\n\n // For permanent variant, always show\n const isPermanent = variant === \"permanent\";\n const shouldShowBackdrop = variant === \"temporary\" || variant === \"persistent\";\n const shouldShowDrawer = isPermanent || open || keepMounted;\n\n return (\n <>\n {/* Backdrop - only for temporary and persistent variants */}\n {shouldShowBackdrop && shouldShowDrawer && (\n <div\n className=\"fixed inset-0 bg-black/50\"\n style={{\n zIndex:\n parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1200\",\n 10\n ) - 1,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n pointerEvents: open ? \"auto\" : \"none\",\n }}\n onClick={handleBackdropClick}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Drawer */}\n <div\n ref={drawerRef}\n className={cn(\n \"MuiDrawer-root\",\n \"fixed\",\n anchor === \"left\" || anchor === \"right\" ? \"h-full\" : \"w-full\",\n anchor === \"top\" || anchor === \"bottom\" ? \"h-auto\" : \"w-auto\",\n !open && \"pointer-events-none\",\n className\n )}\n style={{\n ...anchorStyles,\n ...rootStyles,\n display: shouldShowDrawer ? \"block\" : \"none\",\n // For permanent variant, always visible\n transform: isPermanent ? \"translateX(0)\" : anchorStyles.transform,\n ...props.style,\n }}\n role=\"presentation\"\n {...Object.fromEntries(\n Object.entries(props).filter(([key]) => key !== \"style\")\n )}\n >\n {/* Paper (drawer content) */}\n <div\n className={cn(\n \"MuiDrawer-paper\",\n \"MuiPaper-root\",\n anchor === \"left\" || anchor === \"right\" ? \"h-full\" : \"\",\n \"w-full\",\n anchor === \"left\" || anchor === \"right\"\n ? \"overflow-y-auto\"\n : anchor === \"top\" || anchor === \"bottom\"\n ? \"overflow-y-auto\"\n : \"\",\n PaperProps?.className\n )}\n style={{\n backgroundColor: \"hsl(var(--card))\",\n boxShadow:\n sxPaperStyles.boxShadow !== undefined\n ? sxPaperStyles.boxShadow\n : paperPropsStyles.boxShadow !== undefined\n ? paperPropsStyles.boxShadow\n : PaperProps?.style?.boxShadow !== undefined\n ? PaperProps.style.boxShadow\n : open\n ? \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\"\n : \"none\", // No shadow when closed\n ...(anchor === \"left\" || anchor === \"right\"\n ? { \n height: \"100%\", \n width: PaperProps?.style?.width || sxPaperStyles.width || paperPropsStyles.width || \"300px\",\n minWidth: PaperProps?.style?.minWidth || sxPaperStyles.minWidth || paperPropsStyles.minWidth || \"300px\",\n maxWidth: PaperProps?.style?.maxWidth || sxPaperStyles.maxWidth || paperPropsStyles.maxWidth || \"90vw\"\n }\n : { width: \"100%\" }),\n ...sxPaperStyles,\n ...paperPropsStyles,\n ...PaperProps?.style,\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n }\n);\n\nDrawer.displayName = \"Drawer\";\n\nexport { Drawer };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormControlLabel = React.forwardRef(\n (\n {\n control,\n label,\n labelPlacement = \"end\",\n disabled = false,\n value,\n className,\n sx,\n ...props\n },\n ref\n ) => {\n // Merge sx styles\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const isLabelStart = labelPlacement === \"start\";\n const isLabelTop = labelPlacement === \"top\";\n const isLabelBottom = labelPlacement === \"bottom\";\n\n const controlWithValue = React.useMemo(() => {\n if (value !== undefined && React.isValidElement(control)) {\n return React.cloneElement(control, {\n ...control.props,\n value,\n });\n }\n return control;\n }, [control, value]);\n\n return (\n <label\n ref={ref}\n className={cn(\n \"inline-flex items-center cursor-pointer\",\n disabled && \"opacity-50 cursor-not-allowed\",\n isLabelTop && \"flex-col items-start\",\n isLabelBottom && \"flex-col-reverse items-start\",\n isLabelStart && \"flex-row-reverse items-center\",\n !isLabelTop && !isLabelBottom && !isLabelStart && \"items-center\",\n className\n )}\n style={mergedSx}\n {...props}\n >\n {/* Control */}\n <span\n className={cn(\n \"inline-flex items-center justify-center shrink-0\",\n isLabelTop && \"mb-1\",\n isLabelBottom && \"mt-1\",\n isLabelStart && \"ml-2\",\n !isLabelStart && !isLabelTop && !isLabelBottom && \"mr-2\"\n )}\n style={{\n minWidth: \"20px\",\n minHeight: \"20px\",\n }}\n >\n {controlWithValue}\n </span>\n\n {/* Label */}\n {label && (\n <span\n className={cn(\n \"text-sm text-foreground\",\n disabled && \"text-muted-foreground opacity-50\",\n isLabelStart && \"mr-2\"\n )}\n >\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nFormControlLabel.displayName = \"FormControlLabel\";\n\nexport { FormControlLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormLabel = React.forwardRef(\n (\n {\n children,\n component = \"label\",\n className,\n sx,\n style,\n required = false,\n disabled = false,\n error = false,\n focused = false,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const Component = component === \"legend\" ? \"legend\" : \"label\";\n\n return (\n <Component\n ref={ref}\n className={cn(\n \"block text-sm font-medium mb-1\",\n error\n ? \"text-destructive\"\n : focused\n ? \"text-primary\"\n : \"text-foreground\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </Component>\n );\n }\n);\nFormLabel.displayName = \"FormLabel\";\n\nexport { FormLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormGroup = React.forwardRef(\n ({ children, className, sx, style, row = false, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n row ? \"flex-row flex-wrap gap-4\" : \"flex-col gap-3\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nFormGroup.displayName = \"FormGroup\";\n\nexport { FormGroup };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst RadioGroupContext = React.createContext({\n value: null,\n onChange: null,\n name: null,\n disabled: false,\n});\n\nconst RadioGroup = React.forwardRef(\n (\n {\n children,\n value,\n onChange,\n name,\n className,\n sx,\n style,\n disabled = false,\n row = false,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const handleChange = React.useCallback(\n (event) => {\n if (onChange && !disabled) {\n onChange(event);\n }\n },\n [onChange, disabled]\n );\n\n const contextValue = React.useMemo(\n () => ({\n value,\n onChange: handleChange,\n name: name || `radio-group-${Math.random().toString(36).substr(2, 9)}`,\n disabled,\n }),\n [value, handleChange, name, disabled]\n );\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n \"flex\",\n row ? \"flex-row gap-4\" : \"flex-col gap-2\",\n disabled && \"opacity-50\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n role=\"radiogroup\"\n {...props}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport { RadioGroup, RadioGroupContext };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { RadioGroupContext } from \"./radio-group\";\n\nconst Radio = React.forwardRef(\n (\n {\n className,\n checked: checkedProp,\n onChange: onChangeProp,\n disabled: disabledProp,\n value,\n size = \"medium\",\n sx,\n style,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n const radioGroup = React.useContext(RadioGroupContext);\n\n const checked =\n checkedProp !== undefined ? checkedProp : radioGroup?.value === value;\n\n const disabled =\n disabledProp !== undefined ? disabledProp : radioGroup?.disabled || false;\n\n const handleChange = React.useCallback(\n (event) => {\n if (onChangeProp) {\n onChangeProp(event);\n } else if (radioGroup?.onChange) {\n radioGroup.onChange(event);\n }\n },\n [onChangeProp, radioGroup]\n );\n\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeMap = {\n small: 18,\n medium: 20,\n large: 24,\n };\n\n const radioSize = sizeMap[size] || sizeMap.medium;\n const dotSize = checked ? radioSize * 0.5 : 0;\n\n return (\n <label\n className={cn(\n \"relative inline-flex items-center justify-center cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n style={{ ...mergedSx, ...style }}\n >\n <input\n ref={ref}\n type=\"radio\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n value={value}\n name={radioGroup?.name}\n className=\"sr-only\"\n {...props}\n />\n <div\n className={cn(\n \"flex items-center justify-center transition-all duration-200 border-2 rounded-full bg-transparent transition-colors\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n checked\n ? \"border-primary\"\n : hovered && !disabled\n ? \"border-primary\"\n : \"border-input\"\n )}\n style={{\n width: `${radioSize}px`,\n height: `${radioSize}px`,\n }}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n {checked && (\n <div\n className=\"bg-primary rounded-full transition-all\"\n style={{\n width: `${dotSize}px`,\n height: `${dotSize}px`,\n }}\n />\n )}\n </div>\n </label>\n );\n }\n);\nRadio.displayName = \"Radio\";\n\nexport { Radio };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Collapse = React.forwardRef(\n (\n {\n className,\n style,\n in: inProp = false,\n timeout = \"auto\",\n children,\n unmountOnExit = false,\n orientation = \"vertical\",\n collapsedSize = \"0px\",\n ...props\n },\n ref\n ) => {\n const [mounted, setMounted] = React.useState(inProp || !unmountOnExit);\n const [height, setHeight] = React.useState(() => {\n // Initial height: if expanding, use auto (for vertical) or 0px (for horizontal); if collapsing, use collapsedSize\n // For horizontal, we'll measure the actual width in useEffect, so start with 0px\n return inProp ? (orientation === \"vertical\" ? \"auto\" : \"0px\") : collapsedSize;\n });\n const contentRef = React.useRef(null);\n const isInitialMount = React.useRef(true);\n\n React.useEffect(() => {\n if (unmountOnExit) {\n if (inProp) {\n setMounted(true);\n // Reset isInitialMount when component remounts\n isInitialMount.current = true;\n } else {\n // Delay unmount to allow animation\n const timer = setTimeout(() => {\n setMounted(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }\n }, [inProp, unmountOnExit]);\n\n React.useEffect(() => {\n const isVertical = orientation === \"vertical\";\n \n if (!contentRef.current) {\n // Wait for content to mount, then set initial size\n if (inProp) {\n // Use a small delay to ensure content is rendered\n const timer = setTimeout(() => {\n if (contentRef.current) {\n const size = isVertical\n ? contentRef.current.scrollHeight\n : contentRef.current.scrollWidth;\n setHeight(size > 0 ? `${size}px` : (isVertical ? \"auto\" : \"0px\"));\n }\n }, 0);\n return () => clearTimeout(timer);\n }\n return;\n }\n\n // Skip animation on initial mount if already expanded\n if (isInitialMount.current && inProp) {\n isInitialMount.current = false;\n const size = isVertical\n ? contentRef.current.scrollHeight\n : contentRef.current.scrollWidth;\n setHeight(size > 0 ? `${size}px` : (isVertical ? \"auto\" : \"0px\"));\n // After a brief moment, set to auto for dynamic content (only for vertical)\n if (isVertical) {\n const timer = setTimeout(() => {\n setHeight(\"auto\");\n }, 50);\n return () => clearTimeout(timer);\n }\n return;\n }\n isInitialMount.current = false;\n\n const element = contentRef.current;\n\n if (inProp) {\n // Expanding: measure current size and animate to full size\n const currentSize = isVertical\n ? element.scrollHeight\n : element.scrollWidth;\n if (currentSize > 0) {\n setHeight(`${currentSize}px`);\n\n // After transition, set to auto for dynamic content (only for vertical)\n if (isVertical) {\n const timer = setTimeout(() => {\n setHeight(\"auto\");\n }, 300);\n return () => clearTimeout(timer);\n }\n } else {\n setHeight(isVertical ? \"auto\" : \"0px\");\n }\n } else {\n // Collapsing: measure current size and animate to collapsed\n const currentSize = isVertical\n ? element.scrollHeight\n : element.scrollWidth;\n if (currentSize > 0) {\n setHeight(`${currentSize}px`);\n\n // Force reflow before collapsing\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setHeight(collapsedSize);\n });\n });\n } else {\n setHeight(collapsedSize);\n }\n }\n }, [inProp, collapsedSize, orientation]);\n\n if (unmountOnExit && !mounted) {\n return null;\n }\n\n const isVertical = orientation === \"vertical\";\n \n // Determine the actual size to use for styling\n // When collapsed (!inProp), always use collapsedSize to ensure proper hiding\n // When expanded (inProp), use height to support animation\n // If height is still initial value (0px) and inProp is true, use auto temporarily to show content\n const actualSize = inProp \n ? (height === \"0px\" ? \"auto\" : height) \n : collapsedSize;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden transition-all\",\n !isVertical && \"inline-block\",\n className\n )}\n style={{\n ...(isVertical\n ? {\n height: actualSize,\n maxHeight: inProp ? \"none\" : collapsedSize,\n }\n : {\n width: actualSize,\n maxWidth: inProp ? \"none\" : collapsedSize,\n minWidth: 0,\n }),\n transitionDuration:\n timeout === \"auto\"\n ? \"300ms\"\n : typeof timeout === \"number\"\n ? `${timeout}ms`\n : \"300ms\",\n transitionTimingFunction: \"ease-in-out\",\n ...style,\n }}\n {...props}\n >\n <div\n ref={contentRef}\n style={\n !isVertical\n ? {\n whiteSpace: \"nowrap\",\n display: \"inline-block\",\n width: \"fit-content\",\n minWidth: \"fit-content\",\n }\n : undefined\n }\n >\n {children}\n </div>\n </div>\n );\n }\n);\n\nCollapse.displayName = \"Collapse\";\n\nexport { Collapse };\n","import * as React from \"react\";\nimport { Typography } from \"./typography\";\n\nconst DialogContentText = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <Typography\n ref={ref}\n variant=\"body2\"\n component=\"p\"\n color=\"muted\"\n className={className}\n style={{\n marginBottom: \"16px\",\n ...style,\n }}\n {...props}\n >\n {children}\n </Typography>\n );\n }\n);\n\nDialogContentText.displayName = \"DialogContentText\";\n\nexport { DialogContentText };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Container = React.forwardRef(\n (\n {\n className,\n style,\n maxWidth = \"lg\",\n fixed = false,\n disableGutters = false,\n children,\n ...props\n },\n ref\n ) => {\n // Map maxWidth to actual width values\n const getMaxWidth = () => {\n if (maxWidth === false) {\n return \"none\";\n }\n const maxWidthMap = {\n xs: \"444px\",\n sm: \"600px\",\n md: \"900px\",\n lg: \"1200px\",\n xl: \"1536px\",\n };\n return maxWidthMap[maxWidth] || maxWidthMap.lg;\n };\n\n const maxWidthValue = getMaxWidth();\n\n // Get padding based on disableGutters\n const getPadding = () => {\n if (disableGutters) {\n return { paddingLeft: 0, paddingRight: 0 };\n }\n // Default MUI Container padding\n return {\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"mx-auto\", className)}\n style={{\n width: \"100%\",\n maxWidth: maxWidthValue,\n ...(fixed && { width: maxWidthValue }),\n ...getPadding(),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nContainer.displayName = \"Container\";\n\nexport { Container };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Divider = React.forwardRef(\n (\n {\n className,\n style = {},\n orientation = \"horizontal\",\n variant = \"fullWidth\",\n flexItem = false,\n light = false,\n textAlign = \"center\",\n children,\n ...props\n },\n ref\n ) => {\n const isVertical = orientation === \"vertical\";\n const isInset = variant === \"inset\";\n const isMiddle = variant === \"middle\";\n\n // Extract margin values from style prop\n const styleMarginLeft = style?.marginLeft;\n const styleMarginRight = style?.marginRight;\n\n // Get divider styles\n const getDividerStyles = () => {\n const baseStyles = {\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n };\n\n if (isVertical) {\n // For vertical divider, use marginLeft and marginRight for horizontal spacing\n // Default spacing: 8px on both sides, unless variant or style specifies otherwise\n const defaultMargin = \"8px\";\n const marginLeft = styleMarginLeft || (isInset ? \"16px\" : defaultMargin);\n const marginRight = styleMarginRight || (isInset ? \"16px\" : defaultMargin);\n \n return {\n ...baseStyles,\n borderLeftWidth: \"1px\",\n borderLeftStyle: \"solid\",\n height: \"100%\",\n width: \"1px\",\n marginLeft: marginLeft,\n marginRight: marginRight,\n };\n }\n\n // Horizontal divider\n // Calculate width based on margins to prevent overflow\n // inset: only left margin, middle: both margins, fullWidth: no margins\n const marginLeft =\n styleMarginLeft || (isInset ? \"16px\" : isMiddle ? \"16px\" : \"0px\");\n const marginRight =\n styleMarginRight || (isInset ? \"0px\" : isMiddle ? \"16px\" : \"0px\");\n\n // Parse margin values to calculate total margin\n const parseMargin = (margin) => {\n if (!margin || margin === \"0px\" || margin === \"0\") return 0;\n if (typeof margin === \"number\") return margin;\n const match = margin.toString().match(/([\\d.]+)/);\n return match ? parseFloat(match[1]) : 0;\n };\n\n const marginLeftNum = parseMargin(marginLeft);\n const marginRightNum = parseMargin(marginRight);\n const totalMargin = marginLeftNum + marginRightNum;\n\n const styles = {\n ...baseStyles,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n boxSizing: \"border-box\",\n };\n \n // Set width and margins based on variant\n if (flexItem) {\n styles.width = \"1px\";\n } else if (variant === \"fullWidth\") {\n // fullWidth: 100% width, no horizontal margins\n styles.width = \"100%\";\n styles.marginLeft = \"0px\";\n styles.marginRight = \"0px\";\n } else {\n // inset or middle: calculate width based on margins\n styles.width = totalMargin > 0 ? `calc(100% - ${totalMargin}px)` : \"100%\";\n if (marginLeft !== \"0px\" && marginLeft !== \"0\") {\n styles.marginLeft = marginLeft;\n }\n if (marginRight !== \"0px\" && marginRight !== \"0\") {\n styles.marginRight = marginRight;\n }\n }\n \n return styles;\n };\n\n // If has children, render as wrapper with text\n if (children) {\n // Calculate margin for variant\n // inset: only left margin, middle: both margins, fullWidth: no margins\n const leftMargin = styleMarginLeft || (isInset ? \"16px\" : isMiddle ? \"16px\" : \"0px\");\n const rightMargin = styleMarginRight || (isInset ? \"0px\" : isMiddle ? \"16px\" : \"0px\");\n \n return (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n style={{\n width: \"100%\",\n margin: \"8px 0\",\n ...style,\n }}\n {...props}\n >\n <div\n style={{\n flex: 1,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n marginLeft: leftMargin !== \"0px\" ? leftMargin : undefined,\n }}\n />\n <div\n style={{\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n textAlign: textAlign,\n color: \"hsl(var(--muted-foreground))\",\n fontSize: \"0.875rem\",\n }}\n >\n {children}\n </div>\n <div\n style={{\n flex: 1,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n marginRight: rightMargin !== \"0px\" ? rightMargin : undefined,\n }}\n />\n </div>\n );\n }\n\n // Simple divider without text\n const dividerStyles = getDividerStyles();\n // Add default vertical spacing for horizontal dividers if not specified\n if (!isVertical && !flexItem) {\n if (style.marginTop === undefined && dividerStyles.marginTop === undefined) {\n dividerStyles.marginTop = \"8px\";\n }\n if (style.marginBottom === undefined && dividerStyles.marginBottom === undefined) {\n dividerStyles.marginBottom = \"8px\";\n }\n }\n \n // For fullWidth, ensure no horizontal margins override the divider styles\n const finalStyle = { ...dividerStyles, ...style };\n if (!isVertical && variant === \"fullWidth\" && !flexItem) {\n finalStyle.width = \"100%\";\n finalStyle.marginLeft = style.marginLeft ?? \"0px\";\n finalStyle.marginRight = style.marginRight ?? \"0px\";\n }\n \n return (\n <div\n ref={ref}\n className={cn(\n isVertical ? \"inline-block\" : \"block\",\n flexItem && \"self-stretch\",\n className\n )}\n style={{\n padding: 0,\n display: isVertical ? \"inline-block\" : \"block\",\n ...finalStyle,\n }}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider };\n","import * as React from \"react\";\nimport { cn, useIsDarkMode } from \"../lib/utils\";\n\nconst Avatar = React.forwardRef(\n (\n {\n className,\n style,\n src,\n alt,\n children,\n variant = \"circular\",\n sizes,\n imgProps,\n ...props\n },\n ref\n ) => {\n // Get variant styles\n const getVariantStyles = () => {\n if (variant === \"rounded\") {\n return { borderRadius: \"8px\" };\n }\n if (variant === \"square\") {\n return { borderRadius: \"0px\" };\n }\n // circular (default)\n return { borderRadius: \"50%\" };\n };\n\n const defaultStyles = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n position: \"relative\",\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n lineHeight: 1,\n overflow: \"hidden\",\n userSelect: \"none\",\n backgroundColor: \"hsl(var(--muted))\",\n color: \"hsl(var(--foreground))\",\n fontWeight: 500,\n width: \"40px\",\n height: \"40px\",\n ...getVariantStyles(),\n };\n\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n\n // If has src, render as image\n if (src) {\n // Get text color based on theme mode if backgroundColor is set but color is not\n const getTextColor = () => {\n // If color is explicitly set in style, use it\n if (style?.color) {\n return style.color;\n }\n // If backgroundColor is set in style, determine text color based on dark mode\n if (style?.backgroundColor) {\n return isDark ? \"#000000\" : \"#ffffff\";\n }\n // Otherwise use default color\n return defaultStyles.color;\n };\n\n // Merge styles: defaultStyles first, then style to allow overrides\n // But preserve borderRadius and backgroundColor from defaultStyles if not explicitly set in style\n // IMPORTANT: color must be set last to ensure it's not overridden by style spread\n const { color: styleColor, ...styleWithoutColor } = style || {};\n const mergedStylesWithSrc = {\n ...defaultStyles,\n ...styleWithoutColor, // style without color to avoid override\n // Ensure borderRadius is preserved if not explicitly set in style\n borderRadius: style?.borderRadius ?? defaultStyles.borderRadius,\n // Ensure backgroundColor is preserved if not explicitly set in style\n backgroundColor:\n style?.backgroundColor ?? defaultStyles.backgroundColor,\n // Get text color based on theme mode (set last to ensure it's not overridden)\n color: getTextColor(),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"relative\", className)}\n style={mergedStylesWithSrc}\n {...props}\n >\n <img\n src={src}\n alt={alt}\n sizes={sizes}\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n {...imgProps}\n />\n {children && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {children}\n </div>\n )}\n </div>\n );\n }\n\n // Render as div with children\n // Get text color based on theme mode if backgroundColor is set but color is not\n const getTextColor = () => {\n // If color is explicitly set in style, use it\n if (style?.color) {\n return style.color;\n }\n // If backgroundColor is set in style, determine text color based on dark mode\n if (style?.backgroundColor) {\n return isDark ? \"#000000\" : \"#ffffff\";\n }\n // Otherwise use default color\n return defaultStyles.color;\n };\n\n // Merge styles: defaultStyles first, then style to allow overrides\n // But preserve borderRadius and backgroundColor from defaultStyles if not explicitly set in style\n // IMPORTANT: color must be set last to ensure it's not overridden by style spread\n const { color: styleColor, ...styleWithoutColor } = style || {};\n const mergedStyles = {\n ...defaultStyles,\n ...styleWithoutColor, // style without color to avoid override\n // Ensure borderRadius is preserved if not explicitly set in style\n borderRadius: style?.borderRadius ?? defaultStyles.borderRadius,\n // Ensure backgroundColor is preserved if not explicitly set in style\n backgroundColor: style?.backgroundColor ?? defaultStyles.backgroundColor,\n // Get text color based on theme mode (set last to ensure it's not overridden)\n color: getTextColor(),\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyles} {...props}>\n {children}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Stack = React.forwardRef(\n (\n {\n className,\n direction = \"column\",\n spacing = 0,\n justifyContent,\n alignItems,\n flexWrap,\n gap,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert MUI spacing to pixels (MUI spacing unit = 8px)\n const spacingPx = typeof spacing === \"number\" ? spacing * 8 : 0;\n\n // Use gap if provided, otherwise use spacing\n const gapValue = gap !== undefined ? gap : spacingPx;\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Build flex direction class\n const directionClass =\n direction === \"row\"\n ? \"flex-row\"\n : direction === \"row-reverse\"\n ? \"flex-row-reverse\"\n : direction === \"column-reverse\"\n ? \"column-reverse\"\n : \"flex-col\";\n\n // Build flex wrap class\n const wrapClass =\n flexWrap === \"wrap\"\n ? \"flex-wrap\"\n : flexWrap === \"nowrap\"\n ? \"flex-nowrap\"\n : \"\";\n\n // Build justifyContent class\n const justifyContentClass =\n justifyContent === \"flex-start\"\n ? \"justify-start\"\n : justifyContent === \"flex-end\"\n ? \"justify-end\"\n : justifyContent === \"center\"\n ? \"justify-center\"\n : justifyContent === \"space-between\"\n ? \"justify-between\"\n : justifyContent === \"space-around\"\n ? \"justify-around\"\n : justifyContent === \"space-evenly\"\n ? \"justify-evenly\"\n : \"\";\n\n // Build alignItems class\n const alignItemsClass =\n alignItems === \"flex-start\"\n ? \"items-start\"\n : alignItems === \"flex-end\"\n ? \"items-end\"\n : alignItems === \"center\"\n ? \"items-center\"\n : alignItems === \"baseline\"\n ? \"items-baseline\"\n : alignItems === \"stretch\"\n ? \"items-stretch\"\n : \"\";\n\n const mergedStyle = {\n display: \"flex\",\n ...(gapValue && { gap: `${gapValue}px` }),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n directionClass,\n wrapClass,\n justifyContentClass,\n alignItemsClass,\n className\n )}\n style={mergedStyle}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStack.displayName = \"Stack\";\n\nexport { Stack };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst InputAdornment = React.forwardRef(\n (\n {\n className,\n position = \"end\",\n disablePointerEvents = false,\n disableTypography = false,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disablePointerEvents && \"pointer-events-none\",\n className\n )}\n style={{\n pointerEvents: disablePointerEvents ? \"none\" : \"auto\",\n cursor: disablePointerEvents ? \"default\" : \"inherit\",\n }}\n {...props}\n >\n {disableTypography ? (\n children\n ) : (\n <span className=\"text-sm text-muted-foreground\">{children}</span>\n )}\n </div>\n );\n }\n);\n\nInputAdornment.displayName = \"InputAdornment\";\n\nexport { InputAdornment };\n","import * as React from \"react\";\nimport { cn, spacingToPx } from \"../lib/utils\";\n\nconst Paper = React.forwardRef(\n (\n {\n className,\n elevation = 0,\n square = false,\n variant = \"elevation\",\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Get elevation shadow\n const getElevationShadow = () => {\n if (variant === \"outlined\") {\n return {\n boxShadow: \"none\",\n border: \"1px solid hsl(var(--border))\",\n };\n }\n // elevation variant (default) - Material Design elevation shadows\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range (0-24)\n const clampedElevation = Math.max(0, Math.min(24, elevation));\n return { boxShadow: shadows[clampedElevation] || shadows[1] };\n };\n\n // Get border color based on elevation (use shadow color as border)\n const getBorderColor = () => {\n // Use a subtle border color similar to shadow effect\n // elevation 1 shadow: rgba(0,0,0,0.2), rgba(0,0,0,0.14), rgba(0,0,0,0.12)\n // Convert to a subtle border color\n return \"rgba(0, 0, 0, 0.12)\"; // Light gray border, similar to shadow color\n };\n\n const elevationShadow = getElevationShadow();\n \n return (\n <div\n ref={ref}\n className={cn(\n \"bg-card\",\n !square && \"rounded-lg\",\n variant === \"outlined\" && \"border border-border\",\n className\n )}\n style={{\n ...elevationShadow,\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nPaper.displayName = \"Paper\";\n\nexport { Paper };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst AppBar = React.forwardRef(\n (\n {\n className,\n position = \"fixed\",\n color = \"default\",\n elevation = 4,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Get elevation shadow (Material Design elevation system)\n const getElevationShadow = () => {\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range and get shadow\n const clampedElevation = Math.max(0, Math.min(24, Math.round(elevation)));\n return { boxShadow: shadows[clampedElevation] || shadows[4] };\n };\n\n // Get color classes\n const getColorClasses = () => {\n if (color === \"primary\") return \"bg-primary text-primary-foreground\";\n if (color === \"secondary\")\n return \"bg-secondary text-secondary-foreground\";\n if (color === \"transparent\") return \"bg-transparent text-foreground\";\n return \"bg-card text-foreground\"; // default\n };\n\n // Set position styles for fixed/absolute/sticky positions\n const positionStyles = \n position === \"fixed\" || position === \"absolute\" || position === \"sticky\"\n ? {\n top: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n }\n : {};\n\n return (\n <div\n ref={ref}\n className={cn(\n getColorClasses(),\n \"z-app-bar\",\n position === \"static\" || position === \"relative\" ? \"w-full\" : \"\",\n className\n )}\n style={{\n position: position,\n ...positionStyles,\n ...getElevationShadow(),\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nAppBar.displayName = \"AppBar\";\n\nexport { AppBar };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Toolbar = React.forwardRef(\n ({ className, sx, style, variant = \"regular\", children, ...props }, ref) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Get variant styles\n const getVariantStyles = () => {\n if (variant === \"dense\") {\n return {\n minHeight: \"48px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n } else {\n return {\n minHeight: \"64px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n }\n };\n\n const mergedStyle = {\n display: \"flex\",\n alignItems: \"center\",\n ...getVariantStyles(),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyle} {...props}>\n {children}\n </div>\n );\n }\n);\n\nToolbar.displayName = \"Toolbar\";\n\nexport { Toolbar };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Menu = React.forwardRef(\n (\n {\n className,\n anchorEl,\n open = false,\n onClose,\n PaperProps,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"left\" },\n transformOrigin = { vertical: \"top\", horizontal: \"left\" },\n children,\n ...props\n },\n ref\n ) => {\n const menuRef = React.useRef(null);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n\n React.useImperativeHandle(ref, () => menuRef.current);\n\n // Calculate position using useLayoutEffect to ensure DOM is ready\n React.useLayoutEffect(() => {\n if (!open || !anchorEl) {\n setPosition({ top: 0, left: 0 });\n return;\n }\n\n let isMounted = true;\n let rafId = null;\n\n // Use requestAnimationFrame to ensure DOM is fully updated\n rafId = requestAnimationFrame(() => {\n // Check if component is still mounted before updating state\n if (!isMounted) return;\n\n try {\n // Check if anchorEl is still valid and connected to DOM\n if (!anchorEl || !anchorEl.getBoundingClientRect || !anchorEl.isConnected) {\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n return;\n }\n\n const anchorRect = anchorEl.getBoundingClientRect();\n \n // Validate that getBoundingClientRect returned valid values\n if (!anchorRect || isNaN(anchorRect.bottom) || isNaN(anchorRect.left)) {\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n return;\n }\n \n // Find the nearest positioned ancestor (position: relative, absolute, or fixed)\n let container = anchorEl.parentElement;\n while (container && container !== document.body && container.isConnected) {\n try {\n const style = window.getComputedStyle(container);\n if (style.position === 'relative' || style.position === 'absolute' || style.position === 'fixed') {\n break;\n }\n container = container.parentElement;\n } catch (e) {\n // If getComputedStyle fails, break the loop\n break;\n }\n }\n \n let containerRect = { top: 0, left: 0 };\n if (container && container !== document.body && container.isConnected && container.getBoundingClientRect) {\n try {\n containerRect = container.getBoundingClientRect();\n // Validate containerRect\n if (!containerRect || isNaN(containerRect.top) || isNaN(containerRect.left)) {\n containerRect = { top: 0, left: 0 };\n }\n } catch (e) {\n containerRect = { top: 0, left: 0 };\n }\n }\n \n // Calculate relative position - menu appears below the button\n const relativeTop = anchorRect.bottom - containerRect.top + 8;\n const relativeLeft = anchorRect.left - containerRect.left;\n \n // Validate calculated values\n if (isNaN(relativeTop) || isNaN(relativeLeft)) {\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n return;\n }\n \n // Only update state if component is still mounted\n if (isMounted) {\n setPosition({ top: relativeTop, left: relativeLeft });\n }\n } catch (e) {\n // Fallback position - only update if mounted\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n }\n });\n\n return () => {\n isMounted = false;\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [open, anchorEl]);\n\n // Handle backdrop click\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (e) => {\n if (\n menuRef.current &&\n !menuRef.current.contains(e.target) &&\n anchorEl &&\n !anchorEl.contains(e.target)\n ) {\n if (onClose) {\n onClose(e, \"backdropClick\");\n }\n }\n };\n\n const handleEscape = (e) => {\n if (e.key === \"Escape\" && onClose) {\n onClose(e, \"escapeKeyDown\");\n }\n };\n\n // Use capture phase to catch events before they reach other elements\n document.addEventListener(\"mousedown\", handleClickOutside, true);\n document.addEventListener(\"keydown\", handleEscape, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside, true);\n document.removeEventListener(\"keydown\", handleEscape, true);\n };\n }, [open, onClose, anchorEl]);\n\n if (!open || !anchorEl) return null;\n \n // Get theme mode for shadow\n const isDark = document.documentElement.classList.contains('dark') || \n window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n return (\n <div\n ref={menuRef}\n className={cn(\"rounded-lg shadow-lg\", className)}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n zIndex: 1300,\n pointerEvents: \"auto\",\n visibility: \"visible\",\n display: \"block\",\n opacity: 1,\n backgroundColor: \"hsl(var(--card))\",\n boxShadow: isDark\n ? \"0px 4px 12px rgba(0, 0, 0, 0.4), 0px 0px 0px 1px rgba(255, 255, 255, 0.1)\"\n : \"0px 4px 12px rgba(0, 0, 0, 0.15)\",\n border: isDark\n ? \"1px solid rgba(255, 255, 255, 0.1)\"\n : \"1px solid hsl(var(--border))\",\n borderRadius: PaperProps?.style?.borderRadius || \"8px\",\n minWidth: PaperProps?.style?.minWidth || 180,\n maxWidth: \"calc(100vw - 32px)\",\n padding: \"4px 0\",\n height: \"auto\",\n overflow: \"visible\", // Ensure content is visible\n ...PaperProps?.style,\n ...props.style,\n }}\n {...Object.fromEntries(\n Object.entries(props || {}).filter(([key]) => key !== \"style\")\n )}\n >\n {children}\n </div>\n );\n }\n);\n\nMenu.displayName = \"Menu\";\n\nconst MenuItem = React.forwardRef(\n (\n { className, onClick, disabled = false, sx, style, children, ...props },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Use design tokens for consistent spacing and typography\n const menuItemPadding = { x: 16, y: 12 }; // px-4 py-3 (increased from py-2)\n const menuItemFontSize = \"0.875rem\"; // text-sm\n\n const mergedStyle = {\n display: \"flex\",\n alignItems: \"center\",\n minHeight: \"36px\", // Ensure minimum height for menu items\n height: \"auto\", // Ensure height is auto\n paddingLeft: `${menuItemPadding.x}px`,\n paddingRight: `${menuItemPadding.x}px`,\n paddingTop: `${menuItemPadding.y}px`,\n paddingBottom: `${menuItemPadding.y}px`,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n fontSize: menuItemFontSize,\n color: disabled\n ? \"#666666\"\n : \"#000000\", // Use fixed color for testing\n backgroundColor:\n hovered && !disabled ? \"hsl(var(--accent))\" : \"transparent\",\n opacity: disabled\n ? 0.5\n : sxStyles.opacity !== undefined\n ? sxStyles.opacity\n : 1,\n transition: \"background-color 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n whiteSpace: \"nowrap\", // Prevent text wrapping\n visibility: \"visible\",\n textAlign: \"left\",\n fontWeight: \"normal\",\n width: \"100%\",\n boxSizing: \"border-box\",\n ...sxStyles,\n ...style,\n };\n\n const handleClick = (e) => {\n if (disabled) return;\n if (onClick) {\n onClick(e);\n }\n };\n\n const handleMouseDown = (e) => {\n if (disabled) return;\n e.preventDefault(); // Prevent default behavior\n e.stopPropagation(); // Prevent event bubbling to parent elements\n };\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n // Support Enter and Space keys for keyboard navigation\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n if (onClick) {\n onClick(e);\n }\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n className={cn(\n \"focus:outline-none focus:bg-accent focus:text-accent-foreground\",\n className\n )}\n style={mergedStyle}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMenuItem.displayName = \"MenuItem\";\n\nconst MenuItemIcon = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: \"40px\",\n marginRight: \"8px\",\n color: \"inherit\",\n fontSize: \"1.25rem\",\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nMenuItemIcon.displayName = \"MenuItemIcon\";\n\nconst MenuItemText = React.forwardRef(\n ({ className, style, children, primary, secondary, ...props }, ref) => {\n // Determine what content to display\n const content = primary !== undefined ? primary : children;\n const hasSecondary = secondary !== undefined && secondary !== null;\n \n return (\n <div\n ref={ref}\n className={cn(\"flex-1\", className)}\n style={{\n fontSize: \"0.875rem\",\n lineHeight: \"1.5\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n textAlign: \"left\",\n color: \"#000000\", // Use fixed color for testing\n minHeight: \"1.5em\", // Ensure minimum height\n boxSizing: \"border-box\",\n ...style,\n }}\n {...props}\n >\n {hasSecondary ? (\n <>\n <div style={{ fontSize: \"0.875rem\", lineHeight: \"1.5\", color: \"#000000\", textAlign: \"left\", display: \"block\" }}>\n {content}\n </div>\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"#666666\",\n marginTop: \"2px\",\n display: \"block\",\n }}\n >\n {secondary}\n </div>\n </>\n ) : (\n <span style={{ color: \"#000000\", display: \"inline-block\", width: \"100%\" }}>{content || \"\"}</span>\n )}\n </div>\n );\n }\n);\nMenuItemText.displayName = \"MenuItemText\";\n\nexport { Menu, MenuItem, MenuItemIcon, MenuItemText };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst TableContext = React.createContext({\n verticalDivider: false,\n});\n\nconst Table = React.forwardRef(\n (\n {\n className,\n size = \"medium\",\n sx,\n style,\n border = false,\n verticalDivider = false,\n children,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeStyles = {\n small: {\n fontSize: \"0.875rem\",\n },\n medium: {\n fontSize: \"1rem\",\n },\n };\n\n return (\n <TableContext.Provider value={{ verticalDivider }}>\n <table\n ref={ref}\n className={cn(\"w-full\", className)}\n style={{\n borderCollapse: \"separate\",\n borderSpacing: 0,\n ...(border && {\n border: \"1px solid hsl(var(--border))\",\n }),\n ...sizeStyles[size],\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </table>\n </TableContext.Provider>\n );\n }\n);\nTable.displayName = \"Table\";\n\nconst TableContainer = React.forwardRef(\n ({ className, component, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const Component = component || \"div\";\n\n return (\n <Component\n ref={ref}\n className={cn(\"relative\", className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nTableContainer.displayName = \"TableContainer\";\n\nconst TableHead = React.forwardRef(\n ({ className, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <thead\n ref={ref}\n className={cn(className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </thead>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableBody = React.forwardRef(\n ({ className, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <tbody\n ref={ref}\n className={cn(className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </tbody>\n );\n }\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableRow = React.forwardRef(\n ({ className, sx, style, children, hover, selected, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <tr\n ref={ref}\n className={cn(\n hover && \"hover:bg-accent\",\n selected && \"bg-accent\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </tr>\n );\n }\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableCell = React.forwardRef(\n (\n {\n className,\n align = \"inherit\",\n padding = \"normal\",\n size = \"medium\",\n scope,\n sx,\n style,\n children,\n colSpan,\n rowSpan,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const paddingMap = {\n none: \"0\",\n checkbox: \"0 0 0 4px\",\n normal: \"16px\",\n small: \"8px\",\n };\n\n const sizeStyles = {\n small: {\n padding: \"6px 8px\",\n fontSize: \"0.875rem\",\n },\n medium: {\n padding: paddingMap[padding] || paddingMap.normal,\n fontSize: \"1rem\",\n },\n };\n\n const alignStyles = {\n left: { textAlign: \"left\" },\n center: { textAlign: \"center\" },\n right: { textAlign: \"right\" },\n inherit: {},\n };\n\n const { verticalDivider } = React.useContext(TableContext);\n\n const Component = scope ? \"th\" : \"td\";\n\n return (\n <Component\n ref={ref}\n scope={scope}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={cn(\n \"border-b border-border\",\n verticalDivider && \"border-r border-border last:border-r-0\",\n className\n )}\n style={{\n ...sizeStyles[size],\n ...alignStyles[align],\n ...(verticalDivider && {\n borderRight: \"1px solid hsl(var(--border))\",\n }),\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nTableCell.displayName = \"TableCell\";\n\nexport { Table, TableContainer, TableHead, TableBody, TableRow, TableCell };\n","import * as React from \"react\";\nimport { cn, useIsDarkMode } from \"../lib/utils\";\n\nconst ToggleButton = React.forwardRef(\n (\n {\n className,\n value,\n selected = false,\n onChange,\n disabled = false,\n size = \"medium\",\n sx,\n style,\n children,\n color,\n ...props\n },\n ref\n ) => {\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeStyles = {\n small: {\n padding: \"4px 6px\",\n fontSize: \"0.75rem\",\n minHeight: \"28px\",\n },\n medium: {\n padding: \"6px 16px\",\n fontSize: \"0.9375rem\",\n minHeight: \"36px\",\n },\n large: {\n padding: \"8px 22px\",\n fontSize: \"1rem\",\n minHeight: \"40px\",\n },\n };\n\n const handleClick = (e) => {\n if (disabled) return;\n if (onChange) {\n onChange(e, value);\n }\n };\n\n const baseStyle = {\n ...sizeStyles[size],\n border: \"1px solid hsl(var(--border))\",\n borderRadius: \"8px\",\n textTransform: \"none\",\n fontWeight: 400,\n };\n\n const {\n backgroundColor: styleBg,\n color: styleColor,\n borderColor: styleBorder,\n ...restStyle\n } = style || {};\n\n const selectedStyle = selected\n ? color\n ? {\n backgroundColor: color,\n color: \"white\",\n borderColor: color,\n }\n : {\n backgroundColor: \"hsl(var(--primary))\",\n color: \"hsl(var(--primary-foreground))\",\n borderColor: \"hsl(var(--primary))\",\n }\n : {\n backgroundColor: \"transparent\",\n color: \"hsl(var(--foreground))\",\n borderColor: \"hsl(var(--border))\",\n };\n\n const buttonStyle = {\n ...baseStyle,\n ...mergedSx,\n ...restStyle,\n ...selectedStyle,\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"inline-flex items-center justify-center transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n className\n )}\n style={buttonStyle}\n onClick={handleClick}\n disabled={disabled}\n aria-pressed={selected}\n onMouseEnter={(e) => {\n if (!disabled && !selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent) / 0.3)\";\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled && !selected) {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nToggleButton.displayName = \"ToggleButton\";\n\nconst ToggleButtonGroup = React.forwardRef(\n (\n {\n className,\n value,\n exclusive = false,\n onChange,\n size = \"medium\",\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const handleToggleButtonChange = (event, buttonValue) => {\n if (!onChange) return;\n\n if (exclusive) {\n // Exclusive mode: single selection\n onChange(event, buttonValue === value ? null : buttonValue);\n } else {\n // Multiple selection mode\n const currentValues = Array.isArray(value) ? value : [];\n const index = currentValues.indexOf(buttonValue);\n const newValues = [...currentValues];\n\n if (index === -1) {\n newValues.push(buttonValue);\n } else {\n newValues.splice(index, 1);\n }\n\n onChange(event, newValues);\n }\n };\n\n // Clone children and inject props\n const childrenArray = React.Children.toArray(children);\n const childrenWithProps = childrenArray.map((child, index) => {\n if (React.isValidElement(child) && child.type === ToggleButton) {\n const buttonValue = child.props.value;\n const isSelected = exclusive\n ? value === buttonValue\n : Array.isArray(value) && value.includes(buttonValue);\n\n return React.cloneElement(child, {\n selected: isSelected,\n onChange: handleToggleButtonChange,\n size,\n style: {\n borderRadius: \"8px\",\n ...child.props.style,\n },\n });\n }\n return child;\n });\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex gap-2\", className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n role=\"group\"\n {...props}\n >\n {childrenWithProps}\n </div>\n );\n }\n);\nToggleButtonGroup.displayName = \"ToggleButtonGroup\";\n\nexport { ToggleButton, ToggleButtonGroup };\n","import { useState, useEffect } from \"react\";\n\n// Simplified useMediaQuery hook to replace @mui/material's useMediaQuery\nexport const useMediaQuery = (query) => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n // Extract media query from MUI format or use directly\n let mediaQueryString = query;\n \n // Handle MUI format: \"@media (max-width:599px)\"\n if (query.startsWith(\"@media\")) {\n mediaQueryString = query.replace(\"@media\", \"\").trim();\n }\n\n const mediaQuery = window.matchMedia(mediaQueryString);\n \n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Create event listener\n const handler = (event) => {\n setMatches(event.matches);\n };\n\n // Add listener\n mediaQuery.addEventListener(\"change\", handler);\n\n // Cleanup\n return () => {\n mediaQuery.removeEventListener(\"change\", handler);\n };\n }, [query]);\n\n return matches;\n};\n\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { useMediaQuery } from \"../lib/useMediaQuery\";\n\nconst Grid = React.forwardRef(\n (\n {\n className,\n container = false,\n item = false,\n xs,\n sm,\n md,\n lg,\n xl,\n spacing,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Use media query strings directly\n const isXs = useMediaQuery(\"@media (max-width:599px)\");\n const isSm = useMediaQuery(\n \"@media (min-width:600px) and (max-width:959px)\"\n );\n const isMd = useMediaQuery(\n \"@media (min-width:960px) and (max-width:1279px)\"\n );\n const isLg = useMediaQuery(\n \"@media (min-width:1280px) and (max-width:1919px)\"\n );\n const isXl = useMediaQuery(\"@media (min-width:1920px)\");\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Convert MUI spacing to pixels (MUI spacing unit = 8px)\n const spacingToPx = (value) => {\n if (typeof value === \"number\") {\n return `${value * 8}px`;\n }\n return \"0px\";\n };\n\n // Get responsive breakpoint value\n const getBreakpointValue = () => {\n if (isXl && xl !== undefined) return xl;\n if (isLg && lg !== undefined) return lg;\n if (isMd && md !== undefined) return md;\n if (isSm && sm !== undefined) return sm;\n if (isXs && xs !== undefined) return xs;\n // Fallback to xs if provided, otherwise undefined\n return xs;\n };\n\n const breakpointValue = getBreakpointValue();\n\n // Calculate flex basis and max width for item\n const getItemStyles = () => {\n if (!item) return {};\n if (breakpointValue === undefined) return {};\n\n // MUI Grid uses 12 columns\n const columns = 12;\n const percentage = (breakpointValue / columns) * 100;\n\n return {\n flexBasis: `${percentage}%`,\n maxWidth: `${percentage}%`,\n flexGrow: 0,\n flexShrink: 0,\n boxSizing: \"border-box\",\n };\n };\n\n // Get container styles\n // MUI Grid spacing: container has negative margins only on left and top\n // This offsets item padding to align items with container edges on left/top\n // Right and bottom edges maintain spacing through item padding\n const getContainerStyles = () => {\n if (!container) return {};\n\n const spacingPx = spacingToPx(spacing || 0);\n\n return {\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"100%\",\n marginLeft: spacing ? `-${spacingPx}` : undefined,\n marginTop: spacing ? `-${spacingPx}` : undefined,\n };\n };\n\n // Get item styles with padding for spacing\n // MUI Grid spacing: items have paddingLeft and paddingTop\n // This creates spacing between items and from left/top edges\n // Right and bottom spacing is maintained by the last items' padding\n const getItemPaddingStyles = () => {\n if (!item) return {};\n if (!spacing) return {};\n\n const spacingPx = spacingToPx(spacing);\n\n return {\n paddingLeft: spacingPx,\n paddingTop: spacingPx,\n };\n };\n\n const mergedStyle = {\n ...getContainerStyles(),\n ...getItemStyles(),\n ...getItemPaddingStyles(),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyle} {...props}>\n {children}\n </div>\n );\n }\n);\n\nGrid.displayName = \"Grid\";\n\nexport { Grid };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst InputLabel = React.forwardRef(\n (\n {\n children,\n className,\n required = false,\n disabled = false,\n error = false,\n focused = false,\n shrink = false,\n sx,\n style,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n return (\n <label\n ref={ref}\n className={cn(\n \"block text-sm font-medium mb-2 text-foreground\",\n error\n ? \"text-destructive\"\n : focused\n ? \"text-primary\"\n : \"text-foreground\",\n disabled && \"opacity-50\",\n className\n )}\n style={{\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </label>\n );\n }\n);\n\nInputLabel.displayName = \"InputLabel\";\n\nexport { InputLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Slider = React.forwardRef(\n (\n {\n value,\n onChange,\n onChangeCommitted,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n className,\n style,\n sx,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef(null);\n const draggingRef = React.useRef(false);\n const [localValue, setLocalValue] = React.useState(value);\n\n // Convert sx to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return { container: {} };\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n // Convert MUI sx object to style object\n const converted = { container: {} };\n\n // Container-level styles (position, top, transform, width, left, etc.)\n if (sxObj.position) converted.container.position = sxObj.position;\n if (sxObj.top !== undefined) converted.container.top = sxObj.top;\n if (sxObj.left !== undefined) converted.container.left = sxObj.left;\n if (sxObj.width) converted.container.width = sxObj.width;\n if (sxObj.height) converted.container.height = sxObj.height;\n if (sxObj.transform) converted.container.transform = sxObj.transform;\n\n // Internal component styles\n if (sxObj[\"& .MuiSlider-rail\"]) {\n converted.rail = sxObj[\"& .MuiSlider-rail\"];\n }\n if (sxObj[\"& .MuiSlider-track\"]) {\n converted.track = sxObj[\"& .MuiSlider-track\"];\n }\n if (sxObj[\"& .MuiSlider-thumb\"]) {\n converted.thumb = sxObj[\"& .MuiSlider-thumb\"];\n }\n return converted;\n }, [sx, localValue]);\n\n // Sync localValue with value prop\n React.useEffect(() => {\n if (!draggingRef.current) {\n setLocalValue(value);\n }\n }, [value]);\n\n const isVertical = orientation === \"vertical\";\n const percent = Math.max(0, Math.min(1, (localValue - min) / (max - min)));\n\n const handleMouseDown = (e) => {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n draggingRef.current = true;\n handleMove(e);\n // Use capture phase to ensure we get the events\n document.addEventListener(\"mousemove\", handleMouseMove, {\n capture: true,\n });\n document.addEventListener(\"mouseup\", handleMouseUp, { capture: true });\n };\n\n const handleTouchStart = (e) => {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n draggingRef.current = true;\n handleMove(e.touches[0]);\n // Use capture phase to ensure we get the events\n document.addEventListener(\"touchmove\", handleTouchMove, {\n capture: true,\n passive: false,\n });\n document.addEventListener(\"touchend\", handleTouchEnd, { capture: true });\n };\n\n const handleMouseMove = (e) => {\n if (!draggingRef.current) return;\n e.preventDefault();\n handleMove(e);\n };\n\n const handleTouchMove = (e) => {\n if (!draggingRef.current) return;\n e.preventDefault();\n handleMove(e.touches[0]);\n };\n\n const handleMouseUp = () => {\n if (draggingRef.current && onChangeCommitted) {\n onChangeCommitted(null, localValue);\n }\n draggingRef.current = false;\n document.removeEventListener(\"mousemove\", handleMouseMove, {\n capture: true,\n });\n document.removeEventListener(\"mouseup\", handleMouseUp, { capture: true });\n };\n\n const handleTouchEnd = () => {\n if (draggingRef.current && onChangeCommitted) {\n onChangeCommitted(null, localValue);\n }\n draggingRef.current = false;\n document.removeEventListener(\"touchmove\", handleTouchMove, {\n capture: true,\n });\n document.removeEventListener(\"touchend\", handleTouchEnd, {\n capture: true,\n });\n };\n\n const handleMove = (e) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n\n if (isVertical) {\n let y = rect.bottom - e.clientY;\n y = Math.max(0, Math.min(rect.height, y));\n const newPercent = y / rect.height;\n const newValue = Math.round(newPercent * (max - min) + min);\n const clampedValue = Math.max(min, Math.min(max, newValue));\n setLocalValue(clampedValue);\n if (onChange) onChange(null, clampedValue);\n } else {\n let x = e.clientX - rect.left;\n x = Math.max(0, Math.min(rect.width, x));\n const newPercent = x / rect.width;\n const newValue = Math.round(newPercent * (max - min) + min);\n const clampedValue = Math.max(min, Math.min(max, newValue));\n setLocalValue(clampedValue);\n if (onChange) onChange(null, clampedValue);\n }\n };\n\n const railStyle = {\n ...(isVertical\n ? {\n width: \"100%\",\n height: \"100%\",\n borderRadius: sxStyles.rail?.borderRadius || \"10px\",\n backgroundColor:\n sxStyles.rail?.backgroundColor || \"hsl(var(--muted))\",\n border: sxStyles.rail?.border || \"none\",\n position: \"relative\",\n zIndex: 0,\n }\n : {\n width: \"100%\",\n height: sxStyles.rail?.height || \"4px\",\n borderRadius: sxStyles.rail?.borderRadius || \"2px\",\n backgroundColor:\n sxStyles.rail?.backgroundColor || \"hsl(var(--muted))\",\n border: sxStyles.rail?.border || \"none\",\n position: \"relative\",\n zIndex: 0,\n }),\n };\n\n // Get track display value (handle dynamic display based on value)\n const getTrackDisplay = () => {\n if (sxStyles.track?.display !== undefined) {\n // Handle function or conditional display\n if (typeof sxStyles.track.display === \"function\") {\n return sxStyles.track.display(localValue) ? \"block\" : \"none\";\n }\n return sxStyles.track.display;\n }\n // Default: hide track when value is 0 (for vertical sliders)\n return isVertical && localValue === 0 ? \"none\" : \"block\";\n };\n\n const trackStyle = {\n ...(isVertical\n ? {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n width: \"100%\",\n height: `${percent * 100}%`,\n borderRadius: sxStyles.track?.borderRadius || \"10px\",\n backgroundColor:\n sxStyles.track?.backgroundColor || \"hsl(var(--primary))\",\n display: getTrackDisplay(),\n border: sxStyles.track?.border || \"none\",\n zIndex: 1,\n pointerEvents: \"none\",\n }\n : {\n position: \"absolute\",\n top: \"50%\",\n left: 0,\n transform: \"translateY(-50%)\",\n width: `${percent * 100}%`,\n height: sxStyles.track?.height || \"4px\",\n borderRadius: sxStyles.track?.borderRadius || \"2px\",\n backgroundColor:\n sxStyles.track?.backgroundColor || \"hsl(var(--primary))\",\n border: sxStyles.track?.border || \"none\",\n zIndex: 1,\n pointerEvents: \"none\",\n }),\n };\n\n // Get thumb display value (handle dynamic display based on value)\n const getThumbDisplay = () => {\n if (sxStyles.thumb?.display !== undefined) {\n // Handle function or conditional display\n if (typeof sxStyles.thumb.display === \"function\") {\n return sxStyles.thumb.display(localValue) ? \"block\" : \"none\";\n }\n return sxStyles.thumb.display;\n }\n // Default: hide thumb when value <= 3 (for vertical sliders)\n return isVertical && localValue <= 3 ? \"none\" : \"block\";\n };\n\n const thumbStyle = {\n ...(isVertical\n ? {\n position: \"absolute\",\n left: \"50%\",\n bottom: `${percent * 100}%`,\n transform:\n sxStyles.thumb?.transform || \"translateX(-50%) translateY(50%)\",\n width: sxStyles.thumb?.width || 20,\n height: sxStyles.thumb?.height || 2,\n backgroundColor: sxStyles.thumb?.backgroundColor || \"#ffffff\",\n boxShadow:\n sxStyles.thumb?.boxShadow || \"0 0 4px rgba(0, 0, 0, 0.3)\",\n borderRadius: sxStyles.thumb?.borderRadius || \"1px\",\n marginBottom: sxStyles.thumb?.marginBottom || \"-4px\",\n display: getThumbDisplay(),\n cursor: disabled ? \"default\" : \"pointer\",\n zIndex: 2,\n pointerEvents: \"auto\",\n }\n : {\n position: \"absolute\",\n top: \"50%\",\n left: `${percent * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: sxStyles.thumb?.width || 16,\n height: sxStyles.thumb?.height || 16,\n backgroundColor:\n sxStyles.thumb?.backgroundColor || \"hsl(var(--primary))\",\n boxShadow: sxStyles.thumb?.boxShadow || \"0 2px 4px rgba(0,0,0,0.2)\",\n borderRadius: sxStyles.thumb?.borderRadius || \"50%\",\n border: \"2px solid hsl(var(--background))\",\n cursor: disabled ? \"default\" : \"pointer\",\n zIndex: 2,\n pointerEvents: \"auto\",\n }),\n };\n\n const sliderId = React.useId();\n const currentValue = localValue !== undefined ? localValue : value;\n\n return (\n <div\n ref={containerRef}\n role=\"slider\"\n id={sliderId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-valuetext={ariaValueText || String(currentValue)}\n aria-orientation={orientation}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(\n \"relative select-none focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n isVertical ? \"h-full w-full\" : \"w-full\",\n className\n )}\n style={{\n ...(isVertical ? { height: \"100%\", width: \"100%\" } : {}),\n ...sxStyles.container,\n ...style,\n // Ensure slider can receive pointer events\n pointerEvents: disabled ? \"none\" : \"auto\",\n // Prevent touch scrolling that might interfere with slider dragging\n touchAction: disabled ? \"auto\" : \"none\",\n // Ensure container is above background layers\n zIndex: 1,\n }}\n onMouseDown={handleMouseDown}\n onTouchStart={handleTouchStart}\n onKeyDown={(e) => {\n if (disabled) return;\n let newValue = currentValue;\n const stepSize = step || 1;\n\n if (orientation === \"horizontal\") {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n newValue = Math.min(max, currentValue + stepSize);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n newValue = Math.max(min, currentValue - stepSize);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newValue = min;\n } else if (e.key === \"End\") {\n e.preventDefault();\n newValue = max;\n }\n } else {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n newValue = Math.min(max, currentValue + stepSize);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n newValue = Math.max(min, currentValue - stepSize);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newValue = min;\n } else if (e.key === \"End\") {\n e.preventDefault();\n newValue = max;\n }\n }\n\n if (newValue !== currentValue) {\n setLocalValue(newValue);\n if (onChange) {\n onChange(newValue);\n }\n }\n }}\n {...props}\n >\n {/* Rail */}\n <div style={railStyle} />\n {/* Track */}\n <div style={trackStyle} />\n {/* Thumb */}\n <div\n style={thumbStyle}\n // Let container handle all mouse/touch events for consistency\n onMouseEnter={(e) => {\n if (!disabled && sxStyles.thumb?.[\"&:hover\"]) {\n e.currentTarget.style.boxShadow =\n sxStyles.thumb[\"&:hover\"].boxShadow ||\n e.currentTarget.style.boxShadow;\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow =\n sxStyles.thumb?.boxShadow ||\n (isVertical\n ? \"0 0 4px rgba(0, 0, 0, 0.3)\"\n : \"0 1px 3px rgba(0,0,0,0.4)\");\n }}\n />\n </div>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n\nexport { Slider };\n","import * as React from \"react\";\nimport { cn, spacingToPx } from \"../lib/utils\";\n\nconst Box = React.forwardRef(\n ({ className, sx, style, children, component = \"div\", ...props }, ref) => {\n const Component = component;\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n const converted = { ...sxObj };\n\n // Handle spacing shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n delete converted.gap;\n }\n\n // Handle color shortcuts (text.primary, text.secondary, etc.)\n if (converted.color) {\n if (typeof converted.color === \"string\") {\n if (\n converted.color === \"text.primary\" ||\n converted.color === \"textPrimary\"\n ) {\n converted.color = \"hsl(var(--foreground))\";\n } else if (\n converted.color === \"text.secondary\" ||\n converted.color === \"textSecondary\"\n ) {\n converted.color = \"hsl(var(--muted-foreground))\";\n } else if (converted.color === \"primary\") {\n converted.color = \"hsl(var(--primary))\";\n } else if (converted.color === \"secondary\") {\n converted.color = \"hsl(var(--secondary))\";\n } else if (converted.color === \"error\") {\n converted.color = \"hsl(var(--destructive))\";\n }\n }\n }\n\n // Handle bgcolor - convert to CSS variable if needed\n if (converted.bgcolor) {\n if (\n typeof converted.bgcolor === \"string\" &&\n converted.bgcolor.includes(\".\")\n ) {\n // Map common theme paths to CSS variables\n const bgcolorMap = {\n \"background.paper\": \"hsl(var(--card))\",\n \"background.default\": \"hsl(var(--background))\",\n \"background.card\": \"hsl(var(--card))\",\n };\n converted.backgroundColor =\n bgcolorMap[converted.bgcolor] || converted.bgcolor;\n } else {\n converted.backgroundColor = converted.bgcolor;\n }\n delete converted.bgcolor;\n }\n\n return converted;\n }, [sx]);\n\n const mergedStyle = {\n ...sxStyles,\n ...style,\n };\n\n // Convert display, flexDirection, etc. to Tailwind classes where possible\n const displayClass = sxStyles.display === \"flex\" ? \"flex\" : \"\";\n const flexDirectionClass =\n sxStyles.flexDirection === \"column\" ? \"flex-col\" : \"\";\n const alignItemsClass =\n sxStyles.alignItems === \"center\" ? \"items-center\" : \"\";\n const justifyContentClass =\n sxStyles.justifyContent === \"space-between\"\n ? \"justify-between\"\n : sxStyles.justifyContent === \"center\"\n ? \"justify-center\"\n : \"\";\n\n return (\n <Component\n ref={ref}\n className={cn(\n displayClass,\n flexDirectionClass,\n alignItemsClass,\n justifyContentClass,\n className\n )}\n style={mergedStyle}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nBox.displayName = \"Box\";\n\nexport { Box };\n"],"names":["r","e","t","f","n","Array","isArray","o","length","clsx","arguments","createClassPartObject","nextPart","Map","validators","classGroupId","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","array1","array2","combinedArray","i","concatArrays","classPartObject","currentClassPart","nextClassPartObject","get","result","classRest","join","slice","validatorsLength","validatorObj","validator","indexOf","undefined","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processObjectDefinition","processFunctionDefinition","processStringDefinition","getPart","isThemeGetter","push","createClassValidatorObject","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","postfixModifierPosition","bracketDepth","parenDepth","modifierStart","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","SPLIT_CLASSES_REGEX","toValue","mix","resolvedValue","string","k","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","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","exec","shouldMatchNoLabel","label","twMerge","createConfigFirst","createConfigRest","configUtils","cacheGet","cacheSet","functionToCall","tailwindMerge","classList","cachedResult","sortModifiers","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","mergeClassList","reduce","previousConfig","createConfigCurrent","createConfigUtils","args","classLists","argument","twJoin","createTailwindMerge","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scalePositionWithArbitrary","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","position","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","repeat","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","cn","_len","inputs","_key","spacingToPx","concat","useIsDarkMode","_React$useState2","_slicedToArray","React","useState","document","documentElement","contains","isDark","setIsDark","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","Card","forwardRef","_ref","ref","_ref$elevation","elevation","_ref$variant","variant","_ref$square","square","style","props","_objectWithoutProperties","_excluded","_jsx","_objectSpread","boxShadow","shadows","Math","max","min","round","getElevationShadow","displayName","CardHeader","memo","_ref2","_excluded2","CardTitle","_ref3","_excluded3","CardDescription","_ref4","_excluded4","CardContent","_ref5","_excluded5","CardFooter","_ref6","_excluded6","CardActionArea","_ref7","_excluded7","role","tabIndex","onKeyDown","preventDefault","onClick","falsyToString","cx","cva","base","_config_compoundVariants","variants","class","defaultVariants","getVariantClassNames","keys","map","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","compoundVariants","cvClass","cvClassName","compoundVariantOptions","every","includes","buttonVariants","default","destructive","secondary","ghost","link","sm","lg","icon","Button","startIcon","endIcon","children","_ref$fullWidth","fullWidth","_ref$disabled","disabled","href","component","mappedVariant","mappedSize","Component","buttonProps","type","_jsxs","BackgroundTypeContext","createContext","backgroundTypeState","useRecoilValue","atom","useContext","DialogContent","sx","sxStyles","useMemo","converted","padding","paddingLeft","paddingRight","paddingTop","paddingBottom","margin","marginLeft","marginRight","marginTop","marginBottom","backgroundColor","restStyle","defaultPaddingClass","background","pointerEvents","DialogHeader","DialogFooter","DialogTitle","DialogDescription","_ref8","id","_excluded8","DialogActions","_ref9","_excluded9","_ref0","_excluded0","iconButtonVariants","IconButton","_ref$size","ariaLabel","childrenWithSize","isValidElement","cloneElement","console","warn","typographyVariants","h1","h2","h3","h4","h5","h6","blockquote","inlineCode","lead","largeText","smallText","mutedText","body1","body2","subtitle1","subtitle2","overline","primary","muted","error","inherit","Typography","mappedColor","chipVariants","outlined","small","medium","Chip","_icon$props","_icon$props2","_icon$props3","_icon$props4","_icon$props5","onDelete","alignItems","justifyContent","lineHeight","width","height","fontSize","textOverflow","whiteSpace","maxWidth","TextField","_InputProps$style2","_InputProps$style3","InputProps","_ref$error","helperText","_ref$multiline","multiline","rows","maxRows","_InputProps$style","_props$style","_ref$floatingLabel","floatingLabel","_ref$required","required","getComponentBgColor","defaultColor","focused","setFocused","inputRef","useRef","combinedRef","useCallback","node","hasValue","sizeClasses","sizePadding","inputBackgroundColor","propsHeight","restPropsStyle","finalBackgroundColor","inputHeight","restProps","getVariantBorderStyle","borderTop","borderLeft","borderRight","borderBottom","borderRadius","borderColor","finalStyle","InputComponent","shouldShowPlaceholder","inputType","inputProps","startAdornment","endAdornment","onFocus","onBlur","toPascalCase","camelCase","replace","match","p1","p2","toUpperCase","toLowerCase","toCamelCase","charAt","mergeClasses","classes","array","Boolean","defaultAttributes","xmlns","viewBox","strokeWidth","strokeLinecap","strokeLinejoin","Icon","_ref$color","_ref$strokeWidth","absoluteStrokeWidth","_ref$className","iconNode","rest","createElement","prop","hasA11yProp","_toConsumableArray","tag","attrs","createLucideIcon","iconName","Check","d","ChevronDown","CircleAlert","cy","x1","x2","y1","y2","CircleCheckBig","Info","TriangleAlert","X","Select","onChange","_ref$displayEmpty","displayEmpty","native","renderValue","_ref$multiple","multiple","_React$useState4","hovered","setHovered","_React$useState6","open","setOpen","selectRef","menuRef","selectId","useId","useImperativeHandle","_loop","prototype","hasOwnProperty","call","cssProp","convertSxToStyle","isMultiple","selectedValues","selectedOption","selected","Children","toArray","find","child","handleClickOutside","event","target","addEventListener","removeEventListener","handleOptionClick","optionValue","currentValues","newValues","v","textAlign","fontWeight","fromEntries","onMouseEnter","onMouseLeave","isSelected","menuBgColor","currentTarget","MenuItem","FormControl","_ref5$fullWidth","Checkbox","checked","ariaLabelledBy","List","ListItem","_ref2$alignItems","disablePadding","dense","ListItemIcon","minWidth","ListItemText","ListItemButton","paddingClass","ListItemAvatar","Accordion","expanded","defaultExpanded","isExpanded","setIsExpanded","accordionId","onChangeRef","expandedRef","handleChange","_event$preventDefault","_event$stopPropagatio","stopPropagation","currentExpandedValue","newExpanded","currentExpanded","AccordionSummary","AccordionDetails","expandIcon","minHeight","contentId","styleBackgroundColor","cleanRestStyle","finalPadding","styleObj","Alert","_classes$severity","_ref$severity","severity","onClose","action","iconMapping","defaultIconMapping","AlertCircle","warning","AlertTriangle","info","success","CheckCircle","isReactElement","_typeof","$$typeof","IconComponent","severityClasses","standard","filled","Tabs","centered","tabsContainerRef","indicatorRef","selectedValue","setSelectedValue","handleTabClick","newValue","currentValue","isStandardVariant","selectedTab","querySelectorAll","containerRect","getBoundingClientRect","tabRect","tabsId","_child$type","Tab","ariaControls","styleColor","hasPaddingInStyle","finalColor","propsOnClick","textTransform","tabColors","defaultMarginClass","auto","basePlacements","viewport","popper","variationPlacements","placement","placements","modifierPhases","getNodeName","element","nodeName","getWindow","window","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","name","enabled","phase","fn","state","elements","styles","assign","removeAttribute","setAttribute","effect","initialStyles","options","strategy","arrow","reference","attribute","requires","getBasePlacement","getUAString","uaData","navigator","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","parent","rootNode","getRootNode","isSameNode","parentNode","host","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","passive","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","body","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_i","fittingPlacement","reset","data","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","visited","Set","add","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","merged","orderModifiers","existing","_ref$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","flip","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","CONTENT_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","capture","TIPPY_DEFAULT_APPEND_TO","Tooltip","title","_ref$placement","_ref$arrow","_ref$delay","childRef","tippyInstanceRef","getElementById","textContent","head","appendChild","tippy","animation","popperOptions","setContent","childElement","only","Autocomplete","_inputProps$style","_inputProps$InputProp","_inputProps$InputProp2","_inputProps$InputProp3","getOptionLabel","inputValue","onInputChange","filterOptions","renderInput","filteredOptions","setFilteredOptions","listRef","searchValue","String","filtered","option","optionLabel","labelString","displayValue","_event$target","onMouseDown","maxHeight","this","s","u","c","l","$","M","weekdays","months","ordinal","utcOffset","floor","date","year","month","clone","ceil","D","Q","g","S","_","O","locale","$L","utc","$u","$x","$offset","parse","$d","Date","NaN","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","getTime","toDate","apply","$locale","weekStart","$set","daysInMonth","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","exports","module","define","amd","globalThis","dayjs","DatePicker","_textFieldProps$style","_textFieldProps$Input","_textFieldProps$Input2","_ref$clearable","clearable","slotProps","onOpenChange","selectedDate","setSelectedDate","calendarRef","yearPickerRef","currentYearButtonRef","setShowYearPicker","textFieldProps","textField","viewMode","setViewMode","_React$useState8","showYearPicker","setTimeout","button","calendarDays","startOfMonth","endOfMonth","startDate","endDate","days","currentDate","getCalendarDays","currentMonth","currentYear","handleDayClick","day","newDate","newOpen","readOnly","isCurrentYear","_Fragment","isCurrentMonth","isToday","monthIndex","Drawer","_PaperProps$style","_PaperProps$style2","_PaperProps$style3","_PaperProps$style4","_ref$anchor","anchor","_ref$open","PaperProps","_ref$transitionDurati","transitionDuration","_ref$keepMounted","keepMounted","ModalProps","SlideProps","drawerRef","handleEscape","_React$useMemo","rootStyles","paperStyles","sxObj","sxPaperStyles","paperPropsStyles","paperSx","anchorStyles","baseStyles","zIndex","parseInt","getPropertyValue","getAnchorStyles","isPermanent","shouldShowBackdrop","shouldShowDrawer","FormControlLabel","control","_ref$labelPlacement","labelPlacement","mergedSx","isLabelStart","isLabelTop","isLabelBottom","controlWithValue","FormLabel","_ref$component","_ref$focused","FormGroup","_ref$row","RadioGroupContext","RadioGroup","contextValue","random","substr","Provider","Radio","checkedProp","onChangeProp","disabledProp","radioGroup","sizeMap","large","radioSize","dotSize","Collapse","_ref$in","inProp","_ref$timeout","timeout","_ref$unmountOnExit","unmountOnExit","_ref$orientation","orientation","_ref$collapsedSize","collapsedSize","mounted","setMounted","setHeight","contentRef","isInitialMount","timer","clearTimeout","currentSize","requestAnimationFrame","actualSize","transitionTimingFunction","DialogContentText","Container","_ref$maxWidth","_ref$fixed","fixed","_ref$disableGutters","disableGutters","maxWidthValue","maxWidthMap","xs","md","xl","getMaxWidth","Divider","_ref$style","_ref$flexItem","flexItem","_ref$light","light","_ref$textAlign","isInset","isMiddle","styleMarginLeft","styleMarginRight","leftMargin","rightMargin","borderTopWidth","borderTopStyle","dividerStyles","borderLeftWidth","borderLeftStyle","parseMargin","parseFloat","totalMargin","boxSizing","getDividerStyles","_style$marginLeft","_style$marginRight","Avatar","_style$borderRadius2","_style$backgroundColo2","src","alt","sizes","imgProps","defaultStyles","flexShrink","userSelect","_style$borderRadius","_style$backgroundColo","styleWithoutColor","mergedStylesWithSrc","objectFit","mergedStyles","Stack","_ref$direction","_ref$spacing","flexWrap","gapValue","directionClass","wrapClass","justifyContentClass","alignItemsClass","mergedStyle","InputAdornment","_ref$position","_ref$disablePointerEv","disablePointerEvents","_ref$disableTypograph","disableTypography","Paper","elevationShadow","AppBar","positionStyles","Toolbar","Menu","anchorEl","anchorOrigin","transformOrigin","setPosition","useLayoutEffect","rafId","isMounted","isConnected","anchorRect","parentElement","relativeTop","relativeLeft","cancelAnimationFrame","matchMedia","matches","_ref4$disabled","menuItemPadding","MenuItemIcon","MenuItemText","hasSecondary","TableContext","verticalDivider","Table","_ref$border","_ref$verticalDivider","borderCollapse","borderSpacing","TableContainer","TableHead","TableBody","TableRow","hover","TableCell","_ref6$align","_ref6$padding","_ref6$size","scope","colSpan","rowSpan","paddingMap","none","checkbox","normal","sizeStyles","ToggleButton","_ref$selected","baseStyle","selectedStyle","buttonStyle","ToggleButtonGroup","_ref3$exclusive","exclusive","_ref3$size","handleToggleButtonChange","buttonValue","splice","childrenWithProps","useMediaQuery","query","_useState2","setMatches","mediaQueryString","mediaQuery","handler","Grid","_ref$container","_ref$item","isSm","isMd","isLg","isXl","breakpointValue","spacingPx","getContainerStyles","percentage","flexBasis","flexGrow","getItemStyles","getItemPaddingStyles","InputLabel","Slider","_sxStyles$rail","_sxStyles$rail2","_sxStyles$rail3","_sxStyles$rail4","_sxStyles$rail5","_sxStyles$rail6","_sxStyles$rail7","_sxStyles$track2","_sxStyles$track3","_sxStyles$track4","_sxStyles$track5","_sxStyles$track6","_sxStyles$track7","_sxStyles$track8","_sxStyles$thumb2","_sxStyles$thumb3","_sxStyles$thumb4","_sxStyles$thumb5","_sxStyles$thumb6","_sxStyles$thumb7","_sxStyles$thumb8","_sxStyles$thumb9","_sxStyles$thumb0","_sxStyles$thumb1","_sxStyles$thumb10","_sxStyles$thumb11","onChangeCommitted","_ref$min","_ref$max","_ref$step","step","ariaValueText","containerRef","draggingRef","localValue","setLocalValue","rail","track","thumb","_sxStyles$track","_sxStyles$thumb","percent","handleMouseMove","handleMove","handleTouchMove","touches","handleMouseUp","handleTouchEnd","clientY","newPercent","clampedValue","clientX","railStyle","trackStyle","thumbStyle","sliderId","touchAction","onTouchStart","stepSize","_sxStyles$thumb12","_sxStyles$thumb13","Box","bgcolor","displayClass","flexDirectionClass","flexDirection","_ref$fullScreen","fullScreen","ariaDescribedBy","dialogId","actualMode","paperSxStyles","maxWidthClass","popsStyles","drawerStyles","paperPropsStyle","paperPropsClassName","containerClass","dialogContent","createPortal"],"mappings":"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","x_google_ignoreList":[0,1,4,13,14,15,16,17,18,19,20,21,22,23,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.js","../src/components/card.jsx","../../../node_modules/class-variance-authority/dist/index.mjs","../src/components/button.jsx","../src/common/adaptive-theme-provider.js","../src/global-state.js","../src/components/dialog.jsx","../src/components/icon-button.jsx","../src/components/typography.jsx","../src/components/chip.jsx","../src/components/text-field.jsx","../../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/check.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../../node_modules/lucide-react/dist/esm/icons/info.js","../../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/select.jsx","../src/components/checkbox.jsx","../src/components/list.jsx","../src/components/accordion.jsx","../src/components/alert.jsx","../src/components/tabs.jsx","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/tippy.js/dist/tippy.esm.js","../src/components/tooltip.jsx","../../../node_modules/dayjs/dayjs.min.js","../src/components/autocomplete.jsx","../src/components/date-picker.jsx","../src/components/drawer.jsx","../src/components/form-control-label.jsx","../src/components/form-label.jsx","../src/components/form-group.jsx","../src/components/radio-group.jsx","../src/components/radio.jsx","../src/components/collapse.jsx","../src/components/dialog-content-text.jsx","../src/components/container.jsx","../src/components/divider.jsx","../src/components/avatar.jsx","../src/components/stack.jsx","../src/components/input-adornment.jsx","../src/components/paper.jsx","../src/components/app-bar.jsx","../src/components/toolbar.jsx","../src/components/menu.jsx","../src/components/table.jsx","../src/components/toggle-button.jsx","../src/lib/useMediaQuery.js","../src/components/grid.jsx","../src/components/input-label.jsx","../src/components/slider.jsx","../src/components/box.jsx"],"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 React from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n\n// Convert MUI spacing unit to pixels (MUI spacing unit = 8px)\nexport function spacingToPx(value) {\n if (typeof value === \"number\") {\n return `${value * 8}px`;\n }\n return value;\n}\n\n// Helper function to convert MUI sx prop to style object\nexport const convertSxToStyle = (sx) => {\n if (!sx) return {};\n const style = {};\n for (const key in sx) {\n if (Object.prototype.hasOwnProperty.call(sx, key)) {\n const value = sx[key];\n // Handle spacing values\n if (\n typeof value === \"number\" &&\n [\n \"p\",\n \"px\",\n \"py\",\n \"pt\",\n \"pb\",\n \"pl\",\n \"pr\",\n \"m\",\n \"mx\",\n \"my\",\n \"mt\",\n \"mb\",\n \"ml\",\n \"mr\",\n \"gap\",\n ].includes(key)\n ) {\n const cssProp = {\n p: \"padding\",\n px: [\"paddingLeft\", \"paddingRight\"],\n py: [\"paddingTop\", \"paddingBottom\"],\n pt: \"paddingTop\",\n pb: \"paddingBottom\",\n pl: \"paddingLeft\",\n pr: \"paddingRight\",\n m: \"margin\",\n mx: [\"marginLeft\", \"marginRight\"],\n my: [\"marginTop\", \"marginBottom\"],\n mt: \"marginTop\",\n mb: \"marginBottom\",\n ml: \"marginLeft\",\n mr: \"marginRight\",\n gap: \"gap\",\n }[key];\n\n if (Array.isArray(cssProp)) {\n cssProp.forEach((prop) => (style[prop] = spacingToPx(value)));\n } else {\n style[cssProp] = spacingToPx(value);\n }\n } else if (key === \"bgcolor\") {\n // Handle bgcolor - convert theme paths to CSS variables\n if (typeof value === \"string\" && value.includes(\".\")) {\n const bgcolorMap = {\n \"background.paper\": \"hsl(var(--card))\",\n \"background.default\": \"hsl(var(--background))\",\n \"background.card\": \"hsl(var(--card))\",\n };\n style.backgroundColor = bgcolorMap[value] || value;\n } else {\n style.backgroundColor = value;\n }\n } else {\n style[key] = value;\n }\n }\n }\n return style;\n};\n\n// Hook to detect dark mode by checking document class\nexport const useIsDarkMode = () => {\n const [isDark, setIsDark] = React.useState(() => {\n if (typeof document !== \"undefined\") {\n return document.documentElement.classList.contains(\"dark\");\n }\n return false;\n });\n\n React.useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return isDark ? \"dark\" : \"light\";\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Card = React.forwardRef(\n ({ className, elevation = 1, variant = \"elevation\", square = false, style, ...props }, ref) => {\n // Get elevation shadow (Material Design elevation system)\n const getElevationShadow = () => {\n // If variant is \"outlined\", no shadow\n if (variant === \"outlined\") {\n return {\n boxShadow: \"none\",\n border: \"1px solid hsl(var(--border))\",\n };\n }\n \n // elevation variant (default)\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range and get shadow\n const clampedElevation = Math.max(0, Math.min(24, Math.round(elevation)));\n return { boxShadow: shadows[clampedElevation] || shadows[1] };\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-card text-card-foreground\",\n !square && \"rounded-lg\",\n variant === \"outlined\" ? \"border\" : \"border\",\n elevation === 0 && variant === \"elevation\" && \"shadow-none\",\n className\n )}\n style={{\n ...getElevationShadow(),\n ...style,\n }}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n ))\n);\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n ))\n);\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n ))\n);\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.memo(\n React.forwardRef(({ className, ...props }, ref) => {\n return <div ref={ref} className={cn(\"p-6\", className)} {...props} />;\n })\n);\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.memo(\n React.forwardRef(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n ))\n);\nCardFooter.displayName = \"CardFooter\";\n\nconst CardActionArea = React.forwardRef(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={0}\n className={cn(\n \"cursor-pointer rounded-lg transition-colors hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n className\n )}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (props.onClick) {\n props.onClick(e);\n }\n }\n }}\n {...props}\n />\n );\n});\nCardActionArea.displayName = \"CardActionArea\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n CardActionArea,\n};\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\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium 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\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst Button = React.forwardRef(\n (\n {\n className,\n variant,\n size,\n startIcon,\n endIcon,\n children,\n style,\n color,\n fullWidth = false,\n disabled = false,\n href,\n component,\n ...props\n },\n ref\n ) => {\n // Map MUI variants to shadcn variants\n const mappedVariant =\n variant === \"outlined\"\n ? \"outline\"\n : variant === \"contained\"\n ? \"default\"\n : variant === \"text\"\n ? \"ghost\"\n : color === \"error\"\n ? \"destructive\"\n : variant;\n\n // Map MUI size to shadcn size\n const mappedSize =\n size === \"small\"\n ? \"sm\"\n : size === \"medium\"\n ? \"default\"\n : size === \"large\"\n ? \"lg\"\n : size || \"default\";\n\n const Component = component || (href ? \"a\" : \"button\");\n const buttonProps = href\n ? { href, ...props }\n : { type: \"button\", disabled, ...props };\n\n return (\n <Component\n className={cn(\n buttonVariants({ variant: mappedVariant, size: mappedSize }),\n fullWidth && \"w-full\",\n className\n )}\n ref={ref}\n style={style}\n {...buttonProps}\n >\n {startIcon && (\n <span className=\"mr-2 inline-flex items-center\">{startIcon}</span>\n )}\n {children}\n {endIcon && (\n <span className=\"ml-2 inline-flex items-center\">{endIcon}</span>\n )}\n </Component>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","// Simplified version for examples project\nimport React from \"react\";\n\nexport const getBackground = (backgroundType, isDark) => {\n // Return null for solid backgrounds, or gradient strings for gradient backgrounds\n // This is a simplified version - in the real project this would handle theme logic\n return null;\n};\n\n// Hook for getting component background color\nexport const useComponentBackgroundColor = () => {\n // Simplified version - return a function that accepts a default color\n // In the real project, this would use theme context or state management\n return (defaultColor) => {\n // Return the default color passed in, or fallback to background\n return defaultColor || \"hsl(var(--background))\";\n };\n};\n\n","// Simplified version for examples project\n// In the real project, this would use Recoil for state management\n// For examples, we'll use a simple React context or just return default values\n\nimport React from \"react\";\n\n// Create a simple context for background type\nconst BackgroundTypeContext = React.createContext(\"solid\");\n\nexport const BackgroundTypeProvider = ({ children, value = \"solid\" }) => {\n return (\n <BackgroundTypeContext.Provider value={value}>\n {children}\n </BackgroundTypeContext.Provider>\n );\n};\n\n// Mock Recoil atom for background type\nexport const backgroundTypeState = {\n key: \"backgroundType\",\n default: \"solid\",\n};\n\n// Mock useRecoilValue hook\nexport const useRecoilValue = (atom) => {\n const context = React.useContext(BackgroundTypeContext);\n return context || atom.default || \"solid\";\n};\n\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn, spacingToPx, useIsDarkMode } from \"../lib/utils\";\nimport { getBackground } from \"../common/adaptive-theme-provider\";\nimport { useRecoilValue, backgroundTypeState } from \"../global-state\";\n\nconst Dialog = ({\n open,\n onClose,\n children,\n variant,\n maxWidth,\n fullWidth,\n fullScreen = false,\n PaperProps,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}) => {\n const dialogId = React.useId();\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n\n // All hooks must be called before any early returns\n // This ensures hooks are called in the same order on every render\n // Merge sx styles from PaperProps if provided\n const paperSxStyles = React.useMemo(() => {\n if (!PaperProps?.sx) return {};\n const sxObj =\n typeof PaperProps.sx === \"function\"\n ? PaperProps.sx({}) // Empty theme object for compatibility\n : PaperProps.sx;\n return sxObj;\n }, [PaperProps?.sx]);\n\n if (!open) return null;\n\n const maxWidthClass =\n {\n xs: \"max-w-xs\",\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n }[maxWidth] || \"max-w-lg\";\n\n // Get pops variant styles from theme\n const popsStyles =\n variant === \"pops\"\n ? {\n minWidth: \"300px\",\n maxWidth: \"800px\",\n }\n : {};\n\n // Drawer variant styles\n const drawerStyles =\n variant === \"drawer\"\n ? {\n margin: 0,\n maxHeight: \"100vh\",\n height: \"100vh\",\n borderRadius: \"16px 0 0 16px\",\n }\n : {};\n\n // For drawer variant, use background gradient if available, otherwise use standard background\n const paperBg =\n variant === \"drawer\"\n ? getBackground(backgroundType, actualMode === \"dark\")\n : null;\n const isGradient =\n paperBg &&\n typeof paperBg === \"string\" &&\n (paperBg.startsWith(\"linear-gradient\") ||\n paperBg.startsWith(\"radial-gradient\") ||\n paperBg.startsWith(\"conic-gradient\"));\n\n const borderRadius =\n variant === \"pops\"\n ? \"16px\"\n : variant === \"drawer\"\n ? \"16px 0 0 16px\"\n : \"8px\";\n\n // Handle PaperProps (MUI compatibility)\n const paperPropsStyle = PaperProps?.style || {};\n const paperPropsClassName = PaperProps?.className || \"\";\n\n // Determine container alignment based on variant\n const containerClass =\n variant === \"drawer\"\n ? \"flex items-stretch justify-end\"\n : fullScreen\n ? \"flex items-stretch\"\n : \"flex items-center justify-center\";\n\n // Get z-index from CSS variable or use default\n const zIndex =\n variant === \"drawer\"\n ? parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1300\",\n 10\n )\n : parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-modal\"\n ) || \"1300\",\n 10\n );\n\n // Render dialog content using Portal to body to avoid parent container constraints\n const dialogContent = (\n <>\n {/* Backdrop - more opaque for better separation */}\n <div\n className={cn(\n \"fixed inset-0\",\n actualMode === \"dark\" ? \"bg-black/80\" : \"bg-black/60\"\n )}\n style={{\n zIndex: zIndex - 1,\n pointerEvents: \"auto\",\n }}\n onClick={(e) => {\n if (onClose) onClose(e, \"backdropClick\");\n }}\n />\n {/* Dialog content - fully opaque, above backdrop */}\n <div\n className={cn(\"fixed inset-0\", containerClass)}\n style={{\n zIndex: zIndex,\n pointerEvents: \"none\",\n }}\n {...props}\n >\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabelledBy || `${dialogId}-title`}\n aria-describedby={ariaDescribedBy || `${dialogId}-description`}\n className={cn(\n \"relative shadow-2xl\",\n fullScreen || variant === \"drawer\"\n ? \"h-full w-full\"\n : \"w-full max-w-[calc(100%-32px)]\",\n fullScreen || variant === \"drawer\" ? \"\" : \"mx-4\",\n !fullScreen && variant !== \"drawer\" && maxWidthClass,\n fullWidth && !fullScreen && variant !== \"drawer\" && \"max-w-full\",\n variant === \"drawer\" && !isGradient && \"bg-background\",\n !isGradient && variant !== \"drawer\" && \"bg-card\",\n paperPropsClassName\n )}\n style={{\n // Use background for gradients, className for solid colors\n ...(isGradient ? { background: paperBg } : {}),\n borderRadius: fullScreen ? 0 : borderRadius,\n position: \"relative\",\n opacity: 1,\n pointerEvents: \"auto\",\n touchAction: \"none\",\n ...popsStyles,\n ...drawerStyles,\n ...paperSxStyles,\n ...paperPropsStyle,\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n\n // Use Portal to render dialog to body, ensuring it's not constrained by parent containers\n return typeof document !== \"undefined\"\n ? createPortal(dialogContent, document.body)\n : null;\n};\n\nconst DialogContent = React.forwardRef(\n ({ className, children, style, sx, ...props }, ref) => {\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n const bgColor = getBackground(backgroundType, actualMode === \"dark\");\n const isGradient =\n bgColor &&\n typeof bgColor === \"string\" &&\n (bgColor.startsWith(\"linear-gradient\") ||\n bgColor.startsWith(\"radial-gradient\") ||\n bgColor.startsWith(\"conic-gradient\"));\n\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx; // Empty theme object for compatibility\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding class, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"p-6\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"text-left rounded-b-[inherit]\",\n defaultPaddingClass,\n \"p-6\",\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n ...(backgroundColor !== undefined\n ? backgroundColor.startsWith(\"linear-gradient\") ||\n backgroundColor.startsWith(\"radial-gradient\") ||\n backgroundColor.startsWith(\"conic-gradient\")\n ? { background: backgroundColor }\n : { backgroundColor }\n : {}),\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n opacity: 1,\n pointerEvents: \"auto\",\n ...sxStyles,\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = ({ className, ...props }) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left px-6 pt-6\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 px-6 pb-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef(\n ({ className, style, sx, ...props }, ref) => {\n const actualMode = useIsDarkMode();\n const backgroundType = useRecoilValue(backgroundTypeState);\n const bgColor = getBackground(backgroundType, actualMode === \"dark\");\n const isGradient =\n bgColor &&\n typeof bgColor === \"string\" &&\n (bgColor.startsWith(\"linear-gradient\") ||\n bgColor.startsWith(\"radial-gradient\") ||\n bgColor.startsWith(\"conic-gradient\"));\n\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx; // Empty theme object for compatibility\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n // Check if padding is explicitly set (if padding is set, individual paddings should be undefined)\n // If no padding is set at all, use defaults\n const hasAnyPadding =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n return (\n <h2\n ref={ref}\n className={cn(\n \"rounded-t-[inherit]\",\n \"text-lg font-semibold leading-none tracking-tight\",\n \"text-foreground\",\n // DialogTitle is typically used inside DialogHeader which has padding\n // Only add padding if explicitly needed (when used standalone)\n // For normal use, padding is handled by DialogHeader\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n ...(backgroundColor !== undefined\n ? backgroundColor.startsWith(\"linear-gradient\") ||\n backgroundColor.startsWith(\"radial-gradient\") ||\n backgroundColor.startsWith(\"conic-gradient\")\n ? { background: backgroundColor }\n : { backgroundColor }\n : {}),\n // Allow padding override via style prop\n padding: padding,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n ...sxStyles,\n ...restStyle,\n }}\n {...props}\n />\n );\n }\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef(\n ({ className, id, ...props }, ref) => (\n <p\n ref={ref}\n id={id}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nconst DialogActions = ({ className, style, ...props }) => {\n const actualMode = useIsDarkMode();\n\n // Extract padding and gap from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n gap,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n return (\n <div\n className={cn(\n \"flex items-center justify-end rounded-b-[inherit]\",\n className\n )}\n style={{\n // Only set background if explicitly provided, otherwise inherit from parent\n backgroundColor: backgroundColor,\n // If padding is set, let it control all sides; otherwise use individual defaults\n padding: padding,\n paddingLeft:\n paddingLeft !== undefined\n ? paddingLeft\n : padding !== undefined\n ? undefined\n : \"1rem\",\n paddingRight:\n paddingRight !== undefined\n ? paddingRight\n : padding !== undefined\n ? undefined\n : \"1rem\",\n paddingTop:\n paddingTop !== undefined\n ? paddingTop\n : padding !== undefined\n ? undefined\n : \"0.5rem\",\n paddingBottom:\n paddingBottom !== undefined\n ? paddingBottom\n : padding !== undefined\n ? undefined\n : \"1rem\",\n gap: gap !== undefined ? gap : \"0.5rem\",\n opacity: 1,\n ...restStyle,\n }}\n {...props}\n />\n );\n};\nDialogActions.displayName = \"DialogActions\";\n\nexport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogActions,\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { cva } from \"class-variance-authority\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center 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\",\n {\n variants: {\n variant: {\n default: \"hover:bg-accent hover:text-accent-foreground\",\n destructive: \"hover:bg-destructive hover:text-destructive-foreground\",\n outline:\n \"border border-input hover:bg-accent hover:text-accent-foreground\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 w-10\",\n sm: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst IconButton = React.forwardRef(\n (\n {\n className,\n variant,\n size = \"default\",\n style,\n color,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n ref\n ) => {\n // Get color class based on color prop\n const getColorClass = () => {\n if (color === \"primary\") return \"text-primary\";\n if (color === \"secondary\") return \"text-secondary-foreground\";\n if (color === \"error\") return \"text-destructive\";\n if (color === \"inherit\") return \"text-inherit\";\n return \"text-muted-foreground\"; // Default\n };\n\n // Get icon size based on button size\n const getIconSize = () => {\n if (size === \"sm\") return 16;\n if (size === \"lg\") return 24;\n return 20; // default\n };\n\n // Clone children to apply size if it's a React element (like lucide-react icons)\n const childrenWithSize = React.useMemo(() => {\n if (React.isValidElement(children) && typeof children.type !== \"string\") {\n // Check if the element has a size prop (like lucide-react icons)\n if (children.props.size === undefined) {\n return React.cloneElement(children, {\n size: getIconSize(),\n });\n }\n }\n return children;\n }, [children, size]);\n\n // Warn if no aria-label is provided (accessibility best practice)\n React.useEffect(() => {\n if (!ariaLabel && !props[\"aria-labelledby\"]) {\n console.warn(\n \"IconButton: Missing aria-label or aria-labelledby. Icon-only buttons should have accessible labels.\"\n );\n }\n }, [ariaLabel, props[\"aria-labelledby\"]]);\n\n return (\n <button\n className={cn(\n iconButtonVariants({ variant, size }),\n \"rounded-2xl\",\n getColorClass(),\n className\n )}\n ref={ref}\n style={style}\n aria-label={ariaLabel}\n {...props}\n >\n {childrenWithSize}\n </button>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst typographyVariants = cva(\"\", {\n variants: {\n variant: {\n h1: \"scroll-m-20 text-4xl font-extralight tracking-tight lg:text-5xl\",\n h2: \"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\",\n h3: \"scroll-m-20 text-2xl font-semibold tracking-tight\",\n h4: \"scroll-m-20 text-xl font-semibold tracking-tight\",\n h5: \"scroll-m-20 text-lg font-semibold tracking-tight\",\n h6: \"scroll-m-20 text-base font-semibold tracking-tight\",\n p: \"leading-7 [&:not(:first-child)]:mt-6\",\n blockquote: \"mt-6 border-l-2 pl-6 italic\",\n list: \"my-6 ml-6 list-disc [&>li]:mt-2\",\n inlineCode:\n \"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold\",\n lead: \"text-xl text-muted-foreground\",\n largeText: \"text-lg font-semibold\",\n smallText: \"text-sm font-medium leading-none\",\n mutedText: \"text-sm text-muted-foreground\",\n // MUI compatibility variants\n body1: \"text-base leading-normal\",\n body2: \"text-sm leading-normal\",\n subtitle1: \"text-base font-normal leading-normal\",\n subtitle2: \"text-sm font-medium leading-normal\",\n caption: \"text-xs leading-normal\",\n overline: \"text-xs font-normal uppercase leading-normal tracking-wide\",\n },\n color: {\n default: \"text-foreground\",\n primary: \"text-primary\",\n secondary: \"text-secondary-foreground\",\n muted: \"text-muted-foreground\",\n destructive: \"text-destructive\",\n error: \"text-destructive\",\n inherit: \"text-inherit\",\n },\n },\n defaultVariants: {\n variant: \"body1\",\n color: \"default\",\n },\n});\n\nconst Typography = React.forwardRef(\n (\n { className, variant = \"body1\", component, style, color, ...props },\n ref\n ) => {\n // Map MUI color props to shadcn colors\n const mappedColor =\n color === \"text.secondary\" || color === \"textSecondary\"\n ? \"muted\"\n : color === \"text.primary\" || color === \"textPrimary\"\n ? \"default\"\n : color;\n\n const Component = component || (variant.startsWith(\"h\") ? variant : \"p\");\n\n return (\n <Component\n ref={ref}\n className={cn(\n typographyVariants({ variant, color: mappedColor }),\n className\n )}\n style={style}\n {...props}\n />\n );\n }\n);\nTypography.displayName = \"Typography\";\n\nexport { Typography, typographyVariants };\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst chipVariants = cva(\n \"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors\",\n {\n variants: {\n variant: {\n default: \"text-white\",\n secondary: \"bg-secondary text-secondary-foreground\",\n outline: \"border border-input bg-background hover:bg-accent\",\n outlined: \"border border-input bg-background hover:bg-accent\",\n },\n size: {\n small: \"h-6 text-xs px-2\",\n medium: \"h-7 text-sm px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n }\n);\n\nconst Chip = React.forwardRef(\n (\n {\n className,\n variant,\n size,\n label,\n onClick,\n onDelete,\n style,\n icon,\n color,\n ...props\n },\n ref\n ) => {\n const Component = onClick || onDelete ? \"button\" : \"span\";\n\n // Get color classes based on color prop\n const getColorClasses = () => {\n if (color === \"primary\")\n return \"bg-primary text-primary-foreground hover:bg-primary/90\";\n if (color === \"secondary\")\n return \"bg-secondary text-secondary-foreground hover:bg-secondary/80\";\n if (color === \"error\" || color === \"destructive\")\n return \"bg-destructive text-destructive-foreground hover:bg-destructive/90\";\n if (color === \"success\")\n return \"bg-success text-success-foreground hover:bg-success/90\";\n if (color === \"info\")\n return \"bg-info text-info-foreground hover:bg-info/90\";\n if (color === \"warning\")\n return \"bg-warning text-warning-foreground hover:bg-warning/90\";\n return \"bg-primary text-primary-foreground hover:bg-primary/90\"; // Default\n };\n\n // Get border class for outlined variant\n const getBorderClass = () => {\n if (variant === \"outlined\" || variant === \"outline\") {\n if (color === \"primary\") return \"border-primary\";\n if (color === \"secondary\") return \"border-secondary\";\n if (color === \"error\" || color === \"destructive\")\n return \"border-destructive\";\n return \"border-border\"; // Default border\n }\n return \"\";\n };\n\n return (\n <Component\n ref={ref}\n className={cn(\n chipVariants({ variant, size }),\n variant !== \"outline\" && variant !== \"outlined\" && getColorClasses(),\n getBorderClass(),\n (onClick || onDelete) && \"cursor-pointer\",\n className\n )}\n style={style}\n onClick={onClick}\n {...props}\n >\n {icon && React.isValidElement(icon) && (\n <span\n className=\"flex items-center justify-center flex-shrink-0 mr-1\"\n style={{\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n }}\n >\n {React.cloneElement(icon, {\n style: {\n ...(icon.props?.style || {}),\n width: icon.props?.style?.width || \"16px\",\n height: icon.props?.style?.height || \"16px\",\n fontSize: icon.props?.style?.fontSize || \"16px\",\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sx: icon.props?.sx,\n })}\n </span>\n )}\n <span\n className=\"flex items-center\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n maxWidth: \"100%\",\n lineHeight: 1,\n }}\n >\n {label}\n </span>\n {onDelete && (\n <span className=\"ml-1 cursor-pointer\" onClick={onDelete}>\n ×\n </span>\n )}\n </Component>\n );\n }\n);\nChip.displayName = \"Chip\";\n\nexport { Chip };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { useComponentBackgroundColor } from \"../common/adaptive-theme-provider\";\n\nconst TextField = React.forwardRef(\n (\n {\n className,\n fullWidth = false,\n variant = \"outlined\",\n size = \"small\",\n InputProps,\n label,\n error = false,\n helperText,\n placeholder,\n multiline = false,\n rows,\n maxRows,\n disabled = false,\n value,\n floatingLabel = false,\n required = false,\n ...props\n },\n ref\n ) => {\n const getComponentBgColor = useComponentBackgroundColor();\n const [focused, setFocused] = React.useState(false);\n const inputRef = React.useRef(null);\n const combinedRef = React.useCallback(\n (node) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n const hasValue = value !== undefined && value !== null && value !== \"\";\n const shouldShrinkLabel = floatingLabel && (focused || hasValue);\n\n const sizeClasses = {\n small: \"text-sm\",\n medium: \"text-base\",\n };\n \n const sizePadding = {\n small: \"px-2.5 py-1.5\",\n medium: \"px-3 py-2\",\n };\n\n // Get background color based on variant\n const getVariantBackgroundColor = () => {\n if (InputProps?.style?.backgroundColor !== undefined) {\n return InputProps.style.backgroundColor;\n }\n if (props.style?.backgroundColor !== undefined) {\n return props.style.backgroundColor;\n }\n \n // Variant-specific background colors\n if (variant === \"filled\") {\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"hsl(var(--muted) / 0.3)\"; // Light gray background for filled\n } else if (variant === \"standard\") {\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"hsl(var(--muted) / 0.5)\"; // More prominent gray for standard\n } else {\n // outlined (default)\n return focused\n ? getComponentBgColor(\"hsl(var(--input))\")\n : \"transparent\";\n }\n };\n\n const inputBackgroundColor = getVariantBackgroundColor();\n\n const {\n backgroundColor: propsBgColor,\n height: propsHeight,\n ...restPropsStyle\n } = props.style || {};\n\n const finalBackgroundColor =\n InputProps?.style?.backgroundColor !== undefined\n ? InputProps.style.backgroundColor\n : inputBackgroundColor;\n\n const inputHeight = InputProps?.style?.height || propsHeight;\n\n // Remove style and InputProps from props to avoid conflicts\n const {\n style: propsStyle,\n InputProps: propsInputProps,\n ...restProps\n } = props;\n\n // Get border style based on variant\n const getVariantBorderStyle = () => {\n if (variant === \"standard\") {\n // Standard: only bottom border\n return {\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: error\n ? \"2px solid hsl(var(--destructive))\"\n : focused\n ? \"2px solid hsl(var(--ring))\"\n : \"2px solid hsl(var(--input))\",\n borderRadius: \"0\",\n };\n } else {\n // outlined and filled: full border\n return {\n borderColor: error\n ? \"hsl(var(--destructive))\"\n : focused\n ? \"hsl(var(--ring))\"\n : \"hsl(var(--input))\",\n };\n }\n };\n\n // Build final style object - backgroundColor must come from finalBackgroundColor\n // backgroundColor must be set explicitly to ensure it's not overridden\n const finalStyle = {\n ...getVariantBorderStyle(),\n color: \"hsl(var(--foreground))\",\n ...(inputHeight && { height: inputHeight }),\n ...restPropsStyle,\n // Ensure backgroundColor is set last to override anything from restPropsStyle\n backgroundColor: finalBackgroundColor,\n };\n\n const InputComponent = multiline ? \"textarea\" : \"input\";\n // Only show placeholder when there's no value\n const shouldShowPlaceholder =\n !hasValue && (placeholder || restProps.placeholder);\n \n // Get type from props, default to \"text\" for input, undefined for textarea\n const inputType = multiline ? undefined : (restProps.type || \"text\");\n \n const inputProps = {\n ...restProps,\n type: inputType,\n value,\n placeholder: shouldShowPlaceholder\n ? placeholder || restProps.placeholder\n : undefined,\n disabled,\n rows: multiline ? rows : undefined,\n };\n\n if (floatingLabel) {\n // Floating label mode: NO label displayed - user should use InputLabel component separately\n return (\n <div className={cn(fullWidth && \"w-full\", className)}>\n <div className=\"relative\">\n <InputComponent\n ref={combinedRef}\n type={inputType}\n className={cn(\n \"w-full transition-all\",\n variant === \"standard\" ? \"\" : \"rounded-2xl border\",\n sizeClasses[size],\n sizePadding[size],\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n InputProps?.startAdornment && \"pl-10\",\n InputProps?.endAdornment && \"pr-10\",\n multiline && \"resize-none\"\n )}\n style={{\n ...restPropsStyle,\n ...getVariantBorderStyle(),\n color: \"hsl(var(--foreground))\",\n backgroundColor: finalBackgroundColor,\n ...(inputHeight && {\n height: inputHeight,\n lineHeight: inputHeight,\n }),\n }}\n onFocus={(e) => {\n setFocused(true);\n if (props.onFocus) props.onFocus(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n if (props.onBlur) props.onBlur(e);\n }}\n {...inputProps}\n />\n {InputProps?.startAdornment && (\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center z-10\">\n {InputProps.startAdornment}\n </div>\n )}\n {InputProps?.endAdornment && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center z-10\">\n {InputProps.endAdornment}\n </div>\n )}\n </div>\n {helperText && (\n <div\n className=\"text-xs mt-1\"\n style={{\n color: error\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n }}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n\n // Non-floating label version\n return (\n <div className={cn(fullWidth && \"w-full\", className)}>\n {label && (\n <label className=\"block text-sm font-medium mb-2 text-foreground\">\n {label}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </label>\n )}\n <div className=\"relative w-full\">\n <InputComponent\n ref={combinedRef}\n type={inputType}\n className={cn(\n \"w-full transition-colors\",\n variant === \"standard\" ? \"\" : \"rounded-2xl border\",\n sizeClasses[size],\n sizePadding[size],\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n InputProps?.startAdornment && \"pl-10\",\n InputProps?.endAdornment && \"pr-10\",\n multiline && \"resize-none\"\n )}\n style={finalStyle}\n onFocus={(e) => {\n setFocused(true);\n if (props.onFocus) props.onFocus(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n if (props.onBlur) props.onBlur(e);\n }}\n {...inputProps}\n />\n {InputProps?.startAdornment && (\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center\">\n {InputProps.startAdornment}\n </div>\n )}\n {InputProps?.endAdornment && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center\">\n {InputProps.endAdornment}\n </div>\n )}\n </div>\n {helperText && (\n <div\n className={cn(\n \"text-xs mt-1\",\n error ? \"text-destructive\" : \"text-muted-foreground\"\n )}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n);\nTextField.displayName = \"TextField\";\n\nexport { TextField };\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import * as React from \"react\";\nimport {\n cn,\n spacingToPx,\n convertSxToStyle,\n useIsDarkMode,\n} from \"../lib/utils\";\nimport { useComponentBackgroundColor } from \"../common/adaptive-theme-provider\";\nimport { ChevronDown } from \"lucide-react\";\n\nconst Select = React.forwardRef(\n (\n {\n className,\n children,\n value,\n onChange,\n size = \"small\",\n label,\n error = false,\n helperText,\n disabled = false,\n displayEmpty = false,\n native = false,\n renderValue,\n startAdornment,\n endAdornment,\n multiple = false,\n sx,\n style,\n ...props\n },\n ref\n ) => {\n const getComponentBgColor = useComponentBackgroundColor();\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n const [focused, setFocused] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n const [open, setOpen] = React.useState(false);\n const selectRef = React.useRef(null);\n const menuRef = React.useRef(null);\n const selectId = React.useId();\n\n React.useImperativeHandle(ref, () => selectRef.current);\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return convertSxToStyle(sxObj, {});\n }, [sx]);\n\n const sizeClasses = {\n small: \"h-9 text-sm\",\n medium: \"h-10\",\n };\n\n const isMultiple = multiple && Array.isArray(value);\n const selectedValues = isMultiple ? value : [value];\n\n const selectedOption = React.useMemo(() => {\n if (!children) return \"\";\n if (isMultiple) {\n return \"\"; // For multiple, always use renderValue\n }\n const childrenArray = React.Children.toArray(children);\n const selected = childrenArray.find(\n (child) => React.isValidElement(child) && child.props.value === value\n );\n return selected && React.isValidElement(selected)\n ? selected.props.children\n : \"\";\n }, [children, value, isMultiple]);\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event) => {\n if (\n menuRef.current &&\n !menuRef.current.contains(event.target) &&\n selectRef.current &&\n !selectRef.current.contains(event.target)\n ) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [open]);\n\n const handleOptionClick = (optionValue) => {\n if (onChange) {\n if (isMultiple) {\n const currentValues = Array.isArray(value) ? value : [];\n const newValues = currentValues.includes(optionValue)\n ? currentValues.filter((v) => v !== optionValue)\n : [...currentValues, optionValue];\n onChange({ target: { value: newValues } });\n } else {\n onChange({ target: { value: optionValue } });\n setOpen(false);\n }\n }\n };\n\n return (\n <div className=\"relative w-full\" style={{ overflow: \"visible\" }}>\n {label && (\n <label className=\"block text-sm font-medium mb-1 text-foreground\">\n {label}\n </label>\n )}\n <button\n ref={selectRef}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={label || \"Select an option\"}\n aria-controls={open ? `${selectId}-listbox` : undefined}\n onClick={() => !disabled && setOpen(!open)}\n disabled={disabled}\n className={cn(\n \"w-full rounded-3xl border transition-colors flex items-center\",\n sizeClasses[size],\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n style={{\n borderColor: error\n ? \"hsl(var(--destructive))\"\n : focused || open\n ? \"hsl(var(--primary))\"\n : hovered\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--input))\",\n backgroundColor:\n focused || open\n ? getComponentBgColor(\"hsl(var(--input))\")\n : hovered\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n textAlign: \"left\",\n fontWeight: \"normal\",\n // Use consistent padding: 14px (0.875rem) horizontal, 6px (0.375rem) vertical\n paddingLeft: startAdornment ? \"8px\" : \"14px\",\n paddingRight: endAdornment ? \"8px\" : \"14px\",\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n // If borderRadius is provided in props.style, use it; otherwise let Tailwind's rounded-3xl class handle it\n ...(style?.borderRadius !== undefined\n ? { borderRadius: style.borderRadius }\n : {}),\n ...sxStyles,\n ...Object.fromEntries(\n Object.entries(style || {}).filter(\n ([key]) => key !== \"borderRadius\"\n )\n ),\n }}\n onFocus={() => !disabled && setFocused(true)}\n onBlur={() => setFocused(false)}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {startAdornment}\n <span style={{ flex: 1, textAlign: \"left\" }}>\n {renderValue\n ? renderValue(value)\n : selectedOption || (displayEmpty ? \"\" : \"Select...\")}\n </span>\n {endAdornment || (\n <ChevronDown\n size={16}\n className={cn(\n \"transition-transform text-foreground\",\n open && \"rotate-180\"\n )}\n />\n )}\n </button>\n\n {open && (\n <div\n ref={menuRef}\n id={`${selectId}-listbox`}\n role=\"listbox\"\n aria-label={label || \"Options\"}\n className=\"absolute z-50 w-full mt-1 rounded-lg shadow-lg\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n boxShadow: isDark\n ? \"0px 4px 12px rgba(0, 0, 0, 0.4), 0px 0px 0px 1px rgba(255, 255, 255, 0.1)\"\n : \"0px 4px 12px rgba(0, 0, 0, 0.15)\",\n border: isDark\n ? \"1px solid rgba(255, 255, 255, 0.1)\"\n : \"1px solid hsl(var(--border))\",\n borderRadius: \"8px\",\n }}\n >\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return null;\n const isSelected = isMultiple\n ? selectedValues.includes(child.props.value)\n : child.props.value === value;\n const menuBgColor = \"hsl(var(--card))\";\n\n return (\n <div\n key={child.props.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => handleOptionClick(child.props.value)}\n className=\"cursor-pointer transition-colors focus:outline-none focus:bg-accent\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : menuBgColor,\n color: \"hsl(var(--foreground))\",\n paddingLeft: \"0.875rem\",\n paddingRight: \"0.875rem\",\n paddingTop: \"0.5rem\",\n paddingBottom: \"0.5rem\",\n fontSize: \"0.875rem\",\n fontWeight: \"normal\",\n textAlign: \"left\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleOptionClick(child.props.value);\n }\n }}\n tabIndex={0}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor = menuBgColor;\n } else {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n >\n {child.props.children}\n </div>\n );\n })}\n </div>\n )}\n {helperText && (\n <div\n className=\"text-xs mt-1\"\n style={{\n color: error\n ? \"hsl(var(--destructive))\"\n : \"hsl(var(--muted-foreground))\",\n }}\n >\n {helperText}\n </div>\n )}\n </div>\n );\n }\n);\nSelect.displayName = \"Select\";\n\nconst MenuItem = React.forwardRef(\n ({ className, value, children, ...props }, ref) => {\n return null;\n }\n);\nMenuItem.displayName = \"MenuItem\";\n\nconst FormControl = React.forwardRef(\n ({ className, fullWidth = false, size, children, style, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(fullWidth && \"w-full\", className)}\n style={{\n position: \"relative\",\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nFormControl.displayName = \"FormControl\";\n\nexport { Select, MenuItem, FormControl };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Check } from \"lucide-react\";\n\nconst Checkbox = React.forwardRef(\n (\n {\n className,\n checked,\n onChange,\n disabled,\n style,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n return (\n <label\n className={cn(\n \"relative inline-flex items-center justify-center cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n style={style}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n className=\"sr-only\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n {...props}\n />\n <div\n className={cn(\n \"flex items-center justify-center transition-colors w-5 h-5 border-2 rounded\",\n checked\n ? \"bg-primary border-primary\"\n : hovered && !disabled\n ? \"border-primary\"\n : \"border-input bg-transparent\",\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n aria-hidden=\"true\"\n >\n {checked && <Check size={14} className=\"text-primary-foreground\" />}\n </div>\n </label>\n );\n }\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Typography } from \"./typography\";\n\nconst List = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"w-full\", className)}\n style={{\n padding: 0,\n margin: 0,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nList.displayName = \"List\";\n\nconst ListItem = React.forwardRef(\n (\n {\n className,\n style,\n alignItems = \"flex-start\",\n disablePadding,\n dense,\n children,\n ...props\n },\n ref\n ) => {\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // If disablePadding is true, don't apply default padding\n // If dense is true, use smaller padding\n let defaultPaddingClass = \"\";\n if (!disablePadding && !hasPaddingInStyle) {\n defaultPaddingClass = dense ? \"py-2 px-8\" : \"py-4 px-8\";\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", defaultPaddingClass, className)}\n style={{\n alignItems: alignItems,\n padding: disablePadding ? 0 : padding,\n paddingTop: disablePadding ? 0 : paddingTop,\n paddingBottom: disablePadding ? 0 : paddingBottom,\n paddingLeft: disablePadding ? 0 : paddingLeft,\n paddingRight: disablePadding ? 0 : paddingRight,\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItem.displayName = \"ListItem\";\n\nconst ListItemIcon = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n // Extract margin and color from style to allow override\n const { marginRight, minWidth, color, ...restStyle } = style || {};\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: minWidth !== undefined ? minWidth : \"auto\",\n marginRight: marginRight !== undefined ? marginRight : \"1rem\",\n ...(color !== undefined && { color }),\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemIcon.displayName = \"ListItemIcon\";\n\nconst ListItemText = React.forwardRef(\n ({ className, style, primary, secondary, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n style={{\n flex: 1,\n margin: 0,\n ...style,\n }}\n {...props}\n >\n {primary && (\n <div className={cn(secondary && \"mb-2\")}>\n {React.isValidElement(primary) ? (\n primary\n ) : (\n <Typography variant=\"body1\" color=\"default\">\n {primary}\n </Typography>\n )}\n </div>\n )}\n {secondary && (\n <div>\n {React.isValidElement(secondary) ? (\n secondary\n ) : (\n <Typography variant=\"body2\" color=\"muted\">\n {secondary}\n </Typography>\n )}\n </div>\n )}\n {children}\n </div>\n );\n }\n);\nListItemText.displayName = \"ListItemText\";\n\nconst ListItemButton = React.forwardRef(\n (\n { className, style, selected, onClick, disabled, children, dense, disablePadding, ...props },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n // Support Enter and Space keys for keyboard navigation\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n };\n\n // Calculate padding for ListItemButton\n let paddingClass = \"\";\n if (!disablePadding) {\n paddingClass = dense ? \"py-2 px-8\" : \"py-4 px-8\";\n }\n\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n aria-selected={selected}\n className={cn(\n \"flex cursor-pointer transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n paddingClass,\n selected\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : hovered\n ? \"bg-accent text-accent-foreground\"\n : \"hover:bg-accent hover:text-accent-foreground\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n style={{\n alignItems: \"center\",\n ...style,\n }}\n onClick={disabled ? undefined : onClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemButton.displayName = \"ListItemButton\";\n\nconst ListItemAvatar = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n // Extract margin and minWidth from style to allow override\n const { marginRight, minWidth, ...restStyle } = style || {};\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: minWidth !== undefined ? minWidth : \"40px\",\n marginRight: marginRight !== undefined ? marginRight : \"1rem\",\n ...restStyle,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nListItemAvatar.displayName = \"ListItemAvatar\";\n\nexport {\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n ListItemButton,\n ListItemAvatar,\n};\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\n\nconst Accordion = React.forwardRef(\n (\n {\n className,\n style,\n expanded,\n onChange,\n children,\n defaultExpanded,\n ...props\n },\n ref\n ) => {\n const [isExpanded, setIsExpanded] = React.useState(\n defaultExpanded || false\n );\n const accordionId = React.useId();\n\n // Use ref to store latest onChange and expanded to avoid stale closures\n const onChangeRef = React.useRef(onChange);\n const expandedRef = React.useRef(expanded);\n React.useEffect(() => {\n onChangeRef.current = onChange;\n expandedRef.current = expanded;\n }, [onChange, expanded]);\n\n const handleChange = React.useCallback(\n (event) => {\n if (event) {\n event.preventDefault?.();\n event.stopPropagation?.();\n }\n\n // Use ref to get the latest expanded value to avoid stale closures\n const currentExpandedValue = expandedRef.current;\n const currentState =\n currentExpandedValue !== undefined\n ? currentExpandedValue\n : isExpanded;\n const newExpanded = !currentState;\n\n // Always update internal state for uncontrolled mode\n setIsExpanded(newExpanded);\n\n // Always call onChange with the new state\n // The parent component will update the expanded prop if it's controlled\n if (onChangeRef.current) {\n // MUI Accordion onChange signature: onChange(event, expanded)\n onChangeRef.current(event, newExpanded);\n }\n },\n [isExpanded]\n );\n\n const currentExpanded = expanded !== undefined ? expanded : isExpanded;\n\n const finalBackgroundColor = style?.backgroundColor || \"hsl(var(--card))\";\n\n const {\n marginBottom,\n border,\n borderRadius,\n boxShadow,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n return (\n <div\n ref={ref}\n role=\"region\"\n className={cn(\n \"overflow-hidden rounded-2xl\",\n marginBottom === undefined && \"mb-2\",\n className\n )}\n style={{\n border:\n border !== undefined ? border : \"1px solid hsl(var(--border))\",\n borderRadius: borderRadius !== undefined ? borderRadius : 16,\n boxShadow: boxShadow !== undefined ? boxShadow : \"none\",\n backgroundColor:\n backgroundColor !== undefined\n ? backgroundColor\n : \"hsl(var(--card))\",\n marginBottom: marginBottom,\n ...restStyle,\n }}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === AccordionSummary) {\n return React.cloneElement(child, {\n expanded: currentExpanded,\n onChange: handleChange,\n id: `${accordionId}-summary`,\n });\n }\n if (child.type === AccordionDetails) {\n return React.cloneElement(child, {\n expanded: currentExpanded,\n id: `${accordionId}-content`,\n });\n }\n }\n return child;\n })}\n </div>\n );\n }\n);\nAccordion.displayName = \"Accordion\";\n\nconst AccordionSummary = React.forwardRef(\n (\n {\n className,\n style,\n expandIcon,\n children,\n expanded,\n onChange,\n id,\n ...props\n },\n ref\n ) => {\n // AccordionSummary receives onChange from Accordion which is handleChange\n // handleChange expects (event) and will handle the expanded state internally\n // Extract padding and backgroundColor from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n backgroundColor,\n ...restStyle\n } = style || {};\n\n // Check if padding is explicitly set in style\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"py-2 px-4\";\n const minHeight = style?.minHeight !== undefined ? style.minHeight : \"auto\";\n\n const contentId = id ? `${id}-content` : undefined;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n aria-expanded={expanded}\n aria-controls={contentId}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (onChange) {\n // AccordionSummary receives onChange from Accordion, which expects (event, expanded)\n // But we need to call it with just the event, and Accordion will handle the expanded state\n onChange(e);\n }\n }}\n className={cn(\n \"w-full flex items-center justify-between transition-colors focus:outline-none\",\n defaultPaddingClass,\n className\n )}\n style={{\n border: \"none\",\n borderTop: \"none\",\n borderBottom: \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n backgroundColor:\n backgroundColor !== undefined ? backgroundColor : \"transparent\",\n minHeight: minHeight,\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n ...restStyle,\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onChange) {\n onChange(e);\n }\n }\n }}\n {...props}\n >\n <div style={{ flex: 1 }}>{children}</div>\n {expandIcon !== false &&\n (expandIcon || (\n <ChevronDown\n size={20}\n className=\"text-foreground\"\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n marginLeft: \"0.5rem\",\n }}\n />\n ))}\n </button>\n );\n }\n);\nAccordionSummary.displayName = \"AccordionSummary\";\n\nconst AccordionDetails = React.forwardRef(\n ({ className, style, expanded, children, id, ...props }, ref) => {\n if (!expanded) return null;\n\n const {\n backgroundColor: styleBackgroundColor,\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n // Remove padding-related properties from restStyle to avoid conflicts\n const {\n padding: _,\n paddingTop: __,\n paddingBottom: ___,\n paddingLeft: ____,\n paddingRight: _____,\n ...cleanRestStyle\n } = restStyle;\n\n // Check if padding (all sides) is explicitly set\n const hasPadding = padding !== undefined;\n\n // Check if individual padding sides are set\n const hasIndividualPadding =\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding: use \"1rem\" (16px) for all sides if no padding is set\n // If padding is explicitly set, use it\n // If individual paddings are set, don't set padding (let individual ones work)\n // Otherwise use default \"1rem\"\n const finalPadding = hasPadding\n ? padding\n : hasIndividualPadding\n ? undefined\n : \"1rem\";\n\n // Build style object, only include padding properties if they are defined\n const styleObj = {\n backgroundColor: styleBackgroundColor || \"transparent\",\n ...cleanRestStyle,\n };\n\n // Only set padding if finalPadding is defined\n if (finalPadding !== undefined) {\n styleObj.padding = finalPadding;\n }\n\n // Only set individual padding properties if they are defined\n if (paddingTop !== undefined) styleObj.paddingTop = paddingTop;\n if (paddingBottom !== undefined) styleObj.paddingBottom = paddingBottom;\n if (paddingLeft !== undefined) styleObj.paddingLeft = paddingLeft;\n if (paddingRight !== undefined) styleObj.paddingRight = paddingRight;\n\n return (\n <div\n ref={ref}\n id={id}\n role=\"region\"\n aria-labelledby={id ? id.replace(\"-content\", \"-summary\") : undefined}\n className={cn(\"text-foreground\", className)}\n style={{\n ...styleObj,\n borderTop: \"none\",\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nAccordionDetails.displayName = \"AccordionDetails\";\n\nexport { Accordion, AccordionSummary, AccordionDetails };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { AlertCircle, CheckCircle, Info, AlertTriangle, X } from \"lucide-react\";\n\nconst Alert = React.forwardRef(\n (\n {\n className,\n severity = \"info\",\n variant = \"standard\",\n onClose,\n action,\n icon,\n iconMapping,\n children,\n style,\n ...props\n },\n ref\n ) => {\n // Default icon mapping\n const defaultIconMapping = {\n error: AlertCircle,\n warning: AlertTriangle,\n info: Info,\n success: CheckCircle,\n };\n\n // Check if icon is a React element (already rendered) or a component\n const isReactElement = icon && typeof icon === \"object\" && icon.$$typeof;\n const IconComponent =\n !isReactElement &&\n (icon || iconMapping?.[severity] || defaultIconMapping[severity] || Info);\n\n // Get severity classes\n const getSeverityClasses = () => {\n const classes = {\n error: {\n standard: \"bg-destructive/10 text-destructive\",\n filled: \"bg-destructive text-destructive-foreground\",\n outlined: \"border-destructive text-destructive bg-transparent\",\n },\n warning: {\n standard: \"bg-warning/10 text-warning\",\n filled: \"bg-warning text-warning-foreground\",\n outlined: \"border-warning text-warning bg-transparent\",\n },\n info: {\n standard: \"bg-info/10 text-info\",\n filled: \"bg-info text-info-foreground\",\n outlined: \"border-info text-info bg-transparent\",\n },\n success: {\n standard: \"bg-success/10 text-success\",\n filled: \"bg-success text-success-foreground\",\n outlined: \"border-success text-success bg-transparent\",\n },\n };\n return classes[severity]?.[variant] || classes.info.standard;\n };\n\n const severityClasses = getSeverityClasses();\n\n // Extract padding from style to allow override\n const {\n padding,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined;\n\n // Default padding class, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"p-4\";\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"relative flex items-center gap-3 rounded-2xl text-sm\",\n defaultPaddingClass,\n variant === \"outlined\" && \"border\",\n severityClasses,\n className\n )}\n style={{\n padding: padding,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n ...restStyle,\n }}\n {...props}\n >\n {icon !== false &&\n (isReactElement ? (\n <div className=\"flex-shrink-0 flex items-center text-current\">\n {icon}\n </div>\n ) : (\n <IconComponent\n size={20}\n className=\"flex-shrink-0 text-current\"\n />\n ))}\n <div className=\"flex-1 flex items-center\">{children}</div>\n {(onClose || action) && (\n <div className=\"flex items-center gap-1\">\n {action}\n {onClose && (\n <button\n onClick={onClose}\n className=\"flex items-center justify-center rounded-sm opacity-70 hover:opacity-100 transition-opacity p-2 text-current\"\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Tabs = React.forwardRef(\n (\n {\n className,\n value,\n onChange,\n children,\n centered,\n variant, // \"standard\" for underline style, undefined/\"pills\"/\"button\" for circle button style\n style,\n ...props\n },\n ref\n ) => {\n const tabsContainerRef = React.useRef(null);\n const indicatorRef = React.useRef(null);\n const [selectedValue, setSelectedValue] = React.useState(() => {\n return value !== undefined ? value : 0;\n });\n\n // Sync internal state with value prop\n React.useEffect(() => {\n if (value !== undefined) {\n setSelectedValue(value);\n }\n }, [value]);\n\n const handleTabClick = React.useCallback(\n (index) => {\n const newValue = index;\n if (value === undefined) {\n setSelectedValue(newValue);\n }\n if (onChange) {\n onChange(null, newValue);\n }\n },\n [value, onChange]\n );\n\n const currentValue = value !== undefined ? value : selectedValue;\n const isStandardVariant = variant === \"standard\";\n\n // Update indicator position when selected tab changes (only for standard variant)\n React.useEffect(() => {\n if (\n !isStandardVariant ||\n !tabsContainerRef.current ||\n !indicatorRef.current\n )\n return;\n\n const tabs =\n tabsContainerRef.current.querySelectorAll(\"[data-tab-index]\");\n const selectedTab = tabs[currentValue];\n\n if (selectedTab) {\n const containerRect = tabsContainerRef.current.getBoundingClientRect();\n const tabRect = selectedTab.getBoundingClientRect();\n\n indicatorRef.current.style.left = `${\n tabRect.left - containerRect.left\n }px`;\n indicatorRef.current.style.width = `${tabRect.width}px`;\n }\n }, [currentValue, children, isStandardVariant]);\n\n const tabsId = React.useId();\n\n return (\n <div\n ref={ref}\n className={cn(\n isStandardVariant ? \"relative mb-4\" : \"flex\",\n !isStandardVariant && centered && \"justify-center\",\n className\n )}\n style={{\n minHeight: \"auto\",\n ...style,\n }}\n {...props}\n >\n <div\n ref={tabsContainerRef}\n role=\"tablist\"\n aria-label=\"Tabs\"\n className={cn(\n isStandardVariant\n ? \"flex border-b relative w-full\"\n : \"flex gap-4 px-8 py-4\"\n )}\n style={{\n ...(isStandardVariant && { borderColor: \"hsl(var(--border))\" }),\n ...(isStandardVariant && { display: \"flex\", width: \"100%\" }),\n }}\n >\n {React.Children.map(children, (child, index) => {\n // Check if child is a Tab component by checking displayName or type\n const isTabComponent =\n React.isValidElement(child) &&\n (child.type === Tab || child.type?.displayName === \"Tab\");\n\n if (isTabComponent) {\n // Ensure both values are numbers for comparison\n const isSelected = Number(currentValue) === Number(index);\n return React.cloneElement(child, {\n ...child.props,\n selected: isSelected,\n onClick: () => handleTabClick(index),\n index: index,\n \"data-tab-index\": index,\n variant: isStandardVariant ? \"standard\" : undefined,\n id: `${tabsId}-tab-${index}`,\n \"aria-controls\": `${tabsId}-panel-${index}`,\n });\n }\n return child;\n })}\n </div>\n {/* Indicator line - only for standard variant */}\n {isStandardVariant && (\n <div\n ref={indicatorRef}\n style={{\n position: \"absolute\",\n bottom: 0,\n height: \"2px\",\n backgroundColor: \"hsl(var(--primary))\",\n transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n )}\n </div>\n );\n }\n);\nTabs.displayName = \"Tabs\";\n\nconst Tab = React.forwardRef(\n (\n {\n className,\n label,\n selected,\n onClick,\n index,\n style,\n variant,\n id,\n \"aria-controls\": ariaControls,\n ...props\n },\n ref\n ) => {\n const isStandardVariant = variant === \"standard\";\n\n const {\n padding,\n paddingLeft,\n paddingRight,\n paddingTop,\n paddingBottom,\n margin,\n marginLeft,\n marginRight,\n backgroundColor: styleBackgroundColor,\n color: styleColor,\n ...restStyle\n } = style || {};\n\n const hasPaddingInStyle =\n padding !== undefined ||\n paddingLeft !== undefined ||\n paddingRight !== undefined ||\n paddingTop !== undefined ||\n paddingBottom !== undefined;\n\n // Tab styles based on variant\n if (isStandardVariant) {\n // Standard variant: underline style (NEW)\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"px-3 py-4\";\n const finalColor =\n styleColor !== undefined\n ? styleColor\n : selected\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--muted-foreground))\";\n\n const { onClick: propsOnClick, ...restProps } = props;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={ariaControls}\n tabIndex={selected ? 0 : -1}\n onClick={(e) => {\n if (onClick) {\n onClick(e);\n }\n if (propsOnClick) {\n propsOnClick(e);\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n }}\n className={cn(\n \"cursor-pointer transition-all duration-200 text-sm border-none bg-transparent focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n defaultPaddingClass,\n \"min-w-[72px] min-h-[48px] flex-1\",\n selected ? \"font-semibold\" : \"font-medium\",\n className\n )}\n style={{\n color: finalColor,\n textTransform: \"none\",\n flex: 1,\n minWidth: 0,\n padding: padding,\n paddingLeft: paddingLeft,\n paddingRight: paddingRight,\n paddingTop: paddingTop,\n paddingBottom: paddingBottom,\n margin: margin,\n marginLeft: marginLeft,\n marginRight: marginRight,\n ...restStyle,\n }}\n onMouseEnter={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n {...restProps}\n >\n {label}\n </button>\n );\n } else {\n // Pills variant: existing circle button style (DO NOT CHANGE - backward compatibility)\n const getTabColors = () => {\n if (selected) {\n return {\n color: \"hsl(var(--primary-foreground))\",\n backgroundColor: \"hsl(var(--primary))\",\n };\n }\n // Unselected tabs all have the same style\n return {\n color: \"hsl(var(--foreground))\",\n backgroundColor: \"hsl(var(--accent))\",\n };\n };\n\n const tabColors = getTabColors();\n\n const hasMarginInStyle =\n margin !== undefined ||\n marginLeft !== undefined ||\n marginRight !== undefined;\n\n // Default padding/margin classes, but allow override\n const defaultPaddingClass = hasPaddingInStyle ? \"\" : \"px-4 py-3\";\n const defaultMarginClass = hasMarginInStyle ? \"\" : \"mx-2\";\n\n // Use style backgroundColor if provided, otherwise use tabColors\n const finalBackgroundColor =\n styleBackgroundColor !== undefined\n ? styleBackgroundColor\n : tabColors.backgroundColor;\n\n const finalColor =\n styleColor !== undefined ? styleColor : tabColors.color;\n\n // Ensure restStyle doesn't override backgroundColor or color\n const { backgroundColor: _, color: __, ...cleanRestStyle } = restStyle;\n\n // Extract onClick from props to avoid override\n const { onClick: propsOnClick, ...restProps } = props;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={ariaControls}\n tabIndex={selected ? 0 : -1}\n onClick={(e) => {\n if (onClick) {\n onClick(e);\n }\n if (propsOnClick) {\n propsOnClick(e);\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) {\n onClick(e);\n }\n }\n }}\n className={cn(\n \"cursor-pointer transition-all duration-200 min-h-[32px] min-w-[100px] rounded-2xl text-sm border-none focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n defaultPaddingClass,\n defaultMarginClass,\n selected ? \"font-semibold\" : \"font-medium\",\n className\n )}\n style={{\n color: finalColor,\n backgroundColor: finalBackgroundColor,\n ...(padding !== undefined && { padding }),\n ...(paddingLeft !== undefined && { paddingLeft }),\n ...(paddingRight !== undefined && { paddingRight }),\n ...(paddingTop !== undefined && { paddingTop }),\n ...(paddingBottom !== undefined && { paddingBottom }),\n ...(margin !== undefined && { margin }),\n ...(marginLeft !== undefined && { marginLeft }),\n ...(marginRight !== undefined && { marginRight }),\n ...cleanRestStyle,\n }}\n onMouseEnter={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent))\";\n } else {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--primary) / 0.9)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = finalBackgroundColor;\n }}\n {...restProps}\n >\n {label}\n </button>\n );\n }\n }\n);\nTab.displayName = \"Tab\";\n\nexport { Tabs, Tab };\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n\n while (target) {\n var _target$getRootNode;\n\n if (parent.contains(target)) {\n return true;\n }\n\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n\n return false;\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ? // @ts-ignore\n!!window.msCrypto : false;\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n var _name;\n\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n\n }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function (instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function (acc, item) {\n return acc.concat(item);\n }, []);\n }\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n\n function prepareInstance(singleton, target) {\n var index = triggerTargets.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n var _references$index;\n\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n\n singleton.showNext = function () {\n var first = references[0];\n\n if (!currentTarget) {\n return singleton.show(0);\n }\n\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n\n if (!currentTarget) {\n return singleton.show(last);\n }\n\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","import * as React from \"react\";\nimport tippy, { roundArrow } from \"tippy.js\";\nimport \"tippy.js/dist/tippy.css\";\nimport \"tippy.js/themes/material.css\";\n\n// Custom styles to match MUI Tooltip\nconst tooltipStyles = `\n .tippy-box[data-theme~='material'] {\n font-size: 0.75rem;\n font-weight: 400;\n padding: 2px 6px;\n line-height: 1.4;\n }\n .tippy-box[data-theme~='material'] .tippy-content {\n padding: 0;\n }\n`;\n\nconst Tooltip = React.forwardRef(\n (\n {\n title,\n children,\n placement = \"top\",\n arrow = true,\n delay = [100, 0],\n className,\n style,\n ...props\n },\n ref\n ) => {\n const childRef = React.useRef(null);\n const tippyInstanceRef = React.useRef(null);\n\n // Combine refs\n React.useImperativeHandle(ref, () => childRef.current);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n // If no title, don't create tooltip\n if (!title) {\n // Clean up existing tooltip if title is removed\n if (tippyInstanceRef.current) {\n tippyInstanceRef.current.destroy();\n tippyInstanceRef.current = null;\n }\n return;\n }\n\n // Inject custom styles if not already injected\n if (!document.getElementById(\"mui-tooltip-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"mui-tooltip-styles\";\n style.textContent = tooltipStyles;\n document.head.appendChild(style);\n }\n\n // Create tippy instance\n tippyInstanceRef.current = tippy(childRef.current, {\n content: title,\n placement: placement,\n arrow: arrow ? roundArrow : false,\n delay: delay,\n theme: \"material\",\n animation: \"fade\",\n duration: [200, 150],\n // Use theme colors\n popperOptions: {\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ],\n },\n });\n\n return () => {\n if (tippyInstanceRef.current) {\n tippyInstanceRef.current.destroy();\n tippyInstanceRef.current = null;\n }\n };\n }, [title, placement, arrow, delay]);\n\n // Update content when title changes\n React.useEffect(() => {\n if (tippyInstanceRef.current && title) {\n tippyInstanceRef.current.setContent(title);\n }\n }, [title]);\n\n // Clone child element and attach ref\n const childElement = React.Children.only(children);\n\n if (!React.isValidElement(childElement)) {\n return children;\n }\n\n return React.cloneElement(childElement, {\n ref: (node) => {\n childRef.current = node;\n // Handle original ref if it exists\n if (typeof childElement.ref === \"function\") {\n childElement.ref(node);\n } else if (childElement.ref) {\n childElement.ref.current = node;\n }\n },\n className: className\n ? `${childElement.props.className || \"\"} ${className}`.trim()\n : childElement.props.className,\n style: { ...childElement.props.style, ...style },\n ...props,\n });\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip };\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { TextField } from \"./text-field\";\n\nconst Autocomplete = React.forwardRef(\n (\n {\n options = [],\n getOptionLabel,\n value,\n onChange,\n inputValue,\n onInputChange,\n filterOptions,\n renderInput,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false);\n const [filteredOptions, setFilteredOptions] = React.useState(options);\n const inputRef = React.useRef(null);\n const listRef = React.useRef(null);\n\n // Combine refs\n React.useImperativeHandle(ref, () => inputRef.current);\n\n // Filter options when inputValue or options change\n React.useEffect(() => {\n // Ensure inputValue is always a string\n const searchValue = typeof inputValue === \"string\" ? inputValue : (inputValue ? String(inputValue) : \"\");\n \n if (filterOptions) {\n const filtered = filterOptions(options, {\n inputValue: searchValue,\n });\n setFilteredOptions(filtered);\n } else {\n // Default filtering: filter options based on inputValue\n if (searchValue) {\n const filtered = options.filter((option) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n return String(optionLabel).toLowerCase().includes(searchValue.toLowerCase());\n });\n setFilteredOptions(filtered);\n } else {\n // Show all options if input is empty\n setFilteredOptions(options);\n }\n }\n }, [options, inputValue, filterOptions, getOptionLabel]);\n\n const handleInputChange = (event) => {\n // Extract value from event, ensuring it's always a string\n let newValue = \"\";\n if (event?.target?.value !== undefined) {\n newValue = String(event.target.value);\n } else if (typeof event === \"string\") {\n newValue = event;\n } else if (event) {\n newValue = String(event);\n }\n \n if (onInputChange) {\n onInputChange(event, newValue);\n }\n if (!open) {\n setOpen(true);\n }\n };\n\n const handleOptionClick = (option) => {\n if (onChange) {\n onChange(null, option);\n }\n // Update inputValue when option is selected\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n // Ensure optionLabel is a string\n const labelString = typeof optionLabel === \"string\" ? optionLabel : String(optionLabel || \"\");\n if (onInputChange) {\n onInputChange(null, labelString);\n }\n setOpen(false);\n };\n\n const handleClickOutside = (event) => {\n if (\n listRef.current &&\n !listRef.current.contains(event.target) &&\n inputRef.current &&\n !inputRef.current.contains(event.target)\n ) {\n setOpen(false);\n }\n };\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [open]);\n\n const displayValue = value\n ? getOptionLabel\n ? getOptionLabel(value)\n : value?.name || value?.label || String(value)\n : \"\";\n\n // Determine the input value: use inputValue if provided, otherwise use displayValue\n // When value is selected, show displayValue unless user is typing\n const getInputValue = () => {\n // Always ensure we return a string\n if (inputValue !== undefined && inputValue !== null) {\n // If user is typing, show inputValue (ensure it's a string)\n return typeof inputValue === \"string\" ? inputValue : String(inputValue);\n }\n // If value is selected, show displayValue\n return typeof displayValue === \"string\" ? displayValue : String(displayValue || \"\");\n };\n\n const inputProps = {\n ref: inputRef,\n value: getInputValue(),\n onChange: handleInputChange,\n onFocus: () => setOpen(true),\n ...props,\n };\n\n // If renderInput is provided, use it (for MUI compatibility)\n if (renderInput) {\n return (\n <div ref={ref} className={cn(\"relative\", className)} style={style}>\n {renderInput({\n ...inputProps,\n InputProps: {\n ...(inputProps.InputProps || {}),\n endAdornment: (\n <div\n className=\"absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(!open);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n ),\n },\n })}\n {open && filteredOptions.length > 0 && (\n <div\n ref={listRef}\n className=\"absolute z-50 w-full mt-1 rounded-2xl border shadow-lg overflow-auto\"\n style={{\n maxHeight: \"200px\", // Ensure at least 4 options are visible (each ~50px)\n minHeight: \"160px\", // Minimum height for better UX\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n }}\n >\n {filteredOptions.map((option, index) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n const isSelected =\n value &&\n (getOptionLabel\n ? getOptionLabel(value) === optionLabel\n : value === option ||\n (value?.id && option?.id && value.id === option.id));\n\n return (\n <div\n key={index}\n className=\"px-3 py-2 cursor-pointer hover:bg-accent transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onClick={() => handleOptionClick(option)}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {optionLabel}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n\n // Default render with TextField\n return (\n <div ref={ref} className={cn(\"relative\", className)} style={style}>\n <TextField\n {...inputProps}\n style={{\n ...inputProps.style,\n height: inputProps.style?.height || \"40px\",\n }}\n InputProps={{\n ...inputProps.InputProps,\n style: {\n ...inputProps.InputProps?.style,\n backgroundColor:\n inputProps.InputProps?.style?.backgroundColor || \"transparent\",\n height: inputProps.InputProps?.style?.height || \"40px\",\n },\n endAdornment: (\n <div\n className=\"absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(!open);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n ),\n }}\n />\n {open && filteredOptions.length > 0 && (\n <div\n ref={listRef}\n className=\"absolute z-50 w-full mt-1 rounded-2xl border shadow-lg overflow-auto\"\n style={{\n maxHeight: \"200px\", // Ensure at least 4 options are visible (each ~50px)\n minHeight: \"160px\", // Minimum height for better UX\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n }}\n >\n {filteredOptions.map((option, index) => {\n const optionLabel = getOptionLabel\n ? getOptionLabel(option)\n : option?.name || option?.label || String(option);\n const isSelected =\n value &&\n (getOptionLabel\n ? getOptionLabel(value) === optionLabel\n : value === option ||\n (value?.id && option?.id && value.id === option.id));\n\n return (\n <div\n key={index}\n className=\"px-3 py-2 cursor-pointer hover:bg-accent transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onClick={() => handleOptionClick(option)}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {optionLabel}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\nAutocomplete.displayName = \"Autocomplete\";\n\nexport { Autocomplete };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { TextField } from \"./text-field\";\nimport * as dayjsModule from \"dayjs\";\nconst dayjs = dayjsModule.default || dayjsModule;\n\nconst DatePicker = React.forwardRef(\n (\n {\n value,\n onChange,\n clearable = false,\n slotProps,\n className,\n style,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false);\n const [selectedDate, setSelectedDate] = React.useState(\n value ? dayjs(value) : null\n );\n const calendarRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const yearPickerRef = React.useRef(null);\n const currentYearButtonRef = React.useRef(null);\n\n React.useImperativeHandle(ref, () => inputRef.current);\n\n React.useEffect(() => {\n setSelectedDate(value ? dayjs(value) : null);\n }, [value]);\n\n const handleDateChange = (newDate) => {\n setSelectedDate(newDate);\n if (onChange) {\n onChange(newDate);\n }\n setOpen(false);\n if (onOpenChange) {\n onOpenChange(false);\n }\n };\n\n const handleClear = (e) => {\n e.stopPropagation();\n setSelectedDate(null);\n if (onChange) {\n onChange(null);\n }\n };\n\n const handleClickOutside = (event) => {\n if (\n calendarRef.current &&\n !calendarRef.current.contains(event.target) &&\n inputRef.current &&\n !inputRef.current.contains(event.target)\n ) {\n setOpen(false);\n setShowYearPicker(false);\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [open]);\n\n const textFieldProps = slotProps?.textField || {};\n const displayValue = selectedDate ? selectedDate.format(\"YYYY-MM-DD\") : \"\";\n const [viewMode, setViewMode] = React.useState(\"month\"); // \"month\" or \"year\"\n const [showYearPicker, setShowYearPicker] = React.useState(false);\n\n // Scroll to current year when year picker opens\n React.useEffect(() => {\n if (\n showYearPicker &&\n currentYearButtonRef.current &&\n yearPickerRef.current\n ) {\n // Use setTimeout to ensure DOM is rendered\n setTimeout(() => {\n const button = currentYearButtonRef.current;\n const container = yearPickerRef.current;\n if (button && container) {\n const buttonTop = button.offsetTop;\n const containerHeight = container.clientHeight;\n const scrollTop =\n buttonTop - containerHeight / 2 + button.clientHeight / 2;\n container.scrollTop = scrollTop;\n }\n }, 0);\n }\n }, [showYearPicker]);\n\n // Generate calendar days\n const getCalendarDays = () => {\n const startOfMonth = selectedDate\n ? selectedDate.startOf(\"month\")\n : dayjs().startOf(\"month\");\n const endOfMonth = selectedDate\n ? selectedDate.endOf(\"month\")\n : dayjs().endOf(\"month\");\n const startDate = startOfMonth.startOf(\"week\");\n const endDate = endOfMonth.endOf(\"week\");\n const days = [];\n let currentDate = startDate;\n\n while (currentDate.isBefore(endDate) || currentDate.isSame(endDate)) {\n days.push(currentDate);\n currentDate = currentDate.add(1, \"day\");\n }\n\n return days;\n };\n\n const calendarDays = getCalendarDays();\n const currentMonth = selectedDate ? selectedDate.month() : dayjs().month();\n const currentYear = selectedDate ? selectedDate.year() : dayjs().year();\n\n const handlePrevMonth = () => {\n const newDate = selectedDate\n ? selectedDate.subtract(1, \"month\")\n : dayjs().subtract(1, \"month\");\n setSelectedDate(newDate);\n };\n\n const handleNextMonth = () => {\n const newDate = selectedDate\n ? selectedDate.add(1, \"month\")\n : dayjs().add(1, \"month\");\n setSelectedDate(newDate);\n };\n\n const handleDayClick = (day) => {\n handleDateChange(day);\n };\n\n return (\n <div\n ref={calendarRef}\n className={cn(\"relative\", className)}\n style={style}\n >\n <TextField\n {...textFieldProps}\n ref={inputRef}\n value={displayValue || \"\"}\n onClick={() => {\n const newOpen = !open;\n setOpen(newOpen);\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n }}\n readOnly\n placeholder={textFieldProps.placeholder || \"MM/DD/YYYY\"}\n style={{\n ...textFieldProps.style,\n fontSize: \"0.875rem\",\n height: textFieldProps.style?.height || \"40px\",\n }}\n InputProps={{\n ...textFieldProps.InputProps,\n style: {\n ...textFieldProps.InputProps?.style,\n backgroundColor:\n textFieldProps.InputProps?.style?.backgroundColor,\n },\n endAdornment: (\n <div className=\"flex items-center gap-1\">\n {clearable && selectedDate && (\n <div\n className=\"cursor-pointer\"\n onClick={handleClear}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"4px\",\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n )}\n <div\n className=\"cursor-pointer\"\n style={{ padding: \"4px\" }}\n onClick={(e) => {\n e.stopPropagation();\n const newOpen = !open;\n setOpen(newOpen);\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M6 2V4M14 2V4M3 8H17M4 4H16C16.5523 4 17 4.44772 17 5V16C17 16.5523 16.5523 17 16 17H4C3.44772 17 3 16.5523 3 16V5C3 4.44772 3.44772 4 4 4Z\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n ),\n }}\n />\n {open && (\n <div\n className=\"absolute z-50 mt-1 rounded-2xl border shadow-lg p-4\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n minWidth: \"300px\",\n }}\n >\n {/* Calendar Header */}\n <div\n className=\"flex items-center justify-between mb-4\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"year\") {\n setSelectedDate(\n selectedDate\n ? selectedDate.subtract(10, \"year\")\n : dayjs().subtract(10, \"year\")\n );\n } else {\n handlePrevMonth();\n }\n }}\n className=\"p-1 rounded-lg hover:bg-action-hover transition-colors\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 15L7 10L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"month\") {\n setShowYearPicker(!showYearPicker);\n } else {\n setViewMode(\"month\");\n }\n }}\n className=\"font-semibold px-2 py-1 rounded-lg hover:bg-action-hover transition-colors flex items-center gap-1 text-foreground\"\n >\n {viewMode === \"month\"\n ? `${dayjs()\n .month(currentMonth)\n .format(\"MMMM\")} ${currentYear}`\n : `${currentYear}`}\n {viewMode === \"month\" && (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{\n transform: showYearPicker\n ? \"rotate(180deg)\"\n : \"rotate(0deg)\",\n transition: \"transform 0.2s\",\n }}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n {showYearPicker && viewMode === \"month\" && (\n <div\n ref={yearPickerRef}\n className=\"absolute z-10 mt-1 rounded-lg border shadow-lg max-h-48 overflow-auto\"\n style={{\n backgroundColor: \"hsl(var(--card))\",\n borderColor: \"hsl(var(--border))\",\n top: \"100%\",\n left: 0,\n minWidth: \"120px\",\n }}\n >\n {Array.from({ length: 201 }, (_, i) => {\n // Generate years from currentYear - 100 to currentYear + 100\n const currentYearValue = dayjs().year();\n const year = currentYearValue - 100 + i;\n const isCurrentYear = year === currentYear;\n return (\n <button\n key={year}\n ref={isCurrentYear ? currentYearButtonRef : null}\n type=\"button\"\n onClick={() => {\n const newDate = selectedDate\n ? selectedDate.year(year)\n : dayjs().year(year).month(currentMonth);\n setSelectedDate(newDate);\n setShowYearPicker(false);\n }}\n className=\"w-full px-3 py-1.5 text-sm text-left hover:bg-action-hover transition-colors\"\n style={{\n backgroundColor: isCurrentYear\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\",\n color: \"hsl(var(--foreground))\",\n }}\n onMouseEnter={(e) => {\n if (!isCurrentYear) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor =\n isCurrentYear\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\";\n }}\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => {\n if (viewMode === \"year\") {\n setSelectedDate(\n selectedDate\n ? selectedDate.add(10, \"year\")\n : dayjs().add(10, \"year\")\n );\n } else {\n handleNextMonth();\n }\n }}\n className=\"p-1 rounded-lg hover:bg-action-hover transition-colors\"\n style={{\n color: \"hsl(var(--foreground))\",\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M8 5L13 10L8 15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {viewMode === \"month\" ? (\n <>\n {/* Calendar Grid */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n (day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium py-1 text-muted-foreground\"\n >\n {day}\n </div>\n )\n )}\n </div>\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isCurrentMonth = day.month() === currentMonth;\n const isToday = day.isSame(dayjs(), \"day\");\n const isSelected =\n selectedDate && day.isSame(selectedDate, \"day\");\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={() => handleDayClick(day)}\n className={cn(\n \"aspect-square rounded-lg text-sm transition-colors\",\n !isCurrentMonth && \"opacity-30\",\n isSelected && \"font-semibold\"\n )}\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--primary))\"\n : isToday\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\"\n : \"transparent\",\n color: isSelected\n ? \"hsl(var(--primary-foreground))\"\n : \"hsl(var(--foreground))\",\n border:\n isToday && !isSelected\n ? \"1px solid hsl(var(--primary))\"\n : \"none\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--primary))\"\n : isToday\n ? \"hsl(var(--accent))\" || \"rgba(0, 0, 0, 0.04)\"\n : \"transparent\";\n }}\n >\n {day.date()}\n </button>\n );\n })}\n </div>\n </>\n ) : (\n /* Year View */\n <div className=\"grid grid-cols-4 gap-2\">\n {Array.from({ length: 12 }, (_, i) => {\n const monthIndex = i;\n const isCurrentMonth =\n monthIndex === dayjs().month() &&\n currentYear === dayjs().year();\n const isSelected =\n selectedDate &&\n selectedDate.month() === monthIndex &&\n selectedDate.year() === currentYear;\n\n return (\n <button\n key={monthIndex}\n type=\"button\"\n onClick={() => {\n const newDate = selectedDate\n ? selectedDate.month(monthIndex)\n : dayjs().month(monthIndex).year(currentYear);\n setSelectedDate(newDate);\n setViewMode(\"month\");\n }}\n className=\"p-2 rounded-lg text-sm transition-colors\"\n style={{\n backgroundColor: isSelected\n ? \"hsl(var(--primary))\"\n : isCurrentMonth\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: isSelected\n ? \"hsl(var(--primary-foreground))\"\n : \"hsl(var(--foreground))\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.backgroundColor =\n \"hsl(var(--accent))\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isSelected\n ? \"hsl(var(--primary))\"\n : isCurrentMonth\n ? \"hsl(var(--accent))\"\n : \"transparent\";\n }}\n >\n {dayjs().month(monthIndex).format(\"MMM\")}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Drawer = React.forwardRef(\n (\n {\n anchor = \"left\",\n open = false,\n onClose,\n onOpenChange,\n children,\n className,\n sx,\n PaperProps,\n transitionDuration = 300,\n keepMounted = false,\n variant = \"temporary\",\n ModalProps,\n SlideProps,\n ...props\n },\n ref\n ) => {\n const drawerRef = React.useRef(null);\n\n React.useImperativeHandle(ref, () => drawerRef.current);\n\n // Handle backdrop click - only for temporary variant\n const handleBackdropClick = (e) => {\n if (variant === \"temporary\" && e.target === e.currentTarget && onClose) {\n onClose(e, \"backdropClick\");\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n \n // Handle open state changes\n React.useEffect(() => {\n if (onOpenChange) {\n onOpenChange(open);\n }\n }, [open, onOpenChange]);\n\n // Handle escape key\n React.useEffect(() => {\n if (!open) return;\n\n const handleEscape = (e) => {\n if (e.key === \"Escape\" && onClose) {\n onClose(e, \"escapeKeyDown\");\n if (onOpenChange) {\n onOpenChange(false);\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, onClose]);\n\n // Merge sx styles - handle root and paper selectors\n const { rootStyles, paperStyles: sxPaperStyles } = React.useMemo(() => {\n if (!sx) return { rootStyles: {}, paperStyles: {} };\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n\n // Extract root-level styles (direct properties)\n const rootStyles = {};\n // Extract paper styles from \"& .MuiDrawer-paper\" selector\n const paperStyles = {};\n\n Object.keys(sxObj).forEach((key) => {\n if (key === \"& .MuiDrawer-paper\" || key === \"&.MuiDrawer-paper\") {\n Object.assign(paperStyles, sxObj[key]);\n } else if (key.startsWith(\"&\")) {\n // Other selectors - could be handled here if needed\n } else {\n // Direct style properties go to root\n rootStyles[key] = sxObj[key];\n }\n });\n\n return { rootStyles, paperStyles };\n }, [sx]);\n\n // Get PaperProps styles\n const paperPropsStyles = React.useMemo(() => {\n const paperSx = PaperProps?.sx;\n if (!paperSx) return {};\n return typeof paperSx === \"function\" ? paperSx({}) : paperSx;\n }, [PaperProps]);\n\n // Get anchor styles\n const getAnchorStyles = () => {\n const baseStyles = {\n position: \"fixed\",\n zIndex: parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1200\",\n 10\n ),\n transition: `transform ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n };\n\n switch (anchor) {\n case \"left\":\n return {\n ...baseStyles,\n top: 0,\n left: 0,\n bottom: 0,\n transform: open ? \"translateX(0)\" : \"translateX(-100%)\",\n };\n case \"right\":\n return {\n ...baseStyles,\n top: 0,\n right: 0,\n bottom: 0,\n transform: open ? \"translateX(0)\" : \"translateX(100%)\",\n };\n case \"top\":\n return {\n ...baseStyles,\n top: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n transform: open ? \"translateY(0)\" : \"translateY(-100%)\",\n };\n case \"bottom\":\n return {\n ...baseStyles,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n transform: open ? \"translateY(0)\" : \"translateY(100%)\",\n };\n default:\n return baseStyles;\n }\n };\n\n const anchorStyles = getAnchorStyles();\n\n // Early return after all hooks\n // For permanent variant, always render if keepMounted is true\n if (!open && !keepMounted && variant !== \"permanent\") return null;\n\n // For permanent variant, always show\n const isPermanent = variant === \"permanent\";\n const shouldShowBackdrop = variant === \"temporary\" || variant === \"persistent\";\n const shouldShowDrawer = isPermanent || open || keepMounted;\n\n return (\n <>\n {/* Backdrop - only for temporary and persistent variants */}\n {shouldShowBackdrop && shouldShowDrawer && (\n <div\n className=\"fixed inset-0 bg-black/50\"\n style={{\n zIndex:\n parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n \"--z-index-drawer\"\n ) || \"1200\",\n 10\n ) - 1,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n pointerEvents: open ? \"auto\" : \"none\",\n }}\n onClick={handleBackdropClick}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Drawer */}\n <div\n ref={drawerRef}\n className={cn(\n \"MuiDrawer-root\",\n \"fixed\",\n anchor === \"left\" || anchor === \"right\" ? \"h-full\" : \"w-full\",\n anchor === \"top\" || anchor === \"bottom\" ? \"h-auto\" : \"w-auto\",\n !open && \"pointer-events-none\",\n className\n )}\n style={{\n ...anchorStyles,\n ...rootStyles,\n display: shouldShowDrawer ? \"block\" : \"none\",\n // For permanent variant, always visible\n transform: isPermanent ? \"translateX(0)\" : anchorStyles.transform,\n ...props.style,\n }}\n role=\"presentation\"\n {...Object.fromEntries(\n Object.entries(props).filter(([key]) => key !== \"style\")\n )}\n >\n {/* Paper (drawer content) */}\n <div\n className={cn(\n \"MuiDrawer-paper\",\n \"MuiPaper-root\",\n anchor === \"left\" || anchor === \"right\" ? \"h-full\" : \"\",\n \"w-full\",\n anchor === \"left\" || anchor === \"right\"\n ? \"overflow-y-auto\"\n : anchor === \"top\" || anchor === \"bottom\"\n ? \"overflow-y-auto\"\n : \"\",\n PaperProps?.className\n )}\n style={{\n backgroundColor: \"hsl(var(--card))\",\n boxShadow:\n sxPaperStyles.boxShadow !== undefined\n ? sxPaperStyles.boxShadow\n : paperPropsStyles.boxShadow !== undefined\n ? paperPropsStyles.boxShadow\n : PaperProps?.style?.boxShadow !== undefined\n ? PaperProps.style.boxShadow\n : open\n ? \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\"\n : \"none\", // No shadow when closed\n ...(anchor === \"left\" || anchor === \"right\"\n ? { \n height: \"100%\", \n width: PaperProps?.style?.width || sxPaperStyles.width || paperPropsStyles.width || \"300px\",\n minWidth: PaperProps?.style?.minWidth || sxPaperStyles.minWidth || paperPropsStyles.minWidth || \"300px\",\n maxWidth: PaperProps?.style?.maxWidth || sxPaperStyles.maxWidth || paperPropsStyles.maxWidth || \"90vw\"\n }\n : { width: \"100%\" }),\n ...sxPaperStyles,\n ...paperPropsStyles,\n ...PaperProps?.style,\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n }\n);\n\nDrawer.displayName = \"Drawer\";\n\nexport { Drawer };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormControlLabel = React.forwardRef(\n (\n {\n control,\n label,\n labelPlacement = \"end\",\n disabled = false,\n value,\n className,\n sx,\n ...props\n },\n ref\n ) => {\n // Merge sx styles\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const isLabelStart = labelPlacement === \"start\";\n const isLabelTop = labelPlacement === \"top\";\n const isLabelBottom = labelPlacement === \"bottom\";\n\n const controlWithValue = React.useMemo(() => {\n if (value !== undefined && React.isValidElement(control)) {\n return React.cloneElement(control, {\n ...control.props,\n value,\n });\n }\n return control;\n }, [control, value]);\n\n return (\n <label\n ref={ref}\n className={cn(\n \"inline-flex items-center cursor-pointer\",\n disabled && \"opacity-50 cursor-not-allowed\",\n isLabelTop && \"flex-col items-start\",\n isLabelBottom && \"flex-col-reverse items-start\",\n isLabelStart && \"flex-row-reverse items-center\",\n !isLabelTop && !isLabelBottom && !isLabelStart && \"items-center\",\n className\n )}\n style={mergedSx}\n {...props}\n >\n {/* Control */}\n <span\n className={cn(\n \"inline-flex items-center justify-center shrink-0\",\n isLabelTop && \"mb-1\",\n isLabelBottom && \"mt-1\",\n isLabelStart && \"ml-2\",\n !isLabelStart && !isLabelTop && !isLabelBottom && \"mr-2\"\n )}\n style={{\n minWidth: \"20px\",\n minHeight: \"20px\",\n }}\n >\n {controlWithValue}\n </span>\n\n {/* Label */}\n {label && (\n <span\n className={cn(\n \"text-sm text-foreground\",\n disabled && \"text-muted-foreground opacity-50\",\n isLabelStart && \"mr-2\"\n )}\n >\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nFormControlLabel.displayName = \"FormControlLabel\";\n\nexport { FormControlLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormLabel = React.forwardRef(\n (\n {\n children,\n component = \"label\",\n className,\n sx,\n style,\n required = false,\n disabled = false,\n error = false,\n focused = false,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const Component = component === \"legend\" ? \"legend\" : \"label\";\n\n return (\n <Component\n ref={ref}\n className={cn(\n \"block text-sm font-medium mb-1\",\n error\n ? \"text-destructive\"\n : focused\n ? \"text-primary\"\n : \"text-foreground\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </Component>\n );\n }\n);\nFormLabel.displayName = \"FormLabel\";\n\nexport { FormLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst FormGroup = React.forwardRef(\n ({ children, className, sx, style, row = false, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n row ? \"flex-row flex-wrap gap-4\" : \"flex-col gap-3\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nFormGroup.displayName = \"FormGroup\";\n\nexport { FormGroup };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst RadioGroupContext = React.createContext({\n value: null,\n onChange: null,\n name: null,\n disabled: false,\n});\n\nconst RadioGroup = React.forwardRef(\n (\n {\n children,\n value,\n onChange,\n name,\n className,\n sx,\n style,\n disabled = false,\n row = false,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const handleChange = React.useCallback(\n (event) => {\n if (onChange && !disabled) {\n onChange(event);\n }\n },\n [onChange, disabled]\n );\n\n const contextValue = React.useMemo(\n () => ({\n value,\n onChange: handleChange,\n name: name || `radio-group-${Math.random().toString(36).substr(2, 9)}`,\n disabled,\n }),\n [value, handleChange, name, disabled]\n );\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n \"flex\",\n row ? \"flex-row gap-4\" : \"flex-col gap-2\",\n disabled && \"opacity-50\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n role=\"radiogroup\"\n {...props}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport { RadioGroup, RadioGroupContext };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { RadioGroupContext } from \"./radio-group\";\n\nconst Radio = React.forwardRef(\n (\n {\n className,\n checked: checkedProp,\n onChange: onChangeProp,\n disabled: disabledProp,\n value,\n size = \"medium\",\n sx,\n style,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n const radioGroup = React.useContext(RadioGroupContext);\n\n const checked =\n checkedProp !== undefined ? checkedProp : radioGroup?.value === value;\n\n const disabled =\n disabledProp !== undefined ? disabledProp : radioGroup?.disabled || false;\n\n const handleChange = React.useCallback(\n (event) => {\n if (onChangeProp) {\n onChangeProp(event);\n } else if (radioGroup?.onChange) {\n radioGroup.onChange(event);\n }\n },\n [onChangeProp, radioGroup]\n );\n\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeMap = {\n small: 18,\n medium: 20,\n large: 24,\n };\n\n const radioSize = sizeMap[size] || sizeMap.medium;\n const dotSize = checked ? radioSize * 0.5 : 0;\n\n return (\n <label\n className={cn(\n \"relative inline-flex items-center justify-center cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n style={{ ...mergedSx, ...style }}\n >\n <input\n ref={ref}\n type=\"radio\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n value={value}\n name={radioGroup?.name}\n className=\"sr-only\"\n {...props}\n />\n <div\n className={cn(\n \"flex items-center justify-center transition-all duration-200 border-2 rounded-full bg-transparent transition-colors\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n checked\n ? \"border-primary\"\n : hovered && !disabled\n ? \"border-primary\"\n : \"border-input\"\n )}\n style={{\n width: `${radioSize}px`,\n height: `${radioSize}px`,\n }}\n onMouseEnter={() => !disabled && setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n {checked && (\n <div\n className=\"bg-primary rounded-full transition-all\"\n style={{\n width: `${dotSize}px`,\n height: `${dotSize}px`,\n }}\n />\n )}\n </div>\n </label>\n );\n }\n);\nRadio.displayName = \"Radio\";\n\nexport { Radio };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Collapse = React.forwardRef(\n (\n {\n className,\n style,\n in: inProp = false,\n timeout = \"auto\",\n children,\n unmountOnExit = false,\n orientation = \"vertical\",\n collapsedSize = \"0px\",\n ...props\n },\n ref\n ) => {\n const [mounted, setMounted] = React.useState(inProp || !unmountOnExit);\n const [height, setHeight] = React.useState(() => {\n // Initial height: if expanding, use auto (for vertical) or 0px (for horizontal); if collapsing, use collapsedSize\n // For horizontal, we'll measure the actual width in useEffect, so start with 0px\n return inProp ? (orientation === \"vertical\" ? \"auto\" : \"0px\") : collapsedSize;\n });\n const contentRef = React.useRef(null);\n const isInitialMount = React.useRef(true);\n\n React.useEffect(() => {\n if (unmountOnExit) {\n if (inProp) {\n setMounted(true);\n // Reset isInitialMount when component remounts\n isInitialMount.current = true;\n } else {\n // Delay unmount to allow animation\n const timer = setTimeout(() => {\n setMounted(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }\n }, [inProp, unmountOnExit]);\n\n React.useEffect(() => {\n const isVertical = orientation === \"vertical\";\n \n if (!contentRef.current) {\n // Wait for content to mount, then set initial size\n if (inProp) {\n // Use a small delay to ensure content is rendered\n const timer = setTimeout(() => {\n if (contentRef.current) {\n const size = isVertical\n ? contentRef.current.scrollHeight\n : contentRef.current.scrollWidth;\n setHeight(size > 0 ? `${size}px` : (isVertical ? \"auto\" : \"0px\"));\n }\n }, 0);\n return () => clearTimeout(timer);\n }\n return;\n }\n\n // Skip animation on initial mount if already expanded\n if (isInitialMount.current && inProp) {\n isInitialMount.current = false;\n const size = isVertical\n ? contentRef.current.scrollHeight\n : contentRef.current.scrollWidth;\n setHeight(size > 0 ? `${size}px` : (isVertical ? \"auto\" : \"0px\"));\n // After a brief moment, set to auto for dynamic content (only for vertical)\n if (isVertical) {\n const timer = setTimeout(() => {\n setHeight(\"auto\");\n }, 50);\n return () => clearTimeout(timer);\n }\n return;\n }\n isInitialMount.current = false;\n\n const element = contentRef.current;\n\n if (inProp) {\n // Expanding: measure current size and animate to full size\n const currentSize = isVertical\n ? element.scrollHeight\n : element.scrollWidth;\n if (currentSize > 0) {\n setHeight(`${currentSize}px`);\n\n // After transition, set to auto for dynamic content (only for vertical)\n if (isVertical) {\n const timer = setTimeout(() => {\n setHeight(\"auto\");\n }, 300);\n return () => clearTimeout(timer);\n }\n } else {\n setHeight(isVertical ? \"auto\" : \"0px\");\n }\n } else {\n // Collapsing: measure current size and animate to collapsed\n const currentSize = isVertical\n ? element.scrollHeight\n : element.scrollWidth;\n if (currentSize > 0) {\n setHeight(`${currentSize}px`);\n\n // Force reflow before collapsing\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setHeight(collapsedSize);\n });\n });\n } else {\n setHeight(collapsedSize);\n }\n }\n }, [inProp, collapsedSize, orientation]);\n\n if (unmountOnExit && !mounted) {\n return null;\n }\n\n const isVertical = orientation === \"vertical\";\n \n // Determine the actual size to use for styling\n // When collapsed (!inProp), always use collapsedSize to ensure proper hiding\n // When expanded (inProp), use height to support animation\n // If height is still initial value (0px) and inProp is true, use auto temporarily to show content\n const actualSize = inProp \n ? (height === \"0px\" ? \"auto\" : height) \n : collapsedSize;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden transition-all\",\n !isVertical && \"inline-block\",\n className\n )}\n style={{\n ...(isVertical\n ? {\n height: actualSize,\n maxHeight: inProp ? \"none\" : collapsedSize,\n }\n : {\n width: actualSize,\n maxWidth: inProp ? \"none\" : collapsedSize,\n minWidth: 0,\n }),\n transitionDuration:\n timeout === \"auto\"\n ? \"300ms\"\n : typeof timeout === \"number\"\n ? `${timeout}ms`\n : \"300ms\",\n transitionTimingFunction: \"ease-in-out\",\n ...style,\n }}\n {...props}\n >\n <div\n ref={contentRef}\n style={\n !isVertical\n ? {\n whiteSpace: \"nowrap\",\n display: \"inline-block\",\n width: \"fit-content\",\n minWidth: \"fit-content\",\n }\n : undefined\n }\n >\n {children}\n </div>\n </div>\n );\n }\n);\n\nCollapse.displayName = \"Collapse\";\n\nexport { Collapse };\n","import * as React from \"react\";\nimport { Typography } from \"./typography\";\n\nconst DialogContentText = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <Typography\n ref={ref}\n variant=\"body2\"\n component=\"p\"\n color=\"muted\"\n className={className}\n style={{\n marginBottom: \"16px\",\n ...style,\n }}\n {...props}\n >\n {children}\n </Typography>\n );\n }\n);\n\nDialogContentText.displayName = \"DialogContentText\";\n\nexport { DialogContentText };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Container = React.forwardRef(\n (\n {\n className,\n style,\n maxWidth = \"lg\",\n fixed = false,\n disableGutters = false,\n children,\n ...props\n },\n ref\n ) => {\n // Map maxWidth to actual width values\n const getMaxWidth = () => {\n if (maxWidth === false) {\n return \"none\";\n }\n const maxWidthMap = {\n xs: \"444px\",\n sm: \"600px\",\n md: \"900px\",\n lg: \"1200px\",\n xl: \"1536px\",\n };\n return maxWidthMap[maxWidth] || maxWidthMap.lg;\n };\n\n const maxWidthValue = getMaxWidth();\n\n // Get padding based on disableGutters\n const getPadding = () => {\n if (disableGutters) {\n return { paddingLeft: 0, paddingRight: 0 };\n }\n // Default MUI Container padding\n return {\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"mx-auto\", className)}\n style={{\n width: \"100%\",\n maxWidth: maxWidthValue,\n ...(fixed && { width: maxWidthValue }),\n ...getPadding(),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nContainer.displayName = \"Container\";\n\nexport { Container };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Divider = React.forwardRef(\n (\n {\n className,\n style = {},\n orientation = \"horizontal\",\n variant = \"fullWidth\",\n flexItem = false,\n light = false,\n textAlign = \"center\",\n children,\n ...props\n },\n ref\n ) => {\n const isVertical = orientation === \"vertical\";\n const isInset = variant === \"inset\";\n const isMiddle = variant === \"middle\";\n\n // Extract margin values from style prop\n const styleMarginLeft = style?.marginLeft;\n const styleMarginRight = style?.marginRight;\n\n // Get divider styles\n const getDividerStyles = () => {\n const baseStyles = {\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n };\n\n if (isVertical) {\n // For vertical divider, use marginLeft and marginRight for horizontal spacing\n // Default spacing: 8px on both sides, unless variant or style specifies otherwise\n const defaultMargin = \"8px\";\n const marginLeft = styleMarginLeft || (isInset ? \"16px\" : defaultMargin);\n const marginRight = styleMarginRight || (isInset ? \"16px\" : defaultMargin);\n \n return {\n ...baseStyles,\n borderLeftWidth: \"1px\",\n borderLeftStyle: \"solid\",\n height: \"100%\",\n width: \"1px\",\n marginLeft: marginLeft,\n marginRight: marginRight,\n };\n }\n\n // Horizontal divider\n // Calculate width based on margins to prevent overflow\n // inset: only left margin, middle: both margins, fullWidth: no margins\n const marginLeft =\n styleMarginLeft || (isInset ? \"16px\" : isMiddle ? \"16px\" : \"0px\");\n const marginRight =\n styleMarginRight || (isInset ? \"0px\" : isMiddle ? \"16px\" : \"0px\");\n\n // Parse margin values to calculate total margin\n const parseMargin = (margin) => {\n if (!margin || margin === \"0px\" || margin === \"0\") return 0;\n if (typeof margin === \"number\") return margin;\n const match = margin.toString().match(/([\\d.]+)/);\n return match ? parseFloat(match[1]) : 0;\n };\n\n const marginLeftNum = parseMargin(marginLeft);\n const marginRightNum = parseMargin(marginRight);\n const totalMargin = marginLeftNum + marginRightNum;\n\n const styles = {\n ...baseStyles,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n boxSizing: \"border-box\",\n };\n \n // Set width and margins based on variant\n if (flexItem) {\n styles.width = \"1px\";\n } else if (variant === \"fullWidth\") {\n // fullWidth: 100% width, no horizontal margins\n styles.width = \"100%\";\n styles.marginLeft = \"0px\";\n styles.marginRight = \"0px\";\n } else {\n // inset or middle: calculate width based on margins\n styles.width = totalMargin > 0 ? `calc(100% - ${totalMargin}px)` : \"100%\";\n if (marginLeft !== \"0px\" && marginLeft !== \"0\") {\n styles.marginLeft = marginLeft;\n }\n if (marginRight !== \"0px\" && marginRight !== \"0\") {\n styles.marginRight = marginRight;\n }\n }\n \n return styles;\n };\n\n // If has children, render as wrapper with text\n if (children) {\n // Calculate margin for variant\n // inset: only left margin, middle: both margins, fullWidth: no margins\n const leftMargin = styleMarginLeft || (isInset ? \"16px\" : isMiddle ? \"16px\" : \"0px\");\n const rightMargin = styleMarginRight || (isInset ? \"0px\" : isMiddle ? \"16px\" : \"0px\");\n \n return (\n <div\n ref={ref}\n className={cn(\"flex items-center\", className)}\n style={{\n width: \"100%\",\n margin: \"8px 0\",\n ...style,\n }}\n {...props}\n >\n <div\n style={{\n flex: 1,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n marginLeft: leftMargin !== \"0px\" ? leftMargin : undefined,\n }}\n />\n <div\n style={{\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n textAlign: textAlign,\n color: \"hsl(var(--muted-foreground))\",\n fontSize: \"0.875rem\",\n }}\n >\n {children}\n </div>\n <div\n style={{\n flex: 1,\n borderTopWidth: \"1px\",\n borderTopStyle: \"solid\",\n borderColor: light ? \"rgba(0, 0, 0, 0.08)\" : \"hsl(var(--border))\",\n marginRight: rightMargin !== \"0px\" ? rightMargin : undefined,\n }}\n />\n </div>\n );\n }\n\n // Simple divider without text\n const dividerStyles = getDividerStyles();\n // Add default vertical spacing for horizontal dividers if not specified\n if (!isVertical && !flexItem) {\n if (style.marginTop === undefined && dividerStyles.marginTop === undefined) {\n dividerStyles.marginTop = \"8px\";\n }\n if (style.marginBottom === undefined && dividerStyles.marginBottom === undefined) {\n dividerStyles.marginBottom = \"8px\";\n }\n }\n \n // For fullWidth, ensure no horizontal margins override the divider styles\n const finalStyle = { ...dividerStyles, ...style };\n if (!isVertical && variant === \"fullWidth\" && !flexItem) {\n finalStyle.width = \"100%\";\n finalStyle.marginLeft = style.marginLeft ?? \"0px\";\n finalStyle.marginRight = style.marginRight ?? \"0px\";\n }\n \n return (\n <div\n ref={ref}\n className={cn(\n isVertical ? \"inline-block\" : \"block\",\n flexItem && \"self-stretch\",\n className\n )}\n style={{\n padding: 0,\n display: isVertical ? \"inline-block\" : \"block\",\n ...finalStyle,\n }}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider };\n","import * as React from \"react\";\nimport { cn, useIsDarkMode } from \"../lib/utils\";\n\nconst Avatar = React.forwardRef(\n (\n {\n className,\n style,\n src,\n alt,\n children,\n variant = \"circular\",\n sizes,\n imgProps,\n ...props\n },\n ref\n ) => {\n // Get variant styles\n const getVariantStyles = () => {\n if (variant === \"rounded\") {\n return { borderRadius: \"8px\" };\n }\n if (variant === \"square\") {\n return { borderRadius: \"0px\" };\n }\n // circular (default)\n return { borderRadius: \"50%\" };\n };\n\n const defaultStyles = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n position: \"relative\",\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n lineHeight: 1,\n overflow: \"hidden\",\n userSelect: \"none\",\n backgroundColor: \"hsl(var(--muted))\",\n color: \"hsl(var(--foreground))\",\n fontWeight: 500,\n width: \"40px\",\n height: \"40px\",\n ...getVariantStyles(),\n };\n\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n\n // If has src, render as image\n if (src) {\n // Get text color based on theme mode if backgroundColor is set but color is not\n const getTextColor = () => {\n // If color is explicitly set in style, use it\n if (style?.color) {\n return style.color;\n }\n // If backgroundColor is set in style, determine text color based on dark mode\n if (style?.backgroundColor) {\n return isDark ? \"#000000\" : \"#ffffff\";\n }\n // Otherwise use default color\n return defaultStyles.color;\n };\n\n // Merge styles: defaultStyles first, then style to allow overrides\n // But preserve borderRadius and backgroundColor from defaultStyles if not explicitly set in style\n // IMPORTANT: color must be set last to ensure it's not overridden by style spread\n const { color: styleColor, ...styleWithoutColor } = style || {};\n const mergedStylesWithSrc = {\n ...defaultStyles,\n ...styleWithoutColor, // style without color to avoid override\n // Ensure borderRadius is preserved if not explicitly set in style\n borderRadius: style?.borderRadius ?? defaultStyles.borderRadius,\n // Ensure backgroundColor is preserved if not explicitly set in style\n backgroundColor:\n style?.backgroundColor ?? defaultStyles.backgroundColor,\n // Get text color based on theme mode (set last to ensure it's not overridden)\n color: getTextColor(),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"relative\", className)}\n style={mergedStylesWithSrc}\n {...props}\n >\n <img\n src={src}\n alt={alt}\n sizes={sizes}\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n {...imgProps}\n />\n {children && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {children}\n </div>\n )}\n </div>\n );\n }\n\n // Render as div with children\n // Get text color based on theme mode if backgroundColor is set but color is not\n const getTextColor = () => {\n // If color is explicitly set in style, use it\n if (style?.color) {\n return style.color;\n }\n // If backgroundColor is set in style, determine text color based on dark mode\n if (style?.backgroundColor) {\n return isDark ? \"#000000\" : \"#ffffff\";\n }\n // Otherwise use default color\n return defaultStyles.color;\n };\n\n // Merge styles: defaultStyles first, then style to allow overrides\n // But preserve borderRadius and backgroundColor from defaultStyles if not explicitly set in style\n // IMPORTANT: color must be set last to ensure it's not overridden by style spread\n const { color: styleColor, ...styleWithoutColor } = style || {};\n const mergedStyles = {\n ...defaultStyles,\n ...styleWithoutColor, // style without color to avoid override\n // Ensure borderRadius is preserved if not explicitly set in style\n borderRadius: style?.borderRadius ?? defaultStyles.borderRadius,\n // Ensure backgroundColor is preserved if not explicitly set in style\n backgroundColor: style?.backgroundColor ?? defaultStyles.backgroundColor,\n // Get text color based on theme mode (set last to ensure it's not overridden)\n color: getTextColor(),\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyles} {...props}>\n {children}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Stack = React.forwardRef(\n (\n {\n className,\n direction = \"column\",\n spacing = 0,\n justifyContent,\n alignItems,\n flexWrap,\n gap,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert MUI spacing to pixels (MUI spacing unit = 8px)\n const spacingPx = typeof spacing === \"number\" ? spacing * 8 : 0;\n\n // Use gap if provided, otherwise use spacing\n const gapValue = gap !== undefined ? gap : spacingPx;\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Build flex direction class\n const directionClass =\n direction === \"row\"\n ? \"flex-row\"\n : direction === \"row-reverse\"\n ? \"flex-row-reverse\"\n : direction === \"column-reverse\"\n ? \"column-reverse\"\n : \"flex-col\";\n\n // Build flex wrap class\n const wrapClass =\n flexWrap === \"wrap\"\n ? \"flex-wrap\"\n : flexWrap === \"nowrap\"\n ? \"flex-nowrap\"\n : \"\";\n\n // Build justifyContent class\n const justifyContentClass =\n justifyContent === \"flex-start\"\n ? \"justify-start\"\n : justifyContent === \"flex-end\"\n ? \"justify-end\"\n : justifyContent === \"center\"\n ? \"justify-center\"\n : justifyContent === \"space-between\"\n ? \"justify-between\"\n : justifyContent === \"space-around\"\n ? \"justify-around\"\n : justifyContent === \"space-evenly\"\n ? \"justify-evenly\"\n : \"\";\n\n // Build alignItems class\n const alignItemsClass =\n alignItems === \"flex-start\"\n ? \"items-start\"\n : alignItems === \"flex-end\"\n ? \"items-end\"\n : alignItems === \"center\"\n ? \"items-center\"\n : alignItems === \"baseline\"\n ? \"items-baseline\"\n : alignItems === \"stretch\"\n ? \"items-stretch\"\n : \"\";\n\n const mergedStyle = {\n display: \"flex\",\n ...(gapValue && { gap: `${gapValue}px` }),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n directionClass,\n wrapClass,\n justifyContentClass,\n alignItemsClass,\n className\n )}\n style={mergedStyle}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStack.displayName = \"Stack\";\n\nexport { Stack };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst InputAdornment = React.forwardRef(\n (\n {\n className,\n position = \"end\",\n disablePointerEvents = false,\n disableTypography = false,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disablePointerEvents && \"pointer-events-none\",\n className\n )}\n style={{\n pointerEvents: disablePointerEvents ? \"none\" : \"auto\",\n cursor: disablePointerEvents ? \"default\" : \"inherit\",\n }}\n {...props}\n >\n {disableTypography ? (\n children\n ) : (\n <span className=\"text-sm text-muted-foreground\">{children}</span>\n )}\n </div>\n );\n }\n);\n\nInputAdornment.displayName = \"InputAdornment\";\n\nexport { InputAdornment };\n","import * as React from \"react\";\nimport { cn, spacingToPx } from \"../lib/utils\";\n\nconst Paper = React.forwardRef(\n (\n {\n className,\n elevation = 0,\n square = false,\n variant = \"elevation\",\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided, handling MUI spacing\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n\n // Convert MUI spacing properties to CSS\n const converted = { ...sxObj };\n\n // Padding shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n\n // Margin shortcuts\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n\n // Gap\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n }\n\n return converted;\n }, [sx]);\n\n // Get elevation shadow\n const getElevationShadow = () => {\n if (variant === \"outlined\") {\n return {\n boxShadow: \"none\",\n border: \"1px solid hsl(var(--border))\",\n };\n }\n // elevation variant (default) - Material Design elevation shadows\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range (0-24)\n const clampedElevation = Math.max(0, Math.min(24, elevation));\n return { boxShadow: shadows[clampedElevation] || shadows[1] };\n };\n\n // Get border color based on elevation (use shadow color as border)\n const getBorderColor = () => {\n // Use a subtle border color similar to shadow effect\n // elevation 1 shadow: rgba(0,0,0,0.2), rgba(0,0,0,0.14), rgba(0,0,0,0.12)\n // Convert to a subtle border color\n return \"rgba(0, 0, 0, 0.12)\"; // Light gray border, similar to shadow color\n };\n\n const elevationShadow = getElevationShadow();\n \n return (\n <div\n ref={ref}\n className={cn(\n \"bg-card\",\n !square && \"rounded-lg\",\n variant === \"outlined\" && \"border border-border\",\n className\n )}\n style={{\n ...elevationShadow,\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nPaper.displayName = \"Paper\";\n\nexport { Paper };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst AppBar = React.forwardRef(\n (\n {\n className,\n position = \"fixed\",\n color = \"default\",\n elevation = 4,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Get elevation shadow (Material Design elevation system)\n const getElevationShadow = () => {\n const shadows = {\n 0: \"none\",\n 1: \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n 2: \"0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)\",\n 3: \"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)\",\n 4: \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n 5: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)\",\n 6: \"0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)\",\n 7: \"0px 4px 5px -2px rgba(0,0,0,0.2), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)\",\n 8: \"0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)\",\n 9: \"0px 5px 6px -3px rgba(0,0,0,0.2), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)\",\n 10: \"0px 6px 6px -3px rgba(0,0,0,0.2), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)\",\n 11: \"0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)\",\n 12: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)\",\n 13: \"0px 7px 8px -4px rgba(0,0,0,0.2), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)\",\n 14: \"0px 7px 9px -4px rgba(0,0,0,0.2), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)\",\n 15: \"0px 8px 9px -5px rgba(0,0,0,0.2), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)\",\n 16: \"0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)\",\n 17: \"0px 8px 11px -5px rgba(0,0,0,0.2), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)\",\n 18: \"0px 9px 11px -5px rgba(0,0,0,0.2), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)\",\n 19: \"0px 9px 12px -6px rgba(0,0,0,0.2), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)\",\n 20: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)\",\n 21: \"0px 10px 13px -6px rgba(0,0,0,0.2), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)\",\n 22: \"0px 10px 14px -6px rgba(0,0,0,0.2), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)\",\n 23: \"0px 11px 14px -7px rgba(0,0,0,0.2), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)\",\n 24: \"0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)\",\n };\n // Clamp elevation to valid range and get shadow\n const clampedElevation = Math.max(0, Math.min(24, Math.round(elevation)));\n return { boxShadow: shadows[clampedElevation] || shadows[4] };\n };\n\n // Get color classes\n const getColorClasses = () => {\n if (color === \"primary\") return \"bg-primary text-primary-foreground\";\n if (color === \"secondary\")\n return \"bg-secondary text-secondary-foreground\";\n if (color === \"transparent\") return \"bg-transparent text-foreground\";\n return \"bg-card text-foreground\"; // default\n };\n\n // Set position styles for fixed/absolute/sticky positions\n const positionStyles = \n position === \"fixed\" || position === \"absolute\" || position === \"sticky\"\n ? {\n top: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n }\n : {};\n\n return (\n <div\n ref={ref}\n className={cn(\n getColorClasses(),\n \"z-app-bar\",\n position === \"static\" || position === \"relative\" ? \"w-full\" : \"\",\n className\n )}\n style={{\n position: position,\n ...positionStyles,\n ...getElevationShadow(),\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nAppBar.displayName = \"AppBar\";\n\nexport { AppBar };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Toolbar = React.forwardRef(\n ({ className, sx, style, variant = \"regular\", children, ...props }, ref) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Get variant styles\n const getVariantStyles = () => {\n if (variant === \"dense\") {\n return {\n minHeight: \"48px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n } else {\n return {\n minHeight: \"64px\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n };\n }\n };\n\n const mergedStyle = {\n display: \"flex\",\n alignItems: \"center\",\n ...getVariantStyles(),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyle} {...props}>\n {children}\n </div>\n );\n }\n);\n\nToolbar.displayName = \"Toolbar\";\n\nexport { Toolbar };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/utils\";\n\nconst Menu = React.forwardRef(\n (\n {\n className,\n anchorEl,\n open = false,\n onClose,\n PaperProps,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"left\" },\n transformOrigin = { vertical: \"top\", horizontal: \"left\" },\n position: positionProp = \"fixed\",\n disablePortal = false,\n border = false,\n children,\n ...props\n },\n ref\n ) => {\n // If using Portal, position must be fixed to work correctly\n const positionType = disablePortal ? positionProp : \"fixed\";\n const menuRef = React.useRef(null);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n\n React.useImperativeHandle(ref, () => menuRef.current);\n\n // Calculate position using useLayoutEffect to ensure DOM is ready\n React.useLayoutEffect(() => {\n if (!open || !anchorEl) {\n setPosition({ top: 0, left: 0 });\n return;\n }\n\n let isMounted = true;\n let rafId = null;\n\n // Use requestAnimationFrame to ensure DOM is fully updated\n rafId = requestAnimationFrame(() => {\n // Check if component is still mounted before updating state\n if (!isMounted) return;\n\n try {\n // Check if anchorEl is still valid and connected to DOM\n if (!anchorEl || !anchorEl.getBoundingClientRect || !anchorEl.isConnected) {\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n return;\n }\n\n const anchorRect = anchorEl.getBoundingClientRect();\n \n // Validate that getBoundingClientRect returned valid values\n if (!anchorRect || isNaN(anchorRect.bottom) || isNaN(anchorRect.left)) {\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n return;\n }\n\n if (positionType === \"fixed\") {\n // Fixed positioning: use viewport coordinates\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n \n // Get menu dimensions (estimate if not yet rendered)\n const menuWidth = menuRef.current?.offsetWidth || PaperProps?.style?.minWidth || 180;\n const menuHeight = menuRef.current?.offsetHeight || 100;\n \n // Calculate initial position based on anchorOrigin\n let top = 0;\n let left = 0;\n const gap = 8;\n \n // Vertical positioning\n if (anchorOrigin.vertical === 'bottom') {\n top = anchorRect.bottom + gap;\n } else if (anchorOrigin.vertical === 'top') {\n top = anchorRect.top - menuHeight - gap;\n } else {\n // center\n top = anchorRect.top + (anchorRect.height - menuHeight) / 2;\n }\n \n // Horizontal positioning\n if (anchorOrigin.horizontal === 'left') {\n left = anchorRect.left;\n } else if (anchorOrigin.horizontal === 'right') {\n left = anchorRect.right - menuWidth;\n } else {\n // center\n left = anchorRect.left + (anchorRect.width - menuWidth) / 2;\n }\n \n // Boundary detection and adjustment\n const padding = 16;\n \n // Adjust horizontal position if menu would overflow\n if (left + menuWidth > viewportWidth - padding) {\n left = viewportWidth - menuWidth - padding;\n }\n if (left < padding) {\n left = padding;\n }\n \n // Adjust vertical position if menu would overflow\n if (top + menuHeight > viewportHeight - padding) {\n if (anchorOrigin.vertical === 'bottom') {\n // Try to show above anchor\n top = anchorRect.top - menuHeight - gap;\n }\n // Clamp to viewport\n if (top + menuHeight > viewportHeight - padding) {\n top = viewportHeight - menuHeight - padding;\n }\n }\n if (top < padding) {\n top = padding;\n }\n \n if (isMounted) {\n setPosition({ top, left });\n }\n } else {\n // Absolute positioning: use relative coordinates\n // Find the nearest positioned ancestor\n let container = anchorEl.parentElement;\n while (container && container !== document.body && container.isConnected) {\n try {\n const style = window.getComputedStyle(container);\n if (style.position === 'relative' || style.position === 'absolute' || style.position === 'fixed') {\n break;\n }\n container = container.parentElement;\n } catch (e) {\n break;\n }\n }\n \n let containerRect = { top: 0, left: 0 };\n if (container && container !== document.body && container.isConnected && container.getBoundingClientRect) {\n try {\n containerRect = container.getBoundingClientRect();\n if (!containerRect || isNaN(containerRect.top) || isNaN(containerRect.left)) {\n containerRect = { top: 0, left: 0 };\n }\n } catch (e) {\n containerRect = { top: 0, left: 0 };\n }\n }\n \n // Calculate relative position\n const gap = 8;\n let relativeTop = 0;\n let relativeLeft = 0;\n \n if (anchorOrigin.vertical === 'bottom') {\n relativeTop = anchorRect.bottom - containerRect.top + gap;\n } else if (anchorOrigin.vertical === 'top') {\n const menuHeight = menuRef.current?.offsetHeight || 100;\n relativeTop = anchorRect.top - containerRect.top - menuHeight - gap;\n } else {\n const menuHeight = menuRef.current?.offsetHeight || 100;\n relativeTop = anchorRect.top - containerRect.top + (anchorRect.height - menuHeight) / 2;\n }\n \n if (anchorOrigin.horizontal === 'left') {\n relativeLeft = anchorRect.left - containerRect.left;\n } else if (anchorOrigin.horizontal === 'right') {\n const menuWidth = menuRef.current?.offsetWidth || PaperProps?.style?.minWidth || 180;\n relativeLeft = anchorRect.right - containerRect.left - menuWidth;\n } else {\n const menuWidth = menuRef.current?.offsetWidth || PaperProps?.style?.minWidth || 180;\n relativeLeft = anchorRect.left - containerRect.left + (anchorRect.width - menuWidth) / 2;\n }\n \n if (isMounted) {\n setPosition({ top: relativeTop, left: relativeLeft });\n }\n }\n } catch (e) {\n // Fallback position - only update if mounted\n if (isMounted) {\n setPosition({ top: 50, left: 0 });\n }\n }\n });\n\n // Update position on scroll and resize (only for fixed positioning)\n if (positionType === \"fixed\") {\n const handleUpdate = () => {\n rafId = requestAnimationFrame(() => {\n if (isMounted) {\n // Re-run position calculation\n const anchorRect = anchorEl?.getBoundingClientRect();\n if (anchorRect) {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const menuWidth = menuRef.current?.offsetWidth || PaperProps?.style?.minWidth || 180;\n const menuHeight = menuRef.current?.offsetHeight || 100;\n const gap = 8;\n const padding = 16;\n \n let top = anchorOrigin.vertical === 'bottom' \n ? anchorRect.bottom + gap\n : anchorOrigin.vertical === 'top'\n ? anchorRect.top - menuHeight - gap\n : anchorRect.top + (anchorRect.height - menuHeight) / 2;\n \n let left = anchorOrigin.horizontal === 'left'\n ? anchorRect.left\n : anchorOrigin.horizontal === 'right'\n ? anchorRect.right - menuWidth\n : anchorRect.left + (anchorRect.width - menuWidth) / 2;\n \n if (left + menuWidth > viewportWidth - padding) {\n left = viewportWidth - menuWidth - padding;\n }\n if (left < padding) left = padding;\n if (top + menuHeight > viewportHeight - padding) {\n if (anchorOrigin.vertical === 'bottom') {\n top = anchorRect.top - menuHeight - gap;\n }\n if (top + menuHeight > viewportHeight - padding) {\n top = viewportHeight - menuHeight - padding;\n }\n }\n if (top < padding) top = padding;\n \n setPosition({ top, left });\n }\n }\n });\n };\n \n window.addEventListener('scroll', handleUpdate, true);\n window.addEventListener('resize', handleUpdate);\n \n return () => {\n isMounted = false;\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n window.removeEventListener('scroll', handleUpdate, true);\n window.removeEventListener('resize', handleUpdate);\n };\n } else {\n return () => {\n isMounted = false;\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n };\n }\n }, [open, anchorEl, anchorOrigin, positionType, PaperProps?.style?.minWidth]);\n\n // Recalculate position after menu is rendered (to get actual dimensions)\n React.useLayoutEffect(() => {\n if (!open || !anchorEl || !menuRef.current || positionType !== \"fixed\") return;\n\n const updatePositionWithRealSize = () => {\n try {\n const anchorRect = anchorEl.getBoundingClientRect();\n if (!anchorRect) return;\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n \n // Get actual menu dimensions\n const menuWidth = menuRef.current.offsetWidth;\n const menuHeight = menuRef.current.offsetHeight;\n \n if (!menuWidth || !menuHeight) return; // Menu not fully rendered yet\n \n const gap = 8;\n const padding = 16;\n \n // Calculate initial position based on anchorOrigin\n let top = 0;\n let left = 0;\n \n // Vertical positioning\n if (anchorOrigin.vertical === 'bottom') {\n top = anchorRect.bottom + gap;\n } else if (anchorOrigin.vertical === 'top') {\n top = anchorRect.top - menuHeight - gap;\n } else {\n top = anchorRect.top + (anchorRect.height - menuHeight) / 2;\n }\n \n // Horizontal positioning\n if (anchorOrigin.horizontal === 'left') {\n left = anchorRect.left;\n } else if (anchorOrigin.horizontal === 'right') {\n left = anchorRect.right - menuWidth;\n } else {\n left = anchorRect.left + (anchorRect.width - menuWidth) / 2;\n }\n \n // Strict boundary detection - ensure menu is fully within viewport\n // Adjust horizontal position\n if (left + menuWidth > viewportWidth - padding) {\n // Menu would overflow on the right, align to right edge\n left = viewportWidth - menuWidth - padding;\n }\n if (left < padding) {\n // Menu would overflow on the left\n left = padding;\n }\n \n // Adjust vertical position\n if (top + menuHeight > viewportHeight - padding) {\n // Menu would overflow on the bottom\n if (anchorOrigin.vertical === 'bottom') {\n // Try to show above anchor\n top = anchorRect.top - menuHeight - gap;\n }\n // If still overflowing, clamp to viewport\n if (top + menuHeight > viewportHeight - padding) {\n top = viewportHeight - menuHeight - padding;\n }\n }\n if (top < padding) {\n // Menu would overflow on the top\n top = padding;\n }\n \n // Ensure menu doesn't exceed viewport in any direction\n if (left < 0) left = padding;\n if (top < 0) top = padding;\n if (left + menuWidth > viewportWidth) {\n left = Math.max(padding, viewportWidth - menuWidth - padding);\n }\n if (top + menuHeight > viewportHeight) {\n top = Math.max(padding, viewportHeight - menuHeight - padding);\n }\n \n setPosition({ top, left });\n } catch (e) {\n // Silently fail if calculation error\n }\n };\n\n // Use requestAnimationFrame to ensure DOM is updated\n const rafId = requestAnimationFrame(() => {\n updatePositionWithRealSize();\n });\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [open, anchorEl, anchorOrigin, positionType]); // Re-run when menu opens or anchor changes\n\n // Handle backdrop click\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (e) => {\n if (\n menuRef.current &&\n !menuRef.current.contains(e.target) &&\n anchorEl &&\n !anchorEl.contains(e.target)\n ) {\n if (onClose) {\n onClose(e, \"backdropClick\");\n }\n }\n };\n\n const handleEscape = (e) => {\n if (e.key === \"Escape\" && onClose) {\n onClose(e, \"escapeKeyDown\");\n }\n };\n\n // Use capture phase to catch events before they reach other elements\n document.addEventListener(\"mousedown\", handleClickOutside, true);\n document.addEventListener(\"keydown\", handleEscape, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside, true);\n document.removeEventListener(\"keydown\", handleEscape, true);\n };\n }, [open, onClose, anchorEl]);\n\n if (!open || !anchorEl) return null;\n \n // Get theme mode for shadow\n const isDark = document.documentElement.classList.contains('dark') || \n window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n const menuElement = (\n <div\n ref={menuRef}\n className={cn(\"rounded-lg shadow-lg\", className)}\n style={{\n position: positionType,\n top: `${position.top}px`,\n left: `${position.left}px`,\n zIndex: 1300,\n pointerEvents: \"auto\",\n visibility: \"visible\",\n display: \"block\",\n opacity: 1,\n backgroundColor: \"hsl(var(--card))\",\n boxShadow: isDark\n ? \"0px 4px 12px rgba(0, 0, 0, 0.4), 0px 0px 0px 1px rgba(255, 255, 255, 0.1)\"\n : \"0px 4px 12px rgba(0, 0, 0, 0.15)\",\n ...(border || PaperProps?.style?.border ? {\n border: PaperProps?.style?.border || (isDark\n ? \"1px solid rgba(255, 255, 255, 0.1)\"\n : \"1px solid hsl(var(--border))\")\n } : {}),\n borderRadius: PaperProps?.style?.borderRadius || \"8px\",\n minWidth: PaperProps?.style?.minWidth || 180,\n maxWidth: \"calc(100vw - 32px)\",\n padding: \"4px 0\",\n height: \"auto\",\n overflow: \"visible\",\n ...PaperProps?.style,\n ...props.style,\n }}\n {...Object.fromEntries(\n Object.entries(props || {}).filter(([key]) => key !== \"style\")\n )}\n >\n {children}\n </div>\n );\n\n // Use Portal to render menu at body level to avoid positioning constraints\n // Only use Portal if not disabled\n if (disablePortal) {\n return menuElement;\n }\n \n return typeof document !== \"undefined\"\n ? createPortal(menuElement, document.body)\n : null;\n }\n);\n\nMenu.displayName = \"Menu\";\n\nconst MenuItem = React.forwardRef(\n (\n { className, onClick, disabled = false, sx, style, children, ...props },\n ref\n ) => {\n const [hovered, setHovered] = React.useState(false);\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Use design tokens for consistent spacing and typography\n const menuItemPadding = { x: 16, y: 12 }; // px-4 py-3 (increased from py-2)\n const menuItemFontSize = \"0.875rem\"; // text-sm\n\n const mergedStyle = {\n display: \"flex\",\n alignItems: \"center\",\n minHeight: \"36px\", // Ensure minimum height for menu items\n height: \"auto\", // Ensure height is auto\n paddingLeft: `${menuItemPadding.x}px`,\n paddingRight: `${menuItemPadding.x}px`,\n paddingTop: `${menuItemPadding.y}px`,\n paddingBottom: `${menuItemPadding.y}px`,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n fontSize: menuItemFontSize,\n color: disabled\n ? \"#666666\"\n : \"#000000\", // Use fixed color for testing\n backgroundColor:\n hovered && !disabled ? \"hsl(var(--accent))\" : \"transparent\",\n opacity: disabled\n ? 0.5\n : sxStyles.opacity !== undefined\n ? sxStyles.opacity\n : 1,\n transition: \"background-color 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n whiteSpace: \"nowrap\", // Prevent text wrapping\n visibility: \"visible\",\n textAlign: \"left\",\n fontWeight: \"normal\",\n width: \"100%\",\n boxSizing: \"border-box\",\n ...sxStyles,\n ...style,\n };\n\n const handleClick = (e) => {\n if (disabled) return;\n if (onClick) {\n onClick(e);\n }\n };\n\n const handleMouseDown = (e) => {\n if (disabled) return;\n e.preventDefault(); // Prevent default behavior\n e.stopPropagation(); // Prevent event bubbling to parent elements\n };\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n // Support Enter and Space keys for keyboard navigation\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n if (onClick) {\n onClick(e);\n }\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n className={cn(\n \"focus:outline-none focus:bg-accent focus:text-accent-foreground\",\n className\n )}\n style={mergedStyle}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMenuItem.displayName = \"MenuItem\";\n\nconst MenuItemIcon = React.forwardRef(\n ({ className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center\", className)}\n style={{\n minWidth: \"40px\",\n marginRight: \"8px\",\n color: \"inherit\",\n fontSize: \"1.25rem\",\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nMenuItemIcon.displayName = \"MenuItemIcon\";\n\nconst MenuItemText = React.forwardRef(\n ({ className, style, children, primary, secondary, ...props }, ref) => {\n // Determine what content to display\n const content = primary !== undefined ? primary : children;\n const hasSecondary = secondary !== undefined && secondary !== null;\n \n return (\n <div\n ref={ref}\n className={cn(\"flex-1\", className)}\n style={{\n fontSize: \"0.875rem\",\n lineHeight: \"1.5\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n textAlign: \"left\",\n color: \"#000000\", // Use fixed color for testing\n minHeight: \"1.5em\", // Ensure minimum height\n boxSizing: \"border-box\",\n ...style,\n }}\n {...props}\n >\n {hasSecondary ? (\n <>\n <div style={{ fontSize: \"0.875rem\", lineHeight: \"1.5\", color: \"#000000\", textAlign: \"left\", display: \"block\" }}>\n {content}\n </div>\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"#666666\",\n marginTop: \"2px\",\n display: \"block\",\n }}\n >\n {secondary}\n </div>\n </>\n ) : (\n <span style={{ color: \"#000000\", display: \"inline-block\", width: \"100%\" }}>{content || \"\"}</span>\n )}\n </div>\n );\n }\n);\nMenuItemText.displayName = \"MenuItemText\";\n\nexport { Menu, MenuItem, MenuItemIcon, MenuItemText };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst TableContext = React.createContext({\n verticalDivider: false,\n});\n\nconst Table = React.forwardRef(\n (\n {\n className,\n size = \"medium\",\n sx,\n style,\n border = false,\n verticalDivider = false,\n children,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeStyles = {\n small: {\n fontSize: \"0.875rem\",\n },\n medium: {\n fontSize: \"1rem\",\n },\n };\n\n return (\n <TableContext.Provider value={{ verticalDivider }}>\n <table\n ref={ref}\n className={cn(\"w-full\", className)}\n style={{\n borderCollapse: \"separate\",\n borderSpacing: 0,\n ...(border && {\n border: \"1px solid hsl(var(--border))\",\n }),\n ...sizeStyles[size],\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </table>\n </TableContext.Provider>\n );\n }\n);\nTable.displayName = \"Table\";\n\nconst TableContainer = React.forwardRef(\n ({ className, component, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const Component = component || \"div\";\n\n return (\n <Component\n ref={ref}\n className={cn(\"relative\", className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nTableContainer.displayName = \"TableContainer\";\n\nconst TableHead = React.forwardRef(\n ({ className, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <thead\n ref={ref}\n className={cn(className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </thead>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableBody = React.forwardRef(\n ({ className, sx, style, children, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <tbody\n ref={ref}\n className={cn(className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </tbody>\n );\n }\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableRow = React.forwardRef(\n ({ className, sx, style, children, hover, selected, ...props }, ref) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n return (\n <tr\n ref={ref}\n className={cn(\n hover && \"hover:bg-accent\",\n selected && \"bg-accent\",\n className\n )}\n style={{\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </tr>\n );\n }\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableCell = React.forwardRef(\n (\n {\n className,\n align = \"inherit\",\n padding = \"normal\",\n size = \"medium\",\n scope,\n sx,\n style,\n children,\n colSpan,\n rowSpan,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const paddingMap = {\n none: \"0\",\n checkbox: \"0 0 0 4px\",\n normal: \"16px\",\n small: \"8px\",\n };\n\n const sizeStyles = {\n small: {\n padding: \"6px 8px\",\n fontSize: \"0.875rem\",\n },\n medium: {\n padding: paddingMap[padding] || paddingMap.normal,\n fontSize: \"1rem\",\n },\n };\n\n const alignStyles = {\n left: { textAlign: \"left\" },\n center: { textAlign: \"center\" },\n right: { textAlign: \"right\" },\n inherit: {},\n };\n\n const { verticalDivider } = React.useContext(TableContext);\n\n const Component = scope ? \"th\" : \"td\";\n\n return (\n <Component\n ref={ref}\n scope={scope}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={cn(\n \"border-b border-border\",\n verticalDivider && \"border-r border-border last:border-r-0\",\n className\n )}\n style={{\n ...sizeStyles[size],\n ...alignStyles[align],\n ...(verticalDivider && {\n borderRight: \"1px solid hsl(var(--border))\",\n }),\n ...mergedSx,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nTableCell.displayName = \"TableCell\";\n\nexport { Table, TableContainer, TableHead, TableBody, TableRow, TableCell };\n","import * as React from \"react\";\nimport { cn, useIsDarkMode } from \"../lib/utils\";\n\nconst ToggleButton = React.forwardRef(\n (\n {\n className,\n value,\n selected = false,\n onChange,\n disabled = false,\n size = \"medium\",\n sx,\n style,\n children,\n color,\n ...props\n },\n ref\n ) => {\n const actualMode = useIsDarkMode();\n const isDark = actualMode === \"dark\";\n\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const sizeStyles = {\n small: {\n padding: \"4px 6px\",\n fontSize: \"0.75rem\",\n minHeight: \"28px\",\n },\n medium: {\n padding: \"6px 16px\",\n fontSize: \"0.9375rem\",\n minHeight: \"36px\",\n },\n large: {\n padding: \"8px 22px\",\n fontSize: \"1rem\",\n minHeight: \"40px\",\n },\n };\n\n const handleClick = (e) => {\n if (disabled) return;\n if (onChange) {\n onChange(e, value);\n }\n };\n\n const baseStyle = {\n ...sizeStyles[size],\n border: \"1px solid hsl(var(--border))\",\n borderRadius: \"8px\",\n textTransform: \"none\",\n fontWeight: 400,\n };\n\n const {\n backgroundColor: styleBg,\n color: styleColor,\n borderColor: styleBorder,\n ...restStyle\n } = style || {};\n\n const selectedStyle = selected\n ? color\n ? {\n backgroundColor: color,\n color: \"white\",\n borderColor: color,\n }\n : {\n backgroundColor: \"hsl(var(--primary))\",\n color: \"hsl(var(--primary-foreground))\",\n borderColor: \"hsl(var(--primary))\",\n }\n : {\n backgroundColor: \"transparent\",\n color: \"hsl(var(--foreground))\",\n borderColor: \"hsl(var(--border))\",\n };\n\n const buttonStyle = {\n ...baseStyle,\n ...mergedSx,\n ...restStyle,\n ...selectedStyle,\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"inline-flex items-center justify-center transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n className\n )}\n style={buttonStyle}\n onClick={handleClick}\n disabled={disabled}\n aria-pressed={selected}\n onMouseEnter={(e) => {\n if (!disabled && !selected) {\n e.currentTarget.style.backgroundColor = \"hsl(var(--accent) / 0.3)\";\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled && !selected) {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nToggleButton.displayName = \"ToggleButton\";\n\nconst ToggleButtonGroup = React.forwardRef(\n (\n {\n className,\n value,\n exclusive = false,\n onChange,\n size = \"medium\",\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const mergedSx = React.useMemo(() => {\n if (!sx) return {};\n return typeof sx === \"function\" ? sx({}) : sx;\n }, [sx]);\n\n const handleToggleButtonChange = (event, buttonValue) => {\n if (!onChange) return;\n\n if (exclusive) {\n // Exclusive mode: single selection\n onChange(event, buttonValue === value ? null : buttonValue);\n } else {\n // Multiple selection mode\n const currentValues = Array.isArray(value) ? value : [];\n const index = currentValues.indexOf(buttonValue);\n const newValues = [...currentValues];\n\n if (index === -1) {\n newValues.push(buttonValue);\n } else {\n newValues.splice(index, 1);\n }\n\n onChange(event, newValues);\n }\n };\n\n // Clone children and inject props\n const childrenArray = React.Children.toArray(children);\n const childrenWithProps = childrenArray.map((child, index) => {\n if (React.isValidElement(child) && child.type === ToggleButton) {\n const buttonValue = child.props.value;\n const isSelected = exclusive\n ? value === buttonValue\n : Array.isArray(value) && value.includes(buttonValue);\n\n return React.cloneElement(child, {\n selected: isSelected,\n onChange: handleToggleButtonChange,\n size,\n style: {\n borderRadius: \"8px\",\n ...child.props.style,\n },\n });\n }\n return child;\n });\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex gap-2\", className)}\n style={{\n ...mergedSx,\n ...style,\n }}\n role=\"group\"\n {...props}\n >\n {childrenWithProps}\n </div>\n );\n }\n);\nToggleButtonGroup.displayName = \"ToggleButtonGroup\";\n\nexport { ToggleButton, ToggleButtonGroup };\n","import { useState, useEffect } from \"react\";\n\n// Simplified useMediaQuery hook to replace @mui/material's useMediaQuery\nexport const useMediaQuery = (query) => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n // Extract media query from MUI format or use directly\n let mediaQueryString = query;\n \n // Handle MUI format: \"@media (max-width:599px)\"\n if (query.startsWith(\"@media\")) {\n mediaQueryString = query.replace(\"@media\", \"\").trim();\n }\n\n const mediaQuery = window.matchMedia(mediaQueryString);\n \n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Create event listener\n const handler = (event) => {\n setMatches(event.matches);\n };\n\n // Add listener\n mediaQuery.addEventListener(\"change\", handler);\n\n // Cleanup\n return () => {\n mediaQuery.removeEventListener(\"change\", handler);\n };\n }, [query]);\n\n return matches;\n};\n\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { useMediaQuery } from \"../lib/useMediaQuery\";\n\nconst Grid = React.forwardRef(\n (\n {\n className,\n container = false,\n item = false,\n xs,\n sm,\n md,\n lg,\n xl,\n spacing,\n sx,\n style,\n children,\n ...props\n },\n ref\n ) => {\n // Use media query strings directly\n const isXs = useMediaQuery(\"@media (max-width:599px)\");\n const isSm = useMediaQuery(\n \"@media (min-width:600px) and (max-width:959px)\"\n );\n const isMd = useMediaQuery(\n \"@media (min-width:960px) and (max-width:1279px)\"\n );\n const isLg = useMediaQuery(\n \"@media (min-width:1280px) and (max-width:1919px)\"\n );\n const isXl = useMediaQuery(\"@media (min-width:1920px)\");\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n // Convert MUI spacing to pixels (MUI spacing unit = 8px)\n const spacingToPx = (value) => {\n if (typeof value === \"number\") {\n return `${value * 8}px`;\n }\n return \"0px\";\n };\n\n // Get responsive breakpoint value\n const getBreakpointValue = () => {\n if (isXl && xl !== undefined) return xl;\n if (isLg && lg !== undefined) return lg;\n if (isMd && md !== undefined) return md;\n if (isSm && sm !== undefined) return sm;\n if (isXs && xs !== undefined) return xs;\n // Fallback to xs if provided, otherwise undefined\n return xs;\n };\n\n const breakpointValue = getBreakpointValue();\n\n // Calculate flex basis and max width for item\n const getItemStyles = () => {\n if (!item) return {};\n if (breakpointValue === undefined) return {};\n\n // MUI Grid uses 12 columns\n const columns = 12;\n const percentage = (breakpointValue / columns) * 100;\n\n return {\n flexBasis: `${percentage}%`,\n maxWidth: `${percentage}%`,\n flexGrow: 0,\n flexShrink: 0,\n boxSizing: \"border-box\",\n };\n };\n\n // Get container styles\n // MUI Grid spacing: container has negative margins only on left and top\n // This offsets item padding to align items with container edges on left/top\n // Right and bottom edges maintain spacing through item padding\n const getContainerStyles = () => {\n if (!container) return {};\n\n const spacingPx = spacingToPx(spacing || 0);\n\n return {\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"100%\",\n marginLeft: spacing ? `-${spacingPx}` : undefined,\n marginTop: spacing ? `-${spacingPx}` : undefined,\n };\n };\n\n // Get item styles with padding for spacing\n // MUI Grid spacing: items have paddingLeft and paddingTop\n // This creates spacing between items and from left/top edges\n // Right and bottom spacing is maintained by the last items' padding\n const getItemPaddingStyles = () => {\n if (!item) return {};\n if (!spacing) return {};\n\n const spacingPx = spacingToPx(spacing);\n\n return {\n paddingLeft: spacingPx,\n paddingTop: spacingPx,\n };\n };\n\n const mergedStyle = {\n ...getContainerStyles(),\n ...getItemStyles(),\n ...getItemPaddingStyles(),\n ...sxStyles,\n ...style,\n };\n\n return (\n <div ref={ref} className={cn(className)} style={mergedStyle} {...props}>\n {children}\n </div>\n );\n }\n);\n\nGrid.displayName = \"Grid\";\n\nexport { Grid };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst InputLabel = React.forwardRef(\n (\n {\n children,\n className,\n required = false,\n disabled = false,\n error = false,\n focused = false,\n shrink = false,\n sx,\n style,\n ...props\n },\n ref\n ) => {\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n return sxObj;\n }, [sx]);\n\n return (\n <label\n ref={ref}\n className={cn(\n \"block text-sm font-medium mb-2 text-foreground\",\n error\n ? \"text-destructive\"\n : focused\n ? \"text-primary\"\n : \"text-foreground\",\n disabled && \"opacity-50\",\n className\n )}\n style={{\n ...sxStyles,\n ...style,\n }}\n {...props}\n >\n {children}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </label>\n );\n }\n);\n\nInputLabel.displayName = \"InputLabel\";\n\nexport { InputLabel };\n","import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Slider = React.forwardRef(\n (\n {\n value,\n onChange,\n onChangeCommitted,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n className,\n style,\n sx,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef(null);\n const draggingRef = React.useRef(false);\n const [localValue, setLocalValue] = React.useState(value);\n\n // Convert sx to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return { container: {} };\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n // Convert MUI sx object to style object\n const converted = { container: {} };\n\n // Container-level styles (position, top, transform, width, left, etc.)\n if (sxObj.position) converted.container.position = sxObj.position;\n if (sxObj.top !== undefined) converted.container.top = sxObj.top;\n if (sxObj.left !== undefined) converted.container.left = sxObj.left;\n if (sxObj.width) converted.container.width = sxObj.width;\n if (sxObj.height) converted.container.height = sxObj.height;\n if (sxObj.transform) converted.container.transform = sxObj.transform;\n\n // Internal component styles\n if (sxObj[\"& .MuiSlider-rail\"]) {\n converted.rail = sxObj[\"& .MuiSlider-rail\"];\n }\n if (sxObj[\"& .MuiSlider-track\"]) {\n converted.track = sxObj[\"& .MuiSlider-track\"];\n }\n if (sxObj[\"& .MuiSlider-thumb\"]) {\n converted.thumb = sxObj[\"& .MuiSlider-thumb\"];\n }\n return converted;\n }, [sx, localValue]);\n\n // Sync localValue with value prop\n React.useEffect(() => {\n if (!draggingRef.current) {\n setLocalValue(value);\n }\n }, [value]);\n\n const isVertical = orientation === \"vertical\";\n const percent = Math.max(0, Math.min(1, (localValue - min) / (max - min)));\n\n const handleMouseDown = (e) => {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n draggingRef.current = true;\n handleMove(e);\n // Use capture phase to ensure we get the events\n document.addEventListener(\"mousemove\", handleMouseMove, {\n capture: true,\n });\n document.addEventListener(\"mouseup\", handleMouseUp, { capture: true });\n };\n\n const handleTouchStart = (e) => {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n draggingRef.current = true;\n handleMove(e.touches[0]);\n // Use capture phase to ensure we get the events\n document.addEventListener(\"touchmove\", handleTouchMove, {\n capture: true,\n passive: false,\n });\n document.addEventListener(\"touchend\", handleTouchEnd, { capture: true });\n };\n\n const handleMouseMove = (e) => {\n if (!draggingRef.current) return;\n e.preventDefault();\n handleMove(e);\n };\n\n const handleTouchMove = (e) => {\n if (!draggingRef.current) return;\n e.preventDefault();\n handleMove(e.touches[0]);\n };\n\n const handleMouseUp = () => {\n if (draggingRef.current && onChangeCommitted) {\n onChangeCommitted(null, localValue);\n }\n draggingRef.current = false;\n document.removeEventListener(\"mousemove\", handleMouseMove, {\n capture: true,\n });\n document.removeEventListener(\"mouseup\", handleMouseUp, { capture: true });\n };\n\n const handleTouchEnd = () => {\n if (draggingRef.current && onChangeCommitted) {\n onChangeCommitted(null, localValue);\n }\n draggingRef.current = false;\n document.removeEventListener(\"touchmove\", handleTouchMove, {\n capture: true,\n });\n document.removeEventListener(\"touchend\", handleTouchEnd, {\n capture: true,\n });\n };\n\n const handleMove = (e) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n\n if (isVertical) {\n let y = rect.bottom - e.clientY;\n y = Math.max(0, Math.min(rect.height, y));\n const newPercent = y / rect.height;\n const newValue = Math.round(newPercent * (max - min) + min);\n const clampedValue = Math.max(min, Math.min(max, newValue));\n setLocalValue(clampedValue);\n if (onChange) onChange(null, clampedValue);\n } else {\n let x = e.clientX - rect.left;\n x = Math.max(0, Math.min(rect.width, x));\n const newPercent = x / rect.width;\n const newValue = Math.round(newPercent * (max - min) + min);\n const clampedValue = Math.max(min, Math.min(max, newValue));\n setLocalValue(clampedValue);\n if (onChange) onChange(null, clampedValue);\n }\n };\n\n const railStyle = {\n ...(isVertical\n ? {\n width: \"100%\",\n height: \"100%\",\n borderRadius: sxStyles.rail?.borderRadius || \"10px\",\n backgroundColor:\n sxStyles.rail?.backgroundColor || \"hsl(var(--muted))\",\n border: sxStyles.rail?.border || \"none\",\n position: \"relative\",\n zIndex: 0,\n }\n : {\n width: \"100%\",\n height: sxStyles.rail?.height || \"4px\",\n borderRadius: sxStyles.rail?.borderRadius || \"2px\",\n backgroundColor:\n sxStyles.rail?.backgroundColor || \"hsl(var(--muted))\",\n border: sxStyles.rail?.border || \"none\",\n position: \"relative\",\n zIndex: 0,\n }),\n };\n\n // Get track display value (handle dynamic display based on value)\n const getTrackDisplay = () => {\n if (sxStyles.track?.display !== undefined) {\n // Handle function or conditional display\n if (typeof sxStyles.track.display === \"function\") {\n return sxStyles.track.display(localValue) ? \"block\" : \"none\";\n }\n return sxStyles.track.display;\n }\n // Default: hide track when value is 0 (for vertical sliders)\n return isVertical && localValue === 0 ? \"none\" : \"block\";\n };\n\n const trackStyle = {\n ...(isVertical\n ? {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n width: \"100%\",\n height: `${percent * 100}%`,\n borderRadius: sxStyles.track?.borderRadius || \"10px\",\n backgroundColor:\n sxStyles.track?.backgroundColor || \"hsl(var(--primary))\",\n display: getTrackDisplay(),\n border: sxStyles.track?.border || \"none\",\n zIndex: 1,\n pointerEvents: \"none\",\n }\n : {\n position: \"absolute\",\n top: \"50%\",\n left: 0,\n transform: \"translateY(-50%)\",\n width: `${percent * 100}%`,\n height: sxStyles.track?.height || \"4px\",\n borderRadius: sxStyles.track?.borderRadius || \"2px\",\n backgroundColor:\n sxStyles.track?.backgroundColor || \"hsl(var(--primary))\",\n border: sxStyles.track?.border || \"none\",\n zIndex: 1,\n pointerEvents: \"none\",\n }),\n };\n\n // Get thumb display value (handle dynamic display based on value)\n const getThumbDisplay = () => {\n if (sxStyles.thumb?.display !== undefined) {\n // Handle function or conditional display\n if (typeof sxStyles.thumb.display === \"function\") {\n return sxStyles.thumb.display(localValue) ? \"block\" : \"none\";\n }\n return sxStyles.thumb.display;\n }\n // Default: hide thumb when value <= 3 (for vertical sliders)\n return isVertical && localValue <= 3 ? \"none\" : \"block\";\n };\n\n const thumbStyle = {\n ...(isVertical\n ? {\n position: \"absolute\",\n left: \"50%\",\n bottom: `${percent * 100}%`,\n transform:\n sxStyles.thumb?.transform || \"translateX(-50%) translateY(50%)\",\n width: sxStyles.thumb?.width || 20,\n height: sxStyles.thumb?.height || 2,\n backgroundColor: sxStyles.thumb?.backgroundColor || \"#ffffff\",\n boxShadow:\n sxStyles.thumb?.boxShadow || \"0 0 4px rgba(0, 0, 0, 0.3)\",\n borderRadius: sxStyles.thumb?.borderRadius || \"1px\",\n marginBottom: sxStyles.thumb?.marginBottom || \"-4px\",\n display: getThumbDisplay(),\n cursor: disabled ? \"default\" : \"pointer\",\n zIndex: 2,\n pointerEvents: \"auto\",\n }\n : {\n position: \"absolute\",\n top: \"50%\",\n left: `${percent * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: sxStyles.thumb?.width || 16,\n height: sxStyles.thumb?.height || 16,\n backgroundColor:\n sxStyles.thumb?.backgroundColor || \"hsl(var(--primary))\",\n boxShadow: sxStyles.thumb?.boxShadow || \"0 2px 4px rgba(0,0,0,0.2)\",\n borderRadius: sxStyles.thumb?.borderRadius || \"50%\",\n border: \"2px solid hsl(var(--background))\",\n cursor: disabled ? \"default\" : \"pointer\",\n zIndex: 2,\n pointerEvents: \"auto\",\n }),\n };\n\n const sliderId = React.useId();\n const currentValue = localValue !== undefined ? localValue : value;\n\n return (\n <div\n ref={containerRef}\n role=\"slider\"\n id={sliderId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-valuetext={ariaValueText || String(currentValue)}\n aria-orientation={orientation}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(\n \"relative select-none focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n isVertical ? \"h-full w-full\" : \"w-full\",\n className\n )}\n style={{\n ...(isVertical ? { height: \"100%\", width: \"100%\" } : {}),\n ...sxStyles.container,\n ...style,\n // Ensure slider can receive pointer events\n pointerEvents: disabled ? \"none\" : \"auto\",\n // Prevent touch scrolling that might interfere with slider dragging\n touchAction: disabled ? \"auto\" : \"none\",\n // Ensure container is above background layers\n zIndex: 1,\n }}\n onMouseDown={handleMouseDown}\n onTouchStart={handleTouchStart}\n onKeyDown={(e) => {\n if (disabled) return;\n let newValue = currentValue;\n const stepSize = step || 1;\n\n if (orientation === \"horizontal\") {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n newValue = Math.min(max, currentValue + stepSize);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n newValue = Math.max(min, currentValue - stepSize);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newValue = min;\n } else if (e.key === \"End\") {\n e.preventDefault();\n newValue = max;\n }\n } else {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n newValue = Math.min(max, currentValue + stepSize);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n newValue = Math.max(min, currentValue - stepSize);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newValue = min;\n } else if (e.key === \"End\") {\n e.preventDefault();\n newValue = max;\n }\n }\n\n if (newValue !== currentValue) {\n setLocalValue(newValue);\n if (onChange) {\n onChange(newValue);\n }\n }\n }}\n {...props}\n >\n {/* Rail */}\n <div style={railStyle} />\n {/* Track */}\n <div style={trackStyle} />\n {/* Thumb */}\n <div\n style={thumbStyle}\n // Let container handle all mouse/touch events for consistency\n onMouseEnter={(e) => {\n if (!disabled && sxStyles.thumb?.[\"&:hover\"]) {\n e.currentTarget.style.boxShadow =\n sxStyles.thumb[\"&:hover\"].boxShadow ||\n e.currentTarget.style.boxShadow;\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow =\n sxStyles.thumb?.boxShadow ||\n (isVertical\n ? \"0 0 4px rgba(0, 0, 0, 0.3)\"\n : \"0 1px 3px rgba(0,0,0,0.4)\");\n }}\n />\n </div>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n\nexport { Slider };\n","import * as React from \"react\";\nimport { cn, spacingToPx } from \"../lib/utils\";\n\nconst Box = React.forwardRef(\n ({ className, sx, style, children, component = \"div\", ...props }, ref) => {\n const Component = component;\n\n // Convert sx prop to style if provided\n const sxStyles = React.useMemo(() => {\n if (!sx) return {};\n const sxObj = typeof sx === \"function\" ? sx({}) : sx;\n const converted = { ...sxObj };\n\n // Handle spacing shortcuts\n if (converted.p !== undefined) {\n converted.padding = spacingToPx(converted.p);\n delete converted.p;\n }\n if (converted.px !== undefined) {\n converted.paddingLeft = spacingToPx(converted.px);\n converted.paddingRight = spacingToPx(converted.px);\n delete converted.px;\n }\n if (converted.py !== undefined) {\n converted.paddingTop = spacingToPx(converted.py);\n converted.paddingBottom = spacingToPx(converted.py);\n delete converted.py;\n }\n if (converted.pt !== undefined) {\n converted.paddingTop = spacingToPx(converted.pt);\n delete converted.pt;\n }\n if (converted.pb !== undefined) {\n converted.paddingBottom = spacingToPx(converted.pb);\n delete converted.pb;\n }\n if (converted.pl !== undefined) {\n converted.paddingLeft = spacingToPx(converted.pl);\n delete converted.pl;\n }\n if (converted.pr !== undefined) {\n converted.paddingRight = spacingToPx(converted.pr);\n delete converted.pr;\n }\n if (converted.m !== undefined) {\n converted.margin = spacingToPx(converted.m);\n delete converted.m;\n }\n if (converted.mx !== undefined) {\n converted.marginLeft = spacingToPx(converted.mx);\n converted.marginRight = spacingToPx(converted.mx);\n delete converted.mx;\n }\n if (converted.my !== undefined) {\n converted.marginTop = spacingToPx(converted.my);\n converted.marginBottom = spacingToPx(converted.my);\n delete converted.my;\n }\n if (converted.mt !== undefined) {\n converted.marginTop = spacingToPx(converted.mt);\n delete converted.mt;\n }\n if (converted.mb !== undefined) {\n converted.marginBottom = spacingToPx(converted.mb);\n delete converted.mb;\n }\n if (converted.ml !== undefined) {\n converted.marginLeft = spacingToPx(converted.ml);\n delete converted.ml;\n }\n if (converted.mr !== undefined) {\n converted.marginRight = spacingToPx(converted.mr);\n delete converted.mr;\n }\n if (converted.gap !== undefined) {\n converted.gap = spacingToPx(converted.gap);\n delete converted.gap;\n }\n\n // Handle color shortcuts (text.primary, text.secondary, etc.)\n if (converted.color) {\n if (typeof converted.color === \"string\") {\n if (\n converted.color === \"text.primary\" ||\n converted.color === \"textPrimary\"\n ) {\n converted.color = \"hsl(var(--foreground))\";\n } else if (\n converted.color === \"text.secondary\" ||\n converted.color === \"textSecondary\"\n ) {\n converted.color = \"hsl(var(--muted-foreground))\";\n } else if (converted.color === \"primary\") {\n converted.color = \"hsl(var(--primary))\";\n } else if (converted.color === \"secondary\") {\n converted.color = \"hsl(var(--secondary))\";\n } else if (converted.color === \"error\") {\n converted.color = \"hsl(var(--destructive))\";\n }\n }\n }\n\n // Handle bgcolor - convert to CSS variable if needed\n if (converted.bgcolor) {\n if (\n typeof converted.bgcolor === \"string\" &&\n converted.bgcolor.includes(\".\")\n ) {\n // Map common theme paths to CSS variables\n const bgcolorMap = {\n \"background.paper\": \"hsl(var(--card))\",\n \"background.default\": \"hsl(var(--background))\",\n \"background.card\": \"hsl(var(--card))\",\n };\n converted.backgroundColor =\n bgcolorMap[converted.bgcolor] || converted.bgcolor;\n } else {\n converted.backgroundColor = converted.bgcolor;\n }\n delete converted.bgcolor;\n }\n\n return converted;\n }, [sx]);\n\n const mergedStyle = {\n ...sxStyles,\n ...style,\n };\n\n // Convert display, flexDirection, etc. to Tailwind classes where possible\n const displayClass = sxStyles.display === \"flex\" ? \"flex\" : \"\";\n const flexDirectionClass =\n sxStyles.flexDirection === \"column\" ? \"flex-col\" : \"\";\n const alignItemsClass =\n sxStyles.alignItems === \"center\" ? \"items-center\" : \"\";\n const justifyContentClass =\n sxStyles.justifyContent === \"space-between\"\n ? \"justify-between\"\n : sxStyles.justifyContent === \"center\"\n ? \"justify-center\"\n : \"\";\n\n return (\n <Component\n ref={ref}\n className={cn(\n displayClass,\n flexDirectionClass,\n alignItemsClass,\n justifyContentClass,\n className\n )}\n style={mergedStyle}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nBox.displayName = \"Box\";\n\nexport { Box };\n"],"names":["r","e","t","f","n","Array","isArray","o","length","clsx","arguments","createClassPartObject","nextPart","Map","validators","classGroupId","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","array1","array2","combinedArray","i","concatArrays","classPartObject","currentClassPart","nextClassPartObject","get","result","classRest","join","slice","validatorsLength","validatorObj","validator","indexOf","undefined","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processObjectDefinition","processFunctionDefinition","processStringDefinition","getPart","isThemeGetter","push","createClassValidatorObject","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","postfixModifierPosition","bracketDepth","parenDepth","modifierStart","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","SPLIT_CLASSES_REGEX","toValue","mix","resolvedValue","string","k","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","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","exec","shouldMatchNoLabel","label","twMerge","createConfigFirst","createConfigRest","configUtils","cacheGet","cacheSet","functionToCall","tailwindMerge","classList","cachedResult","sortModifiers","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","mergeClassList","reduce","previousConfig","createConfigCurrent","createConfigUtils","args","classLists","argument","twJoin","createTailwindMerge","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scalePositionWithArbitrary","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","position","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","repeat","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","cn","_len","inputs","_key","spacingToPx","concat","useIsDarkMode","_React$useState2","_slicedToArray","React","useState","document","documentElement","contains","isDark","setIsDark","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","Card","forwardRef","_ref","ref","_ref$elevation","elevation","_ref$variant","variant","_ref$square","square","style","props","_objectWithoutProperties","_excluded","_jsx","_objectSpread","boxShadow","shadows","Math","max","min","round","getElevationShadow","displayName","CardHeader","memo","_ref2","_excluded2","CardTitle","_ref3","_excluded3","CardDescription","_ref4","_excluded4","CardContent","_ref5","_excluded5","CardFooter","_ref6","_excluded6","CardActionArea","_ref7","_excluded7","role","tabIndex","onKeyDown","preventDefault","onClick","falsyToString","cx","cva","base","_config_compoundVariants","variants","class","defaultVariants","getVariantClassNames","keys","map","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","compoundVariants","cvClass","cvClassName","compoundVariantOptions","every","includes","buttonVariants","default","destructive","secondary","ghost","link","sm","lg","icon","Button","startIcon","endIcon","children","_ref$fullWidth","fullWidth","_ref$disabled","disabled","href","component","mappedVariant","mappedSize","Component","buttonProps","type","_jsxs","BackgroundTypeContext","createContext","backgroundTypeState","useRecoilValue","atom","useContext","DialogContent","sx","sxStyles","useMemo","converted","padding","paddingLeft","paddingRight","paddingTop","paddingBottom","margin","marginLeft","marginRight","marginTop","marginBottom","backgroundColor","restStyle","defaultPaddingClass","background","pointerEvents","DialogHeader","DialogFooter","DialogTitle","DialogDescription","_ref8","id","_excluded8","DialogActions","_ref9","_excluded9","_ref0","_excluded0","iconButtonVariants","IconButton","_ref$size","ariaLabel","childrenWithSize","isValidElement","cloneElement","console","warn","typographyVariants","h1","h2","h3","h4","h5","h6","blockquote","inlineCode","lead","largeText","smallText","mutedText","body1","body2","subtitle1","subtitle2","overline","primary","muted","error","inherit","Typography","mappedColor","chipVariants","outlined","small","medium","Chip","_icon$props","_icon$props2","_icon$props3","_icon$props4","_icon$props5","onDelete","alignItems","justifyContent","lineHeight","width","height","fontSize","textOverflow","whiteSpace","maxWidth","TextField","_InputProps$style2","_InputProps$style3","InputProps","_ref$error","helperText","_ref$multiline","multiline","rows","maxRows","_InputProps$style","_props$style","_ref$floatingLabel","floatingLabel","_ref$required","required","getComponentBgColor","defaultColor","focused","setFocused","inputRef","useRef","combinedRef","useCallback","node","hasValue","sizeClasses","sizePadding","inputBackgroundColor","propsHeight","restPropsStyle","finalBackgroundColor","inputHeight","restProps","getVariantBorderStyle","borderTop","borderLeft","borderRight","borderBottom","borderRadius","borderColor","finalStyle","InputComponent","shouldShowPlaceholder","inputType","inputProps","startAdornment","endAdornment","onFocus","onBlur","toPascalCase","camelCase","replace","match","p1","p2","toUpperCase","toLowerCase","toCamelCase","charAt","mergeClasses","classes","array","Boolean","defaultAttributes","xmlns","viewBox","strokeWidth","strokeLinecap","strokeLinejoin","Icon","_ref$color","_ref$strokeWidth","absoluteStrokeWidth","_ref$className","iconNode","rest","createElement","prop","hasA11yProp","_toConsumableArray","tag","attrs","createLucideIcon","iconName","Check","d","ChevronDown","CircleAlert","cy","x1","x2","y1","y2","CircleCheckBig","Info","TriangleAlert","X","Select","onChange","_ref$displayEmpty","displayEmpty","native","renderValue","_ref$multiple","multiple","_React$useState4","hovered","setHovered","_React$useState6","open","setOpen","selectRef","menuRef","selectId","useId","useImperativeHandle","_loop","prototype","hasOwnProperty","call","cssProp","convertSxToStyle","isMultiple","selectedValues","selectedOption","selected","Children","toArray","find","child","handleClickOutside","event","target","addEventListener","removeEventListener","handleOptionClick","optionValue","currentValues","newValues","v","textAlign","fontWeight","fromEntries","onMouseEnter","onMouseLeave","isSelected","menuBgColor","currentTarget","MenuItem","FormControl","_ref5$fullWidth","Checkbox","checked","ariaLabelledBy","List","ListItem","_ref2$alignItems","disablePadding","dense","ListItemIcon","minWidth","ListItemText","ListItemButton","paddingClass","ListItemAvatar","Accordion","expanded","defaultExpanded","isExpanded","setIsExpanded","accordionId","onChangeRef","expandedRef","handleChange","_event$preventDefault","_event$stopPropagatio","stopPropagation","currentExpandedValue","newExpanded","currentExpanded","AccordionSummary","AccordionDetails","expandIcon","minHeight","contentId","styleBackgroundColor","cleanRestStyle","finalPadding","styleObj","Alert","_classes$severity","_ref$severity","severity","onClose","action","iconMapping","defaultIconMapping","AlertCircle","warning","AlertTriangle","info","success","CheckCircle","isReactElement","_typeof","$$typeof","IconComponent","severityClasses","standard","filled","Tabs","centered","tabsContainerRef","indicatorRef","selectedValue","setSelectedValue","handleTabClick","newValue","currentValue","isStandardVariant","selectedTab","querySelectorAll","containerRect","getBoundingClientRect","tabRect","tabsId","_child$type","Tab","ariaControls","styleColor","hasPaddingInStyle","finalColor","propsOnClick","textTransform","tabColors","defaultMarginClass","auto","basePlacements","viewport","popper","variationPlacements","placement","placements","modifierPhases","getNodeName","element","nodeName","getWindow","window","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","name","enabled","phase","fn","state","elements","styles","assign","removeAttribute","setAttribute","effect","initialStyles","options","strategy","arrow","reference","attribute","requires","getBasePlacement","getUAString","uaData","navigator","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","parent","rootNode","getRootNode","isSameNode","parentNode","host","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","passive","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","body","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_i","fittingPlacement","reset","data","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","visited","Set","add","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","merged","orderModifiers","existing","_ref$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","flip","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","CONTENT_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","capture","TIPPY_DEFAULT_APPEND_TO","Tooltip","title","_ref$placement","_ref$arrow","_ref$delay","childRef","tippyInstanceRef","getElementById","textContent","head","appendChild","tippy","animation","popperOptions","setContent","childElement","only","Autocomplete","_inputProps$style","_inputProps$InputProp","_inputProps$InputProp2","_inputProps$InputProp3","getOptionLabel","inputValue","onInputChange","filterOptions","renderInput","filteredOptions","setFilteredOptions","listRef","searchValue","String","filtered","option","optionLabel","labelString","displayValue","_event$target","onMouseDown","maxHeight","this","s","u","c","l","$","M","weekdays","months","ordinal","utcOffset","floor","date","year","month","clone","ceil","D","Q","g","S","_","O","locale","$L","utc","$u","$x","$offset","parse","$d","Date","NaN","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","getTime","toDate","apply","$locale","weekStart","$set","daysInMonth","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","exports","module","define","amd","globalThis","dayjs","DatePicker","_textFieldProps$style","_textFieldProps$Input","_textFieldProps$Input2","_ref$clearable","clearable","slotProps","onOpenChange","selectedDate","setSelectedDate","calendarRef","yearPickerRef","currentYearButtonRef","setShowYearPicker","textFieldProps","textField","viewMode","setViewMode","_React$useState8","showYearPicker","setTimeout","button","calendarDays","startOfMonth","endOfMonth","startDate","endDate","days","currentDate","getCalendarDays","currentMonth","currentYear","handleDayClick","day","newDate","newOpen","readOnly","isCurrentYear","_Fragment","isCurrentMonth","isToday","monthIndex","Drawer","_PaperProps$style","_PaperProps$style2","_PaperProps$style3","_PaperProps$style4","_ref$anchor","anchor","_ref$open","PaperProps","_ref$transitionDurati","transitionDuration","_ref$keepMounted","keepMounted","ModalProps","SlideProps","drawerRef","handleEscape","_React$useMemo","rootStyles","paperStyles","sxObj","sxPaperStyles","paperPropsStyles","paperSx","anchorStyles","baseStyles","zIndex","parseInt","getPropertyValue","getAnchorStyles","isPermanent","shouldShowBackdrop","shouldShowDrawer","FormControlLabel","control","_ref$labelPlacement","labelPlacement","mergedSx","isLabelStart","isLabelTop","isLabelBottom","controlWithValue","FormLabel","_ref$component","_ref$focused","FormGroup","_ref$row","RadioGroupContext","RadioGroup","contextValue","random","substr","Provider","Radio","checkedProp","onChangeProp","disabledProp","radioGroup","sizeMap","large","radioSize","dotSize","Collapse","_ref$in","inProp","_ref$timeout","timeout","_ref$unmountOnExit","unmountOnExit","_ref$orientation","orientation","_ref$collapsedSize","collapsedSize","mounted","setMounted","setHeight","contentRef","isInitialMount","timer","clearTimeout","currentSize","requestAnimationFrame","actualSize","transitionTimingFunction","DialogContentText","Container","_ref$maxWidth","_ref$fixed","fixed","_ref$disableGutters","disableGutters","maxWidthValue","maxWidthMap","xs","md","xl","getMaxWidth","Divider","_ref$style","_ref$flexItem","flexItem","_ref$light","light","_ref$textAlign","isInset","isMiddle","styleMarginLeft","styleMarginRight","leftMargin","rightMargin","borderTopWidth","borderTopStyle","dividerStyles","borderLeftWidth","borderLeftStyle","parseMargin","parseFloat","totalMargin","boxSizing","getDividerStyles","_style$marginLeft","_style$marginRight","Avatar","_style$borderRadius2","_style$backgroundColo2","src","alt","sizes","imgProps","defaultStyles","flexShrink","userSelect","_style$borderRadius","_style$backgroundColo","styleWithoutColor","mergedStylesWithSrc","objectFit","mergedStyles","Stack","_ref$direction","_ref$spacing","flexWrap","gapValue","directionClass","wrapClass","justifyContentClass","alignItemsClass","mergedStyle","InputAdornment","_ref$position","_ref$disablePointerEv","disablePointerEvents","_ref$disableTypograph","disableTypography","Paper","elevationShadow","AppBar","positionStyles","Toolbar","Menu","_PaperProps$style5","_PaperProps$style6","_PaperProps$style7","_PaperProps$style8","_PaperProps$style9","anchorEl","_ref$anchorOrigin","anchorOrigin","vertical","horizontal","transformOrigin","positionProp","_ref$disablePortal","disablePortal","_ref$border","positionType","setPosition","useLayoutEffect","isMounted","rafId","isConnected","anchorRect","_menuRef$current","_menuRef$current2","viewportWidth","innerWidth","viewportHeight","innerHeight","menuWidth","menuHeight","parentElement","relativeTop","relativeLeft","_menuRef$current3","_menuRef$current4","_menuRef$current5","_menuRef$current6","handleUpdate","_menuRef$current7","_menuRef$current8","cancelAnimationFrame","updatePositionWithRealSize","matchMedia","matches","menuElement","createPortal","_ref4$disabled","menuItemPadding","MenuItemIcon","MenuItemText","hasSecondary","TableContext","verticalDivider","Table","_ref$verticalDivider","borderCollapse","borderSpacing","TableContainer","TableHead","TableBody","TableRow","hover","TableCell","_ref6$align","_ref6$padding","_ref6$size","scope","colSpan","rowSpan","paddingMap","none","checkbox","normal","sizeStyles","ToggleButton","_ref$selected","baseStyle","selectedStyle","buttonStyle","ToggleButtonGroup","_ref3$exclusive","exclusive","_ref3$size","handleToggleButtonChange","buttonValue","splice","childrenWithProps","useMediaQuery","query","_useState2","setMatches","mediaQueryString","mediaQuery","handler","Grid","_ref$container","_ref$item","isSm","isMd","isLg","isXl","breakpointValue","spacingPx","getContainerStyles","percentage","flexBasis","flexGrow","getItemStyles","getItemPaddingStyles","InputLabel","Slider","_sxStyles$rail","_sxStyles$rail2","_sxStyles$rail3","_sxStyles$rail4","_sxStyles$rail5","_sxStyles$rail6","_sxStyles$rail7","_sxStyles$track2","_sxStyles$track3","_sxStyles$track4","_sxStyles$track5","_sxStyles$track6","_sxStyles$track7","_sxStyles$track8","_sxStyles$thumb2","_sxStyles$thumb3","_sxStyles$thumb4","_sxStyles$thumb5","_sxStyles$thumb6","_sxStyles$thumb7","_sxStyles$thumb8","_sxStyles$thumb9","_sxStyles$thumb0","_sxStyles$thumb1","_sxStyles$thumb10","_sxStyles$thumb11","onChangeCommitted","_ref$min","_ref$max","_ref$step","step","ariaValueText","containerRef","draggingRef","localValue","setLocalValue","rail","track","thumb","_sxStyles$track","_sxStyles$thumb","percent","handleMouseMove","handleMove","handleTouchMove","touches","handleMouseUp","handleTouchEnd","clientY","newPercent","clampedValue","clientX","railStyle","trackStyle","thumbStyle","sliderId","touchAction","onTouchStart","stepSize","_sxStyles$thumb12","_sxStyles$thumb13","Box","bgcolor","displayClass","flexDirectionClass","flexDirection","_ref$fullScreen","fullScreen","ariaDescribedBy","dialogId","actualMode","paperSxStyles","maxWidthClass","popsStyles","drawerStyles","paperPropsStyle","paperPropsClassName","containerClass","dialogContent"],"mappings":"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","x_google_ignoreList":[0,1,4,13,14,15,16,17,18,19,20,21,22,23,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86]}
|