banhaten-ui 0.0.12 → 0.0.14

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/components/Button/Button.tsx","../src/components/SocialButton/SocialButton.tsx","../src/utils/cn.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckmarkCard/CheckmarkCard.tsx","../src/components/Switcher/Switcher.tsx","../src/components/Badge/Badge.tsx","../src/components/Alert/Alert.tsx","../src/components/Divider/Divider.tsx","../src/components/Menu/Menu.tsx","../src/components/Accordion/Accordion.tsx","../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { ReactNode, ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Loader2 } from \"lucide-react\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"soft\"\n | \"secondary\"\n | \"dashed\"\n | \"white\"\n | \"outline\"\n | \"ghost\"\n | \"ghost-primary\"\n | \"danger\"\n | \"soft-danger\";\n\nexport type ButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** Whether the button is in a loading state */\n loading?: boolean;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Whether the button should take full width of its container */\n fullWidth?: boolean;\n /** Icon to display on the left side of the button */\n iconLeft?: ReactNode;\n /** Icon to display on the right side of the button */\n iconRight?: ReactNode;\n /** Icon to display at the start (left) of the button - alias for iconLeft */\n startIcon?: ReactNode;\n /** Icon to display at the end (right) of the button - alias for iconRight */\n endIcon?: ReactNode;\n /** Icon for icon-only buttons */\n icon?: ReactNode;\n /** Enable RTL (Right-to-Left) mode for Arabic, Hebrew, and other RTL languages */\n rtl?: boolean;\n /** Button content */\n children?: ReactNode;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Variant styles with dark mode support\nconst variantStyles: Record<ButtonVariant, string> = {\n primary: cn(\n // Light mode\n \"bg-primary-600 text-white\",\n \"hover:bg-primary-700\",\n \"active:bg-primary-800\",\n \"shadow-solid hover:shadow-solid-hover active:shadow-solid-active\",\n // Dark mode\n \"dark:bg-primary-500 dark:text-white\",\n \"dark:hover:bg-primary-600\",\n \"dark:active:bg-primary-700\"\n ),\n soft: cn(\n // Light mode\n \"bg-primary-50 text-primary-700\",\n \"hover:bg-primary-100\",\n \"active:bg-primary-200\",\n \"shadow-soft hover:shadow-soft-hover active:shadow-soft-active\",\n // Dark mode\n \"dark:bg-primary-950 dark:text-primary-300\",\n \"dark:hover:bg-primary-900\",\n \"dark:active:bg-primary-800\"\n ),\n secondary: cn(\n // Light mode\n \"bg-neutral-800 text-white\",\n \"hover:bg-neutral-900\",\n \"active:bg-black\",\n \"shadow-secondary hover:shadow-secondary-hover active:shadow-secondary-active\",\n // Dark mode\n \"dark:bg-neutral-700 dark:text-neutral-100\",\n \"dark:hover:bg-neutral-600\",\n \"dark:active:bg-neutral-500\"\n ),\n dashed: cn(\n // Light mode\n \"bg-white text-neutral-700 border border-dashed border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"shadow-outline hover:shadow-outline-hover active:shadow-outline-active\",\n // Dark mode\n \"dark:bg-neutral-900 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-800 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-700\"\n ),\n white: cn(\n // Light mode\n \"bg-white text-neutral-900\",\n \"hover:bg-neutral-50\",\n \"active:bg-neutral-100\",\n \"shadow-white hover:shadow-white-hover active:shadow-white-active\",\n // Dark mode\n \"dark:bg-neutral-100 dark:text-neutral-900\",\n \"dark:hover:bg-neutral-200\",\n \"dark:active:bg-neutral-300\"\n ),\n outline: cn(\n // Light mode\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"shadow-outline hover:shadow-outline-hover active:shadow-outline-active\",\n // Dark mode\n \"dark:bg-neutral-900 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-800 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-700\"\n ),\n ghost: cn(\n // Light mode\n \"bg-transparent text-neutral-700\",\n \"hover:bg-neutral-100\",\n \"active:bg-neutral-200\",\n \"shadow-none\",\n // Dark mode\n \"dark:text-neutral-300\",\n \"dark:hover:bg-neutral-800\",\n \"dark:active:bg-neutral-700\"\n ),\n \"ghost-primary\": cn(\n // Light mode\n \"bg-transparent text-primary-600\",\n \"hover:bg-primary-50\",\n \"active:bg-primary-100\",\n \"shadow-none\",\n // Dark mode\n \"dark:text-primary-400\",\n \"dark:hover:bg-primary-950\",\n \"dark:active:bg-primary-900\"\n ),\n danger: cn(\n // Light mode\n \"bg-critical-600 text-white\",\n \"hover:bg-critical-700\",\n \"active:bg-critical-800\",\n \"shadow-solid hover:shadow-solid-hover active:shadow-solid-active\",\n // Dark mode\n \"dark:bg-critical-500 dark:text-white\",\n \"dark:hover:bg-critical-600\",\n \"dark:active:bg-critical-700\"\n ),\n \"soft-danger\": cn(\n // Light mode\n \"bg-critical-50 text-critical-700\",\n \"hover:bg-critical-100\",\n \"active:bg-critical-200\",\n \"shadow-soft hover:shadow-soft-hover active:shadow-soft-active\",\n // Dark mode\n \"dark:bg-critical-950 dark:text-critical-300\",\n \"dark:hover:bg-critical-900\",\n \"dark:active:bg-critical-800\"\n ),\n};\n\n// Size styles (from Figma specs)\nconst sizeStyles: Record<ButtonSize, string> = {\n xs: \"h-btn-xs pl-3 pr-1.5 py-2 gap-0.5\",\n sm: \"h-btn-sm pl-3 pr-2 py-2 gap-1\",\n md: \"h-btn-md pl-3 pr-2.5 py-0 gap-1\",\n lg: \"h-btn-lg pl-3 pr-3 py-3 gap-1\",\n};\n\n// Icon-only size styles (square buttons)\nconst iconOnlySizeStyles: Record<ButtonSize, string> = {\n xs: \"h-btn-xs w-btn-xs p-0\",\n sm: \"h-btn-sm w-btn-sm p-0\",\n md: \"h-btn-md w-btn-md p-0\",\n lg: \"h-btn-lg w-btn-lg p-0\",\n};\n\n/**\n * Primary UI component for user interaction.\n * Supports multiple variants, sizes, loading states, and icons on both left and right.\n * Features a sophisticated 3-layer shadow system matching the Figma design.\n * Includes RTL (Right-to-Left) support for Arabic, Hebrew, and other RTL languages.\n * \n * Size Specifications (from Figma):\n * - xs: 32px height, 6px/8px padding, 2px gap\n * - sm: 36px height, 8px padding, 4px gap\n * - md: 40px height, 10px horizontal padding, 4px gap\n * - lg: 48px height, 12px padding, 4px gap\n * \n * All sizes use:\n * - Border radius: 8px\n * - Font: Inter Medium, 15px, weight 500, line-height 24px\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"md\",\n loading = false,\n disabled = false,\n fullWidth = false,\n iconLeft,\n iconRight,\n startIcon,\n endIcon,\n icon,\n rtl = false,\n children,\n className,\n ...props\n },\n ref\n ) => {\n // Determine if this is an icon-only button\n const isIconOnly = icon && !children;\n \n // Support both iconLeft/iconRight and startIcon/endIcon\n // In RTL: startIcon/iconLeft should appear on right, endIcon/iconRight should appear on left\n // In LTR: startIcon/iconLeft should appear on left, endIcon/iconRight should appear on right\n const startIconNode = iconLeft || startIcon;\n const endIconNode = iconRight || endIcon;\n\n // Build class names\n const buttonClasses = cn(\n // Base styles\n \"inline-flex items-center justify-center\",\n \"font-sans text-btn font-medium\",\n \"rounded-control\",\n \"transition-all duration-150 ease-in-out\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"cursor-pointer\",\n \n // Variant styles\n variantStyles[variant],\n \n // Size styles\n isIconOnly ? iconOnlySizeStyles[size] : sizeStyles[size],\n \n // RTL support - only font, not flex-row-reverse (we handle order in render)\n rtl && \"font-sans-rtl\",\n \n // Full width\n fullWidth && \"w-full\",\n \n // Disabled styles\n (disabled || loading) && \"opacity-50 cursor-not-allowed shadow-none pointer-events-none\",\n \n // Custom className\n className\n );\n\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled || loading}\n dir={rtl ? \"rtl\" : undefined}\n className={buttonClasses}\n {...props}\n >\n {/* Loading spinner or icon-only */}\n {loading ? (\n <Loader2 className=\"h-[20px] w-[20px] animate-spin\" />\n ) : isIconOnly ? (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px]\">\n {icon}\n </span>\n ) : null}\n \n {/* In RTL: render endIcon first (appears on left), then text, then startIcon (appears on right) */}\n {/* In LTR: render startIcon first (appears on left), then text, then endIcon (appears on right) */}\n {!isIconOnly && !loading && (\n <>\n {rtl ? (\n <>\n {/* End icon on left side in RTL - before text, needs margin-right */}\n {endIconNode && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] mr-1\">\n {endIconNode}\n </span>\n )}\n {/* Button text */}\n {children && (\n <span className=\"truncate\">{children}</span>\n )}\n {/* Start icon on right side in RTL - after text, needs margin-left */}\n {startIconNode && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] ml-1\">\n {startIconNode}\n </span>\n )}\n </>\n ) : (\n <>\n {/* Start icon on left side in LTR - before text, needs margin-right */}\n {startIconNode && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] mr-1\">\n {startIconNode}\n </span>\n )}\n {/* Button text */}\n {children && (\n <span className=\"truncate\">{children}</span>\n )}\n {/* End icon on right side in LTR - after text, needs margin-left */}\n {endIconNode && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] ml-1\">\n {endIconNode}\n </span>\n )}\n </>\n )}\n </>\n )}\n \n {/* Loading state with text */}\n {loading && !isIconOnly && children && (\n <span className=\"truncate ml-1\">{children}</span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { \n FaFacebook, \n FaLinkedin, \n FaApple, \n FaWhatsapp, \n FaGoogle,\n FaXTwitter\n} from \"react-icons/fa6\";\n\nexport type SocialPlatform = \"Facebook\" | \"LinkedIn\" | \"Apple\" | \"WhatsApp\" | \"Google\" | \"X\";\nexport type SocialButtonType = \"Default\" | \"IconOnly\";\nexport type SocialButtonStyle = \"Solid\" | \"Outlined\";\n\nexport interface SocialButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\" | \"type\" | \"style\"> {\n /** The social platform */\n platform: SocialPlatform;\n /** The type of button - Default with text or IconOnly */\n type?: SocialButtonType;\n /** The visual style variant */\n style?: SocialButtonStyle;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Platform labels (English)\nconst platformLabels: Record<SocialPlatform, string> = {\n Facebook: \"Sign in with Facebook\",\n LinkedIn: \"Sign in with LinkedIn\",\n Apple: \"Sign in with Apple\",\n WhatsApp: \"Sign in with WhatsApp\",\n Google: \"Sign in with Google\",\n X: \"Sign in with X\",\n};\n\n// Platform labels (Arabic - RTL)\nconst platformLabelsRTL: Record<SocialPlatform, string> = {\n Facebook: \"تسجيل الدخول باستخدام فيسبوك\",\n LinkedIn: \"تسجيل الدخول باستخدام لينكد إن\",\n Apple: \"تسجيل الدخول باستخدام آبل\",\n WhatsApp: \"تسجيل الدخول باستخدام واتساب\",\n Google: \"تسجيل الدخول باستخدام جوجل\",\n X: \"تسجيل الدخول باستخدام إكس\",\n};\n\n// Platform color mappings with hover/focus colors\nconst platformColors: Record<SocialPlatform, { \n bg: string; \n hoverBg: string; \n focusRing: string; \n text: string; \n border: string; \n textColor: string;\n}> = {\n Facebook: {\n bg: \"bg-social-facebook\",\n hoverBg: \"hover:bg-[#166FE5]\",\n focusRing: \"focus-visible:ring-[#1460CC]\",\n text: \"text-white\",\n border: \"border-social-facebook\",\n textColor: \"text-social-facebook\",\n },\n LinkedIn: {\n bg: \"bg-social-linkedin\",\n hoverBg: \"hover:bg-[#09599A]\",\n focusRing: \"focus-visible:ring-[#084C82]\",\n text: \"text-white\",\n border: \"border-social-linkedin\",\n textColor: \"text-social-linkedin\",\n },\n Apple: {\n bg: \"bg-social-apple\",\n hoverBg: \"hover:bg-[#1a1a1a]\",\n focusRing: \"focus-visible:ring-[#333333]\",\n text: \"text-white\",\n border: \"border-social-apple\",\n textColor: \"text-social-apple\",\n },\n WhatsApp: {\n bg: \"bg-social-whatsapp\",\n hoverBg: \"hover:bg-[#22C55E]\",\n focusRing: \"focus-visible:ring-[#1FA855]\",\n text: \"text-white\",\n border: \"border-social-whatsapp\",\n textColor: \"text-social-whatsapp\",\n },\n Google: {\n bg: \"bg-social-google\",\n hoverBg: \"hover:bg-[#357AE5]\",\n focusRing: \"focus-visible:ring-[#2E6FD6]\",\n text: \"text-white\",\n border: \"border-social-google\",\n textColor: \"text-social-google\",\n },\n X: {\n bg: \"bg-social-twitter\",\n hoverBg: \"hover:bg-[#1A91E0]\",\n focusRing: \"focus-visible:ring-[#1781CE]\",\n text: \"text-white\",\n border: \"border-social-twitter\",\n textColor: \"text-social-twitter\",\n },\n};\n\n// Platform icons using react-icons\nconst getPlatformIcon = (platform: SocialPlatform): React.ReactNode => {\n const iconSize = 20;\n \n const icons: Record<SocialPlatform, React.ReactNode> = {\n Facebook: <FaFacebook size={iconSize} />,\n LinkedIn: <FaLinkedin size={iconSize} />,\n Apple: <FaApple size={iconSize} />,\n WhatsApp: <FaWhatsapp size={iconSize} />,\n Google: <FaGoogle size={iconSize} />,\n X: <FaXTwitter size={iconSize} />,\n };\n \n return icons[platform];\n};\n\n/**\n * SocialButton component for social media authentication buttons.\n * Supports multiple platforms (Facebook, LinkedIn, Apple, WhatsApp, Google, X),\n * two types (Default with text, IconOnly), two styles (Solid, Outlined),\n * and RTL support.\n * \n * Specifications:\n * - Height: 36px\n * - Font: Inter Medium, 15px, weight 500, line-height 24px\n * - Border radius: 8px\n * - Icon size: 20px × 20px\n * - Left padding: 12px\n * - Shadow: component/default shadow system\n */\nexport const SocialButton = forwardRef<HTMLButtonElement, SocialButtonProps>(\n (\n {\n platform,\n type = \"Default\",\n style = \"Solid\",\n rtl = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const isRTL = rtl;\n const isIconOnly = type === \"IconOnly\";\n const isOutlined = style === \"Outlined\";\n const colors = platformColors[platform];\n const icon = getPlatformIcon(platform);\n const label = isRTL ? platformLabelsRTL[platform] : platformLabels[platform];\n\n // Build base classes\n const baseClasses = cn(\n // Base styles\n \"inline-flex items-center justify-center\",\n \"font-sans text-btn font-medium\",\n \"rounded-control\",\n \"transition-all duration-150 ease-in-out\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"cursor-pointer\",\n \"relative\",\n \n // Size styles\n isIconOnly ? \"h-9 w-9 p-0\" : \"h-9 pl-3 pr-3 py-0 gap-0.5\",\n \n // RTL support - only font, not flex-row-reverse (we handle order in render)\n isRTL && \"font-sans-rtl\",\n \n // Disabled styles\n disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n \n // Custom className\n className\n );\n\n // Style-specific classes\n const styleClasses = cn(\n style === \"Solid\"\n ? cn(\n colors.bg,\n colors.text,\n colors.hoverBg,\n colors.focusRing,\n \"border border-transparent\",\n \"shadow-component-default\",\n \"hover:shadow-component-hover\",\n \"focus-visible:shadow-component-focus\"\n )\n : cn(\n \"bg-white\",\n colors.border,\n colors.textColor,\n \"border\",\n \"shadow-outline\",\n \"hover:bg-neutral-50\",\n \"hover:shadow-outline-hover\",\n colors.focusRing\n )\n );\n\n // Icon wrapper classes\n const iconClasses = cn(\n \"flex items-center justify-center flex-shrink-0\",\n \"h-[20px] w-[20px]\",\n isIconOnly ? \"\" : (isRTL ? \"mr-0.5\" : \"mr-0.5\"),\n isOutlined && colors.textColor\n );\n\n // Render icon\n const renderIcon = () => (\n <span className={iconClasses}>\n {icon}\n </span>\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n dir={isRTL ? \"rtl\" : undefined}\n className={cn(baseClasses, styleClasses)}\n {...props}\n >\n {/* In RTL: render Text first then Icon (icon appears on right side) */}\n {/* In LTR: render Icon first then Text (icon appears on left side) */}\n {isRTL ? (\n <>\n {!isIconOnly && (\n <span className={cn(\"truncate relative z-10\", isOutlined && colors.textColor)}>{label}</span>\n )}\n {renderIcon()}\n </>\n ) : (\n <>\n {renderIcon()}\n {!isIconOnly && (\n <span className={cn(\"truncate relative z-10\", isOutlined && colors.textColor)}>{label}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nSocialButton.displayName = \"SocialButton\";\n\n","import { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n","import React, { forwardRef } from 'react';\nimport { LucideIcon, Plus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface ButtonGroupItem {\n /** Button text label */\n label?: string;\n /** Icon component from lucide-react */\n icon?: LucideIcon;\n /** Click handler for this button */\n onClick?: () => void;\n /** Whether this button is disabled */\n disabled?: boolean;\n /** Whether this button is active/selected */\n active?: boolean;\n}\n\nexport interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {\n /** Array of button items */\n items: ButtonGroupItem[];\n /** Button group size */\n size?: 'xs' | 'sm' | 'md';\n /** Button group type */\n type?: 'Default' | 'IconOnly';\n /** RTL mode */\n rtl?: boolean;\n /** RTL button labels (array matching items) */\n rtlLabels?: string[];\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n items = [],\n size = 'md',\n type = 'Default',\n rtl = false,\n rtlLabels = [],\n className,\n ...props\n },\n ref\n ) => {\n // Size-specific classes\n const sizeConfig = {\n xs: {\n height: 'h-[32px]',\n padding: type === 'IconOnly' ? 'px-1.5' : 'px-2',\n gap: type === 'IconOnly' ? 'gap-0.5' : 'gap-1',\n },\n sm: {\n height: 'h-[36px]',\n padding: type === 'IconOnly' ? 'px-2' : 'px-2.5',\n gap: type === 'IconOnly' ? 'gap-1' : 'gap-1',\n },\n md: {\n height: 'h-[40px]',\n padding: type === 'IconOnly' ? 'px-2.5' : 'px-3.5',\n gap: type === 'IconOnly' ? 'gap-1' : 'gap-1',\n },\n };\n\n const config = sizeConfig[size];\n\n // Base container classes\n const containerClasses = cn(\n 'relative inline-flex items-center overflow-hidden',\n 'bg-neutral-50 border border-neutral-300 rounded-control',\n 'shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n rtl && 'flex-row-reverse',\n className\n );\n\n // Button item base classes\n const buttonItemClasses = (item: ButtonGroupItem, isFirst: boolean, _isLast: boolean) => cn(\n 'relative flex items-center justify-center',\n 'bg-transparent transition-all duration-150',\n config.height,\n config.padding,\n config.gap,\n 'text-neutral-700 text-[15px] font-medium leading-[24px]',\n !item.disabled && 'hover:bg-neutral-100 active:bg-neutral-200',\n !item.disabled && 'cursor-pointer',\n item.disabled && 'opacity-50 cursor-not-allowed',\n item.active && 'bg-neutral-100',\n // Divider on the left (right in RTL)\n !isFirst && 'before:absolute before:left-0 before:top-0 before:bottom-0',\n !isFirst && 'before:w-px before:bg-neutral-300/50',\n rtl && !isFirst && 'before:left-auto before:right-0'\n );\n\n return (\n <div ref={ref} className={containerClasses} {...props}>\n {/* Inner shadow overlay */}\n <div className=\"absolute inset-0 pointer-events-none rounded-control shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\" />\n\n {/* Button items */}\n {items.map((item, index) => {\n const Icon = item.icon || Plus;\n const isFirst = index === 0;\n const isLast = index === items.length - 1;\n const displayLabel = rtl && rtlLabels[index] ? rtlLabels[index] : item.label;\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={item.onClick}\n disabled={item.disabled}\n className={buttonItemClasses(item, isFirst, isLast)}\n >\n {type === 'Default' ? (\n <>\n {rtl ? (\n <>\n {/* RTL: Text first, then icon */}\n {displayLabel && (\n <span className=\"px-0.5 whitespace-nowrap font-sans-rtl\">\n {displayLabel}\n </span>\n )}\n <Icon className=\"w-5 h-5 shrink-0\" />\n </>\n ) : (\n <>\n {/* LTR: Icon first, then text */}\n <Icon className=\"w-5 h-5 shrink-0\" />\n {displayLabel && (\n <span className=\"px-0.5 whitespace-nowrap\">\n {displayLabel}\n </span>\n )}\n </>\n )}\n </>\n ) : (\n // IconOnly type\n <Icon className=\"w-5 h-5 shrink-0\" />\n )}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = 'ButtonGroup';\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Checkbox label */\n label?: string;\n /** Support text below label */\n supportText?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL support text (Arabic) */\n rtlSupportText?: string;\n /** Checkbox position relative to label */\n checkLocation?: 'leading' | 'trailing';\n /** Indeterminate state */\n indeterminate?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n supportText,\n rtlLabel,\n rtlSupportText,\n checkLocation = 'leading',\n indeterminate = false,\n rtl = false,\n error = false,\n disabled = false,\n checked = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n // Checkbox box classes\n const checkboxBoxClasses = cn(\n 'relative w-5 h-5 rounded border flex items-center justify-center transition-all duration-150',\n 'bg-white shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border and background states\n !checked && !indeterminate && !error && !disabled && 'border-neutral-300',\n !checked && !indeterminate && error && !disabled && 'border-danger-500',\n (checked || indeterminate) && !disabled && 'bg-primary-500 border-primary-500',\n // Hover states\n !disabled && !checked && !indeterminate && 'hover:border-neutral-400',\n !disabled && (checked || indeterminate) && 'hover:bg-primary-600 hover:border-primary-600',\n // Focus states (handled by focus-visible on input)\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Container classes\n const containerClasses = cn(\n 'inline-flex gap-2 items-start',\n hasSupportText ? 'items-start' : 'items-center',\n rtl && 'flex-row-reverse',\n checkLocation === 'trailing' && !rtl && 'flex-row-reverse',\n checkLocation === 'leading' && rtl && 'flex-row-reverse',\n className\n );\n\n // Label wrapper classes\n const labelWrapperClasses = cn(\n 'flex flex-col flex-1 min-w-0',\n hasSupportText ? 'justify-center' : 'justify-center',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'text-[15px] leading-6 font-medium text-neutral-900',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'text-[13px] leading-5 font-normal text-neutral-600',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n return (\n <label className={containerClasses}>\n {/* Hidden native checkbox */}\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n className=\"sr-only peer\"\n {...props}\n />\n\n {/* Custom checkbox wrapper */}\n <div className=\"flex items-start shrink-0 pt-0.5\">\n <div className={checkboxBoxClasses}>\n {/* Check icon */}\n {checked && !indeterminate && (\n <Check className=\"w-3 h-3 text-white stroke-[2.5]\" />\n )}\n {/* Indeterminate icon */}\n {indeterminate && (\n <Minus className=\"w-3 h-3 text-white stroke-[2.5]\" />\n )}\n </div>\n\n {/* Focus ring */}\n <div\n className={cn(\n 'absolute inset-0 rounded pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'shadow-[0_0_0_3px_rgba(50,118,255,0.2)]',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n\n {/* Label and support text */}\n {(label || rtlLabel) && (\n <div className={labelWrapperClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\n","import React, { forwardRef, HTMLAttributes } from 'react';\nimport { LucideIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckmarkCardProps extends Omit<HTMLAttributes<HTMLElement>, 'style' | 'onChange'> {\n /** Card label */\n label: string;\n /** Support text below label */\n supportText?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL support text (Arabic) */\n rtlSupportText?: string;\n /** Whether the card is selected */\n selected?: boolean;\n /** Whether the card is disabled */\n disabled?: boolean;\n /** Card type */\n type?: 'default' | 'icon-left' | 'icon-right' | 'label-only';\n /** Optional icon component from lucide-react */\n icon?: LucideIcon;\n /** Custom icon node (for avatars, payment icons, etc.) */\n customIcon?: React.ReactNode;\n /** RTL mode */\n rtl?: boolean;\n /** On change handler */\n onChange?: (selected: boolean) => void;\n}\n\nexport const CheckmarkCard = forwardRef<HTMLDivElement, CheckmarkCardProps>(\n (\n {\n label,\n supportText,\n rtlLabel,\n rtlSupportText,\n selected = false,\n disabled = false,\n type = 'default',\n icon: Icon,\n customIcon,\n rtl = false,\n onChange,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasIcon = !!Icon || !!customIcon;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n const handleClick = () => {\n if (!disabled && onChange) {\n onChange(!selected);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!disabled && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n onChange?.(!selected);\n }\n };\n\n // Card container classes\n const containerClasses = cn(\n 'relative flex items-start gap-4 p-4 w-full max-w-[338px]',\n 'bg-white border rounded-xl transition-all duration-150',\n 'shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded-xl after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]',\n // State styles\n !disabled && !selected && 'border-neutral-200',\n !disabled && selected && 'border-primary-500 border-2',\n !disabled && 'hover:bg-neutral-50 cursor-pointer',\n disabled && 'border-neutral-200 bg-neutral-50 cursor-not-allowed',\n // RTL\n rtl && 'flex-row-reverse',\n className\n );\n\n // Checkbox classes\n const checkboxClasses = cn(\n 'relative w-5 h-5 rounded border flex items-center justify-center transition-all duration-150 shrink-0 mt-0.5',\n 'bg-white shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border and background states\n !selected && !disabled && 'border-neutral-300',\n selected && !disabled && 'bg-primary-500 border-primary-500',\n disabled && 'bg-neutral-100 border-neutral-200',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Content wrapper classes\n const contentClasses = cn(\n 'flex flex-1 min-w-0',\n (type === 'icon-left' && hasIcon) || (type === 'default' && hasIcon) ? 'gap-3' : '',\n rtl && 'flex-row-reverse'\n );\n\n // Text wrapper classes\n const textClasses = cn(\n 'flex flex-col gap-0.5 flex-1 min-w-0',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'text-[15px] leading-6 font-medium text-neutral-900',\n rtl && 'font-sans-rtl',\n disabled && 'text-neutral-400'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'text-[14px] leading-5 font-normal text-neutral-600',\n rtl && 'font-sans-rtl',\n disabled && 'text-neutral-400'\n );\n\n // Icon wrapper classes\n const iconWrapperClasses = cn(\n 'shrink-0',\n disabled && 'opacity-60'\n );\n\n const renderCheckbox = () => (\n <div className={checkboxClasses}>\n {selected && (\n <svg\n className=\"w-3 h-3 text-white\"\n fill=\"none\"\n viewBox=\"0 0 12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n >\n <path\n d=\"M2.5 6.5L4.5 8.5L9.5 3.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n\n const renderIcon = () => {\n if (customIcon) {\n return <div className={iconWrapperClasses}>{customIcon}</div>;\n }\n if (Icon) {\n return (\n <div className={iconWrapperClasses}>\n <Icon className=\"w-6 h-6 text-neutral-600\" />\n </div>\n );\n }\n return null;\n };\n\n const renderContent = () => {\n // Label only (no icons, checkbox separate)\n if (type === 'label-only' && !hasSupportText) {\n return (\n <div className={cn('flex items-center flex-1 gap-3', rtl && 'flex-row-reverse')}>\n {renderCheckbox()}\n <span className={labelClasses} dir={rtl ? 'rtl' : undefined}>\n {displayLabel}\n </span>\n </div>\n );\n }\n\n // Icon on the left side (with checkbox either left or right)\n if (type === 'icon-left') {\n return (\n <>\n {renderCheckbox()}\n <div className={contentClasses}>\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n </>\n );\n }\n\n // Icon on the right side\n if (type === 'icon-right') {\n return (\n <>\n <div className={contentClasses}>\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n {renderCheckbox()}\n </>\n );\n }\n\n // Default: Icon/content left, checkbox right\n return (\n <>\n <div className={contentClasses}>\n {renderIcon()}\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n {renderCheckbox()}\n </>\n );\n };\n\n const Element = disabled ? 'div' : 'button';\n\n return (\n <Element\n ref={ref as any}\n className={containerClasses}\n onClick={!disabled ? handleClick : undefined}\n onKeyDown={!disabled ? handleKeyDown : undefined}\n disabled={disabled}\n role={!disabled ? 'checkbox' : undefined}\n aria-checked={!disabled ? selected : undefined}\n aria-disabled={disabled}\n tabIndex={!disabled ? 0 : undefined}\n {...props}\n >\n {renderContent()}\n </Element>\n );\n }\n);\n\nCheckmarkCard.displayName = 'CheckmarkCard';\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type SwitcherSize = 'sm' | 'md' | 'lg';\n\nexport interface SwitcherProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange'> {\n /** Label text for the switcher */\n label?: string;\n /** Whether the switcher is checked */\n checked?: boolean;\n /** Callback when the switcher is changed */\n onChange?: (checked: boolean) => void;\n /** Callback when the switcher state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Size of the switcher */\n size?: SwitcherSize;\n /** Enable RTL mode */\n rtl?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Switcher Component - Toggle switch for binary options\n * Supports RTL, different sizes, and dark mode\n * Perfect for theme switching (light/dark) and direction switching (LTR/RTL)\n */\nexport const Switcher = forwardRef<HTMLInputElement, SwitcherProps>(\n (\n {\n label,\n checked = false,\n onChange,\n onCheckedChange,\n size = 'md',\n rtl = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const handleChange = () => {\n if (onChange) onChange(checked);\n if (onCheckedChange) onCheckedChange(checked);\n };\n\n // Size configurations\n const sizeConfig = {\n sm: {\n track: 'w-9 h-5',\n thumb: 'w-4 h-4',\n translateChecked: 'translate-x-4',\n translateUnchecked: 'translate-x-0.5',\n },\n md: {\n track: 'w-11 h-6',\n thumb: 'w-5 h-5',\n translateChecked: 'translate-x-5',\n translateUnchecked: 'translate-x-0.5',\n },\n lg: {\n track: 'w-14 h-7',\n thumb: 'w-6 h-6',\n translateChecked: 'translate-x-7',\n translateUnchecked: 'translate-x-0.5',\n },\n };\n\n const config = sizeConfig[size];\n\n // Track classes (with RTL support via dir attribute and CSS)\n const trackClasses = cn(\n 'relative inline-flex items-center shrink-0 rounded-full transition-colors duration-200 ease-in-out',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n config.track,\n // Light mode\n checked\n ? 'bg-primary-600 hover:bg-primary-700'\n : 'bg-neutral-200 hover:bg-neutral-300',\n // Dark mode\n 'dark:focus-visible:ring-offset-neutral-900',\n checked\n ? 'dark:bg-primary-500 dark:hover:bg-primary-600'\n : 'dark:bg-neutral-700 dark:hover:bg-neutral-600',\n // Disabled\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && 'cursor-pointer',\n // RTL support - we'll use dir=\"rtl\" on the track to flip the layout\n rtl && 'rtl'\n );\n\n // Thumb classes\n // In RTL mode with dir=\"rtl\", positive translations will automatically flip direction\n const thumbClasses = cn(\n 'pointer-events-none inline-block rounded-full bg-white shadow-lg ring-0 transition-transform duration-200 ease-in-out',\n config.thumb,\n // Use same positive translations for both LTR and RTL\n // RTL flip happens via dir=\"rtl\" attribute on parent\n checked ? config.translateChecked : config.translateUnchecked,\n // Dark mode\n 'dark:bg-neutral-200'\n );\n\n // Container classes\n const containerClasses = cn(\n 'inline-flex items-center gap-3',\n rtl && 'flex-row-reverse',\n className\n );\n\n // Label classes\n const labelClasses = cn(\n 'text-sm font-medium',\n 'text-neutral-900 dark:text-neutral-100',\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && 'cursor-pointer'\n );\n\n return (\n <label className={containerClasses} dir={rtl ? 'rtl' : undefined}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n {...props}\n />\n <span className={trackClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={thumbClasses} />\n </span>\n {label && <span className={labelClasses}>{label}</span>}\n </label>\n );\n }\n);\n\nSwitcher.displayName = 'Switcher';\n\n","import { ReactNode, HTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type BadgeType = \"Default\" | \"LeadingIcon\" | \"TrailingIcon\" | \"Dot\" | \"Flag\";\nexport type BadgeStyle = \"Light\" | \"Outline\" | \"Solid\";\nexport type BadgeSize = \"sm\" | \"lg\";\nexport type BadgeColor =\n | \"Neutral\"\n | \"Blue\"\n | \"Green\"\n | \"Amber\"\n | \"Danger\"\n | \"Purple\"\n | \"Fuchsia\"\n | \"Rose\"\n | \"Sky\"\n | \"Golden\";\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"style\"> {\n /** The type of badge */\n type?: BadgeType;\n /** The visual style variant */\n style?: BadgeStyle;\n /** The size of the badge */\n size?: BadgeSize;\n /** The color variant */\n color?: BadgeColor;\n /** Whether to show a number instead of text */\n showNumber?: boolean;\n /** The number to display (when showNumber is true) */\n number?: number;\n /** The badge text content */\n children?: ReactNode;\n /** Icon to display on the left (for LeadingIcon type) */\n leadingIcon?: ReactNode;\n /** Icon to display on the right (for TrailingIcon type) */\n trailingIcon?: ReactNode;\n /** Flag icon (for Flag type) */\n flagIcon?: ReactNode;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Style variants - explicit mappings for all color/style combinations\nconst styleVariants: Record<BadgeStyle, Record<BadgeColor, string>> = {\n Light: {\n Neutral: \"bg-neutral-50 text-neutral-700 border border-neutral-100\",\n Blue: \"bg-blue-50 text-blue-700 border border-blue-100\",\n Green: \"bg-green-50 text-green-700 border border-green-100\",\n Amber: \"bg-amber-50 text-amber-700 border border-amber-100\",\n Danger: \"bg-critical-50 text-critical-700 border border-critical-100\",\n Purple: \"bg-purple-50 text-purple-700 border border-purple-100\",\n Fuchsia: \"bg-fuchsia-50 text-fuchsia-700 border border-fuchsia-100\",\n Rose: \"bg-rose-50 text-rose-700 border border-rose-100\",\n Sky: \"bg-sky-50 text-sky-700 border border-sky-100\",\n Golden: \"bg-golden-50 text-golden-700 border border-golden-100\",\n },\n Outline: {\n Neutral: \"bg-white text-neutral-700 border border-neutral-300\",\n Blue: \"bg-white text-neutral-700 border border-blue-300\",\n Green: \"bg-white text-neutral-700 border border-green-300\",\n Amber: \"bg-white text-neutral-700 border border-amber-300\",\n Danger: \"bg-white text-neutral-700 border border-critical-300\",\n Purple: \"bg-white text-neutral-700 border border-purple-300\",\n Fuchsia: \"bg-white text-neutral-700 border border-fuchsia-300\",\n Rose: \"bg-white text-neutral-700 border border-rose-300\",\n Sky: \"bg-white text-neutral-700 border border-sky-300\",\n Golden: \"bg-white text-neutral-700 border border-golden-300\",\n },\n Solid: {\n Neutral: \"bg-neutral-600 text-white border border-transparent\",\n Blue: \"bg-blue-600 text-white border border-transparent\",\n Green: \"bg-green-600 text-white border border-transparent\",\n Amber: \"bg-amber-600 text-white border border-transparent\",\n Danger: \"bg-critical-600 text-white border border-transparent\",\n Purple: \"bg-purple-600 text-white border border-transparent\",\n Fuchsia: \"bg-fuchsia-600 text-white border border-transparent\",\n Rose: \"bg-rose-600 text-white border border-transparent\",\n Sky: \"bg-sky-600 text-white border border-transparent\",\n Golden: \"bg-golden-600 text-white border border-transparent\",\n },\n};\n\n// Dot color classes\nconst dotColorClasses: Record<BadgeStyle, Record<BadgeColor, string>> = {\n Light: {\n Neutral: \"bg-neutral-600\",\n Blue: \"bg-blue-600\",\n Green: \"bg-green-600\",\n Amber: \"bg-amber-600\",\n Danger: \"bg-critical-600\",\n Purple: \"bg-purple-600\",\n Fuchsia: \"bg-fuchsia-600\",\n Rose: \"bg-rose-600\",\n Sky: \"bg-sky-600\",\n Golden: \"bg-golden-600\",\n },\n Outline: {\n Neutral: \"bg-neutral-600\",\n Blue: \"bg-blue-600\",\n Green: \"bg-green-600\",\n Amber: \"bg-amber-600\",\n Danger: \"bg-critical-600\",\n Purple: \"bg-purple-600\",\n Fuchsia: \"bg-fuchsia-600\",\n Rose: \"bg-rose-600\",\n Sky: \"bg-sky-600\",\n Golden: \"bg-golden-600\",\n },\n Solid: {\n Neutral: \"bg-white\",\n Blue: \"bg-white\",\n Green: \"bg-white\",\n Amber: \"bg-white\",\n Danger: \"bg-white\",\n Purple: \"bg-white\",\n Fuchsia: \"bg-white\",\n Rose: \"bg-white\",\n Sky: \"bg-white\",\n Golden: \"bg-white\",\n },\n};\n\n// Size styles\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: \"h-badge-sm px-2 py-0.5 gap-1 rounded-full\",\n lg: \"h-badge-lg px-2 py-1 gap-1.5 rounded-full\",\n};\n\n// Icon sizes\nconst iconSizes: Record<BadgeSize, string> = {\n sm: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n};\n\n// Dot sizes\nconst dotSizes: Record<BadgeSize, string> = {\n sm: \"h-2 w-2\",\n lg: \"h-2.5 w-2.5\",\n};\n\n/**\n * Badge component for displaying labels, statuses, and notifications.\n * Supports multiple types, styles, sizes, and colors with RTL support.\n * \n * Specifications:\n * - Font: Inter Medium, 11px, weight 500, line-height 14px\n * - Border radius: Fully rounded (pill shape)\n * - Padding: 8px horizontal for both sizes\n * - Height sm: 24px, lg: 28px\n * - Icon sizes: 12px (sm), 16px (lg)\n * - Dot size: 8px (sm), 10px (lg)\n */\nexport const Badge = forwardRef<HTMLDivElement, BadgeProps>(\n (\n {\n type = \"Default\",\n style = \"Light\",\n size = \"sm\",\n color = \"Neutral\",\n showNumber = false,\n number,\n children,\n leadingIcon,\n trailingIcon,\n flagIcon,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const isRTL = rtl;\n\n // Build base classes\n const baseClasses = cn(\n \"inline-flex items-center justify-center\",\n \"font-sans text-badge font-medium\",\n \"whitespace-nowrap\",\n sizeStyles[size],\n styleVariants[style][color],\n isRTL && \"font-sans-rtl flex-row-reverse\",\n className\n );\n\n // Render icon wrapper\n const renderIcon = (icon: ReactNode, iconSize: string) => (\n <span className={cn(\"flex items-center justify-center flex-shrink-0\", iconSize)}>\n {icon}\n </span>\n );\n\n // Render dot indicator\n const renderDot = () => {\n return (\n <span\n className={cn(\n \"rounded-full flex-shrink-0\",\n dotSizes[size],\n dotColorClasses[style][color]\n )}\n />\n );\n };\n\n // Render flag icon\n const renderFlag = () => {\n if (flagIcon) {\n return renderIcon(flagIcon, iconSizes[size]);\n }\n // Default flag placeholder - can be replaced with actual flag component\n return (\n <span\n className={cn(\n \"rounded-sm flex-shrink-0 bg-neutral-300\",\n iconSizes[size]\n )}\n />\n );\n };\n\n // Format number display\n const formatNumber = (num: number): string => {\n if (num > 99) return \"99+\";\n return num.toString();\n };\n\n // Determine content to display\n const displayContent = showNumber && number !== undefined\n ? formatNumber(number)\n : children;\n\n // Render based on type\n const renderContent = () => {\n switch (type) {\n case \"LeadingIcon\":\n return (\n <>\n {leadingIcon && renderIcon(leadingIcon, iconSizes[size])}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"TrailingIcon\":\n return (\n <>\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n {trailingIcon && renderIcon(trailingIcon, iconSizes[size])}\n </>\n );\n case \"Dot\":\n return (\n <>\n {renderDot()}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"Flag\":\n return (\n <>\n {renderFlag()}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"Default\":\n default:\n return displayContent && <span className=\"truncate\">{displayContent}</span>;\n }\n };\n\n return (\n <div\n ref={ref}\n dir={isRTL ? \"rtl\" : undefined}\n className={baseClasses}\n {...props}\n >\n {renderContent()}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\n","import React, { forwardRef } from 'react';\nimport { X, AlertCircle, CheckCircle, AlertTriangle, Info, Circle } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {\n /** The alert style */\n style?: 'Outline' | 'Light' | 'Solid';\n /** The alert status/severity */\n status?: 'Danger' | 'Success' | 'Warning' | 'Info' | 'Neutral';\n /** The title text */\n title?: string;\n /** Optional message text (for expandable alerts) */\n message?: string;\n /** Whether to show action links */\n showActions?: boolean;\n /** Primary action text */\n primaryAction?: string;\n /** Secondary action text */\n secondaryAction?: string;\n /** Callback for primary action click */\n onPrimaryAction?: () => void;\n /** Callback for secondary action click */\n onSecondaryAction?: () => void;\n /** Whether to show close button */\n closable?: boolean;\n /** Callback when close button is clicked */\n onClose?: () => void;\n /** RTL mode */\n rtl?: boolean;\n /** RTL title text */\n rtlTitle?: string;\n /** RTL message text */\n rtlMessage?: string;\n /** RTL primary action text */\n rtlPrimaryAction?: string;\n /** RTL secondary action text */\n rtlSecondaryAction?: string;\n}\n\nconst statusConfig = {\n Danger: {\n icon: AlertCircle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-critical-200',\n iconColor: 'text-critical-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-critical-50',\n border: 'border-none',\n iconColor: 'text-critical-600',\n titleColor: 'text-critical-800',\n messageColor: 'text-critical-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-critical-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Success: {\n icon: CheckCircle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-green-200',\n iconColor: 'text-green-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-green-50',\n border: 'border-none',\n iconColor: 'text-green-600',\n titleColor: 'text-green-800',\n messageColor: 'text-green-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-green-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Warning: {\n icon: AlertTriangle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-amber-200',\n iconColor: 'text-amber-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-amber-50',\n border: 'border-none',\n iconColor: 'text-amber-600',\n titleColor: 'text-amber-800',\n messageColor: 'text-amber-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-amber-500',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Info: {\n icon: Info,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-blue-200',\n iconColor: 'text-blue-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-blue-50',\n border: 'border-none',\n iconColor: 'text-blue-600',\n titleColor: 'text-blue-800',\n messageColor: 'text-blue-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-blue-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Neutral: {\n icon: Circle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-neutral-300',\n iconColor: 'text-neutral-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-neutral-100',\n border: 'border-none',\n iconColor: 'text-neutral-600',\n titleColor: 'text-neutral-800',\n messageColor: 'text-neutral-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-neutral-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n style = 'Outline',\n status = 'Info',\n title = 'Alert title',\n message,\n showActions = false,\n primaryAction = 'Action',\n secondaryAction = 'Action',\n onPrimaryAction,\n onSecondaryAction,\n closable = true,\n onClose,\n rtl = false,\n rtlTitle,\n rtlMessage,\n rtlPrimaryAction = 'زر الرابط',\n rtlSecondaryAction = 'زر الرابط',\n className,\n ...props\n },\n ref\n ) => {\n const config = statusConfig[status];\n const colors = config.colors[style];\n const Icon = config.icon;\n const isRTL = rtl;\n const isExpandable = !!message;\n\n const displayTitle = isRTL && rtlTitle ? rtlTitle : title;\n const displayMessage = isRTL && rtlMessage ? rtlMessage : message;\n const displayPrimaryAction = isRTL ? rtlPrimaryAction : primaryAction;\n const displaySecondaryAction = isRTL ? rtlSecondaryAction : secondaryAction;\n\n // Base classes\n const baseClasses = cn(\n 'flex items-start gap-2 px-4 py-3 rounded-control transition-all',\n colors.bg,\n colors.border,\n isRTL && 'font-sans-rtl'\n );\n\n // Icon classes\n const iconClasses = cn('w-5 h-5 shrink-0', colors.iconColor);\n\n // Title classes\n const titleClasses = cn(\n 'text-[15px] font-medium leading-[24px]',\n colors.titleColor,\n isRTL ? 'text-right' : 'text-left'\n );\n\n // Message classes\n const messageClasses = cn(\n 'text-[14px] font-normal leading-[20px]',\n colors.messageColor,\n isRTL ? 'text-right' : 'text-left'\n );\n\n // Action classes\n const actionClasses = cn(\n 'text-[15px] font-medium leading-[24px] underline cursor-pointer transition-colors',\n colors.actionColor\n );\n\n // Close button classes\n const closeClasses = cn(\n 'w-5 h-5 shrink-0 cursor-pointer transition-colors',\n colors.closeColor\n );\n\n return (\n <div\n ref={ref}\n className={cn(baseClasses, className)}\n dir={isRTL ? 'rtl' : undefined}\n {...props}\n >\n {/* Content */}\n <div className=\"flex-1 flex items-start gap-2\">\n {/* For RTL, icon goes on the right */}\n {!isRTL && <Icon className={iconClasses} />}\n\n {/* Text content */}\n <div className=\"flex-1 flex flex-col gap-1\">\n {/* Title */}\n <div className={titleClasses} dir={isRTL ? 'rtl' : undefined}>\n {displayTitle}\n </div>\n\n {/* Message (if expandable) */}\n {isExpandable && displayMessage && (\n <div className={messageClasses} dir={isRTL ? 'rtl' : undefined}>\n {displayMessage}\n </div>\n )}\n\n {/* Actions (if enabled and expandable) */}\n {showActions && isExpandable && (\n <div className={cn('flex gap-4 mt-2', isRTL && 'flex-row-reverse')}>\n {onPrimaryAction && (\n <button\n type=\"button\"\n onClick={onPrimaryAction}\n className={actionClasses}\n >\n {displayPrimaryAction}\n </button>\n )}\n {onSecondaryAction && (\n <button\n type=\"button\"\n onClick={onSecondaryAction}\n className={actionClasses}\n >\n {displaySecondaryAction}\n </button>\n )}\n </div>\n )}\n </div>\n\n {isRTL && <Icon className={iconClasses} />}\n </div>\n\n {/* Action link (for non-expandable) */}\n {showActions && !isExpandable && onPrimaryAction && (\n <button\n type=\"button\"\n onClick={onPrimaryAction}\n className={cn(actionClasses, 'shrink-0 whitespace-nowrap')}\n >\n {displayPrimaryAction}\n </button>\n )}\n\n {/* Close button */}\n {closable && onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className={closeClasses}\n aria-label=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = 'Alert';\n\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n /** Direction of the divider */\n direction?: 'horizontal' | 'vertical';\n /** Style type of the divider */\n type?: 'solid' | 'dashed';\n /** Custom color (defaults to neutral-200) */\n color?: string;\n /** Spacing around the divider (margin) */\n spacing?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n direction = 'horizontal',\n type = 'solid',\n color,\n spacing = 'none',\n className,\n ...props\n },\n ref\n ) => {\n // Spacing classes\n const spacingClasses = {\n none: '',\n xs: direction === 'horizontal' ? 'my-1' : 'mx-1',\n sm: direction === 'horizontal' ? 'my-2' : 'mx-2',\n md: direction === 'horizontal' ? 'my-4' : 'mx-4',\n lg: direction === 'horizontal' ? 'my-6' : 'mx-6',\n xl: direction === 'horizontal' ? 'my-8' : 'mx-8',\n };\n\n // Horizontal divider\n if (direction === 'horizontal') {\n return (\n <hr\n ref={ref as any}\n className={cn(\n 'w-full border-0',\n type === 'solid' ? 'border-t border-solid' : 'border-t border-dashed',\n color ? `border-[${color}]` : 'border-neutral-200',\n spacingClasses[spacing],\n className\n )}\n {...props}\n />\n );\n }\n\n // Vertical divider\n return (\n <div\n ref={ref}\n className={cn(\n 'h-full',\n type === 'solid' ? 'border-l border-solid' : 'border-l border-dashed',\n color ? `border-[${color}]` : 'border-neutral-200',\n spacingClasses[spacing],\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = 'Divider';\n\n","import { forwardRef, HTMLAttributes, ReactNode } from 'react';\nimport { LucideIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Badge } from '../Badge/Badge';\n\n// ============ MenuItem Component ============\n\nexport interface MenuItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'type'> {\n /** Type of menu item */\n type?: 'default' | 'multiline' | 'cta' | 'progress' | 'button' | 'divider' | 'label' | 'caption';\n /** Item state */\n state?: 'default' | 'hover' | 'disabled';\n /** Main label text */\n label?: string;\n /** Supporting text (for multiline items) */\n supportText?: string;\n /** Leading icon */\n leadingIcon?: LucideIcon;\n /** Trailing icon */\n trailingIcon?: LucideIcon;\n /** Avatar image URL */\n avatarSrc?: string;\n /** Avatar initials */\n avatarInitials?: string;\n /** Badge text */\n badgeText?: string;\n /** Badge variant */\n badgeVariant?: 'neutral' | 'green' | 'blue' | 'red' | 'yellow';\n /** Right-aligned text */\n rightText?: string;\n /** Show toggle switch */\n hasSwitch?: boolean;\n /** Toggle switch active state */\n switchActive?: boolean;\n /** Switch change handler */\n onSwitchChange?: (active: boolean) => void;\n /** Button text (for CTA items) */\n buttonText?: string;\n /** Button click handler */\n onButtonClick?: () => void;\n /** Progress percentage (for progress items) */\n progress?: number;\n /** Progress label */\n progressLabel?: string;\n /** Progress optional text */\n progressOptional?: string;\n /** Caption text (for label/caption items) */\n caption?: string;\n /** RTL mode */\n rtl?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n (\n {\n type = 'default',\n state = 'default',\n label = 'Text item',\n supportText,\n leadingIcon: LeadingIcon,\n trailingIcon: TrailingIcon,\n avatarSrc,\n avatarInitials,\n badgeText,\n badgeVariant = 'neutral',\n rightText,\n hasSwitch = false,\n switchActive = false,\n onSwitchChange,\n buttonText = 'Button',\n onButtonClick,\n progress = 40,\n progressLabel = 'Label',\n progressOptional = '(Optional)',\n caption,\n rtl = false,\n onClick,\n className,\n ...props\n },\n ref\n ) => {\n // Divider type\n if (type === 'divider') {\n return (\n <div\n ref={ref}\n className={cn('flex items-center px-0 py-0.5', className)}\n {...props}\n >\n <div className=\"flex-1 border-t border-neutral-200\" />\n </div>\n );\n }\n\n // Button type\n if (type === 'button') {\n return (\n <div\n ref={ref}\n className={cn('flex items-center px-1.5 py-0', className)}\n {...props}\n >\n <button\n onClick={onButtonClick}\n className={cn(\n 'w-full h-8 px-1.5 py-2 flex items-center justify-center',\n 'border border-neutral-300 rounded-lg',\n 'text-[15px] font-medium leading-6 text-neutral-900',\n 'hover:bg-neutral-50 transition-colors',\n state === 'disabled' && 'opacity-50 cursor-not-allowed'\n )}\n disabled={state === 'disabled'}\n >\n {buttonText}\n </button>\n </div>\n );\n }\n\n // Label type\n if (type === 'label') {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-0 px-4 py-1',\n 'text-[13px] leading-5',\n rtl && 'flex-row-reverse',\n className\n )}\n {...props}\n >\n <div className={cn('flex-1', rtl && 'text-right')}>\n <p className=\"font-medium text-neutral-900\">{label}</p>\n </div>\n {caption && (\n <p className=\"text-neutral-600\">{caption}</p>\n )}\n </div>\n );\n }\n\n // Caption type\n if (type === 'caption') {\n return (\n <div\n ref={ref}\n className={cn('flex items-center px-1.5 py-0', className)}\n {...props}\n >\n <div className=\"flex items-center justify-center px-1.5 py-1\">\n <p className={cn(\n 'flex-1 text-[13px] leading-5 text-neutral-600',\n rtl && 'text-right'\n )}>\n Lorem ipsum dolor sit amet\n </p>\n </div>\n </div>\n );\n }\n\n // Progress type\n if (type === 'progress') {\n return (\n <div\n ref={ref}\n className={cn('flex items-center px-1.5 py-0', rtl && 'justify-end', className)}\n {...props}\n >\n <div className=\"flex flex-col items-start px-1.5 py-1 flex-1\">\n <div className=\"flex flex-col gap-2 items-start w-full\">\n {/* Progress bar */}\n <div className=\"flex flex-col items-center justify-center w-full\">\n <div className=\"bg-neutral-200 h-2 rounded-full w-full relative\">\n <div\n className=\"absolute left-0 top-0 h-full bg-blue-500 rounded-full transition-all\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n \n {/* Progress label */}\n <div className={cn(\n 'flex gap-2 items-center w-full',\n rtl && 'flex-row-reverse'\n )}>\n <div className={cn('flex items-center gap-1 flex-1', rtl && 'flex-row-reverse justify-end')}>\n <p className={cn(\n 'text-[13px] leading-5 font-medium text-neutral-900',\n rtl && 'text-right'\n )}>\n {progressLabel}\n </p>\n <p className=\"text-[13px] leading-5 text-neutral-600\">\n {progressOptional}\n </p>\n </div>\n <div className=\"flex gap-0.5 items-center\">\n <p className=\"text-[12px] leading-4 text-neutral-600\">{progress}%</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // Interactive item styles\n const isDisabled = state === 'disabled';\n const isHovered = state === 'hover';\n\n const contentClasses = cn(\n 'flex gap-1 items-center px-1.5 py-1 rounded-md flex-1 transition-colors cursor-pointer',\n type === 'multiline' && 'min-h-[48px] py-1',\n isHovered && !isDisabled && 'bg-neutral-100',\n isDisabled && 'opacity-60 cursor-not-allowed',\n rtl && 'flex-row-reverse'\n );\n\n const renderContent = () => {\n const elements = [];\n\n // Leading Icon\n if (LeadingIcon) {\n elements.push(\n <div key=\"leading-icon\" className={cn('flex items-center pl-0.5 pr-0', rtl && 'pl-0 pr-0.5')}>\n <LeadingIcon\n className={cn(\n 'h-5 w-5',\n isDisabled ? 'text-neutral-400' : 'text-neutral-600'\n )}\n />\n </div>\n );\n }\n\n // Avatar (simplified - using colored circle with initials)\n if (avatarSrc || avatarInitials) {\n const avatarSize = type === 'multiline' ? 'h-10 w-10' : 'h-6 w-6';\n const textSize = type === 'multiline' ? 'text-sm' : 'text-xs';\n \n elements.push(\n <div key=\"avatar\" className={cn('flex items-center pl-0.5 pr-0', rtl && 'pl-0 pr-0.5')}>\n {avatarSrc ? (\n <img\n src={avatarSrc}\n alt={avatarInitials || 'Avatar'}\n className={cn(\n avatarSize,\n 'rounded-full border border-neutral-200 object-cover',\n isDisabled && 'opacity-60'\n )}\n />\n ) : (\n <div\n className={cn(\n avatarSize,\n 'rounded-full bg-blue-100 border border-neutral-200',\n 'flex items-center justify-center',\n textSize,\n 'font-medium text-blue-700',\n isDisabled && 'opacity-60'\n )}\n >\n {avatarInitials || '??'}\n </div>\n )}\n </div>\n );\n }\n\n // Text content\n if (type === 'multiline' || type === 'cta') {\n elements.push(\n <div\n key=\"text\"\n className={cn(\n 'flex flex-col items-start flex-1 pl-1 pr-0',\n rtl && 'pl-0 pr-1 items-end text-right'\n )}\n >\n <p className={cn(\n 'text-[15px] leading-6',\n isDisabled ? 'text-neutral-400' : 'text-neutral-900'\n )}>\n {label}\n </p>\n {supportText && (\n <p className={cn(\n 'text-[12px] leading-4',\n isDisabled ? 'text-neutral-400' : 'text-neutral-600'\n )}>\n {supportText}\n </p>\n )}\n </div>\n );\n } else {\n elements.push(\n <div\n key=\"text\"\n className={cn(\n 'flex items-center flex-1 pl-1 pr-0',\n rtl && 'pl-0 pr-1 justify-end'\n )}\n >\n <p className={cn(\n 'text-[15px] leading-6',\n isDisabled ? 'text-neutral-400' : 'text-neutral-900',\n rtl && 'text-right'\n )}>\n {label}\n </p>\n </div>\n );\n }\n\n // Toggle Switch\n if (hasSwitch) {\n elements.push(\n <div key=\"switch\" className=\"flex flex-col items-center\">\n <button\n onClick={(e) => {\n e.stopPropagation();\n if (!isDisabled && onSwitchChange) {\n onSwitchChange(!switchActive);\n }\n }}\n disabled={isDisabled}\n className={cn(\n 'w-8 h-[18px] p-[3px] rounded-full flex items-center transition-colors',\n switchActive ? 'bg-green-500 justify-end' : 'bg-neutral-300 justify-start',\n isDisabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n <div className=\"w-3.5 h-3.5 bg-white rounded-full shadow-sm\" />\n </button>\n </div>\n );\n }\n\n // Badge\n if (badgeText) {\n elements.push(\n <div key=\"badge\" className=\"flex flex-col items-center\">\n <Badge color={badgeVariant as any} size=\"sm\">\n {badgeText}\n </Badge>\n </div>\n );\n }\n\n // Right text\n if (rightText) {\n elements.push(\n <div key=\"right-text\" className=\"flex items-center\">\n <p className={cn(\n 'text-[12px] leading-4',\n isDisabled ? 'text-neutral-400' : 'text-neutral-600',\n rtl && 'text-left'\n )}>\n {rightText}\n </p>\n </div>\n );\n }\n\n // CTA Button\n if (type === 'cta') {\n elements.push(\n <button\n key=\"cta-button\"\n onClick={(e) => {\n e.stopPropagation();\n if (!isDisabled && onButtonClick) {\n onButtonClick();\n }\n }}\n disabled={isDisabled}\n className={cn(\n 'h-8 px-1.5 py-2 flex items-center justify-center',\n 'border border-neutral-300 rounded-lg',\n 'text-[15px] font-medium leading-6 text-neutral-900',\n 'hover:bg-neutral-50 transition-colors',\n isDisabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n {buttonText}\n </button>\n );\n }\n\n // Trailing Icon\n if (TrailingIcon) {\n elements.push(\n <div key=\"trailing-icon\" className=\"flex items-center\">\n <TrailingIcon\n className={cn(\n 'h-4 w-4',\n isDisabled ? 'text-neutral-400' : 'text-neutral-500'\n )}\n />\n </div>\n );\n }\n\n return rtl ? elements.reverse() : elements;\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-0 px-1.5 py-0',\n rtl && 'justify-end',\n className\n )}\n onClick={!isDisabled ? onClick : undefined}\n {...props}\n >\n <div className={contentClasses}>\n {renderContent()}\n </div>\n </div>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\n// ============ Menu Component ============\n\nexport interface MenuProps extends HTMLAttributes<HTMLDivElement> {\n /** Menu items */\n children?: ReactNode;\n /** Menu width */\n width?: number | string;\n /** RTL mode */\n rtl?: boolean;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(\n (\n {\n children,\n width = 260,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-white border border-neutral-200 rounded-xl shadow-lg',\n 'flex flex-col gap-1 items-start py-1.5',\n 'overflow-hidden',\n className\n )}\n style={{ width: typeof width === 'number' ? `${width}px` : width }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMenu.displayName = 'Menu';\n\n","import { ReactNode, HTMLAttributes, forwardRef, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { ChevronDown, ChevronUp, Info, Plus } from \"lucide-react\";\n\nexport type AccordionStyle = \"Default\" | \"Boxed\";\nexport type AccordionState = \"Default\" | \"Hover\";\n\nexport interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"style\"> {\n /** The title/label of the accordion */\n label?: string;\n /** The description/content shown when expanded */\n description?: string;\n /** Whether to show the left icon */\n icon?: boolean;\n /** Custom icon to display on the left */\n iconLeft?: ReactNode;\n /** Whether to show a badge */\n badge?: boolean;\n /** Badge text content */\n badgeText?: string;\n /** Whether to show an action button */\n action?: boolean;\n /** Action button text */\n actionText?: string;\n /** Action button click handler */\n onActionClick?: () => void;\n /** The visual style variant */\n style?: AccordionStyle;\n /** The state (Default or Hover) - for controlled hover state */\n state?: AccordionState;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n /** Whether the accordion is expandable */\n expandable?: boolean;\n /** Controlled expanded state */\n expanded?: boolean;\n /** Callback when accordion is toggled */\n onToggle?: (expanded: boolean) => void;\n /** RTL label text */\n rtlLabel?: string;\n /** RTL description text */\n rtlDescription?: string;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n/**\n * Accordion component for collapsible content sections.\n * Supports Default and Boxed styles, expandable states, and RTL.\n * \n * Specifications:\n * - Padding: 20px\n * - Gap: 12px\n * - Border radius: 10px (Boxed style)\n * - Title: 17px, semibold, line-height 28px\n * - Description: 15px, regular, line-height 24px\n * - Icon size: 24px × 24px\n */\nexport const Accordion = forwardRef<HTMLButtonElement, AccordionProps>(\n (\n {\n label = \"Enter question title\",\n description = \"Ants are fascinating insects known for their complex social structures and teamwork. They communicate through pheromones and work together to build intricate nests. Ants play crucial roles in ecosystems, from soil aeration to seed dispersal.\",\n icon = true,\n iconLeft,\n badge = true,\n badgeText = \"Badge\",\n action = true,\n actionText = \"Button\",\n onActionClick,\n style = \"Default\",\n state = \"Default\",\n rtl = false,\n expandable = false,\n expanded: controlledExpanded,\n onToggle,\n rtlLabel,\n rtlDescription,\n className,\n ...props\n },\n ref\n ) => {\n const [internalExpanded, setInternalExpanded] = useState(false);\n const isExpanded = controlledExpanded !== undefined ? controlledExpanded : internalExpanded;\n const isRTL = rtl;\n \n const handleToggle = () => {\n if (expandable) {\n const newExpanded = !isExpanded;\n if (controlledExpanded === undefined) {\n setInternalExpanded(newExpanded);\n }\n onToggle?.(newExpanded);\n }\n };\n\n const displayLabel = isRTL && rtlLabel ? rtlLabel : label;\n const displayDescription = isRTL && rtlDescription ? rtlDescription : description;\n\n // Base classes\n const baseClasses = cn(\n \"flex items-start gap-3 p-5\",\n \"transition-all duration-150 ease-in-out\",\n expandable && \"cursor-pointer\",\n \"w-full\",\n // RTL support\n isRTL && \"font-sans-rtl\",\n // Style-specific classes\n style === \"Default\"\n ? cn(\n \"border-b border-neutral-200\",\n state === \"Hover\" && expandable && \"bg-neutral-50\"\n )\n : cn(\n \"border border-neutral-200 rounded-xl\",\n \"shadow-component-default\",\n state === \"Hover\" && expandable && \"bg-neutral-50\",\n // Inner shadow for Boxed style\n \"relative\"\n ),\n className\n );\n\n // Title classes\n const titleClasses = cn(\n \"flex flex-col justify-center\",\n \"font-semibold text-[17px] leading-[28px]\",\n \"text-neutral-900\",\n isRTL ? \"text-right\" : \"text-left\"\n );\n\n // Description classes\n const descriptionClasses = cn(\n \"text-[15px] leading-[24px]\",\n \"text-neutral-600\",\n isRTL ? \"text-right\" : \"text-left\"\n );\n\n // Badge classes\n const badgeClasses = cn(\n \"flex items-center justify-center\",\n \"h-7 px-3 py-0\",\n \"bg-neutral-50 rounded-full\",\n \"text-[12px] leading-[16px] font-medium\",\n \"text-neutral-900 whitespace-nowrap\"\n );\n\n // Default icon (Info icon)\n const defaultIcon = iconLeft || (icon ? <Info className=\"h-6 w-6 text-neutral-600 flex-shrink-0\" /> : null);\n\n // Dropdown icon - shows ChevronDown when collapsed, ChevronUp when expanded\n const DropdownIcon = isExpanded ? ChevronUp : ChevronDown;\n const dropdownIconClasses = cn(\n \"h-6 w-6 text-neutral-500 flex-shrink-0\"\n );\n\n const Component = expandable ? \"button\" : \"div\";\n const componentProps = expandable\n ? {\n ref: ref as any,\n type: \"button\" as const,\n onClick: handleToggle,\n ...props,\n }\n : {\n ...props,\n };\n\n return (\n <Component\n {...(componentProps as any)}\n dir={isRTL ? \"rtl\" : undefined}\n className={baseClasses}\n >\n {/* Left icon (or right in RTL) */}\n {defaultIcon && !isRTL && (\n <div className=\"flex-shrink-0\">{defaultIcon}</div>\n )}\n\n {/* Dropdown icon (left in RTL, right in LTR) */}\n {expandable && isRTL && (\n <div className=\"flex-shrink-0\">\n <DropdownIcon className={dropdownIconClasses} />\n </div>\n )}\n\n {/* Content */}\n <div className={cn(\n \"flex flex-col gap-1.5 flex-1 min-w-0\",\n isRTL ? \"items-end\" : \"items-start\"\n )}>\n {/* Title row */}\n <div className={cn(\n \"flex gap-1.5 items-start w-full\",\n isRTL ? \"flex-row-reverse\" : \"flex-row\"\n )}>\n {/* In RTL: Badge comes first (appears on right), then Title (appears on left) */}\n {/* In LTR: Title comes first (appears on left), then Badge (appears on right) */}\n {isRTL ? (\n <>\n {badge && (\n <div className={cn(badgeClasses, \"font-sans-rtl\")} dir=\"rtl\">\n {badgeText}\n </div>\n )}\n <div className={cn(titleClasses, \"flex-1\")} dir=\"rtl\">\n <p>{displayLabel}</p>\n </div>\n </>\n ) : (\n <>\n <div className={cn(titleClasses, \"flex-1\")}>\n <p>{displayLabel}</p>\n </div>\n {badge && (\n <div className={badgeClasses}>\n {badgeText}\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Description (shown when expanded) */}\n {isExpanded && displayDescription && (\n <div className=\"w-full\" dir={isRTL ? \"rtl\" : undefined}>\n <p className={descriptionClasses}>{displayDescription}</p>\n </div>\n )}\n\n {/* Action button (shown when expanded) */}\n {isExpanded && action && (\n <div className=\"pt-4 w-full flex\" style={{ justifyContent: isRTL ? 'flex-end' : 'flex-start' }}>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActionClick?.();\n }}\n className={cn(\n \"relative flex items-center justify-center gap-1\",\n \"h-10 px-2.5 py-2\",\n \"bg-neutral-50 border border-neutral-300 rounded-control\",\n \"shadow-component-default\",\n \"text-[15px] leading-[24px] font-medium text-neutral-900\",\n \"hover:bg-neutral-100 transition-colors\",\n \"cursor-pointer\"\n )}\n dir={isRTL ? \"rtl\" : undefined}\n >\n <Plus className=\"h-5 w-5 flex-shrink-0\" />\n <span className=\"px-1 whitespace-nowrap\">\n {isRTL ? \"انقر هنا\" : actionText}\n </span>\n <Plus className=\"h-5 w-5 flex-shrink-0\" />\n {/* Inner shadow */}\n <div className=\"absolute inset-0 pointer-events-none rounded-control shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\" />\n </button>\n </div>\n )}\n </div>\n\n {/* Dropdown icon (right in LTR) */}\n {expandable && !isRTL && (\n <div className=\"flex-shrink-0\">\n <DropdownIcon className={dropdownIconClasses} />\n </div>\n )}\n\n {/* Right icon (or left in RTL) */}\n {defaultIcon && isRTL && (\n <div className=\"flex-shrink-0\">{defaultIcon}</div>\n )}\n\n {/* Inner shadow for Boxed style */}\n {style === \"Boxed\" && (\n <div className=\"absolute inset-0 pointer-events-none rounded-xl shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\" />\n )}\n </Component>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n\n","import { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Check, Copy } from \"lucide-react\";\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n className?: string;\n}\n\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const CodeBlock = ({ code, language = \"tsx\", className }: CodeBlockProps) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n // Simple syntax highlighting for JSX/TSX\n const highlightCode = (code: string) => {\n let highlighted = code;\n\n // HTML entities\n highlighted = highlighted\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n\n // Strings (single and double quotes)\n highlighted = highlighted.replace(\n /(&quot;[^&]*&quot;|'[^']*'|\"[^\"]*\")/g,\n '<span class=\"token string\">$1</span>'\n );\n\n // Template literals\n highlighted = highlighted.replace(\n /(`[^`]*`)/g,\n '<span class=\"token template\">$1</span>'\n );\n\n // Comments\n highlighted = highlighted.replace(\n /(\\/\\/.*$)/gm,\n '<span class=\"token comment\">$1</span>'\n );\n highlighted = highlighted.replace(\n /(\\/\\*[\\s\\S]*?\\*\\/)/g,\n '<span class=\"token comment\">$1</span>'\n );\n\n // Keywords\n const keywords = [\n \"import\",\n \"export\",\n \"from\",\n \"const\",\n \"let\",\n \"var\",\n \"function\",\n \"return\",\n \"if\",\n \"else\",\n \"for\",\n \"while\",\n \"class\",\n \"extends\",\n \"new\",\n \"this\",\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"typeof\",\n \"instanceof\",\n \"async\",\n \"await\",\n ];\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b(${keyword})\\\\b`, \"g\");\n highlighted = highlighted.replace(\n regex,\n '<span class=\"token keyword\">$1</span>'\n );\n });\n\n // JSX tags\n highlighted = highlighted.replace(\n /(&lt;\\/?)([\\w]+)/g,\n '$1<span class=\"token tag\">$2</span>'\n );\n\n // Props/attributes\n highlighted = highlighted.replace(\n /\\s([\\w-]+)=/g,\n ' <span class=\"token attr\">$1</span>='\n );\n\n // Numbers\n highlighted = highlighted.replace(\n /\\b(\\d+)\\b/g,\n '<span class=\"token number\">$1</span>'\n );\n\n // Curly braces in JSX\n highlighted = highlighted.replace(\n /(\\{|\\})/g,\n '<span class=\"token punctuation\">$1</span>'\n );\n\n return highlighted;\n };\n\n return (\n <div className={cn(\"rounded-lg overflow-hidden border border-neutral-800\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 bg-docs-code-bg border-b border-neutral-700\">\n <span className=\"text-xs font-medium text-neutral-400 uppercase tracking-wider\">\n {language}\n </span>\n <button\n className={cn(\n \"inline-flex items-center gap-1.5 px-2.5 py-1\",\n \"text-xs font-medium rounded\",\n \"bg-neutral-800 border border-neutral-700\",\n \"text-neutral-400 hover:text-white\",\n \"hover:bg-neutral-700 hover:border-neutral-600\",\n \"transition-colors duration-150\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\"\n )}\n onClick={handleCopy}\n aria-label=\"Copy code\"\n >\n {copied ? (\n <>\n <Check className=\"h-3.5 w-3.5\" />\n <span>Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"h-3.5 w-3.5\" />\n <span>Copy</span>\n </>\n )}\n </button>\n </div>\n \n {/* Code Content */}\n <pre className=\"m-0 p-4 bg-docs-code-bg overflow-x-auto\">\n <code\n className=\"font-mono text-[13px] leading-relaxed text-docs-code-text\"\n dangerouslySetInnerHTML={{ __html: highlightCode(code) }}\n />\n </pre>\n </div>\n );\n};\n"],"names":["r","t","f","n","o","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","variantStyles","sizeStyles","iconOnlySizeStyles","Button","forwardRef","variant","size","loading","disabled","fullWidth","iconLeft","iconRight","startIcon","endIcon","icon","rtl","children","props","ref","isIconOnly","startIconNode","endIconNode","buttonClasses","jsxs","jsx","Loader2","Fragment","platformLabels","platformLabelsRTL","platformColors","getPlatformIcon","platform","FaFacebook","FaLinkedin","FaApple","FaWhatsapp","FaGoogle","FaXTwitter","SocialButton","type","style","isRTL","isOutlined","colors","baseClasses","styleClasses","iconClasses","renderIcon","ButtonGroup","items","rtlLabels","containerClasses","buttonItemClasses","item","isFirst","_isLast","Icon","Plus","displayLabel","Checkbox","supportText","rtlLabel","rtlSupportText","checkLocation","indeterminate","error","checked","displaySupportText","hasSupportText","checkboxBoxClasses","labelWrapperClasses","labelClasses","supportTextClasses","Check","Minus","CheckmarkCard","selected","customIcon","onChange","hasIcon","handleClick","handleKeyDown","e","checkboxClasses","contentClasses","textClasses","iconWrapperClasses","renderCheckbox","Switcher","onCheckedChange","handleChange","trackClasses","thumbClasses","styleVariants","dotColorClasses","iconSizes","dotSizes","Badge","color","showNumber","number","leadingIcon","trailingIcon","flagIcon","iconSize","renderDot","renderFlag","displayContent","num","statusConfig","AlertCircle","CheckCircle","AlertTriangle","Info","Circle","Alert","status","title","message","showActions","primaryAction","secondaryAction","onPrimaryAction","onSecondaryAction","closable","onClose","rtlTitle","rtlMessage","rtlPrimaryAction","rtlSecondaryAction","isExpandable","displayTitle","displayMessage","displayPrimaryAction","displaySecondaryAction","titleClasses","messageClasses","actionClasses","closeClasses","X","Divider","direction","spacing","spacingClasses","MenuItem","state","LeadingIcon","TrailingIcon","avatarSrc","avatarInitials","badgeText","badgeVariant","rightText","hasSwitch","switchActive","onSwitchChange","buttonText","onButtonClick","progress","progressLabel","progressOptional","caption","onClick","isDisabled","renderContent","elements","avatarSize","textSize","Menu","width","Accordion","description","badge","action","actionText","onActionClick","expandable","controlledExpanded","onToggle","rtlDescription","internalExpanded","setInternalExpanded","useState","isExpanded","handleToggle","newExpanded","displayDescription","descriptionClasses","badgeClasses","defaultIcon","DropdownIcon","ChevronUp","ChevronDown","dropdownIconClasses","Component","componentProps","CodeBlock","code","language","copied","setCopied","handleCopy","err","highlightCode","highlighted","keyword","regex","Copy"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/components/Button/Button.tsx","../src/components/SocialButton/SocialButton.tsx","../src/utils/cn.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Checkbox/CheckboxCard.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioCard.tsx","../src/components/Slider/Slider.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Input/Input.tsx","../src/components/Input/NumberInput.tsx","../src/components/CheckmarkCard/CheckmarkCard.tsx","../src/components/Switcher/Switcher.tsx","../src/components/Badge/Badge.tsx","../src/components/Alert/Alert.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/AvatarCallToAction.tsx","../src/components/Avatar/AvatarGroup.tsx","../src/components/Avatar/AvatarProfile.tsx","../src/components/Divider/Divider.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Menu/Menu.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { ReactNode, ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Loader2, ChevronRight, ChevronLeft } from \"lucide-react\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"soft\"\n | \"secondary\"\n | \"dashed\"\n | \"white\"\n | \"outline\"\n | \"ghost\"\n | \"ghost-primary\"\n | \"danger\"\n | \"soft-danger\"\n | \"link\"\n | \"link-danger\"\n | \"link-neutral\";\n\nexport type ButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport type ButtonShape = \"rounded\" | \"pill\" | \"square\" | \"circle\";\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** The shape/border-radius of the button */\n shape?: ButtonShape;\n /** Whether the button is in a loading state */\n loading?: boolean;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Whether the button should take full width of its container */\n fullWidth?: boolean;\n /** Icon to display on the left side of the button */\n iconLeft?: ReactNode;\n /** Icon to display on the right side of the button */\n iconRight?: ReactNode;\n /** Icon to display at the start (left) of the button - alias for iconLeft */\n startIcon?: ReactNode;\n /** Icon to display at the end (right) of the button - alias for iconRight */\n endIcon?: ReactNode;\n /** Icon for icon-only buttons */\n icon?: ReactNode;\n /** Show chevron icon for link buttons */\n showChevron?: boolean;\n /** Underline the link button text */\n underline?: boolean;\n /** Enable RTL (Right-to-Left) mode for Arabic, Hebrew, and other RTL languages */\n rtl?: boolean;\n /** Button content */\n children?: ReactNode;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Variant styles with dark mode support\nconst variantStyles: Record<ButtonVariant, string> = {\n primary: cn(\n // Light mode\n \"bg-primary-600 text-white\",\n \"hover:bg-primary-700\",\n \"active:bg-primary-800\",\n \"shadow-solid hover:shadow-solid-hover active:shadow-solid-active\",\n // Dark mode\n \"dark:bg-primary-500 dark:text-white\",\n \"dark:hover:bg-primary-600\",\n \"dark:active:bg-primary-700\"\n ),\n soft: cn(\n // Light mode\n \"bg-primary-50 text-primary-700\",\n \"hover:bg-primary-100\",\n \"active:bg-primary-200\",\n \"shadow-soft hover:shadow-soft-hover active:shadow-soft-active\",\n // Dark mode\n \"dark:bg-primary-950 dark:text-primary-300\",\n \"dark:hover:bg-primary-900\",\n \"dark:active:bg-primary-800\"\n ),\n secondary: cn(\n // Light mode\n \"bg-neutral-800 text-white\",\n \"hover:bg-neutral-900\",\n \"active:bg-black\",\n \"shadow-secondary hover:shadow-secondary-hover active:shadow-secondary-active\",\n // Dark mode\n \"dark:bg-neutral-700 dark:text-neutral-100\",\n \"dark:hover:bg-neutral-600\",\n \"dark:active:bg-neutral-500\"\n ),\n dashed: cn(\n // Light mode\n \"bg-white text-neutral-700 border border-dashed border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"shadow-outline hover:shadow-outline-hover active:shadow-outline-active\",\n // Dark mode\n \"dark:bg-neutral-900 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-800 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-700\"\n ),\n white: cn(\n // Light mode\n \"bg-white text-neutral-900\",\n \"hover:bg-neutral-50\",\n \"active:bg-neutral-100\",\n \"shadow-white hover:shadow-white-hover active:shadow-white-active\",\n // Dark mode\n \"dark:bg-neutral-100 dark:text-neutral-900\",\n \"dark:hover:bg-neutral-200\",\n \"dark:active:bg-neutral-300\"\n ),\n outline: cn(\n // Light mode\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"shadow-outline hover:shadow-outline-hover active:shadow-outline-active\",\n // Dark mode\n \"dark:bg-neutral-900 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-800 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-700\"\n ),\n ghost: cn(\n // Light mode\n \"bg-transparent text-neutral-700\",\n \"hover:bg-neutral-100\",\n \"active:bg-neutral-200\",\n \"shadow-none\",\n // Dark mode\n \"dark:text-neutral-300\",\n \"dark:hover:bg-neutral-800\",\n \"dark:active:bg-neutral-700\"\n ),\n \"ghost-primary\": cn(\n // Light mode\n \"bg-transparent text-primary-600\",\n \"hover:bg-primary-50\",\n \"active:bg-primary-100\",\n \"shadow-none\",\n // Dark mode\n \"dark:text-primary-400\",\n \"dark:hover:bg-primary-950\",\n \"dark:active:bg-primary-900\"\n ),\n danger: cn(\n // Light mode\n \"bg-critical-600 text-white\",\n \"hover:bg-critical-700\",\n \"active:bg-critical-800\",\n \"shadow-solid hover:shadow-solid-hover active:shadow-solid-active\",\n // Dark mode\n \"dark:bg-critical-500 dark:text-white\",\n \"dark:hover:bg-critical-600\",\n \"dark:active:bg-critical-700\"\n ),\n \"soft-danger\": cn(\n // Light mode\n \"bg-critical-50 text-critical-700\",\n \"hover:bg-critical-100\",\n \"active:bg-critical-200\",\n \"shadow-soft hover:shadow-soft-hover active:shadow-soft-active\",\n // Dark mode\n \"dark:bg-critical-950 dark:text-critical-300\",\n \"dark:hover:bg-critical-900\",\n \"dark:active:bg-critical-800\"\n ),\n link: cn(\n // Light mode\n \"bg-transparent text-primary-600 shadow-none\",\n \"hover:text-primary-700\",\n \"active:text-primary-800\",\n // Dark mode\n \"dark:text-primary-400\",\n \"dark:hover:text-primary-300\",\n \"dark:active:text-primary-200\"\n ),\n \"link-danger\": cn(\n // Light mode\n \"bg-transparent text-critical-600 shadow-none\",\n \"hover:text-critical-700\",\n \"active:text-critical-800\",\n // Dark mode\n \"dark:text-critical-400\",\n \"dark:hover:text-critical-300\",\n \"dark:active:text-critical-200\"\n ),\n \"link-neutral\": cn(\n // Light mode\n \"bg-transparent text-neutral-700 shadow-none\",\n \"hover:text-neutral-900\",\n \"active:text-black\",\n // Dark mode\n \"dark:text-neutral-300\",\n \"dark:hover:text-neutral-100\",\n \"dark:active:text-white\"\n ),\n};\n\n// Size styles (from Figma specs)\nconst sizeStyles: Record<ButtonSize, string> = {\n xs: \"h-btn-xs pl-3 pr-1.5 py-2 gap-0.5\",\n sm: \"h-btn-sm pl-3 pr-2 py-2 gap-1\",\n md: \"h-btn-md pl-3 pr-2.5 py-0 gap-1\",\n lg: \"h-btn-lg pl-3 pr-3 py-3 gap-1\",\n};\n\n// Icon-only size styles (square buttons)\nconst iconOnlySizeStyles: Record<ButtonSize, string> = {\n xs: \"h-btn-xs w-btn-xs p-0\",\n sm: \"h-btn-sm w-btn-sm p-0\",\n md: \"h-btn-md w-btn-md p-0\",\n lg: \"h-btn-lg w-btn-lg p-0\",\n};\n\n// Shape/border-radius styles\nconst shapeStyles: Record<ButtonShape, string> = {\n rounded: \"rounded-control\", // 8px - default\n pill: \"rounded-full\", // Fully rounded/capsule\n square: \"rounded\", // 4px - minimal rounding\n circle: \"rounded-full\", // For icon-only circular buttons\n};\n\n// Link button styles (minimal padding, no shadows)\nconst linkSizeStyles: Record<ButtonSize, string> = {\n xs: \"px-0 py-1 gap-0.5 h-auto\",\n sm: \"px-0 py-1 gap-1 h-auto\",\n md: \"px-0 py-1.5 gap-1 h-auto\",\n lg: \"px-0 py-2 gap-1 h-auto\",\n};\n\n/**\n * Primary UI component for user interaction.\n * Supports multiple variants, sizes, loading states, and icons on both left and right.\n * Features a sophisticated 3-layer shadow system matching the Figma design.\n * Includes RTL (Right-to-Left) support for Arabic, Hebrew, and other RTL languages.\n * \n * Size Specifications (from Figma):\n * - xs: 32px height, 6px/8px padding, 2px gap\n * - sm: 36px height, 8px padding, 4px gap\n * - md: 40px height, 10px horizontal padding, 4px gap\n * - lg: 48px height, 12px padding, 4px gap\n * \n * All sizes use:\n * - Border radius: 8px\n * - Font: Inter Medium, 15px, weight 500, line-height 24px\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"md\",\n shape = \"rounded\",\n loading = false,\n disabled = false,\n fullWidth = false,\n iconLeft,\n iconRight,\n startIcon,\n endIcon,\n icon,\n showChevron = false,\n underline = false,\n rtl = false,\n children,\n className,\n ...props\n },\n ref\n ) => {\n // Determine if this is an icon-only button\n const isIconOnly = icon && !children;\n \n // Determine if this is a link variant\n const isLink = variant === \"link\" || variant === \"link-danger\" || variant === \"link-neutral\";\n \n // Support both iconLeft/iconRight and startIcon/endIcon\n // In RTL: startIcon/iconLeft should appear on right, endIcon/iconRight should appear on left\n // In LTR: startIcon/iconLeft should appear on left, endIcon/iconRight should appear on right\n const startIconNode = iconLeft || startIcon;\n const endIconNode = iconRight || endIcon;\n \n // For link buttons with showChevron, add chevron\n // In RTL: chevron goes on left (before text) = startIcon\n // In LTR: chevron goes on right (after text) = endIcon\n const ChevronIcon = rtl ? ChevronLeft : ChevronRight;\n let finalStartIcon = startIconNode;\n let finalEndIcon = endIconNode;\n \n if (showChevron && isLink) {\n if (rtl) {\n finalStartIcon = <ChevronIcon className=\"w-4 h-4\" />;\n } else {\n finalEndIcon = <ChevronIcon className=\"w-4 h-4\" />;\n }\n }\n\n // Build class names\n const buttonClasses = cn(\n // Base styles\n \"inline-flex items-center justify-center\",\n \"font-sans text-btn font-medium\",\n \"transition-all duration-150 ease-in-out\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"cursor-pointer\",\n \n // Variant styles\n variantStyles[variant],\n \n // Shape styles\n shapeStyles[shape],\n \n // Size styles - different for link, icon-only, and regular buttons\n isLink \n ? linkSizeStyles[size]\n : isIconOnly \n ? iconOnlySizeStyles[size] \n : sizeStyles[size],\n \n // Link-specific styles\n isLink && underline && \"underline underline-offset-2\",\n isLink && \"px-0\",\n \n // RTL support - only font, not flex-row-reverse (we handle order in render)\n rtl && \"font-sans-rtl\",\n \n // Full width\n fullWidth && \"w-full\",\n \n // Disabled styles\n (disabled || loading) && \"opacity-50 cursor-not-allowed shadow-none pointer-events-none\",\n \n // Custom className\n className\n );\n\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled || loading}\n dir={rtl ? \"rtl\" : undefined}\n className={buttonClasses}\n {...props}\n >\n {/* Loading spinner or icon-only */}\n {loading ? (\n <Loader2 className=\"h-[20px] w-[20px] animate-spin\" />\n ) : isIconOnly ? (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px]\">\n {icon}\n </span>\n ) : null}\n \n {/* In RTL: render endIcon first (appears on left), then text, then startIcon (appears on right) */}\n {/* In LTR: render startIcon first (appears on left), then text, then endIcon (appears on right) */}\n {!isIconOnly && !loading && (\n <>\n {rtl ? (\n <>\n {/* End icon on left side in RTL - before text, needs margin-right */}\n {finalEndIcon && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] mr-1\">\n {finalEndIcon}\n </span>\n )}\n {/* Button text */}\n {children && (\n <span className={cn(\"truncate\", isLink && \"hover:underline\")}>{children}</span>\n )}\n {/* Start icon on right side in RTL - after text, needs margin-left */}\n {finalStartIcon && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] ml-1\">\n {finalStartIcon}\n </span>\n )}\n </>\n ) : (\n <>\n {/* Start icon on left side in LTR - before text, needs margin-right */}\n {finalStartIcon && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] mr-1\">\n {finalStartIcon}\n </span>\n )}\n {/* Button text */}\n {children && (\n <span className={cn(\"truncate\", isLink && \"hover:underline\")}>{children}</span>\n )}\n {/* End icon on right side in LTR - after text, needs margin-left */}\n {finalEndIcon && (\n <span className=\"flex items-center justify-center h-[20px] w-[20px] [&>svg]:h-[20px] [&>svg]:w-[20px] ml-1\">\n {finalEndIcon}\n </span>\n )}\n </>\n )}\n </>\n )}\n \n {/* Loading state with text */}\n {loading && !isIconOnly && children && (\n <span className=\"truncate ml-1\">{children}</span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { \n FaFacebook, \n FaLinkedin, \n FaApple, \n FaWhatsapp, \n FaGoogle,\n FaXTwitter\n} from \"react-icons/fa6\";\n\nexport type SocialPlatform = \"Facebook\" | \"LinkedIn\" | \"Apple\" | \"WhatsApp\" | \"Google\" | \"X\";\nexport type SocialButtonType = \"Default\" | \"IconOnly\";\nexport type SocialButtonStyle = \"Solid\" | \"Outlined\";\n\nexport interface SocialButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\" | \"type\" | \"style\"> {\n /** The social platform */\n platform: SocialPlatform;\n /** The type of button - Default with text or IconOnly */\n type?: SocialButtonType;\n /** The visual style variant */\n style?: SocialButtonStyle;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Platform labels (English)\nconst platformLabels: Record<SocialPlatform, string> = {\n Facebook: \"Sign in with Facebook\",\n LinkedIn: \"Sign in with LinkedIn\",\n Apple: \"Sign in with Apple\",\n WhatsApp: \"Sign in with WhatsApp\",\n Google: \"Sign in with Google\",\n X: \"Sign in with X\",\n};\n\n// Platform labels (Arabic - RTL)\nconst platformLabelsRTL: Record<SocialPlatform, string> = {\n Facebook: \"تسجيل الدخول باستخدام فيسبوك\",\n LinkedIn: \"تسجيل الدخول باستخدام لينكد إن\",\n Apple: \"تسجيل الدخول باستخدام آبل\",\n WhatsApp: \"تسجيل الدخول باستخدام واتساب\",\n Google: \"تسجيل الدخول باستخدام جوجل\",\n X: \"تسجيل الدخول باستخدام إكس\",\n};\n\n// Platform color mappings with hover/focus colors\nconst platformColors: Record<SocialPlatform, { \n bg: string; \n hoverBg: string; \n focusRing: string; \n text: string; \n border: string; \n textColor: string;\n}> = {\n Facebook: {\n bg: \"bg-social-facebook\",\n hoverBg: \"hover:bg-[#166FE5]\",\n focusRing: \"focus-visible:ring-[#1460CC]\",\n text: \"text-white\",\n border: \"border-social-facebook\",\n textColor: \"text-social-facebook\",\n },\n LinkedIn: {\n bg: \"bg-social-linkedin\",\n hoverBg: \"hover:bg-[#09599A]\",\n focusRing: \"focus-visible:ring-[#084C82]\",\n text: \"text-white\",\n border: \"border-social-linkedin\",\n textColor: \"text-social-linkedin\",\n },\n Apple: {\n bg: \"bg-social-apple\",\n hoverBg: \"hover:bg-[#1a1a1a]\",\n focusRing: \"focus-visible:ring-[#333333]\",\n text: \"text-white\",\n border: \"border-social-apple\",\n textColor: \"text-social-apple\",\n },\n WhatsApp: {\n bg: \"bg-social-whatsapp\",\n hoverBg: \"hover:bg-[#22C55E]\",\n focusRing: \"focus-visible:ring-[#1FA855]\",\n text: \"text-white\",\n border: \"border-social-whatsapp\",\n textColor: \"text-social-whatsapp\",\n },\n Google: {\n bg: \"bg-social-google\",\n hoverBg: \"hover:bg-[#357AE5]\",\n focusRing: \"focus-visible:ring-[#2E6FD6]\",\n text: \"text-white\",\n border: \"border-social-google\",\n textColor: \"text-social-google\",\n },\n X: {\n bg: \"bg-social-twitter\",\n hoverBg: \"hover:bg-[#1A91E0]\",\n focusRing: \"focus-visible:ring-[#1781CE]\",\n text: \"text-white\",\n border: \"border-social-twitter\",\n textColor: \"text-social-twitter\",\n },\n};\n\n// Platform icons using react-icons\nconst getPlatformIcon = (platform: SocialPlatform): React.ReactNode => {\n const iconSize = 20;\n \n const icons: Record<SocialPlatform, React.ReactNode> = {\n Facebook: <FaFacebook size={iconSize} />,\n LinkedIn: <FaLinkedin size={iconSize} />,\n Apple: <FaApple size={iconSize} />,\n WhatsApp: <FaWhatsapp size={iconSize} />,\n Google: <FaGoogle size={iconSize} />,\n X: <FaXTwitter size={iconSize} />,\n };\n \n return icons[platform];\n};\n\n/**\n * SocialButton component for social media authentication buttons.\n * Supports multiple platforms (Facebook, LinkedIn, Apple, WhatsApp, Google, X),\n * two types (Default with text, IconOnly), two styles (Solid, Outlined),\n * and RTL support.\n * \n * Specifications:\n * - Height: 36px\n * - Font: Inter Medium, 15px, weight 500, line-height 24px\n * - Border radius: 8px\n * - Icon size: 20px × 20px\n * - Left padding: 12px\n * - Shadow: component/default shadow system\n */\nexport const SocialButton = forwardRef<HTMLButtonElement, SocialButtonProps>(\n (\n {\n platform,\n type = \"Default\",\n style = \"Solid\",\n rtl = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const isRTL = rtl;\n const isIconOnly = type === \"IconOnly\";\n const isOutlined = style === \"Outlined\";\n const colors = platformColors[platform];\n const icon = getPlatformIcon(platform);\n const label = isRTL ? platformLabelsRTL[platform] : platformLabels[platform];\n\n // Build base classes\n const baseClasses = cn(\n // Base styles\n \"inline-flex items-center justify-center\",\n \"font-sans text-btn font-medium\",\n \"rounded-control\",\n \"transition-all duration-150 ease-in-out\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"cursor-pointer\",\n \"relative\",\n \n // Size styles\n isIconOnly ? \"h-9 w-9 p-0\" : \"h-9 pl-3 pr-3 py-0 gap-0.5\",\n \n // RTL support - only font, not flex-row-reverse (we handle order in render)\n isRTL && \"font-sans-rtl\",\n \n // Disabled styles\n disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n \n // Custom className\n className\n );\n\n // Style-specific classes\n const styleClasses = cn(\n style === \"Solid\"\n ? cn(\n colors.bg,\n colors.text,\n colors.hoverBg,\n colors.focusRing,\n \"border border-transparent\",\n \"shadow-component-default\",\n \"hover:shadow-component-hover\",\n \"focus-visible:shadow-component-focus\"\n )\n : cn(\n \"bg-white\",\n colors.border,\n colors.textColor,\n \"border\",\n \"shadow-outline\",\n \"hover:bg-neutral-50\",\n \"hover:shadow-outline-hover\",\n colors.focusRing\n )\n );\n\n // Icon wrapper classes\n const iconClasses = cn(\n \"flex items-center justify-center flex-shrink-0\",\n \"h-[20px] w-[20px]\",\n isIconOnly ? \"\" : (isRTL ? \"mr-0.5\" : \"mr-0.5\"),\n isOutlined && colors.textColor\n );\n\n // Render icon\n const renderIcon = () => (\n <span className={iconClasses}>\n {icon}\n </span>\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n dir={isRTL ? \"rtl\" : undefined}\n className={cn(baseClasses, styleClasses)}\n {...props}\n >\n {/* In RTL: render Text first then Icon (icon appears on right side) */}\n {/* In LTR: render Icon first then Text (icon appears on left side) */}\n {isRTL ? (\n <>\n {!isIconOnly && (\n <span className={cn(\"truncate relative z-10\", isOutlined && colors.textColor)}>{label}</span>\n )}\n {renderIcon()}\n </>\n ) : (\n <>\n {renderIcon()}\n {!isIconOnly && (\n <span className={cn(\"truncate relative z-10\", isOutlined && colors.textColor)}>{label}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nSocialButton.displayName = \"SocialButton\";\n\n","import { clsx, ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n\n","import React, { forwardRef, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ButtonGroupItem {\n /** Button text label */\n label?: string;\n /** Icon component (ReactNode) */\n icon?: ReactNode;\n /** Click handler for this button */\n onClick?: () => void;\n /** Whether this button is disabled */\n disabled?: boolean;\n /** Whether this button is active/selected */\n active?: boolean;\n}\n\nexport type ButtonGroupVariant = 'primary' | 'soft' | 'outline' | 'ghost';\nexport type ButtonGroupSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type ButtonGroupShape = 'rounded' | 'pill' | 'square';\n\nexport interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {\n /** Array of button items */\n items: ButtonGroupItem[];\n /** Button group variant/style */\n variant?: ButtonGroupVariant;\n /** Button group size */\n size?: ButtonGroupSize;\n /** Button group shape */\n shape?: ButtonGroupShape;\n /** Icon-only mode (no labels) */\n iconOnly?: boolean;\n /** RTL mode */\n rtl?: boolean;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n items = [],\n variant = 'outline',\n size = 'md',\n shape = 'rounded',\n iconOnly = false,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n // Size configuration\n const sizeConfig = {\n xs: {\n height: 'h-btn-xs',\n padding: iconOnly ? 'px-0' : 'px-3',\n iconSize: 'w-4 h-4',\n text: 'text-[13px]',\n iconOnlyWidth: 'w-btn-xs',\n },\n sm: {\n height: 'h-btn-sm',\n padding: iconOnly ? 'px-0' : 'px-3',\n iconSize: 'w-4 h-4',\n text: 'text-[14px]',\n iconOnlyWidth: 'w-btn-sm',\n },\n md: {\n height: 'h-btn-md',\n padding: iconOnly ? 'px-0' : 'px-3',\n iconSize: 'w-5 h-5',\n text: 'text-[15px]',\n iconOnlyWidth: 'w-btn-md',\n },\n lg: {\n height: 'h-btn-lg',\n padding: iconOnly ? 'px-0' : 'px-4',\n iconSize: 'w-5 h-5',\n text: 'text-[16px]',\n iconOnlyWidth: 'w-btn-lg',\n },\n };\n\n const config = sizeConfig[size];\n\n // Shape configuration\n const shapeClasses = {\n rounded: {\n container: 'rounded-control',\n firstItem: rtl ? 'rounded-r-control' : 'rounded-l-control',\n lastItem: rtl ? 'rounded-l-control' : 'rounded-r-control',\n },\n pill: {\n container: 'rounded-full',\n firstItem: rtl ? 'rounded-r-full' : 'rounded-l-full',\n lastItem: rtl ? 'rounded-l-full' : 'rounded-r-full',\n },\n square: {\n container: 'rounded',\n firstItem: rtl ? 'rounded-r' : 'rounded-l',\n lastItem: rtl ? 'rounded-l' : 'rounded-r',\n },\n };\n\n const shapeConfig = shapeClasses[shape];\n\n // Variant styles\n const variantStyles = {\n primary: {\n container: 'bg-primary-600 dark:bg-primary-500',\n button: cn(\n 'text-white',\n 'hover:bg-primary-700 dark:hover:bg-primary-600',\n 'active:bg-primary-800 dark:active:bg-primary-700'\n ),\n buttonActive: 'bg-primary-800 dark:bg-primary-700',\n divider: 'before:bg-primary-700/30 dark:before:bg-primary-400/20',\n },\n soft: {\n container: 'bg-primary-50 dark:bg-primary-950',\n button: cn(\n 'text-primary-700 dark:text-primary-300',\n 'hover:bg-primary-100 dark:hover:bg-primary-900',\n 'active:bg-primary-200 dark:active:bg-primary-800'\n ),\n buttonActive: 'bg-primary-200 dark:bg-primary-800',\n divider: 'before:bg-primary-200/50 dark:before:bg-primary-800/50',\n },\n outline: {\n container: 'bg-white dark:bg-neutral-900 border border-neutral-300 dark:border-neutral-700',\n button: cn(\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-50 dark:hover:bg-neutral-800',\n 'active:bg-neutral-100 dark:active:bg-neutral-700'\n ),\n buttonActive: 'bg-neutral-100 dark:bg-neutral-800',\n divider: 'before:bg-neutral-300/50 dark:before:bg-neutral-700/50',\n },\n ghost: {\n container: 'bg-transparent',\n button: cn(\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-800',\n 'active:bg-neutral-200 dark:active:bg-neutral-700'\n ),\n buttonActive: 'bg-neutral-200 dark:bg-neutral-700',\n divider: 'before:bg-neutral-300/50 dark:before:bg-neutral-600/50',\n },\n };\n\n const variantConfig = variantStyles[variant];\n\n // Base container classes\n const containerClasses = cn(\n 'relative inline-flex items-center overflow-hidden',\n shapeConfig.container,\n variantConfig.container,\n rtl && 'flex-row-reverse',\n className\n );\n\n // Button item classes\n const buttonItemClasses = (item: ButtonGroupItem, isFirst: boolean, isLast: boolean) => cn(\n 'relative flex items-center justify-center gap-1.5',\n 'transition-all duration-150',\n 'font-sans font-medium',\n config.height,\n config.padding,\n config.text,\n // Width: icon-only items get fixed width, items with labels get auto width\n (iconOnly || !item.label) && config.iconOnlyWidth,\n variantConfig.button,\n item.active && variantConfig.buttonActive,\n !item.disabled && 'cursor-pointer',\n item.disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n // Rounded corners only on first/last items\n isFirst && shapeConfig.firstItem,\n isLast && shapeConfig.lastItem,\n // Divider between items\n !isFirst && 'before:absolute before:top-0 before:bottom-0 before:w-px',\n !isFirst && (rtl ? 'before:right-0' : 'before:left-0'),\n !isFirst && variantConfig.divider,\n // RTL font\n rtl && 'font-sans-rtl'\n );\n\n return (\n <div ref={ref} className={containerClasses} {...props}>\n {items.map((item, index) => {\n const isFirst = index === 0;\n const isLast = index === items.length - 1;\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={item.onClick}\n disabled={item.disabled}\n className={buttonItemClasses(item, isFirst, isLast)}\n dir={rtl ? 'rtl' : undefined}\n >\n {iconOnly ? (\n // Icon-only mode (all items are icon-only)\n item.icon && (\n <span className={cn('flex items-center justify-center', config.iconSize, '[&>svg]:w-full [&>svg]:h-full')}>\n {item.icon}\n </span>\n )\n ) : !item.label && item.icon ? (\n // Mixed mode: this specific item is icon-only\n <span className={cn('flex items-center justify-center', config.iconSize, '[&>svg]:w-full [&>svg]:h-full')}>\n {item.icon}\n </span>\n ) : (\n // Normal mode with text and optional icon\n <>\n {rtl ? (\n <>\n {/* RTL: Text first, then icon */}\n {item.label && (\n <span className=\"truncate\">{item.label}</span>\n )}\n {item.icon && (\n <span className={cn('flex items-center justify-center shrink-0', config.iconSize, '[&>svg]:w-full [&>svg]:h-full')}>\n {item.icon}\n </span>\n )}\n </>\n ) : (\n <>\n {/* LTR: Icon first, then text */}\n {item.icon && (\n <span className={cn('flex items-center justify-center shrink-0', config.iconSize, '[&>svg]:w-full [&>svg]:h-full')}>\n {item.icon}\n </span>\n )}\n {item.label && (\n <span className=\"truncate\">{item.label}</span>\n )}\n </>\n )}\n </>\n )}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = 'ButtonGroup';\n\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Checkbox label */\n label?: string;\n /** Support text below label */\n supportText?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL support text (Arabic) */\n rtlSupportText?: string;\n /** Checkbox position relative to label */\n checkLocation?: 'leading' | 'trailing';\n /** Indeterminate state */\n indeterminate?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n supportText,\n rtlLabel,\n rtlSupportText,\n checkLocation = 'leading',\n indeterminate = false,\n rtl = false,\n error = false,\n disabled = false,\n checked = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n // Checkbox box classes\n const checkboxBoxClasses = cn(\n 'bnhtn-checkbox-box',\n 'relative w-5 h-5 rounded border flex items-center justify-center transition-all duration-150',\n 'bg-white shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border and background states\n !checked && !indeterminate && !error && !disabled && 'border-neutral-300',\n !checked && !indeterminate && error && !disabled && 'border-danger-500',\n (checked || indeterminate) && !disabled && 'bg-primary-500 border-primary-500',\n // Hover states\n !disabled && !checked && !indeterminate && 'hover:border-neutral-400',\n !disabled && (checked || indeterminate) && 'hover:bg-primary-600 hover:border-primary-600',\n // Focus states (handled by focus-visible on input)\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Container classes\n // Default render order in JSX: Checkbox first, then Text\n // This gives us: [✓] Text (Checkbox LEFT, Text RIGHT)\n // \n // LTR with checkLocation='leading' (default): [✓] Text - no reverse needed\n // LTR with checkLocation='trailing': Text [✓] - need flex-row-reverse\n // RTL: [✓] Text (right-aligned) - no reverse needed, just align text right\n const containerClasses = cn(\n 'bnhtn-checkbox',\n 'inline-flex gap-2 items-start',\n hasSupportText ? 'items-start' : 'items-center',\n // Only reverse for LTR trailing position\n checkLocation === 'trailing' && !rtl && 'flex-row-reverse',\n className\n );\n\n // Label wrapper classes\n const labelWrapperClasses = cn(\n 'bnhtn-checkbox-label-wrapper',\n 'flex flex-col flex-1 min-w-0',\n hasSupportText ? 'justify-center' : 'justify-center',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-checkbox-label',\n 'text-[15px] leading-6 font-medium text-neutral-900',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'bnhtn-checkbox-support-text',\n 'text-[13px] leading-5 font-normal text-neutral-600',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n return (\n <label className={containerClasses}>\n {/* Hidden native checkbox */}\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n className=\"bnhtn-checkbox-input sr-only peer\"\n {...props}\n />\n\n {/* Custom checkbox wrapper */}\n <div className=\"bnhtn-checkbox-wrapper flex items-start shrink-0 pt-0.5\">\n <div className={checkboxBoxClasses}>\n {/* Check icon */}\n {checked && !indeterminate && (\n <Check className=\"bnhtn-checkbox-icon w-3 h-3 text-white stroke-[2.5]\" />\n )}\n {/* Indeterminate icon */}\n {indeterminate && (\n <Minus className=\"bnhtn-checkbox-icon w-3 h-3 text-white stroke-[2.5]\" />\n )}\n </div>\n\n {/* Focus ring */}\n <div\n className={cn(\n 'bnhtn-checkbox-focus-ring',\n 'absolute inset-0 rounded pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'shadow-[0_0_0_3px_rgba(50,118,255,0.2)]',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n\n {/* Label and support text */}\n {(label || rtlLabel) && (\n <div className={labelWrapperClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\n\n","import { forwardRef, InputHTMLAttributes, ReactNode } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Card label/title */\n label?: string;\n /** Card description */\n description?: string;\n /** Optional icon or image */\n icon?: ReactNode;\n /** Indeterminate state */\n indeterminate?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Checkbox position */\n checkboxPosition?: 'left' | 'right';\n}\n\nexport const CheckboxCard = forwardRef<HTMLInputElement, CheckboxCardProps>(\n (\n {\n label,\n description,\n icon,\n indeterminate = false,\n rtl = false,\n checkboxPosition = 'right',\n disabled = false,\n checked = false,\n className,\n ...props\n },\n ref\n ) => {\n // Card container classes\n const cardClasses = cn(\n 'bnhtn-checkbox-card',\n 'relative flex items-center gap-3 p-4 rounded-lg border transition-all duration-150 cursor-pointer',\n 'bg-white dark:bg-neutral-900',\n // Unchecked state\n !checked && !indeterminate && !disabled && 'border-neutral-200 dark:border-neutral-700',\n !checked && !indeterminate && !disabled && 'hover:border-neutral-300 dark:hover:border-neutral-600',\n // Checked state\n (checked || indeterminate) && !disabled && 'border-primary-500 dark:border-primary-400 bg-primary-50/50 dark:bg-primary-950/50',\n (checked || indeterminate) && !disabled && 'shadow-[0_0_0_1px_rgba(var(--color-primary-500),0.1)]',\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed',\n // RTL: reverse the flex direction\n rtl && 'flex-row-reverse',\n // Checkbox position for LTR only\n checkboxPosition === 'left' && !rtl && 'flex-row-reverse',\n className\n );\n\n // Checkbox box classes\n const checkboxBoxClasses = cn(\n 'bnhtn-checkbox-card-box',\n 'relative w-5 h-5 rounded border flex items-center justify-center transition-all duration-150 shrink-0',\n 'bg-white dark:bg-neutral-800',\n // Border and background states\n !checked && !indeterminate && !disabled && 'border-neutral-300 dark:border-neutral-600',\n (checked || indeterminate) && !disabled && 'bg-primary-500 dark:bg-primary-600 border-primary-500 dark:border-primary-600',\n // Disabled state\n disabled && 'cursor-not-allowed'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-checkbox-card-label',\n 'text-[15px] leading-6 font-medium text-neutral-900 dark:text-white',\n rtl && 'font-sans-rtl'\n );\n\n // Description classes\n const descriptionClasses = cn(\n 'bnhtn-checkbox-card-description',\n 'text-[13px] leading-5 font-normal text-neutral-600 dark:text-neutral-400',\n rtl && 'font-sans-rtl'\n );\n\n // Simple layout:\n // LTR default (checkboxPosition=\"right\"): Icon | Text | Checkbox\n // LTR with checkboxPosition=\"left\": Checkbox | Icon | Text \n // RTL: uses flex-row-reverse, so same JSX order gives: Checkbox | Text | Icon\n \n return (\n <label className={cardClasses} dir={rtl ? 'rtl' : undefined}>\n {/* Hidden native checkbox */}\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n className=\"bnhtn-checkbox-card-input sr-only peer\"\n {...props}\n />\n\n {/* Icon */}\n {icon && (\n <div className=\"bnhtn-checkbox-card-icon-wrapper flex items-center justify-center shrink-0 w-10 h-10\">\n {icon}\n </div>\n )}\n\n {/* Label and description */}\n <div className={cn(\n 'bnhtn-checkbox-card-text flex flex-col flex-1 min-w-0',\n rtl && 'text-right'\n )}>\n {label && <span className={labelClasses}>{label}</span>}\n {description && <span className={descriptionClasses}>{description}</span>}\n </div>\n\n {/* Checkbox */}\n <div className=\"bnhtn-checkbox-card-wrapper flex items-center shrink-0\">\n <div className={checkboxBoxClasses}>\n {checked && !indeterminate && (\n <Check className=\"bnhtn-checkbox-card-icon w-3 h-3 text-white stroke-[2.5]\" />\n )}\n {indeterminate && (\n <Minus className=\"bnhtn-checkbox-card-icon w-3 h-3 text-white stroke-[2.5]\" />\n )}\n </div>\n <div\n className={cn(\n 'bnhtn-checkbox-card-focus-ring',\n 'absolute inset-0 rounded-lg pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'ring-2 ring-primary-500/20 dark:ring-primary-400/20',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n </label>\n );\n }\n);\n\nCheckboxCard.displayName = 'CheckboxCard';\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Radio label */\n label?: string;\n /** Support text below label */\n supportText?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL support text (Arabic) */\n rtlSupportText?: string;\n /** Radio position relative to label */\n radioLocation?: 'leading' | 'trailing';\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n supportText,\n rtlLabel,\n rtlSupportText,\n radioLocation = 'leading',\n rtl = false,\n error = false,\n disabled = false,\n checked = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n // Radio button circle classes\n const radioBoxClasses = cn(\n 'bnhtn-radio-box',\n 'relative w-5 h-5 rounded-full border flex items-center justify-center transition-all duration-150',\n 'bg-white shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border states\n !checked && !error && !disabled && 'border-neutral-300',\n !checked && error && !disabled && 'border-danger-500',\n checked && !disabled && 'border-primary-500',\n // Hover states\n !disabled && !checked && 'hover:border-neutral-400',\n !disabled && checked && 'hover:border-primary-600',\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded-full after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Inner dot classes\n const radioDotClasses = cn(\n 'bnhtn-radio-dot',\n 'w-2.5 h-2.5 rounded-full transition-all duration-150',\n checked && !disabled && 'bg-primary-500',\n checked && !disabled && 'group-hover:bg-primary-600'\n );\n\n // Container classes\n const containerClasses = cn(\n 'bnhtn-radio group',\n 'inline-flex gap-2 items-start',\n hasSupportText ? 'items-start' : 'items-center',\n // Only reverse for LTR trailing position\n radioLocation === 'trailing' && !rtl && 'flex-row-reverse',\n className\n );\n\n // Label wrapper classes\n const labelWrapperClasses = cn(\n 'bnhtn-radio-label-wrapper',\n 'flex flex-col flex-1 min-w-0',\n hasSupportText ? 'justify-center' : 'justify-center',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-radio-label',\n 'text-[15px] leading-6 font-medium text-neutral-900',\n 'dark:text-neutral-100',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'bnhtn-radio-support-text',\n 'text-[13px] leading-5 font-normal text-neutral-600',\n 'dark:text-neutral-400',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n return (\n <label className={containerClasses}>\n {/* Hidden native radio */}\n <input\n ref={ref}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n className=\"bnhtn-radio-input sr-only peer\"\n {...props}\n />\n\n {/* Custom radio wrapper */}\n <div className=\"bnhtn-radio-wrapper relative flex items-start shrink-0 pt-0.5\">\n <div className={radioBoxClasses}>\n {/* Radio dot */}\n {checked && <div className={radioDotClasses} />}\n </div>\n\n {/* Focus ring */}\n <div\n className={cn(\n 'bnhtn-radio-focus-ring',\n 'absolute inset-0 rounded-full pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'shadow-[0_0_0_3px_rgba(50,118,255,0.2)]',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n\n {/* Label and support text */}\n {(label || rtlLabel) && (\n <div className={labelWrapperClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n )}\n </label>\n );\n }\n);\n\nRadio.displayName = 'Radio';\n","import { forwardRef, InputHTMLAttributes, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RadioCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Card label/title */\n label: string;\n /** Description text below label */\n description?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL description (Arabic) */\n rtlDescription?: string;\n /** Icon or image to display */\n leadingIcon?: ReactNode;\n /** Support text on the right side */\n supportText?: string;\n /** RTL support text */\n rtlSupportText?: string;\n /** Radio position */\n radioLocation?: 'leading' | 'trailing';\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n}\n\nexport const RadioCard = forwardRef<HTMLInputElement, RadioCardProps>(\n (\n {\n label,\n description,\n rtlLabel,\n rtlDescription,\n leadingIcon,\n supportText,\n rtlSupportText,\n radioLocation = 'trailing',\n rtl = false,\n error = false,\n disabled = false,\n checked = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displayDescription = rtl && rtlDescription ? rtlDescription : description;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasDescription = !!description || !!rtlDescription;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n // Card container classes\n const cardClasses = cn(\n 'bnhtn-radio-card group',\n 'relative flex items-center gap-3 p-4 rounded-control border-2 transition-all duration-150 cursor-pointer',\n 'bg-white dark:bg-neutral-800',\n 'shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border states\n !checked && !error && !disabled && 'border-neutral-200 dark:border-neutral-700',\n !checked && error && !disabled && 'border-danger-500 dark:border-danger-500',\n checked && !disabled && 'border-primary-600 dark:border-primary-500',\n // Hover states\n !disabled && !checked && 'hover:border-neutral-300 dark:hover:border-neutral-600',\n !disabled && checked && 'hover:border-primary-700 dark:hover:border-primary-600',\n // Background on checked\n checked && !disabled && 'bg-primary-50 dark:bg-primary-950/20',\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed',\n // Reverse layout if needed\n radioLocation === 'leading' && !rtl && 'flex-row-reverse',\n rtl && 'flex-row-reverse',\n className\n );\n\n // Radio button circle classes\n const radioBoxClasses = cn(\n 'bnhtn-radio-card-box',\n 'relative w-5 h-5 rounded-full border flex items-center justify-center shrink-0 transition-all duration-150',\n 'bg-white dark:bg-neutral-800',\n 'shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border states\n !checked && !error && !disabled && 'border-neutral-300 dark:border-neutral-600',\n !checked && error && !disabled && 'border-danger-500 dark:border-danger-500',\n checked && !disabled && 'border-primary-500 dark:border-primary-500',\n // Hover states\n !disabled && !checked && 'group-hover:border-neutral-400 dark:group-hover:border-neutral-500',\n !disabled && checked && 'group-hover:border-primary-600 dark:group-hover:border-primary-600',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded-full after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Inner dot classes\n const radioDotClasses = cn(\n 'bnhtn-radio-card-dot',\n 'w-2.5 h-2.5 rounded-full transition-all duration-150',\n checked && !disabled && 'bg-primary-500 dark:bg-primary-500',\n checked && !disabled && 'group-hover:bg-primary-600 dark:group-hover:bg-primary-600'\n );\n\n // Content wrapper classes\n const contentWrapperClasses = cn(\n 'bnhtn-radio-card-content',\n 'flex items-center gap-3 flex-1 min-w-0',\n rtl && 'flex-row-reverse'\n );\n\n // Text wrapper classes\n const textWrapperClasses = cn(\n 'bnhtn-radio-card-text',\n 'flex flex-col flex-1 min-w-0',\n rtl && 'text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-radio-card-label',\n 'text-[15px] leading-6 font-semibold text-neutral-900',\n 'dark:text-neutral-100',\n rtl && 'font-sans-rtl'\n );\n\n // Description classes\n const descriptionClasses = cn(\n 'bnhtn-radio-card-description',\n 'text-[13px] leading-5 font-normal text-neutral-600',\n 'dark:text-neutral-400',\n rtl && 'font-sans-rtl'\n );\n\n // Support text classes\n const supportTextClassesStyle = cn(\n 'bnhtn-radio-card-support',\n 'text-[13px] leading-5 font-normal text-neutral-600',\n 'dark:text-neutral-400',\n rtl && 'font-sans-rtl'\n );\n\n return (\n <label className={cardClasses}>\n {/* Hidden native radio */}\n <input\n ref={ref}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n className=\"bnhtn-radio-card-input sr-only peer\"\n {...props}\n />\n\n {/* Content */}\n <div className={contentWrapperClasses}>\n {/* Leading icon */}\n {leadingIcon && (\n <div className=\"bnhtn-radio-card-icon shrink-0 w-10 h-10 flex items-center justify-center\">\n {typeof leadingIcon === 'string' ? (\n <img \n src={leadingIcon} \n alt=\"\" \n className=\"w-full h-full object-cover rounded-full\" \n />\n ) : (\n leadingIcon\n )}\n </div>\n )}\n\n {/* Text content */}\n <div className={textWrapperClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasDescription && (\n <span className={descriptionClasses}>{displayDescription}</span>\n )}\n </div>\n\n {/* Support text */}\n {hasSupportText && (\n <div className={supportTextClassesStyle}>{displaySupportText}</div>\n )}\n </div>\n\n {/* Custom radio button */}\n <div className=\"bnhtn-radio-card-radio relative shrink-0\">\n <div className={radioBoxClasses}>\n {/* Radio dot */}\n {checked && <div className={radioDotClasses} />}\n </div>\n\n {/* Focus ring */}\n <div\n className={cn(\n 'bnhtn-radio-card-focus-ring',\n 'absolute inset-0 rounded-full pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'shadow-[0_0_0_3px_rgba(50,118,255,0.2)]',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n </label>\n );\n }\n);\n\nRadioCard.displayName = 'RadioCard';\n","import { forwardRef, InputHTMLAttributes, useState, useRef, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type SliderSize = 'sm' | 'md' | 'lg';\n\nexport interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Slider size */\n size?: SliderSize;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step increment */\n step?: number;\n /** Current value */\n value?: number;\n /** Default value */\n defaultValue?: number;\n /** Show value label above thumb */\n showValue?: boolean;\n /** Show min/max labels */\n showMinMax?: boolean;\n /** Label text */\n label?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** Helper text below slider */\n helperText?: string;\n /** RTL helper text */\n rtlHelperText?: string;\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n /** Custom value formatter */\n formatValue?: (value: number) => string;\n /** Callback when value changes */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n {\n size = 'md',\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue = 0,\n showValue = false,\n showMinMax = false,\n label,\n rtlLabel,\n helperText,\n rtlHelperText,\n rtl = false,\n error = false,\n disabled = false,\n formatValue = (val) => val.toString(),\n onChange,\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(value ?? defaultValue);\n const [isDragging, setIsDragging] = useState(false);\n const sliderRef = useRef<HTMLDivElement>(null);\n\n const currentValue = value ?? internalValue;\n const percentage = ((currentValue - min) / (max - min)) * 100;\n\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displayHelperText = rtl && rtlHelperText ? rtlHelperText : helperText;\n\n // Size-based dimensions\n const sizeConfig = {\n sm: {\n track: 'h-1',\n thumb: 'w-3 h-3',\n label: 'text-sm',\n valueLabel: 'text-xs',\n },\n md: {\n track: 'h-1.5',\n thumb: 'w-4 h-4',\n label: 'text-[15px]',\n valueLabel: 'text-sm',\n },\n lg: {\n track: 'h-2',\n thumb: 'w-5 h-5',\n label: 'text-base',\n valueLabel: 'text-base',\n },\n };\n\n const config = sizeConfig[size];\n\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(e.target.value);\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(e);\n };\n\n // Track classes\n const trackClasses = cn(\n 'bnhtn-slider-track',\n 'relative w-full rounded-full bg-neutral-200 dark:bg-neutral-700',\n config.track,\n disabled && 'opacity-50'\n );\n\n // Fill classes\n const fillClasses = cn(\n 'bnhtn-slider-fill',\n 'absolute top-0 h-full rounded-full transition-all',\n error && !disabled ? 'bg-danger-500' : 'bg-primary-500 dark:bg-primary-400',\n disabled && 'opacity-50',\n rtl ? 'right-0' : 'left-0'\n );\n\n // Thumb classes\n const thumbClasses = cn(\n 'bnhtn-slider-thumb',\n 'absolute top-1/2 -translate-y-1/2 rounded-full bg-white border-2 shadow-sm transition-all cursor-pointer',\n 'hover:scale-110',\n 'focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-primary-200 dark:focus-visible:ring-primary-800',\n config.thumb,\n error && !disabled ? 'border-danger-500' : 'border-primary-500 dark:border-primary-400',\n disabled && 'cursor-not-allowed opacity-50 hover:scale-100',\n isDragging && 'scale-110'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-slider-label',\n 'block font-medium text-neutral-900 dark:text-neutral-100 mb-2',\n config.label,\n rtl && 'font-sans-rtl text-right',\n disabled && 'opacity-50'\n );\n\n // Helper text classes\n const helperTextClasses = cn(\n 'bnhtn-slider-helper-text',\n 'text-sm text-neutral-600 dark:text-neutral-400 mt-2',\n error && !disabled && 'text-danger-600 dark:text-danger-400',\n rtl && 'font-sans-rtl text-right',\n disabled && 'opacity-50'\n );\n\n // Value label classes\n const valueLabelClasses = cn(\n 'bnhtn-slider-value-label',\n 'absolute -top-8 left-1/2 -translate-x-1/2 px-2 py-1 rounded bg-neutral-900 dark:bg-neutral-100 text-white dark:text-neutral-900 font-medium whitespace-nowrap',\n config.valueLabel,\n 'opacity-0 transition-opacity pointer-events-none',\n (isDragging || showValue) && 'opacity-100'\n );\n\n // Min/Max labels classes\n const minMaxLabelClasses = cn(\n 'text-xs text-neutral-500 dark:text-neutral-400',\n disabled && 'opacity-50'\n );\n\n return (\n <div className={cn('bnhtn-slider-container', 'w-full', className)}>\n {/* Label */}\n {(label || rtlLabel) && (\n <label className={labelClasses} dir={rtl ? 'rtl' : undefined}>\n {displayLabel}\n </label>\n )}\n\n {/* Slider wrapper */}\n <div className=\"bnhtn-slider-wrapper relative\">\n <div\n ref={sliderRef}\n className=\"relative pt-2 pb-2\"\n onMouseDown={() => setIsDragging(true)}\n onMouseUp={() => setIsDragging(false)}\n onMouseLeave={() => setIsDragging(false)}\n >\n {/* Track */}\n <div className={trackClasses}>\n {/* Fill */}\n <div\n className={fillClasses}\n style={{ width: `${percentage}%` }}\n />\n\n {/* Thumb with value label */}\n <div\n className={thumbClasses}\n style={{\n [rtl ? 'right' : 'left']: `calc(${percentage}% - ${config.thumb === 'w-3 h-3' ? '6px' : config.thumb === 'w-4 h-4' ? '8px' : '10px'})`,\n }}\n >\n {/* Value label */}\n <div className={valueLabelClasses}>\n {formatValue(currentValue)}\n </div>\n </div>\n </div>\n\n {/* Hidden native input */}\n <input\n ref={ref}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n disabled={disabled}\n onChange={handleChange}\n onMouseDown={() => setIsDragging(true)}\n onMouseUp={() => setIsDragging(false)}\n onTouchStart={() => setIsDragging(true)}\n onTouchEnd={() => setIsDragging(false)}\n className=\"bnhtn-slider-input absolute inset-0 w-full opacity-0 cursor-pointer disabled:cursor-not-allowed\"\n dir={rtl ? 'rtl' : undefined}\n {...props}\n />\n </div>\n\n {/* Min/Max labels */}\n {showMinMax && (\n <div className={cn('flex justify-between mt-1', rtl && 'flex-row-reverse')}>\n <span className={minMaxLabelClasses}>{formatValue(min)}</span>\n <span className={minMaxLabelClasses}>{formatValue(max)}</span>\n </div>\n )}\n </div>\n\n {/* Helper text */}\n {(helperText || rtlHelperText) && (\n <p className={helperTextClasses} dir={rtl ? 'rtl' : undefined}>\n {displayHelperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nSlider.displayName = 'Slider';\n","import { forwardRef, InputHTMLAttributes, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ToggleSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Toggle size */\n size?: ToggleSize;\n /** Label text */\n label?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** Support text below label */\n supportText?: string;\n /** RTL support text */\n rtlSupportText?: string;\n /** Label position relative to toggle */\n labelPosition?: 'leading' | 'trailing';\n /** Show icon inside toggle when checked */\n showIcon?: boolean;\n /** Custom icon to show when toggle is ON (checked) */\n iconOn?: ReactNode;\n /** Custom icon to show when toggle is OFF (unchecked) */\n iconOff?: ReactNode;\n /** RTL mode */\n rtl?: boolean;\n /** Error state */\n error?: boolean;\n /** Callback when toggle changes */\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n (\n {\n size = 'md',\n label,\n rtlLabel,\n supportText,\n rtlSupportText,\n labelPosition = 'trailing',\n showIcon = false,\n iconOn,\n iconOff,\n rtl = false,\n error = false,\n disabled = false,\n checked = false,\n onCheckedChange,\n onChange,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n // Size configurations\n const sizeConfig = {\n sm: {\n track: 'w-9 h-5',\n thumb: 'w-3.5 h-3.5',\n translate: 'translate-x-4',\n padding: 'p-0.5',\n icon: 'w-2.5 h-2.5',\n },\n md: {\n track: 'w-11 h-6',\n thumb: 'w-5 h-5',\n translate: 'translate-x-5',\n padding: 'p-0.5',\n icon: 'w-3 h-3',\n },\n lg: {\n track: 'w-14 h-7',\n thumb: 'w-6 h-6',\n translate: 'translate-x-7',\n padding: 'p-0.5',\n icon: 'w-4 h-4',\n },\n };\n\n const config = sizeConfig[size];\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n onCheckedChange?.(e.target.checked);\n };\n\n // Track classes\n const trackClasses = cn(\n 'bnhtn-toggle-track',\n 'relative inline-flex items-center rounded-full transition-colors duration-200 cursor-pointer',\n config.track,\n config.padding,\n // Background colors\n !checked && !error && !disabled && 'bg-neutral-300 dark:bg-neutral-600',\n !checked && error && !disabled && 'bg-danger-300 dark:bg-danger-900',\n checked && !disabled && 'bg-primary-500 dark:bg-primary-500',\n // Hover states\n !disabled && !checked && 'hover:bg-neutral-400 dark:hover:bg-neutral-500',\n !disabled && checked && 'hover:bg-primary-600 dark:hover:bg-primary-600',\n // Disabled state\n disabled && 'opacity-50 cursor-not-allowed'\n );\n\n // Thumb classes\n const thumbClasses = cn(\n 'bnhtn-toggle-thumb',\n 'inline-flex items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-200',\n config.thumb,\n checked && config.translate,\n rtl && checked && '!-translate-x-0',\n rtl && !checked && `-${config.translate}`\n );\n\n // Container classes\n const containerClasses = cn(\n 'bnhtn-toggle-container',\n 'inline-flex items-start gap-2',\n hasSupportText ? 'items-start' : 'items-center',\n labelPosition === 'leading' && !rtl && 'flex-row-reverse',\n rtl && 'flex-row-reverse',\n className\n );\n\n // Label wrapper classes\n const labelWrapperClasses = cn(\n 'bnhtn-toggle-label-wrapper',\n 'flex flex-col flex-1 min-w-0',\n rtl && 'text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-toggle-label',\n 'text-[15px] leading-6 font-medium text-neutral-900 dark:text-neutral-100',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'bnhtn-toggle-support-text',\n 'text-[13px] leading-5 font-normal text-neutral-600 dark:text-neutral-400',\n error && !disabled && 'text-danger-600 dark:text-danger-400',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n return (\n <label className={containerClasses}>\n <div className=\"relative\">\n {/* Hidden checkbox */}\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={checked}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n className=\"bnhtn-toggle-input sr-only peer\"\n {...props}\n />\n\n {/* Toggle track */}\n <div className={trackClasses}>\n {/* Toggle thumb */}\n <div className={thumbClasses}>\n {/* Custom icons have priority */}\n {iconOn && checked && (\n <div className={cn('flex items-center justify-center', config.icon)}>\n {iconOn}\n </div>\n )}\n {iconOff && !checked && (\n <div className={cn('flex items-center justify-center', config.icon)}>\n {iconOff}\n </div>\n )}\n {/* Default check icon when toggled on (only if no custom icons) */}\n {!iconOn && !iconOff && showIcon && checked && (\n <svg\n className={cn('text-primary-500 dark:text-primary-500', config.icon)}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n </div>\n </div>\n\n {/* Focus ring */}\n <div\n className={cn(\n 'bnhtn-toggle-focus-ring',\n 'absolute inset-0 rounded-full pointer-events-none opacity-0',\n 'peer-focus-visible:opacity-100',\n 'ring-4 ring-primary-200 dark:ring-primary-800',\n 'transition-opacity duration-150'\n )}\n />\n </div>\n\n {/* Label and support text */}\n {(label || rtlLabel) && (\n <div className={labelWrapperClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n )}\n </label>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n","import { createContext, useContext, useState, ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type TabsVariant = 'line' | 'contained' | 'pills';\nexport type TabsSize = 'sm' | 'md' | 'lg';\n\n// Context for managing tab state\ninterface TabsContextValue {\n activeTab: string;\n setActiveTab: (value: string) => void;\n variant: TabsVariant;\n size: TabsSize;\n fullWidth: boolean;\n}\n\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\n\nconst useTabsContext = () => {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('Tab components must be used within a Tabs component');\n }\n return context;\n};\n\n// Main Tabs Container\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Default active tab value */\n defaultValue?: string;\n /** Controlled active tab value */\n value?: string;\n /** Callback when tab changes */\n onChange?: (value: string) => void;\n /** Tabs variant */\n variant?: TabsVariant;\n /** Tabs size */\n size?: TabsSize;\n /** Make tabs full width */\n fullWidth?: boolean;\n /** Children (TabsList and TabsContent) */\n children: ReactNode;\n}\n\nexport const Tabs = ({\n defaultValue,\n value: controlledValue,\n onChange,\n variant = 'line',\n size = 'md',\n fullWidth = false,\n children,\n className,\n ...props\n}: TabsProps) => {\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n const activeTab = controlledValue !== undefined ? controlledValue : internalValue;\n\n const handleTabChange = (newValue: string) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n return (\n <TabsContext.Provider\n value={{\n activeTab,\n setActiveTab: handleTabChange,\n variant,\n size,\n fullWidth,\n }}\n >\n <div className={cn('bnhtn-tabs', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n};\n\n// Tabs List (Container for Tab buttons)\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const TabsList = ({ children, className, ...props }: TabsListProps) => {\n const { variant, fullWidth } = useTabsContext();\n\n const listClasses = cn(\n 'bnhtn-tabs-list',\n 'flex items-center',\n fullWidth ? 'w-full' : 'w-max',\n variant === 'line' && 'border-b border-neutral-200 dark:border-neutral-700',\n variant === 'contained' && 'bg-neutral-100 dark:bg-neutral-800 p-1 rounded-lg',\n variant === 'pills' && 'gap-2',\n className\n );\n\n return (\n <div className={listClasses} role=\"tablist\" {...props}>\n {children}\n </div>\n );\n};\n\n// Individual Tab\nexport interface TabProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'value'> {\n /** Tab value (must be unique) */\n value: string;\n /** Tab label */\n children: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Optional icon */\n icon?: ReactNode;\n /** Badge/count to display */\n badge?: number | string;\n}\n\nexport const Tab = ({\n value,\n children,\n disabled = false,\n icon,\n badge,\n className,\n onClick,\n ...props\n}: TabProps) => {\n const { activeTab, setActiveTab, variant, size, fullWidth } = useTabsContext();\n const isActive = activeTab === value;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n setActiveTab(value);\n onClick?.(e);\n }\n };\n\n // Size configurations\n const sizeConfig = {\n sm: {\n padding: 'px-3 py-2',\n text: 'text-sm',\n gap: 'gap-1.5',\n },\n md: {\n padding: 'px-4 py-2.5',\n text: 'text-[15px]',\n gap: 'gap-2',\n },\n lg: {\n padding: 'px-5 py-3',\n text: 'text-base',\n gap: 'gap-2',\n },\n };\n\n const config = sizeConfig[size];\n\n // Base tab classes\n const tabClasses = cn(\n 'bnhtn-tab',\n 'relative inline-flex items-center justify-center font-medium transition-all duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n config.padding,\n config.text,\n config.gap,\n fullWidth && 'flex-1',\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && 'cursor-pointer',\n\n // Variant-specific styles\n variant === 'line' && [\n 'border-b-2 -mb-[2px]',\n !isActive && 'border-transparent text-neutral-600 dark:text-neutral-400',\n !isActive && !disabled && 'hover:text-neutral-900 dark:hover:text-neutral-200',\n isActive && 'border-primary-600 text-primary-600 dark:text-primary-400',\n ],\n\n variant === 'contained' && [\n 'rounded-md',\n !isActive && 'text-neutral-600 dark:text-neutral-400',\n !isActive && !disabled && 'hover:text-neutral-900 dark:hover:text-neutral-200',\n isActive && 'bg-white dark:bg-neutral-700 text-primary-600 dark:text-primary-400 shadow-sm',\n ],\n\n variant === 'pills' && [\n 'rounded-full',\n !isActive && 'text-neutral-600 dark:text-neutral-400',\n !isActive && !disabled && 'hover:bg-neutral-100 dark:hover:bg-neutral-800 hover:text-neutral-900 dark:hover:text-neutral-200',\n isActive && 'bg-primary-100 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300',\n ],\n\n className\n );\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n disabled={disabled}\n className={tabClasses}\n onClick={handleClick}\n {...props}\n >\n {icon && <span className=\"bnhtn-tab-icon flex items-center\">{icon}</span>}\n <span className=\"bnhtn-tab-label\">{children}</span>\n {badge !== undefined && (\n <span\n className={cn(\n 'bnhtn-tab-badge',\n 'inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 rounded-full text-xs font-medium',\n isActive\n ? 'bg-primary-600 dark:bg-primary-500 text-white'\n : 'bg-neutral-200 dark:bg-neutral-700 text-neutral-700 dark:text-neutral-300'\n )}\n >\n {badge}\n </span>\n )}\n </button>\n );\n};\n\n// Tab Content Panel\nexport interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {\n /** Value matching the tab */\n value: string;\n /** Content to display */\n children: ReactNode;\n}\n\nexport const TabsContent = ({\n value,\n children,\n className,\n ...props\n}: TabsContentProps) => {\n const { activeTab } = useTabsContext();\n const isActive = activeTab === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n className={cn('bnhtn-tabs-content', 'py-4', className)}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nTabs.displayName = 'Tabs';\nTabsList.displayName = 'TabsList';\nTab.displayName = 'Tab';\nTabsContent.displayName = 'TabsContent';\n","import { forwardRef, InputHTMLAttributes, ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Input label */\n label?: string;\n /** RTL label */\n rtlLabel?: string;\n /** Hint text below input */\n hintText?: string;\n /** RTL hint text */\n rtlHintText?: string;\n /** Error message */\n error?: string;\n /** RTL error message */\n rtlError?: string;\n /** Success message */\n success?: string;\n /** RTL success message */\n rtlSuccess?: string;\n /** Leading icon or element */\n leadingIcon?: ReactNode;\n /** Trailing icon or element */\n trailingIcon?: ReactNode;\n /** Prefix text (e.g., \"https://\") */\n prefix?: string;\n /** Suffix text (e.g., \".com\") */\n suffix?: string;\n /** Action button text (e.g., \"Send\") */\n actionButton?: string;\n /** Action button click handler */\n onActionClick?: () => void;\n /** Shortcut text (e.g., \"⌘K\") */\n shortcut?: string;\n /** RTL mode */\n rtl?: boolean;\n /** Optional indicator */\n optional?: boolean;\n /** Required indicator */\n required?: boolean;\n /** Allow clearing the input */\n clearable?: boolean;\n /** Clear handler */\n onClear?: () => void;\n /** Input size */\n inputSize?: 'sm' | 'md' | 'lg';\n /** Full width */\n fullWidth?: boolean;\n /** Custom class for container */\n containerClassName?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n rtlLabel,\n hintText,\n rtlHintText,\n error,\n rtlError,\n success,\n rtlSuccess,\n leadingIcon,\n trailingIcon,\n prefix,\n suffix,\n actionButton,\n onActionClick,\n shortcut,\n rtl = false,\n optional = false,\n required = false,\n clearable = false,\n onClear,\n inputSize = 'md',\n fullWidth = false,\n containerClassName,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displayHintText = rtl && rtlHintText ? rtlHintText : hintText;\n const displayError = rtl && rtlError ? rtlError : error;\n const displaySuccess = rtl && rtlSuccess ? rtlSuccess : success;\n \n const hasError = !!error || !!rtlError;\n const hasSuccess = !!success || !!rtlSuccess;\n\n // Size configurations\n const sizeConfig = {\n sm: {\n input: 'h-9 text-sm',\n padding: leadingIcon || prefix ? 'pl-9' : 'pl-3',\n paddingRight: trailingIcon || suffix || shortcut || clearable ? 'pr-9' : 'pr-3',\n icon: 'w-4 h-4',\n iconPosition: 'left-3',\n iconPositionRight: 'right-3',\n },\n md: {\n input: 'h-10 text-[15px]',\n padding: leadingIcon || prefix ? 'pl-10' : 'pl-3.5',\n paddingRight: trailingIcon || suffix || shortcut || clearable || actionButton ? 'pr-10' : 'pr-3.5',\n icon: 'w-5 h-5',\n iconPosition: 'left-3',\n iconPositionRight: 'right-3',\n },\n lg: {\n input: 'h-11 text-base',\n padding: leadingIcon || prefix ? 'pl-11' : 'pl-4',\n paddingRight: trailingIcon || suffix || shortcut || clearable ? 'pr-11' : 'pr-4',\n icon: 'w-5 h-5',\n iconPosition: 'left-3.5',\n iconPositionRight: 'right-3.5',\n },\n };\n\n const size = sizeConfig[inputSize];\n\n // Container classes\n const containerClasses = cn(\n 'bnhtn-input-container',\n 'flex flex-col gap-1.5',\n fullWidth ? 'w-full' : 'w-auto',\n rtl && 'items-end',\n containerClassName\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-input-label',\n 'text-sm font-medium text-neutral-700 dark:text-neutral-300',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Input wrapper classes\n const inputWrapperClasses = cn(\n 'bnhtn-input-wrapper',\n 'relative flex items-center',\n fullWidth && 'w-full'\n );\n\n // Input classes\n const inputClasses = cn(\n 'bnhtn-input',\n 'w-full rounded-lg border-2 transition-all duration-150',\n 'bg-white dark:bg-neutral-900',\n 'text-neutral-900 dark:text-white',\n 'placeholder:text-neutral-400 dark:placeholder:text-neutral-500',\n size.input,\n !rtl && size.padding,\n !rtl && size.paddingRight,\n rtl && (trailingIcon || suffix || shortcut || clearable || actionButton ? size.padding : size.paddingRight),\n rtl && (leadingIcon || prefix ? size.paddingRight : size.padding),\n // Border states\n !hasError && !hasSuccess && !disabled && 'border-neutral-300 dark:border-neutral-700',\n !hasError && !hasSuccess && !disabled && 'focus:border-primary-500 focus:outline-none focus:ring-4 focus:ring-primary-500/20',\n hasError && !disabled && 'border-danger-500 focus:outline-none focus:ring-4 focus:ring-danger-500/20',\n hasSuccess && !disabled && 'border-success-500 focus:border-success-500 focus:outline-none focus:ring-4 focus:ring-success-500/20',\n disabled && 'opacity-50 cursor-not-allowed bg-neutral-50 dark:bg-neutral-800',\n // RTL\n rtl && 'text-right font-sans-rtl',\n // Action button adjustment\n actionButton && !rtl && 'pr-20',\n actionButton && rtl && 'pl-20',\n className\n );\n\n // Leading icon/prefix classes\n const leadingClasses = cn(\n 'bnhtn-input-leading',\n 'absolute flex items-center',\n !rtl ? size.iconPosition : size.iconPositionRight,\n 'text-neutral-500 dark:text-neutral-400',\n disabled && 'opacity-50'\n );\n\n // Trailing icon/suffix classes\n const trailingClasses = cn(\n 'bnhtn-input-trailing',\n 'absolute flex items-center gap-2',\n !rtl ? size.iconPositionRight : size.iconPosition,\n 'text-neutral-500 dark:text-neutral-400',\n disabled && 'opacity-50'\n );\n\n // Action button classes\n const actionButtonClasses = cn(\n 'bnhtn-input-action-button',\n 'absolute',\n !rtl ? 'right-1' : 'left-1',\n 'top-1/2 -translate-y-1/2',\n 'px-3 py-1.5 rounded-md',\n 'text-sm font-medium',\n 'bg-neutral-100 hover:bg-neutral-200 dark:bg-neutral-800 dark:hover:bg-neutral-700',\n 'text-neutral-700 dark:text-neutral-300',\n 'transition-colors duration-150',\n disabled && 'opacity-50 cursor-not-allowed'\n );\n\n // Hint/error/success text classes\n const messageClasses = cn(\n 'bnhtn-input-message',\n 'text-xs',\n rtl && 'font-sans-rtl text-right',\n hasError && 'text-danger-600 dark:text-danger-400',\n hasSuccess && 'text-success-600 dark:text-success-400',\n !hasError && !hasSuccess && 'text-neutral-600 dark:text-neutral-400',\n disabled && 'opacity-50'\n );\n\n return (\n <div className={containerClasses}>\n {/* Label */}\n {displayLabel && (\n <label className={labelClasses} dir={rtl ? 'rtl' : undefined}>\n {displayLabel}\n {required && <span className=\"text-danger-500 ml-1\">*</span>}\n {optional && (\n <span className=\"text-neutral-500 text-xs font-normal ml-1\">\n (Optional)\n </span>\n )}\n </label>\n )}\n\n {/* Input wrapper */}\n <div className={inputWrapperClasses}>\n {/* Leading icon/prefix */}\n {(leadingIcon || prefix) && (\n <div className={leadingClasses}>\n {leadingIcon && <span className={size.icon}>{leadingIcon}</span>}\n {prefix && <span className=\"text-sm\">{prefix}</span>}\n </div>\n )}\n\n {/* Input */}\n <input\n ref={ref}\n disabled={disabled}\n required={required}\n dir={rtl ? 'rtl' : undefined}\n className={inputClasses}\n {...props}\n />\n\n {/* Trailing elements */}\n {(trailingIcon || suffix || shortcut || clearable) && (\n <div className={trailingClasses}>\n {clearable && props.value && !disabled && (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"bnhtn-input-clear hover:text-neutral-700 dark:hover:text-neutral-300\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n {suffix && <span className=\"text-sm\">{suffix}</span>}\n {shortcut && (\n <span className=\"bnhtn-input-shortcut px-1.5 py-0.5 rounded text-xs bg-neutral-100 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400\">\n {shortcut}\n </span>\n )}\n {trailingIcon && <span className={size.icon}>{trailingIcon}</span>}\n </div>\n )}\n\n {/* Action button */}\n {actionButton && (\n <button\n type=\"button\"\n onClick={onActionClick}\n disabled={disabled}\n className={actionButtonClasses}\n >\n {actionButton}\n </button>\n )}\n </div>\n\n {/* Hint text / Error / Success message */}\n {(displayHintText || displayError || displaySuccess) && (\n <div className={messageClasses} dir={rtl ? 'rtl' : undefined}>\n {displayError || displaySuccess || displayHintText}\n </div>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange'> {\n /** Input label */\n label?: string;\n /** RTL label */\n rtlLabel?: string;\n /** Hint text below input */\n hintText?: string;\n /** RTL hint text */\n rtlHintText?: string;\n /** Error message */\n error?: string;\n /** RTL error message */\n rtlError?: string;\n /** Value */\n value?: number;\n /** Change handler */\n onChange?: (value: number) => void;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step */\n step?: number;\n /** RTL mode */\n rtl?: boolean;\n /** Show spinner buttons */\n showSpinner?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Custom class for container */\n containerClassName?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n label,\n rtlLabel,\n hintText,\n rtlHintText,\n error,\n rtlError,\n value = 0,\n onChange,\n min,\n max,\n step = 1,\n rtl = false,\n showSpinner = true,\n fullWidth = false,\n containerClassName,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displayHintText = rtl && rtlHintText ? rtlHintText : hintText;\n const displayError = rtl && rtlError ? rtlError : error;\n \n const hasError = !!error || !!rtlError;\n\n const handleIncrement = () => {\n if (disabled) return;\n const newValue = value + step;\n if (max !== undefined && newValue > max) return;\n onChange?.(newValue);\n };\n\n const handleDecrement = () => {\n if (disabled) return;\n const newValue = value - step;\n if (min !== undefined && newValue < min) return;\n onChange?.(newValue);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(e.target.value) || 0;\n if (min !== undefined && newValue < min) return;\n if (max !== undefined && newValue > max) return;\n onChange?.(newValue);\n };\n\n // Container classes\n const containerClasses = cn(\n 'bnhtn-number-input-container',\n 'flex flex-col gap-1.5',\n fullWidth ? 'w-full' : 'w-auto',\n rtl && 'items-end',\n containerClassName\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-number-input-label',\n 'text-sm font-medium text-neutral-700 dark:text-neutral-300',\n rtl && 'font-sans-rtl',\n disabled && 'opacity-50'\n );\n\n // Input wrapper classes\n const inputWrapperClasses = cn(\n 'bnhtn-number-input-wrapper',\n 'relative flex items-center',\n fullWidth && 'w-full'\n );\n\n // Input classes\n const inputClasses = cn(\n 'bnhtn-number-input',\n 'w-full h-10 rounded-lg border-2 transition-all duration-150 text-center',\n 'bg-white dark:bg-neutral-900',\n 'text-neutral-900 dark:text-white text-[15px]',\n showSpinner && !rtl && 'pr-10 pl-10',\n showSpinner && rtl && 'pl-10 pr-10',\n !showSpinner && 'px-3.5',\n // Border states\n !hasError && !disabled && 'border-neutral-300 dark:border-neutral-700',\n !hasError && !disabled && 'focus:border-primary-500 focus:outline-none focus:ring-4 focus:ring-primary-500/20',\n hasError && !disabled && 'border-danger-500 focus:outline-none focus:ring-4 focus:ring-danger-500/20',\n disabled && 'opacity-50 cursor-not-allowed bg-neutral-50 dark:bg-neutral-800',\n // RTL\n rtl && 'font-sans-rtl',\n className\n );\n\n // Button classes\n const buttonClasses = cn(\n 'bnhtn-number-input-button',\n 'absolute top-1/2 -translate-y-1/2',\n 'w-8 h-8 flex items-center justify-center',\n 'text-neutral-600 dark:text-neutral-400',\n 'hover:text-neutral-900 dark:hover:text-white',\n 'transition-colors duration-150',\n disabled && 'opacity-50 cursor-not-allowed'\n );\n\n // Message classes\n const messageClasses = cn(\n 'bnhtn-number-input-message',\n 'text-xs',\n rtl && 'font-sans-rtl text-right',\n hasError && 'text-danger-600 dark:text-danger-400',\n !hasError && 'text-neutral-600 dark:text-neutral-400',\n disabled && 'opacity-50'\n );\n\n return (\n <div className={containerClasses}>\n {/* Label */}\n {displayLabel && (\n <label className={labelClasses} dir={rtl ? 'rtl' : undefined}>\n {displayLabel}\n </label>\n )}\n\n {/* Input wrapper */}\n <div className={inputWrapperClasses}>\n {/* Decrement button */}\n {showSpinner && (\n <button\n type=\"button\"\n onClick={handleDecrement}\n disabled={disabled || (min !== undefined && value <= min)}\n className={cn(buttonClasses, !rtl ? 'left-1' : 'right-1')}\n >\n <Minus className=\"w-4 h-4\" />\n </button>\n )}\n\n {/* Input */}\n <input\n ref={ref}\n type=\"number\"\n value={value}\n onChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n dir={rtl ? 'rtl' : undefined}\n className={inputClasses}\n {...props}\n />\n\n {/* Increment button */}\n {showSpinner && (\n <button\n type=\"button\"\n onClick={handleIncrement}\n disabled={disabled || (max !== undefined && value >= max)}\n className={cn(buttonClasses, !rtl ? 'right-1' : 'left-1')}\n >\n <Plus className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n\n {/* Hint text / Error message */}\n {(displayHintText || displayError) && (\n <div className={messageClasses} dir={rtl ? 'rtl' : undefined}>\n {displayError || displayHintText}\n </div>\n )}\n </div>\n );\n }\n);\n\nNumberInput.displayName = 'NumberInput';\n\n","import React, { forwardRef, HTMLAttributes } from 'react';\nimport { LucideIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckmarkCardProps extends Omit<HTMLAttributes<HTMLElement>, 'style' | 'onChange'> {\n /** Card label */\n label: string;\n /** Support text below label */\n supportText?: string;\n /** RTL label (Arabic) */\n rtlLabel?: string;\n /** RTL support text (Arabic) */\n rtlSupportText?: string;\n /** Whether the card is selected */\n selected?: boolean;\n /** Whether the card is disabled */\n disabled?: boolean;\n /** Card type */\n type?: 'default' | 'icon-left' | 'icon-right' | 'label-only';\n /** Optional icon component from lucide-react */\n icon?: LucideIcon;\n /** Custom icon node (for avatars, payment icons, etc.) */\n customIcon?: React.ReactNode;\n /** RTL mode */\n rtl?: boolean;\n /** On change handler */\n onChange?: (selected: boolean) => void;\n}\n\nexport const CheckmarkCard = forwardRef<HTMLDivElement, CheckmarkCardProps>(\n (\n {\n label,\n supportText,\n rtlLabel,\n rtlSupportText,\n selected = false,\n disabled = false,\n type = 'default',\n icon: Icon,\n customIcon,\n rtl = false,\n onChange,\n className,\n ...props\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportText = rtl && rtlSupportText ? rtlSupportText : supportText;\n const hasIcon = !!Icon || !!customIcon;\n const hasSupportText = !!supportText || !!rtlSupportText;\n\n const handleClick = () => {\n if (!disabled && onChange) {\n onChange(!selected);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!disabled && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n onChange?.(!selected);\n }\n };\n\n // Card container classes\n const containerClasses = cn(\n 'relative flex items-start gap-4 p-4 w-full max-w-[338px]',\n 'bg-white border rounded-xl transition-all duration-150',\n 'shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded-xl after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]',\n // State styles\n !disabled && !selected && 'border-neutral-200',\n !disabled && selected && 'border-primary-500 border-2',\n !disabled && 'hover:bg-neutral-50 cursor-pointer',\n disabled && 'border-neutral-200 bg-neutral-50 cursor-not-allowed',\n // RTL\n rtl && 'flex-row-reverse',\n className\n );\n\n // Checkbox classes\n const checkboxClasses = cn(\n 'relative w-5 h-5 rounded border flex items-center justify-center transition-all duration-150 shrink-0 mt-0.5',\n 'bg-white shadow-[0px_1px_2px_0px_rgba(15,17,20,0.05)]',\n // Border and background states\n !selected && !disabled && 'border-neutral-300',\n selected && !disabled && 'bg-primary-500 border-primary-500',\n disabled && 'bg-neutral-100 border-neutral-200',\n // Inner shadow\n 'after:absolute after:inset-0 after:rounded after:pointer-events-none',\n 'after:shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]'\n );\n\n // Content wrapper classes\n const contentClasses = cn(\n 'flex flex-1 min-w-0',\n (type === 'icon-left' && hasIcon) || (type === 'default' && hasIcon) ? 'gap-3' : '',\n rtl && 'flex-row-reverse'\n );\n\n // Text wrapper classes\n const textClasses = cn(\n 'flex flex-col gap-0.5 flex-1 min-w-0',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'text-[15px] leading-6 font-medium text-neutral-900',\n rtl && 'font-sans-rtl',\n disabled && 'text-neutral-400'\n );\n\n // Support text classes\n const supportTextClasses = cn(\n 'text-[14px] leading-5 font-normal text-neutral-600',\n rtl && 'font-sans-rtl',\n disabled && 'text-neutral-400'\n );\n\n // Icon wrapper classes\n const iconWrapperClasses = cn(\n 'shrink-0',\n disabled && 'opacity-60'\n );\n\n const renderCheckbox = () => (\n <div className={checkboxClasses}>\n {selected && (\n <svg\n className=\"w-3 h-3 text-white\"\n fill=\"none\"\n viewBox=\"0 0 12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n >\n <path\n d=\"M2.5 6.5L4.5 8.5L9.5 3.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n\n const renderIcon = () => {\n if (customIcon) {\n return <div className={iconWrapperClasses}>{customIcon}</div>;\n }\n if (Icon) {\n return (\n <div className={iconWrapperClasses}>\n <Icon className=\"w-6 h-6 text-neutral-600\" />\n </div>\n );\n }\n return null;\n };\n\n const renderContent = () => {\n // Label only (no icons, checkbox separate)\n if (type === 'label-only' && !hasSupportText) {\n return (\n <div className={cn('flex items-center flex-1 gap-3', rtl && 'flex-row-reverse')}>\n {renderCheckbox()}\n <span className={labelClasses} dir={rtl ? 'rtl' : undefined}>\n {displayLabel}\n </span>\n </div>\n );\n }\n\n // Icon on the left side (with checkbox either left or right)\n if (type === 'icon-left') {\n return (\n <>\n {renderCheckbox()}\n <div className={contentClasses}>\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n </>\n );\n }\n\n // Icon on the right side\n if (type === 'icon-right') {\n return (\n <>\n <div className={contentClasses}>\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n {renderCheckbox()}\n </>\n );\n }\n\n // Default: Icon/content left, checkbox right\n return (\n <>\n <div className={contentClasses}>\n {renderIcon()}\n <div className={textClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={labelClasses}>{displayLabel}</span>\n {hasSupportText && (\n <span className={supportTextClasses}>{displaySupportText}</span>\n )}\n </div>\n </div>\n {renderCheckbox()}\n </>\n );\n };\n\n const Element = disabled ? 'div' : 'button';\n\n return (\n <Element\n ref={ref as any}\n className={containerClasses}\n onClick={!disabled ? handleClick : undefined}\n onKeyDown={!disabled ? handleKeyDown : undefined}\n disabled={disabled}\n role={!disabled ? 'checkbox' : undefined}\n aria-checked={!disabled ? selected : undefined}\n aria-disabled={disabled}\n tabIndex={!disabled ? 0 : undefined}\n {...props}\n >\n {renderContent()}\n </Element>\n );\n }\n);\n\nCheckmarkCard.displayName = 'CheckmarkCard';\n\n\n","import { forwardRef, InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type SwitcherSize = 'sm' | 'md' | 'lg';\n\nexport interface SwitcherProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange'> {\n /** Label text for the switcher */\n label?: string;\n /** Whether the switcher is checked */\n checked?: boolean;\n /** Callback when the switcher is changed */\n onChange?: (checked: boolean) => void;\n /** Callback when the switcher state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Size of the switcher */\n size?: SwitcherSize;\n /** Enable RTL mode */\n rtl?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Switcher Component - Toggle switch for binary options\n * Supports RTL, different sizes, and dark mode\n * Perfect for theme switching (light/dark) and direction switching (LTR/RTL)\n */\nexport const Switcher = forwardRef<HTMLInputElement, SwitcherProps>(\n (\n {\n label,\n checked = false,\n onChange,\n onCheckedChange,\n size = 'md',\n rtl = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const handleChange = () => {\n if (onChange) onChange(!checked);\n if (onCheckedChange) onCheckedChange(!checked);\n };\n\n // Size configurations\n const sizeConfig = {\n sm: {\n track: 'w-9 h-5',\n thumb: 'w-4 h-4',\n translateChecked: 'translate-x-4',\n translateUnchecked: 'translate-x-0.5',\n },\n md: {\n track: 'w-11 h-6',\n thumb: 'w-5 h-5',\n translateChecked: 'translate-x-5',\n translateUnchecked: 'translate-x-0.5',\n },\n lg: {\n track: 'w-14 h-7',\n thumb: 'w-6 h-6',\n translateChecked: 'translate-x-7',\n translateUnchecked: 'translate-x-0.5',\n },\n };\n\n const config = sizeConfig[size];\n\n // Track classes (with RTL support via dir attribute and CSS)\n const trackClasses = cn(\n 'relative inline-flex items-center shrink-0 rounded-full transition-colors duration-200 ease-in-out',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n config.track,\n // Light mode\n checked\n ? 'bg-primary-600 hover:bg-primary-700'\n : 'bg-neutral-200 hover:bg-neutral-300',\n // Dark mode\n 'dark:focus-visible:ring-offset-neutral-900',\n checked\n ? 'dark:bg-primary-500 dark:hover:bg-primary-600'\n : 'dark:bg-neutral-700 dark:hover:bg-neutral-600',\n // Disabled\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && 'cursor-pointer',\n // RTL support - we'll use dir=\"rtl\" on the track to flip the layout\n rtl && 'rtl'\n );\n\n // Thumb classes\n // In RTL mode with dir=\"rtl\", positive translations will automatically flip direction\n const thumbClasses = cn(\n 'pointer-events-none inline-block rounded-full bg-white shadow-lg ring-0 transition-transform duration-200 ease-in-out',\n config.thumb,\n // Use same positive translations for both LTR and RTL\n // RTL flip happens via dir=\"rtl\" attribute on parent\n checked ? config.translateChecked : config.translateUnchecked,\n // Dark mode\n 'dark:bg-neutral-200'\n );\n\n // Container classes\n const containerClasses = cn(\n 'inline-flex items-center gap-3',\n rtl && 'flex-row-reverse',\n className\n );\n\n // Label classes\n const labelClasses = cn(\n 'text-sm font-medium',\n 'text-neutral-900 dark:text-neutral-100',\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && 'cursor-pointer'\n );\n\n return (\n <label className={containerClasses} dir={rtl ? 'rtl' : undefined}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n {...props}\n />\n <span className={trackClasses} dir={rtl ? 'rtl' : undefined}>\n <span className={thumbClasses} />\n </span>\n {label && <span className={labelClasses}>{label}</span>}\n </label>\n );\n }\n);\n\nSwitcher.displayName = 'Switcher';\n\n","import { ReactNode, HTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type BadgeType = \"Default\" | \"LeadingIcon\" | \"TrailingIcon\" | \"Dot\" | \"Flag\" | \"LeadingImg\";\nexport type BadgeStyle = \"Light\" | \"Outline\" | \"Solid\";\nexport type BadgeSize = \"sm\" | \"lg\";\nexport type BadgeColor =\n | \"Neutral\"\n | \"Blue\"\n | \"Green\"\n | \"Amber\"\n | \"Danger\"\n | \"Purple\"\n | \"Fuchsia\"\n | \"Rose\"\n | \"Sky\"\n | \"Golden\";\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"style\"> {\n /** The type of badge */\n type?: BadgeType;\n /** The visual style variant */\n style?: BadgeStyle;\n /** The size of the badge */\n size?: BadgeSize;\n /** The color variant */\n color?: BadgeColor;\n /** Whether to show a number instead of text */\n showNumber?: boolean;\n /** The number to display (when showNumber is true) */\n number?: number;\n /** The badge text content */\n children?: ReactNode;\n /** Icon or image to display on the left (for LeadingIcon type) - accepts icon component or image URL */\n leadingIcon?: ReactNode | string;\n /** Icon or image to display on the right (for TrailingIcon type) - accepts icon component or image URL */\n trailingIcon?: ReactNode | string;\n /** Flag icon (for Flag type) */\n flagIcon?: ReactNode;\n /** Image source URL (deprecated, use leadingIcon or trailingIcon instead) */\n imgSrc?: string;\n /** Image alt text */\n imgAlt?: string;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Style variants - explicit mappings for all color/style combinations\nconst styleVariants: Record<BadgeStyle, Record<BadgeColor, string>> = {\n Light: {\n Neutral: \"bg-neutral-50 text-neutral-700 border border-neutral-100 dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n Blue: \"bg-blue-50 text-blue-700 border border-blue-100 dark:bg-blue-900 dark:text-blue-300 dark:border-blue-800\",\n Green: \"bg-green-50 text-green-700 border border-green-100 dark:bg-green-900 dark:text-green-300 dark:border-green-800\",\n Amber: \"bg-amber-50 text-amber-700 border border-amber-100 dark:bg-amber-900 dark:text-amber-300 dark:border-amber-800\",\n Danger: \"bg-critical-50 text-critical-700 border border-critical-100 dark:bg-critical-900 dark:text-critical-300 dark:border-critical-800\",\n Purple: \"bg-purple-50 text-purple-700 border border-purple-100 dark:bg-purple-900 dark:text-purple-300 dark:border-purple-800\",\n Fuchsia: \"bg-fuchsia-50 text-fuchsia-700 border border-fuchsia-100 dark:bg-fuchsia-900 dark:text-fuchsia-300 dark:border-fuchsia-800\",\n Rose: \"bg-rose-50 text-rose-700 border border-rose-100 dark:bg-rose-900 dark:text-rose-300 dark:border-rose-800\",\n Sky: \"bg-sky-50 text-sky-700 border border-sky-100 dark:bg-sky-900 dark:text-sky-300 dark:border-sky-800\",\n Golden: \"bg-golden-50 text-golden-700 border border-golden-100 dark:bg-golden-900 dark:text-golden-300 dark:border-golden-800\",\n },\n Outline: {\n Neutral: \"bg-white text-neutral-700 border border-neutral-300 dark:bg-neutral-900 dark:text-neutral-300 dark:border-neutral-600\",\n Blue: \"bg-white text-neutral-700 border border-blue-300 dark:bg-neutral-900 dark:text-blue-300 dark:border-blue-600\",\n Green: \"bg-white text-neutral-700 border border-green-300 dark:bg-neutral-900 dark:text-green-300 dark:border-green-600\",\n Amber: \"bg-white text-neutral-700 border border-amber-300 dark:bg-neutral-900 dark:text-amber-300 dark:border-amber-600\",\n Danger: \"bg-white text-neutral-700 border border-critical-300 dark:bg-neutral-900 dark:text-critical-300 dark:border-critical-600\",\n Purple: \"bg-white text-neutral-700 border border-purple-300 dark:bg-neutral-900 dark:text-purple-300 dark:border-purple-600\",\n Fuchsia: \"bg-white text-neutral-700 border border-fuchsia-300 dark:bg-neutral-900 dark:text-fuchsia-300 dark:border-fuchsia-600\",\n Rose: \"bg-white text-neutral-700 border border-rose-300 dark:bg-neutral-900 dark:text-rose-300 dark:border-rose-600\",\n Sky: \"bg-white text-neutral-700 border border-sky-300 dark:bg-neutral-900 dark:text-sky-300 dark:border-sky-600\",\n Golden: \"bg-white text-neutral-700 border border-golden-300 dark:bg-neutral-900 dark:text-golden-300 dark:border-golden-600\",\n },\n Solid: {\n Neutral: \"bg-neutral-600 text-white border border-transparent dark:bg-neutral-700 dark:text-white\",\n Blue: \"bg-blue-600 text-white border border-transparent dark:bg-blue-700 dark:text-white\",\n Green: \"bg-green-600 text-white border border-transparent dark:bg-green-700 dark:text-white\",\n Amber: \"bg-amber-600 text-white border border-transparent dark:bg-amber-700 dark:text-white\",\n Danger: \"bg-critical-600 text-white border border-transparent dark:bg-critical-700 dark:text-white\",\n Purple: \"bg-purple-600 text-white border border-transparent dark:bg-purple-700 dark:text-white\",\n Fuchsia: \"bg-fuchsia-600 text-white border border-transparent dark:bg-fuchsia-700 dark:text-white\",\n Rose: \"bg-rose-600 text-white border border-transparent dark:bg-rose-700 dark:text-white\",\n Sky: \"bg-sky-600 text-white border border-transparent dark:bg-sky-700 dark:text-white\",\n Golden: \"bg-golden-600 text-white border border-transparent dark:bg-golden-700 dark:text-white\",\n },\n};\n\n// Dot color classes\nconst dotColorClasses: Record<BadgeStyle, Record<BadgeColor, string>> = {\n Light: {\n Neutral: \"bg-neutral-600\",\n Blue: \"bg-blue-600\",\n Green: \"bg-green-600\",\n Amber: \"bg-amber-600\",\n Danger: \"bg-critical-600\",\n Purple: \"bg-purple-600\",\n Fuchsia: \"bg-fuchsia-600\",\n Rose: \"bg-rose-600\",\n Sky: \"bg-sky-600\",\n Golden: \"bg-golden-600\",\n },\n Outline: {\n Neutral: \"bg-neutral-600\",\n Blue: \"bg-blue-600\",\n Green: \"bg-green-600\",\n Amber: \"bg-amber-600\",\n Danger: \"bg-critical-600\",\n Purple: \"bg-purple-600\",\n Fuchsia: \"bg-fuchsia-600\",\n Rose: \"bg-rose-600\",\n Sky: \"bg-sky-600\",\n Golden: \"bg-golden-600\",\n },\n Solid: {\n Neutral: \"bg-white\",\n Blue: \"bg-white\",\n Green: \"bg-white\",\n Amber: \"bg-white\",\n Danger: \"bg-white\",\n Purple: \"bg-white\",\n Fuchsia: \"bg-white\",\n Rose: \"bg-white\",\n Sky: \"bg-white\",\n Golden: \"bg-white\",\n },\n};\n\n// Size styles\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: \"h-badge-sm px-2 py-0.5 gap-1 rounded-full\",\n lg: \"h-badge-lg px-2 py-1 gap-1.5 rounded-full\",\n};\n\n// Icon sizes\nconst iconSizes: Record<BadgeSize, string> = {\n sm: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n};\n\n// Dot sizes\nconst dotSizes: Record<BadgeSize, string> = {\n sm: \"h-2 w-2\",\n lg: \"h-2.5 w-2.5\",\n};\n\n/**\n * Badge component for displaying labels, statuses, and notifications.\n * Supports multiple types, styles, sizes, and colors with RTL support.\n * \n * Specifications:\n * - Font: Inter Medium, 11px, weight 500, line-height 14px\n * - Border radius: Fully rounded (pill shape)\n * - Padding: 8px horizontal for both sizes\n * - Height sm: 24px, lg: 28px\n * - Icon sizes: 12px (sm), 16px (lg)\n * - Dot size: 8px (sm), 10px (lg)\n */\nexport const Badge = forwardRef<HTMLDivElement, BadgeProps>(\n (\n {\n type = \"Default\",\n style = \"Light\",\n size = \"sm\",\n color = \"Neutral\",\n showNumber = false,\n number,\n children,\n leadingIcon,\n trailingIcon,\n flagIcon,\n imgSrc,\n imgAlt = \"Badge image\",\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const isRTL = rtl;\n\n // Build base classes\n const baseClasses = cn(\n \"inline-flex items-center justify-center\",\n \"font-sans text-badge font-medium\",\n \"whitespace-nowrap\",\n sizeStyles[size],\n styleVariants[style][color],\n isRTL && \"font-sans-rtl flex-row-reverse\",\n className\n );\n\n // Render icon wrapper - handles both icon components and image URLs\n const renderIcon = (icon: ReactNode | string, iconSize: string) => {\n // Check if icon is a string (image URL)\n if (typeof icon === 'string') {\n return (\n <img\n src={icon}\n alt=\"Badge icon\"\n className={cn(\n \"rounded-full flex-shrink-0 object-cover\",\n iconSize\n )}\n />\n );\n }\n \n // Otherwise, render as React component (icon)\n return (\n <span className={cn(\n \"flex items-center justify-center flex-shrink-0 overflow-hidden rounded-full\",\n iconSize\n )}>\n {icon}\n </span>\n );\n };\n\n // Render dot indicator\n const renderDot = () => {\n return (\n <span\n className={cn(\n \"rounded-full flex-shrink-0\",\n dotSizes[size],\n dotColorClasses[style][color]\n )}\n />\n );\n };\n\n // Render flag icon\n const renderFlag = () => {\n if (flagIcon) {\n return renderIcon(flagIcon, iconSizes[size]);\n }\n // Default flag placeholder - can be replaced with actual flag component\n return (\n <span\n className={cn(\n \"rounded-sm flex-shrink-0 bg-neutral-300\",\n iconSizes[size]\n )}\n />\n );\n };\n\n // Render leading image\n const renderLeadingImg = () => {\n if (!imgSrc) return null;\n return (\n <img\n src={imgSrc}\n alt={imgAlt}\n className={cn(\n \"rounded-sm flex-shrink-0 object-cover\",\n iconSizes[size]\n )}\n />\n );\n };\n\n // Format number display\n const formatNumber = (num: number): string => {\n if (num > 99) return \"99+\";\n return num.toString();\n };\n\n // Determine content to display\n const displayContent = showNumber && number !== undefined\n ? formatNumber(number)\n : children;\n\n // Render based on type\n const renderContent = () => {\n switch (type) {\n case \"LeadingIcon\":\n return (\n <>\n {leadingIcon && renderIcon(leadingIcon, iconSizes[size])}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"TrailingIcon\":\n return (\n <>\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n {trailingIcon && renderIcon(trailingIcon, iconSizes[size])}\n </>\n );\n case \"Dot\":\n return (\n <>\n {renderDot()}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"Flag\":\n return (\n <>\n {renderFlag()}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"LeadingImg\":\n return (\n <>\n {renderLeadingImg()}\n {displayContent && (\n <span className=\"truncate\">{displayContent}</span>\n )}\n </>\n );\n case \"Default\":\n default:\n return displayContent && <span className=\"truncate\">{displayContent}</span>;\n }\n };\n\n return (\n <div\n ref={ref}\n dir={isRTL ? \"rtl\" : undefined}\n className={baseClasses}\n {...props}\n >\n {renderContent()}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\n","import React, { forwardRef } from 'react';\nimport { X, AlertCircle, CheckCircle, AlertTriangle, Info, Circle } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {\n /** The alert style */\n style?: 'Outline' | 'Light' | 'Solid';\n /** The alert status/severity */\n status?: 'Danger' | 'Success' | 'Warning' | 'Info' | 'Neutral';\n /** The title text */\n title?: string;\n /** Optional message text (for expandable alerts) */\n message?: string;\n /** Whether to show action links */\n showActions?: boolean;\n /** Primary action text */\n primaryAction?: string;\n /** Secondary action text */\n secondaryAction?: string;\n /** Callback for primary action click */\n onPrimaryAction?: () => void;\n /** Callback for secondary action click */\n onSecondaryAction?: () => void;\n /** Whether to show close button */\n closable?: boolean;\n /** Callback when close button is clicked */\n onClose?: () => void;\n /** RTL mode */\n rtl?: boolean;\n /** RTL title text */\n rtlTitle?: string;\n /** RTL message text */\n rtlMessage?: string;\n /** RTL primary action text */\n rtlPrimaryAction?: string;\n /** RTL secondary action text */\n rtlSecondaryAction?: string;\n}\n\nconst statusConfig = {\n Danger: {\n icon: AlertCircle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-critical-200',\n iconColor: 'text-critical-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-critical-50',\n border: 'border-none',\n iconColor: 'text-critical-600',\n titleColor: 'text-critical-800',\n messageColor: 'text-critical-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-critical-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Success: {\n icon: CheckCircle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-green-200',\n iconColor: 'text-green-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-green-50',\n border: 'border-none',\n iconColor: 'text-green-600',\n titleColor: 'text-green-800',\n messageColor: 'text-green-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-green-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Warning: {\n icon: AlertTriangle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-amber-200',\n iconColor: 'text-amber-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-amber-50',\n border: 'border-none',\n iconColor: 'text-amber-600',\n titleColor: 'text-amber-800',\n messageColor: 'text-amber-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-amber-500',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Info: {\n icon: Info,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-blue-200',\n iconColor: 'text-blue-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-blue-50',\n border: 'border-none',\n iconColor: 'text-blue-600',\n titleColor: 'text-blue-800',\n messageColor: 'text-blue-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-blue-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n Neutral: {\n icon: Circle,\n colors: {\n Outline: {\n bg: 'bg-white',\n border: 'border border-neutral-300',\n iconColor: 'text-neutral-600',\n titleColor: 'text-neutral-900',\n messageColor: 'text-neutral-700',\n actionColor: 'text-blue-600 hover:text-blue-700',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Light: {\n bg: 'bg-neutral-100',\n border: 'border-none',\n iconColor: 'text-neutral-600',\n titleColor: 'text-neutral-800',\n messageColor: 'text-neutral-700',\n actionColor: 'text-neutral-900 hover:text-neutral-950',\n closeColor: 'text-neutral-600 hover:text-neutral-700',\n },\n Solid: {\n bg: 'bg-neutral-600',\n border: 'border-none',\n iconColor: 'text-white',\n titleColor: 'text-white',\n messageColor: 'text-white opacity-80',\n actionColor: 'text-white hover:text-white/90',\n closeColor: 'text-white hover:text-white/90',\n },\n },\n },\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n style = 'Outline',\n status = 'Info',\n title = 'Alert title',\n message,\n showActions = false,\n primaryAction = 'Action',\n secondaryAction = 'Action',\n onPrimaryAction,\n onSecondaryAction,\n closable = true,\n onClose,\n rtl = false,\n rtlTitle,\n rtlMessage,\n rtlPrimaryAction = 'زر الرابط',\n rtlSecondaryAction = 'زر الرابط',\n className,\n ...props\n },\n ref\n ) => {\n const config = statusConfig[status];\n const colors = config.colors[style];\n const Icon = config.icon;\n const isRTL = rtl;\n const isExpandable = !!message;\n\n const displayTitle = isRTL && rtlTitle ? rtlTitle : title;\n const displayMessage = isRTL && rtlMessage ? rtlMessage : message;\n const displayPrimaryAction = isRTL ? rtlPrimaryAction : primaryAction;\n const displaySecondaryAction = isRTL ? rtlSecondaryAction : secondaryAction;\n\n // Base classes\n const baseClasses = cn(\n 'flex items-start gap-2 px-4 py-3 rounded-control transition-all',\n colors.bg,\n colors.border,\n isRTL && 'font-sans-rtl'\n );\n\n // Icon classes\n const iconClasses = cn('w-5 h-5 shrink-0', colors.iconColor);\n\n // Title classes\n const titleClasses = cn(\n 'text-[15px] font-medium leading-[24px]',\n colors.titleColor,\n isRTL ? 'text-right' : 'text-left'\n );\n\n // Message classes\n const messageClasses = cn(\n 'text-[14px] font-normal leading-[20px]',\n colors.messageColor,\n isRTL ? 'text-right' : 'text-left'\n );\n\n // Action classes\n const actionClasses = cn(\n 'text-[15px] font-medium leading-[24px] underline cursor-pointer transition-colors',\n colors.actionColor\n );\n\n // Close button classes\n const closeClasses = cn(\n 'w-5 h-5 shrink-0 cursor-pointer transition-colors',\n colors.closeColor\n );\n\n return (\n <div\n ref={ref}\n className={cn(baseClasses, className)}\n dir={isRTL ? 'rtl' : undefined}\n {...props}\n >\n {/* Content */}\n <div className=\"flex-1 flex items-start gap-2\">\n {/* Icon positioning: left for LTR, right for RTL */}\n {/* In RTL with dir=\"rtl\", we want visual order: Icon (right) → Title (left) */}\n {/* So we render icon first in both cases, dir=\"rtl\" will flip it */}\n <Icon className={iconClasses} />\n\n {/* Text content */}\n <div className=\"flex-1 flex flex-col gap-1\">\n {/* Title */}\n <div className={titleClasses} dir={isRTL ? 'rtl' : undefined}>\n {displayTitle}\n </div>\n\n {/* Message (if expandable) */}\n {isExpandable && displayMessage && (\n <div className={messageClasses} dir={isRTL ? 'rtl' : undefined}>\n {displayMessage}\n </div>\n )}\n\n {/* Actions (if enabled and expandable) */}\n {showActions && isExpandable && (\n <div className={cn('flex gap-4 mt-2', isRTL && 'flex-row-reverse')}>\n {onPrimaryAction && (\n <button\n type=\"button\"\n onClick={onPrimaryAction}\n className={actionClasses}\n >\n {displayPrimaryAction}\n </button>\n )}\n {onSecondaryAction && (\n <button\n type=\"button\"\n onClick={onSecondaryAction}\n className={actionClasses}\n >\n {displaySecondaryAction}\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Action link (for non-expandable) */}\n {showActions && !isExpandable && onPrimaryAction && (\n <button\n type=\"button\"\n onClick={onPrimaryAction}\n className={cn(actionClasses, 'shrink-0 whitespace-nowrap')}\n >\n {displayPrimaryAction}\n </button>\n )}\n\n {/* Close button */}\n {closable && onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className={closeClasses}\n aria-label=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = 'Alert';\n\n","import { forwardRef } from 'react';\nimport { User } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport type AvatarSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\nexport type AvatarStatus = 'online' | 'offline' | 'away' | 'busy' | 'blocked' | 'none';\nexport type AvatarShape = 'circle' | 'square';\n\nexport interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Size of the avatar */\n size?: AvatarSize;\n /** Avatar image source */\n src?: string;\n /** Alt text for image */\n alt?: string;\n /** Initials to display (if no image) */\n initials?: string;\n /** Show icon if no image or initials */\n showIcon?: boolean;\n /** Status indicator */\n status?: AvatarStatus;\n /** Shape of the avatar */\n shape?: AvatarShape;\n /** RTL mode */\n rtl?: boolean;\n /** Show border */\n showBorder?: boolean;\n}\n\nconst sizeConfig = {\n '2xs': {\n container: 'w-4 h-4',\n text: 'text-[8px]',\n icon: 'w-2 h-2',\n statusSize: 'w-1 h-1',\n statusPosition: 'bottom-0 right-0',\n },\n xs: {\n container: 'w-5 h-5',\n text: 'text-[9px]',\n icon: 'w-2.5 h-2.5',\n statusSize: 'w-1.5 h-1.5',\n statusPosition: 'bottom-0 right-0',\n },\n sm: {\n container: 'w-6 h-6',\n text: 'text-[10px]',\n icon: 'w-3 h-3',\n statusSize: 'w-1.5 h-1.5',\n statusPosition: 'bottom-0 right-0',\n },\n md: {\n container: 'w-8 h-8',\n text: 'text-xs',\n icon: 'w-4 h-4',\n statusSize: 'w-2 h-2',\n statusPosition: 'bottom-0 right-0',\n },\n lg: {\n container: 'w-9 h-9',\n text: 'text-sm',\n icon: 'w-4 h-4',\n statusSize: 'w-2 h-2',\n statusPosition: 'bottom-0 right-0',\n },\n xl: {\n container: 'w-10 h-10',\n text: 'text-sm',\n icon: 'w-5 h-5',\n statusSize: 'w-2.5 h-2.5',\n statusPosition: 'bottom-0 right-0',\n },\n '2xl': {\n container: 'w-12 h-12',\n text: 'text-base',\n icon: 'w-6 h-6',\n statusSize: 'w-3 h-3',\n statusPosition: 'bottom-0 right-0',\n },\n '3xl': {\n container: 'w-14 h-14',\n text: 'text-lg',\n icon: 'w-7 h-7',\n statusSize: 'w-3 h-3',\n statusPosition: 'bottom-0 right-0',\n },\n '4xl': {\n container: 'w-16 h-16',\n text: 'text-xl',\n icon: 'w-8 h-8',\n statusSize: 'w-4 h-4',\n statusPosition: 'bottom-0 right-0',\n },\n};\n\nconst statusColors = {\n online: 'bg-green-500',\n offline: 'bg-neutral-400',\n away: 'bg-amber-500',\n busy: 'bg-critical-500',\n blocked: 'bg-neutral-900 dark:bg-neutral-100',\n none: 'hidden',\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n size = 'md',\n src,\n alt = 'Avatar',\n initials,\n showIcon = false,\n status = 'none',\n shape = 'circle',\n rtl = false,\n showBorder = false,\n className,\n ...props\n },\n ref\n ) => {\n const config = sizeConfig[size];\n const hasImage = !!src;\n const hasInitials = !!initials && !hasImage;\n const shouldShowIcon = showIcon && !hasImage && !hasInitials;\n\n // Container classes\n const containerClasses = cn(\n 'relative inline-flex items-center justify-center',\n 'bg-neutral-200 dark:bg-neutral-700',\n config.container,\n shape === 'circle' ? 'rounded-full' : 'rounded-lg',\n showBorder && 'border-2 border-white dark:border-neutral-900',\n rtl && 'font-sans-rtl',\n className\n );\n\n // Image wrapper classes (overflow hidden only for image)\n const imageWrapperClasses = cn(\n 'w-full h-full overflow-hidden',\n shape === 'circle' ? 'rounded-full' : 'rounded-lg'\n );\n\n // Status indicator classes\n const statusClasses = cn(\n 'absolute rounded-full border-2 border-white dark:border-neutral-900',\n config.statusSize,\n config.statusPosition,\n statusColors[status],\n rtl && 'left-0 right-auto'\n );\n\n return (\n <div ref={ref} className={containerClasses} dir={rtl ? 'rtl' : undefined} {...props}>\n {/* Image */}\n {hasImage && (\n <div className={imageWrapperClasses}>\n <img\n src={src}\n alt={alt}\n className=\"w-full h-full object-cover\"\n onError={(e) => {\n // Hide image on error\n e.currentTarget.style.display = 'none';\n }}\n />\n </div>\n )}\n\n {/* Initials */}\n {hasInitials && (\n <span\n className={cn(\n 'font-semibold text-neutral-700 dark:text-neutral-200',\n config.text\n )}\n >\n {initials}\n </span>\n )}\n\n {/* Icon */}\n {shouldShowIcon && (\n <User className={cn('text-neutral-500 dark:text-neutral-400', config.icon)} />\n )}\n\n {/* Status Indicator */}\n {status !== 'none' && <div className={statusClasses} />}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\n","import { forwardRef } from 'react';\nimport { Plus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { AvatarSize, AvatarShape } from './Avatar';\n\nexport interface AvatarCallToActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Size of the avatar */\n size?: AvatarSize;\n /** Shape of the avatar */\n shape?: AvatarShape;\n /** RTL mode */\n rtl?: boolean;\n}\n\nconst sizeConfig = {\n '2xs': {\n container: 'w-4 h-4',\n icon: 'w-2 h-2',\n },\n xs: {\n container: 'w-5 h-5',\n icon: 'w-2.5 h-2.5',\n },\n sm: {\n container: 'w-6 h-6',\n icon: 'w-3 h-3',\n },\n md: {\n container: 'w-8 h-8',\n icon: 'w-4 h-4',\n },\n lg: {\n container: 'w-9 h-9',\n icon: 'w-4 h-4',\n },\n xl: {\n container: 'w-10 h-10',\n icon: 'w-5 h-5',\n },\n '2xl': {\n container: 'w-12 h-12',\n icon: 'w-6 h-6',\n },\n '3xl': {\n container: 'w-14 h-14',\n icon: 'w-7 h-7',\n },\n '4xl': {\n container: 'w-16 h-16',\n icon: 'w-8 h-8',\n },\n};\n\nexport const AvatarCallToAction = forwardRef<HTMLButtonElement, AvatarCallToActionProps>(\n (\n {\n size = 'md',\n shape = 'circle',\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const config = sizeConfig[size];\n\n const containerClasses = cn(\n 'inline-flex items-center justify-center cursor-pointer',\n 'border-2 border-dashed border-neutral-300 dark:border-neutral-600',\n 'bg-neutral-50 dark:bg-neutral-800',\n 'hover:border-neutral-400 dark:hover:border-neutral-500',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\n 'transition-colors duration-200',\n config.container,\n shape === 'circle' ? 'rounded-full' : 'rounded-lg',\n rtl && 'font-sans-rtl',\n className\n );\n\n const iconClasses = cn(\n 'text-neutral-500 dark:text-neutral-400',\n config.icon\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={containerClasses}\n dir={rtl ? 'rtl' : undefined}\n {...props}\n >\n <Plus className={iconClasses} />\n </button>\n );\n }\n);\n\nAvatarCallToAction.displayName = 'AvatarCallToAction';\n\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from './Avatar';\nimport type { AvatarSize, AvatarShape } from './Avatar';\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Size of avatars */\n size?: AvatarSize;\n /** Shape of avatars */\n shape?: AvatarShape;\n /** Maximum number of avatars to show */\n max?: number;\n /** Array of avatar sources or initials */\n avatars: Array<{\n src?: string;\n alt?: string;\n initials?: string;\n showIcon?: boolean;\n }>;\n /** RTL mode */\n rtl?: boolean;\n}\n\nconst sizeOverlapConfig = {\n '2xs': '-ml-1',\n 'xs': '-ml-1.5',\n 'sm': '-ml-2',\n 'md': '-ml-2.5',\n 'lg': '-ml-3',\n 'xl': '-ml-3',\n '2xl': '-ml-4',\n '3xl': '-ml-4',\n '4xl': '-ml-5',\n};\n\nconst sizeTextConfig = {\n '2xs': 'text-[8px]',\n 'xs': 'text-[9px]',\n 'sm': 'text-[10px]',\n 'md': 'text-xs',\n 'lg': 'text-sm',\n 'xl': 'text-sm',\n '2xl': 'text-base',\n '3xl': 'text-lg',\n '4xl': 'text-xl',\n};\n\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n (\n {\n size = 'md',\n shape = 'circle',\n max = 5,\n avatars,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const displayAvatars = avatars.slice(0, max);\n const remainingCount = Math.max(0, avatars.length - max);\n const overlapClass = sizeOverlapConfig[size];\n const textClass = sizeTextConfig[size];\n\n const containerClasses = cn(\n 'inline-flex items-center',\n rtl ? 'flex-row-reverse' : 'flex-row',\n className\n );\n\n return (\n <div ref={ref} className={containerClasses} dir={rtl ? 'rtl' : undefined} {...props}>\n {displayAvatars.map((avatar, index) => (\n <div\n key={index}\n className={cn(\n 'relative',\n index > 0 && !rtl && overlapClass,\n index > 0 && rtl && overlapClass.replace('-ml-', '-mr-')\n )}\n style={{ zIndex: displayAvatars.length - index }}\n >\n <Avatar\n size={size}\n shape={shape}\n src={avatar.src}\n alt={avatar.alt}\n initials={avatar.initials}\n showIcon={avatar.showIcon}\n showBorder={true}\n rtl={rtl}\n />\n </div>\n ))}\n \n {remainingCount > 0 && (\n <div\n className={cn(\n 'relative inline-flex items-center justify-center',\n 'bg-neutral-200 dark:bg-neutral-700',\n 'text-neutral-700 dark:text-neutral-200 font-semibold',\n !rtl && overlapClass,\n rtl && overlapClass.replace('-ml-', '-mr-'),\n shape === 'circle' ? 'rounded-full' : 'rounded-lg',\n 'border-2 border-white dark:border-neutral-900',\n textClass,\n // Match avatar size\n size === '2xs' && 'w-4 h-4',\n size === 'xs' && 'w-5 h-5',\n size === 'sm' && 'w-6 h-6',\n size === 'md' && 'w-8 h-8',\n size === 'lg' && 'w-9 h-9',\n size === 'xl' && 'w-10 h-10',\n size === '2xl' && 'w-12 h-12',\n size === '3xl' && 'w-14 h-14',\n size === '4xl' && 'w-16 h-16',\n )}\n style={{ zIndex: 0 }}\n >\n +{remainingCount}\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatarGroup.displayName = 'AvatarGroup';\n\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from './Avatar';\nimport type { AvatarSize, AvatarShape, AvatarStatus } from './Avatar';\n\nexport interface AvatarProfileProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Size of avatar */\n size?: AvatarSize;\n /** Shape of avatar */\n shape?: AvatarShape;\n /** Avatar image source */\n src?: string;\n /** Alt text for image */\n alt?: string;\n /** Initials to display (if no image) */\n initials?: string;\n /** Show icon if no image or initials */\n showIcon?: boolean;\n /** Status indicator */\n status?: AvatarStatus;\n /** Primary text (name) */\n name: string;\n /** Secondary text (description/subtitle) */\n description?: string;\n /** RTL mode */\n rtl?: boolean;\n}\n\nexport const AvatarProfile = forwardRef<HTMLDivElement, AvatarProfileProps>(\n (\n {\n size = 'md',\n shape = 'circle',\n src,\n alt,\n initials,\n showIcon,\n status = 'none',\n name,\n description,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const containerClasses = cn(\n 'inline-flex items-center gap-3',\n rtl ? 'flex-row-reverse' : 'flex-row',\n rtl && 'font-sans-rtl',\n className\n );\n\n const textContainerClasses = cn(\n 'flex flex-col',\n rtl ? 'items-end' : 'items-start'\n );\n\n const nameClasses = cn(\n 'font-semibold text-neutral-900 dark:text-white',\n size === '2xs' && 'text-xs',\n size === 'xs' && 'text-sm',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n size === 'lg' && 'text-base',\n size === 'xl' && 'text-lg',\n size === '2xl' && 'text-lg',\n size === '3xl' && 'text-xl',\n size === '4xl' && 'text-2xl',\n rtl && 'text-right'\n );\n\n const descriptionClasses = cn(\n 'text-neutral-600 dark:text-neutral-400',\n size === '2xs' && 'text-[10px]',\n size === 'xs' && 'text-xs',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n size === 'lg' && 'text-sm',\n size === 'xl' && 'text-base',\n size === '2xl' && 'text-base',\n size === '3xl' && 'text-lg',\n size === '4xl' && 'text-xl',\n rtl && 'text-right'\n );\n\n return (\n <div ref={ref} className={containerClasses} dir={rtl ? 'rtl' : undefined} {...props}>\n <Avatar\n size={size}\n shape={shape}\n src={src}\n alt={alt}\n initials={initials}\n showIcon={showIcon}\n status={status}\n rtl={rtl}\n />\n <div className={textContainerClasses}>\n <span className={nameClasses}>{name}</span>\n {description && <span className={descriptionClasses}>{description}</span>}\n </div>\n </div>\n );\n }\n);\n\nAvatarProfile.displayName = 'AvatarProfile';\n\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n /** Direction of the divider */\n direction?: 'horizontal' | 'vertical';\n /** Style type of the divider */\n type?: 'solid' | 'dashed';\n /** Custom color (defaults to neutral-200) */\n color?: string;\n /** Spacing around the divider (margin) */\n spacing?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n direction = 'horizontal',\n type = 'solid',\n color,\n spacing = 'none',\n className,\n ...props\n },\n ref\n ) => {\n // Spacing classes\n const spacingClasses = {\n none: '',\n xs: direction === 'horizontal' ? 'my-1' : 'mx-1',\n sm: direction === 'horizontal' ? 'my-2' : 'mx-2',\n md: direction === 'horizontal' ? 'my-4' : 'mx-4',\n lg: direction === 'horizontal' ? 'my-6' : 'mx-6',\n xl: direction === 'horizontal' ? 'my-8' : 'mx-8',\n };\n\n // Horizontal divider\n if (direction === 'horizontal') {\n return (\n <hr\n ref={ref as any}\n className={cn(\n 'w-full border-0',\n type === 'solid' ? 'border-t border-solid' : 'border-t border-dashed',\n color ? `border-[${color}]` : 'border-neutral-200',\n spacingClasses[spacing],\n className\n )}\n {...props}\n />\n );\n }\n\n // Vertical divider\n return (\n <div\n ref={ref}\n className={cn(\n 'h-full',\n type === 'solid' ? 'border-l border-solid' : 'border-l border-dashed',\n color ? `border-[${color}]` : 'border-neutral-200',\n spacingClasses[spacing],\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = 'Divider';\n\n\n","import { ReactNode, HTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Loader2, CheckCircle, AlertCircle } from \"lucide-react\";\n\nexport type ProgressBarSize = \"sm\" | \"lg\";\n\nexport type ProgressBarColor =\n | \"default\"\n | \"green\"\n | \"golden\"\n | \"amber\"\n | \"red\"\n | \"purple\"\n | \"sky\"\n | \"neutral\";\n\nexport type ProgressBarLabelType = \"top\" | \"bottom\" | \"none\";\n\nexport type ProgressIndicatorType = \"loading\" | \"completed\" | \"error\" | \"custom\" | \"none\";\n\nexport interface ProgressBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Progress value from 0 to 100 */\n value?: number;\n /** The size of the progress bar */\n size?: ProgressBarSize;\n /** The color of the progress bar fill */\n color?: ProgressBarColor;\n /** Label text */\n label?: string;\n /** Label position (top, bottom, or none) */\n labelType?: ProgressBarLabelType;\n /** Helper text below the progress bar */\n helperText?: string;\n /** Whether helper text indicates danger/error */\n helperDanger?: boolean;\n /** Show inline progress indicator */\n showInlineIndicator?: boolean;\n /** Type of progress indicator */\n indicatorType?: ProgressIndicatorType;\n /** Custom icon for indicator */\n customIcon?: ReactNode;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n /** RTL label text */\n rtlLabel?: string;\n /** RTL helper text */\n rtlHelperText?: string;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Color styles for the progress fill\nconst colorStyles: Record<ProgressBarColor, string> = {\n default: \"bg-primary-600\",\n green: \"bg-green-600\",\n golden: \"bg-yellow-600\",\n amber: \"bg-amber-600\",\n red: \"bg-critical-600\",\n purple: \"bg-purple-600\",\n sky: \"bg-sky-600\",\n neutral: \"bg-neutral-600\",\n};\n\n// Size styles\nconst sizeStyles: Record<ProgressBarSize, string> = {\n sm: \"h-1\", // 4px\n lg: \"h-2\", // 8px\n};\n\n/**\n * ProgressBar component for displaying progress visually.\n * Supports multiple sizes, colors, labels, helper text, and inline indicators.\n * Includes RTL (Right-to-Left) support for Arabic, Hebrew, and other RTL languages.\n * \n * Size Specifications:\n * - sm: 4px height\n * - lg: 8px height\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n value = 0,\n size = \"lg\",\n color = \"default\",\n label,\n labelType = \"none\",\n helperText,\n helperDanger = false,\n showInlineIndicator = false,\n indicatorType = \"none\",\n customIcon,\n rtl = false,\n rtlLabel,\n rtlHelperText,\n className,\n ...props\n },\n ref\n ) => {\n // Clamp value between 0 and 100\n const clampedValue = Math.min(Math.max(value, 0), 100);\n \n // Determine display text based on RTL\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displayHelperText = rtl && rtlHelperText ? rtlHelperText : helperText;\n \n // Get indicator icon\n const getIndicatorIcon = () => {\n if (indicatorType === \"loading\") {\n return <Loader2 className=\"w-4 h-4 animate-spin\" />;\n } else if (indicatorType === \"completed\") {\n return <CheckCircle className=\"w-4 h-4\" />;\n } else if (indicatorType === \"error\") {\n return <AlertCircle className=\"w-4 h-4\" />;\n } else if (indicatorType === \"custom\" && customIcon) {\n return customIcon;\n }\n return null;\n };\n\n const indicatorIcon = getIndicatorIcon();\n \n // Helper text color\n const helperTextColor = helperDanger \n ? \"text-critical-600\" \n : \"text-neutral-600\";\n\n return (\n <div\n ref={ref}\n className={cn(\"w-full\", rtl && \"font-sans-rtl\", className)}\n dir={rtl ? \"rtl\" : undefined}\n {...props}\n >\n {/* Top Label */}\n {labelType === \"top\" && displayLabel && (\n <div className=\"flex items-center justify-between mb-2\">\n <span className={cn(\n \"text-[15px] font-medium leading-6 text-neutral-900\",\n rtl && \"text-right\"\n )}>\n {displayLabel}\n </span>\n <span className={cn(\n \"text-[15px] font-medium leading-6 text-neutral-600\",\n rtl && \"text-left\"\n )}>\n {clampedValue}%\n </span>\n </div>\n )}\n\n {/* Progress Bar Container */}\n <div className=\"relative\">\n {/* Progress Bar Track */}\n <div\n className={cn(\n \"w-full bg-neutral-200 rounded-full overflow-hidden\",\n sizeStyles[size]\n )}\n >\n {/* Progress Bar Fill */}\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-300 ease-out\",\n colorStyles[color]\n )}\n style={{\n width: `${clampedValue}%`,\n transformOrigin: rtl ? \"right\" : \"left\",\n }}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n\n {/* Inline Indicator */}\n {showInlineIndicator && indicatorIcon && (\n <div\n className={cn(\n \"absolute top-1/2 -translate-y-1/2 flex items-center gap-1\",\n \"text-[13px] font-medium leading-4\",\n rtl ? \"right-0\" : \"left-0\"\n )}\n style={{\n [rtl ? \"right\" : \"left\"]: `calc(${clampedValue}% - ${rtl ? 0 : 20}px)`,\n }}\n >\n <span className={cn(\n \"text-neutral-900\",\n indicatorType === \"loading\" && \"text-primary-600\",\n indicatorType === \"completed\" && \"text-green-600\",\n indicatorType === \"error\" && \"text-critical-600\"\n )}>\n {indicatorIcon}\n </span>\n <span className=\"text-neutral-900 tabular-nums\">\n {clampedValue}%\n </span>\n </div>\n )}\n </div>\n\n {/* Bottom Label */}\n {labelType === \"bottom\" && displayLabel && (\n <div className=\"flex items-center justify-between mt-1\">\n <span className={cn(\n \"text-[13px] font-normal leading-5 text-neutral-600\",\n rtl && \"text-right\"\n )}>\n {displayLabel}\n </span>\n <span className={cn(\n \"text-[13px] font-medium leading-5 text-neutral-900 tabular-nums\",\n rtl && \"text-left\"\n )}>\n {clampedValue}%\n </span>\n </div>\n )}\n\n {/* Helper Text */}\n {helperText && !showInlineIndicator && (\n <div className=\"flex items-center gap-1 mt-1\">\n {indicatorIcon && (\n <span className={cn(\n indicatorType === \"loading\" && \"text-primary-600\",\n indicatorType === \"completed\" && \"text-green-600\",\n indicatorType === \"error\" && \"text-critical-600\",\n indicatorType === \"custom\" && \"text-neutral-600\"\n )}>\n {indicatorIcon}\n </span>\n )}\n <span className={cn(\n \"text-[13px] font-normal leading-4\",\n helperTextColor,\n rtl && \"text-right\"\n )}>\n {displayHelperText}\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nProgressBar.displayName = \"ProgressBar\";\n","import { HTMLAttributes, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, MoreHorizontal } from \"lucide-react\";\n\nexport type PaginationSize = \"sm\" | \"md\" | \"lg\";\n\nexport type PaginationVariant = \"default\" | \"simple\";\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current active page (1-indexed) */\n currentPage: number;\n /** Total number of pages */\n totalPages: number;\n /** Callback when page changes */\n onPageChange?: (page: number) => void;\n /** Size variant */\n size?: PaginationSize;\n /** Visual variant */\n variant?: PaginationVariant;\n /** Show first/last page buttons */\n showFirstLast?: boolean;\n /** Show previous/next buttons */\n showPrevNext?: boolean;\n /** Number of page buttons to show on each side of current page */\n siblingCount?: number;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n /** Disable all pagination controls */\n disabled?: boolean;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// Size styles for pagination buttons\nconst sizeStyles: Record<PaginationSize, string> = {\n sm: \"h-8 min-w-[32px] px-2 text-sm\",\n md: \"h-10 min-w-[40px] px-3 text-base\",\n lg: \"h-12 min-w-[48px] px-4 text-lg\",\n};\n\n// Icon size mapping\nconst iconSizeMap: Record<PaginationSize, number> = {\n sm: 16,\n md: 20,\n lg: 24,\n};\n\n/**\n * Generate page numbers array with ellipsis\n */\nfunction generatePageNumbers(\n currentPage: number,\n totalPages: number,\n siblingCount: number\n): (number | \"ellipsis\")[] {\n const totalNumbers = siblingCount * 2 + 3; // siblings on each side + first + last + current\n const totalBlocks = totalNumbers + 2; // + 2 for the ellipsis\n\n if (totalPages <= totalBlocks) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\n\n const shouldShowLeftEllipsis = leftSiblingIndex > 2;\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const leftItemCount = 3 + 2 * siblingCount;\n const leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1);\n return [...leftRange, \"ellipsis\", totalPages];\n }\n\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n const rightItemCount = 3 + 2 * siblingCount;\n const rightRange = Array.from(\n { length: rightItemCount },\n (_, i) => totalPages - rightItemCount + i + 1\n );\n return [1, \"ellipsis\", ...rightRange];\n }\n\n if (shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const middleRange = Array.from(\n { length: rightSiblingIndex - leftSiblingIndex + 1 },\n (_, i) => leftSiblingIndex + i\n );\n return [1, \"ellipsis\", ...middleRange, \"ellipsis\", totalPages];\n }\n\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n}\n\n/**\n * Pagination component for navigating through pages of content.\n * Supports multiple sizes, RTL mode, and configurable display options.\n * \n * Features:\n * - Page number buttons with intelligent ellipsis\n * - Previous/Next navigation\n * - First/Last page buttons (optional)\n * - Simple variant (text-based)\n * - RTL support\n * - Accessible keyboard navigation\n */\nexport const Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n currentPage,\n totalPages,\n onPageChange,\n size = \"md\",\n variant = \"default\",\n showFirstLast = false,\n showPrevNext = true,\n siblingCount = 1,\n rtl = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const handlePageChange = (page: number) => {\n if (disabled || page < 1 || page > totalPages || page === currentPage) {\n return;\n }\n onPageChange?.(page);\n };\n\n const pageNumbers = generatePageNumbers(currentPage, totalPages, siblingCount);\n const iconSize = iconSizeMap[size];\n\n const canGoPrevious = currentPage > 1 && !disabled;\n const canGoNext = currentPage < totalPages && !disabled;\n\n // Simple variant (text-based)\n if (variant === \"simple\") {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between gap-4\",\n rtl && \"flex-row-reverse\",\n className\n )}\n dir={rtl ? \"rtl\" : undefined}\n {...props}\n >\n {/* Previous Button */}\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={!canGoPrevious}\n className={cn(\n \"inline-flex items-center gap-2 font-medium transition-colors\",\n \"text-neutral-700 hover:text-neutral-900\",\n \"dark:text-neutral-300 dark:hover:text-neutral-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n sizeStyles[size]\n )}\n >\n <ChevronLeft size={iconSize} />\n <span>Previous</span>\n </button>\n\n {/* Page Info */}\n <span className=\"text-sm text-neutral-600 dark:text-neutral-400 tabular-nums\">\n Page {currentPage} of {totalPages}\n </span>\n\n {/* Next Button */}\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={!canGoNext}\n className={cn(\n \"inline-flex items-center gap-2 font-medium transition-colors\",\n \"text-neutral-700 hover:text-neutral-900\",\n \"dark:text-neutral-300 dark:hover:text-neutral-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n sizeStyles[size]\n )}\n >\n <span>Next</span>\n <ChevronRight size={iconSize} />\n </button>\n </div>\n );\n }\n\n // Default variant (button-based)\n return (\n <nav\n ref={ref}\n className={cn(\n \"flex items-center gap-1\",\n rtl && \"flex-row-reverse\",\n className\n )}\n dir={rtl ? \"rtl\" : undefined}\n aria-label=\"Pagination\"\n {...props}\n >\n {/* First Page Button */}\n {showFirstLast && (\n <button\n type=\"button\"\n onClick={() => handlePageChange(1)}\n disabled={currentPage === 1 || disabled}\n aria-label=\"Go to first page\"\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-control font-medium transition-all\",\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white disabled:hover:border-neutral-300\",\n \"dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-700 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-600\",\n \"dark:disabled:hover:bg-neutral-800 dark:disabled:hover:border-neutral-700\",\n sizeStyles[size]\n )}\n >\n <ChevronsLeft size={iconSize} />\n </button>\n )}\n\n {/* Previous Button */}\n {showPrevNext && (\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={!canGoPrevious}\n aria-label=\"Go to previous page\"\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-control font-medium transition-all\",\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white disabled:hover:border-neutral-300\",\n \"dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-700 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-600\",\n \"dark:disabled:hover:bg-neutral-800 dark:disabled:hover:border-neutral-700\",\n sizeStyles[size]\n )}\n >\n <ChevronLeft size={iconSize} />\n </button>\n )}\n\n {/* Page Numbers */}\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis\") {\n return (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n \"inline-flex items-center justify-center\",\n \"text-neutral-500 dark:text-neutral-400\",\n sizeStyles[size]\n )}\n aria-hidden=\"true\"\n >\n <MoreHorizontal size={iconSize} />\n </span>\n );\n }\n\n const isActive = pageNum === currentPage;\n\n return (\n <button\n key={pageNum}\n type=\"button\"\n onClick={() => handlePageChange(pageNum)}\n disabled={disabled}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-control font-medium transition-all tabular-nums\",\n sizeStyles[size],\n isActive\n ? cn(\n \"bg-primary-600 text-white border border-primary-600\",\n \"hover:bg-primary-700 hover:border-primary-700\",\n \"dark:bg-primary-500 dark:border-primary-500\",\n \"dark:hover:bg-primary-600 dark:hover:border-primary-600\"\n )\n : cn(\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-700 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-600\"\n ),\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white disabled:hover:border-neutral-300\",\n \"dark:disabled:hover:bg-neutral-800 dark:disabled:hover:border-neutral-700\"\n )}\n >\n {pageNum}\n </button>\n );\n })}\n\n {/* Next Button */}\n {showPrevNext && (\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={!canGoNext}\n aria-label=\"Go to next page\"\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-control font-medium transition-all\",\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white disabled:hover:border-neutral-300\",\n \"dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-700 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-600\",\n \"dark:disabled:hover:bg-neutral-800 dark:disabled:hover:border-neutral-700\",\n sizeStyles[size]\n )}\n >\n <ChevronRight size={iconSize} />\n </button>\n )}\n\n {/* Last Page Button */}\n {showFirstLast && (\n <button\n type=\"button\"\n onClick={() => handlePageChange(totalPages)}\n disabled={currentPage === totalPages || disabled}\n aria-label=\"Go to last page\"\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-control font-medium transition-all\",\n \"bg-white text-neutral-700 border border-neutral-300\",\n \"hover:bg-neutral-50 hover:border-neutral-400\",\n \"active:bg-neutral-100\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white disabled:hover:border-neutral-300\",\n \"dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700\",\n \"dark:hover:bg-neutral-700 dark:hover:border-neutral-600\",\n \"dark:active:bg-neutral-600\",\n \"dark:disabled:hover:bg-neutral-800 dark:disabled:hover:border-neutral-700\",\n sizeStyles[size]\n )}\n >\n <ChevronsRight size={iconSize} />\n </button>\n )}\n </nav>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n","import { forwardRef, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MenuProps {\n /** Menu items */\n children: ReactNode;\n /** RTL mode */\n rtl?: boolean;\n /** Custom class */\n className?: string;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, rtl = false, className }, ref) => {\n const containerClasses = cn(\n 'bnhtn-menu',\n 'flex flex-col',\n 'bg-white dark:bg-neutral-900',\n 'border border-neutral-200 dark:border-neutral-800',\n 'rounded-lg',\n 'overflow-hidden',\n rtl && 'font-sans-rtl',\n className\n );\n\n return (\n <div ref={ref} className={containerClasses}>\n {children}\n </div>\n );\n }\n);\n\nMenu.displayName = 'Menu';\n","import { forwardRef, ReactNode } from 'react';\nimport { ChevronRight, ChevronLeft, Plus } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface MenuItemProps {\n /** Main label */\n label: string;\n /** RTL label */\n rtlLabel?: string;\n /** Supporting text */\n supportingText?: string;\n /** RTL supporting text */\n rtlSupportingText?: string;\n /** Leading icon */\n leadingIcon?: ReactNode;\n /** Avatar component or image URL */\n avatar?: ReactNode | string;\n /** Avatar size */\n avatarSize?: 'sm' | 'md' | 'lg';\n /** Badge component */\n badge?: ReactNode;\n /** Toggle switch */\n toggle?: ReactNode;\n /** Trailing icon (chevron or custom) */\n trailingIcon?: 'chevron' | 'none' | ReactNode;\n /** Show trailing text */\n trailingText?: string;\n /** RTL trailing text */\n rtlTrailingText?: string;\n /** Show add button */\n showAddButton?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Click handler */\n onClick?: () => void;\n /** Custom class */\n className?: string;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n (\n {\n label,\n rtlLabel,\n supportingText,\n rtlSupportingText,\n leadingIcon,\n avatar,\n avatarSize = 'md',\n badge,\n toggle,\n trailingIcon = 'none',\n trailingText,\n rtlTrailingText,\n showAddButton = false,\n rtl = false,\n disabled = false,\n onClick,\n className,\n },\n ref\n ) => {\n const displayLabel = rtl && rtlLabel ? rtlLabel : label;\n const displaySupportingText = rtl && rtlSupportingText ? rtlSupportingText : supportingText;\n const displayTrailingText = rtl && rtlTrailingText ? rtlTrailingText : trailingText;\n\n // Avatar size mapping\n const avatarSizeClasses = {\n sm: 'w-8 h-8',\n md: 'w-10 h-10',\n lg: 'w-12 h-12',\n };\n\n // Container classes\n const containerClasses = cn(\n 'bnhtn-menu-item',\n 'flex items-center gap-3',\n 'px-4 py-2.5',\n 'min-h-[48px]',\n 'rounded-lg',\n 'transition-all duration-150',\n // Background\n 'bg-white dark:bg-neutral-900',\n // Hover - more visible hover state\n !disabled && 'hover:bg-neutral-100 dark:hover:bg-neutral-800',\n // Cursor\n !disabled && onClick && 'cursor-pointer',\n // Disabled - stronger disabled state\n disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n // RTL\n rtl && 'flex-row-reverse',\n className\n );\n\n // Leading section classes\n const leadingSectionClasses = cn(\n 'bnhtn-menu-item-leading',\n 'flex items-center gap-3',\n 'shrink-0',\n rtl && 'flex-row-reverse'\n );\n\n // Content section classes\n const contentClasses = cn(\n 'bnhtn-menu-item-content',\n 'flex flex-col gap-0.5',\n 'flex-1 min-w-0',\n rtl && 'items-end text-right'\n );\n\n // Label classes\n const labelClasses = cn(\n 'bnhtn-menu-item-label',\n 'text-[15px] font-medium leading-6',\n 'text-neutral-900 dark:text-white',\n rtl && 'font-sans-rtl'\n );\n\n // Supporting text classes\n const supportingTextClasses = cn(\n 'bnhtn-menu-item-supporting',\n 'text-sm leading-5',\n 'text-neutral-600 dark:text-neutral-400',\n rtl && 'font-sans-rtl'\n );\n\n // Trailing section classes\n const trailingSectionClasses = cn(\n 'bnhtn-menu-item-trailing',\n 'flex items-center gap-2',\n 'shrink-0',\n rtl && 'flex-row-reverse'\n );\n\n // Trailing text classes\n const trailingTextClasses = cn(\n 'bnhtn-menu-item-trailing-text',\n 'text-sm leading-5',\n 'text-neutral-500 dark:text-neutral-400',\n rtl && 'font-sans-rtl'\n );\n\n // Icon button classes\n const iconButtonClasses = cn(\n 'bnhtn-menu-item-icon-button',\n 'w-5 h-5',\n 'text-neutral-500 dark:text-neutral-400',\n !disabled && 'hover:text-neutral-700 dark:hover:text-neutral-300',\n 'transition-colors duration-150'\n );\n\n const renderTrailingIcon = () => {\n if (trailingIcon === 'none') return null;\n if (trailingIcon === 'chevron') {\n const ChevronIcon = rtl ? ChevronLeft : ChevronRight;\n return <ChevronIcon className=\"w-5 h-5 text-neutral-400\" />;\n }\n return trailingIcon;\n };\n\n const renderAvatar = () => {\n if (!avatar) return null;\n\n // If avatar is a string (URL), render an img tag\n if (typeof avatar === 'string') {\n return (\n <img\n src={avatar}\n alt=\"\"\n className={cn(\n 'bnhtn-menu-item-avatar-img',\n 'rounded-full object-cover shrink-0',\n avatarSizeClasses[avatarSize]\n )}\n />\n );\n }\n\n // Otherwise render the component/element as-is\n return avatar;\n };\n\n return (\n <div\n ref={ref}\n className={containerClasses}\n onClick={disabled ? undefined : onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick && !disabled ? 0 : undefined}\n >\n {/* Leading section */}\n <div className={leadingSectionClasses}>\n {leadingIcon && (\n <div className=\"bnhtn-menu-item-leading-icon shrink-0\">\n {leadingIcon}\n </div>\n )}\n {renderAvatar()}\n </div>\n\n {/* Content section */}\n <div className={contentClasses}>\n <span className={labelClasses}>{displayLabel}</span>\n {displaySupportingText && (\n <span className={supportingTextClasses}>{displaySupportingText}</span>\n )}\n </div>\n\n {/* Trailing section */}\n <div className={trailingSectionClasses}>\n {displayTrailingText && (\n <span className={trailingTextClasses}>{displayTrailingText}</span>\n )}\n {badge && (\n <div className=\"bnhtn-menu-item-badge shrink-0\">\n {badge}\n </div>\n )}\n {toggle && (\n <div className=\"bnhtn-menu-item-toggle shrink-0\">\n {toggle}\n </div>\n )}\n {renderTrailingIcon()}\n {showAddButton && (\n <button\n className={iconButtonClasses}\n onClick={(e) => {\n e.stopPropagation();\n // Handle add button click\n }}\n disabled={disabled}\n >\n <Plus className=\"w-5 h-5\" />\n </button>\n )}\n </div>\n </div>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\n","import { ReactNode, HTMLAttributes, forwardRef, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { ChevronDown, ChevronUp, Info, Plus } from \"lucide-react\";\n\nexport type AccordionStyle = \"Default\" | \"Boxed\";\nexport type AccordionState = \"Default\" | \"Hover\" | \"NoHover\";\n\nexport interface AccordionProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"style\"> {\n /** The title/label of the accordion */\n label?: string;\n /** The description/content shown when expanded */\n description?: string;\n /** Whether to show the left icon */\n icon?: boolean;\n /** Custom icon to display on the left */\n iconLeft?: ReactNode;\n /** Whether to show a badge */\n badge?: boolean;\n /** Badge text content */\n badgeText?: string;\n /** Whether to show an action button */\n action?: boolean;\n /** Action button text */\n actionText?: string;\n /** Action button click handler */\n onActionClick?: () => void;\n /** The visual style variant */\n style?: AccordionStyle;\n /** The state (Default or Hover) - for controlled hover state */\n state?: AccordionState;\n /** Enable RTL (Right-to-Left) mode */\n rtl?: boolean;\n /** Whether the accordion is expandable */\n expandable?: boolean;\n /** Controlled expanded state */\n expanded?: boolean;\n /** Callback when accordion is toggled */\n onToggle?: (expanded: boolean) => void;\n /** RTL label text */\n rtlLabel?: string;\n /** RTL description text */\n rtlDescription?: string;\n}\n\n// Utility function to merge Tailwind classes\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n/**\n * Accordion component for collapsible content sections.\n * Supports Default and Boxed styles, expandable states, and RTL.\n * \n * Specifications:\n * - Padding: 20px\n * - Gap: 12px\n * - Border radius: 10px (Boxed style)\n * - Title: 17px, semibold, line-height 28px\n * - Description: 15px, regular, line-height 24px\n * - Icon size: 24px × 24px\n */\nexport const Accordion = forwardRef<HTMLButtonElement, AccordionProps>(\n (\n {\n label = \"Enter question title\",\n description = \"Ants are fascinating insects known for their complex social structures and teamwork. They communicate through pheromones and work together to build intricate nests. Ants play crucial roles in ecosystems, from soil aeration to seed dispersal.\",\n icon = true,\n iconLeft,\n badge = true,\n badgeText = \"Badge\",\n action = true,\n actionText = \"Button\",\n onActionClick,\n style = \"Default\",\n state = \"Default\",\n rtl = false,\n expandable = false,\n expanded: controlledExpanded,\n onToggle,\n rtlLabel,\n rtlDescription,\n className,\n ...props\n },\n ref\n ) => {\n const [internalExpanded, setInternalExpanded] = useState(false);\n const isExpanded = controlledExpanded !== undefined ? controlledExpanded : internalExpanded;\n const isRTL = rtl;\n \n const handleToggle = () => {\n if (expandable) {\n const newExpanded = !isExpanded;\n if (controlledExpanded === undefined) {\n setInternalExpanded(newExpanded);\n }\n onToggle?.(newExpanded);\n }\n };\n\n const displayLabel = isRTL && rtlLabel ? rtlLabel : label;\n const displayDescription = isRTL && rtlDescription ? rtlDescription : description;\n\n // Base classes\n const baseClasses = cn(\n \"flex items-start gap-3 p-5\",\n \"transition-all duration-150 ease-in-out\",\n expandable && state !== \"NoHover\" && \"cursor-pointer\",\n state === \"NoHover\" && \"cursor-default\",\n \"w-full\",\n // RTL support\n isRTL && \"font-sans-rtl\",\n // Style-specific classes\n style === \"Default\"\n ? cn(\n \"border-b border-neutral-200 dark:border-neutral-700\",\n // Always show hover background if state is Hover\n state === \"Hover\" && \"bg-neutral-50 dark:bg-neutral-800\",\n // Add hover effect for state=Default\n state === \"Default\" && expandable && \"hover:bg-neutral-50 dark:hover:bg-neutral-800\",\n // No hover effect for state=NoHover\n )\n : cn(\n \"border border-neutral-200 dark:border-neutral-700 rounded-xl\",\n \"shadow-component-default\",\n // Always show hover background if state is Hover\n state === \"Hover\" && \"bg-neutral-50 dark:bg-neutral-800\",\n // Add hover effect for state=Default\n state === \"Default\" && expandable && \"hover:bg-neutral-50 dark:hover:bg-neutral-800\",\n // No hover effect for state=NoHover\n // Inner shadow for Boxed style\n \"relative\"\n ),\n className\n );\n\n // Title classes\n const titleClasses = cn(\n \"flex flex-col justify-center\",\n \"font-semibold text-[17px] leading-[28px]\",\n \"text-neutral-900\",\n isRTL ? \"text-right\" : \"text-left\"\n );\n\n // Description classes\n const descriptionClasses = cn(\n \"text-[15px] leading-[24px]\",\n \"text-neutral-600\",\n isRTL ? \"text-right\" : \"text-left\"\n );\n\n // Badge classes\n const badgeClasses = cn(\n \"flex items-center justify-center\",\n \"h-7 px-3 py-0\",\n \"bg-neutral-50 rounded-full\",\n \"text-[12px] leading-[16px] font-medium\",\n \"text-neutral-900 whitespace-nowrap\"\n );\n\n // Default icon (Info icon)\n const defaultIcon = iconLeft || (icon ? <Info className=\"h-6 w-6 text-neutral-600 flex-shrink-0\" /> : null);\n\n // Dropdown icon - shows ChevronDown when collapsed, ChevronUp when expanded\n const DropdownIcon = isExpanded ? ChevronUp : ChevronDown;\n const dropdownIconClasses = cn(\n \"h-6 w-6 text-neutral-500 flex-shrink-0\"\n );\n\n const Component = expandable ? \"button\" : \"div\";\n const componentProps = expandable\n ? {\n ref: ref as any,\n type: \"button\" as const,\n onClick: handleToggle,\n ...props,\n }\n : {\n ...props,\n };\n\n return (\n <Component\n {...(componentProps as any)}\n dir={isRTL ? \"rtl\" : undefined}\n className={baseClasses}\n >\n {/* Left icon (or right in RTL) */}\n {defaultIcon && !isRTL && (\n <div className=\"flex-shrink-0\">{defaultIcon}</div>\n )}\n\n {/* Dropdown icon (left in RTL, right in LTR) */}\n {expandable && isRTL && (\n <div className=\"flex-shrink-0\">\n <DropdownIcon className={dropdownIconClasses} />\n </div>\n )}\n\n {/* Content */}\n <div className={cn(\n \"flex flex-col gap-1.5 flex-1 min-w-0\",\n isRTL ? \"items-end\" : \"items-start\"\n )}>\n {/* Title row */}\n <div className={cn(\n \"flex gap-1.5 items-start w-full\",\n isRTL ? \"flex-row-reverse\" : \"flex-row\"\n )}>\n {/* In RTL: Badge comes first (appears on right), then Title (appears on left) */}\n {/* In LTR: Title comes first (appears on left), then Badge (appears on right) */}\n {isRTL ? (\n <>\n {badge && (\n <div className={cn(badgeClasses, \"font-sans-rtl\")} dir=\"rtl\">\n {badgeText}\n </div>\n )}\n <div className={cn(titleClasses, \"flex-1\")} dir=\"rtl\">\n <p>{displayLabel}</p>\n </div>\n </>\n ) : (\n <>\n <div className={cn(titleClasses, \"flex-1\")}>\n <p>{displayLabel}</p>\n </div>\n {badge && (\n <div className={badgeClasses}>\n {badgeText}\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Description (shown when expanded) */}\n {isExpanded && displayDescription && (\n <div className=\"w-full\" dir={isRTL ? \"rtl\" : undefined}>\n <p className={descriptionClasses}>{displayDescription}</p>\n </div>\n )}\n\n {/* Action button (shown when expanded) */}\n {isExpanded && action && (\n <div className=\"pt-4 w-full flex\" style={{ justifyContent: isRTL ? 'flex-end' : 'flex-start' }}>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActionClick?.();\n }}\n className={cn(\n \"relative flex items-center justify-center gap-1\",\n \"h-10 px-2.5 py-2\",\n \"bg-neutral-50 border border-neutral-300 rounded-control\",\n \"shadow-component-default\",\n \"text-[15px] leading-[24px] font-medium text-neutral-900\",\n \"hover:bg-neutral-100 transition-colors\",\n \"cursor-pointer\"\n )}\n dir={isRTL ? \"rtl\" : undefined}\n >\n <Plus className=\"h-5 w-5 flex-shrink-0\" />\n <span className=\"px-1 whitespace-nowrap\">\n {isRTL ? \"انقر هنا\" : actionText}\n </span>\n <Plus className=\"h-5 w-5 flex-shrink-0\" />\n {/* Inner shadow */}\n <div className=\"absolute inset-0 pointer-events-none rounded-control shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\" />\n </button>\n </div>\n )}\n </div>\n\n {/* Dropdown icon (right in LTR) */}\n {expandable && !isRTL && (\n <div className=\"flex-shrink-0\">\n <DropdownIcon className={dropdownIconClasses} />\n </div>\n )}\n\n {/* Right icon (or left in RTL) */}\n {defaultIcon && isRTL && (\n <div className=\"flex-shrink-0\">{defaultIcon}</div>\n )}\n\n {/* Inner shadow for Boxed style */}\n {style === \"Boxed\" && (\n <div className=\"absolute inset-0 pointer-events-none rounded-xl shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\" />\n )}\n </Component>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n\n","import { forwardRef, ReactNode } from 'react';\nimport { ChevronRight, ChevronLeft, Home } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport type BreadcrumbSize = 'sm' | 'md' | 'lg';\nexport type BreadcrumbSeparator = 'chevron' | 'slash' | 'dot';\nexport type BreadcrumbVariant = 'default' | 'boxed';\n\nexport interface BreadcrumbItem {\n /** Label for the breadcrumb item */\n label: string;\n /** Optional href for navigation */\n href?: string;\n /** Optional icon */\n icon?: ReactNode;\n /** Whether this is the current page (last item) */\n isCurrent?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {\n /** Array of breadcrumb items */\n items: BreadcrumbItem[];\n /** Size variant */\n size?: BreadcrumbSize;\n /** Visual variant */\n variant?: BreadcrumbVariant;\n /** Separator style */\n separator?: BreadcrumbSeparator;\n /** Show home icon for first item */\n showHomeIcon?: boolean;\n /** Maximum items to show before collapsing */\n maxItems?: number;\n /** Show border around breadcrumbs */\n bordered?: boolean;\n /** RTL mode */\n rtl?: boolean;\n}\n\nconst sizeConfig = {\n sm: {\n text: 'text-xs',\n icon: 'w-3 h-3',\n separator: 'w-3 h-3',\n gap: 'gap-1',\n },\n md: {\n text: 'text-sm',\n icon: 'w-4 h-4',\n separator: 'w-4 h-4',\n gap: 'gap-1.5',\n },\n lg: {\n text: 'text-base',\n icon: 'w-5 h-5',\n separator: 'w-5 h-5',\n gap: 'gap-2',\n },\n};\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n items,\n size = 'md',\n variant = 'default',\n separator = 'chevron',\n showHomeIcon = false,\n maxItems,\n bordered = false,\n rtl = false,\n className,\n ...props\n },\n ref\n ) => {\n const config = sizeConfig[size];\n\n // Handle collapsing items\n const shouldCollapse = maxItems && items.length > maxItems;\n let displayItems = items;\n \n if (shouldCollapse) {\n const firstItem = items[0];\n const lastItems = items.slice(-(maxItems - 1));\n displayItems = [firstItem, { label: '...', isCurrent: false }, ...lastItems];\n }\n\n // Render separator\n const renderSeparator = () => {\n const separatorClasses = cn(\n 'text-neutral-400 dark:text-neutral-600',\n config.separator\n );\n\n switch (separator) {\n case 'slash':\n return <span className={cn('text-neutral-400 dark:text-neutral-600', config.text)}>/</span>;\n case 'dot':\n return <span className={cn('text-neutral-400 dark:text-neutral-600', config.text)}>•</span>;\n case 'chevron':\n default:\n // Use ChevronLeft for RTL, ChevronRight for LTR\n const ChevronIcon = rtl ? ChevronLeft : ChevronRight;\n return <ChevronIcon className={separatorClasses} />;\n }\n };\n\n // Render breadcrumb item\n const renderItem = (item: BreadcrumbItem, index: number) => {\n const isLast = index === displayItems.length - 1;\n const isFirst = index === 0;\n const isCollapsed = item.label === '...';\n\n const itemClasses = cn(\n 'inline-flex items-center',\n config.gap,\n config.text,\n 'font-medium transition-colors',\n // Boxed variant styling\n variant === 'boxed' && [\n 'px-3 py-1.5 rounded-md',\n item.isCurrent || isLast\n ? 'bg-primary-600 text-white dark:bg-primary-500 cursor-default'\n : 'bg-neutral-100 dark:bg-neutral-800 text-neutral-700 dark:text-neutral-300 hover:bg-neutral-200 dark:hover:bg-neutral-700 cursor-pointer'\n ],\n // Default variant styling\n variant === 'default' && [\n item.isCurrent || isLast\n ? 'text-neutral-900 dark:text-white cursor-default'\n : 'text-neutral-600 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-white cursor-pointer'\n ],\n isCollapsed && 'cursor-default'\n );\n\n const content = (\n <>\n {isFirst && showHomeIcon && (\n <Home className={config.icon} />\n )}\n {item.icon && !showHomeIcon && (\n <span className={cn('inline-flex', config.icon)}>\n {item.icon}\n </span>\n )}\n <span>{item.label}</span>\n </>\n );\n\n if (isCollapsed) {\n return (\n <span key={index} className={itemClasses}>\n {content}\n </span>\n );\n }\n\n if (item.href && !item.isCurrent && !isLast) {\n return (\n <a\n key={index}\n href={item.href}\n className={itemClasses}\n onClick={(e) => {\n if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n }}\n >\n {content}\n </a>\n );\n }\n\n if (item.onClick && !item.isCurrent && !isLast) {\n return (\n <button\n key={index}\n type=\"button\"\n onClick={item.onClick}\n className={itemClasses}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span key={index} className={itemClasses}>\n {content}\n </span>\n );\n };\n\n const containerClasses = cn(\n 'inline-flex items-center flex-wrap',\n config.gap,\n rtl && 'font-sans-rtl',\n bordered && 'border border-neutral-200 dark:border-neutral-700 rounded-lg px-4 py-2',\n className\n );\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={containerClasses}\n dir={rtl ? 'rtl' : undefined}\n {...props}\n >\n <ol className={cn('inline-flex items-center flex-wrap', config.gap)}>\n {displayItems.map((item, index) => (\n <li key={index} className={cn('inline-flex items-center', config.gap)}>\n {/* In RTL, show separator before the item (except for first item) */}\n {rtl && index > 0 && (\n <span className=\"inline-flex items-center\">\n {renderSeparator()}\n </span>\n )}\n {renderItem(item, index)}\n {/* In LTR, show separator after the item (except for last item) */}\n {!rtl && index < displayItems.length - 1 && (\n <span className=\"inline-flex items-center\">\n {renderSeparator()}\n </span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n );\n }\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\n","import { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Check, Copy } from \"lucide-react\";\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n className?: string;\n}\n\nfunction cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const CodeBlock = ({ code, language = \"tsx\", className }: CodeBlockProps) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n // Simple syntax highlighting for JSX/TSX\n const highlightCode = (code: string) => {\n let highlighted = code;\n\n // HTML entities\n highlighted = highlighted\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n\n // Strings (single and double quotes)\n highlighted = highlighted.replace(\n /(&quot;[^&]*&quot;|'[^']*'|\"[^\"]*\")/g,\n '<span class=\"token string\">$1</span>'\n );\n\n // Template literals\n highlighted = highlighted.replace(\n /(`[^`]*`)/g,\n '<span class=\"token template\">$1</span>'\n );\n\n // Comments\n highlighted = highlighted.replace(\n /(\\/\\/.*$)/gm,\n '<span class=\"token comment\">$1</span>'\n );\n highlighted = highlighted.replace(\n /(\\/\\*[\\s\\S]*?\\*\\/)/g,\n '<span class=\"token comment\">$1</span>'\n );\n\n // Keywords\n const keywords = [\n \"import\",\n \"export\",\n \"from\",\n \"const\",\n \"let\",\n \"var\",\n \"function\",\n \"return\",\n \"if\",\n \"else\",\n \"for\",\n \"while\",\n \"class\",\n \"extends\",\n \"new\",\n \"this\",\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"typeof\",\n \"instanceof\",\n \"async\",\n \"await\",\n ];\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b(${keyword})\\\\b`, \"g\");\n highlighted = highlighted.replace(\n regex,\n '<span class=\"token keyword\">$1</span>'\n );\n });\n\n // JSX tags\n highlighted = highlighted.replace(\n /(&lt;\\/?)([\\w]+)/g,\n '$1<span class=\"token tag\">$2</span>'\n );\n\n // Props/attributes\n highlighted = highlighted.replace(\n /\\s([\\w-]+)=/g,\n ' <span class=\"token attr\">$1</span>='\n );\n\n // Numbers\n highlighted = highlighted.replace(\n /\\b(\\d+)\\b/g,\n '<span class=\"token number\">$1</span>'\n );\n\n // Curly braces in JSX\n highlighted = highlighted.replace(\n /(\\{|\\})/g,\n '<span class=\"token punctuation\">$1</span>'\n );\n\n return highlighted;\n };\n\n return (\n <div className={cn(\"rounded-lg overflow-hidden border border-neutral-800\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 bg-docs-code-bg border-b border-neutral-700\">\n <span className=\"text-xs font-medium text-neutral-400 uppercase tracking-wider\">\n {language}\n </span>\n <button\n className={cn(\n \"inline-flex items-center gap-1.5 px-2.5 py-1\",\n \"text-xs font-medium rounded\",\n \"bg-neutral-800 border border-neutral-700\",\n \"text-neutral-400 hover:text-white\",\n \"hover:bg-neutral-700 hover:border-neutral-600\",\n \"transition-colors duration-150\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\"\n )}\n onClick={handleCopy}\n aria-label=\"Copy code\"\n >\n {copied ? (\n <>\n <Check className=\"h-3.5 w-3.5\" />\n <span>Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"h-3.5 w-3.5\" />\n <span>Copy</span>\n </>\n )}\n </button>\n </div>\n \n {/* Code Content */}\n <pre className=\"m-0 p-4 bg-docs-code-bg overflow-x-auto\">\n <code\n className=\"font-mono text-[13px] leading-relaxed text-docs-code-text\"\n dangerouslySetInnerHTML={{ __html: highlightCode(code) }}\n />\n </pre>\n </div>\n );\n};\n"],"names":["r","t","f","n","o","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","variantStyles","sizeStyles","iconOnlySizeStyles","shapeStyles","linkSizeStyles","Button","forwardRef","variant","size","shape","loading","disabled","fullWidth","iconLeft","iconRight","startIcon","endIcon","icon","showChevron","underline","rtl","children","props","ref","isIconOnly","isLink","startIconNode","endIconNode","ChevronIcon","ChevronLeft","ChevronRight","finalStartIcon","finalEndIcon","jsx","buttonClasses","jsxs","Loader2","Fragment","platformLabels","platformLabelsRTL","platformColors","getPlatformIcon","platform","FaFacebook","FaLinkedin","FaApple","FaWhatsapp","FaGoogle","FaXTwitter","SocialButton","type","style","isRTL","isOutlined","colors","baseClasses","styleClasses","iconClasses","renderIcon","ButtonGroup","items","iconOnly","shapeConfig","variantConfig","containerClasses","buttonItemClasses","item","isFirst","isLast","Checkbox","supportText","rtlLabel","rtlSupportText","checkLocation","indeterminate","error","checked","displayLabel","displaySupportText","hasSupportText","checkboxBoxClasses","labelWrapperClasses","labelClasses","supportTextClasses","Check","Minus","CheckboxCard","description","checkboxPosition","cardClasses","descriptionClasses","Radio","radioLocation","radioBoxClasses","radioDotClasses","RadioCard","rtlDescription","leadingIcon","displayDescription","hasDescription","contentWrapperClasses","textWrapperClasses","supportTextClassesStyle","Slider","min","max","step","defaultValue","showValue","showMinMax","helperText","rtlHelperText","formatValue","val","onChange","internalValue","setInternalValue","useState","isDragging","setIsDragging","sliderRef","useRef","currentValue","percentage","displayHelperText","useEffect","handleChange","e","newValue","trackClasses","fillClasses","thumbClasses","helperTextClasses","valueLabelClasses","minMaxLabelClasses","Toggle","labelPosition","showIcon","iconOn","iconOff","onCheckedChange","TabsContext","createContext","useTabsContext","context","useContext","Tabs","controlledValue","activeTab","handleTabChange","TabsList","listClasses","Tab","badge","onClick","setActiveTab","isActive","handleClick","tabClasses","TabsContent","Input","hintText","rtlHintText","rtlError","success","rtlSuccess","trailingIcon","suffix","actionButton","onActionClick","shortcut","optional","required","clearable","onClear","inputSize","containerClassName","displayHintText","displayError","displaySuccess","hasError","hasSuccess","inputWrapperClasses","inputClasses","leadingClasses","trailingClasses","actionButtonClasses","messageClasses","X","NumberInput","showSpinner","handleIncrement","handleDecrement","Plus","CheckmarkCard","selected","Icon","customIcon","hasIcon","handleKeyDown","checkboxClasses","contentClasses","textClasses","iconWrapperClasses","renderCheckbox","Switcher","styleVariants","dotColorClasses","iconSizes","dotSizes","Badge","color","showNumber","number","flagIcon","imgSrc","imgAlt","iconSize","renderDot","renderFlag","renderLeadingImg","displayContent","num","statusConfig","AlertCircle","CheckCircle","AlertTriangle","Info","Circle","Alert","status","title","message","showActions","primaryAction","secondaryAction","onPrimaryAction","onSecondaryAction","closable","onClose","rtlTitle","rtlMessage","rtlPrimaryAction","rtlSecondaryAction","isExpandable","displayTitle","displayMessage","displayPrimaryAction","displaySecondaryAction","titleClasses","actionClasses","closeClasses","sizeConfig","statusColors","Avatar","src","alt","initials","showBorder","hasImage","hasInitials","shouldShowIcon","imageWrapperClasses","statusClasses","User","AvatarCallToAction","sizeOverlapConfig","sizeTextConfig","AvatarGroup","avatars","displayAvatars","remainingCount","overlapClass","textClass","avatar","AvatarProfile","name","textContainerClasses","nameClasses","Divider","direction","spacing","spacingClasses","colorStyles","ProgressBar","labelType","helperDanger","showInlineIndicator","indicatorType","clampedValue","indicatorIcon","helperTextColor","iconSizeMap","generatePageNumbers","currentPage","totalPages","siblingCount","totalBlocks","_","leftSiblingIndex","rightSiblingIndex","shouldShowLeftEllipsis","shouldShowRightEllipsis","leftItemCount","rightItemCount","Pagination","onPageChange","showFirstLast","showPrevNext","handlePageChange","page","pageNumbers","canGoPrevious","canGoNext","ChevronsLeft","pageNum","MoreHorizontal","ChevronsRight","Menu","MenuItem","supportingText","rtlSupportingText","avatarSize","toggle","trailingText","rtlTrailingText","showAddButton","displaySupportingText","displayTrailingText","avatarSizeClasses","leadingSectionClasses","supportingTextClasses","trailingSectionClasses","trailingTextClasses","iconButtonClasses","renderTrailingIcon","Accordion","badgeText","action","actionText","state","expandable","controlledExpanded","onToggle","internalExpanded","setInternalExpanded","isExpanded","handleToggle","newExpanded","badgeClasses","defaultIcon","DropdownIcon","ChevronUp","ChevronDown","dropdownIconClasses","Component","componentProps","Breadcrumbs","separator","showHomeIcon","maxItems","bordered","shouldCollapse","displayItems","firstItem","lastItems","renderSeparator","separatorClasses","renderItem","isCollapsed","itemClasses","Home","CodeBlock","code","language","copied","setCopied","handleCopy","err","highlightCode","highlighted","keyword","regex","Copy"],"mappings":";;;;AAAA,SAASA,GAAE,GAAE;AAAC,MAAIC,GAAEC,GAAEC,IAAE;AAAG,MAAa,OAAO,KAAjB,YAA8B,OAAO,KAAjB,SAAmB,CAAAA,KAAG;AAAA,WAAoB,OAAO,KAAjB,SAAmB,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAIC,IAAE,EAAE;AAAO,SAAIH,IAAE,GAAEA,IAAEG,GAAEH,IAAI,GAAEA,CAAC,MAAIC,IAAEF,GAAE,EAAEC,CAAC,CAAC,OAAKE,MAAIA,KAAG,MAAKA,KAAGD;AAAA,EAAE,MAAM,MAAIA,KAAK,EAAE,GAAEA,CAAC,MAAIC,MAAIA,KAAG,MAAKA,KAAGD;AAAG,SAAOC;AAAC;AAAQ,SAASE,KAAM;AAAC,WAAQ,GAAEJ,GAAEC,IAAE,GAAEC,IAAE,IAAGC,IAAE,UAAU,QAAOF,IAAEE,GAAEF,IAAI,EAAC,IAAE,UAAUA,CAAC,OAAKD,IAAED,GAAE,CAAC,OAAKG,MAAIA,KAAG,MAAKA,KAAGF;AAAG,SAAOE;AAAC;ACG/W,MAAMG,KAAe,CAACC,GAAQC,MAAW;AAEvC,QAAMC,IAAgB,IAAI,MAAMF,EAAO,SAASC,EAAO,MAAM;AAC7D,WAASE,IAAI,GAAGA,IAAIH,EAAO,QAAQG;AACjC,IAAAD,EAAcC,CAAC,IAAIH,EAAOG,CAAC;AAE7B,WAASA,IAAI,GAAGA,IAAIF,EAAO,QAAQE;AACjC,IAAAD,EAAcF,EAAO,SAASG,CAAC,IAAIF,EAAOE,CAAC;AAE7C,SAAOD;AACT,GAGME,KAA6B,CAACC,GAAcC,OAAe;AAAA,EAC/D,cAAAD;AAAA,EACA,WAAAC;AACF,IAEMC,KAAwB,CAACC,IAAW,oBAAI,IAAG,GAAIC,IAAa,MAAMJ,OAAkB;AAAA,EACxF,UAAAG;AAAA,EACA,YAAAC;AAAA,EACA,cAAAJ;AACF,IACMK,KAAuB,KACvBC,KAAkB,CAAA,GAElBC,KAA4B,eAC5BC,KAAwB,CAAAC,MAAU;AACtC,QAAMC,IAAWC,GAAeF,CAAM,GAChC;AAAA,IACJ,wBAAAG;AAAA,IACA,gCAAAC;AAAA,EACJ,IAAMJ;AA2BJ,SAAO;AAAA,IACL,iBA3BsB,CAAAK,MAAa;AACnC,UAAIA,EAAU,WAAW,GAAG,KAAKA,EAAU,SAAS,GAAG;AACrD,eAAOC,GAA+BD,CAAS;AAEjD,YAAME,IAAaF,EAAU,MAAMT,EAAoB,GAEjDY,IAAaD,EAAW,CAAC,MAAM,MAAMA,EAAW,SAAS,IAAI,IAAI;AACvE,aAAOE,GAAkBF,GAAYC,GAAYP,CAAQ;AAAA,IAC3D;AAAA,IAoBE,6BAnBkC,CAACV,GAAcmB,MAAuB;AACxE,UAAIA,GAAoB;AACtB,cAAMC,IAAoBP,EAA+Bb,CAAY,GAC/DqB,IAAgBT,EAAuBZ,CAAY;AACzD,eAAIoB,IACEC,IAEK3B,GAAa2B,GAAeD,CAAiB,IAG/CA,IAGFC,KAAiBf;AAAA,MAC1B;AACA,aAAOM,EAAuBZ,CAAY,KAAKM;AAAA,IACjD;AAAA,EAIF;AACA,GACMY,KAAoB,CAACF,GAAYC,GAAYK,MAAoB;AAErE,MADyBN,EAAW,SAASC,MACpB;AACvB,WAAOK,EAAgB;AAEzB,QAAMC,IAAmBP,EAAWC,CAAU,GACxCO,IAAsBF,EAAgB,SAAS,IAAIC,CAAgB;AACzE,MAAIC,GAAqB;AACvB,UAAMC,IAASP,GAAkBF,GAAYC,IAAa,GAAGO,CAAmB;AAChF,QAAIC,EAAQ,QAAOA;AAAA,EACrB;AACA,QAAMrB,IAAakB,EAAgB;AACnC,MAAIlB,MAAe;AACjB;AAGF,QAAMsB,IAAYT,MAAe,IAAID,EAAW,KAAKX,EAAoB,IAAIW,EAAW,MAAMC,CAAU,EAAE,KAAKZ,EAAoB,GAC7HsB,IAAmBvB,EAAW;AACpC,WAASN,IAAI,GAAGA,IAAI6B,GAAkB7B,KAAK;AACzC,UAAM8B,IAAexB,EAAWN,CAAC;AACjC,QAAI8B,EAAa,UAAUF,CAAS;AAClC,aAAOE,EAAa;AAAA,EAExB;AAEF,GAMMb,KAAiC,CAAAD,MAAaA,EAAU,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM,KAAK,UAAa,MAAM;AAClH,QAAMe,IAAUf,EAAU,MAAM,GAAG,EAAE,GAC/BgB,IAAaD,EAAQ,QAAQ,GAAG,GAChCE,IAAWF,EAAQ,MAAM,GAAGC,CAAU;AAC5C,SAAOC,IAAWxB,KAA4BwB,IAAW;AAC3D,GAAC,GAIKpB,KAAiB,CAAAF,MAAU;AAC/B,QAAM;AAAA,IACJ,OAAAuB;AAAA,IACA,aAAAC;AAAA,EACJ,IAAMxB;AACJ,SAAOyB,GAAmBD,GAAaD,CAAK;AAC9C,GAEME,KAAqB,CAACD,GAAaD,MAAU;AACjD,QAAMtB,IAAWR,GAAqB;AACtC,aAAWF,KAAgBiC,GAAa;AACtC,UAAME,IAAQF,EAAYjC,CAAY;AACtC,IAAAoC,GAA0BD,GAAOzB,GAAUV,GAAcgC,CAAK;AAAA,EAChE;AACA,SAAOtB;AACT,GACM0B,KAA4B,CAACC,GAAYf,GAAiBtB,GAAcgC,MAAU;AACtF,QAAMM,IAAMD,EAAW;AACvB,WAASvC,IAAI,GAAGA,IAAIwC,GAAKxC,KAAK;AAC5B,UAAMyC,IAAkBF,EAAWvC,CAAC;AACpC,IAAA0C,GAAuBD,GAAiBjB,GAAiBtB,GAAcgC,CAAK;AAAA,EAC9E;AACF,GAEMQ,KAAyB,CAACD,GAAiBjB,GAAiBtB,GAAcgC,MAAU;AACxF,MAAI,OAAOO,KAAoB,UAAU;AACvC,IAAAE,GAAwBF,GAAiBjB,GAAiBtB,CAAY;AACtE;AAAA,EACF;AACA,MAAI,OAAOuC,KAAoB,YAAY;AACzC,IAAAG,GAA0BH,GAAiBjB,GAAiBtB,GAAcgC,CAAK;AAC/E;AAAA,EACF;AACA,EAAAW,GAAwBJ,GAAiBjB,GAAiBtB,GAAcgC,CAAK;AAC/E,GACMS,KAA0B,CAACF,GAAiBjB,GAAiBtB,MAAiB;AAClF,QAAM4C,IAAwBL,MAAoB,KAAKjB,IAAkBuB,GAAQvB,GAAiBiB,CAAe;AACjH,EAAAK,EAAsB,eAAe5C;AACvC,GACM0C,KAA4B,CAACH,GAAiBjB,GAAiBtB,GAAcgC,MAAU;AAC3F,MAAIc,GAAcP,CAAe,GAAG;AAClC,IAAAH,GAA0BG,EAAgBP,CAAK,GAAGV,GAAiBtB,GAAcgC,CAAK;AACtF;AAAA,EACF;AACA,EAAIV,EAAgB,eAAe,SACjCA,EAAgB,aAAa,CAAA,IAE/BA,EAAgB,WAAW,KAAKvB,GAA2BC,GAAcuC,CAAe,CAAC;AAC3F,GACMI,KAA0B,CAACJ,GAAiBjB,GAAiBtB,GAAcgC,MAAU;AACzF,QAAMe,IAAU,OAAO,QAAQR,CAAe,GACxCD,IAAMS,EAAQ;AACpB,WAAS,IAAI,GAAG,IAAIT,GAAK,KAAK;AAC5B,UAAM,CAACU,GAAKC,CAAK,IAAIF,EAAQ,CAAC;AAC9B,IAAAX,GAA0Ba,GAAOJ,GAAQvB,GAAiB0B,CAAG,GAAGhD,GAAcgC,CAAK;AAAA,EACrF;AACF,GACMa,KAAU,CAACvB,GAAiB4B,MAAS;AACzC,MAAIC,IAAU7B;AACd,QAAM8B,IAAQF,EAAK,MAAM7C,EAAoB,GACvCiC,IAAMc,EAAM;AAClB,WAAStD,IAAI,GAAGA,IAAIwC,GAAKxC,KAAK;AAC5B,UAAMuD,IAAOD,EAAMtD,CAAC;AACpB,QAAIwD,IAAOH,EAAQ,SAAS,IAAIE,CAAI;AACpC,IAAKC,MACHA,IAAOpD,GAAqB,GAC5BiD,EAAQ,SAAS,IAAIE,GAAMC,CAAI,IAEjCH,IAAUG;AAAA,EACZ;AACA,SAAOH;AACT,GAEML,KAAgB,CAAAS,MAAQ,mBAAmBA,KAAQA,EAAK,kBAAkB,IAG1EC,KAAiB,CAAAC,MAAgB;AACrC,MAAIA,IAAe;AACjB,WAAO;AAAA,MACL,KAAK,MAAA;AAAA;AAAA,MACL,KAAK,MAAM;AAAA,MAAC;AAAA,IAClB;AAEE,MAAIC,IAAY,GACZC,IAAQ,uBAAO,OAAO,IAAI,GAC1BC,IAAgB,uBAAO,OAAO,IAAI;AACtC,QAAMC,IAAS,CAACb,GAAKC,MAAU;AAC7B,IAAAU,EAAMX,CAAG,IAAIC,GACbS,KACIA,IAAYD,MACdC,IAAY,GACZE,IAAgBD,GAChBA,IAAQ,uBAAO,OAAO,IAAI;AAAA,EAE9B;AACA,SAAO;AAAA,IACL,IAAIX,GAAK;AACP,UAAIC,IAAQU,EAAMX,CAAG;AACrB,UAAIC,MAAU;AACZ,eAAOA;AAET,WAAKA,IAAQW,EAAcZ,CAAG,OAAO;AACnC,eAAAa,EAAOb,GAAKC,CAAK,GACVA;AAAA,IAEX;AAAA,IACA,IAAID,GAAKC,GAAO;AACd,MAAID,KAAOW,IACTA,EAAMX,CAAG,IAAIC,IAEbY,EAAOb,GAAKC,CAAK;AAAA,IAErB;AAAA,EACJ;AACA,GACMa,KAAqB,KACrBC,KAAqB,KACrBC,KAAkB,CAAA,GAElBC,KAAqB,CAACC,GAAWC,GAAsBC,GAAeC,GAA8BC,OAAgB;AAAA,EACxH,WAAAJ;AAAA,EACA,sBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,YAAAC;AACF,IACMC,KAAuB,CAAA9D,MAAU;AACrC,QAAM;AAAA,IACJ,QAAA+D;AAAA,IACA,4BAAAC;AAAA,EACJ,IAAMhE;AAOJ,MAAIiE,IAAiB,CAAA5D,MAAa;AAEhC,UAAMoD,IAAY,CAAA;AAClB,QAAIS,IAAe,GACfC,IAAa,GACbC,IAAgB,GAChBC;AACJ,UAAMxC,IAAMxB,EAAU;AACtB,aAASiE,IAAQ,GAAGA,IAAQzC,GAAKyC,KAAS;AACxC,YAAMC,IAAmBlE,EAAUiE,CAAK;AACxC,UAAIJ,MAAiB,KAAKC,MAAe,GAAG;AAC1C,YAAII,MAAqBjB,IAAoB;AAC3C,UAAAG,EAAU,KAAKpD,EAAU,MAAM+D,GAAeE,CAAK,CAAC,GACpDF,IAAgBE,IAAQ;AACxB;AAAA,QACF;AACA,YAAIC,MAAqB,KAAK;AAC5B,UAAAF,IAA0BC;AAC1B;AAAA,QACF;AAAA,MACF;AACA,MAAIC,MAAqB,MAAKL,MAAwBK,MAAqB,MAAKL,MAAwBK,MAAqB,MAAKJ,MAAsBI,MAAqB,OAAKJ;AAAA,IACpL;AACA,UAAMK,IAAqCf,EAAU,WAAW,IAAIpD,IAAYA,EAAU,MAAM+D,CAAa;AAE7G,QAAIT,IAAgBa,GAChBd,IAAuB;AAC3B,IAAIc,EAAmC,SAASnB,EAAkB,KAChEM,IAAgBa,EAAmC,MAAM,GAAG,EAAE,GAC9Dd,IAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMzBc,EAAmC,WAAWnB,EAAkB,MAC9DM,IAAgBa,EAAmC,MAAM,CAAC,GAC1Dd,IAAuB;AAAA;AAEzB,UAAME,IAA+BS,KAA2BA,IAA0BD,IAAgBC,IAA0BD,IAAgB;AACpJ,WAAOZ,GAAmBC,GAAWC,GAAsBC,GAAeC,CAA4B;AAAA,EACxG;AACA,MAAIG,GAAQ;AACV,UAAMU,IAAaV,IAAST,IACtBoB,IAAyBT;AAC/B,IAAAA,IAAiB,CAAA5D,MAAaA,EAAU,WAAWoE,CAAU,IAAIC,EAAuBrE,EAAU,MAAMoE,EAAW,MAAM,CAAC,IAAIjB,GAAmBD,IAAiB,IAAOlD,GAAW,QAAW,EAAI;AAAA,EACrM;AACA,MAAI2D,GAA4B;AAC9B,UAAMU,IAAyBT;AAC/B,IAAAA,IAAiB,CAAA5D,MAAa2D,EAA2B;AAAA,MACvD,WAAA3D;AAAA,MACA,gBAAgBqE;AAAA,IACtB,CAAK;AAAA,EACH;AACA,SAAOT;AACT,GAOMU,KAAsB,CAAA3E,MAAU;AAEpC,QAAM4E,IAAkB,oBAAI,IAAG;AAE/B,SAAA5E,EAAO,wBAAwB,QAAQ,CAAC6E,GAAKP,MAAU;AACrD,IAAAM,EAAgB,IAAIC,GAAK,MAAUP,CAAK;AAAA,EAC1C,CAAC,GACM,CAAAb,MAAa;AAClB,UAAMzC,IAAS,CAAA;AACf,QAAI8D,IAAiB,CAAA;AAErB,aAASzF,IAAI,GAAGA,IAAIoE,EAAU,QAAQpE,KAAK;AACzC,YAAM0F,IAAWtB,EAAUpE,CAAC,GAEtB2F,IAAcD,EAAS,CAAC,MAAM,KAC9BE,IAAmBL,EAAgB,IAAIG,CAAQ;AACrD,MAAIC,KAAeC,KAEbH,EAAe,SAAS,MAC1BA,EAAe,KAAI,GACnB9D,EAAO,KAAK,GAAG8D,CAAc,GAC7BA,IAAiB,CAAA,IAEnB9D,EAAO,KAAK+D,CAAQ,KAGpBD,EAAe,KAAKC,CAAQ;AAAA,IAEhC;AAEA,WAAID,EAAe,SAAS,MAC1BA,EAAe,KAAI,GACnB9D,EAAO,KAAK,GAAG8D,CAAc,IAExB9D;AAAA,EACT;AACF,GACMkE,KAAoB,CAAAlF,OAAW;AAAA,EACnC,OAAO+C,GAAe/C,EAAO,SAAS;AAAA,EACtC,gBAAgB8D,GAAqB9D,CAAM;AAAA,EAC3C,eAAe2E,GAAoB3E,CAAM;AAAA,EACzC,GAAGD,GAAsBC,CAAM;AACjC,IACMmF,KAAsB,OACtBC,KAAiB,CAACC,GAAWC,MAAgB;AACjD,QAAM;AAAA,IACJ,gBAAArB;AAAA,IACA,iBAAAsB;AAAA,IACA,6BAAAC;AAAA,IACA,eAAAC;AAAA,EACJ,IAAMH,GAQEI,IAAwB,CAAA,GACxBC,IAAaN,EAAU,KAAI,EAAG,MAAMF,EAAmB;AAC7D,MAAInE,IAAS;AACb,WAASsD,IAAQqB,EAAW,SAAS,GAAGrB,KAAS,GAAGA,KAAS,GAAG;AAC9D,UAAMsB,IAAoBD,EAAWrB,CAAK,GACpC;AAAA,MACJ,YAAAT;AAAA,MACA,WAAAJ;AAAA,MACA,sBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,8BAAAC;AAAA,IACN,IAAQK,EAAe2B,CAAiB;AACpC,QAAI/B,GAAY;AACd,MAAA7C,IAAS4E,KAAqB5E,EAAO,SAAS,IAAI,MAAMA,IAASA;AACjE;AAAA,IACF;AACA,QAAIN,IAAqB,CAAC,CAACkD,GACvBrE,IAAegG,EAAgB7E,IAAqBiD,EAAc,UAAU,GAAGC,CAA4B,IAAID,CAAa;AAChI,QAAI,CAACpE,GAAc;AACjB,UAAI,CAACmB,GAAoB;AAEvB,QAAAM,IAAS4E,KAAqB5E,EAAO,SAAS,IAAI,MAAMA,IAASA;AACjE;AAAA,MACF;AAEA,UADAzB,IAAegG,EAAgB5B,CAAa,GACxC,CAACpE,GAAc;AAEjB,QAAAyB,IAAS4E,KAAqB5E,EAAO,SAAS,IAAI,MAAMA,IAASA;AACjE;AAAA,MACF;AACA,MAAAN,IAAqB;AAAA,IACvB;AAEA,UAAMmF,IAAkBpC,EAAU,WAAW,IAAI,KAAKA,EAAU,WAAW,IAAIA,EAAU,CAAC,IAAIgC,EAAchC,CAAS,EAAE,KAAK,GAAG,GACzHqC,IAAapC,IAAuBmC,IAAkBxC,KAAqBwC,GAC3EE,IAAUD,IAAavG;AAC7B,QAAImG,EAAsB,QAAQK,CAAO,IAAI;AAE3C;AAEF,IAAAL,EAAsB,KAAKK,CAAO;AAClC,UAAMC,IAAiBR,EAA4BjG,GAAcmB,CAAkB;AACnF,aAASrB,IAAI,GAAGA,IAAI2G,EAAe,QAAQ,EAAE3G,GAAG;AAC9C,YAAMqC,IAAQsE,EAAe3G,CAAC;AAC9B,MAAAqG,EAAsB,KAAKI,IAAapE,CAAK;AAAA,IAC/C;AAEA,IAAAV,IAAS4E,KAAqB5E,EAAO,SAAS,IAAI,MAAMA,IAASA;AAAA,EACnE;AACA,SAAOA;AACT,GAWMiF,KAAS,IAAIC,MAAe;AAChC,MAAI5B,IAAQ,GACR6B,GACAC,GACAC,IAAS;AACb,SAAO/B,IAAQ4B,EAAW;AACxB,KAAIC,IAAWD,EAAW5B,GAAO,OAC3B8B,IAAgBE,GAAQH,CAAQ,OAClCE,MAAWA,KAAU,MACrBA,KAAUD;AAIhB,SAAOC;AACT,GACMC,KAAU,CAAAC,MAAO;AAErB,MAAI,OAAOA,KAAQ;AACjB,WAAOA;AAET,MAAIH,GACAC,IAAS;AACb,WAASG,IAAI,GAAGA,IAAID,EAAI,QAAQC;AAC9B,IAAID,EAAIC,CAAC,MACHJ,IAAgBE,GAAQC,EAAIC,CAAC,CAAC,OAChCH,MAAWA,KAAU,MACrBA,KAAUD;AAIhB,SAAOC;AACT,GACMI,KAAsB,CAACC,MAAsBC,MAAqB;AACtE,MAAIrB,GACAsB,GACAC,GACAC;AACJ,QAAMC,IAAoB,CAAA1B,MAAa;AACrC,UAAMrF,IAAS2G,EAAiB,OAAO,CAACK,GAAgBC,MAAwBA,EAAoBD,CAAc,GAAGN,GAAmB;AACxI,WAAApB,IAAcJ,GAAkBlF,CAAM,GACtC4G,IAAWtB,EAAY,MAAM,KAC7BuB,IAAWvB,EAAY,MAAM,KAC7BwB,IAAiBI,GACVA,EAAc7B,CAAS;AAAA,EAChC,GACM6B,IAAgB,CAAA7B,MAAa;AACjC,UAAM8B,IAAeP,EAASvB,CAAS;AACvC,QAAI8B;AACF,aAAOA;AAET,UAAMnG,IAASoE,GAAeC,GAAWC,CAAW;AACpD,WAAAuB,EAASxB,GAAWrE,CAAM,GACnBA;AAAA,EACT;AACA,SAAA8F,IAAiBC,GACV,IAAIK,MAASN,EAAeb,GAAO,GAAGmB,CAAI,CAAC;AACpD,GACMC,KAAmB,CAAA,GACnBC,IAAY,CAAA/E,MAAO;AACvB,QAAMgF,IAAc,CAAAhG,MAASA,EAAMgB,CAAG,KAAK8E;AAC3C,SAAAE,EAAY,gBAAgB,IACrBA;AACT,GACMC,KAAsB,+BACtBC,KAAyB,+BACzBC,KAAgB,cAChBC,KAAkB,oCAClBC,KAAkB,6HAClBC,KAAqB,sDAErBC,KAAc,mEACdC,KAAa,gGACbC,KAAa,CAAAxF,MAASkF,GAAc,KAAKlF,CAAK,GAC9CyF,IAAW,CAAAzF,MAAS,CAAC,CAACA,KAAS,CAAC,OAAO,MAAM,OAAOA,CAAK,CAAC,GAC1D0F,KAAY,CAAA1F,MAAS,CAAC,CAACA,KAAS,OAAO,UAAU,OAAOA,CAAK,CAAC,GAC9D2F,KAAY,CAAA3F,MAASA,EAAM,SAAS,GAAG,KAAKyF,EAASzF,EAAM,MAAM,GAAG,EAAE,CAAC,GACvE4F,IAAe,CAAA5F,MAASmF,GAAgB,KAAKnF,CAAK,GAClD6F,KAAQ,MAAM,IACdC,KAAe,CAAA9F;AAAA;AAAA;AAAA;AAAA,EAIrBoF,GAAgB,KAAKpF,CAAK,KAAK,CAACqF,GAAmB,KAAKrF,CAAK;AAAA,GACvD+F,KAAU,MAAM,IAChBC,KAAW,CAAAhG,MAASsF,GAAY,KAAKtF,CAAK,GAC1CiG,KAAU,CAAAjG,MAASuF,GAAW,KAAKvF,CAAK,GACxCkG,KAAoB,CAAAlG,MAAS,CAACmG,EAAiBnG,CAAK,KAAK,CAACoG,EAAoBpG,CAAK,GACnFqG,KAAkB,CAAArG,MAASsG,GAAoBtG,GAAOuG,IAAaR,EAAO,GAC1EI,IAAmB,CAAAnG,MAASgF,GAAoB,KAAKhF,CAAK,GAC1DwG,KAAoB,CAAAxG,MAASsG,GAAoBtG,GAAOyG,IAAeX,EAAY,GACnFY,KAAoB,CAAA1G,MAASsG,GAAoBtG,GAAO2G,IAAelB,CAAQ,GAC/EmB,KAAsB,CAAA5G,MAASsG,GAAoBtG,GAAO6G,IAAiBd,EAAO,GAClFe,KAAmB,CAAA9G,MAASsG,GAAoBtG,GAAO+G,IAAcd,EAAO,GAC5Ee,KAAoB,CAAAhH,MAASsG,GAAoBtG,GAAOiH,IAAejB,EAAQ,GAC/EI,IAAsB,CAAApG,MAASiF,GAAuB,KAAKjF,CAAK,GAChEkH,KAA4B,CAAAlH,MAASmH,GAAuBnH,GAAOyG,EAAa,GAChFW,KAAgC,CAAApH,MAASmH,GAAuBnH,GAAOqH,EAAiB,GACxFC,KAA8B,CAAAtH,MAASmH,GAAuBnH,GAAO6G,EAAe,GACpFU,KAA0B,CAAAvH,MAASmH,GAAuBnH,GAAOuG,EAAW,GAC5EiB,KAA2B,CAAAxH,MAASmH,GAAuBnH,GAAO+G,EAAY,GAC9EU,KAA4B,CAAAzH,MAASmH,GAAuBnH,GAAOiH,IAAe,EAAI,GAEtFX,KAAsB,CAACtG,GAAO0H,GAAWC,MAAc;AAC3D,QAAMnJ,IAASwG,GAAoB,KAAKhF,CAAK;AAC7C,SAAIxB,IACEA,EAAO,CAAC,IACHkJ,EAAUlJ,EAAO,CAAC,CAAC,IAErBmJ,EAAUnJ,EAAO,CAAC,CAAC,IAErB;AACT,GACM2I,KAAyB,CAACnH,GAAO0H,GAAWE,IAAqB,OAAU;AAC/E,QAAMpJ,IAASyG,GAAuB,KAAKjF,CAAK;AAChD,SAAIxB,IACEA,EAAO,CAAC,IACHkJ,EAAUlJ,EAAO,CAAC,CAAC,IAErBoJ,IAEF;AACT,GAEMf,KAAkB,CAAAgB,MAASA,MAAU,cAAcA,MAAU,cAC7Dd,KAAe,CAAAc,MAASA,MAAU,WAAWA,MAAU,OACvDtB,KAAc,CAAAsB,MAASA,MAAU,YAAYA,MAAU,UAAUA,MAAU,WAC3EpB,KAAgB,CAAAoB,MAASA,MAAU,UACnClB,KAAgB,CAAAkB,MAASA,MAAU,UACnCR,KAAoB,CAAAQ,MAASA,MAAU,eACvCZ,KAAgB,CAAAY,MAASA,MAAU,UA2BnCC,KAAmB,MAAM;AAM7B,QAAMC,IAAajD,EAAU,OAAO,GAC9BkD,IAAYlD,EAAU,MAAM,GAC5BmD,IAAYnD,EAAU,MAAM,GAC5BoD,IAAkBpD,EAAU,aAAa,GACzCqD,IAAgBrD,EAAU,UAAU,GACpCsD,IAAetD,EAAU,SAAS,GAClCuD,IAAkBvD,EAAU,YAAY,GACxCwD,IAAiBxD,EAAU,WAAW,GACtCyD,IAAezD,EAAU,SAAS,GAClC0D,IAAc1D,EAAU,QAAQ,GAChC2D,IAAc3D,EAAU,QAAQ,GAChC4D,IAAmB5D,EAAU,cAAc,GAC3C6D,IAAkB7D,EAAU,aAAa,GACzC8D,IAAkB9D,EAAU,aAAa,GACzC+D,IAAY/D,EAAU,MAAM,GAC5BgE,IAAmBhE,EAAU,aAAa,GAC1CiE,IAAcjE,EAAU,QAAQ,GAChCkE,IAAYlE,EAAU,MAAM,GAC5BmE,IAAenE,EAAU,SAAS,GAQlCoE,IAAa,MAAM,CAAC,QAAQ,SAAS,OAAO,cAAc,QAAQ,QAAQ,SAAS,QAAQ,GAC3FC,IAAgB,MAAM;AAAA,IAAC;AAAA,IAAU;AAAA,IAAO;AAAA,IAAU;AAAA,IAAQ;AAAA,IAAS;AAAA;AAAA,IAEzE;AAAA,IAAY;AAAA;AAAA,IAEZ;AAAA,IAAa;AAAA;AAAA,IAEb;AAAA,IAAgB;AAAA;AAAA,IAEhB;AAAA,EAAa,GACPC,IAA6B,MAAM,CAAC,GAAGD,EAAa,GAAI/C,GAAqBD,CAAgB,GAC7FkD,IAAgB,MAAM,CAAC,QAAQ,UAAU,QAAQ,WAAW,QAAQ,GACpEC,IAAkB,MAAM,CAAC,QAAQ,WAAW,MAAM,GAClDC,IAA0B,MAAM,CAACnD,GAAqBD,GAAkBoC,CAAY,GACpFiB,IAAa,MAAM,CAAChE,IAAY,QAAQ,QAAQ,GAAG+D,GAAyB,GAC5EE,IAA4B,MAAM,CAAC/D,IAAW,QAAQ,WAAWU,GAAqBD,CAAgB,GACtGuD,IAA6B,MAAM,CAAC,QAAQ;AAAA,IAChD,MAAM,CAAC,QAAQhE,IAAWU,GAAqBD,CAAgB;AAAA,EACnE,GAAKT,IAAWU,GAAqBD,CAAgB,GAC7CwD,IAA4B,MAAM,CAACjE,IAAW,QAAQU,GAAqBD,CAAgB,GAC3FyD,IAAwB,MAAM,CAAC,QAAQ,OAAO,OAAO,MAAMxD,GAAqBD,CAAgB,GAChG0D,IAAwB,MAAM,CAAC,SAAS,OAAO,UAAU,WAAW,UAAU,UAAU,WAAW,YAAY,eAAe,UAAU,GACxIC,IAA0B,MAAM,CAAC,SAAS,OAAO,UAAU,WAAW,eAAe,UAAU,GAC/FC,IAAc,MAAM,CAAC,QAAQ,GAAGR,EAAuB,CAAE,GACzDS,IAAc,MAAM,CAACxE,IAAY,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAG+D,GAAyB,GAC5IU,IAAa,MAAM,CAAClC,GAAY3B,GAAqBD,CAAgB,GACrE+D,IAAkB,MAAM,CAAC,GAAGf,EAAa,GAAI7B,IAA6BV,IAAqB;AAAA,IACnG,UAAU,CAACR,GAAqBD,CAAgB;AAAA,EACpD,CAAG,GACKgE,IAAgB,MAAM,CAAC,aAAa;AAAA,IACxC,QAAQ,CAAC,IAAI,KAAK,KAAK,SAAS,OAAO;AAAA,EAC3C,CAAG,GACKC,KAAc,MAAM,CAAC,QAAQ,SAAS,WAAW7C,IAAyBlB,IAAiB;AAAA,IAC/F,MAAM,CAACD,GAAqBD,CAAgB;AAAA,EAChD,CAAG,GACKkE,KAA4B,MAAM,CAAC1E,IAAWuB,IAA2BV,EAAiB,GAC1F8D,IAAc,MAAM;AAAA;AAAA,IAE1B;AAAA,IAAI;AAAA,IAAQ;AAAA,IAAQ9B;AAAA,IAAapC;AAAA,IAAqBD;AAAA,EAAgB,GAChEoE,IAAmB,MAAM,CAAC,IAAI9E,GAAUyB,IAA2BV,EAAiB,GACpFgE,KAAiB,MAAM,CAAC,SAAS,UAAU,UAAU,QAAQ,GAC7DC,KAAiB,MAAM,CAAC,UAAU,YAAY,UAAU,WAAW,UAAU,WAAW,eAAe,cAAc,cAAc,cAAc,cAAc,aAAa,OAAO,cAAc,SAAS,YAAY,GACtNC,IAAyB,MAAM,CAACjF,GAAUE,IAAW2B,IAA6BV,EAAmB,GACrG+D,KAAY,MAAM;AAAA;AAAA,IAExB;AAAA,IAAI;AAAA,IAAQ9B;AAAA,IAAWzC;AAAA,IAAqBD;AAAA,EAAgB,GACtDyE,KAAc,MAAM,CAAC,QAAQnF,GAAUW,GAAqBD,CAAgB,GAC5E0E,KAAa,MAAM,CAAC,QAAQpF,GAAUW,GAAqBD,CAAgB,GAC3E2E,KAAY,MAAM,CAACrF,GAAUW,GAAqBD,CAAgB,GAClE4E,KAAiB,MAAM,CAACvF,IAAY,QAAQ,GAAG+D,EAAuB,CAAE;AAC9E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,OAAO;AAAA,MACL,SAAS,CAAC,QAAQ,QAAQ,SAAS,QAAQ;AAAA,MAC3C,QAAQ,CAAC,OAAO;AAAA,MAChB,MAAM,CAAC3D,CAAY;AAAA,MACnB,YAAY,CAACA,CAAY;AAAA,MACzB,OAAO,CAACC,EAAK;AAAA,MACb,WAAW,CAACD,CAAY;AAAA,MACxB,eAAe,CAACA,CAAY;AAAA,MAC5B,MAAM,CAAC,MAAM,OAAO,QAAQ;AAAA,MAC5B,MAAM,CAACM,EAAiB;AAAA,MACxB,eAAe,CAAC,QAAQ,cAAc,SAAS,UAAU,UAAU,YAAY,QAAQ,aAAa,OAAO;AAAA,MAC3G,gBAAgB,CAACN,CAAY;AAAA,MAC7B,SAAS,CAAC,QAAQ,SAAS,QAAQ,UAAU,WAAW,OAAO;AAAA,MAC/D,aAAa,CAAC,YAAY,QAAQ,UAAU,YAAY,WAAW,MAAM;AAAA,MACzE,QAAQ,CAACA,CAAY;AAAA,MACrB,QAAQ,CAACA,CAAY;AAAA,MACrB,SAAS,CAAC,MAAMH,CAAQ;AAAA,MACxB,MAAM,CAACG,CAAY;AAAA,MACnB,eAAe,CAACA,CAAY;AAAA,MAC5B,UAAU,CAAC,WAAW,SAAS,UAAU,QAAQ,SAAS,QAAQ;AAAA,IACxE;AAAA,IACI,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQX,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,QAAQ,UAAUJ,IAAYW,GAAkBC,GAAqB2C,CAAW;AAAA,MACjG,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMD,WAAW,CAAC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvB,SAAS,CAAC;AAAA,QACR,SAAS,CAACtD,GAAUU,GAAkBC,GAAqBkC,CAAc;AAAA,MACjF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAeY,EAAU;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgBA,EAAU;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgB,CAAC,QAAQ,SAAS,cAAc,cAAc;AAAA,MACtE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,kBAAkB,CAAC,SAAS,OAAO;AAAA,MAC3C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,KAAK,CAAC;AAAA,QACJ,KAAK,CAAC,UAAU,SAAS;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC,SAAS,gBAAgB,UAAU,QAAQ,eAAe,SAAS,gBAAgB,iBAAiB,cAAc,gBAAgB,sBAAsB,sBAAsB,sBAAsB,mBAAmB,aAAa,aAAa,QAAQ,eAAe,YAAY,aAAa,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnT,IAAI,CAAC,WAAW,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7B,OAAO,CAAC;AAAA,QACN,OAAO,CAAC,SAAS,QAAQ,QAAQ,SAAS,KAAK;AAAA,MACvD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAAC,QAAQ,SAAS,QAAQ,QAAQ,SAAS,KAAK;AAAA,MAC/D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC,WAAW,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvC,cAAc,CAAC;AAAA,QACb,QAAQ,CAAC,WAAW,SAAS,QAAQ,QAAQ,YAAY;AAAA,MACjE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,QAAQE,EAA0B;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAUC,EAAa;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAa;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAa;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYC,EAAe;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgBA,EAAe;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgBA,EAAe;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC,UAAU,SAAS,YAAY,YAAY,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAK9D,OAAO,CAAC;AAAA,QACN,OAAOE,EAAU;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,EAAU;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,EAAU;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAOA,EAAU;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,KAAK,CAAC;AAAA,QACJ,KAAKA,EAAU;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,KAAK,CAAC;AAAA,QACJ,KAAKA,EAAU;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAOA,EAAU;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQA,EAAU;AAAA,MAC1B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAMA,EAAU;AAAA,MACxB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC,WAAW,aAAa,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAK/C,GAAG,CAAC;AAAA,QACF,GAAG,CAAC9D,IAAW,QAAQU,GAAqBD,CAAgB;AAAA,MACpE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,OAAO,CAAC;AAAA,QACN,OAAO,CAACX,IAAY,QAAQ,QAAQ8C,GAAgB,GAAGiB,EAAuB,CAAE;AAAA,MACxF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,MAAM,CAAC,OAAO,eAAe,OAAO,aAAa;AAAA,MACzD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,UAAU,QAAQ,cAAc;AAAA,MAC/C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAM,CAAC9D,GAAUD,IAAY,QAAQ,WAAW,QAAQW,CAAgB;AAAA,MAChF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAM,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MAClE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MACpE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAACT,IAAW,SAAS,QAAQ,QAAQU,GAAqBD,CAAgB;AAAA,MACzF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAasD,EAAyB;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,KAAKC,EAA0B;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaC,EAAyB;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,EAAyB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaF,EAAyB;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,KAAKC,EAA0B;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaC,EAAyB;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,EAAyB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC,OAAO,OAAO,SAAS,aAAa,WAAW;AAAA,MACrE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaC,EAAqB;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAqB;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,KAAK,CAAC;AAAA,QACJ,KAAKL,EAAuB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAASA,EAAuB;AAAA,MACxC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAASA,EAAuB;AAAA,MACxC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,SAAS,CAAC,GAAGM,EAAqB,GAAI,QAAQ;AAAA,MACtD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,iBAAiB,CAAC,GAAGC,EAAuB,GAAI,QAAQ;AAAA,MAChE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgB,CAAC,QAAQ,GAAGA,EAAuB,CAAE;AAAA,MAC7D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,SAAS,CAAC,UAAU,GAAGD,EAAqB,CAAE;AAAA,MACtD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,OAAO,CAAC,GAAGC,KAA2B;AAAA,UACpC,UAAU,CAAC,IAAI,MAAM;AAAA,QAC/B,CAAS;AAAA,MACT,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,MAAM,CAAC,QAAQ,GAAGA,KAA2B;AAAA,UAC3C,UAAU,CAAC,IAAI,MAAM;AAAA,QAC/B,CAAS;AAAA,MACT,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,iBAAiBD,EAAqB;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAe,CAAC,GAAGC,EAAuB,GAAI,UAAU;AAAA,MAChE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAc,CAAC,QAAQ,GAAGA,EAAuB,CAAE;AAAA,MAC3D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMD,GAAG,CAAC;AAAA,QACF,GAAGP,EAAuB;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAuB;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,GAAG,CAAC;AAAA,QACF,GAAGQ,EAAW;AAAA,MACtB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,IAAI,CAAC;AAAA,QACH,IAAIA,EAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWR,EAAuB;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKrC,WAAW,CAAC;AAAA,QACV,WAAWA,EAAuB;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQrC,MAAM,CAAC;AAAA,QACL,MAAMS,EAAW;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,GAAG,CAAC;AAAA,QACF,GAAG,CAAC1B,GAAgB,UAAU,GAAG0B,EAAW,CAAE;AAAA,MACtD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS;AAAA,UAAC1B;AAAA,UAAgB;AAAA;AAAA,UAC1B;AAAA,UAAQ,GAAG0B,EAAW;AAAA,QAAE;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS;AAAA,UAAC1B;AAAA,UAAgB;AAAA,UAAU;AAAA;AAAA,UACpC;AAAA;AAAA,UACA;AAAA,YACE,QAAQ,CAACD,CAAe;AAAA,UAClC;AAAA,UAAW,GAAG2B,EAAW;AAAA,QAAE;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,GAAG,CAAC;AAAA,QACF,GAAG,CAAC,UAAU,MAAM,GAAGA,EAAW,CAAE;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,UAAU,MAAM,QAAQ,GAAGA,EAAW,CAAE;AAAA,MAC1D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,UAAU,MAAM,GAAGA,EAAW,CAAE;AAAA,MAClD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,QAAQ/B,GAAWf,IAA2BV,EAAiB;AAAA,MAC9E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC,eAAe,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKxD,cAAc,CAAC,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAKrC,eAAe,CAAC;AAAA,QACd,MAAM,CAAC0B,GAAiB9B,GAAqBM,EAAiB;AAAA,MACtE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgB,CAAC,mBAAmB,mBAAmB,aAAa,kBAAkB,UAAU,iBAAiB,YAAY,kBAAkB,kBAAkBf,IAAWQ,CAAgB;AAAA,MACpM,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,MAAM,CAACiB,IAA+BjB,GAAkB6B,CAAS;AAAA,MACzE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAK5B,eAAe,CAAC,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAKzB,oBAAoB,CAAC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnC,cAAc,CAAC,eAAe,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7C,eAAe,CAAC,qBAAqB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnD,gBAAgB,CAAC,sBAAsB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,MAK1D,UAAU,CAAC;AAAA,QACT,UAAU,CAACG,GAAe/B,GAAqBD,CAAgB;AAAA,MACvE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAc,CAACV,GAAU,QAAQW,GAAqBM,EAAiB;AAAA,MAC/E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS;AAAA;AAAA,UACT0B;AAAA,UAAc,GAAGmB,EAAuB;AAAA,QAAE;AAAA,MAClD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAc,CAAC,QAAQnD,GAAqBD,CAAgB;AAAA,MACpE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,uBAAuB,CAAC;AAAA,QACtB,MAAM,CAAC,UAAU,SAAS;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,MAAM,CAAC,QAAQ,WAAW,QAAQC,GAAqBD,CAAgB;AAAA,MAC/E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,MAAM,CAAC,QAAQ,UAAU,SAAS,WAAW,SAAS,KAAK;AAAA,MACnE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMD,qBAAqB,CAAC;AAAA,QACpB,aAAa8D,EAAU;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,MAAMA,EAAU;AAAA,MACxB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC,aAAa,YAAY,gBAAgB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,MAK3E,yBAAyB,CAAC;AAAA,QACxB,YAAY,CAAC,GAAGO,GAAc,GAAI,MAAM;AAAA,MAChD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,6BAA6B,CAAC;AAAA,QAC5B,YAAY,CAAC/E,GAAU,aAAa,QAAQW,GAAqBI,EAAiB;AAAA,MAC1F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,yBAAyB,CAAC;AAAA,QACxB,YAAYyD,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,oBAAoB,CAACxE,GAAU,QAAQW,GAAqBD,CAAgB;AAAA,MACpF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC,aAAa,aAAa,cAAc,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKxE,iBAAiB,CAAC,YAAY,iBAAiB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAK1D,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,QAAQ,UAAU,WAAW,QAAQ;AAAA,MACpD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQoD,EAAuB;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,OAAO,CAAC,YAAY,OAAO,UAAU,UAAU,YAAY,eAAe,OAAO,SAASnD,GAAqBD,CAAgB;AAAA,MACvI,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAY,CAAC,UAAU,UAAU,OAAO,YAAY,YAAY,cAAc;AAAA,MACtF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAAC,UAAU,SAAS,OAAO,MAAM;AAAA,MAChD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAM,CAAC,cAAc,YAAY,QAAQ;AAAA,MACjD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,QAAQ,UAAU,MAAM;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,QAAQC,GAAqBD,CAAgB;AAAA,MAC/D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,iBAAiB,CAAC;AAAA,QAChB,IAAI,CAAC,SAAS,SAAS,QAAQ;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAW,CAAC,UAAU,WAAW,WAAW,MAAM;AAAA,MAC1D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC,UAAU,WAAW,SAAS;AAAA,MACpD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,IAAI+D,EAAe;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,IAAIC,EAAa;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,IAAIC,GAAW;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,IAAI,CAAC,QAAQ;AAAA,UACX,QAAQ,CAAC;AAAA,YACP,IAAI,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,UAC3D,GAAa1E,IAAWU,GAAqBD,CAAgB;AAAA,UACnD,QAAQ,CAAC,IAAIC,GAAqBD,CAAgB;AAAA,UAClD,OAAO,CAACT,IAAWU,GAAqBD,CAAgB;AAAA,QAClE,GAAWqB,IAA0BV,EAAgB;AAAA,MACrD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,IAAImD,EAAU;AAAA,MACtB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,qBAAqB,CAAC;AAAA,QACpB,MAAMI,GAAyB;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,KAAKA,GAAyB;AAAA,MACtC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,IAAIA,GAAyB;AAAA,MACrC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,MAAMJ,EAAU;AAAA,MACxB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,KAAKA,EAAU;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,IAAIA,EAAU;AAAA,MACtB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,SAAS,CAAC;AAAA,QACR,SAASK,EAAW;AAAA,MAC5B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAW;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAcA,EAAW;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,QAAQC,EAAgB;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvC,YAAY,CAAC;AAAA,QACX,YAAYA,EAAgB;AAAA,MACpC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvC,gBAAgB,CAAC;AAAA,QACf,QAAQ,CAAC,GAAGC,GAAc,GAAI,UAAU,MAAM;AAAA,MACtD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,QAAQ,CAAC,GAAGA,GAAc,GAAI,UAAU,MAAM;AAAA,MACtD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,QAAQP,EAAU;AAAA,MAC1B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,YAAYA,EAAU;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,QAAQA,EAAU;AAAA,MAC1B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,SAAS,CAAC,GAAGO,GAAc,GAAI,QAAQ,QAAQ;AAAA,MACvD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,kBAAkB,CAAC/E,GAAUW,GAAqBD,CAAgB;AAAA,MAC1E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,SAAS,CAAC,IAAIV,GAAUyB,IAA2BV,EAAiB;AAAA,MAC5E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,SAASyD,EAAU;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,QAAQ,CAAC;AAAA,QACP,QAAQ;AAAA;AAAA,UAER;AAAA,UAAI;AAAA,UAAQxB;AAAA,UAAahB;AAAA,UAA2BT;AAAA,QAAiB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,QAAQiD,EAAU;AAAA,MAC1B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgB,CAAC,QAAQvB,GAAkBjB,IAA2BT,EAAiB;AAAA,MAC/F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,sBAAsB,CAAC;AAAA,QACrB,gBAAgBiD,EAAU;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,MAAMM,EAAgB;AAAA,MAC9B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOD,gBAAgB,CAAC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7B,cAAc,CAAC;AAAA,QACb,MAAMN,EAAU;AAAA,MACxB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOD,iBAAiB,CAAC;AAAA,QAChB,eAAe,CAACxE,GAAUe,EAAiB;AAAA,MACnD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOD,qBAAqB,CAAC;AAAA,QACpB,eAAeyD,EAAU;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,cAAcM,EAAgB;AAAA,MACtC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,cAAcN,EAAU;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAe,CAAC,QAAQtB,GAAiBlB,IAA2BT,EAAiB;AAAA,MAC7F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,qBAAqB,CAAC;AAAA,QACpB,eAAeiD,EAAU;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAACxE,GAAUW,GAAqBD,CAAgB;AAAA,MACjE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC,GAAGsE,GAAc,GAAI,eAAe,cAAc;AAAA,MACxE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,GAAc;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC,UAAU,WAAW,WAAW,QAAQ,UAAU,MAAM;AAAA,MAC9E,GAAS,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,MAKjB,kBAAkB,CAAC;AAAA,QACjB,MAAM,CAAC,OAAO,YAAY,aAAa,SAAS;AAAA,MACxD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,yBAAyB,CAAC;AAAA,QACxB,eAAe,CAAChF,CAAQ;AAAA,MAChC,CAAO;AAAA,MACD,8BAA8B,CAAC;AAAA,QAC7B,oBAAoBiF,EAAsB;AAAA,MAClD,CAAO;AAAA,MACD,4BAA4B,CAAC;AAAA,QAC3B,kBAAkBA,EAAsB;AAAA,MAChD,CAAO;AAAA,MACD,gCAAgC,CAAC;AAAA,QAC/B,oBAAoBT,EAAU;AAAA,MACtC,CAAO;AAAA,MACD,8BAA8B,CAAC;AAAA,QAC7B,kBAAkBA,EAAU;AAAA,MACpC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,eAAeS,EAAsB;AAAA,MAC7C,CAAO;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAaA,EAAsB;AAAA,MAC3C,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAeT,EAAU;AAAA,MACjC,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,aAAaA,EAAU;AAAA,MAC/B,CAAO;AAAA,MACD,qBAAqB,CAAC;AAAA,QACpB,eAAe,CAAC7D,GAAqBD,CAAgB;AAAA,MAC7D,CAAO;AAAA,MACD,8BAA8B,CAAC;AAAA,QAC7B,oBAAoBuE,EAAsB;AAAA,MAClD,CAAO;AAAA,MACD,4BAA4B,CAAC;AAAA,QAC3B,kBAAkBA,EAAsB;AAAA,MAChD,CAAO;AAAA,MACD,gCAAgC,CAAC;AAAA,QAC/B,oBAAoBT,EAAU;AAAA,MACtC,CAAO;AAAA,MACD,8BAA8B,CAAC;AAAA,QAC7B,kBAAkBA,EAAU;AAAA,MACpC,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,eAAe,CAAC,UAAU,SAAS;AAAA,MAC3C,CAAO;AAAA,MACD,0BAA0B,CAAC;AAAA,QACzB,eAAe,CAAC;AAAA,UACd,SAAS,CAAC,QAAQ,QAAQ;AAAA,UAC1B,UAAU,CAAC,QAAQ,QAAQ;AAAA,QACrC,CAAS;AAAA,MACT,CAAO;AAAA,MACD,yBAAyB,CAAC;AAAA,QACxB,kBAAkBd,EAAa;AAAA,MACvC,CAAO;AAAA,MACD,wBAAwB,CAAC;AAAA,QACvB,cAAc,CAAC1D,CAAQ;AAAA,MAC/B,CAAO;AAAA,MACD,6BAA6B,CAAC;AAAA,QAC5B,mBAAmBiF,EAAsB;AAAA,MACjD,CAAO;AAAA,MACD,2BAA2B,CAAC;AAAA,QAC1B,iBAAiBA,EAAsB;AAAA,MAC/C,CAAO;AAAA,MACD,+BAA+B,CAAC;AAAA,QAC9B,mBAAmBT,EAAU;AAAA,MACrC,CAAO;AAAA,MACD,6BAA6B,CAAC;AAAA,QAC5B,iBAAiBA,EAAU;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,SAAS,aAAa,OAAO;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAe,CAAC,UAAU,WAAW,WAAW,QAAQ,UAAU,MAAM;AAAA,MAChF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,MAAMC,EAAe;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,MAAMC,EAAa;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,MAAMC,GAAW;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC,SAAS,WAAW;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,MAAM,CAAC,QAAQhE,GAAqBD,CAAgB;AAAA,MAC5D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,QAAQ,CAAC;AAAA,QACP,QAAQ;AAAA;AAAA,UAER;AAAA,UAAI;AAAA,UAAQC;AAAA,UAAqBD;AAAA,QAAgB;AAAA,MACzD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAMwE,GAAS;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAY,CAAClF,GAAUW,GAAqBD,CAAgB;AAAA,MACpE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAU,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAClE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAe;AAAA;AAAA,UAEf;AAAA,UAAI;AAAA,UAAQyC;AAAA,UAAiBnB;AAAA,UAA2BT;AAAA,QAAiB;AAAA,MACjF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,qBAAqB,CAAC;AAAA,QACpB,eAAeiD,EAAU;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAW,CAAC,IAAIxE,GAAUW,GAAqBD,CAAgB;AAAA,MACvE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,cAAc,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MACtE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MACpE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAU,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAClE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MACnE,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,mBAAmB;AAAA;AAAA,UAEnB;AAAA,UAAI;AAAA,UAAQC;AAAA,UAAqBD;AAAA,QAAgB;AAAA,MACzD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,iBAAiB,CAAC;AAAA,QAChB,iBAAiBwE,GAAS;AAAA,MAClC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,uBAAuB,CAAC;AAAA,QACtB,uBAAuB,CAAClF,GAAUW,GAAqBD,CAAgB;AAAA,MAC/E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,qBAAqB,CAAC;AAAA,QACpB,qBAAqB,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,sBAAsB,CAAC;AAAA,QACrB,sBAAsB,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MAClF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,uBAAuB,CAAC;AAAA,QACtB,uBAAuB,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAC/E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,mBAAmB,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MAC/E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,oBAAoB,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAC5E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,qBAAqB,CAAC;AAAA,QACpB,qBAAqB,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,kBAAkB,CAAC,IAAIV,GAAUW,GAAqBD,CAAgB;AAAA,MAC9E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,mBAAmB,CAAC;AAAA,QAClB,QAAQ,CAAC,YAAY,UAAU;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,kBAAkBoD,EAAuB;AAAA,MACjD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,oBAAoBA,EAAuB;AAAA,MACnD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,oBAAoBA,EAAuB;AAAA,MACnD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,OAAO,CAAC,QAAQ,OAAO;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,OAAO,QAAQ;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,YAAY,CAAC;AAAA,QACX,YAAY,CAAC,IAAI,OAAO,UAAU,WAAW,UAAU,aAAa,QAAQnD,GAAqBD,CAAgB;AAAA,MACzH,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,uBAAuB,CAAC;AAAA,QACtB,YAAY,CAAC,UAAU,UAAU;AAAA,MACzC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAU,CAACV,GAAU,WAAWW,GAAqBD,CAAgB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,MAAM,CAAC;AAAA,QACL,MAAM,CAAC,UAAU,WAAW6C,GAAW5C,GAAqBD,CAAgB;AAAA,MACpF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAACV,GAAUW,GAAqBD,CAAgB;AAAA,MAC/D,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,SAAS,CAAC;AAAA,QACR,SAAS,CAAC,QAAQ8C,GAAc7C,GAAqBD,CAAgB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,UAAU,CAAC;AAAA,QACT,UAAU,CAAC,UAAU,SAAS;AAAA,MACtC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAa,CAAC2C,GAAkB1C,GAAqBD,CAAgB;AAAA,MAC7E,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,sBAAsB,CAAC;AAAA,QACrB,sBAAsBiD,EAA0B;AAAA,MACxD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQwB,GAAW;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,GAAW;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,GAAW;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,GAAW;AAAA,MAC/B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAOC,GAAU;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,GAAU;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,GAAU;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAWA,GAAU;AAAA,MAC7B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvB,MAAM,CAAC;AAAA,QACL,MAAMC,GAAS;AAAA,MACvB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAUA,GAAS;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,UAAU,CAAC;AAAA,QACT,UAAUA,GAAS;AAAA,MAC3B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAW,CAAC1E,GAAqBD,GAAkB,IAAI,QAAQ,OAAO,KAAK;AAAA,MACnF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,oBAAoB,CAAC;AAAA,QACnB,QAAQiD,EAA0B;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,WAAW,CAAC,MAAM,MAAM;AAAA,MAChC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,WAAW2B,GAAc;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAeA,GAAc;AAAA,MACrC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAeA,GAAc;AAAA,MACrC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAeA,GAAc;AAAA,MACrC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnC,QAAQ,CAAC;AAAA,QACP,QAAQd,EAAU;AAAA,MAC1B,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAY,CAAC,QAAQ,MAAM;AAAA,MACnC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,OAAOA,EAAU;AAAA,MACzB,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,QAAQ,CAAC,UAAU,QAAQ,SAAS,cAAc,aAAa,YAAY;AAAA,MACnF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,QAAQ,WAAW,WAAW,QAAQ,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,gBAAgB,YAAY,QAAQ,aAAa,iBAAiB,SAAS,QAAQ,WAAW,QAAQ,YAAY,cAAc,cAAc,cAAc,YAAY,YAAY,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,eAAe,eAAe,WAAW,YAAY7D,GAAqBD,CAAgB;AAAA,MAC1d,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,gBAAgB,CAAC;AAAA,QACf,gBAAgB,CAAC,SAAS,SAAS;AAAA,MAC3C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,kBAAkB,CAAC;AAAA,QACjB,kBAAkB,CAAC,QAAQ,MAAM;AAAA,MACzC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,QAAQ,IAAI,KAAK,GAAG;AAAA,MACrC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,QAAQ,CAAC,QAAQ,QAAQ;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYoD,EAAuB;AAAA,MAC3C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,YAAYA,EAAuB;AAAA,MAC3C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,aAAaA,EAAuB;AAAA,MAC5C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,cAAc,CAAC;AAAA,QACb,MAAM,CAAC,SAAS,OAAO,UAAU,YAAY;AAAA,MACrD,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,UAAU,QAAQ;AAAA,MACjC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,aAAa,CAAC;AAAA,QACZ,MAAM,CAAC,QAAQ,KAAK,KAAK,MAAM;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,mBAAmB,CAAC;AAAA,QAClB,MAAM,CAAC,aAAa,WAAW;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,OAAO,CAAC;AAAA,QACN,OAAO,CAAC,QAAQ,QAAQ,cAAc;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,aAAa,CAAC,KAAK,QAAQ,OAAO;AAAA,MAC1C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,WAAW,CAAC;AAAA,QACV,aAAa,CAAC,KAAK,MAAM,MAAM;AAAA,MACvC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,MAK/B,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,QAAQ,QAAQ,OAAO,MAAM;AAAA,MAC9C,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,eAAe,CAAC;AAAA,QACd,eAAe,CAAC,QAAQ,UAAU,YAAY,aAAanD,GAAqBD,CAAgB;AAAA,MACxG,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,MAAM,CAAC;AAAA,QACL,MAAM,CAAC,QAAQ,GAAG8D,EAAU,CAAE;AAAA,MACtC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,YAAY,CAAC;AAAA,QACX,QAAQ,CAACxE,GAAUyB,IAA2BV,IAAmBE,EAAiB;AAAA,MAC1F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKD,QAAQ,CAAC;AAAA,QACP,QAAQ,CAAC,QAAQ,GAAGuD,EAAU,CAAE;AAAA,MACxC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQD,uBAAuB,CAAC;AAAA,QACtB,uBAAuB,CAAC,QAAQ,MAAM;AAAA,MAC9C,CAAO;AAAA,IACP;AAAA,IACI,wBAAwB;AAAA,MACtB,UAAU,CAAC,cAAc,YAAY;AAAA,MACrC,YAAY,CAAC,gBAAgB,cAAc;AAAA,MAC3C,OAAO,CAAC,WAAW,WAAW,SAAS,OAAO,OAAO,SAAS,UAAU,MAAM;AAAA,MAC9E,WAAW,CAAC,SAAS,MAAM;AAAA,MAC3B,WAAW,CAAC,OAAO,QAAQ;AAAA,MAC3B,MAAM,CAAC,SAAS,QAAQ,QAAQ;AAAA,MAChC,KAAK,CAAC,SAAS,OAAO;AAAA,MACtB,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAClD,IAAI,CAAC,MAAM,IAAI;AAAA,MACf,IAAI,CAAC,MAAM,IAAI;AAAA,MACf,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAClD,IAAI,CAAC,MAAM,IAAI;AAAA,MACf,IAAI,CAAC,MAAM,IAAI;AAAA,MACf,MAAM,CAAC,KAAK,GAAG;AAAA,MACf,aAAa,CAAC,SAAS;AAAA,MACvB,cAAc,CAAC,eAAe,oBAAoB,cAAc,eAAe,cAAc;AAAA,MAC7F,eAAe,CAAC,YAAY;AAAA,MAC5B,oBAAoB,CAAC,YAAY;AAAA,MACjC,cAAc,CAAC,YAAY;AAAA,MAC3B,eAAe,CAAC,YAAY;AAAA,MAC5B,gBAAgB,CAAC,YAAY;AAAA,MAC7B,cAAc,CAAC,WAAW,UAAU;AAAA,MACpC,SAAS,CAAC,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,YAAY;AAAA,MACtM,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,aAAa,CAAC,cAAc,YAAY;AAAA,MACxC,kBAAkB,CAAC,oBAAoB,kBAAkB;AAAA,MACzD,YAAY,CAAC,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,YAAY;AAAA,MAC3H,cAAc,CAAC,cAAc,YAAY;AAAA,MACzC,cAAc,CAAC,cAAc,YAAY;AAAA,MACzC,gBAAgB,CAAC,kBAAkB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,gBAAgB;AAAA,MAC/J,kBAAkB,CAAC,kBAAkB,gBAAgB;AAAA,MACrD,kBAAkB,CAAC,kBAAkB,gBAAgB;AAAA,MACrD,WAAW,CAAC,eAAe,eAAe,gBAAgB;AAAA,MAC1D,kBAAkB,CAAC,aAAa,eAAe,eAAe,aAAa;AAAA,MAC3E,YAAY,CAAC,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW;AAAA,MACnH,aAAa,CAAC,aAAa,WAAW;AAAA,MACtC,aAAa,CAAC,aAAa,WAAW;AAAA,MACtC,YAAY,CAAC,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW;AAAA,MACnH,aAAa,CAAC,aAAa,WAAW;AAAA,MACtC,aAAa,CAAC,aAAa,WAAW;AAAA,MACtC,OAAO,CAAC,WAAW,WAAW,UAAU;AAAA,MACxC,WAAW,CAAC,OAAO;AAAA,MACnB,WAAW,CAAC,OAAO;AAAA,MACnB,YAAY,CAAC,OAAO;AAAA,IAC1B;AAAA,IACI,gCAAgC;AAAA,MAC9B,aAAa,CAAC,SAAS;AAAA,IAC7B;AAAA,IACI,yBAAyB,CAAC,KAAK,MAAM,SAAS,YAAY,UAAU,mBAAmB,QAAQ,gBAAgB,cAAc,UAAU,eAAe,WAAW;AAAA,EACrK;AACA,GAsDMe,KAAuB,gBAAA/G,GAAoB6D,EAAgB;AC7+FjE,SAASmD,KAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAGA,MAAMC,KAA+C;AAAA,EACnD,SAASF;AAAAA;AAAAA,IAEP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,MAAMA;AAAAA;AAAAA,IAEJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,WAAWA;AAAAA;AAAAA,IAET;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,QAAQA;AAAAA;AAAAA,IAEN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,OAAOA;AAAAA;AAAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,SAASA;AAAAA;AAAAA,IAEP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,OAAOA;AAAAA;AAAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,iBAAiBA;AAAAA;AAAAA,IAEf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,QAAQA;AAAAA;AAAAA,IAEN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,eAAeA;AAAAA;AAAAA,IAEb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,MAAMA;AAAAA;AAAAA,IAEJ;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,eAAeA;AAAAA;AAAAA,IAEb;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,gBAAgBA;AAAAA;AAAAA,IAEd;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ,GAGMG,KAAyC;AAAA,EAC7C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAGMC,KAAiD;AAAA,EACrD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAGMC,KAA2C;AAAA,EAC/C,SAAS;AAAA;AAAA,EACT,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA,EACR,QAAQ;AAAA;AACV,GAGMC,KAA6C;AAAA,EACjD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAkBaC,KAASC;AAAA,EACpB,CACE;AAAA,IACE,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,WAAAC,IAAY;AAAA,IACZ,KAAAC,IAAM;AAAA,IACN,UAAAC;AAAA,IACA,WAAA3O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AAEH,UAAMC,IAAaP,KAAQ,CAACI,GAGtBI,IAASlB,MAAY,UAAUA,MAAY,iBAAiBA,MAAY,gBAKxEmB,IAAgBb,KAAYE,GAC5BY,IAAcb,KAAaE,GAK3BY,IAAcR,IAAMS,KAAcC;AACxC,QAAIC,IAAiBL,GACjBM,IAAeL;AAEnB,IAAIT,KAAeO,MACbL,IACFW,IAAiB,gBAAAE,EAACL,GAAA,EAAY,WAAU,UAAA,CAAU,IAElDI,IAAe,gBAAAC,EAACL,GAAA,EAAY,WAAU,UAAA,CAAU;AAKpD,UAAMM,IAAgBpC;AAAAA;AAAAA,MAEpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAGAE,GAAcO,CAAO;AAAA;AAAA,MAGrBJ,GAAYM,CAAK;AAAA;AAAA,MAGjBgB,IACIrB,GAAeI,CAAI,IACnBgB,IACEtB,GAAmBM,CAAI,IACvBP,GAAWO,CAAI;AAAA;AAAA,MAGrBiB,KAAUN,KAAa;AAAA,MACvBM,KAAU;AAAA;AAAA,MAGVL,KAAO;AAAA;AAAA,MAGPR,KAAa;AAAA;AAAA,OAGZD,KAAYD,MAAY;AAAA;AAAA,MAGzBhO;AAAA,IAAA;AAIF,WACE,gBAAAyP;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,MAAK;AAAA,QACL,UAAUZ,KAAYD;AAAA,QACtB,KAAKU,IAAM,QAAQ;AAAA,QACnB,WAAWc;AAAA,QACV,GAAGZ;AAAA,QAGH,UAAA;AAAA,UAAAZ,IACC,gBAAAuB,EAACG,IAAA,EAAQ,WAAU,iCAAA,CAAiC,IAClDZ,IACF,gBAAAS,EAAC,QAAA,EAAK,WAAU,wFACb,UAAAhB,EAAA,CACH,IACE;AAAA,UAIH,CAACO,KAAc,CAACd,KACf,gBAAAuB,EAAAI,GAAA,EACG,cACC,gBAAAF,EAAAE,GAAA,EAEG,UAAA;AAAA,YAAAL,KACC,gBAAAC,EAAC,QAAA,EAAK,WAAU,6FACb,UAAAD,GACH;AAAA,YAGDX,uBACE,QAAA,EAAK,WAAWvB,EAAG,YAAY2B,KAAU,iBAAiB,GAAI,UAAAJ,GAAS;AAAA,YAGzEU,KACC,gBAAAE,EAAC,QAAA,EAAK,WAAU,6FACb,UAAAF,EAAA,CACH;AAAA,UAAA,EAAA,CAEJ,IAEA,gBAAAI,EAAAE,GAAA,EAEG,UAAA;AAAA,YAAAN,KACC,gBAAAE,EAAC,QAAA,EAAK,WAAU,6FACb,UAAAF,GACH;AAAA,YAGDV,uBACE,QAAA,EAAK,WAAWvB,EAAG,YAAY2B,KAAU,iBAAiB,GAAI,UAAAJ,GAAS;AAAA,YAGzEW,KACC,gBAAAC,EAAC,QAAA,EAAK,WAAU,6FACb,UAAAD,EAAA,CACH;AAAA,UAAA,EAAA,CAEJ,EAAA,CAEJ;AAAA,UAIDtB,KAAW,CAACc,KAAcH,uBACxB,QAAA,EAAK,WAAU,iBAAiB,UAAAA,EAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIlD;AACF;AAEAhB,GAAO,cAAc;ACrYrB,SAASP,MAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAGA,MAAMuC,KAAiD;AAAA,EACrD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,GAAG;AACL,GAGMC,KAAoD;AAAA,EACxD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,GAAG;AACL,GAGMC,KAOD;AAAA,EACH,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb,GAAG;AAAA,IACD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAEf,GAGMC,KAAkB,CAACC,OAGgC;AAAA,EACrD,UAAU,gBAAAT,EAACU,IAAA,EAAW,MAAM,GAAA,CAAU;AAAA,EACtC,UAAU,gBAAAV,EAACW,IAAA,EAAW,MAAM,GAAA,CAAU;AAAA,EACtC,OAAO,gBAAAX,EAACY,IAAA,EAAQ,MAAM,GAAA,CAAU;AAAA,EAChC,UAAU,gBAAAZ,EAACa,IAAA,EAAW,MAAM,GAAA,CAAU;AAAA,EACtC,QAAQ,gBAAAb,EAACc,IAAA,EAAS,MAAM,GAAA,CAAU;AAAA,EAClC,GAAG,gBAAAd,EAACe,IAAA,EAAW,MAAM,GAAA,CAAU;AAAA,GAGpBN,CAAQ,GAiBVO,KAAe3C;AAAA,EAC1B,CACE;AAAA,IACE,UAAAoC;AAAA,IACA,MAAAQ,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,KAAA/B,IAAM;AAAA,IACN,UAAAT,IAAW;AAAA,IACX,WAAAjO;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAM6B,IAAQhC,GACRI,IAAa0B,MAAS,YACtBG,IAAaF,MAAU,YACvBG,IAASd,GAAeE,CAAQ,GAChCzB,IAAOwB,GAAgBC,CAAQ,GAC/BhG,IAAQ0G,IAAQb,GAAkBG,CAAQ,IAAIJ,GAAeI,CAAQ,GAGrEa,IAAczD;AAAAA;AAAAA,MAElB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAGA0B,IAAa,gBAAgB;AAAA;AAAA,MAG7B4B,KAAS;AAAA;AAAA,MAGTzC,KAAY;AAAA;AAAA,MAGZjO;AAAA,IAAA,GAII8Q,IAAe1D;AAAAA,MACnBqD,MAAU,UACNrD;AAAAA,QACEwD,EAAO;AAAA,QACPA,EAAO;AAAA,QACPA,EAAO;AAAA,QACPA,EAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,IAEFxD;AAAAA,QACE;AAAA,QACAwD,EAAO;AAAA,QACPA,EAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA,EAAO;AAAA,MAAA;AAAA,IACT,GAIAG,IAAc3D;AAAAA,MAClB;AAAA,MACA;AAAA,MACA0B,IAAa,KAAc;AAAA,MAC3B6B,KAAcC,EAAO;AAAA,IAAA,GAIjBI,IAAa,MACjB,gBAAAzB,EAAC,QAAA,EAAK,WAAWwB,GACd,UAAAxC,GACH;AAGF,WACE,gBAAAgB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,MAAK;AAAA,QACL,UAAAZ;AAAA,QACA,KAAKyC,IAAQ,QAAQ;AAAA,QACrB,WAAWtD,GAAGyD,GAAaC,CAAY;AAAA,QACtC,GAAGlC;AAAA,QAIH,cACC,gBAAAa,EAAAE,GAAA,EACG,UAAA;AAAA,UAAA,CAACb,KACA,gBAAAS,EAAC,QAAA,EAAK,WAAWnC,GAAG,0BAA0BuD,KAAcC,EAAO,SAAS,GAAI,UAAA5G,EAAA,CAAM;AAAA,UAEvFgH,EAAA;AAAA,QAAW,EAAA,CACd,IAEA,gBAAAvB,EAAAE,GAAA,EACG,UAAA;AAAA,UAAAqB,EAAA;AAAA,UACA,CAAClC,KACA,gBAAAS,EAAC,QAAA,EAAK,WAAWnC,GAAG,0BAA0BuD,KAAcC,EAAO,SAAS,GAAI,UAAA5G,EAAA,CAAM;AAAA,QAAA,EAAA,CAE1F;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAuG,GAAa,cAAc;AC7PpB,SAASnD,KAAMC,GAAsB;AAC1C,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AC8BO,MAAM4D,KAAcrD;AAAA,EACzB,CACE;AAAA,IACE,OAAAsD,IAAQ,CAAA;AAAA,IACR,SAAArD,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,UAAAoD,IAAW;AAAA,IACX,KAAAzC,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AAiCH,UAAMlP,IA/Ba;AAAA,MACjB,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,SAASwR,IAAW,SAAS;AAAA,QAC7B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,eAAe;AAAA,MAAA;AAAA,MAEjB,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,SAASA,IAAW,SAAS;AAAA,QAC7B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,eAAe;AAAA,MAAA;AAAA,MAEjB,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,SAASA,IAAW,SAAS;AAAA,QAC7B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,eAAe;AAAA,MAAA;AAAA,MAEjB,IAAI;AAAA,QACF,QAAQ;AAAA,QACR,SAASA,IAAW,SAAS;AAAA,QAC7B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,eAAe;AAAA,MAAA;AAAA,IACjB,EAGwBrD,CAAI,GAqBxBsD,IAlBe;AAAA,MACnB,SAAS;AAAA,QACP,WAAW;AAAA,QACX,WAAW1C,IAAM,sBAAsB;AAAA,QACvC,UAAUA,IAAM,sBAAsB;AAAA,MAAA;AAAA,MAExC,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,WAAWA,IAAM,mBAAmB;AAAA,QACpC,UAAUA,IAAM,mBAAmB;AAAA,MAAA;AAAA,MAErC,QAAQ;AAAA,QACN,WAAW;AAAA,QACX,WAAWA,IAAM,cAAc;AAAA,QAC/B,UAAUA,IAAM,cAAc;AAAA,MAAA;AAAA,IAChC,EAG+BX,CAAK,GA8ChCsD,IA3CgB;AAAA,MACpB,SAAS;AAAA,QACP,WAAW;AAAA,QACX,QAAQjE;AAAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,cAAc;AAAA,QACd,SAAS;AAAA,MAAA;AAAA,MAEX,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,QAAQA;AAAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,cAAc;AAAA,QACd,SAAS;AAAA,MAAA;AAAA,MAEX,SAAS;AAAA,QACP,WAAW;AAAA,QACX,QAAQA;AAAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,cAAc;AAAA,QACd,SAAS;AAAA,MAAA;AAAA,MAEX,OAAO;AAAA,QACL,WAAW;AAAA,QACX,QAAQA;AAAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,cAAc;AAAA,QACd,SAAS;AAAA,MAAA;AAAA,IACX,EAGkCS,CAAO,GAGrCyD,IAAmBlE;AAAAA,MACvB;AAAA,MACAgE,EAAY;AAAA,MACZC,EAAc;AAAA,MACd3C,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIIuR,IAAoB,CAACC,GAAuBC,GAAkBC,MAAoBtE;AAAAA,MACtF;AAAA,MACA;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPA,EAAO;AAAA,MACPA,EAAO;AAAA;AAAA,OAENwR,KAAY,CAACK,EAAK,UAAU7R,EAAO;AAAA,MACpC0R,EAAc;AAAA,MACdG,EAAK,UAAUH,EAAc;AAAA,MAC7B,CAACG,EAAK,YAAY;AAAA,MAClBA,EAAK,YAAY;AAAA;AAAA,MAEjBC,KAAWL,EAAY;AAAA,MACvBM,KAAUN,EAAY;AAAA;AAAA,MAEtB,CAACK,KAAW;AAAA,MACZ,CAACA,MAAY/C,IAAM,mBAAmB;AAAA,MACtC,CAAC+C,KAAWJ,EAAc;AAAA;AAAA,MAE1B3C,KAAO;AAAA,IAAA;AAGT,WACE,gBAAAa,EAAC,OAAA,EAAI,KAAAV,GAAU,WAAWyC,GAAmB,GAAG1C,GAC7C,UAAAsC,EAAM,IAAI,CAACM,GAAMvN,MAAU;AAC1B,YAAMwN,IAAUxN,MAAU,GACpByN,IAASzN,MAAUiN,EAAM,SAAS;AAExC,aACE,gBAAA3B;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,SAASiC,EAAK;AAAA,UACd,UAAUA,EAAK;AAAA,UACf,WAAWD,EAAkBC,GAAMC,GAASC,CAAM;AAAA,UAClD,KAAKhD,IAAM,QAAQ;AAAA,UAElB,UAAAyC;AAAA;AAAA,YAECK,EAAK,QACH,gBAAAjC,EAAC,QAAA,EAAK,WAAWnC,EAAG,oCAAoCzN,EAAO,UAAU,+BAA+B,GACrG,UAAA6R,EAAK,KAAA,CACR;AAAA,cAEA,CAACA,EAAK,SAASA,EAAK;AAAA;AAAA,YAEtB,gBAAAjC,EAAC,QAAA,EAAK,WAAWnC,EAAG,oCAAoCzN,EAAO,UAAU,+BAA+B,GACrG,UAAA6R,EAAK,KAAA,CACR;AAAA;AAAA;AAAA,YAGA,gBAAAjC,EAAAI,GAAA,EACG,cACC,gBAAAF,EAAAE,GAAA,EAEG,UAAA;AAAA,cAAA6B,EAAK,SACJ,gBAAAjC,EAAC,QAAA,EAAK,WAAU,YAAY,YAAK,OAAM;AAAA,cAExCiC,EAAK,QACJ,gBAAAjC,EAAC,QAAA,EAAK,WAAWnC,EAAG,6CAA6CzN,EAAO,UAAU,+BAA+B,GAC9G,UAAA6R,EAAK,KAAA,CACR;AAAA,YAAA,EAAA,CAEJ,IAEA,gBAAA/B,EAAAE,GAAA,EAEG,UAAA;AAAA,cAAA6B,EAAK,QACJ,gBAAAjC,EAAC,QAAA,EAAK,WAAWnC,EAAG,6CAA6CzN,EAAO,UAAU,+BAA+B,GAC9G,UAAA6R,EAAK,KAAA,CACR;AAAA,cAEDA,EAAK,SACJ,gBAAAjC,EAAC,UAAK,WAAU,YAAY,YAAK,MAAA,CAAM;AAAA,YAAA,EAAA,CAE3C,EAAA,CAEJ;AAAA;AAAA,QAAA;AAAA,QA/CGtL;AAAA,MAAA;AAAA,IAmDX,CAAC,EAAA,CACH;AAAA,EAEJ;AACF;AAEAgN,GAAY,cAAc;AClOnB,MAAMU,KAAW/D;AAAA,EACtB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,aAAA4H;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,eAAAC,IAAgB;AAAA,IAChB,KAAAtD,IAAM;AAAA,IACN,OAAAuD,IAAQ;AAAA,IACR,UAAAhE,IAAW;AAAA,IACX,SAAAiE,IAAU;AAAA,IACV,WAAAlS;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CoI,IAAqB1D,KAAOoD,IAAiBA,IAAiBF,GAC9DS,IAAiB,CAAC,CAACT,KAAe,CAAC,CAACE,GAGpCQ,IAAqBlF;AAAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACF,KAAiB,CAACC,KAAS,CAAChE,KAAY;AAAA,MACrD,CAACiE,KAAW,CAACF,KAAiBC,KAAS,CAAChE,KAAY;AAAA,OACnDiE,KAAWF,MAAkB,CAAC/D,KAAY;AAAA;AAAA,MAE3C,CAACA,KAAY,CAACiE,KAAW,CAACF,KAAiB;AAAA,MAC3C,CAAC/D,MAAaiE,KAAWF,MAAkB;AAAA;AAAA;AAAA,MAG3C/D,KAAY;AAAA;AAAA,MAEZ;AAAA,MACA;AAAA,IAAA,GAUIqD,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAiF,IAAiB,gBAAgB;AAAA;AAAA,MAEjCN,MAAkB,cAAc,CAACrD,KAAO;AAAA,MACxC1O;AAAA,IAAA,GAIIuS,IAAsBnF;AAAAA,MAC1B;AAAA,MACA;AAAA,MACiB;AAAA,MACjBsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRwE,IAAqBrF;AAAAA,MACzB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA;AAGd,WACE,gBAAAwB,EAAC,SAAA,EAAM,WAAW6B,GAEhB,UAAA;AAAA,MAAA,gBAAA/B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,MAAK;AAAA,UACL,SAAAqD;AAAA,UACA,UAAAjE;AAAA,UACA,WAAU;AAAA,UACT,GAAGW;AAAA,QAAA;AAAA,MAAA;AAAA,MAIN,gBAAAa,EAAC,OAAA,EAAI,WAAU,2DACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAW6C,GAEb,UAAA;AAAA,UAAAJ,KAAW,CAACF,KACX,gBAAAzC,EAACmD,IAAA,EAAM,WAAU,uDAAsD;AAAA,UAGxEV,KACC,gBAAAzC,EAACoD,IAAA,EAAM,WAAU,sDAAA,CAAsD;AAAA,QAAA,GAE3E;AAAA,QAGA,gBAAApD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,GACF;AAAA,OAGEpD,KAAS6H,MACT,gBAAApC,EAAC,OAAA,EAAI,WAAW8C,GAAqB,KAAK7D,IAAM,QAAQ,QACtD,UAAA;AAAA,QAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,QAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,MAAA,EAAA,CAE7D;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAT,GAAS,cAAc;ACzIhB,MAAMiB,KAAehF;AAAA,EAC1B,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,aAAA6I;AAAA,IACA,MAAAtE;AAAA,IACA,eAAAyD,IAAgB;AAAA,IAChB,KAAAtD,IAAM;AAAA,IACN,kBAAAoE,IAAmB;AAAA,IACnB,UAAA7E,IAAW;AAAA,IACX,SAAAiE,IAAU;AAAA,IACV,WAAAlS;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AAEH,UAAMkE,IAAc3F;AAAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACF,KAAiB,CAAC/D,KAAY;AAAA,MAC3C,CAACiE,KAAW,CAACF,KAAiB,CAAC/D,KAAY;AAAA;AAAA,OAE1CiE,KAAWF,MAAkB,CAAC/D,KAAY;AAAA,OAC1CiE,KAAWF,MAAkB,CAAC/D,KAAY;AAAA;AAAA,MAE3CA,KAAY;AAAA;AAAA,MAEZS,KAAO;AAAA;AAAA,MAEPoE,MAAqB,UAAU,CAACpE,KAAO;AAAA,MACvC1O;AAAA,IAAA,GAIIsS,IAAqBlF;AAAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACF,KAAiB,CAAC/D,KAAY;AAAA,OAC1CiE,KAAWF,MAAkB,CAAC/D,KAAY;AAAA;AAAA,MAE3CA,KAAY;AAAA,IAAA,GAIRuE,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHsE,IAAqB5F;AAAAA,MACzB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA;AAQT,6BACG,SAAA,EAAM,WAAWqE,GAAa,KAAKrE,IAAM,QAAQ,QAEhD,UAAA;AAAA,MAAA,gBAAAa;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,MAAK;AAAA,UACL,SAAAqD;AAAA,UACA,UAAAjE;AAAA,UACA,WAAU;AAAA,UACT,GAAGW;AAAA,QAAA;AAAA,MAAA;AAAA,MAILL,KACC,gBAAAgB,EAAC,OAAA,EAAI,WAAU,wFACZ,UAAAhB,GACH;AAAA,MAIF,gBAAAkB,EAAC,SAAI,WAAWrC;AAAAA,QACd;AAAA,QACAsB,KAAO;AAAA,MAAA,GAEN,UAAA;AAAA,QAAA1E,KAAS,gBAAAuF,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAxI,GAAM;AAAA,QAC/C6I,KAAe,gBAAAtD,EAAC,QAAA,EAAK,WAAWyD,GAAqB,UAAAH,EAAA,CAAY;AAAA,MAAA,GACpE;AAAA,MAGA,gBAAApD,EAAC,OAAA,EAAI,WAAU,0DACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAW6C,GACb,UAAA;AAAA,UAAAJ,KAAW,CAACF,KACX,gBAAAzC,EAACmD,IAAA,EAAM,WAAU,4DAA2D;AAAA,UAE7EV,KACC,gBAAAzC,EAACoD,IAAA,EAAM,WAAU,2DAAA,CAA2D;AAAA,QAAA,GAEhF;AAAA,QACA,gBAAApD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAwF,GAAa,cAAc;ACvHpB,MAAMK,KAAQrF;AAAA,EACnB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,aAAA4H;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAoB,IAAgB;AAAA,IAChB,KAAAxE,IAAM;AAAA,IACN,OAAAuD,IAAQ;AAAA,IACR,UAAAhE,IAAW;AAAA,IACX,SAAAiE,IAAU;AAAA,IACV,WAAAlS;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CoI,IAAqB1D,KAAOoD,IAAiBA,IAAiBF,GAC9DS,IAAiB,CAAC,CAACT,KAAe,CAAC,CAACE,GAGpCqB,IAAkB/F;AAAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACD,KAAS,CAAChE,KAAY;AAAA,MACnC,CAACiE,KAAWD,KAAS,CAAChE,KAAY;AAAA,MAClCiE,KAAW,CAACjE,KAAY;AAAA;AAAA,MAExB,CAACA,KAAY,CAACiE,KAAW;AAAA,MACzB,CAACjE,KAAYiE,KAAW;AAAA;AAAA,MAExBjE,KAAY;AAAA;AAAA,MAEZ;AAAA,MACA;AAAA,IAAA,GAIImF,IAAkBhG;AAAAA,MACtB;AAAA,MACA;AAAA,MACA8E,KAAW,CAACjE,KAAY;AAAA,MACxBiE,KAAW,CAACjE,KAAY;AAAA,IAAA,GAIpBqD,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAiF,IAAiB,gBAAgB;AAAA;AAAA,MAEjCa,MAAkB,cAAc,CAACxE,KAAO;AAAA,MACxC1O;AAAA,IAAA,GAIIuS,IAAsBnF;AAAAA,MAC1B;AAAA,MACA;AAAA,MACiB;AAAA,MACjBsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRwE,IAAqBrF;AAAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA;AAGd,WACE,gBAAAwB,EAAC,SAAA,EAAM,WAAW6B,GAEhB,UAAA;AAAA,MAAA,gBAAA/B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,MAAK;AAAA,UACL,SAAAqD;AAAA,UACA,UAAAjE;AAAA,UACA,WAAU;AAAA,UACT,GAAGW;AAAA,QAAA;AAAA,MAAA;AAAA,MAIN,gBAAAa,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,QAAA,gBAAAF,EAAC,OAAA,EAAI,WAAW4D,GAEb,UAAAjB,uBAAY,OAAA,EAAI,WAAWkB,GAAiB,EAAA,CAC/C;AAAA,QAGA,gBAAA7D;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,GACF;AAAA,OAGEpD,KAAS6H,MACT,gBAAApC,EAAC,OAAA,EAAI,WAAW8C,GAAqB,KAAK7D,IAAM,QAAQ,QACtD,UAAA;AAAA,QAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,QAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,MAAA,EAAA,CAE7D;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAa,GAAM,cAAc;AC3Hb,MAAMI,KAAYzF;AAAA,EACvB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,aAAA6I;AAAA,IACA,UAAAhB;AAAA,IACA,gBAAAyB;AAAA,IACA,aAAAC;AAAA,IACA,aAAA3B;AAAA,IACA,gBAAAE;AAAA,IACA,eAAAoB,IAAgB;AAAA,IAChB,KAAAxE,IAAM;AAAA,IACN,OAAAuD,IAAQ;AAAA,IACR,UAAAhE,IAAW;AAAA,IACX,SAAAiE,IAAU;AAAA,IACV,WAAAlS;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CwJ,IAAqB9E,KAAO4E,IAAiBA,IAAiBT,GAC9DT,IAAqB1D,KAAOoD,IAAiBA,IAAiBF,GAC9D6B,IAAiB,CAAC,CAACZ,KAAe,CAAC,CAACS,GACpCjB,IAAiB,CAAC,CAACT,KAAe,CAAC,CAACE,GAGpCiB,IAAc3F;AAAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACD,KAAS,CAAChE,KAAY;AAAA,MACnC,CAACiE,KAAWD,KAAS,CAAChE,KAAY;AAAA,MAClCiE,KAAW,CAACjE,KAAY;AAAA;AAAA,MAExB,CAACA,KAAY,CAACiE,KAAW;AAAA,MACzB,CAACjE,KAAYiE,KAAW;AAAA;AAAA,MAExBA,KAAW,CAACjE,KAAY;AAAA;AAAA,MAExBA,KAAY;AAAA;AAAA,MAEZiF,MAAkB,aAAa,CAACxE,KAAO;AAAA,MACvCA,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIImT,IAAkB/F;AAAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,CAAC8E,KAAW,CAACD,KAAS,CAAChE,KAAY;AAAA,MACnC,CAACiE,KAAWD,KAAS,CAAChE,KAAY;AAAA,MAClCiE,KAAW,CAACjE,KAAY;AAAA;AAAA,MAExB,CAACA,KAAY,CAACiE,KAAW;AAAA,MACzB,CAACjE,KAAYiE,KAAW;AAAA;AAAA,MAExB;AAAA,MACA;AAAA,IAAA,GAIIkB,IAAkBhG;AAAAA,MACtB;AAAA,MACA;AAAA,MACA8E,KAAW,CAACjE,KAAY;AAAA,MACxBiE,KAAW,CAACjE,KAAY;AAAA,IAAA,GAIpByF,IAAwBtG;AAAAA,MAC5B;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHiF,IAAqBvG;AAAAA,MACzB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHsE,IAAqB5F;AAAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHkF,IAA0BxG;AAAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA;AAGT,WACE,gBAAAe,EAAC,SAAA,EAAM,WAAWsD,GAEhB,UAAA;AAAA,MAAA,gBAAAxD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,MAAK;AAAA,UACL,SAAAqD;AAAA,UACA,UAAAjE;AAAA,UACA,WAAU;AAAA,UACT,GAAGW;AAAA,QAAA;AAAA,MAAA;AAAA,MAIN,gBAAAa,EAAC,OAAA,EAAI,WAAWiE,GAEb,UAAA;AAAA,QAAAH,uBACE,OAAA,EAAI,WAAU,6EACZ,UAAA,OAAOA,KAAgB,WACtB,gBAAAhE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKgE;AAAA,YACL,KAAI;AAAA,YACJ,WAAU;AAAA,UAAA;AAAA,QAAA,IAGZA,EAAA,CAEJ;AAAA,0BAID,OAAA,EAAI,WAAWI,GAAoB,KAAKjF,IAAM,QAAQ,QACrD,UAAA;AAAA,UAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,UAC5CsB,KACC,gBAAAlE,EAAC,QAAA,EAAK,WAAWyD,GAAqB,UAAAQ,EAAA,CAAmB;AAAA,QAAA,GAE7D;AAAA,QAGCnB,KACC,gBAAA9C,EAAC,OAAA,EAAI,WAAWqE,GAA0B,UAAAxB,EAAA,CAAmB;AAAA,MAAA,GAEjE;AAAA,MAGA,gBAAA3C,EAAC,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,QAAA,gBAAAF,EAAC,OAAA,EAAI,WAAW4D,GAEb,UAAAjB,uBAAY,OAAA,EAAI,WAAWkB,GAAiB,EAAA,CAC/C;AAAA,QAGA,gBAAA7D;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAiG,GAAU,cAAc;ACrKjB,MAAMQ,KAASjG;AAAA,EACpB,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,KAAAgG,IAAM;AAAA,IACN,KAAAC,IAAM;AAAA,IACN,MAAAC,IAAO;AAAA,IACP,OAAA7R;AAAA,IACA,cAAA8R,IAAe;AAAA,IACf,WAAAC,IAAY;AAAA,IACZ,YAAAC,IAAa;AAAA,IACb,OAAAnK;AAAA,IACA,UAAA6H;AAAA,IACA,YAAAuC;AAAA,IACA,eAAAC;AAAA,IACA,KAAA3F,IAAM;AAAA,IACN,OAAAuD,IAAQ;AAAA,IACR,UAAAhE,IAAW;AAAA,IACX,aAAAqG,IAAc,CAACC,MAAQA,EAAI,SAAA;AAAA,IAC3B,UAAAC;AAAA,IACA,WAAAxU;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAAC4F,GAAeC,CAAgB,IAAIC,GAASxS,KAAS8R,CAAY,GAClE,CAACW,GAAYC,CAAa,IAAIF,GAAS,EAAK,GAC5CG,IAAYC,GAAuB,IAAI,GAEvCC,IAAe7S,KAASsS,GACxBQ,KAAeD,IAAelB,MAAQC,IAAMD,KAAQ,KAEpD3B,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CkL,IAAoBxG,KAAO2F,IAAgBA,IAAgBD,GAwB3DzU,IArBa;AAAA,MACjB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,YAAY;AAAA,MAAA;AAAA,MAEd,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,YAAY;AAAA,MAAA;AAAA,MAEd,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,YAAY;AAAA,MAAA;AAAA,IACd,EAGwBmO,CAAI;AAE9B,IAAAqH,GAAU,MAAM;AACd,MAAIhT,MAAU,UACZuS,EAAiBvS,CAAK;AAAA,IAE1B,GAAG,CAACA,CAAK,CAAC;AAEV,UAAMiT,IAAe,CAACC,MAA2C;AAC/D,YAAMC,IAAW,WAAWD,EAAE,OAAO,KAAK;AAC1C,MAAIlT,MAAU,UACZuS,EAAiBY,CAAQ,GAE3Bd,KAAA,QAAAA,EAAWa;AAAA,IACb,GAGME,IAAenI;AAAAA,MACnB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPsO,KAAY;AAAA,IAAA,GAIRuH,IAAcpI;AAAAA,MAClB;AAAA,MACA;AAAA,MACA6E,KAAS,CAAChE,IAAW,kBAAkB;AAAA,MACvCA,KAAY;AAAA,MACZS,IAAM,YAAY;AAAA,IAAA,GAId+G,IAAerI;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPsS,KAAS,CAAChE,IAAW,sBAAsB;AAAA,MAC3CA,KAAY;AAAA,MACZ2G,KAAc;AAAA,IAAA,GAIVpC,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACP+O,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRyH,IAAoBtI;AAAAA,MACxB;AAAA,MACA;AAAA,MACA6E,KAAS,CAAChE,KAAY;AAAA,MACtBS,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIR0H,KAAoBvI;AAAAA,MACxB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACP;AAAA,OACCiV,KAAcV,MAAc;AAAA,IAAA,GAIzB0B,KAAqBxI;AAAAA,MACzB;AAAA,MACAa,KAAY;AAAA,IAAA;AAGd,6BACG,OAAA,EAAI,WAAWb,EAAG,0BAA0B,UAAUpN,CAAS,GAE5D,UAAA;AAAA,OAAAgK,KAAS6H,wBACR,SAAA,EAAM,WAAWW,GAAc,KAAK9D,IAAM,QAAQ,QAChD,UAAAyD,EAAA,CACH;AAAA,MAIF,gBAAA1C,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,QAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKqF;AAAA,YACL,WAAU;AAAA,YACV,aAAa,MAAMD,EAAc,EAAI;AAAA,YACrC,WAAW,MAAMA,EAAc,EAAK;AAAA,YACpC,cAAc,MAAMA,EAAc,EAAK;AAAA,YAGvC,UAAA;AAAA,cAAA,gBAAApF,EAAC,OAAA,EAAI,WAAW8F,GAEd,UAAA;AAAA,gBAAA,gBAAAhG;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWiG;AAAA,oBACX,OAAO,EAAE,OAAO,GAAGP,CAAU,IAAA;AAAA,kBAAI;AAAA,gBAAA;AAAA,gBAInC,gBAAA1F;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWkG;AAAA,oBACX,OAAO;AAAA,sBACL,CAAC/G,IAAM,UAAU,MAAM,GAAG,QAAQuG,CAAU,OAAOtV,EAAO,UAAU,YAAY,QAAQA,EAAO,UAAU,YAAY,QAAQ,MAAM;AAAA,oBAAA;AAAA,oBAIrI,4BAAC,OAAA,EAAI,WAAWgW,IACb,UAAArB,EAAYU,CAAY,EAAA,CAC3B;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,GACF;AAAA,cAGA,gBAAAzF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAAV;AAAA,kBACA,MAAK;AAAA,kBACL,KAAAiF;AAAA,kBACA,KAAAC;AAAA,kBACA,MAAAC;AAAA,kBACA,OAAOgB;AAAA,kBACP,UAAA/G;AAAA,kBACA,UAAUmH;AAAA,kBACV,aAAa,MAAMP,EAAc,EAAI;AAAA,kBACrC,WAAW,MAAMA,EAAc,EAAK;AAAA,kBACpC,cAAc,MAAMA,EAAc,EAAI;AAAA,kBACtC,YAAY,MAAMA,EAAc,EAAK;AAAA,kBACrC,WAAU;AAAA,kBACV,KAAKnG,IAAM,QAAQ;AAAA,kBAClB,GAAGE;AAAA,gBAAA;AAAA,cAAA;AAAA,YACN;AAAA,UAAA;AAAA,QAAA;AAAA,QAIDuF,uBACE,OAAA,EAAI,WAAW/G,EAAG,6BAA6BsB,KAAO,kBAAkB,GACvE,UAAA;AAAA,UAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWqG,IAAqB,UAAAtB,EAAYR,CAAG,GAAE;AAAA,4BACtD,QAAA,EAAK,WAAW8B,IAAqB,UAAAtB,EAAYP,CAAG,EAAA,CAAE;AAAA,QAAA,EAAA,CACzD;AAAA,MAAA,GAEJ;AAAA,OAGEK,KAAcC,MACd,gBAAA9E,EAAC,KAAA,EAAE,WAAWmG,GAAmB,KAAKhH,IAAM,QAAQ,QACjD,UAAAwG,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEArB,GAAO,cAAc;AC/Nd,MAAMgC,KAASjI;AAAA,EACpB,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,OAAA9D;AAAA,IACA,UAAA6H;AAAA,IACA,aAAAD;AAAA,IACA,gBAAAE;AAAA,IACA,eAAAgE,IAAgB;AAAA,IAChB,UAAAC,IAAW;AAAA,IACX,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,KAAAvH,IAAM;AAAA,IACN,OAAAuD,IAAQ;AAAA,IACR,UAAAhE,IAAW;AAAA,IACX,SAAAiE,IAAU;AAAA,IACV,iBAAAgE;AAAA,IACA,UAAA1B;AAAA,IACA,WAAAxU;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CoI,IAAqB1D,KAAOoD,IAAiBA,IAAiBF,GAC9DS,IAAiB,CAAC,CAACT,KAAe,CAAC,CAACE,GA2BpCnS,IAxBa;AAAA,MACjB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR,EAGwBmO,CAAI,GAExBsH,IAAe,CAACC,MAA2C;AAC/D,MAAAb,KAAA,QAAAA,EAAWa,IACXa,KAAA,QAAAA,EAAkBb,EAAE,OAAO;AAAA,IAC7B,GAGME,IAAenI;AAAAA,MACnB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPA,EAAO;AAAA;AAAA,MAEP,CAACuS,KAAW,CAACD,KAAS,CAAChE,KAAY;AAAA,MACnC,CAACiE,KAAWD,KAAS,CAAChE,KAAY;AAAA,MAClCiE,KAAW,CAACjE,KAAY;AAAA;AAAA,MAExB,CAACA,KAAY,CAACiE,KAAW;AAAA,MACzB,CAACjE,KAAYiE,KAAW;AAAA;AAAA,MAExBjE,KAAY;AAAA,IAAA,GAIRwH,IAAerI;AAAAA,MACnB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPuS,KAAWvS,EAAO;AAAA,MAClB+O,KAAOwD,KAAW;AAAA,MAClBxD,KAAO,CAACwD,KAAW,IAAIvS,EAAO,SAAS;AAAA,IAAA,GAInC2R,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAiF,IAAiB,gBAAgB;AAAA,MACjCyD,MAAkB,aAAa,CAACpH,KAAO;AAAA,MACvCA,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIIuS,IAAsBnF;AAAAA,MAC1B;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRwE,IAAqBrF;AAAAA,MACzB;AAAA,MACA;AAAA,MACA6E,KAAS,CAAChE,KAAY;AAAA,MACtBS,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA;AAGd,WACE,gBAAAwB,EAAC,SAAA,EAAM,WAAW6B,GAChB,UAAA;AAAA,MAAA,gBAAA7B,EAAC,OAAA,EAAI,WAAU,YAEb,UAAA;AAAA,QAAA,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAAV;AAAA,YACA,MAAK;AAAA,YACL,MAAK;AAAA,YACL,gBAAcqD;AAAA,YACd,SAAAA;AAAA,YACA,UAAAjE;AAAA,YACA,UAAUmH;AAAA,YACV,WAAU;AAAA,YACT,GAAGxG;AAAA,UAAA;AAAA,QAAA;AAAA,0BAIL,OAAA,EAAI,WAAW2G,GAEd,UAAA,gBAAA9F,EAAC,OAAA,EAAI,WAAWgG,GAEb,UAAA;AAAA,UAAAO,KAAU9D,uBACR,OAAA,EAAI,WAAW9E,EAAG,oCAAoCzN,EAAO,IAAI,GAC/D,UAAAqW,EAAA,CACH;AAAA,UAEDC,KAAW,CAAC/D,KACX,gBAAA3C,EAAC,OAAA,EAAI,WAAWnC,EAAG,oCAAoCzN,EAAO,IAAI,GAC/D,UAAAsW,EAAA,CACH;AAAA,UAGD,CAACD,KAAU,CAACC,KAAWF,KAAY7D,KAClC,gBAAA3C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWnC,EAAG,0CAA0CzN,EAAO,IAAI;AAAA,cACnE,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,QAAO;AAAA,cACP,aAAa;AAAA,cAEb,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,GAAE,iBAAA,CAAiB;AAAA,YAAA;AAAA,UAAA;AAAA,QACxE,EAAA,CAEJ,EAAA,CACF;AAAA,QAGA,gBAAA4P;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,GACF;AAAA,OAGEpD,KAAS6H,MACT,gBAAApC,EAAC,OAAA,EAAI,WAAW8C,GAAqB,KAAK7D,IAAM,QAAQ,QACtD,UAAA;AAAA,QAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,QAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,MAAA,EAAA,CAE7D;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAyD,GAAO,cAAc;ACjNrB,MAAMM,KAAcC,GAA4C,MAAS,GAEnEC,KAAiB,MAAM;AAC3B,QAAMC,IAAUC,GAAWJ,EAAW;AACtC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,qDAAqD;AAEvE,SAAOA;AACT,GAoBaE,KAAO,CAAC;AAAA,EACnB,cAAAvC;AAAA,EACA,OAAOwC;AAAA,EACP,UAAAjC;AAAA,EACA,SAAA3G,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,WAAAI,IAAY;AAAA,EACZ,UAAAS;AAAA,EACA,WAAA3O;AAAA,EACA,GAAG4O;AACL,MAAiB;AACf,QAAM,CAAC6F,GAAeC,CAAgB,IAAIC,GAASV,KAAgB,EAAE,GAC/DyC,IAAYD,MAAoB,SAAYA,IAAkBhC,GAE9DkC,IAAkB,CAACrB,MAAqB;AAC5C,IAAImB,MAAoB,UACtB/B,EAAiBY,CAAQ,GAE3Bd,KAAA,QAAAA,EAAWc;AAAA,EACb;AAEA,SACE,gBAAA/F;AAAA,IAAC4G,GAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL,WAAAO;AAAA,QACA,cAAcC;AAAA,QACd,SAAA9I;AAAA,QACA,MAAAC;AAAA,QACA,WAAAI;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAqB,EAAC,SAAI,WAAWnC,EAAG,cAAcpN,CAAS,GAAI,GAAG4O,GAC9C,UAAAD,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN,GAOaiI,KAAW,CAAC,EAAE,UAAAjI,GAAU,WAAA3O,GAAW,GAAG4O,QAA2B;AAC5E,QAAM,EAAE,SAAAf,GAAS,WAAAK,EAAA,IAAcmI,GAAA,GAEzBQ,IAAczJ;AAAAA,IAClB;AAAA,IACA;AAAA,IACAc,IAAY,WAAW;AAAA,IACvBL,MAAY,UAAU;AAAA,IACtBA,MAAY,eAAe;AAAA,IAC3BA,MAAY,WAAW;AAAA,IACvB7N;AAAA,EAAA;AAGF,SACE,gBAAAuP,EAAC,SAAI,WAAWsH,GAAa,MAAK,WAAW,GAAGjI,GAC7C,UAAAD,GACH;AAEJ,GAgBamI,KAAM,CAAC;AAAA,EAClB,OAAA3U;AAAA,EACA,UAAAwM;AAAA,EACA,UAAAV,IAAW;AAAA,EACX,MAAAM;AAAA,EACA,OAAAwI;AAAA,EACA,WAAA/W;AAAA,EACA,SAAAgX;AAAA,EACA,GAAGpI;AACL,MAAgB;AACd,QAAM,EAAE,WAAA8H,GAAW,cAAAO,GAAc,SAAApJ,GAAS,MAAAC,GAAM,WAAAI,EAAA,IAAcmI,GAAA,GACxDa,IAAWR,MAAcvU,GAEzBgV,IAAc,CAAC9B,MAA2C;AAC9D,IAAKpH,MACHgJ,EAAa9U,CAAK,GAClB6U,KAAA,QAAAA,EAAU3B;AAAA,EAEd,GAqBM1V,IAlBa;AAAA,IACjB,IAAI;AAAA,MACF,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,IAAA;AAAA,IAEP,IAAI;AAAA,MACF,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,IAAA;AAAA,IAEP,IAAI;AAAA,MACF,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,IAAA;AAAA,EACP,EAGwBmO,CAAI,GAGxBsJ,IAAahK;AAAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACAzN,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPuO,KAAa;AAAA,IACbD,KAAY;AAAA,IACZ,CAACA,KAAY;AAAA;AAAA,IAGbJ,MAAY,UAAU;AAAA,MACpB;AAAA,MACA,CAACqJ,KAAY;AAAA,MACb,CAACA,KAAY,CAACjJ,KAAY;AAAA,MAC1BiJ,KAAY;AAAA,IAAA;AAAA,IAGdrJ,MAAY,eAAe;AAAA,MACzB;AAAA,MACA,CAACqJ,KAAY;AAAA,MACb,CAACA,KAAY,CAACjJ,KAAY;AAAA,MAC1BiJ,KAAY;AAAA,IAAA;AAAA,IAGdrJ,MAAY,WAAW;AAAA,MACrB;AAAA,MACA,CAACqJ,KAAY;AAAA,MACb,CAACA,KAAY,CAACjJ,KAAY;AAAA,MAC1BiJ,KAAY;AAAA,IAAA;AAAA,IAGdlX;AAAA,EAAA;AAGF,SACE,gBAAAyP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,iBAAeyH;AAAA,MACf,iBAAejJ;AAAA,MACf,UAAAA;AAAA,MACA,WAAWmJ;AAAA,MACX,SAASD;AAAA,MACR,GAAGvI;AAAA,MAEH,UAAA;AAAA,QAAAL,KAAQ,gBAAAgB,EAAC,QAAA,EAAK,WAAU,oCAAoC,UAAAhB,GAAK;AAAA,QAClE,gBAAAgB,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAAZ,EAAA,CAAS;AAAA,QAC3CoI,MAAU,UACT,gBAAAxH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnC;AAAAA,cACT;AAAA,cACA;AAAA,cACA8J,IACI,kDACA;AAAA,YAAA;AAAA,YAGL,UAAAH;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,GAUaM,KAAc,CAAC;AAAA,EAC1B,OAAAlV;AAAA,EACA,UAAAwM;AAAA,EACA,WAAA3O;AAAA,EACA,GAAG4O;AACL,MAAwB;AACtB,QAAM,EAAE,WAAA8H,EAAA,IAAcL,GAAA;AAGtB,SAFiBK,MAAcvU,IAK7B,gBAAAoN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWnC,EAAG,sBAAsB,QAAQpN,CAAS;AAAA,MACpD,GAAG4O;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA,IARiB;AAWxB;AAEA6H,GAAK,cAAc;AACnBI,GAAS,cAAc;AACvBE,GAAI,cAAc;AAClBO,GAAY,cAAc;AChNnB,MAAMC,KAAQ1J;AAAA,EACnB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,UAAA6H;AAAA,IACA,UAAA0F;AAAA,IACA,aAAAC;AAAA,IACA,OAAAvF;AAAA,IACA,UAAAwF;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,aAAApE;AAAA,IACA,cAAAqE;AAAA,IACA,QAAAlU;AAAA,IACA,QAAAmU;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,KAAAtJ,IAAM;AAAA,IACN,UAAAuJ,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,SAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,WAAAnK,IAAY;AAAA,IACZ,oBAAAoK;AAAA,IACA,UAAArK,IAAW;AAAA,IACX,WAAAjO;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CuO,IAAkB7J,KAAO8I,IAAcA,IAAcD,GACrDiB,IAAe9J,KAAO+I,IAAWA,IAAWxF,GAC5CwG,IAAiB/J,KAAOiJ,IAAaA,IAAaD,GAElDgB,IAAW,CAAC,CAACzG,KAAS,CAAC,CAACwF,GACxBkB,IAAa,CAAC,CAACjB,KAAW,CAAC,CAACC,GA8B5B7J,IA3Ba;AAAA,MACjB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,SAASyF,KAAe7P,IAAS,SAAS;AAAA,QAC1C,cAAckU,KAAgBC,KAAUG,KAAYG,IAAY,SAAS;AAAA,QACzE,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,MAAA;AAAA,MAErB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,SAAS5E,KAAe7P,IAAS,UAAU;AAAA,QAC3C,cAAckU,KAAgBC,KAAUG,KAAYG,KAAaL,IAAe,UAAU;AAAA,QAC1F,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,MAAA;AAAA,MAErB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,SAASvE,KAAe7P,IAAS,UAAU;AAAA,QAC3C,cAAckU,KAAgBC,KAAUG,KAAYG,IAAY,UAAU;AAAA,QAC1E,MAAM;AAAA,QACN,cAAc;AAAA,QACd,mBAAmB;AAAA,MAAA;AAAA,IACrB,EAGsBE,CAAS,GAG3B/G,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAc,IAAY,WAAW;AAAA,MACvBQ,KAAO;AAAA,MACP4J;AAAA,IAAA,GAII9F,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIR2K,KAAsBxL;AAAAA,MAC1B;AAAA,MACA;AAAA,MACAc,KAAa;AAAA,IAAA,GAIT2K,KAAezL;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAU,EAAK;AAAA,MACL,CAACY,KAAOZ,EAAK;AAAA,MACb,CAACY,KAAOZ,EAAK;AAAA,MACbY,MAAQkJ,KAAgBC,KAAUG,KAAYG,KAAaL,IAAehK,EAAK,UAAUA,EAAK;AAAA,MAC9FY,MAAQ6E,KAAe7P,IAASoK,EAAK,eAAeA,EAAK;AAAA;AAAA,MAEzD,CAAC4K,KAAY,CAACC,KAAc,CAAC1K,KAAY;AAAA,MACzC,CAACyK,KAAY,CAACC,KAAc,CAAC1K,KAAY;AAAA,MACzCyK,KAAY,CAACzK,KAAY;AAAA,MACzB0K,KAAc,CAAC1K,KAAY;AAAA,MAC3BA,KAAY;AAAA;AAAA,MAEZS,KAAO;AAAA;AAAA,MAEPoJ,KAAgB,CAACpJ,KAAO;AAAA,MACxBoJ,KAAgBpJ,KAAO;AAAA,MACvB1O;AAAA,IAAA,GAII8Y,IAAiB1L;AAAAA,MACrB;AAAA,MACA;AAAA,MACCsB,IAA0BZ,EAAK,oBAAzBA,EAAK;AAAA,MACZ;AAAA,MACAG,KAAY;AAAA,IAAA,GAIR8K,IAAkB3L;AAAAA,MACtB;AAAA,MACA;AAAA,MACCsB,IAA+BZ,EAAK,eAA9BA,EAAK;AAAA,MACZ;AAAA,MACAG,KAAY;AAAA,IAAA,GAIR+K,KAAsB5L;AAAAA,MAC1B;AAAA,MACA;AAAA,MACCsB,IAAkB,WAAZ;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAT,KAAY;AAAA,IAAA,GAIRgL,KAAiB7L;AAAAA,MACrB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPgK,KAAY;AAAA,MACZC,KAAc;AAAA,MACd,CAACD,KAAY,CAACC,KAAc;AAAA,MAC5B1K,KAAY;AAAA,IAAA;AAGd,WACE,gBAAAwB,EAAC,OAAA,EAAI,WAAW6B,GAEb,UAAA;AAAA,MAAAa,uBACE,SAAA,EAAM,WAAWK,GAAc,KAAK9D,IAAM,QAAQ,QAChD,UAAA;AAAA,QAAAyD;AAAA,QACA+F,KAAY,gBAAA3I,EAAC,QAAA,EAAK,WAAU,wBAAuB,UAAA,KAAC;AAAA,QACpD0I,KACC,gBAAA1I,EAAC,QAAA,EAAK,WAAU,6CAA4C,UAAA,aAAA,CAE5D;AAAA,MAAA,GAEJ;AAAA,MAIF,gBAAAE,EAAC,OAAA,EAAI,WAAWmJ,IAEZ,UAAA;AAAA,SAAArF,KAAe7P,MACf,gBAAA+L,EAAC,OAAA,EAAI,WAAWqJ,GACb,UAAA;AAAA,UAAAvF,KAAe,gBAAAhE,EAAC,QAAA,EAAK,WAAWzB,EAAK,MAAO,UAAAyF,GAAY;AAAA,UACxD7P,KAAU,gBAAA6L,EAAC,QAAA,EAAK,WAAU,WAAW,UAAA7L,EAAA,CAAO;AAAA,QAAA,GAC/C;AAAA,QAIF,gBAAA6L;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAAV;AAAA,YACA,UAAAZ;AAAA,YACA,UAAAiK;AAAA,YACA,KAAKxJ,IAAM,QAAQ;AAAA,YACnB,WAAWmK;AAAA,YACV,GAAGjK;AAAA,UAAA;AAAA,QAAA;AAAA,SAIJgJ,KAAgBC,KAAUG,KAAYG,MACtC,gBAAA1I,EAAC,OAAA,EAAI,WAAWsJ,GACb,UAAA;AAAA,UAAAZ,KAAavJ,EAAM,SAAS,CAACX,KAC5B,gBAAAsB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS6I;AAAA,cACT,WAAU;AAAA,cAEV,UAAA,gBAAA7I,EAAC2J,IAAA,EAAE,WAAU,UAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAG1BrB,KAAU,gBAAAtI,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAsI,GAAO;AAAA,UAC5CG,KACC,gBAAAzI,EAAC,QAAA,EAAK,WAAU,gIACb,UAAAyI,GACH;AAAA,UAEDJ,KAAgB,gBAAArI,EAAC,QAAA,EAAK,WAAWzB,EAAK,MAAO,UAAA8J,EAAA,CAAa;AAAA,QAAA,GAC7D;AAAA,QAIDE,KACC,gBAAAvI;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAASwI;AAAA,YACT,UAAA9J;AAAA,YACA,WAAW+K;AAAA,YAEV,UAAAlB;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,GAEJ;AAAA,OAGES,KAAmBC,KAAgBC,MACnC,gBAAAlJ,EAAC,OAAA,EAAI,WAAW0J,IAAgB,KAAKvK,IAAM,QAAQ,QAChD,UAAA8J,KAAgBC,KAAkBF,EAAA,CACrC;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAjB,GAAM,cAAc;ACpQb,MAAM6B,KAAcvL;AAAA,EACzB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,UAAA6H;AAAA,IACA,UAAA0F;AAAA,IACA,aAAAC;AAAA,IACA,OAAAvF;AAAA,IACA,UAAAwF;AAAA,IACA,OAAAtV,IAAQ;AAAA,IACR,UAAAqS;AAAA,IACA,KAAAV;AAAA,IACA,KAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,KAAAtF,IAAM;AAAA,IACN,aAAA0K,IAAc;AAAA,IACd,WAAAlL,IAAY;AAAA,IACZ,oBAAAoK;AAAA,IACA,UAAArK,IAAW;AAAA,IACX,WAAAjO;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CuO,IAAkB7J,KAAO8I,IAAcA,IAAcD,GACrDiB,IAAe9J,KAAO+I,IAAWA,IAAWxF,GAE5CyG,IAAW,CAAC,CAACzG,KAAS,CAAC,CAACwF,GAExB4B,IAAkB,MAAM;AAC5B,UAAIpL,EAAU;AACd,YAAMqH,IAAWnT,IAAQ6R;AACzB,MAAID,MAAQ,UAAauB,IAAWvB,KACpCS,KAAA,QAAAA,EAAWc;AAAA,IACb,GAEMgE,IAAkB,MAAM;AAC5B,UAAIrL,EAAU;AACd,YAAMqH,IAAWnT,IAAQ6R;AACzB,MAAIF,MAAQ,UAAawB,IAAWxB,KACpCU,KAAA,QAAAA,EAAWc;AAAA,IACb,GAEMF,IAAe,CAACC,MAA2C;AAC/D,YAAMC,IAAW,WAAWD,EAAE,OAAO,KAAK,KAAK;AAC/C,MAAIvB,MAAQ,UAAawB,IAAWxB,KAChCC,MAAQ,UAAauB,IAAWvB,KACpCS,KAAA,QAAAA,EAAWc;AAAA,IACb,GAGMhE,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAc,IAAY,WAAW;AAAA,MACvBQ,KAAO;AAAA,MACP4J;AAAA,IAAA,GAII9F,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIR2K,IAAsBxL;AAAAA,MAC1B;AAAA,MACA;AAAA,MACAc,KAAa;AAAA,IAAA,GAIT2K,IAAezL;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAgM,KAAe,CAAC1K,KAAO;AAAA,MACvB0K,KAAe1K,KAAO;AAAA,MACtB,CAAC0K,KAAe;AAAA;AAAA,MAEhB,CAACV,KAAY,CAACzK,KAAY;AAAA,MAC1B,CAACyK,KAAY,CAACzK,KAAY;AAAA,MAC1ByK,KAAY,CAACzK,KAAY;AAAA,MACzBA,KAAY;AAAA;AAAA,MAEZS,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIIwP,IAAgBpC;AAAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAa,KAAY;AAAA,IAAA,GAIRgL,IAAiB7L;AAAAA,MACrB;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACPgK,KAAY;AAAA,MACZ,CAACA,KAAY;AAAA,MACbzK,KAAY;AAAA,IAAA;AAGd,WACE,gBAAAwB,EAAC,OAAA,EAAI,WAAW6B,GAEb,UAAA;AAAA,MAAAa,KACC,gBAAA5C,EAAC,WAAM,WAAWiD,GAAc,KAAK9D,IAAM,QAAQ,QAChD,UAAAyD,EAAA,CACH;AAAA,MAIF,gBAAA1C,EAAC,OAAA,EAAI,WAAWmJ,GAEb,UAAA;AAAA,QAAAQ,KACC,gBAAA7J;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS+J;AAAA,YACT,UAAUrL,KAAa6F,MAAQ,UAAa3R,KAAS2R;AAAA,YACrD,WAAW1G,EAAGoC,GAAgBd,IAAiB,YAAX,QAAoB;AAAA,YAExD,UAAA,gBAAAa,EAACoD,IAAA,EAAM,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAK/B,gBAAApD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAAV;AAAA,YACA,MAAK;AAAA,YACL,OAAA1M;AAAA,YACA,UAAUiT;AAAA,YACV,KAAAtB;AAAA,YACA,KAAAC;AAAA,YACA,MAAAC;AAAA,YACA,UAAA/F;AAAA,YACA,KAAKS,IAAM,QAAQ;AAAA,YACnB,WAAWmK;AAAA,YACV,GAAGjK;AAAA,UAAA;AAAA,QAAA;AAAA,QAILwK,KACC,gBAAA7J;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS8J;AAAA,YACT,UAAUpL,KAAa8F,MAAQ,UAAa5R,KAAS4R;AAAA,YACrD,WAAW3G,EAAGoC,GAAgBd,IAAkB,WAAZ,SAAoB;AAAA,YAExD,UAAA,gBAAAa,EAACgK,IAAA,EAAK,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5B,GAEJ;AAAA,OAGEhB,KAAmBC,MACnB,gBAAAjJ,EAAC,OAAA,EAAI,WAAW0J,GAAgB,KAAKvK,IAAM,QAAQ,QAChD,UAAA8J,KAAgBD,EAAA,CACnB;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAY,GAAY,cAAc;ACzLnB,MAAMK,KAAgB5L;AAAA,EAC3B,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,aAAA4H;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAA2H,IAAW;AAAA,IACX,UAAAxL,IAAW;AAAA,IACX,MAAAuC,IAAO;AAAA,IACP,MAAMkJ;AAAA,IACN,YAAAC;AAAA,IACA,KAAAjL,IAAM;AAAA,IACN,UAAA8F;AAAA,IACA,WAAAxU;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CoI,IAAqB1D,KAAOoD,IAAiBA,IAAiBF,GAC9DgI,IAAU,CAAC,CAACF,KAAQ,CAAC,CAACC,GACtBtH,IAAiB,CAAC,CAACT,KAAe,CAAC,CAACE,GAEpCqF,IAAc,MAAM;AACxB,MAAI,CAAClJ,KAAYuG,KACfA,EAAS,CAACiF,CAAQ;AAAA,IAEtB,GAEMI,IAAgB,CAACxE,MAA2B;AAChD,MAAI,CAACpH,MAAaoH,EAAE,QAAQ,OAAOA,EAAE,QAAQ,aAC3CA,EAAE,eAAA,GACFb,KAAA,QAAAA,EAAW,CAACiF;AAAA,IAEhB,GAGMnI,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA,MAEA,CAACa,KAAY,CAACwL,KAAY;AAAA,MAC1B,CAACxL,KAAYwL,KAAY;AAAA,MACzB,CAACxL,KAAY;AAAA,MACbA,KAAY;AAAA;AAAA,MAEZS,KAAO;AAAA,MACP1O;AAAA,IAAA,GAII8Z,IAAkB1M;AAAAA,MACtB;AAAA,MACA;AAAA;AAAA,MAEA,CAACqM,KAAY,CAACxL,KAAY;AAAA,MAC1BwL,KAAY,CAACxL,KAAY;AAAA,MACzBA,KAAY;AAAA;AAAA,MAEZ;AAAA,MACA;AAAA,IAAA,GAII8L,IAAiB3M;AAAAA,MACrB;AAAA,MACCoD,MAAS,eAAeoJ,KAAapJ,MAAS,aAAaoJ,IAAW,UAAU;AAAA,MACjFlL,KAAO;AAAA,IAAA,GAIHsL,IAAc5M;AAAAA,MAClB;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRwE,IAAqBrF;AAAAA,MACzB;AAAA,MACAsB,KAAO;AAAA,MACPT,KAAY;AAAA,IAAA,GAIRgM,IAAqB7M;AAAAA,MACzB;AAAA,MACAa,KAAY;AAAA,IAAA,GAGRiM,IAAiB,MACrB,gBAAA3K,EAAC,OAAA,EAAI,WAAWuK,GACb,UAAAL,KACC,gBAAAlK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,QAAO;AAAA,QACP,aAAY;AAAA,QAEZ,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,eAAc;AAAA,YACd,gBAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA,GAGN,GAGIyB,IAAa,MACb2I,IACK,gBAAApK,EAAC,OAAA,EAAI,WAAW0K,GAAqB,UAAAN,GAAW,IAErDD,IAEA,gBAAAnK,EAAC,SAAI,WAAW0K,GACd,4BAACP,GAAA,EAAK,WAAU,4BAA2B,EAAA,CAC7C,IAGG;AAqET,WACE,gBAAAnK;AAAA,MAHctB,IAAW,QAAQ;AAAA,MAGhC;AAAA,QACC,KAAAY;AAAA,QACA,WAAWyC;AAAA,QACX,SAAUrD,IAAyB,SAAdkJ;AAAA,QACrB,WAAYlJ,IAA2B,SAAhB4L;AAAA,QACvB,UAAA5L;AAAA,QACA,MAAOA,IAAwB,SAAb;AAAA,QAClB,gBAAeA,IAAsB,SAAXwL;AAAA,QAC1B,iBAAexL;AAAA,QACf,UAAWA,IAAe,SAAJ;AAAA,QACrB,GAAGW;AAAA,QAEH,UA7EC4B,MAAS,gBAAgB,CAAC6B,sBAEzB,OAAA,EAAI,WAAWjF,EAAG,kCAAkCsB,KAAO,kBAAkB,GAC3E,UAAA;AAAA,UAAAwL,EAAA;AAAA,UACD,gBAAA3K,EAAC,UAAK,WAAWiD,GAAc,KAAK9D,IAAM,QAAQ,QAC/C,UAAAyD,EAAA,CACH;AAAA,QAAA,GACF,IAKA3B,MAAS,cAET,gBAAAf,EAAAE,GAAA,EACG,UAAA;AAAA,UAAAuK,EAAA;AAAA,UACD,gBAAA3K,EAAC,OAAA,EAAI,WAAWwK,GACd,UAAA,gBAAAtK,EAAC,OAAA,EAAI,WAAWuK,GAAa,KAAKtL,IAAM,QAAQ,QAC9C,UAAA;AAAA,YAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,YAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,UAAA,EAAA,CAE7D,EAAA,CACF;AAAA,QAAA,GACF,IAKA5B,MAAS,eAET,gBAAAf,EAAAE,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAWwK,GACd,UAAA,gBAAAtK,EAAC,OAAA,EAAI,WAAWuK,GAAa,KAAKtL,IAAM,QAAQ,QAC9C,UAAA;AAAA,YAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,YAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,UAAA,EAAA,CAE7D,EAAA,CACF;AAAA,UACC8H,EAAA;AAAA,QAAe,GAClB,IAMF,gBAAAzK,EAAAE,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWsK,GACb,UAAA;AAAA,YAAA/I,EAAA;AAAA,8BACA,OAAA,EAAI,WAAWgJ,GAAa,KAAKtL,IAAM,QAAQ,QAC9C,UAAA;AAAA,cAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,cAC5CE,KACC,gBAAA9C,EAAC,QAAA,EAAK,WAAWkD,GAAqB,UAAAL,EAAA,CAAmB;AAAA,YAAA,EAAA,CAE7D;AAAA,UAAA,GACF;AAAA,UACC8H,EAAA;AAAA,QAAe,GAClB;AAAA,MAmBe;AAAA,IAAA;AAAA,EAGrB;AACF;AAEAV,GAAc,cAAc;AC9NrB,MAAMW,KAAWvM;AAAA,EACtB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,SAAAkI,IAAU;AAAA,IACV,UAAAsC;AAAA,IACA,iBAAA0B;AAAA,IACA,MAAApI,IAAO;AAAA,IACP,KAAAY,IAAM;AAAA,IACN,UAAAT,IAAW;AAAA,IACX,WAAAjO;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMuG,IAAe,MAAM;AACzB,MAAIZ,KAAUA,EAAS,CAACtC,CAAO,GAC3BgE,KAAiBA,EAAgB,CAAChE,CAAO;AAAA,IAC/C,GAwBMvS,IArBa;AAAA,MACjB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,IAAI;AAAA,QACF,OAAO;AAAA,QACP,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,MAAA;AAAA,IACtB,EAGwBmO,CAAI,GAGxByH,IAAenI;AAAAA,MACnB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA;AAAA,MAEPuS,IACI,wCACA;AAAA;AAAA,MAEJ;AAAA,MACAA,IACI,kDACA;AAAA;AAAA,MAEJjE,KAAY;AAAA,MACZ,CAACA,KAAY;AAAA;AAAA,MAEbS,KAAO;AAAA,IAAA,GAKH+G,IAAerI;AAAAA,MACnB;AAAA,MACAzN,EAAO;AAAA;AAAA;AAAA,MAGPuS,IAAUvS,EAAO,mBAAmBA,EAAO;AAAA;AAAA,MAE3C;AAAA,IAAA,GAII2R,IAAmBlE;AAAAA,MACvB;AAAA,MACAsB,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIIwS,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACAa,KAAY;AAAA,MACZ,CAACA,KAAY;AAAA,IAAA;AAGf,6BACG,SAAA,EAAM,WAAWqD,GAAkB,KAAK5C,IAAM,QAAQ,QACrD,UAAA;AAAA,MAAA,gBAAAa;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAAqD;AAAA,UACA,UAAUkD;AAAA,UACV,UAAAnH;AAAA,UACA,WAAU;AAAA,UACT,GAAGW;AAAA,QAAA;AAAA,MAAA;AAAA,MAEN,gBAAAW,EAAC,QAAA,EAAK,WAAWgG,GAAc,KAAK7G,IAAM,QAAQ,QAChD,UAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWkG,EAAA,CAAc,GACjC;AAAA,MACCzL,KAAS,gBAAAuF,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAxI,EAAA,CAAM;AAAA,IAAA,GAClD;AAAA,EAEJ;AACF;AAEAmQ,GAAS,cAAc;AC3FvB,SAAS/M,MAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAGA,MAAM+M,KAAgE;AAAA,EACpE,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAAA,EAEV,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAAA,EAEV,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAEZ,GAGMC,KAAkE;AAAA,EACtE,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAAA,EAEV,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAAA,EAEV,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA;AAEZ,GAGM9M,KAAwC;AAAA,EAC5C,IAAI;AAAA,EACJ,IAAI;AACN,GAGM+M,KAAuC;AAAA,EAC3C,IAAI;AAAA,EACJ,IAAI;AACN,GAGMC,KAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AACN,GAcaC,KAAQ5M;AAAA,EACnB,CACE;AAAA,IACE,MAAA4C,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,MAAA3C,IAAO;AAAA,IACP,OAAA2M,IAAQ;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,QAAAC;AAAA,IACA,UAAAhM;AAAA,IACA,aAAA4E;AAAA,IACA,cAAAqE;AAAA,IACA,UAAAgD;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,KAAApM,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAM6B,IAAQhC,GAGRmC,IAAczD;AAAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACAG,GAAWO,CAAI;AAAA,MACfsM,GAAc3J,CAAK,EAAEgK,CAAK;AAAA,MAC1B/J,KAAS;AAAA,MACT1Q;AAAA,IAAA,GAIIgR,IAAa,CAACzC,GAA0BwM,MAExC,OAAOxM,KAAS,WAEhB,gBAAAgB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKhB;AAAA,QACL,KAAI;AAAA,QACJ,WAAWnB;AAAAA,UACT;AAAA,UACA2N;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,IAOJ,gBAAAxL,EAAC,UAAK,WAAWnC;AAAAA,MACf;AAAA,MACA2N;AAAA,IAAA,GAEC,UAAAxM,GACH,GAKEyM,IAAY,MAEd,gBAAAzL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnC;AAAAA,UACT;AAAA,UACAmN,GAASzM,CAAI;AAAA,UACbuM,GAAgB5J,CAAK,EAAEgK,CAAK;AAAA,QAAA;AAAA,MAC9B;AAAA,IAAA,GAMAQ,IAAa,MACbL,IACK5J,EAAW4J,GAAUN,GAAUxM,CAAI,CAAC,IAI3C,gBAAAyB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnC;AAAAA,UACT;AAAA,UACAkN,GAAUxM,CAAI;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA,GAMAoN,IAAmB,MAClBL,IAEH,gBAAAtL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKsL;AAAA,QACL,KAAKC;AAAA,QACL,WAAW1N;AAAAA,UACT;AAAA,UACAkN,GAAUxM,CAAI;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA,IARgB,MAoBhBqN,IAAiBT,KAAcC,MAAW,UAN3B,CAACS,MAChBA,IAAM,KAAW,QACdA,EAAI,SAAA,GAKIT,CAAM,IACnBhM;AAwDJ,WACE,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,KAAK6B,IAAQ,QAAQ;AAAA,QACrB,WAAWG;AAAA,QACV,GAAGjC;AAAA,QAEH,WA5DiB,MAAM;AAC1B,kBAAQ4B,GAAA;AAAA,YACN,KAAK;AACH,qBACE,gBAAAf,EAAAE,GAAA,EACG,UAAA;AAAA,gBAAA4D,KAAevC,EAAWuC,GAAa+G,GAAUxM,CAAI,CAAC;AAAA,gBACtDqN,KACC,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,EAAA,CAAe;AAAA,cAAA,GAE/C;AAAA,YAEJ,KAAK;AACH,qBACE,gBAAA1L,EAAAE,GAAA,EACG,UAAA;AAAA,gBAAAwL,KACC,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,GAAe;AAAA,gBAE5CvD,KAAgB5G,EAAW4G,GAAc0C,GAAUxM,CAAI,CAAC;AAAA,cAAA,GAC3D;AAAA,YAEJ,KAAK;AACH,qBACE,gBAAA2B,EAAAE,GAAA,EACG,UAAA;AAAA,gBAAAqL,EAAA;AAAA,gBACAG,KACC,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,EAAA,CAAe;AAAA,cAAA,GAE/C;AAAA,YAEJ,KAAK;AACH,qBACE,gBAAA1L,EAAAE,GAAA,EACG,UAAA;AAAA,gBAAAsL,EAAA;AAAA,gBACAE,KACC,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,EAAA,CAAe;AAAA,cAAA,GAE/C;AAAA,YAEJ,KAAK;AACH,qBACE,gBAAA1L,EAAAE,GAAA,EACG,UAAA;AAAA,gBAAAuL,EAAA;AAAA,gBACAC,KACC,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,EAAA,CAAe;AAAA,cAAA,GAE/C;AAAA,YAEJ,KAAK;AAAA,YACL;AACE,qBAAOA,KAAkB,gBAAA5L,EAAC,QAAA,EAAK,WAAU,YAAY,UAAA4L,GAAe;AAAA,UAAA;AAAA,QAE1E,GASK;AAAA,MAAc;AAAA,IAAA;AAAA,EAGrB;AACF;AAEAX,GAAM,cAAc;ACnTpB,MAAMa,KAAe;AAAA,EACnB,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEF,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEF,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEF,MAAM;AAAA,IACJ,MAAMC;AAAA,IACN,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEF,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EACF;AAEJ,GAEaC,KAAQ/N;AAAA,EACnB,CACE;AAAA,IACE,OAAA6C,IAAQ;AAAA,IACR,QAAAmL,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,SAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,eAAAC,IAAgB;AAAA,IAChB,iBAAAC,IAAkB;AAAA,IAClB,iBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,SAAAC;AAAA,IACA,KAAA3N,IAAM;AAAA,IACN,UAAA4N;AAAA,IACA,YAAAC;AAAA,IACA,kBAAAC,IAAmB;AAAA,IACnB,oBAAAC,IAAqB;AAAA,IACrB,WAAAzc;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMlP,IAAS0b,GAAaO,CAAM,GAC5BhL,IAASjR,EAAO,OAAO8Q,CAAK,GAC5BiJ,IAAO/Z,EAAO,MACd+Q,IAAQhC,GACRgO,IAAe,CAAC,CAACZ,GAEjBa,IAAejM,KAAS4L,IAAWA,IAAWT,GAC9Ce,IAAiBlM,KAAS6L,IAAaA,IAAaT,GACpDe,IAAuBnM,IAAQ8L,IAAmBR,GAClDc,IAAyBpM,IAAQ+L,IAAqBR,GAGtDpL,IAAczD;AAAAA,MAClB;AAAA,MACAwD,EAAO;AAAA,MACPA,EAAO;AAAA,MACPF,KAAS;AAAA,IAAA,GAILK,IAAc3D,EAAG,oBAAoBwD,EAAO,SAAS,GAGrDmM,IAAe3P;AAAAA,MACnB;AAAA,MACAwD,EAAO;AAAA,MACPF,IAAQ,eAAe;AAAA,IAAA,GAInBuI,IAAiB7L;AAAAA,MACrB;AAAA,MACAwD,EAAO;AAAA,MACPF,IAAQ,eAAe;AAAA,IAAA,GAInBsM,IAAgB5P;AAAAA,MACpB;AAAA,MACAwD,EAAO;AAAA,IAAA,GAIHqM,IAAe7P;AAAAA,MACnB;AAAA,MACAwD,EAAO;AAAA,IAAA;AAGT,WACE,gBAAAnB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWzB,EAAGyD,GAAa7Q,CAAS;AAAA,QACpC,KAAK0Q,IAAQ,QAAQ;AAAA,QACpB,GAAG9B;AAAA,QAGJ,UAAA;AAAA,UAAA,gBAAAa,EAAC,OAAA,EAAI,WAAU,iCAIb,UAAA;AAAA,YAAA,gBAAAF,EAACmK,GAAA,EAAK,WAAW3I,EAAA,CAAa;AAAA,YAG9B,gBAAAtB,EAAC,OAAA,EAAI,WAAU,8BAEb,UAAA;AAAA,cAAA,gBAAAF,EAAC,SAAI,WAAWwN,GAAc,KAAKrM,IAAQ,QAAQ,QAChD,UAAAiM,EAAA,CACH;AAAA,cAGCD,KAAgBE,KACf,gBAAArN,EAAC,OAAA,EAAI,WAAW0J,GAAgB,KAAKvI,IAAQ,QAAQ,QAClD,UAAAkM,EAAA,CACH;AAAA,cAIDb,KAAeW,KACd,gBAAAjN,EAAC,OAAA,EAAI,WAAWrC,EAAG,mBAAmBsD,KAAS,kBAAkB,GAC9D,UAAA;AAAA,gBAAAwL,KACC,gBAAA3M;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAS2M;AAAA,oBACT,WAAWc;AAAA,oBAEV,UAAAH;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGJV,KACC,gBAAA5M;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAS4M;AAAA,oBACT,WAAWa;AAAA,oBAEV,UAAAF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACH,EAAA,CAEJ;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA,GACF;AAAA,UAGCf,KAAe,CAACW,KAAgBR,KAC/B,gBAAA3M;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS2M;AAAA,cACT,WAAW9O,EAAG4P,GAAe,4BAA4B;AAAA,cAExD,UAAAH;AAAA,YAAA;AAAA,UAAA;AAAA,UAKJT,KAAYC,KACX,gBAAA9M;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS8M;AAAA,cACT,WAAWY;AAAA,cACX,cAAW;AAAA,cAEX,UAAA,gBAAA1N,EAAC2J,IAAA,EAAE,WAAU,UAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACzB;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAyC,GAAM,cAAc;ACtUpB,MAAMuB,KAAa;AAAA,EACjB,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAAA,EAElB,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAAA;AAEpB,GAEMC,KAAe;AAAA,EACnB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AACR,GAEaC,KAASxP;AAAA,EACpB,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,KAAAuP;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,UAAAC;AAAA,IACA,UAAAxH,IAAW;AAAA,IACX,QAAA6F,IAAS;AAAA,IACT,OAAA7N,IAAQ;AAAA,IACR,KAAAW,IAAM;AAAA,IACN,YAAA8O,IAAa;AAAA,IACb,WAAAxd;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMlP,IAASud,GAAWpP,CAAI,GACxB2P,IAAW,CAAC,CAACJ,GACbK,IAAc,CAAC,CAACH,KAAY,CAACE,GAC7BE,IAAiB5H,KAAY,CAAC0H,KAAY,CAACC,GAG3CpM,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPoO,MAAU,WAAW,iBAAiB;AAAA,MACtCyP,KAAc;AAAA,MACd9O,KAAO;AAAA,MACP1O;AAAA,IAAA,GAII4d,IAAsBxQ;AAAAA,MAC1B;AAAA,MACAW,MAAU,WAAW,iBAAiB;AAAA,IAAA,GAIlC8P,IAAgBzQ;AAAAA,MACpB;AAAA,MACAzN,EAAO;AAAA,MACPA,EAAO;AAAA,MACPwd,GAAavB,CAAM;AAAA,MACnBlN,KAAO;AAAA,IAAA;AAGT,WACE,gBAAAe,EAAC,OAAA,EAAI,KAAAZ,GAAU,WAAWyC,GAAkB,KAAK5C,IAAM,QAAQ,QAAY,GAAGE,GAE3E,UAAA;AAAA,MAAA6O,KACC,gBAAAlO,EAAC,OAAA,EAAI,WAAWqO,GACd,UAAA,gBAAArO;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAA8N;AAAA,UACA,KAAAC;AAAA,UACA,WAAU;AAAA,UACV,SAAS,CAACjI,MAAM;AAEd,YAAAA,EAAE,cAAc,MAAM,UAAU;AAAA,UAClC;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,MAIDqI,KACC,gBAAAnO;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWnC;AAAAA,YACT;AAAA,YACAzN,EAAO;AAAA,UAAA;AAAA,UAGR,UAAA4d;AAAA,QAAA;AAAA,MAAA;AAAA,MAKJI,uBACEG,IAAA,EAAK,WAAW1Q,EAAG,0CAA0CzN,EAAO,IAAI,GAAG;AAAA,MAI7Eic,MAAW,UAAU,gBAAArM,EAAC,OAAA,EAAI,WAAWsO,EAAA,CAAe;AAAA,IAAA,GACvD;AAAA,EAEJ;AACF;AAEAT,GAAO,cAAc;ACnLrB,MAAMF,KAAa;AAAA,EACjB,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,IAAI;AAAA,IACF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,EAAA;AAEV,GAEaa,KAAqBnQ;AAAA,EAChC,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,KAAAW,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMlP,IAASud,GAAWpP,CAAI,GAExBwD,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAzN,EAAO;AAAA,MACPoO,MAAU,WAAW,iBAAiB;AAAA,MACtCW,KAAO;AAAA,MACP1O;AAAA,IAAA,GAGI+Q,IAAc3D;AAAAA,MAClB;AAAA,MACAzN,EAAO;AAAA,IAAA;AAGT,WACE,gBAAA4P;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,MAAK;AAAA,QACL,WAAWyC;AAAA,QACX,KAAK5C,IAAM,QAAQ;AAAA,QAClB,GAAGE;AAAA,QAEJ,UAAA,gBAAAW,EAACgK,IAAA,EAAK,WAAWxI,EAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAGpC;AACF;AAEAgN,GAAmB,cAAc;AC3EjC,MAAMC,KAAoB;AAAA,EACxB,OAAO;AAAA,EACP,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT,GAEMC,KAAiB;AAAA,EACrB,OAAO;AAAA,EACP,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT,GAEaC,KAActQ;AAAA,EACzB,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,KAAAgG,IAAM;AAAA,IACN,SAAAoK;AAAA,IACA,KAAAzP,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMuP,IAAiBD,EAAQ,MAAM,GAAGpK,CAAG,GACrCsK,IAAiB,KAAK,IAAI,GAAGF,EAAQ,SAASpK,CAAG,GACjDuK,IAAeN,GAAkBlQ,CAAI,GACrCyQ,IAAYN,GAAenQ,CAAI,GAE/BwD,IAAmBlE;AAAAA,MACvB;AAAA,MACAsB,IAAM,qBAAqB;AAAA,MAC3B1O;AAAA,IAAA;AAGF,WACE,gBAAAyP,EAAC,OAAA,EAAI,KAAAZ,GAAU,WAAWyC,GAAkB,KAAK5C,IAAM,QAAQ,QAAY,GAAGE,GAC3E,UAAA;AAAA,MAAAwP,EAAe,IAAI,CAACI,GAAQva,MAC3B,gBAAAsL;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWnC;AAAAA,YACT;AAAA,YACAnJ,IAAQ,KAAK,CAACyK,KAAO4P;AAAA,YACrBra,IAAQ,KAAKyK,KAAO4P,EAAa,QAAQ,QAAQ,MAAM;AAAA,UAAA;AAAA,UAEzD,OAAO,EAAE,QAAQF,EAAe,SAASna,EAAA;AAAA,UAEzC,UAAA,gBAAAsL;AAAA,YAAC6N;AAAA,YAAA;AAAA,cACC,MAAAtP;AAAA,cACA,OAAAC;AAAA,cACA,KAAKyQ,EAAO;AAAA,cACZ,KAAKA,EAAO;AAAA,cACZ,UAAUA,EAAO;AAAA,cACjB,UAAUA,EAAO;AAAA,cACjB,YAAY;AAAA,cACZ,KAAA9P;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,QAjBKzK;AAAA,MAAA,CAmBR;AAAA,MAEAoa,IAAiB,KAChB,gBAAA5O;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWrC;AAAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA,CAACsB,KAAO4P;AAAA,YACR5P,KAAO4P,EAAa,QAAQ,QAAQ,MAAM;AAAA,YAC1CvQ,MAAU,WAAW,iBAAiB;AAAA,YACtC;AAAA,YACAwQ;AAAA;AAAA,YAEAzQ,MAAS,SAAS;AAAA,YAClBA,MAAS,QAAQ;AAAA,YACjBA,MAAS,QAAQ;AAAA,YACjBA,MAAS,QAAQ;AAAA,YACjBA,MAAS,QAAQ;AAAA,YACjBA,MAAS,QAAQ;AAAA,YACjBA,MAAS,SAAS;AAAA,YAClBA,MAAS,SAAS;AAAA,YAClBA,MAAS,SAAS;AAAA,UAAA;AAAA,UAEpB,OAAO,EAAE,QAAQ,EAAA;AAAA,UAClB,UAAA;AAAA,YAAA;AAAA,YACGuQ;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GAEJ;AAAA,EAEJ;AACF;AAEAH,GAAY,cAAc;ACpGnB,MAAMO,KAAgB7Q;AAAA,EAC3B,CACE;AAAA,IACE,MAAAE,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,KAAAsP;AAAA,IACA,KAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAxH;AAAA,IACA,QAAA6F,IAAS;AAAA,IACT,MAAA8C;AAAA,IACA,aAAA7L;AAAA,IACA,KAAAnE,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMyC,IAAmBlE;AAAAA,MACvB;AAAA,MACAsB,IAAM,qBAAqB;AAAA,MAC3BA,KAAO;AAAA,MACP1O;AAAA,IAAA,GAGI2e,IAAuBvR;AAAAA,MAC3B;AAAA,MACAsB,IAAM,cAAc;AAAA,IAAA,GAGhBkQ,IAAcxR;AAAAA,MAClB;AAAA,MACAU,MAAS,SAAS;AAAA,MAClBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,SAAS;AAAA,MAClBA,MAAS,SAAS;AAAA,MAClBA,MAAS,SAAS;AAAA,MAClBY,KAAO;AAAA,IAAA,GAGHsE,IAAqB5F;AAAAA,MACzB;AAAA,MACAU,MAAS,SAAS;AAAA,MAClBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjBA,MAAS,SAAS;AAAA,MAClBA,MAAS,SAAS;AAAA,MAClBA,MAAS,SAAS;AAAA,MAClBY,KAAO;AAAA,IAAA;AAGT,WACE,gBAAAe,EAAC,OAAA,EAAI,KAAAZ,GAAU,WAAWyC,GAAkB,KAAK5C,IAAM,QAAQ,QAAY,GAAGE,GAC5E,UAAA;AAAA,MAAA,gBAAAW;AAAA,QAAC6N;AAAA,QAAA;AAAA,UACC,MAAAtP;AAAA,UACA,OAAAC;AAAA,UACA,KAAAsP;AAAA,UACA,KAAAC;AAAA,UACA,UAAAC;AAAA,UACA,UAAAxH;AAAA,UACA,QAAA6F;AAAA,UACA,KAAAlN;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAe,EAAC,OAAA,EAAI,WAAWkP,GACd,UAAA;AAAA,QAAA,gBAAApP,EAAC,QAAA,EAAK,WAAWqP,GAAc,UAAAF,GAAK;AAAA,QACnC7L,KAAe,gBAAAtD,EAAC,QAAA,EAAK,WAAWyD,GAAqB,UAAAH,EAAA,CAAY;AAAA,MAAA,EAAA,CACpE;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEA4L,GAAc,cAAc;AC7FrB,MAAMI,KAAUjR;AAAA,EACrB,CACE;AAAA,IACE,WAAAkR,IAAY;AAAA,IACZ,MAAAtO,IAAO;AAAA,IACP,OAAAiK;AAAA,IACA,SAAAsE,IAAU;AAAA,IACV,WAAA/e;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AAEH,UAAMmQ,IAAiB;AAAA,MACrB,MAAM;AAAA,MACN,IAAIF,MAAc,eAAe,SAAS;AAAA,MAC1C,IAAIA,MAAc,eAAe,SAAS;AAAA,MAC1C,IAAIA,MAAc,eAAe,SAAS;AAAA,MAC1C,IAAIA,MAAc,eAAe,SAAS;AAAA,MAC1C,IAAIA,MAAc,eAAe,SAAS;AAAA,IAAA;AAI5C,WAAIA,MAAc,eAEd,gBAAAvP;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,WAAWzB;AAAAA,UACT;AAAA,UACAoD,MAAS,UAAU,0BAA0B;AAAA,UAC7CiK,IAAQ,WAAWA,CAAK,MAAM;AAAA,UAC9BuE,EAAeD,CAAO;AAAA,UACtB/e;AAAA,QAAA;AAAA,QAED,GAAG4O;AAAA,MAAA;AAAA,IAAA,IAOR,gBAAAW;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,WAAWzB;AAAAA,UACT;AAAA,UACAoD,MAAS,UAAU,0BAA0B;AAAA,UAC7CiK,IAAQ,WAAWA,CAAK,MAAM;AAAA,UAC9BuE,EAAeD,CAAO;AAAA,UACtB/e;AAAA,QAAA;AAAA,QAED,GAAG4O;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAiQ,GAAQ,cAAc;ACnBtB,SAASzR,KAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAGA,MAAM4R,KAAgD;AAAA,EACpD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AACX,GAGM1R,KAA8C;AAAA,EAClD,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AACN,GAWa2R,KAActR;AAAA,EACzB,CACE;AAAA,IACE,OAAAzL,IAAQ;AAAA,IACR,MAAA2L,IAAO;AAAA,IACP,OAAA2M,IAAQ;AAAA,IACR,OAAAzQ;AAAA,IACA,WAAAmV,IAAY;AAAA,IACZ,YAAA/K;AAAA,IACA,cAAAgL,IAAe;AAAA,IACf,qBAAAC,IAAsB;AAAA,IACtB,eAAAC,IAAgB;AAAA,IAChB,YAAA3F;AAAA,IACA,KAAAjL,IAAM;AAAA,IACN,UAAAmD;AAAA,IACA,eAAAwC;AAAA,IACA,WAAArU;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AAEH,UAAM0Q,IAAe,KAAK,IAAI,KAAK,IAAIpd,GAAO,CAAC,GAAG,GAAG,GAG/CgQ,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5CkL,IAAoBxG,KAAO2F,IAAgBA,IAAgBD,GAgB3DoL,IAZAF,MAAkB,YACb,gBAAA/P,EAACG,IAAA,EAAQ,WAAU,uBAAA,CAAuB,IACxC4P,MAAkB,cACpB,gBAAA/P,EAACgM,IAAA,EAAY,WAAU,UAAA,CAAU,IAC/B+D,MAAkB,UACpB,gBAAA/P,EAAC+L,IAAA,EAAY,WAAU,UAAA,CAAU,IAC/BgE,MAAkB,YAAY3F,IAChCA,IAEF,MAMH8F,IAAkBL,IACpB,sBACA;AAEJ,WACE,gBAAA3P;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWzB,EAAG,UAAUsB,KAAO,iBAAiB1O,CAAS;AAAA,QACzD,KAAK0O,IAAM,QAAQ;AAAA,QAClB,GAAGE;AAAA,QAGH,UAAA;AAAA,UAAAuQ,MAAc,SAAShN,KACtB,gBAAA1C,EAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,YAAA,gBAAAF,EAAC,UAAK,WAAWnC;AAAAA,cACf;AAAA,cACAsB,KAAO;AAAA,YAAA,GAEN,UAAAyD,GACH;AAAA,YACA,gBAAA1C,EAAC,UAAK,WAAWrC;AAAAA,cACf;AAAA,cACAsB,KAAO;AAAA,YAAA,GAEN,UAAA;AAAA,cAAA6Q;AAAA,cAAa;AAAA,YAAA,EAAA,CAChB;AAAA,UAAA,GACF;AAAA,UAIF,gBAAA9P,EAAC,OAAA,EAAI,WAAU,YAEb,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWnC;AAAAA,kBACT;AAAA,kBACAG,GAAWO,CAAI;AAAA,gBAAA;AAAA,gBAIjB,UAAA,gBAAAyB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWnC;AAAAA,sBACT;AAAA,sBACA6R,GAAYxE,CAAK;AAAA,oBAAA;AAAA,oBAEnB,OAAO;AAAA,sBACL,OAAO,GAAG8E,CAAY;AAAA,sBACtB,iBAAiB7Q,IAAM,UAAU;AAAA,oBAAA;AAAA,oBAEnC,MAAK;AAAA,oBACL,iBAAe6Q;AAAA,oBACf,iBAAe;AAAA,oBACf,iBAAe;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACjB;AAAA,YAAA;AAAA,YAIDF,KAAuBG,KACtB,gBAAA/P;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWrC;AAAAA,kBACT;AAAA,kBACA;AAAA,kBACAsB,IAAM,YAAY;AAAA,gBAAA;AAAA,gBAEpB,OAAO;AAAA,kBACL,CAACA,IAAM,UAAU,MAAM,GAAG,QAAQ6Q,CAAY,OAAO7Q,IAAM,IAAI,EAAE;AAAA,gBAAA;AAAA,gBAGnE,UAAA;AAAA,kBAAA,gBAAAa,EAAC,UAAK,WAAWnC;AAAAA,oBACf;AAAA,oBACAkS,MAAkB,aAAa;AAAA,oBAC/BA,MAAkB,eAAe;AAAA,oBACjCA,MAAkB,WAAW;AAAA,kBAAA,GAE5B,UAAAE,GACH;AAAA,kBACA,gBAAA/P,EAAC,QAAA,EAAK,WAAU,iCACb,UAAA;AAAA,oBAAA8P;AAAA,oBAAa;AAAA,kBAAA,EAAA,CAChB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF,GAEJ;AAAA,UAGCJ,MAAc,YAAYhN,KACzB,gBAAA1C,EAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,YAAA,gBAAAF,EAAC,UAAK,WAAWnC;AAAAA,cACf;AAAA,cACAsB,KAAO;AAAA,YAAA,GAEN,UAAAyD,GACH;AAAA,YACA,gBAAA1C,EAAC,UAAK,WAAWrC;AAAAA,cACf;AAAA,cACAsB,KAAO;AAAA,YAAA,GAEN,UAAA;AAAA,cAAA6Q;AAAA,cAAa;AAAA,YAAA,EAAA,CAChB;AAAA,UAAA,GACF;AAAA,UAIDnL,KAAc,CAACiL,KACd,gBAAA5P,EAAC,OAAA,EAAI,WAAU,gCACZ,UAAA;AAAA,YAAA+P,KACC,gBAAAjQ,EAAC,UAAK,WAAWnC;AAAAA,cACfkS,MAAkB,aAAa;AAAA,cAC/BA,MAAkB,eAAe;AAAA,cACjCA,MAAkB,WAAW;AAAA,cAC7BA,MAAkB,YAAY;AAAA,YAAA,GAE7B,UAAAE,GACH;AAAA,YAEF,gBAAAjQ,EAAC,UAAK,WAAWnC;AAAAA,cACf;AAAA,cACAqS;AAAA,cACA/Q,KAAO;AAAA,YAAA,GAEN,UAAAwG,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAgK,GAAY,cAAc;AC7N1B,SAAS9R,KAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAGA,MAAME,KAA6C;AAAA,EACjD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAGMmS,KAA8C;AAAA,EAClD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAKA,SAASC,GACPC,GACAC,GACAC,GACyB;AAEzB,QAAMC,IADeD,IAAe,IAAI,IACL;AAEnC,MAAID,KAAcE;AAChB,WAAO,MAAM,KAAK,EAAE,QAAQF,KAAc,CAACG,GAAGhhB,MAAMA,IAAI,CAAC;AAG3D,QAAMihB,IAAmB,KAAK,IAAIL,IAAcE,GAAc,CAAC,GACzDI,IAAoB,KAAK,IAAIN,IAAcE,GAAcD,CAAU,GAEnEM,IAAyBF,IAAmB,GAC5CG,IAA0BF,IAAoBL,IAAa;AAEjE,MAAI,CAACM,KAA0BC,GAAyB;AACtD,UAAMC,IAAgB,IAAI,IAAIP;AAE9B,WAAO,CAAC,GADU,MAAM,KAAK,EAAE,QAAQO,EAAA,GAAiB,CAACL,GAAGhhB,MAAMA,IAAI,CAAC,GACjD,YAAY6gB,CAAU;AAAA,EAC9C;AAEA,MAAIM,KAA0B,CAACC,GAAyB;AACtD,UAAME,IAAiB,IAAI,IAAIR;AAK/B,WAAO,CAAC,GAAG,YAAY,GAJJ,MAAM;AAAA,MACvB,EAAE,QAAQQ,EAAA;AAAA,MACV,CAACN,GAAGhhB,MAAM6gB,IAAaS,IAAiBthB,IAAI;AAAA,IAAA,CAEV;AAAA,EACtC;AAEA,SAAImhB,KAA0BC,IAKrB,CAAC,GAAG,YAAY,GAJH,MAAM;AAAA,IACxB,EAAE,QAAQF,IAAoBD,IAAmB,EAAA;AAAA,IACjD,CAACD,GAAGhhB,MAAMihB,IAAmBjhB;AAAA,EAAA,GAEQ,YAAY6gB,CAAU,IAGxD,MAAM,KAAK,EAAE,QAAQA,KAAc,CAACG,GAAGhhB,MAAMA,IAAI,CAAC;AAC3D;AAcO,MAAMuhB,KAAa3S;AAAA,EACxB,CACE;AAAA,IACE,aAAAgS;AAAA,IACA,YAAAC;AAAA,IACA,cAAAW;AAAA,IACA,MAAA1S,IAAO;AAAA,IACP,SAAAD,IAAU;AAAA,IACV,eAAA4S,IAAgB;AAAA,IAChB,cAAAC,IAAe;AAAA,IACf,cAAAZ,IAAe;AAAA,IACf,KAAApR,IAAM;AAAA,IACN,UAAAT,IAAW;AAAA,IACX,WAAAjO;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAM8R,IAAmB,CAACC,MAAiB;AACzC,MAAI3S,KAAY2S,IAAO,KAAKA,IAAOf,KAAce,MAAShB,KAG1DY,KAAA,QAAAA,EAAeI;AAAA,IACjB,GAEMC,IAAclB,GAAoBC,GAAaC,GAAYC,CAAY,GACvE/E,IAAW2E,GAAY5R,CAAI,GAE3BgT,IAAgBlB,IAAc,KAAK,CAAC3R,GACpC8S,IAAYnB,IAAcC,KAAc,CAAC5R;AAG/C,WAAIJ,MAAY,WAEZ,gBAAA4B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWzB;AAAAA,UACT;AAAA,UACAsB,KAAO;AAAA,UACP1O;AAAA,QAAA;AAAA,QAEF,KAAK0O,IAAM,QAAQ;AAAA,QAClB,GAAGE;AAAA,QAGJ,UAAA;AAAA,UAAA,gBAAAa;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMkR,EAAiBf,IAAc,CAAC;AAAA,cAC/C,UAAU,CAACkB;AAAA,cACX,WAAW1T;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA;AAAA,gBAAA,gBAAAyB,EAACJ,IAAA,EAAY,MAAM4L,EAAA,CAAU;AAAA,gBAC7B,gBAAAxL,EAAC,UAAK,UAAA,WAAA,CAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIhB,gBAAAE,EAAC,QAAA,EAAK,WAAU,+DAA8D,UAAA;AAAA,YAAA;AAAA,YACtEmQ;AAAA,YAAY;AAAA,YAAKC;AAAA,UAAA,GACzB;AAAA,UAGA,gBAAApQ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMkR,EAAiBf,IAAc,CAAC;AAAA,cAC/C,UAAU,CAACmB;AAAA,cACX,WAAW3T;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA;AAAA,gBAAA,gBAAAyB,EAAC,UAAK,UAAA,OAAA,CAAI;AAAA,gBACV,gBAAAA,EAACH,IAAA,EAAa,MAAM2L,EAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAChC;AAAA,MAAA;AAAA,IAAA,IAOJ,gBAAAtL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWzB;AAAAA,UACT;AAAA,UACAsB,KAAO;AAAA,UACP1O;AAAA,QAAA;AAAA,QAEF,KAAK0O,IAAM,QAAQ;AAAA,QACnB,cAAW;AAAA,QACV,GAAGE;AAAA,QAGH,UAAA;AAAA,UAAA6R,KACC,gBAAAlR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMoR,EAAiB,CAAC;AAAA,cACjC,UAAUf,MAAgB,KAAK3R;AAAA,cAC/B,cAAW;AAAA,cACX,WAAWb;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA,gBAAAyB,EAACyR,IAAA,EAAa,MAAMjG,EAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAKjC2F,KACC,gBAAAnR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMoR,EAAiBf,IAAc,CAAC;AAAA,cAC/C,UAAU,CAACkB;AAAA,cACX,cAAW;AAAA,cACX,WAAW1T;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA,gBAAAyB,EAACJ,IAAA,EAAY,MAAM4L,EAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAKhC8F,EAAY,IAAI,CAACI,GAAShd,MAAU;AACnC,gBAAIgd,MAAY;AACd,qBACE,gBAAA1R;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAWnC;AAAAA,oBACT;AAAA,oBACA;AAAA,oBACAG,GAAWO,CAAI;AAAA,kBAAA;AAAA,kBAEjB,eAAY;AAAA,kBAEZ,UAAA,gBAAAyB,EAAC2R,IAAA,EAAe,MAAMnG,EAAA,CAAU;AAAA,gBAAA;AAAA,gBAR3B,YAAY9W,CAAK;AAAA,cAAA;AAa5B,kBAAMiT,IAAW+J,MAAYrB;AAE7B,mBACE,gBAAArQ;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAS,MAAMoR,EAAiBM,CAAO;AAAA,gBACvC,UAAAhT;AAAA,gBACA,cAAY,cAAcgT,CAAO;AAAA,gBACjC,gBAAc/J,IAAW,SAAS;AAAA,gBAClC,WAAW9J;AAAAA,kBACT;AAAA,kBACA;AAAA,kBACAG,GAAWO,CAAI;AAAA,kBACfoJ,IACI9J;AAAAA,oBACE;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA,IAEFA;AAAAA,oBACE;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA;AAAA,kBAEN;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAGD,UAAA6T;AAAA,cAAA;AAAA,cA9BIA;AAAA,YAAA;AAAA,UAiCX,CAAC;AAAA,UAGAP,KACC,gBAAAnR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMoR,EAAiBf,IAAc,CAAC;AAAA,cAC/C,UAAU,CAACmB;AAAA,cACX,cAAW;AAAA,cACX,WAAW3T;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA,gBAAAyB,EAACH,IAAA,EAAa,MAAM2L,EAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAKjC0F,KACC,gBAAAlR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAMoR,EAAiBd,CAAU;AAAA,cAC1C,UAAUD,MAAgBC,KAAc5R;AAAA,cACxC,cAAW;AAAA,cACX,WAAWb;AAAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACAG,GAAWO,CAAI;AAAA,cAAA;AAAA,cAGjB,UAAA,gBAAAyB,EAAC4R,IAAA,EAAc,MAAMpG,EAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACjC;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAwF,GAAW,cAAc;AC1WlB,MAAMa,KAAOxT;AAAA,EAClB,CAAC,EAAE,UAAAe,GAAU,KAAAD,IAAM,IAAO,WAAA1O,EAAA,GAAa6O,MAAQ;AAC7C,UAAMyC,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,MACP1O;AAAA,IAAA;AAGF,WACE,gBAAAuP,EAAC,OAAA,EAAI,KAAAV,GAAU,WAAWyC,GACvB,UAAA3C,GACH;AAAA,EAEJ;AACF;AAEAyS,GAAK,cAAc;ACQZ,MAAMC,KAAWzT;AAAA,EACtB,CACE;AAAA,IACE,OAAA5D;AAAA,IACA,UAAA6H;AAAA,IACA,gBAAAyP;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAhO;AAAA,IACA,QAAAiL;AAAA,IACA,YAAAgD,IAAa;AAAA,IACb,OAAAzK;AAAA,IACA,QAAA0K;AAAA,IACA,cAAA7J,IAAe;AAAA,IACf,cAAA8J;AAAA,IACA,iBAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,KAAAlT,IAAM;AAAA,IACN,UAAAT,IAAW;AAAA,IACX,SAAA+I;AAAA,IACA,WAAAhX;AAAA,EAAA,GAEF6O,MACG;AACH,UAAMsD,IAAezD,KAAOmD,IAAWA,IAAW7H,GAC5C6X,IAAwBnT,KAAO6S,IAAoBA,IAAoBD,GACvEQ,IAAsBpT,KAAOiT,IAAkBA,IAAkBD,GAGjEK,IAAoB;AAAA,MACxB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAIAzQ,IAAmBlE;AAAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA,CAACa,KAAY;AAAA;AAAA,MAEb,CAACA,KAAY+I,KAAW;AAAA;AAAA,MAExB/I,KAAY;AAAA;AAAA,MAEZS,KAAO;AAAA,MACP1O;AAAA,IAAA,GAIIgiB,IAAwB5U;AAAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHqL,IAAiB3M;AAAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIH8D,IAAepF;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHuT,IAAwB7U;AAAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHwT,IAAyB9U;AAAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIHyT,IAAsB/U;AAAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACAsB,KAAO;AAAA,IAAA,GAIH0T,IAAoBhV;AAAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACa,KAAY;AAAA,MACb;AAAA,IAAA,GAGIoU,IAAqB,MACrBzK,MAAiB,SAAe,OAChCA,MAAiB,YAEZ,gBAAArI,EADab,IAAMS,KAAcC,IAChC,EAAY,WAAU,2BAAA,CAA2B,IAEpDwI;AAyBT,WACE,gBAAAnI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWyC;AAAA,QACX,SAASrD,IAAW,SAAY+I;AAAA,QAChC,MAAMA,IAAU,WAAW;AAAA,QAC3B,UAAUA,KAAW,CAAC/I,IAAW,IAAI;AAAA,QAGrC,UAAA;AAAA,UAAA,gBAAAwB,EAAC,OAAA,EAAI,WAAWuS,GACb,UAAA;AAAA,YAAAzO,KACC,gBAAAhE,EAAC,OAAA,EAAI,WAAU,yCACZ,UAAAgE,GACH;AAAA,YAlCDiL,IAGD,OAAOA,KAAW,WAElB,gBAAAjP;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKiP;AAAA,gBACL,KAAI;AAAA,gBACJ,WAAWpR;AAAAA,kBACT;AAAA,kBACA;AAAA,kBACA2U,EAAkBP,CAAU;AAAA,gBAAA;AAAA,cAC9B;AAAA,YAAA,IAMChD,IAlBa;AAAA,UAoCF,GAChB;AAAA,UAGA,gBAAA/O,EAAC,OAAA,EAAI,WAAWsK,GACd,UAAA;AAAA,YAAA,gBAAAxK,EAAC,QAAA,EAAK,WAAWiD,GAAe,UAAAL,GAAa;AAAA,YAC5C0P,KACC,gBAAAtS,EAAC,QAAA,EAAK,WAAW0S,GAAwB,UAAAJ,EAAA,CAAsB;AAAA,UAAA,GAEnE;AAAA,UAGA,gBAAApS,EAAC,OAAA,EAAI,WAAWyS,GACb,UAAA;AAAA,YAAAJ,KACC,gBAAAvS,EAAC,QAAA,EAAK,WAAW4S,GAAsB,UAAAL,GAAoB;AAAA,YAE5D/K,KACC,gBAAAxH,EAAC,OAAA,EAAI,WAAU,kCACZ,UAAAwH,GACH;AAAA,YAED0K,KACC,gBAAAlS,EAAC,OAAA,EAAI,WAAU,mCACZ,UAAAkS,GACH;AAAA,YAEDY,EAAA;AAAA,YACAT,KACC,gBAAArS;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW6S;AAAA,gBACX,SAAS,CAAC/M,MAAM;AACd,kBAAAA,EAAE,gBAAA;AAAA,gBAEJ;AAAA,gBACA,UAAApH;AAAA,gBAEA,UAAA,gBAAAsB,EAACgK,IAAA,EAAK,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UAC5B,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA8H,GAAS,cAAc;ACtMvB,SAASjU,KAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAcO,MAAMiV,KAAY1U;AAAA,EACvB,CACE;AAAA,IACE,OAAA5D,IAAQ;AAAA,IACR,aAAA6I,IAAc;AAAA,IACd,MAAAtE,IAAO;AAAA,IACP,UAAAJ;AAAA,IACA,OAAA4I,IAAQ;AAAA,IACR,WAAAwL,IAAY;AAAA,IACZ,QAAAC,IAAS;AAAA,IACT,YAAAC,IAAa;AAAA,IACb,eAAA1K;AAAA,IACA,OAAAtH,IAAQ;AAAA,IACR,OAAAiS,IAAQ;AAAA,IACR,KAAAhU,IAAM;AAAA,IACN,YAAAiU,IAAa;AAAA,IACb,UAAUC;AAAA,IACV,UAAAC;AAAA,IACA,UAAAhR;AAAA,IACA,gBAAAyB;AAAA,IACA,WAAAtT;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACiU,GAAkBC,CAAmB,IAAIpO,GAAS,EAAK,GACxDqO,IAAaJ,MAAuB,SAAYA,IAAqBE,GACrEpS,IAAQhC,GAERuU,IAAe,MAAM;AACzB,UAAIN,GAAY;AACd,cAAMO,IAAc,CAACF;AACrB,QAAIJ,MAAuB,UACzBG,EAAoBG,CAAW,GAEjCL,KAAA,QAAAA,EAAWK;AAAA,MACb;AAAA,IACF,GAEM/Q,IAAezB,KAASmB,IAAWA,IAAW7H,GAC9CwJ,IAAqB9C,KAAS4C,IAAiBA,IAAiBT,GAGhEhC,IAAczD;AAAAA,MAClB;AAAA,MACA;AAAA,MACAuV,KAAcD,MAAU,aAAa;AAAA,MACrCA,MAAU,aAAa;AAAA,MACvB;AAAA;AAAA,MAEAhS,KAAS;AAAA;AAAA,MAETD,MAAU,YACNrD;AAAAA,QACE;AAAA;AAAA,QAEAsV,MAAU,WAAW;AAAA;AAAA,QAErBA,MAAU,aAAaC,KAAc;AAAA;AAAA,MAAA,IAGvCvV;AAAAA,QACE;AAAA,QACA;AAAA;AAAA,QAEAsV,MAAU,WAAW;AAAA;AAAA,QAErBA,MAAU,aAAaC,KAAc;AAAA;AAAA;AAAA,QAGrC;AAAA,MAAA;AAAA,MAEN3iB;AAAA,IAAA,GAII+c,IAAe3P;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACAsD,IAAQ,eAAe;AAAA,IAAA,GAInBsC,IAAqB5F;AAAAA,MACzB;AAAA,MACA;AAAA,MACAsD,IAAQ,eAAe;AAAA,IAAA,GAInByS,IAAe/V;AAAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAIIgW,IAAcjV,MAAaI,sBAAQkN,IAAA,EAAK,WAAU,0CAAyC,IAAK,OAGhG4H,IAAeL,IAAaM,KAAYC,IACxCC,IAAsBpW;AAAAA,MAC1B;AAAA,IAAA,GAGIqW,IAAYd,IAAa,WAAW,OACpCe,IAAiBf,IACnB;AAAA,MACE,KAAA9T;AAAA,MACA,MAAM;AAAA,MACN,SAASoU;AAAA,MACT,GAAGrU;AAAA,IAAA,IAEL;AAAA,MACE,GAAGA;AAAA,IAAA;AAGT,WACE,gBAAAa;AAAA,MAACgU;AAAA,MAAA;AAAA,QACE,GAAIC;AAAA,QACL,KAAKhT,IAAQ,QAAQ;AAAA,QACrB,WAAWG;AAAA,QAGV,UAAA;AAAA,UAAAuS,KAAe,CAAC1S,KACf,gBAAAnB,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAA6T,GAAY;AAAA,UAI7CT,KAAcjS,KACb,gBAAAnB,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAA,EAAC8T,GAAA,EAAa,WAAWG,EAAA,CAAqB,EAAA,CAChD;AAAA,UAIF,gBAAA/T,EAAC,SAAI,WAAWrC;AAAAA,YACd;AAAA,YACAsD,IAAQ,cAAc;AAAA,UAAA,GAGtB,UAAA;AAAA,YAAA,gBAAAnB,EAAC,SAAI,WAAWnC;AAAAA,cACd;AAAA,cACAsD,IAAQ,qBAAqB;AAAA,YAAA,GAI5B,cACC,gBAAAjB,EAAAE,GAAA,EACG,UAAA;AAAA,cAAAoH,KACC,gBAAAxH,EAAC,SAAI,WAAWnC,EAAG+V,GAAc,eAAe,GAAG,KAAI,OACpD,UAAAZ,EAAA,CACH;AAAA,cAEF,gBAAAhT,EAAC,OAAA,EAAI,WAAWnC,EAAG2P,GAAc,QAAQ,GAAG,KAAI,OAC9C,UAAA,gBAAAxN,EAAC,KAAA,EAAG,UAAA4C,EAAA,CAAa,EAAA,CACnB;AAAA,YAAA,EAAA,CACF,IAEA,gBAAA1C,EAAAE,GAAA,EACE,UAAA;AAAA,cAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAWnC,EAAG2P,GAAc,QAAQ,GACvC,UAAA,gBAAAxN,EAAC,KAAA,EAAG,UAAA4C,EAAA,CAAa,EAAA,CACnB;AAAA,cACC4E,KACC,gBAAAxH,EAAC,OAAA,EAAI,WAAW4T,GACb,UAAAZ,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ,EAAA,CAEJ;AAAA,YAGCS,KAAcxP,KACb,gBAAAjE,EAAC,OAAA,EAAI,WAAU,UAAS,KAAKmB,IAAQ,QAAQ,QAC3C,UAAA,gBAAAnB,EAAC,KAAA,EAAE,WAAWyD,GAAqB,aAAmB,GACxD;AAAA,YAIDgQ,KAAcR,KACb,gBAAAjT,EAAC,OAAA,EAAI,WAAU,oBAAmB,OAAO,EAAE,gBAAgBmB,IAAQ,aAAa,aAAA,GAC9E,UAAA,gBAAAjB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,CAAC4F,MAAM;AACd,kBAAAA,EAAE,gBAAA,GACF0C,KAAA,QAAAA;AAAA,gBACF;AAAA,gBACA,WAAW3K;AAAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAEF,KAAKsD,IAAQ,QAAQ;AAAA,gBAErB,UAAA;AAAA,kBAAA,gBAAAnB,EAACgK,IAAA,EAAK,WAAU,wBAAA,CAAwB;AAAA,oCACvC,QAAA,EAAK,WAAU,0BACb,UAAA7I,IAAQ,aAAa+R,GACxB;AAAA,kBACA,gBAAAlT,EAACgK,IAAA,EAAK,WAAU,wBAAA,CAAwB;AAAA,kBAExC,gBAAAhK,EAAC,OAAA,EAAI,WAAU,wGAAA,CAAwG;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,EACzH,CACF;AAAA,UAAA,GAEJ;AAAA,UAGCoT,KAAc,CAACjS,KACd,gBAAAnB,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAA,EAAC8T,GAAA,EAAa,WAAWG,EAAA,CAAqB,EAAA,CAChD;AAAA,UAIDJ,KAAe1S,KACd,gBAAAnB,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAA6T,GAAY;AAAA,UAI7C3S,MAAU,WACT,gBAAAlB,EAAC,OAAA,EAAI,WAAU,mGAAA,CAAmG;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAI1H;AACF;AAEA+S,GAAU,cAAc;ACjQxB,MAAMpF,KAAa;AAAA,EACjB,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA,EAAA;AAET,GAEayG,KAAc/V;AAAA,EACzB,CACE;AAAA,IACE,OAAAsD;AAAA,IACA,MAAApD,IAAO;AAAA,IACP,SAAAD,IAAU;AAAA,IACV,WAAA+V,IAAY;AAAA,IACZ,cAAAC,IAAe;AAAA,IACf,UAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,KAAArV,IAAM;AAAA,IACN,WAAA1O;AAAA,IACA,GAAG4O;AAAA,EAAA,GAELC,MACG;AACH,UAAMlP,IAASud,GAAWpP,CAAI,GAGxBkW,IAAiBF,KAAY5S,EAAM,SAAS4S;AAClD,QAAIG,IAAe/S;AAEnB,QAAI8S,GAAgB;AAClB,YAAME,IAAYhT,EAAM,CAAC,GACnBiT,IAAYjT,EAAM,MAAM,EAAE4S,IAAW,EAAE;AAC7C,MAAAG,IAAe,CAACC,GAAW,EAAE,OAAO,OAAO,WAAW,MAAS,GAAGC,CAAS;AAAA,IAC7E;AAGA,UAAMC,IAAkB,MAAM;AAC5B,YAAMC,IAAmBjX;AAAAA,QACvB;AAAA,QACAzN,EAAO;AAAA,MAAA;AAGT,cAAQikB,GAAA;AAAA,QACN,KAAK;AACH,iBAAO,gBAAArU,EAAC,UAAK,WAAWnC,EAAG,0CAA0CzN,EAAO,IAAI,GAAG,UAAA,IAAA,CAAC;AAAA,QACtF,KAAK;AACH,iBAAO,gBAAA4P,EAAC,UAAK,WAAWnC,EAAG,0CAA0CzN,EAAO,IAAI,GAAG,UAAA,IAAA,CAAC;AAAA,QACtF,KAAK;AAAA,QACL;AAGE,iBAAO,gBAAA4P,EADab,IAAMS,KAAcC,IAChC,EAAY,WAAWiV,EAAA,CAAkB;AAAA,MAAA;AAAA,IAEvD,GAGMC,IAAa,CAAC9S,GAAsBvN,MAAkB;AAC1D,YAAMyN,IAASzN,MAAUggB,EAAa,SAAS,GACzCxS,IAAUxN,MAAU,GACpBsgB,IAAc/S,EAAK,UAAU,OAE7BgT,IAAcpX;AAAAA,QAClB;AAAA,QACAzN,EAAO;AAAA,QACPA,EAAO;AAAA,QACP;AAAA;AAAA,QAEAkO,MAAY,WAAW;AAAA,UACrB;AAAA,UACA2D,EAAK,aAAaE,IACd,iEACA;AAAA,QAAA;AAAA;AAAA,QAGN7D,MAAY,aAAa;AAAA,UACvB2D,EAAK,aAAaE,IACd,oDACA;AAAA,QAAA;AAAA,QAEN6S,KAAe;AAAA,MAAA,GAGXxjB,IACJ,gBAAA0O,EAAAE,GAAA,EACG,UAAA;AAAA,QAAA8B,KAAWoS,KACV,gBAAAtU,EAACkV,IAAA,EAAK,WAAW9kB,EAAO,MAAM;AAAA,QAE/B6R,EAAK,QAAQ,CAACqS,KACb,gBAAAtU,EAAC,QAAA,EAAK,WAAWnC,EAAG,eAAezN,EAAO,IAAI,GAC3C,YAAK,MACR;AAAA,QAEF,gBAAA4P,EAAC,QAAA,EAAM,UAAAiC,EAAK,MAAA,CAAM;AAAA,MAAA,GACpB;AAGF,aAAI+S,IAEA,gBAAAhV,EAAC,QAAA,EAAiB,WAAWiV,GAC1B,eADQvgB,CAEX,IAIAuN,EAAK,QAAQ,CAACA,EAAK,aAAa,CAACE,IAEjC,gBAAAnC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAMiC,EAAK;AAAA,UACX,WAAWgT;AAAA,UACX,SAAS,CAACnP,MAAM;AACd,YAAI7D,EAAK,YACP6D,EAAE,eAAA,GACF7D,EAAK,QAAA;AAAA,UAET;AAAA,UAEC,UAAAzQ;AAAA,QAAA;AAAA,QAVIkD;AAAA,MAAA,IAePuN,EAAK,WAAW,CAACA,EAAK,aAAa,CAACE,IAEpC,gBAAAnC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,SAASiC,EAAK;AAAA,UACd,WAAWgT;AAAA,UAEV,UAAAzjB;AAAA,QAAA;AAAA,QALIkD;AAAA,MAAA,IAWT,gBAAAsL,EAAC,QAAA,EAAiB,WAAWiV,GAC1B,eADQvgB,CAEX;AAAA,IAEJ,GAEMqN,IAAmBlE;AAAAA,MACvB;AAAA,MACAzN,EAAO;AAAA,MACP+O,KAAO;AAAA,MACPqV,KAAY;AAAA,MACZ/jB;AAAA,IAAA;AAGF,WACE,gBAAAuP;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,cAAW;AAAA,QACX,WAAWyC;AAAA,QACX,KAAK5C,IAAM,QAAQ;AAAA,QAClB,GAAGE;AAAA,QAEJ,UAAA,gBAAAW,EAAC,QAAG,WAAWnC,EAAG,sCAAsCzN,EAAO,GAAG,GAC/D,UAAAskB,EAAa,IAAI,CAACzS,GAAMvN,wBACtB,MAAA,EAAe,WAAWmJ,EAAG,4BAA4BzN,EAAO,GAAG,GAEjE,UAAA;AAAA,UAAA+O,KAAOzK,IAAQ,KACd,gBAAAsL,EAAC,UAAK,WAAU,4BACb,eACH;AAAA,UAED+U,EAAW9S,GAAMvN,CAAK;AAAA,UAEtB,CAACyK,KAAOzK,IAAQggB,EAAa,SAAS,KACrC,gBAAA1U,EAAC,QAAA,EAAK,WAAU,4BACb,UAAA6U,EAAA,EAAgB,CACnB;AAAA,QAAA,EAAA,GAZKngB,CAcT,CACD,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA0f,GAAY,cAAc;ACjO1B,SAASvW,MAAMC,GAA+C;AAC5D,SAAOF,GAAQxO,GAAK0O,CAAM,CAAC;AAC7B;AAEO,MAAMqX,KAAY,CAAC,EAAE,MAAAC,GAAM,UAAAC,IAAW,OAAO,WAAA5kB,QAAgC;AAClF,QAAM,CAAC6kB,GAAQC,CAAS,IAAInQ,GAAS,EAAK,GAEpCoQ,IAAa,YAAY;AAC7B,QAAI;AACF,YAAM,UAAU,UAAU,UAAUJ,CAAI,GACxCG,EAAU,EAAI,GACd,WAAW,MAAMA,EAAU,EAAK,GAAG,GAAI;AAAA,IACzC,SAASE,GAAK;AACZ,cAAQ,MAAM,mBAAmBA,CAAG;AAAA,IACtC;AAAA,EACF,GAGMC,IAAgB,CAACN,MAAiB;AACtC,QAAIO,IAAcP;AAGlB,WAAAO,IAAcA,EACX,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,GAGvBA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAEFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,EAEO,QAAQ,CAACC,MAAY;AAC5B,YAAMC,IAAQ,IAAI,OAAO,OAAOD,CAAO,QAAQ,GAAG;AAClD,MAAAD,IAAcA,EAAY;AAAA,QACxBE;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,CAAC,GAGDF,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAIFA,IAAcA,EAAY;AAAA,MACxB;AAAA,MACA;AAAA,IAAA,GAGKA;AAAA,EACT;AAEA,2BACG,OAAA,EAAI,WAAW9X,GAAG,wDAAwDpN,CAAS,GAElF,UAAA;AAAA,IAAA,gBAAAyP,EAAC,OAAA,EAAI,WAAU,2FACb,UAAA;AAAA,MAAA,gBAAAF,EAAC,QAAA,EAAK,WAAU,iEACb,UAAAqV,GACH;AAAA,MACA,gBAAArV;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWnC;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,SAAS2X;AAAA,UACT,cAAW;AAAA,UAEV,cACC,gBAAAtV,EAAAE,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAJ,EAACmD,IAAA,EAAM,WAAU,cAAA,CAAc;AAAA,YAC/B,gBAAAnD,EAAC,UAAK,UAAA,UAAA,CAAO;AAAA,UAAA,EAAA,CACf,IAEA,gBAAAE,EAAAE,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAJ,EAAC8V,IAAA,EAAK,WAAU,cAAA,CAAc;AAAA,YAC9B,gBAAA9V,EAAC,UAAK,UAAA,OAAA,CAAI;AAAA,UAAA,EAAA,CACZ;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,GACF;AAAA,IAGA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,yBAAyB,EAAE,QAAQ0V,EAAcN,CAAI,EAAA;AAAA,MAAE;AAAA,IAAA,EACzD,CACF;AAAA,EAAA,GACF;AAEJ;","x_google_ignoreList":[0,1]}