@baolq/ui 1.1.0 → 1.1.11
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/README.md +11 -11
- package/dist/components/drawer.d.ts +10 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -4
- package/dist/components/__tests__/accordion.test.d.ts +0 -1
- package/dist/components/__tests__/affix.test.d.ts +0 -1
- package/dist/components/__tests__/alert-dialog.test.d.ts +0 -1
- package/dist/components/__tests__/alert.test.d.ts +0 -1
- package/dist/components/__tests__/anchor.test.d.ts +0 -1
- package/dist/components/__tests__/aspect-ratio.test.d.ts +0 -1
- package/dist/components/__tests__/auto-complete.test.d.ts +0 -1
- package/dist/components/__tests__/avatar.test.d.ts +0 -1
- package/dist/components/__tests__/back-top.test.d.ts +0 -1
- package/dist/components/__tests__/badge.test.d.ts +0 -1
- package/dist/components/__tests__/breadcrumb.test.d.ts +0 -1
- package/dist/components/__tests__/button.test.d.ts +0 -1
- package/dist/components/__tests__/calendar.test.d.ts +0 -1
- package/dist/components/__tests__/card.test.d.ts +0 -1
- package/dist/components/__tests__/carousel.test.d.ts +0 -1
- package/dist/components/__tests__/cascader.test.d.ts +0 -1
- package/dist/components/__tests__/chart.test.d.ts +0 -1
- package/dist/components/__tests__/checkbox.test.d.ts +0 -1
- package/dist/components/__tests__/chip.test.d.ts +0 -1
- package/dist/components/__tests__/code.test.d.ts +0 -1
- package/dist/components/__tests__/collapsible.test.d.ts +0 -1
- package/dist/components/__tests__/color-picker.test.d.ts +0 -1
- package/dist/components/__tests__/command.test.d.ts +0 -1
- package/dist/components/__tests__/container.test.d.ts +0 -1
- package/dist/components/__tests__/context-menu.test.d.ts +0 -1
- package/dist/components/__tests__/date-picker.test.d.ts +0 -1
- package/dist/components/__tests__/date-range-picker.test.d.ts +0 -1
- package/dist/components/__tests__/descriptions.test.d.ts +0 -1
- package/dist/components/__tests__/dialog.test.d.ts +0 -1
- package/dist/components/__tests__/divider.test.d.ts +0 -1
- package/dist/components/__tests__/drawer.test.d.ts +0 -1
- package/dist/components/__tests__/dropdown-menu.test.d.ts +0 -1
- package/dist/components/__tests__/empty-state.test.d.ts +0 -1
- package/dist/components/__tests__/float-button.test.d.ts +0 -1
- package/dist/components/__tests__/form.test.d.ts +0 -1
- package/dist/components/__tests__/grid.test.d.ts +0 -1
- package/dist/components/__tests__/hover-card.test.d.ts +0 -1
- package/dist/components/__tests__/image.test.d.ts +0 -1
- package/dist/components/__tests__/input-number.test.d.ts +0 -1
- package/dist/components/__tests__/input-otp.test.d.ts +0 -1
- package/dist/components/__tests__/input.test.d.ts +0 -1
- package/dist/components/__tests__/kbd.test.d.ts +0 -1
- package/dist/components/__tests__/label.test.d.ts +0 -1
- package/dist/components/__tests__/layout.test.d.ts +0 -1
- package/dist/components/__tests__/list.test.d.ts +0 -1
- package/dist/components/__tests__/mentions.test.d.ts +0 -1
- package/dist/components/__tests__/menubar.test.d.ts +0 -1
- package/dist/components/__tests__/message.test.d.ts +0 -1
- package/dist/components/__tests__/modal.test.d.ts +0 -1
- package/dist/components/__tests__/navigation-menu.test.d.ts +0 -1
- package/dist/components/__tests__/notification.test.d.ts +0 -1
- package/dist/components/__tests__/pagination.test.d.ts +0 -1
- package/dist/components/__tests__/popover.test.d.ts +0 -1
- package/dist/components/__tests__/progress.test.d.ts +0 -1
- package/dist/components/__tests__/qrcode.test.d.ts +0 -1
- package/dist/components/__tests__/radio-group.test.d.ts +0 -1
- package/dist/components/__tests__/rating.test.d.ts +0 -1
- package/dist/components/__tests__/resizable.test.d.ts +0 -1
- package/dist/components/__tests__/result.test.d.ts +0 -1
- package/dist/components/__tests__/scroll-area.test.d.ts +0 -1
- package/dist/components/__tests__/segmented.test.d.ts +0 -1
- package/dist/components/__tests__/select.test.d.ts +0 -1
- package/dist/components/__tests__/separator.test.d.ts +0 -1
- package/dist/components/__tests__/sheet.test.d.ts +0 -1
- package/dist/components/__tests__/sidebar.test.d.ts +0 -1
- package/dist/components/__tests__/skeleton.test.d.ts +0 -1
- package/dist/components/__tests__/slider.test.d.ts +0 -1
- package/dist/components/__tests__/space.test.d.ts +0 -1
- package/dist/components/__tests__/spinner.test.d.ts +0 -1
- package/dist/components/__tests__/stack.test.d.ts +0 -1
- package/dist/components/__tests__/statistic.test.d.ts +0 -1
- package/dist/components/__tests__/stepper.test.d.ts +0 -1
- package/dist/components/__tests__/steps.test.d.ts +0 -1
- package/dist/components/__tests__/switch.test.d.ts +0 -1
- package/dist/components/__tests__/table.test.d.ts +0 -1
- package/dist/components/__tests__/tabs.test.d.ts +0 -1
- package/dist/components/__tests__/tag.test.d.ts +0 -1
- package/dist/components/__tests__/textarea.test.d.ts +0 -1
- package/dist/components/__tests__/theme-provider.test.d.ts +0 -1
- package/dist/components/__tests__/time-picker.test.d.ts +0 -1
- package/dist/components/__tests__/timeline.test.d.ts +0 -1
- package/dist/components/__tests__/toaster.test.d.ts +0 -1
- package/dist/components/__tests__/toggle-group.test.d.ts +0 -1
- package/dist/components/__tests__/toggle.test.d.ts +0 -1
- package/dist/components/__tests__/tooltip.test.d.ts +0 -1
- package/dist/components/__tests__/tour.test.d.ts +0 -1
- package/dist/components/__tests__/transfer.test.d.ts +0 -1
- package/dist/components/__tests__/tree-select.test.d.ts +0 -1
- package/dist/components/__tests__/tree.test.d.ts +0 -1
- package/dist/components/__tests__/typography.test.d.ts +0 -1
- package/dist/components/__tests__/upload.test.d.ts +0 -1
- package/dist/components/__tests__/watermark.test.d.ts +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.2.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils.ts","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/button.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/input.tsx","../src/components/input-number.tsx","../src/components/textarea.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/radio-group.tsx","../src/components/label.tsx","../src/components/slider.tsx","../src/components/select.tsx","../src/components/input-otp.tsx","../src/components/form.tsx","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/toDate.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constructFrom.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constants.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/defaultOptions.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfDay.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/differenceInCalendarDays.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isDate.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isValid.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/localize.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/match.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getDayOfYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/addLeadingZeros.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/lightFormatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/formatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/longFormatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/protectedTokens.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/format.mjs","../src/components/calendar.tsx","../src/components/popover.tsx","../src/components/date-picker.tsx","../src/components/date-range-picker.tsx","../src/components/scroll-area.tsx","../src/components/time-picker.tsx","../src/components/color-picker.tsx","../src/components/rating.tsx","../src/components/upload.tsx","../src/components/auto-complete.tsx","../src/components/mentions.tsx","../src/components/cascader.tsx","../src/components/transfer.tsx","../src/components/tree-select.tsx","../src/components/alert.tsx","../src/components/progress.tsx","../src/components/skeleton.tsx","../src/components/spinner.tsx","../src/components/toaster.tsx","../src/components/empty-state.tsx","../src/components/result.tsx","../src/components/notification.tsx","../src/components/message.tsx","../src/components/dialog.tsx","../src/components/alert-dialog.tsx","../src/components/sheet.tsx","../src/components/drawer.tsx","../src/components/modal.tsx","../src/components/hover-card.tsx","../src/components/tooltip.tsx","../src/components/command.tsx","../src/components/tabs.tsx","../src/components/accordion.tsx","../src/components/dropdown-menu.tsx","../src/components/context-menu.tsx","../src/components/navigation-menu.tsx","../src/components/menubar.tsx","../src/components/breadcrumb.tsx","../src/components/pagination.tsx","../src/components/anchor.tsx","../src/components/steps.tsx","../src/components/segmented.tsx","../src/components/sidebar.tsx","../src/components/avatar.tsx","../src/components/table.tsx","../src/components/carousel.tsx","../src/components/image.tsx","../src/components/statistic.tsx","../src/components/list.tsx","../src/components/descriptions.tsx","../src/components/timeline.tsx","../src/components/stepper.tsx","../src/components/tag.tsx","../src/components/tree.tsx","../src/components/qrcode.tsx","../src/components/chart.tsx","../src/components/layout.tsx","../src/components/separator.tsx","../src/components/divider.tsx","../src/components/aspect-ratio.tsx","../src/components/resizable.tsx","../src/components/container.tsx","../src/components/stack.tsx","../src/components/grid.tsx","../src/components/space.tsx","../src/components/affix.tsx","../src/components/back-top.tsx","../src/components/float-button.tsx","../src/components/watermark.tsx","../src/components/typography.tsx","../src/components/code.tsx","../src/components/kbd.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/collapsible.tsx","../src/components/chip.tsx","../src/components/tour.tsx","../src/components/theme-provider.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;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\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 remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\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 const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\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 if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\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 const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\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 const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\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 */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\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};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function 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 function 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 return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\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))\\(.+\\)$/;\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', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...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 { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center font-medium transition-all duration-200 outline-none disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n gradient:\n \"bg-gradient-to-r from-purple-500 via-fuchsia-500 to-pink-500 text-white hover:shadow-lg hover:shadow-purple-500/40 hover:scale-[1.02] active:scale-[0.98]\",\n outline:\n \"border border-white/20 bg-white/5 text-white hover:border-purple-400/50 hover:bg-white/10 backdrop-blur-sm\",\n ghost:\n \"bg-transparent text-white/80 hover:bg-white/10 hover:text-white\",\n destructive:\n \"bg-gradient-to-r from-rose-500 to-pink-600 text-white hover:shadow-[var(--glow-danger)] hover:scale-[1.02] active:scale-[0.98]\",\n success:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 text-white hover:shadow-[var(--glow-success)] hover:scale-[1.02] active:scale-[0.98]\",\n secondary:\n \"bg-white/8 text-white/90 hover:bg-white/12 border border-white/10\",\n link: \"text-purple-400 hover:text-purple-300 underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-6 px-2.5 text-xs rounded-md gap-1\",\n sm: \"h-8 px-3 text-sm rounded-md gap-1.5\",\n md: \"h-9 px-4 text-sm rounded-lg gap-2\",\n lg: \"h-11 px-6 text-base rounded-lg gap-2\",\n xl: \"h-13 px-8 text-lg rounded-xl gap-3\",\n icon: \"size-9 rounded-lg p-0\",\n },\n },\n defaultVariants: {\n variant: \"gradient\",\n size: \"md\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n children,\n disabled,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n\n const content = (\n <>\n {loading && <Loader2 className=\"animate-spin\" size={16} />}\n {!loading && leftIcon && leftIcon}\n {children}\n {!loading && rightIcon && rightIcon}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n fullWidth && \"w-full\",\n loading && \"pointer-events-none opacity-70\",\n )}\n ref={ref}\n disabled={isDisabled}\n data-slot=\"button\"\n {...props}\n >\n {content}\n </Comp>\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst cardVariants = cva(\"rounded-xl transition-all duration-300\", {\n variants: {\n variant: {\n glass: \"bg-white/5 border border-white/10 backdrop-blur-[12px]\",\n gradient:\n \"bg-white/5 backdrop-blur-[12px] border border-transparent gradient-border\",\n solid: \"bg-[var(--color-bg-secondary)] border border-white/10\",\n outlined: \"bg-transparent border border-white/20\",\n },\n padding: {\n none: \"p-0\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n },\n defaultVariants: {\n variant: \"glass\",\n padding: \"md\",\n },\n});\n\ninterface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n hoverable?: boolean;\n bordered?: boolean;\n accentColor?: string;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant,\n padding,\n hoverable = false,\n bordered = false,\n children,\n style,\n accentColor,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n cardVariants({ variant, padding }),\n hoverable &&\n \"hover:-translate-y-1 hover:shadow-[var(--shadow-elevated)] cursor-pointer\",\n bordered && \"border-2\",\n className,\n )}\n style={accentColor ? { ...style, borderTopColor: accentColor } : style}\n data-slot=\"card\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-lg text-white\", className)} {...props} />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-white/60\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nconst CardAction = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"absolute top-4 right-4\", className)}\n {...props}\n />\n));\nCardAction.displayName = \"CardAction\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n CardAction,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center font-medium transition-colors border\",\n {\n variants: {\n variant: {\n default: \"bg-white/5 border-white/10 text-white/90\",\n gradient:\n \"bg-gradient-to-r from-purple-500 to-fuchsia-500 border-purple-400/30 text-white\",\n outline: \"bg-transparent border-white/10 text-white/80\",\n success: \"bg-emerald-500/10 border-emerald-400/30 text-emerald-100\",\n warning: \"bg-amber-500/10 border-amber-400/30 text-amber-100\",\n destructive: \"bg-rose-500/10 border-rose-400/30 text-rose-100\",\n info: \"bg-blue-500/10 border-blue-400/30 text-blue-100\",\n secondary: \"bg-white/8 border-white/10 text-white/70\",\n },\n size: {\n sm: \"text-xs px-1.5 py-0.5 gap-0.5 rounded-md\",\n md: \"text-xs px-2 py-1 gap-1 rounded-md\",\n lg: \"text-sm px-2.5 py-1 gap-1 rounded-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface BadgeProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n dot?: boolean;\n removable?: boolean;\n onRemove?: () => void;\n asChild?: boolean;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant,\n size,\n dot = false,\n removable = false,\n onRemove,\n asChild = false,\n children,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n data-slot=\"badge\"\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"size-1.5 rounded-full\",\n variant === \"success\" && \"bg-emerald-400\",\n variant === \"warning\" && \"bg-amber-400\",\n variant === \"destructive\" && \"bg-rose-400\",\n variant === \"info\" && \"bg-blue-400\",\n variant === \"gradient\" && \"bg-white\",\n (!variant ||\n variant === \"default\" ||\n variant === \"outline\" ||\n variant === \"secondary\") &&\n \"bg-white/50\",\n )}\n />\n )}\n {children}\n {removable && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n className=\"ml-0.5 hover:text-white transition-colors\"\n >\n <X size={12} />\n </button>\n )}\n </Comp>\n );\n },\n);\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X, Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst inputVariants = cva(\n \"w-full rounded-lg border bg-[var(--color-bg-input)] text-white placeholder:text-[var(--color-text-placeholder)] transition-all duration-200 outline-none\",\n {\n variants: {\n size: {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-9 px-3 text-sm\",\n lg: \"h-11 px-4 text-base\",\n },\n status: {\n default:\n \"border-white/10 focus:border-purple-400/70 focus:ring-2 focus:ring-purple-400/20\",\n error:\n \"border-red-400/70 focus:border-red-400/70 focus:ring-2 focus:ring-red-400/20\",\n warning:\n \"border-amber-400/70 focus:border-amber-400/70 focus:ring-2 focus:ring-amber-400/20\",\n success:\n \"border-emerald-400/70 focus:border-emerald-400/70 focus:ring-2 focus:ring-emerald-400/20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n },\n);\n\nexport interface InputProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">,\n VariantProps<typeof inputVariants> {\n label?: string;\n hint?: string;\n error?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n loading?: boolean;\n wrapperClassName?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type = \"text\",\n size,\n status: statusProp,\n label,\n hint,\n error,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n clearable = false,\n onClear,\n loading = false,\n wrapperClassName,\n value,\n ...props\n },\n ref,\n ) => {\n const status = error ? \"error\" : statusProp || \"default\";\n const showClear = clearable && value && !loading;\n\n const input = (\n <div className=\"relative flex items-center\">\n {leftIcon && (\n <div className=\"absolute left-3 text-white/40 pointer-events-none\">\n {leftIcon}\n </div>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ size, status }),\n leftIcon && \"pl-9\",\n (rightIcon || loading || showClear) && \"pr-9\",\n className,\n )}\n ref={ref}\n value={value}\n data-slot=\"input\"\n {...props}\n />\n {loading && (\n <div className=\"absolute right-3 text-white/40\">\n <Loader2 size={16} className=\"animate-spin\" />\n </div>\n )}\n {!loading && showClear && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n onClear?.();\n }}\n className=\"absolute right-3 text-white/40 hover:text-white transition-colors\"\n >\n <X size={16} />\n </button>\n )}\n {!loading && !showClear && rightIcon && (\n <div className=\"absolute right-3 text-white/40 pointer-events-none\">\n {rightIcon}\n </div>\n )}\n </div>\n );\n\n if (label || hint || error || prefix || suffix) {\n return (\n <div className={cn(\"flex flex-col gap-1.5\", wrapperClassName)}>\n {label && (\n <label className=\"text-sm font-medium text-white/80\">{label}</label>\n )}\n {prefix || suffix ? (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-white/60 whitespace-nowrap\">\n {prefix}\n </span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-white/60 whitespace-nowrap\">\n {suffix}\n </span>\n )}\n </div>\n ) : (\n input\n )}\n {(hint || error) && (\n <p\n className={cn(\n \"text-xs\",\n error ? \"text-rose-400\" : \"text-white/50\",\n )}\n >\n {error || hint}\n </p>\n )}\n </div>\n );\n }\n\n return input;\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\n","import * as React from \"react\";\nimport { Plus, Minus } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface InputNumberProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\"\n> {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n onChange?: (value: number | undefined) => void;\n formatter?: (value: number | undefined) => string;\n parser?: (displayValue: string) => number;\n controls?: boolean;\n disabled?: boolean;\n}\n\nconst InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n min = -Infinity,\n max = Infinity,\n step = 1,\n precision,\n onChange,\n formatter,\n parser,\n controls = true,\n disabled,\n ...props\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<\n number | undefined\n >(defaultValue);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const value = controlledValue ?? internalValue;\n\n const formatValue = (val: number | undefined): string => {\n if (val === undefined) return \"\";\n if (formatter) return formatter(val);\n if (precision !== undefined) return val.toFixed(precision);\n return String(val);\n };\n\n const parseValue = (displayValue: string): number | undefined => {\n if (!displayValue) return undefined;\n if (parser) return parser(displayValue);\n const parsed = parseFloat(displayValue);\n return isNaN(parsed) ? undefined : parsed;\n };\n\n const clampValue = (val: number | undefined): number | undefined => {\n if (val === undefined) return undefined;\n let clamped = Math.max(min, Math.min(max, val));\n if (precision !== undefined) {\n clamped = parseFloat(clamped.toFixed(precision));\n }\n return clamped;\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const parsed = parseValue(e.target.value);\n const clamped = clampValue(parsed);\n setInternalValue(clamped);\n onChange?.(clamped);\n };\n\n const handleStep = (direction: \"up\" | \"down\") => {\n const currentValue = value ?? 0;\n const newValue =\n direction === \"up\" ? currentValue + step : currentValue - step;\n const clamped = clampValue(newValue);\n setInternalValue(clamped);\n onChange?.(clamped);\n };\n\n const canStepUp = value === undefined || value + step <= max;\n const canStepDown = value === undefined || value - step >= min;\n\n return (\n <div\n className={cn(\n \"relative flex items-center\",\n \"rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-colors\",\n \"focus-within:border-[var(--color-primary)] focus-within:ring-2 focus-within:ring-[var(--color-primary)]/20\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n <input\n ref={inputRef}\n type=\"text\"\n role=\"spinbutton\"\n value={formatValue(value)}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n \"flex-1 bg-transparent px-3 py-2 text-sm\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"focus:outline-none\",\n controls && \"pr-0\",\n )}\n {...props}\n />\n\n {controls && (\n <div className=\"flex flex-col border-l border-[var(--color-border)]\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled || !canStepUp}\n onClick={() => handleStep(\"up\")}\n className=\"h-5 w-7 rounded-none rounded-tr-md border-b border-[var(--color-border)] hover:bg-[var(--color-bg-glass-hover)]\"\n aria-label=\"Increment\"\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled || !canStepDown}\n onClick={() => handleStep(\"down\")}\n className=\"h-5 w-7 rounded-none rounded-br-md hover:bg-[var(--color-bg-glass-hover)]\"\n aria-label=\"Decrement\"\n >\n <Minus className=\"h-3 w-3\" />\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\nInputNumber.displayName = \"InputNumber\";\n\nexport { InputNumber };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string;\n error?: string;\n hint?: string;\n status?: \"default\" | \"error\" | \"success\" | \"warning\";\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n className,\n label,\n error,\n hint,\n status = \"default\",\n id,\n disabled,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const errorId = `${textareaId}-error`;\n const hintId = `${textareaId}-hint`;\n\n const hasError = status === \"error\" || !!error;\n\n const statusStyles = {\n default:\n \"border-[var(--color-border)] focus:border-[var(--color-border-focus)]\",\n error:\n \"border-[var(--color-border-error)] focus:border-[var(--color-border-error)]\",\n success:\n \"border-[var(--color-border-success)] focus:border-[var(--color-border-success)]\",\n warning:\n \"border-[var(--color-border-warning)] focus:border-[var(--color-border-warning)]\",\n };\n\n return (\n <div className=\"w-full space-y-2\">\n {label && (\n <label\n htmlFor={textareaId}\n className=\"block text-sm font-medium text-[var(--color-text)]\"\n >\n {label}\n </label>\n )}\n <textarea\n id={textareaId}\n className={cn(\n \"flex min-h-[80px] w-full rounded-lg border px-4 py-3\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"resize-y\",\n statusStyles[hasError ? \"error\" : status],\n className,\n )}\n ref={ref}\n disabled={disabled}\n aria-invalid={hasError ? \"true\" : \"false\"}\n aria-describedby={error ? errorId : hint ? hintId : undefined}\n {...props}\n />\n {error && (\n <p\n id={errorId}\n className=\"text-sm text-[var(--color-destructive)]\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n {hint && !error && (\n <p id={hintId} className=\"text-sm text-[var(--color-text-muted)]\">\n {hint}\n </p>\n )}\n </div>\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface CheckboxProps extends Omit<\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n \"asChild\"\n> {\n label?: string;\n description?: string;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n const checkbox = (\n <CheckboxPrimitive.Root\n ref={ref}\n id={checkboxId}\n className={cn(\n \"peer h-5 w-5 shrink-0 rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]\",\n \"data-[state=checked]:shadow-[var(--glow-primary)]\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4 text-white\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {checkbox}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return checkbox;\n});\n\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../utils\";\n\nexport interface SwitchProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\n \"asChild\"\n> {\n label?: string;\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const switchId = id || generatedId;\n\n const switchElement = (\n <SwitchPrimitives.Root\n id={switchId}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--color-primary)]\",\n \"data-[state=checked]:shadow-[var(--glow-primary)]\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0\",\n \"transition-transform duration-200\",\n \"data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {switchElement}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return switchElement;\n});\n\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nexport interface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n> {\n label?: string;\n description?: string;\n}\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n\n const radio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={radioId}\n className={cn(\n \"aspect-square h-5 w-5 rounded-full border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-[var(--color-primary)]\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {radio}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={radioId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return radio;\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n variant: {\n default: \"text-[var(--color-text)]\",\n muted: \"text-[var(--color-text-muted)]\",\n error: \"text-[var(--color-destructive)]\",\n },\n required: {\n true: \"after:content-['*'] after:ml-0.5 after:text-[var(--color-destructive)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface LabelProps\n extends\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, variant, required, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants({ variant, required }), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../utils\";\n\nexport interface SliderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\"\n> {\n label?: string;\n showValue?: boolean;\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({ className, label, showValue, ...props }, ref) => {\n const value = props.value || props.defaultValue || [0];\n const displayValue = Array.isArray(value) ? value[0] : value;\n\n return (\n <div className=\"w-full space-y-3\">\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <label className=\"text-sm font-medium text-[var(--color-text)]\">\n {label}\n </label>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {displayValue}\n </span>\n )}\n </div>\n )}\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\">\n <SliderPrimitive.Range className=\"absolute h-full bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-[var(--color-primary)] bg-white shadow-lg transition-all hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)] disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n </div>\n );\n});\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-11 w-full items-center justify-between rounded-lg border border-[var(--color-border)] px-4 py-2\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-md py-2 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors duration-150\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { Dot } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-sm transition-all\",\n \"first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive &&\n \"z-10 ring-2 ring-[var(--color-primary)] ring-offset-[var(--color-bg)]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-[var(--color-text)] duration-1000\" />\n </div>\n )}\n </div>\n );\n});\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Label } from \"./label\";\n\ntype FormContextValue = {\n errors: Record<string, string>;\n touched: Record<string, boolean>;\n};\n\nconst FormContext = React.createContext<FormContextValue>({\n errors: {},\n touched: {},\n});\n\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n errors?: Record<string, string>;\n touched?: Record<string, boolean>;\n}\n\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ className, onSubmit, errors = {}, touched = {}, ...props }, ref) => {\n return (\n <FormContext.Provider value={{ errors, touched }}>\n <form\n ref={ref}\n onSubmit={onSubmit}\n className={cn(\"space-y-6\", className)}\n {...props}\n />\n </FormContext.Provider>\n );\n },\n);\nForm.displayName = \"Form\";\n\nexport interface FormItemProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n name?: string;\n required?: boolean;\n description?: string;\n}\n\nconst FormItem = React.forwardRef<HTMLDivElement, FormItemProps>(\n (\n { className, label, name, required, description, children, ...props },\n ref,\n ) => {\n const { errors, touched } = React.useContext(FormContext);\n const error = name && touched[name] ? errors[name] : undefined;\n\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {label && (\n <Label htmlFor={name}>\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Label>\n )}\n {children}\n {description && !error && (\n <p className=\"text-xs text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n {error && <p className=\"text-xs text-red-500\">{error}</p>}\n </div>\n );\n },\n);\nFormItem.displayName = \"FormItem\";\n\nexport interface FormSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string;\n description?: string;\n}\n\nconst FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ className, title, description, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)} {...props}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n )}\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n },\n);\nFormSection.displayName = \"FormSection\";\n\nconst FormActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-3 pt-4\", className)}\n {...props}\n />\n));\nFormActions.displayName = \"FormActions\";\n\nexport { Form, FormItem, FormSection, FormActions };\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../utils\";\nimport { buttonVariants } from \"./button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium text-[var(--color-text)]\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-[var(--color-text-muted)] rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-[var(--color-bg-glass)]/50 [&:has([aria-selected])]:bg-[var(--color-bg-glass)] first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary)] hover:text-white focus:bg-[var(--color-primary)] focus:text-white\",\n day_today: \"bg-[var(--color-bg-glass)] text-[var(--color-text)]\",\n day_outside:\n \"day-outside text-[var(--color-text-muted)] opacity-50 aria-selected:bg-[var(--color-bg-glass)]/50 aria-selected:text-[var(--color-text-muted)] aria-selected:opacity-30\",\n day_disabled: \"text-[var(--color-text-muted)] opacity-50\",\n day_range_middle:\n \"aria-selected:bg-[var(--color-bg-glass)] aria-selected:text-[var(--color-text)]\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ ...props }) => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: ({ ...props }) => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DatePickerProps {\n date?: Date;\n onDateChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n { date, onDateChange, placeholder = \"Pick a date\", disabled, className },\n ref,\n ) => {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !date && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date ? format(date, \"PPP\") : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={onDateChange}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n },\n);\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DateRangePickerProps {\n dateRange?: DateRange;\n onDateRangeChange?: (dateRange: DateRange | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst DateRangePicker = React.forwardRef<\n HTMLButtonElement,\n DateRangePickerProps\n>(\n (\n {\n dateRange,\n onDateRangeChange,\n placeholder = \"Pick a date range\",\n disabled,\n className,\n },\n ref,\n ) => {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateRange && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateRange?.from ? (\n dateRange.to ? (\n <>\n {format(dateRange.from, \"LLL dd, y\")} -{\" \"}\n {format(dateRange.to, \"LLL dd, y\")}\n </>\n ) : (\n format(dateRange.from, \"LLL dd, y\")\n )\n ) : (\n <span>{placeholder}</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n selected={dateRange}\n onSelect={onDateRangeChange}\n numberOfMonths={2}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n },\n);\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n","import * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"../utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-[var(--color-border)] hover:bg-[var(--color-border-strong)] transition-colors\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\nimport { Clock } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface TimePickerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (time: Date | undefined) => void;\n format?: \"12\" | \"24\";\n minuteStep?: number;\n secondStep?: number;\n showSecond?: boolean;\n disabled?: boolean;\n placeholder?: string;\n className?: string;\n}\n\nconst TimePicker = React.forwardRef<HTMLButtonElement, TimePickerProps>(\n (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n format = \"24\",\n minuteStep = 1,\n secondStep = 1,\n showSecond = false,\n disabled,\n placeholder = \"Select time\",\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(\n defaultValue,\n );\n const [open, setOpen] = React.useState(false);\n\n const value = controlledValue ?? internalValue;\n\n const hours =\n format === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n const minutes = Array.from(\n { length: 60 / minuteStep },\n (_, i) => i * minuteStep,\n );\n const seconds = Array.from(\n { length: 60 / secondStep },\n (_, i) => i * secondStep,\n );\n\n const getDisplayTime = (): string => {\n if (!value) return placeholder;\n\n let h = value.getHours();\n const m = value.getMinutes();\n const s = value.getSeconds();\n\n let period = \"\";\n if (format === \"12\") {\n period = h >= 12 ? \" PM\" : \" AM\";\n h = h % 12 || 12;\n }\n\n const timeStr = showSecond\n ? `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`\n : `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}`;\n\n return timeStr + period;\n };\n\n const handleTimeSelect = (\n type: \"hour\" | \"minute\" | \"second\",\n val: number,\n ) => {\n const newTime = value ? new Date(value) : new Date();\n\n if (type === \"hour\") {\n if (format === \"12\") {\n const isPM = newTime.getHours() >= 12;\n const hour24 = val === 12 ? (isPM ? 12 : 0) : val + (isPM ? 12 : 0);\n newTime.setHours(hour24);\n } else {\n newTime.setHours(val);\n }\n } else if (type === \"minute\") {\n newTime.setMinutes(val);\n } else if (type === \"second\") {\n newTime.setSeconds(val);\n }\n\n setInternalValue(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodToggle = () => {\n if (!value || format !== \"12\") return;\n\n const newTime = new Date(value);\n const currentHours = newTime.getHours();\n newTime.setHours((currentHours + 12) % 24);\n\n setInternalValue(newTime);\n onChange?.(newTime);\n };\n\n const getCurrentHour = (): number => {\n if (!value) return format === \"12\" ? 12 : 0;\n const h = value.getHours();\n return format === \"12\" ? h % 12 || 12 : h;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <Clock className=\"mr-2 h-4 w-4\" />\n {getDisplayTime()}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Hours */}\n <ScrollArea className=\"h-64 w-20\">\n <div className=\"p-1\">\n {hours.map((hour) => (\n <button\n key={hour}\n onClick={() => handleTimeSelect(\"hour\", hour)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n getCurrentHour() === hour\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(hour).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n\n {/* Minutes */}\n <ScrollArea className=\"h-64 w-20 border-l border-[var(--color-border)]\">\n <div className=\"p-1\">\n {minutes.map((minute) => (\n <button\n key={minute}\n onClick={() => handleTimeSelect(\"minute\", minute)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n value?.getMinutes() === minute\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(minute).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n\n {/* Seconds */}\n {showSecond && (\n <ScrollArea className=\"h-64 w-20 border-l border-[var(--color-border)]\">\n <div className=\"p-1\">\n {seconds.map((second) => (\n <button\n key={second}\n onClick={() => handleTimeSelect(\"second\", second)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n value?.getSeconds() === second\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(second).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n )}\n\n {/* AM/PM Toggle */}\n {format === \"12\" && (\n <div className=\"flex flex-col border-l border-[var(--color-border)] p-1\">\n <button\n onClick={handlePeriodToggle}\n className={cn(\n \"px-3 py-2 text-sm rounded-md transition-colors\",\n value && value.getHours() < 12\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n AM\n </button>\n <button\n onClick={handlePeriodToggle}\n className={cn(\n \"px-3 py-2 text-sm rounded-md transition-colors mt-1\",\n value && value.getHours() >= 12\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n PM\n </button>\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n },\n);\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n presetColors?: string[];\n showInput?: boolean;\n disabled?: boolean;\n className?: string;\n}\n\nconst defaultPresetColors = [\n \"#f87171\",\n \"#fb923c\",\n \"#fbbf24\",\n \"#facc15\",\n \"#a3e635\",\n \"#4ade80\",\n \"#34d399\",\n \"#2dd4bf\",\n \"#22d3ee\",\n \"#38bdf8\",\n \"#60a5fa\",\n \"#818cf8\",\n \"#a78bfa\",\n \"#c084fc\",\n \"#e879f9\",\n \"#f472b6\",\n \"#fb7185\",\n \"#000000\",\n];\n\nconst ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value = \"#000000\",\n onChange,\n presetColors = defaultPresetColors,\n showInput = true,\n disabled = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(value);\n\n React.useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (color: string) => {\n setInternalValue(color);\n onChange?.(color);\n };\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"h-10 w-10 rounded-md border-2 border-[var(--color-border)] transition-all\",\n \"hover:border-[var(--color-border-strong)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n className,\n )}\n style={{ backgroundColor: internalValue }}\n />\n </PopoverTrigger>\n <PopoverContent className=\"w-64\">\n <div className=\"space-y-4\">\n {showInput && (\n <div className=\"flex items-center gap-2\">\n <Input\n value={internalValue}\n onChange={(e) => handleChange(e.target.value)}\n placeholder=\"#000000\"\n className=\"flex-1\"\n />\n <div\n className=\"h-10 w-10 rounded-md border border-[var(--color-border)]\"\n style={{ backgroundColor: internalValue }}\n />\n </div>\n )}\n\n <div className=\"grid grid-cols-6 gap-2\">\n {presetColors.map((color) => (\n <button\n key={color}\n type=\"button\"\n className={cn(\n \"h-8 w-8 rounded-md border border-[var(--color-border)] transition-all\",\n \"hover:scale-110 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)]\",\n \"flex items-center justify-center\",\n )}\n style={{ backgroundColor: color }}\n onClick={() => handleChange(color)}\n >\n {internalValue.toLowerCase() === color.toLowerCase() && (\n <Check className=\"h-4 w-4 text-white drop-shadow-md\" />\n )}\n </button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\nColorPicker.displayName = \"ColorPicker\";\n\nexport { ColorPicker };\n","import * as React from \"react\";\nimport { Star } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface RatingProps {\n value?: number;\n onChange?: (value: number) => void;\n max?: number;\n readonly?: boolean;\n disabled?: boolean;\n allowHalf?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n value = 0,\n onChange,\n max = 5,\n readonly = false,\n disabled = false,\n allowHalf = false,\n size = \"md\",\n className,\n },\n ref,\n ) => {\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n\n const sizeClasses = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const handleClick = (index: number, isHalf: boolean) => {\n if (readonly || disabled) return;\n const newValue = isHalf ? index + 0.5 : index + 1;\n onChange?.(newValue);\n };\n\n const handleMouseEnter = (index: number, isHalf: boolean) => {\n if (readonly || disabled) return;\n const newValue = isHalf ? index + 0.5 : index + 1;\n setHoverValue(newValue);\n };\n\n const handleMouseLeave = () => {\n setHoverValue(null);\n };\n\n const displayValue = hoverValue ?? value;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1\",\n (readonly || disabled) && \"pointer-events-none\",\n disabled && \"opacity-50\",\n className,\n )}\n onMouseLeave={handleMouseLeave}\n >\n {Array.from({ length: max }).map((_, index) => {\n const isFilled = index < Math.floor(displayValue);\n const isHalfFilled =\n allowHalf &&\n index === Math.floor(displayValue) &&\n displayValue % 1 !== 0;\n\n return (\n <div key={index} className=\"relative inline-flex cursor-pointer\">\n {/* Half star support */}\n {allowHalf && (\n <div\n className=\"absolute inset-0 w-1/2 z-10\"\n onClick={() => handleClick(index, true)}\n onMouseEnter={() => handleMouseEnter(index, true)}\n />\n )}\n <div\n className=\"relative\"\n onClick={() => handleClick(index, false)}\n onMouseEnter={() => handleMouseEnter(index, false)}\n >\n <Star\n className={cn(\n sizeClasses[size],\n \"transition-all\",\n isFilled || isHalfFilled\n ? \"fill-[var(--color-primary)] text-[var(--color-primary)]\"\n : \"text-[var(--color-border-strong)]\",\n )}\n />\n {isHalfFilled && (\n <div className=\"absolute inset-0 overflow-hidden w-1/2\">\n <Star\n className={cn(\n sizeClasses[size],\n \"fill-[var(--color-primary)] text-[var(--color-primary)]\",\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\nRating.displayName = \"Rating\";\n\nexport { Rating };\n","import * as React from \"react\";\nimport { Upload as UploadIcon, X, FileIcon } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface UploadFile {\n uid: string;\n name: string;\n status: \"uploading\" | \"done\" | \"error\";\n url?: string;\n percent?: number;\n}\n\nexport interface UploadProps {\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxCount?: number;\n fileList?: UploadFile[];\n onChange?: (fileList: UploadFile[]) => void;\n onRemove?: (file: UploadFile) => void;\n beforeUpload?: (file: File) => boolean | Promise<boolean>;\n customRequest?: (file: File) => Promise<{ url: string }>;\n disabled?: boolean;\n listType?: \"text\" | \"picture\";\n className?: string;\n}\n\nconst Upload = React.forwardRef<HTMLDivElement, UploadProps>(\n (\n {\n accept,\n multiple = false,\n maxSize,\n maxCount,\n fileList = [],\n onChange,\n onRemove,\n beforeUpload,\n customRequest,\n disabled = false,\n listType = \"text\",\n className,\n },\n ref,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [files, setFiles] = React.useState<UploadFile[]>(fileList);\n\n React.useEffect(() => {\n setFiles(fileList);\n }, [fileList]);\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n\n for (const file of selectedFiles) {\n // Check max size\n if (maxSize && file.size > maxSize) {\n console.error(`File ${file.name} exceeds max size`);\n continue;\n }\n\n // Check max count\n if (maxCount && files.length >= maxCount) {\n console.error(\"Maximum file count reached\");\n break;\n }\n\n // Before upload hook\n if (beforeUpload) {\n const shouldUpload = await beforeUpload(file);\n if (!shouldUpload) continue;\n }\n\n const newFile: UploadFile = {\n uid: `${Date.now()}-${file.name}`,\n name: file.name,\n status: \"uploading\",\n percent: 0,\n };\n\n const newFiles = [...files, newFile];\n setFiles(newFiles);\n onChange?.(newFiles);\n\n // Simulate upload or use custom request\n try {\n if (customRequest) {\n const response = await customRequest(file);\n newFile.url = response.url;\n } else {\n // Simulate upload\n newFile.url = URL.createObjectURL(file);\n }\n newFile.status = \"done\";\n newFile.percent = 100;\n } catch (error) {\n newFile.status = \"error\";\n }\n\n const updatedFiles = newFiles.map((f) =>\n f.uid === newFile.uid ? newFile : f,\n );\n setFiles(updatedFiles);\n onChange?.(updatedFiles);\n }\n\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n };\n\n const handleRemove = (file: UploadFile) => {\n const newFiles = files.filter((f) => f.uid !== file.uid);\n setFiles(newFiles);\n onChange?.(newFiles);\n onRemove?.(file);\n };\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n <div\n onClick={handleClick}\n className={cn(\n \"border-2 border-dashed border-[var(--color-border)] rounded-lg p-6\",\n \"hover:border-[var(--color-primary)] transition-colors cursor-pointer\",\n \"flex flex-col items-center justify-center gap-2\",\n disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <UploadIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n <div className=\"text-sm text-[var(--color-text-muted)]\">\n Click to upload or drag and drop\n </div>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"hidden\"\n />\n </div>\n\n {files.length > 0 && (\n <div className=\"space-y-2\">\n {files.map((file) => (\n <div\n key={file.uid}\n className={cn(\n \"flex items-center gap-3 p-3 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)]\",\n )}\n >\n {listType === \"picture\" && file.url ? (\n <img\n src={file.url}\n alt={file.name}\n className=\"h-12 w-12 object-cover rounded\"\n />\n ) : (\n <FileIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n )}\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[var(--color-text)] truncate\">\n {file.name}\n </div>\n {file.status === \"uploading\" && (\n <div className=\"text-xs text-[var(--color-text-muted)]\">\n Uploading... {file.percent}%\n </div>\n )}\n {file.status === \"error\" && (\n <div className=\"text-xs text-red-500\">Upload failed</div>\n )}\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(file);\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nUpload.displayName = \"Upload\";\n\nexport { Upload };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\n\nexport interface AutoCompleteOption {\n value: string;\n label: string;\n}\n\nexport interface AutoCompleteProps {\n options: AutoCompleteOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onSelect?: (value: string, option: AutoCompleteOption) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst AutoComplete = React.forwardRef<HTMLInputElement, AutoCompleteProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSelect,\n placeholder,\n disabled,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = React.useMemo(() => {\n if (!value) return options;\n return options.filter((option) =>\n option.label.toLowerCase().includes(value.toLowerCase()),\n );\n }, [options, value]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleChange = (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n setOpen(true);\n setActiveIndex(0);\n };\n\n const handleSelect = (option: AutoCompleteOption) => {\n setInternalValue(option.value);\n onChange?.(option.value);\n onSelect?.(option.value, option);\n setOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open || filteredOptions.length === 0) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0,\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1,\n );\n break;\n case \"Enter\":\n e.preventDefault();\n if (filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n setOpen(false);\n break;\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative\", className)}>\n <Input\n ref={ref}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n />\n\n {open && filteredOptions.length > 0 && (\n <div\n className={cn(\n \"absolute z-50 w-full mt-1 max-h-60 overflow-auto rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n {filteredOptions.map((option, index) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors text-sm\",\n index === activeIndex\n ? \"bg-[var(--color-bg-glass-hover)] text-[var(--color-text)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n )}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nAutoComplete.displayName = \"AutoComplete\";\n\nexport { AutoComplete };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Textarea } from \"./textarea\";\n\nexport interface MentionOption {\n value: string;\n label: string;\n avatar?: string;\n}\n\nexport interface MentionsProps {\n options: MentionOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onSelect?: (option: MentionOption) => void;\n prefix?: string;\n placeholder?: string;\n disabled?: boolean;\n rows?: number;\n className?: string;\n}\n\nconst Mentions = React.forwardRef<HTMLTextAreaElement, MentionsProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSelect,\n prefix = \"@\",\n placeholder,\n disabled,\n rows = 3,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [mentionSearch, setMentionSearch] = React.useState(\"\");\n const [mentionPosition, setMentionPosition] = React.useState({\n top: 0,\n left: 0,\n });\n const [activeIndex, setActiveIndex] = React.useState(0);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = React.useMemo(() => {\n if (!mentionSearch) return options;\n return options.filter((option) =>\n option.label.toLowerCase().includes(mentionSearch.toLowerCase()),\n );\n }, [options, mentionSearch]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n\n // Check for mention trigger\n const cursorPosition = e.target.selectionStart;\n const textBeforeCursor = newValue.slice(0, cursorPosition);\n const mentionMatch = textBeforeCursor.match(\n new RegExp(`${prefix}(\\\\w*)$`),\n );\n\n if (mentionMatch) {\n setMentionSearch(mentionMatch[1]);\n setOpen(true);\n setActiveIndex(0);\n } else {\n setOpen(false);\n }\n };\n\n const handleSelect = (option: MentionOption) => {\n if (!textareaRef.current) return;\n\n const cursorPosition = textareaRef.current.selectionStart;\n const textBeforeCursor = value.slice(0, cursorPosition);\n const textAfterCursor = value.slice(cursorPosition);\n\n const mentionMatch = textBeforeCursor.match(\n new RegExp(`${prefix}(\\\\w*)$`),\n );\n if (!mentionMatch) return;\n\n const beforeMention = textBeforeCursor.slice(0, -mentionMatch[0].length);\n const newValue = `${beforeMention}${prefix}${option.value} ${textAfterCursor}`;\n\n setInternalValue(newValue);\n onChange?.(newValue);\n onSelect?.(option);\n setOpen(false);\n\n // Set cursor position after mention\n setTimeout(() => {\n const newPosition =\n beforeMention.length + prefix.length + option.value.length + 1;\n textareaRef.current?.setSelectionRange(newPosition, newPosition);\n textareaRef.current?.focus();\n }, 0);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!open || filteredOptions.length === 0) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0,\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1,\n );\n break;\n case \"Enter\":\n if (filteredOptions[activeIndex]) {\n e.preventDefault();\n handleSelect(filteredOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setOpen(false);\n break;\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative\", className)}>\n <Textarea\n ref={(node) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n textareaRef.current = node;\n }}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n />\n\n {open && filteredOptions.length > 0 && (\n <div\n className={cn(\n \"absolute z-50 w-64 max-h-60 overflow-auto rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n style={{\n top: \"100%\",\n marginTop: \"4px\",\n }}\n >\n {filteredOptions.map((option, index) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors\",\n index === activeIndex\n ? \"bg-[var(--color-bg-glass-hover)] text-[var(--color-text)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n )}\n >\n {option.avatar && (\n <img\n src={option.avatar}\n alt={option.label}\n className=\"h-6 w-6 rounded-full\"\n />\n )}\n <div className=\"flex-1 text-sm\">{option.label}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nMentions.displayName = \"Mentions\";\n\nexport { Mentions };\n","import * as React from \"react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\n\nexport interface CascaderOption {\n value: string;\n label: string;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps {\n options: CascaderOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[], selectedOptions: CascaderOption[]) => void;\n placeholder?: string;\n disabled?: boolean;\n changeOnSelect?: boolean;\n className?: string;\n}\n\nconst Cascader = React.forwardRef<HTMLDivElement, CascaderProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = [],\n onChange,\n placeholder = \"Please select\",\n disabled,\n changeOnSelect = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<string[]>(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [activeMenus, setActiveMenus] = React.useState<CascaderOption[][]>([\n options,\n ]);\n\n const value = controlledValue ?? internalValue;\n\n const getSelectedOptions = (vals: string[]): CascaderOption[] => {\n const result: CascaderOption[] = [];\n let currentOptions = options;\n\n for (const val of vals) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (!option) break;\n result.push(option);\n currentOptions = option.children || [];\n }\n\n return result;\n };\n\n const handleSelect = (option: CascaderOption, level: number) => {\n if (option.disabled) return;\n\n const newValue = [...value.slice(0, level), option.value];\n\n if (option.children && option.children.length > 0) {\n setActiveMenus([...activeMenus.slice(0, level + 1), option.children]);\n\n if (changeOnSelect) {\n setInternalValue(newValue);\n onChange?.(newValue, getSelectedOptions(newValue));\n }\n } else {\n setInternalValue(newValue);\n onChange?.(newValue, getSelectedOptions(newValue));\n setOpen(false);\n setActiveMenus([options]);\n }\n };\n\n const displayLabel = React.useMemo(() => {\n const selectedOptions = getSelectedOptions(value);\n return selectedOptions.length > 0\n ? selectedOptions.map((opt) => opt.label).join(\" / \")\n : placeholder;\n }, [value, options, placeholder]);\n\n return (\n <div ref={ref} className={cn(\"\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-between\",\n !value.length && \"text-[var(--color-text-muted)]\",\n )}\n >\n <span className=\"truncate\">{displayLabel}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {activeMenus.map((menu, level) => (\n <div\n key={level}\n className={cn(\n \"w-40 max-h-64 overflow-y-auto\",\n level > 0 && \"border-l border-[var(--color-border)]\",\n )}\n >\n {menu.map((option) => {\n const isSelected = value[level] === option.value;\n const hasChildren =\n option.children && option.children.length > 0;\n\n return (\n <div\n key={option.value}\n onClick={() => handleSelect(option, level)}\n className={cn(\n \"flex items-center justify-between px-3 py-2 cursor-pointer transition-colors text-sm\",\n isSelected\n ? \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n option.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <span className=\"truncate\">{option.label}</span>\n {hasChildren && (\n <ChevronRight className=\"h-4 w-4 shrink-0 ml-2\" />\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\nCascader.displayName = \"Cascader\";\n\nexport { Cascader };\n","import * as React from \"react\";\nimport { ChevronRight, ChevronLeft } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Checkbox } from \"./checkbox\";\nimport { Input } from \"./input\";\n\nexport interface TransferItem {\n key: string;\n title: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface TransferProps {\n dataSource: TransferItem[];\n targetKeys?: string[];\n selectedKeys?: string[];\n onChange?: (\n targetKeys: string[],\n direction: \"left\" | \"right\",\n moveKeys: string[],\n ) => void;\n onSelectChange?: (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[],\n ) => void;\n titles?: [string, string];\n showSearch?: boolean;\n className?: string;\n}\n\nconst Transfer = React.forwardRef<HTMLDivElement, TransferProps>(\n (\n {\n dataSource,\n targetKeys = [],\n selectedKeys = [],\n onChange,\n onSelectChange,\n titles = [\"Source\", \"Target\"],\n showSearch = false,\n className,\n },\n ref,\n ) => {\n const [leftSelected, setLeftSelected] = React.useState<string[]>([]);\n const [rightSelected, setRightSelected] = React.useState<string[]>([]);\n const [leftSearch, setLeftSearch] = React.useState(\"\");\n const [rightSearch, setRightSearch] = React.useState(\"\");\n\n const leftDataSource = dataSource.filter(\n (item) => !targetKeys.includes(item.key),\n );\n const rightDataSource = dataSource.filter((item) =>\n targetKeys.includes(item.key),\n );\n\n const filteredLeftData = leftDataSource.filter((item) =>\n item.title.toLowerCase().includes(leftSearch.toLowerCase()),\n );\n const filteredRightData = rightDataSource.filter((item) =>\n item.title.toLowerCase().includes(rightSearch.toLowerCase()),\n );\n\n const handleLeftCheck = (key: string, checked: boolean) => {\n const newSelected = checked\n ? [...leftSelected, key]\n : leftSelected.filter((k) => k !== key);\n setLeftSelected(newSelected);\n onSelectChange?.(newSelected, rightSelected);\n };\n\n const handleRightCheck = (key: string, checked: boolean) => {\n const newSelected = checked\n ? [...rightSelected, key]\n : rightSelected.filter((k) => k !== key);\n setRightSelected(newSelected);\n onSelectChange?.(leftSelected, newSelected);\n };\n\n const handleMoveToRight = () => {\n const newTargetKeys = [...targetKeys, ...leftSelected];\n onChange?.(newTargetKeys, \"right\", leftSelected);\n setLeftSelected([]);\n };\n\n const handleMoveToLeft = () => {\n const newTargetKeys = targetKeys.filter(\n (key) => !rightSelected.includes(key),\n );\n onChange?.(newTargetKeys, \"left\", rightSelected);\n setRightSelected([]);\n };\n\n const renderList = (\n data: TransferItem[],\n selected: string[],\n onCheck: (key: string, checked: boolean) => void,\n search: string,\n onSearchChange: (value: string) => void,\n title: string,\n ) => (\n <div className=\"flex flex-col w-64 h-80 border border-[var(--color-border)] rounded-lg bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\">\n <div className=\"p-3 border-b border-[var(--color-border)]\">\n <div className=\"text-sm font-medium text-[var(--color-text)] mb-2\">\n {title}\n </div>\n {showSearch && (\n <Input\n placeholder=\"Search\"\n value={search}\n onChange={(e) => onSearchChange(e.target.value)}\n size=\"sm\"\n />\n )}\n </div>\n <div className=\"flex-1 overflow-y-auto p-2\">\n {data.map((item) => (\n <label\n key={item.key}\n className={cn(\n \"flex items-center gap-3 p-2 rounded-md cursor-pointer transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n item.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <Checkbox\n checked={selected.includes(item.key)}\n onCheckedChange={(checked) =>\n onCheck(item.key, checked as boolean)\n }\n disabled={item.disabled}\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[var(--color-text)] truncate\">\n {item.title}\n </div>\n {item.description && (\n <div className=\"text-xs text-[var(--color-text-muted)] truncate\">\n {item.description}\n </div>\n )}\n </div>\n </label>\n ))}\n </div>\n </div>\n );\n\n return (\n <div ref={ref} className={cn(\"flex items-center gap-4\", className)}>\n {renderList(\n filteredLeftData,\n leftSelected,\n handleLeftCheck,\n leftSearch,\n setLeftSearch,\n titles[0],\n )}\n\n <div className=\"flex flex-col gap-2\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={handleMoveToRight}\n disabled={leftSelected.length === 0}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={handleMoveToLeft}\n disabled={rightSelected.length === 0}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {renderList(\n filteredRightData,\n rightSelected,\n handleRightCheck,\n rightSearch,\n setRightSearch,\n titles[1],\n )}\n </div>\n );\n },\n);\nTransfer.displayName = \"Transfer\";\n\nexport { Transfer };\n","import * as React from \"react\";\nimport { Check, ChevronDown, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface TreeSelectNode {\n value: string;\n label: string;\n children?: TreeSelectNode[];\n disabled?: boolean;\n}\n\nexport interface TreeSelectProps {\n treeData: TreeSelectNode[];\n value?: string | string[];\n defaultValue?: string | string[];\n onChange?: (\n value: string | string[],\n selectedNodes: TreeSelectNode[],\n ) => void;\n multiple?: boolean;\n placeholder?: string;\n disabled?: boolean;\n treeCheckable?: boolean;\n className?: string;\n}\n\nconst TreeSelect = React.forwardRef<HTMLButtonElement, TreeSelectProps>(\n (\n {\n treeData,\n value: controlledValue,\n defaultValue,\n onChange,\n multiple = false,\n placeholder = \"Please select\",\n disabled,\n treeCheckable = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<string | string[]>(\n defaultValue ?? (multiple ? [] : \"\"),\n );\n const [open, setOpen] = React.useState(false);\n const [expandedKeys, setExpandedKeys] = React.useState<string[]>([]);\n\n const value = controlledValue ?? internalValue;\n\n const flattenTree = (nodes: TreeSelectNode[]): TreeSelectNode[] => {\n const result: TreeSelectNode[] = [];\n const traverse = (node: TreeSelectNode) => {\n result.push(node);\n if (node.children) {\n node.children.forEach(traverse);\n }\n };\n nodes.forEach(traverse);\n return result;\n };\n\n const findNodeByValue = (val: string): TreeSelectNode | undefined => {\n return flattenTree(treeData).find((node) => node.value === val);\n };\n\n const getSelectedNodes = (): TreeSelectNode[] => {\n if (Array.isArray(value)) {\n return value.map(findNodeByValue).filter(Boolean) as TreeSelectNode[];\n }\n const node = findNodeByValue(value);\n return node ? [node] : [];\n };\n\n const getDisplayText = (): string => {\n const selectedNodes = getSelectedNodes();\n if (selectedNodes.length === 0) return placeholder;\n return selectedNodes.map((node) => node.label).join(\", \");\n };\n\n const handleSelect = (node: TreeSelectNode) => {\n if (node.disabled) return;\n\n if (multiple) {\n const currentValues = Array.isArray(value) ? value : [];\n const newValues = currentValues.includes(node.value)\n ? currentValues.filter((v) => v !== node.value)\n : [...currentValues, node.value];\n setInternalValue(newValues);\n onChange?.(newValues, getSelectedNodes());\n } else {\n setInternalValue(node.value);\n onChange?.(node.value, [node]);\n setOpen(false);\n }\n };\n\n const handleExpand = (nodeValue: string) => {\n setExpandedKeys((prev) =>\n prev.includes(nodeValue)\n ? prev.filter((key) => key !== nodeValue)\n : [...prev, nodeValue],\n );\n };\n\n const isSelected = (nodeValue: string): boolean => {\n return Array.isArray(value)\n ? value.includes(nodeValue)\n : value === nodeValue;\n };\n\n const renderTreeNode = (\n node: TreeSelectNode,\n level: number = 0,\n ): React.ReactNode => {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expandedKeys.includes(node.value);\n const selected = isSelected(node.value);\n\n return (\n <div key={node.value}>\n <div\n className={cn(\n \"flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer transition-colors text-sm\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n selected &&\n \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\",\n node.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n style={{ paddingLeft: `${level * 20 + 8}px` }}\n >\n {hasChildren ? (\n <button\n onClick={() => handleExpand(node.value)}\n className=\"shrink-0 p-0.5\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </button>\n ) : (\n <span className=\"w-5\" />\n )}\n\n <div\n onClick={() => handleSelect(node)}\n className=\"flex items-center justify-between flex-1\"\n >\n <span>{node.label}</span>\n {selected && <Check className=\"h-4 w-4\" />}\n </div>\n </div>\n\n {hasChildren && isExpanded && (\n <div>\n {node.children!.map((child) => renderTreeNode(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-between\",\n !getSelectedNodes().length && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <span className=\"truncate\">{getDisplayText()}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-0\" align=\"start\">\n <ScrollArea className=\"h-64\">\n <div className=\"p-2\">\n {treeData.map((node) => renderTreeNode(node))}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n );\n },\n);\nTreeSelect.displayName = \"TreeSelect\";\n\nexport { TreeSelect };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n AlertCircle,\n CheckCircle2,\n Info,\n AlertTriangle,\n X,\n} from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 backdrop-blur-[var(--blur-glass)] transition-all duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n info: [\n \"bg-blue-500/10 border-blue-500/30\",\n \"text-blue-200\",\n \"[&>svg]:text-blue-400\",\n ],\n success: [\n \"bg-emerald-500/10 border-emerald-500/30\",\n \"text-emerald-200\",\n \"[&>svg]:text-emerald-400\",\n ],\n warning: [\n \"bg-amber-500/10 border-amber-500/30\",\n \"text-amber-200\",\n \"[&>svg]:text-amber-400\",\n ],\n error: [\n \"bg-red-500/10 border-red-500/30\",\n \"text-red-200\",\n \"[&>svg]:text-red-400\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst iconMap = {\n default: Info,\n info: Info,\n success: CheckCircle2,\n warning: AlertTriangle,\n error: AlertCircle,\n};\n\nexport interface AlertProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n title?: string;\n icon?: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"default\",\n title,\n icon,\n dismissible,\n onDismiss,\n children,\n ...props\n },\n ref,\n ) => {\n const [dismissed, setDismissed] = React.useState(false);\n\n const handleDismiss = () => {\n setDismissed(true);\n onDismiss?.();\n };\n\n if (dismissed) return null;\n\n const Icon = iconMap[variant || \"default\"];\n const showIcon = icon !== null;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex items-start gap-3\">\n {showIcon && (\n <div className=\"mt-0.5 shrink-0\">\n {icon || <Icon className=\"h-5 w-5\" />}\n </div>\n )}\n <div className=\"flex-1 space-y-1\">\n {title && (\n <h5 className=\"font-semibold leading-none tracking-tight\">\n {title}\n </h5>\n )}\n {children && (\n <div className=\"text-sm opacity-90 [&_p]:leading-relaxed\">\n {children}\n </div>\n )}\n </div>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"shrink-0 rounded-md p-1 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\"\n aria-label=\"Dismiss alert\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm opacity-90 [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cn } from \"../utils\";\n\nexport interface ProgressProps extends React.ComponentPropsWithoutRef<\n typeof ProgressPrimitive.Root\n> {\n label?: string;\n showValue?: boolean;\n variant?: \"default\" | \"gradient\";\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(\n (\n { className, value = 0, label, showValue, variant = \"default\", ...props },\n ref,\n ) => {\n const progressValue = Math.min(Math.max(value ?? 0, 0), 100);\n\n return (\n <div className=\"w-full space-y-2\">\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <span className=\"text-sm font-medium text-[var(--color-text)]\">\n {label}\n </span>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {progressValue}%\n </span>\n )}\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n \"h-full w-full flex-1 transition-all duration-300 ease-out\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-primary)]\",\n )}\n style={{ transform: `translateX(-${100 - progressValue}%)` }}\n />\n </ProgressPrimitive.Root>\n </div>\n );\n },\n);\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"rect\" | \"circle\" | \"text\" | \"card\";\n lines?: number;\n animated?: boolean;\n width?: string | number;\n height?: string | number;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"rect\",\n lines = 3,\n animated = true,\n width,\n height,\n style,\n ...props\n },\n ref,\n ) => {\n const baseStyles = cn(\n \"bg-white/8 rounded-md\",\n animated && \"animate-pulse animate-shimmer\",\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div className={cn(\"space-y-2\", className)} ref={ref} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={baseStyles}\n style={{\n height: \"0.75rem\",\n width: i === lines - 1 ? \"80%\" : \"100%\",\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n baseStyles,\n variant === \"circle\" && \"rounded-full\",\n variant === \"card\" && \"h-32 w-full\",\n className,\n )}\n style={{\n width,\n height: variant === \"text\" ? \"0.75rem\" : height,\n ...style,\n }}\n data-slot=\"skeleton\"\n {...props}\n />\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-2 border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n xl: \"h-12 w-12\",\n },\n variant: {\n default: \"text-[var(--color-text)]\",\n primary: \"text-[var(--color-primary)]\",\n secondary: \"text-[var(--color-text-secondary)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n },\n);\n\nexport interface SpinnerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(spinnerVariants({ size, variant }), className)}\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n },\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };\n","import { Toaster as Sonner, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Sonner\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-[var(--color-bg-secondary)] group-[.toaster]:backdrop-blur-[var(--blur-heavy)] group-[.toaster]:text-[var(--color-text)] group-[.toaster]:border-[var(--color-border)] group-[.toaster]:shadow-[var(--shadow-elevated)] group-[.toaster]:rounded-xl\",\n description: \"group-[.toast]:text-[var(--color-text-muted)]\",\n actionButton:\n \"group-[.toast]:bg-[var(--color-primary)] group-[.toast]:text-white group-[.toast]:rounded-md\",\n cancelButton:\n \"group-[.toast]:bg-[var(--color-bg-glass)] group-[.toast]:text-[var(--color-text-muted)] group-[.toast]:rounded-md\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster, toast };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\n className,\n )}\n {...props}\n >\n {icon && (\n <div className=\"mb-4 text-[var(--color-text-muted)] opacity-50\">\n {icon}\n </div>\n )}\n <h3 className=\"text-lg font-semibold text-[var(--color-text)] mb-2\">\n {title}\n </h3>\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)] max-w-sm mb-6\">\n {description}\n </p>\n )}\n {action && <div>{action}</div>}\n </div>\n );\n },\n);\nEmptyState.displayName = \"EmptyState\";\n\nexport { EmptyState };\n","import * as React from \"react\";\nimport { CheckCircle2, XCircle, AlertCircle, Info } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface ResultProps {\n status?: \"success\" | \"error\" | \"warning\" | \"info\";\n title: string;\n subtitle?: string;\n icon?: React.ReactNode;\n extra?: React.ReactNode;\n className?: string;\n}\n\nconst Result = React.forwardRef<HTMLDivElement, ResultProps>(\n ({ status = \"info\", title, subtitle, icon, extra, className }, ref) => {\n const defaultIcons = {\n success: <CheckCircle2 className=\"h-16 w-16 text-green-500\" />,\n error: <XCircle className=\"h-16 w-16 text-red-500\" />,\n warning: <AlertCircle className=\"h-16 w-16 text-yellow-500\" />,\n info: <Info className=\"h-16 w-16 text-[var(--color-primary)]\" />,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center py-12 px-4\",\n className,\n )}\n >\n <div className=\"mb-6\">{icon || defaultIcons[status]}</div>\n <h3 className=\"text-2xl font-semibold text-[var(--color-text)] mb-2\">\n {title}\n </h3>\n {subtitle && (\n <p className=\"text-[var(--color-text-secondary)] max-w-md mb-6\">\n {subtitle}\n </p>\n )}\n {extra && <div className=\"flex gap-3\">{extra}</div>}\n </div>\n );\n },\n);\nResult.displayName = \"Result\";\n\nexport { Result };\n","import * as React from \"react\";\nimport { X, CheckCircle2, XCircle, AlertCircle, Info } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface NotificationProps {\n id: string;\n type?: \"success\" | \"error\" | \"warning\" | \"info\";\n title: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n}\n\nconst Notification = React.forwardRef<HTMLDivElement, NotificationProps>(\n ({ id, type = \"info\", title, description, onClose }, ref) => {\n const icons = {\n success: <CheckCircle2 className=\"h-5 w-5 text-green-500\" />,\n error: <XCircle className=\"h-5 w-5 text-red-500\" />,\n warning: <AlertCircle className=\"h-5 w-5 text-yellow-500\" />,\n info: <Info className=\"h-5 w-5 text-[var(--color-primary)]\" />,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex gap-3 p-4 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in slide-in-from-right-full\",\n )}\n >\n <div className=\"shrink-0\">{icons[type]}</div>\n <div className=\"flex-1 space-y-1\">\n <div className=\"text-sm font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n {description && (\n <div className=\"text-sm text-[var(--color-text-secondary)]\">\n {description}\n </div>\n )}\n </div>\n <button\n onClick={onClose}\n className=\"shrink-0 text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n );\n },\n);\nNotification.displayName = \"Notification\";\n\n// Notification Manager\ntype NotificationManagerProps = {\n notifications: NotificationProps[];\n onRemove: (id: string) => void;\n};\n\nexport const NotificationManager: React.FC<NotificationManagerProps> = ({\n notifications,\n onRemove,\n}) => {\n return (\n <div className=\"fixed top-4 right-4 z-[100] flex flex-col gap-3 max-w-md\">\n {notifications.map((notification) => (\n <Notification\n key={notification.id}\n {...notification}\n onClose={() => onRemove(notification.id)}\n />\n ))}\n </div>\n );\n};\n\nexport { Notification };\n","import * as React from \"react\";\nimport {\n CheckCircle2,\n XCircle,\n AlertCircle,\n Info,\n Loader2,\n X,\n} from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport type MessageType = \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\";\n\nexport interface MessageProps {\n type?: MessageType;\n content: React.ReactNode;\n duration?: number;\n onClose?: () => void;\n icon?: React.ReactNode;\n className?: string;\n}\n\nconst Message = React.forwardRef<HTMLDivElement, MessageProps>(\n (\n { type = \"info\", content, duration = 3000, onClose, icon, className },\n ref,\n ) => {\n React.useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n onClose?.();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const icons = {\n success: <CheckCircle2 className=\"h-5 w-5 text-green-500\" />,\n error: <XCircle className=\"h-5 w-5 text-red-500\" />,\n warning: <AlertCircle className=\"h-5 w-5 text-yellow-500\" />,\n info: <Info className=\"h-5 w-5 text-blue-500\" />,\n loading: (\n <Loader2 className=\"h-5 w-5 text-[var(--color-primary)] animate-spin\" />\n ),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-3 px-4 py-3 rounded-lg\",\n \"bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in fade-in slide-in-from-top-4\",\n className,\n )}\n >\n {icon || icons[type]}\n <span className=\"flex-1 text-sm text-[var(--color-text)]\">\n {content}\n </span>\n {onClose && (\n <button\n onClick={onClose}\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n },\n);\nMessage.displayName = \"Message\";\n\n// Message Manager\ninterface MessageInstance {\n id: string;\n type: MessageType;\n content: React.ReactNode;\n duration?: number;\n}\n\nlet messageContainer: HTMLDivElement | null = null;\nlet messageInstances: MessageInstance[] = [];\nlet updateCallback: (() => void) | null = null;\n\nconst getContainer = (): HTMLDivElement => {\n if (!messageContainer) {\n messageContainer = document.createElement(\"div\");\n messageContainer.className =\n \"fixed top-4 left-1/2 -translate-x-1/2 z-[10000] flex flex-col gap-2\";\n document.body.appendChild(messageContainer);\n }\n return messageContainer;\n};\n\nconst show = (type: MessageType, content: React.ReactNode, duration = 3000) => {\n const id = Math.random().toString(36).substring(7);\n const instance: MessageInstance = { id, type, content, duration };\n messageInstances.push(instance);\n updateCallback?.();\n\n if (duration > 0) {\n setTimeout(() => {\n close(id);\n }, duration);\n }\n\n return id;\n};\n\nconst close = (id: string) => {\n messageInstances = messageInstances.filter((msg) => msg.id !== id);\n updateCallback?.();\n};\n\nexport const MessageManager = {\n success: (content: React.ReactNode, duration?: number) =>\n show(\"success\", content, duration),\n error: (content: React.ReactNode, duration?: number) =>\n show(\"error\", content, duration),\n warning: (content: React.ReactNode, duration?: number) =>\n show(\"warning\", content, duration),\n info: (content: React.ReactNode, duration?: number) =>\n show(\"info\", content, duration),\n loading: (content: React.ReactNode, duration?: number) =>\n show(\"loading\", content, duration),\n destroy: (id?: string) => {\n if (id) {\n close(id);\n } else {\n messageInstances = [];\n updateCallback?.();\n }\n },\n};\n\nexport const MessageContainer: React.FC = () => {\n const [messages, setMessages] = React.useState<MessageInstance[]>([]);\n\n React.useEffect(() => {\n updateCallback = () => {\n setMessages([...messageInstances]);\n };\n return () => {\n updateCallback = null;\n };\n }, []);\n\n if (messages.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 left-1/2 -translate-x-1/2 z-[10000] flex flex-col gap-2\">\n {messages.map((msg) => (\n <Message\n key={msg.id}\n type={msg.type}\n content={msg.content}\n duration={0}\n onClose={() => MessageManager.destroy(msg.id)}\n />\n ))}\n </div>\n );\n};\n\nexport { Message };\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-[var(--color-border)] p-6 shadow-[var(--shadow-elevated)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"rounded-xl\",\n \"duration-200\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-md opacity-70 ring-offset-[var(--color-bg)] transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { cn } from \"../utils\";\nimport { buttonVariants } from \"./button\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-[var(--color-border)] p-6 shadow-[var(--shadow-elevated)] duration-200\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"rounded-xl\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-[var(--color-text)]\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant: \"gradient\" }), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../utils\";\n\nconst Sheet = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n);\nSheet.displayName = \"Sheet\";\n\nconst SheetTrigger = DrawerPrimitive.Trigger;\n\nconst SheetPortal = DrawerPrimitive.Portal;\n\nconst SheetClose = DrawerPrimitive.Close;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-xl border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n className,\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-[var(--color-border)]\" />\n {children}\n </DrawerPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = \"SheetContent\";\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nSheetTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\ntype DrawerDirection = \"left\" | \"right\" | \"top\" | \"bottom\";\n\ninterface DrawerContextType {\n direction?: DrawerDirection;\n}\n\nconst DrawerContext = React.createContext<DrawerContextType>({});\n\ninterface DrawerProps extends React.ComponentProps<typeof DrawerPrimitive.Root> {\n direction?: DrawerDirection;\n}\n\nconst Drawer = ({\n shouldScaleBackground = true,\n direction = \"right\",\n ...props\n}: DrawerProps) => (\n <DrawerContext.Provider value={{ direction }}>\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n direction={direction === \"bottom\" || direction === \"top\" ? direction : \"right\"}\n {...props}\n />\n </DrawerContext.Provider>\n);\nDrawer.displayName = \"Drawer\";\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n className,\n )}\n {...props}\n />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst drawerContentVariants = cva(\n \"fixed z-50 flex flex-col border border-[var(--color-border)] bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)] shadow-[var(--shadow-elevated)]\",\n {\n variants: {\n direction: {\n left: \"inset-y-0 left-0 h-full w-[378px] border-r rounded-r-xl\",\n right: \"inset-y-0 right-0 h-full w-[378px] border-l rounded-l-xl\",\n top: \"inset-x-0 top-0 w-full h-[378px] border-b rounded-b-xl\",\n bottom: \"inset-x-0 bottom-0 w-full h-auto max-h-[80vh] border-t rounded-t-xl\",\n },\n },\n defaultVariants: {\n direction: \"right\",\n },\n },\n);\n\ninterface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>,\n VariantProps<typeof drawerContentVariants> {}\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n DrawerContentProps\n>(({ className, children, direction, ...props }, ref) => {\n const context = React.useContext(DrawerContext);\n const finalDirection = direction || context.direction || \"right\";\n\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(drawerContentVariants({ direction: finalDirection }), className)}\n {...props}\n >\n {finalDirection === \"bottom\" && (\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-[var(--color-border)]\" />\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n});\nDrawerContent.displayName = \"DrawerContent\";\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-2 p-6 border-b border-[var(--color-border)]\", className)}\n {...props}\n />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-6 border-t border-[var(--color-border)]\", className)}\n {...props}\n />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n width?: string | number;\n centered?: boolean;\n closable?: boolean;\n maskClosable?: boolean;\n className?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open = false,\n onOpenChange,\n title,\n children,\n footer,\n width = 520,\n centered = true,\n closable = true,\n maskClosable = true,\n className,\n },\n ref,\n ) => {\n React.useEffect(() => {\n if (open) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [open]);\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onOpenChange?.(false);\n }\n };\n\n const handleClose = () => {\n onOpenChange?.(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {/* Mask */}\n <div\n role=\"presentation\"\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"animate-in fade-in\",\n )}\n onClick={handleMaskClick}\n />\n\n {/* Modal */}\n <div\n className={cn(\n \"fixed z-50\",\n centered\n ? \"left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n : \"left-1/2 top-[100px] -translate-x-1/2\",\n \"animate-in fade-in zoom-in-95\",\n )}\n >\n <div\n ref={ref}\n className={cn(\n \"flex flex-col rounded-xl border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n className,\n )}\n style={{ width: typeof width === \"number\" ? `${width}px` : width }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n {(title || closable) && (\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-[var(--color-border)]\">\n {title && (\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </h3>\n )}\n {closable && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleClose}\n className=\"ml-auto\"\n aria-label=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-6 py-4 max-h-[70vh] overflow-y-auto\">\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-[var(--color-border)]\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </>\n );\n },\n);\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { cn } from \"../utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"px-3 py-1.5 text-sm text-[var(--color-text)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-lg\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends React.ComponentPropsWithoutRef<\n typeof Dialog\n> {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-text-muted)] [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div\n className=\"flex items-center border-b border-[var(--color-border)] px-3\"\n cmdk-input-wrapper=\"\"\n >\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none\",\n \"placeholder:text-[var(--color-text-placeholder)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm text-[var(--color-text-muted)]\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-[var(--color-text)]\",\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"aria-selected:bg-[var(--color-bg-glass-hover)] aria-selected:text-[var(--color-text)]\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-11 items-center justify-center rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)] p-1\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-4 py-2\",\n \"text-sm font-medium text-[var(--color-text-secondary)]\",\n \"ring-offset-[var(--color-bg)] transition-all\",\n \"hover:text-[var(--color-text)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=active]:bg-[var(--color-bg-elevated)] data-[state=active]:text-[var(--color-text)] data-[state=active]:shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-4 ring-offset-[var(--color-bg)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-[var(--color-border)]\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium text-[var(--color-text)]\",\n \"transition-all hover:text-[var(--color-text-secondary)]\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div\n className={cn(\"pb-4 pt-0 text-[var(--color-text-secondary)]\", className)}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst ContextMenu = ContextMenuPrimitive.Root;\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)] focus:bg-[var(--color-bg-glass-hover)] focus:text-[var(--color-text)] focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-[var(--color-bg-glass)] data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n);\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90\",\n \"md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-[var(--color-border)] shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n};\n","import * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst MenubarMenu: typeof MenubarPrimitive.Menu = MenubarPrimitive.Menu;\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-11 items-center space-x-1 rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n />\n));\nMenubar.displayName = MenubarPrimitive.Root.displayName;\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-3 py-1.5 text-sm font-medium outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n className,\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref,\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n ),\n);\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nMenubarShortcut.displayName = \"MenubarShortcut\";\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n};\n","import * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode;\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean;\n }\n>(({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n \"transition-colors hover:text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-[var(--color-text)]\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { buttonVariants, type ButtonProps } from \"./button\";\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n));\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">;\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"gradient\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface AnchorLink {\n key: string;\n href: string;\n title: string;\n children?: AnchorLink[];\n}\n\nexport interface AnchorProps {\n links: AnchorLink[];\n activeLink?: string;\n onChange?: (currentActiveLink: string) => void;\n offsetTop?: number;\n targetOffset?: number;\n className?: string;\n}\n\nconst Anchor = React.forwardRef<HTMLDivElement, AnchorProps>(\n (\n {\n links,\n activeLink: controlledActiveLink,\n onChange,\n offsetTop = 0,\n targetOffset,\n className,\n },\n ref,\n ) => {\n const [internalActiveLink, setInternalActiveLink] =\n React.useState<string>(\"\");\n const activeLink = controlledActiveLink ?? internalActiveLink;\n\n React.useEffect(() => {\n const handleScroll = () => {\n const scrollPosition =\n window.scrollY + (targetOffset ?? window.innerHeight / 2);\n\n // Find all anchor targets\n const sections = links.flatMap((link) => {\n const main = {\n href: link.href,\n el: document.querySelector(link.href),\n };\n const children =\n link.children?.map((child) => ({\n href: child.href,\n el: document.querySelector(child.href),\n })) || [];\n return [main, ...children];\n });\n\n // Find the current section\n let current = \"\";\n for (const section of sections) {\n if (section.el) {\n const rect = section.el.getBoundingClientRect();\n const top = rect.top + window.scrollY;\n if (top <= scrollPosition) {\n current = section.href;\n }\n }\n }\n\n if (current && current !== activeLink) {\n setInternalActiveLink(current);\n onChange?.(current);\n }\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n handleScroll(); // Initial check\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [links, activeLink, onChange, targetOffset]);\n\n const handleClick = (\n e: React.MouseEvent<HTMLAnchorElement>,\n href: string,\n ) => {\n e.preventDefault();\n const target = document.querySelector(href);\n if (target) {\n const top =\n target.getBoundingClientRect().top + window.scrollY - offsetTop;\n window.scrollTo({ top, behavior: \"smooth\" });\n setInternalActiveLink(href);\n onChange?.(href);\n }\n };\n\n const renderLink = (link: AnchorLink, level: number = 0) => {\n const isActive = activeLink === link.href;\n\n return (\n <div key={link.key}>\n <a\n href={link.href}\n onClick={(e) => handleClick(e, link.href)}\n className={cn(\n \"block py-1 text-sm transition-colors border-l-2\",\n level === 0 ? \"pl-4\" : \"pl-8\",\n isActive\n ? \"border-[var(--color-primary)] text-[var(--color-primary)] font-medium\"\n : \"border-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:border-[var(--color-border-strong)]\",\n )}\n >\n {link.title}\n </a>\n {link.children && link.children.length > 0 && (\n <div className=\"ml-2\">\n {link.children.map((child) => renderLink(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-1\", className)}\n style={{ position: \"sticky\", top: offsetTop }}\n >\n {links.map((link) => renderLink(link))}\n </div>\n );\n },\n);\nAnchor.displayName = \"Anchor\";\n\nexport { Anchor };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst stepsVariants = cva(\"flex w-full\", {\n variants: {\n direction: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n direction: \"horizontal\",\n size: \"md\",\n },\n});\n\nexport interface StepItem {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n subTitle?: string;\n}\n\nexport interface StepsProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof stepsVariants> {\n current?: number;\n status?: \"wait\" | \"process\" | \"finish\" | \"error\";\n items: StepItem[];\n onStepChange?: (current: number) => void;\n type?: \"default\" | \"navigation\" | \"inline\";\n}\n\nconst Steps = React.forwardRef<HTMLDivElement, StepsProps>(\n (\n {\n className,\n direction = \"horizontal\",\n size = \"md\",\n current = 0,\n status = \"process\",\n items,\n onStepChange,\n type = \"default\",\n ...props\n },\n ref,\n ) => {\n const sizeMap = {\n sm: {\n circle: \"h-6 w-6 text-xs\",\n title: \"text-xs\",\n description: \"text-xs\",\n },\n md: {\n circle: \"h-8 w-8 text-sm\",\n title: \"text-sm\",\n description: \"text-xs\",\n },\n lg: {\n circle: \"h-10 w-10 text-base\",\n title: \"text-base\",\n description: \"text-sm\",\n },\n };\n\n const sizes = sizeMap[size ?? \"md\"];\n\n const getStepStatus = (\n index: number,\n ): \"wait\" | \"process\" | \"finish\" | \"error\" => {\n if (index < current) return \"finish\";\n if (index === current) return status;\n return \"wait\";\n };\n\n const renderStepIcon = (index: number, item: StepItem) => {\n const stepStatus = getStepStatus(index);\n\n const iconClasses = cn(\n \"flex items-center justify-center rounded-full border-2 transition-all\",\n sizes.circle,\n stepStatus === \"finish\" && [\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-white\",\n ],\n stepStatus === \"process\" && [\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-bg-glass)]\",\n ],\n stepStatus === \"error\" && [\"bg-red-500 border-red-500 text-white\"],\n stepStatus === \"wait\" && [\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-transparent\",\n ],\n );\n\n return (\n <div className={iconClasses}>\n {stepStatus === \"finish\" ? (\n <Check className=\"h-4 w-4\" />\n ) : item.icon ? (\n item.icon\n ) : (\n <span className=\"font-semibold\">{index + 1}</span>\n )}\n </div>\n );\n };\n\n const renderStep = (item: StepItem, index: number) => {\n const stepStatus = getStepStatus(index);\n const isLast = index === items.length - 1;\n const isClickable = onStepChange && index < items.length;\n\n return (\n <div\n key={index}\n className={cn(\n \"flex flex-1\",\n direction === \"horizontal\" ? \"flex-col items-center\" : \"flex-row\",\n isClickable && \"cursor-pointer\",\n )}\n onClick={() => isClickable && onStepChange(index)}\n >\n <div\n className={cn(\n \"flex items-center\",\n direction === \"horizontal\" ? \"flex-col\" : \"flex-row gap-3\",\n )}\n >\n {/* Icon */}\n <div className=\"relative\">{renderStepIcon(index, item)}</div>\n\n {/* Content */}\n <div\n className={cn(\n \"flex flex-col\",\n direction === \"horizontal\"\n ? \"items-center mt-2 text-center\"\n : \"items-start flex-1\",\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"font-medium\",\n sizes.title,\n stepStatus === \"process\" && \"text-[var(--color-text)]\",\n stepStatus === \"finish\" && \"text-[var(--color-text)]\",\n stepStatus === \"wait\" && \"text-[var(--color-text-muted)]\",\n stepStatus === \"error\" && \"text-red-500\",\n )}\n >\n {item.title}\n </span>\n {item.subTitle && (\n <span className=\"text-xs text-[var(--color-text-muted)]\">\n {item.subTitle}\n </span>\n )}\n </div>\n {item.description && (\n <span\n className={cn(\n \"text-[var(--color-text-muted)] mt-1\",\n sizes.description,\n )}\n >\n {item.description}\n </span>\n )}\n </div>\n </div>\n\n {/* Connector */}\n {!isLast && (\n <div\n className={cn(\n \"transition-all\",\n direction === \"horizontal\"\n ? \"h-[2px] flex-1 mx-4 mt-4\"\n : \"w-[2px] h-8 ml-4 my-2\",\n index < current\n ? \"bg-[var(--color-primary)]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(stepsVariants({ direction }), className)}\n {...props}\n >\n {items.map((item, index) => renderStep(item, index))}\n </div>\n );\n },\n);\nSteps.displayName = \"Steps\";\n\nexport { Steps, stepsVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface SegmentedOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n block?: boolean;\n disabled?: boolean;\n className?: string;\n}\n\nconst Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n size = \"md\",\n block = false,\n disabled = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(\n defaultValue || options[0]?.value || \"\",\n );\n\n const value = controlledValue ?? internalValue;\n\n const handleChange = (newValue: string) => {\n if (disabled) return;\n\n const option = options.find((opt) => opt.value === newValue);\n if (option?.disabled) return;\n\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const sizeClasses = {\n sm: \"h-7 text-xs\",\n md: \"h-9 text-sm\",\n lg: \"h-11 text-base\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1 p-1 rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n block && \"flex w-full\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {options.map((option) => {\n const isActive = value === option.value;\n const isDisabled = disabled || option.disabled;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n disabled={isDisabled}\n onClick={() => handleChange(option.value)}\n className={cn(\n \"inline-flex items-center justify-center gap-2 px-3 rounded-md font-medium transition-all\",\n sizeClasses[size],\n block && \"flex-1\",\n isActive && [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n !isActive && [\n \"text-[var(--color-text-secondary)]\",\n \"hover:text-[var(--color-text)]\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n ],\n isDisabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.icon && <span className=\"shrink-0\">{option.icon}</span>}\n {option.label}\n </button>\n );\n })}\n </div>\n );\n },\n);\nSegmented.displayName = \"Segmented\";\n\nexport { Segmented };\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n width?: number;\n collapsedWidth?: number;\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n className,\n collapsible = false,\n defaultCollapsed = false,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n width = 256,\n collapsedWidth = 64,\n children,\n ...props\n },\n ref,\n ) => {\n const [internalCollapsed, setInternalCollapsed] =\n React.useState(defaultCollapsed);\n const collapsed = controlledCollapsed ?? internalCollapsed;\n\n const handleToggle = () => {\n const newCollapsed = !collapsed;\n setInternalCollapsed(newCollapsed);\n onCollapsedChange?.(newCollapsed);\n };\n\n return (\n <aside\n ref={ref}\n className={cn(\n \"relative flex flex-col\",\n \"border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-300\",\n className,\n )}\n style={{\n width: collapsed ? collapsedWidth : width,\n }}\n {...props}\n >\n {children}\n\n {collapsible && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleToggle}\n className={cn(\n \"absolute -right-3 top-6 z-10 h-6 w-6 rounded-full\",\n \"border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-elevated)]\",\n \"shadow-sm\",\n )}\n >\n {collapsed ? (\n <ChevronRight className=\"h-3 w-3\" />\n ) : (\n <ChevronLeft className=\"h-3 w-3\" />\n )}\n </Button>\n )}\n </aside>\n );\n },\n);\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-16 items-center border-b border-[var(--color-border)] px-4\",\n className,\n )}\n {...props}\n />\n));\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex-1 overflow-y-auto py-4\", className)}\n {...props}\n />\n));\nSidebarContent.displayName = \"SidebarContent\";\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"border-t border-[var(--color-border)] p-4\", className)}\n {...props}\n />\n));\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-3 py-2\", className)} {...props} />\n));\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"px-3 py-2 text-xs font-medium uppercase tracking-wider\",\n \"text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"space-y-1\", className)} {...props} />\n));\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nexport interface SidebarMenuItemProps extends React.HTMLAttributes<HTMLAnchorElement> {\n icon?: React.ReactNode;\n active?: boolean;\n href?: string;\n}\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarMenuItemProps\n>(({ className, icon, active, children, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n \"flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors\",\n active\n ? \"bg-[var(--color-bg-glass)] text-[var(--color-text)] font-medium\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n className,\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"truncate\">{children}</span>\n </a>\n));\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarGroupContent,\n SidebarMenuItem,\n};\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden rounded-full border-2 border-[var(--color-border)]\",\n {\n variants: {\n size: {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface AvatarProps\n extends\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full object-cover\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center\",\n \"bg-gradient-to-br from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white font-semibold\",\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)]\",\n \"[&_tr]:border-b\",\n className,\n )}\n {...props}\n />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t border-[var(--color-border)] bg-[var(--color-bg-glass)]/50 font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)] transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=selected]:bg-[var(--color-bg-glass)]\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-semibold text-[var(--color-text)]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle text-[var(--color-text-secondary)]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","import * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return;\n }\n\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\nCarousel.displayName = \"Carousel\";\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n});\nCarouselContent.displayName = \"CarouselContent\";\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n});\nCarouselItem.displayName = \"CarouselItem\";\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n});\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n});\nCarouselNext.displayName = \"CarouselNext\";\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","import * as React from \"react\";\nimport { ImageIcon } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n fallback?: React.ReactNode;\n onError?: () => void;\n aspectRatio?: \"square\" | \"video\" | \"portrait\" | \"auto\";\n objectFit?: \"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\";\n}\n\nconst Image = React.forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n className,\n src,\n alt = \"\",\n fallback,\n onError,\n aspectRatio = \"auto\",\n objectFit = \"cover\",\n ...props\n },\n ref,\n ) => {\n const [error, setError] = React.useState(false);\n const [loading, setLoading] = React.useState(true);\n\n const aspectRatioClasses = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n auto: \"\",\n };\n\n const objectFitClasses = {\n contain: \"object-contain\",\n cover: \"object-cover\",\n fill: \"object-fill\",\n none: \"object-none\",\n \"scale-down\": \"object-scale-down\",\n };\n\n const handleError = () => {\n setError(true);\n setLoading(false);\n onError?.();\n };\n\n const handleLoad = () => {\n setLoading(false);\n };\n\n if (error || !src) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-[var(--color-bg-glass)] rounded-md\",\n aspectRatioClasses[aspectRatio],\n className,\n )}\n >\n {fallback || (\n <div className=\"flex flex-col items-center gap-2 text-[var(--color-text-muted)]\">\n <ImageIcon className=\"h-8 w-8\" />\n <span className=\"text-xs\">Image not available</span>\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden rounded-md\",\n aspectRatioClasses[aspectRatio],\n className,\n )}\n >\n {loading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-[var(--color-bg-glass)] animate-pulse\">\n <ImageIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n </div>\n )}\n <img\n ref={ref}\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"h-full w-full transition-opacity duration-300\",\n objectFitClasses[objectFit],\n loading ? \"opacity-0\" : \"opacity-100\",\n )}\n {...props}\n />\n </div>\n );\n },\n);\nImage.displayName = \"Image\";\n\nexport { Image };\n","import * as React from \"react\";\nimport { ArrowUp, ArrowDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface StatisticProps {\n title: string;\n value: string | number;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n trend?: \"up\" | \"down\";\n trendValue?: string | number;\n valueClassName?: string;\n className?: string;\n}\n\nconst Statistic = React.forwardRef<HTMLDivElement, StatisticProps>(\n (\n {\n title,\n value,\n prefix,\n suffix,\n trend,\n trendValue,\n valueClassName,\n className,\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)}>\n <div className=\"text-sm text-[var(--color-text-muted)]\">{title}</div>\n <div className=\"flex items-baseline gap-2\">\n <div\n className={cn(\n \"text-3xl font-bold text-[var(--color-text)]\",\n valueClassName,\n )}\n >\n {prefix && <span className=\"mr-1\">{prefix}</span>}\n {value}\n {suffix && <span className=\"ml-1\">{suffix}</span>}\n </div>\n {trend && (\n <div\n className={cn(\n \"flex items-center text-sm font-medium\",\n trend === \"up\" ? \"text-green-500\" : \"text-red-500\",\n )}\n >\n {trend === \"up\" ? (\n <ArrowUp className=\"h-4 w-4 mr-1\" />\n ) : (\n <ArrowDown className=\"h-4 w-4 mr-1\" />\n )}\n {trendValue}\n </div>\n )}\n </div>\n </div>\n );\n },\n);\nStatistic.displayName = \"Statistic\";\n\nexport { Statistic };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface ListItem {\n id: string;\n title: string;\n description?: string;\n avatar?: React.ReactNode;\n actions?: React.ReactNode;\n extra?: React.ReactNode;\n}\n\nexport interface ListProps {\n items: ListItem[];\n bordered?: boolean;\n hoverable?: boolean;\n divided?: boolean;\n onItemClick?: (item: ListItem) => void;\n className?: string;\n itemClassName?: string;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>(\n (\n {\n items,\n bordered = false,\n hoverable = true,\n divided = true,\n onItemClick,\n className,\n itemClassName,\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg\",\n bordered && \"border border-[var(--color-border)]\",\n className,\n )}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n onClick={() => onItemClick?.(item)}\n className={cn(\n \"flex items-center gap-4 p-4\",\n hoverable &&\n \"transition-colors hover:bg-[var(--color-bg-glass-hover)]\",\n onItemClick && \"cursor-pointer\",\n divided &&\n index < items.length - 1 &&\n \"border-b border-[var(--color-border)]\",\n itemClassName,\n )}\n >\n {/* Avatar */}\n {item.avatar && <div className=\"shrink-0\">{item.avatar}</div>}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium text-[var(--color-text)]\">\n {item.title}\n </div>\n {item.description && (\n <div className=\"text-sm text-[var(--color-text-muted)] mt-1\">\n {item.description}\n </div>\n )}\n </div>\n\n {/* Extra Content */}\n {item.extra && (\n <div className=\"shrink-0 text-[var(--color-text-secondary)]\">\n {item.extra}\n </div>\n )}\n\n {/* Actions */}\n {item.actions && (\n <div className=\"shrink-0 flex items-center gap-2\">\n {item.actions}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n },\n);\nList.displayName = \"List\";\n\nexport { List };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface DescriptionItem {\n label: string;\n content: React.ReactNode;\n span?: number;\n}\n\nexport interface DescriptionsProps {\n title?: string;\n items: DescriptionItem[];\n columns?: 1 | 2 | 3 | 4;\n bordered?: boolean;\n layout?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nconst Descriptions = React.forwardRef<HTMLDivElement, DescriptionsProps>(\n (\n {\n title,\n items,\n columns = 3,\n bordered = false,\n layout = \"horizontal\",\n className,\n },\n ref,\n ) => {\n const gridCols = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n if (bordered) {\n return (\n <div ref={ref} className={cn(\"rounded-lg overflow-hidden\", className)}>\n {title && (\n <div className=\"px-4 py-3 bg-[var(--color-bg-glass)] border border-[var(--color-border)] font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n )}\n <div className=\"border border-[var(--color-border)] border-t-0\">\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\n \"grid\",\n layout === \"horizontal\"\n ? \"grid-cols-[200px_1fr]\"\n : \"grid-cols-1\",\n )}\n >\n <div className=\"px-4 py-3 bg-[var(--color-bg-glass)]/50 border-b border-r border-[var(--color-border)] text-sm font-medium text-[var(--color-text)]\">\n {item.label}\n </div>\n <div className=\"px-4 py-3 border-b border-[var(--color-border)] text-sm text-[var(--color-text-secondary)]\">\n {item.content}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={ref} className={cn(\"\", className)}>\n {title && (\n <div className=\"mb-4 text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n )}\n <div className={cn(\"grid gap-4\", gridCols[columns])}>\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\"space-y-1\", item.span && `col-span-${item.span}`)}\n >\n <div className=\"text-sm font-medium text-[var(--color-text-muted)]\">\n {item.label}\n </div>\n <div className=\"text-sm text-[var(--color-text)]\">\n {item.content}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n },\n);\nDescriptions.displayName = \"Descriptions\";\n\nexport { Descriptions };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface TimelineItem {\n title: string;\n description?: string;\n timestamp?: string;\n icon?: React.ReactNode;\n color?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"error\";\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n variant?: \"default\" | \"gradient\";\n className?: string;\n}\n\nconst Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n ({ items, variant = \"default\", className }, ref) => {\n const getColorClass = (color?: string) => {\n switch (color) {\n case \"primary\":\n return \"border-[var(--color-primary)] bg-[var(--color-primary)]\";\n case \"success\":\n return \"border-green-500 bg-green-500\";\n case \"warning\":\n return \"border-yellow-500 bg-yellow-500\";\n case \"error\":\n return \"border-red-500 bg-red-500\";\n default:\n return \"border-[var(--color-border-strong)] bg-[var(--color-bg-glass)]\";\n }\n };\n\n return (\n <div ref={ref} className={cn(\"relative\", className)}>\n {items.map((item, index) => (\n <div key={index} className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Timeline Line */}\n {index < items.length - 1 && (\n <div\n className={cn(\n \"absolute left-[19px] top-[32px] bottom-0 w-[2px]\",\n variant === \"gradient\"\n ? \"bg-gradient-to-b from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n\n {/* Timeline Dot */}\n <div className=\"relative z-10 flex shrink-0\">\n <div\n className={cn(\n \"flex h-10 w-10 items-center justify-center rounded-full border-2\",\n getColorClass(item.color),\n item.icon && \"text-white\",\n )}\n >\n {item.icon || (\n <div className=\"h-3 w-3 rounded-full bg-current\" />\n )}\n </div>\n </div>\n\n {/* Timeline Content */}\n <div className=\"flex-1 pt-1\">\n <div className=\"flex items-center justify-between mb-1\">\n <h4 className=\"text-sm font-semibold text-[var(--color-text)]\">\n {item.title}\n </h4>\n {item.timestamp && (\n <time className=\"text-xs text-[var(--color-text-muted)]\">\n {item.timestamp}\n </time>\n )}\n </div>\n {item.description && (\n <p className=\"text-sm text-[var(--color-text-secondary)]\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nTimeline.displayName = \"Timeline\";\n\nexport { Timeline };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface Step {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: Step[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"default\" | \"gradient\";\n className?: string;\n}\n\nconst Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n (\n {\n steps,\n currentStep,\n orientation = \"horizontal\",\n variant = \"default\",\n className,\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row items-center\" : \"flex-col\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const isCompleted = index < currentStep;\n const isCurrent = index === currentStep;\n const isUpcoming = index > currentStep;\n\n return (\n <React.Fragment key={index}>\n <div\n className={cn(\n \"flex items-center\",\n orientation === \"vertical\" ? \"flex-row\" : \"flex-col\",\n )}\n >\n {/* Step Circle */}\n <div\n className={cn(\n \"flex items-center justify-center rounded-full border-2 transition-all\",\n \"h-10 w-10 shrink-0\",\n isCompleted &&\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899] border-transparent text-white\",\n isCompleted &&\n variant === \"default\" &&\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-white\",\n isCurrent &&\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-bg-glass)]\",\n isUpcoming &&\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-transparent\",\n )}\n >\n {isCompleted ? (\n <Check className=\"h-5 w-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Step Content */}\n <div\n className={cn(\n \"flex flex-col\",\n orientation === \"horizontal\"\n ? \"items-center mt-2\"\n : \"items-start ml-4\",\n )}\n >\n <div\n className={cn(\n \"text-sm font-medium\",\n isCurrent && \"text-[var(--color-text)]\",\n isCompleted && \"text-[var(--color-text)]\",\n isUpcoming && \"text-[var(--color-text-muted)]\",\n )}\n >\n {step.title}\n </div>\n {step.description && (\n <div className=\"text-xs text-[var(--color-text-muted)] mt-1\">\n {step.description}\n </div>\n )}\n </div>\n </div>\n\n {/* Connector Line */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n \"transition-all\",\n orientation === \"horizontal\"\n ? \"h-[2px] flex-1 mx-2\"\n : \"w-[2px] h-8 ml-5\",\n index < currentStep\n ? variant === \"gradient\"\n ? \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-primary)]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n },\n);\nStepper.displayName = \"Stepper\";\n\nexport { Stepper };\n","import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst tagVariants = cva(\n \"inline-flex items-center gap-1.5 rounded-md px-2.5 py-0.5 text-xs font-medium transition-all\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n solid: [\"bg-[var(--color-bg-elevated)]\", \"text-[var(--color-text)]\"],\n gradient: [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n success: [\n \"bg-green-500/20 border border-green-500/50\",\n \"text-green-500\",\n ],\n warning: [\n \"bg-yellow-500/20 border border-yellow-500/50\",\n \"text-yellow-500\",\n ],\n error: [\"bg-red-500/20 border border-red-500/50\", \"text-red-500\"],\n info: [\"bg-blue-500/20 border border-blue-500/50\", \"text-blue-500\"],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface TagProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tagVariants> {\n closable?: boolean;\n onClose?: () => void;\n icon?: React.ReactNode;\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n (\n { className, variant, closable, onClose, icon, children, ...props },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n className={cn(tagVariants({ variant }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n {children}\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"shrink-0 hover:opacity-70 transition-opacity\"\n aria-label=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n );\n },\n);\nTag.displayName = \"Tag\";\n\nexport { Tag, tagVariants };\n","import * as React from \"react\";\nimport { ChevronRight, ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Checkbox } from \"./checkbox\";\n\nexport interface TreeNode {\n key: string;\n title: string;\n children?: TreeNode[];\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface TreeProps {\n treeData: TreeNode[];\n checkable?: boolean;\n checkedKeys?: string[];\n expandedKeys?: string[];\n selectedKeys?: string[];\n onCheck?: (checkedKeys: string[]) => void;\n onExpand?: (expandedKeys: string[]) => void;\n onSelect?: (selectedKeys: string[]) => void;\n className?: string;\n}\n\nconst Tree = React.forwardRef<HTMLDivElement, TreeProps>(\n (\n {\n treeData,\n checkable = false,\n checkedKeys: controlledCheckedKeys,\n expandedKeys: controlledExpandedKeys,\n selectedKeys: controlledSelectedKeys,\n onCheck,\n onExpand,\n onSelect,\n className,\n },\n ref,\n ) => {\n const [internalCheckedKeys, setInternalCheckedKeys] = React.useState<\n string[]\n >([]);\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<\n string[]\n >([]);\n const [internalSelectedKeys, setInternalSelectedKeys] = React.useState<\n string[]\n >([]);\n\n const checkedKeys = controlledCheckedKeys ?? internalCheckedKeys;\n const expandedKeys = controlledExpandedKeys ?? internalExpandedKeys;\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys;\n\n const handleExpand = (key: string) => {\n const newExpandedKeys = expandedKeys.includes(key)\n ? expandedKeys.filter((k) => k !== key)\n : [...expandedKeys, key];\n setInternalExpandedKeys(newExpandedKeys);\n onExpand?.(newExpandedKeys);\n };\n\n const handleCheck = (key: string, checked: boolean) => {\n const newCheckedKeys = checked\n ? [...checkedKeys, key]\n : checkedKeys.filter((k) => k !== key);\n setInternalCheckedKeys(newCheckedKeys);\n onCheck?.(newCheckedKeys);\n };\n\n const handleSelect = (key: string) => {\n const newSelectedKeys = selectedKeys.includes(key) ? [] : [key];\n setInternalSelectedKeys(newSelectedKeys);\n onSelect?.(newSelectedKeys);\n };\n\n const renderTreeNode = (node: TreeNode, level: number = 0) => {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expandedKeys.includes(node.key);\n const isChecked = checkedKeys.includes(node.key);\n const isSelected = selectedKeys.includes(node.key);\n\n return (\n <div key={node.key} className=\"select-none\">\n <div\n className={cn(\n \"flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n isSelected &&\n \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\",\n node.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n style={{ paddingLeft: `${level * 20 + 8}px` }}\n >\n {hasChildren ? (\n <button\n onClick={() => handleExpand(node.key)}\n className=\"shrink-0 p-0.5 hover:bg-[var(--color-bg-glass)] rounded\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </button>\n ) : (\n <span className=\"w-5\" />\n )}\n\n {checkable && (\n <Checkbox\n checked={isChecked}\n onCheckedChange={(checked) =>\n handleCheck(node.key, checked as boolean)\n }\n disabled={node.disabled}\n />\n )}\n\n <div\n onClick={() => !node.disabled && handleSelect(node.key)}\n className=\"flex items-center gap-2 flex-1\"\n >\n {node.icon && <span className=\"shrink-0\">{node.icon}</span>}\n <span className=\"text-sm\">{node.title}</span>\n </div>\n </div>\n\n {hasChildren && isExpanded && (\n <div>\n {node.children!.map((child) => renderTreeNode(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border border-[var(--color-border)] p-2\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n >\n {treeData.map((node) => renderTreeNode(node))}\n </div>\n );\n },\n);\nTree.displayName = \"Tree\";\n\nexport { Tree };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface QRCodeProps {\n value: string;\n size?: number;\n level?: \"L\" | \"M\" | \"Q\" | \"H\";\n bgColor?: string;\n fgColor?: string;\n includeMargin?: boolean;\n imageSettings?: {\n src: string;\n height: number;\n width: number;\n excavate?: boolean;\n };\n className?: string;\n}\n\n// Simple QR Code generator (basic implementation)\n// In production, use a library like 'qrcode.react' or 'qrcode'\nconst QRCode = React.forwardRef<HTMLDivElement, QRCodeProps>(\n (\n {\n value,\n size = 128,\n level = \"M\",\n bgColor = \"#FFFFFF\",\n fgColor = \"#000000\",\n includeMargin = false,\n imageSettings,\n className,\n },\n ref,\n ) => {\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n // Simple placeholder implementation\n // In production, use a proper QR code library\n canvas.width = size;\n canvas.height = size;\n\n // Background\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size, size);\n\n // Foreground (simplified pattern)\n ctx.fillStyle = fgColor;\n const cellSize = size / 25; // 25x25 grid for simplicity\n const margin = includeMargin ? cellSize : 0;\n\n // Create a simple pattern based on value hash\n const hash = value\n .split(\"\")\n .reduce((acc, char) => acc + char.charCodeAt(0), 0);\n\n for (let i = 0; i < 25; i++) {\n for (let j = 0; j < 25; j++) {\n // Pseudo-random pattern based on position and hash\n if ((i * 25 + j + hash) % 3 === 0) {\n ctx.fillRect(\n margin + i * cellSize,\n margin + j * cellSize,\n cellSize,\n cellSize,\n );\n }\n }\n }\n\n // Add corners (finder patterns)\n const cornerSize = cellSize * 7;\n const corners = [\n [margin, margin],\n [size - cornerSize - margin, margin],\n [margin, size - cornerSize - margin],\n ];\n\n corners.forEach(([x, y]) => {\n ctx.fillStyle = fgColor;\n ctx.fillRect(x, y, cornerSize, cornerSize);\n ctx.fillStyle = bgColor;\n ctx.fillRect(\n x + cellSize,\n y + cellSize,\n cornerSize - 2 * cellSize,\n cornerSize - 2 * cellSize,\n );\n ctx.fillStyle = fgColor;\n ctx.fillRect(\n x + 2 * cellSize,\n y + 2 * cellSize,\n cornerSize - 4 * cellSize,\n cornerSize - 4 * cellSize,\n );\n });\n\n // Add image in center if provided\n if (imageSettings) {\n const img = new Image();\n img.onload = () => {\n const imgX = (size - imageSettings.width) / 2;\n const imgY = (size - imageSettings.height) / 2;\n\n if (imageSettings.excavate) {\n ctx.fillStyle = bgColor;\n ctx.fillRect(\n imgX - 5,\n imgY - 5,\n imageSettings.width + 10,\n imageSettings.height + 10,\n );\n }\n\n ctx.drawImage(\n img,\n imgX,\n imgY,\n imageSettings.width,\n imageSettings.height,\n );\n };\n img.src = imageSettings.src;\n }\n }, [value, size, level, bgColor, fgColor, includeMargin, imageSettings]);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center p-4 rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n className,\n )}\n >\n <canvas ref={canvasRef} className=\"rounded\" />\n </div>\n );\n },\n);\nQRCode.displayName = \"QRCode\";\n\nexport { QRCode };\n","import * as React from \"react\";\nimport {\n LineChart as RechartsLineChart,\n BarChart as RechartsBarChart,\n AreaChart as RechartsAreaChart,\n PieChart as RechartsPieChart,\n Line,\n Bar,\n Area,\n Pie,\n Cell,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n TooltipProps,\n} from \"recharts\";\nimport { cn } from \"../utils\";\n\n// Custom Tooltip\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = ({\n active,\n payload,\n label,\n}) => {\n if (!active || !payload || !payload.length) return null;\n\n return (\n <div className=\"rounded-lg border border-[var(--color-border)] bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)] p-3 shadow-[var(--shadow-glass)]\">\n <p className=\"text-sm font-medium text-[var(--color-text)] mb-2\">\n {label}\n </p>\n {payload.map((entry: any, index: number) => (\n <div\n key={index}\n className=\"flex items-center gap-2 text-xs text-[var(--color-text-secondary)]\"\n >\n <span\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span>{entry.name}:</span>\n <span className=\"font-medium text-[var(--color-text)]\">\n {entry.value}\n </span>\n </div>\n ))}\n </div>\n );\n};\n\nexport interface LineChartProps {\n data: any[];\n xKey: string;\n lines: {\n dataKey: string;\n name?: string;\n color?: string;\n strokeWidth?: number;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const LineChart: React.FC<LineChartProps> = ({\n data,\n xKey,\n lines,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsLineChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {lines.map((line, index) => (\n <Line\n key={line.dataKey}\n type=\"monotone\"\n dataKey={line.dataKey}\n name={line.name || line.dataKey}\n stroke={line.color || `hsl(${index * 60}, 70%, 50%)`}\n strokeWidth={line.strokeWidth || 2}\n dot={false}\n activeDot={{ r: 6 }}\n />\n ))}\n </RechartsLineChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface BarChartProps {\n data: any[];\n xKey: string;\n bars: {\n dataKey: string;\n name?: string;\n color?: string;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n xKey,\n bars,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsBarChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {bars.map((bar, index) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.name || bar.dataKey}\n fill={bar.color || `hsl(${index * 60}, 70%, 50%)`}\n radius={[4, 4, 0, 0]}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface AreaChartProps {\n data: any[];\n xKey: string;\n areas: {\n dataKey: string;\n name?: string;\n color?: string;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n xKey,\n areas,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsAreaChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {areas.map((area, index) => (\n <Area\n key={area.dataKey}\n type=\"monotone\"\n dataKey={area.dataKey}\n name={area.name || area.dataKey}\n stroke={area.color || `hsl(${index * 60}, 70%, 50%)`}\n fill={area.color || `hsl(${index * 60}, 70%, 50%)`}\n fillOpacity={0.2}\n strokeWidth={2}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface PieChartProps {\n data: {\n name: string;\n value: number;\n color?: string;\n }[];\n height?: number;\n innerRadius?: number;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n height = 300,\n innerRadius = 0,\n showLegend = true,\n className,\n}) => {\n const COLORS = [\"#a855f7\", \"#ec4899\", \"#f472b6\", \"#8b5cf6\", \"#d946ef\"];\n\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={height / 3}\n paddingAngle={2}\n dataKey=\"value\"\n >\n {data.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={entry.color || COLORS[index % COLORS.length]}\n />\n ))}\n </Pie>\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport { CustomTooltip as ChartTooltip };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nconst Layout = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex min-h-screen\", className)} {...props} />\n));\nLayout.displayName = \"Layout\";\n\nconst LayoutHeader = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <header\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"sticky top-0 z-40\",\n className,\n )}\n {...props}\n />\n));\nLayoutHeader.displayName = \"LayoutHeader\";\n\nconst LayoutSider = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & {\n width?: string | number;\n collapsed?: boolean;\n collapsedWidth?: string | number;\n }\n>(\n (\n {\n className,\n width = 256,\n collapsed = false,\n collapsedWidth = 80,\n style,\n ...props\n },\n ref,\n ) => (\n <aside\n ref={ref}\n className={cn(\n \"border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-300\",\n className,\n )}\n style={{\n width: collapsed\n ? typeof collapsedWidth === \"number\"\n ? `${collapsedWidth}px`\n : collapsedWidth\n : typeof width === \"number\"\n ? `${width}px`\n : width,\n ...style,\n }}\n {...props}\n />\n ),\n);\nLayoutSider.displayName = \"LayoutSider\";\n\nconst LayoutContent = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <main\n ref={ref}\n className={cn(\"flex-1 overflow-auto\", className)}\n {...props}\n />\n));\nLayoutContent.displayName = \"LayoutContent\";\n\nconst LayoutFooter = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn(\n \"border-t border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n />\n));\nLayoutFooter.displayName = \"LayoutFooter\";\n\nexport { Layout, LayoutHeader, LayoutSider, LayoutContent, LayoutFooter };\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../utils\";\n\ninterface SeparatorProps extends React.ComponentPropsWithoutRef<\n typeof SeparatorPrimitive.Root\n> {\n variant?: \"default\" | \"gradient\";\n label?: string;\n}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n {\n className,\n orientation = \"horizontal\",\n decorative = true,\n variant = \"default\",\n label,\n ...props\n },\n ref,\n ) => {\n if (label) {\n return (\n <div className=\"relative flex items-center\">\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"flex-1\",\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" && \"h-px\",\n orientation === \"vertical\" && \"w-px\",\n className,\n )}\n {...props}\n />\n <span className=\"px-2 text-xs text-white/50\">{label}</span>\n <SeparatorPrimitive.Root\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"flex-1\",\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" && \"h-px\",\n orientation === \"vertical\" && \"w-px\",\n )}\n />\n </div>\n );\n }\n\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className,\n )}\n data-slot=\"separator\"\n {...props}\n />\n );\n },\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"default\" | \"gradient\";\n label?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n variant = \"default\",\n label,\n ...props\n },\n ref,\n ) => {\n if (label) {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-3 my-4\", className)}\n {...props}\n >\n <div\n className={cn(\n \"flex-1 h-px\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n <span className=\"text-sm text-[var(--color-text-muted)]\">\n {label}\n </span>\n <div\n className={cn(\n \"flex-1 h-px\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"w-full h-px\" : \"h-full w-px\",\n variant === \"gradient\"\n ? orientation === \"horizontal\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-gradient-to-b from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDivider.displayName = \"Divider\";\n\nexport { Divider };\n","import * as React from \"react\";\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n","import { GripVertical } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\nimport { cn } from \"../utils\";\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n);\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex w-px items-center justify-center bg-[var(--color-border)]\",\n \"after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2\",\n \"hover:bg-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-1\",\n \"data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full\",\n \"data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0\",\n \"[&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border border-[var(--color-border)] bg-[var(--color-bg-glass)]\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n);\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst containerVariants = cva(\"w-full mx-auto px-4 sm:px-6 lg:px-8\", {\n variants: {\n size: {\n sm: \"max-w-3xl\",\n md: \"max-w-5xl\",\n lg: \"max-w-7xl\",\n xl: \"max-w-[1400px]\",\n full: \"max-w-full\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nexport interface ContainerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof containerVariants> {}\n\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ className, size, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(containerVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nContainer.displayName = \"Container\";\n\nexport { Container, containerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst stackVariants = cva(\"flex\", {\n variants: {\n direction: {\n row: \"flex-row\",\n column: \"flex-col\",\n rowReverse: \"flex-row-reverse\",\n columnReverse: \"flex-col-reverse\",\n },\n spacing: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n },\n defaultVariants: {\n direction: \"column\",\n spacing: \"md\",\n },\n});\n\nexport interface StackProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof stackVariants> {}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ className, direction, spacing, align, justify, wrap, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n stackVariants({ direction, spacing, align, justify, wrap }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nStack.displayName = \"Stack\";\n\nexport { Stack, stackVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst gridVariants = cva(\"grid w-full\", {\n variants: {\n cols: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n 12: \"grid-cols-12\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n },\n defaultVariants: {\n cols: 12,\n gap: \"md\",\n },\n});\n\nexport interface GridProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof gridVariants> {}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n ({ className, cols, gap, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(gridVariants({ cols, gap }), className)}\n {...props}\n />\n );\n },\n);\nGrid.displayName = \"Grid\";\n\nconst gridItemVariants = cva(\"\", {\n variants: {\n span: {\n 1: \"col-span-1\",\n 2: \"col-span-2\",\n 3: \"col-span-3\",\n 4: \"col-span-4\",\n 5: \"col-span-5\",\n 6: \"col-span-6\",\n 7: \"col-span-7\",\n 8: \"col-span-8\",\n 9: \"col-span-9\",\n 10: \"col-span-10\",\n 11: \"col-span-11\",\n 12: \"col-span-12\",\n full: \"col-span-full\",\n },\n },\n defaultVariants: {\n span: 1,\n },\n});\n\nexport interface GridItemProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof gridItemVariants> {}\n\nconst GridItem = React.forwardRef<HTMLDivElement, GridItemProps>(\n ({ className, span, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(gridItemVariants({ span }), className)}\n {...props}\n />\n );\n },\n);\nGridItem.displayName = \"GridItem\";\n\nexport { Grid, GridItem, gridVariants, gridItemVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spaceVariants = cva(\"inline-flex\", {\n variants: {\n direction: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n baseline: \"items-baseline\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n },\n compoundVariants: [\n // Horizontal spacing\n { direction: \"horizontal\", size: \"xs\", class: \"gap-1\" },\n { direction: \"horizontal\", size: \"sm\", class: \"gap-2\" },\n { direction: \"horizontal\", size: \"md\", class: \"gap-4\" },\n { direction: \"horizontal\", size: \"lg\", class: \"gap-6\" },\n { direction: \"horizontal\", size: \"xl\", class: \"gap-8\" },\n // Vertical spacing\n { direction: \"vertical\", size: \"xs\", class: \"gap-1\" },\n { direction: \"vertical\", size: \"sm\", class: \"gap-2\" },\n { direction: \"vertical\", size: \"md\", class: \"gap-4\" },\n { direction: \"vertical\", size: \"lg\", class: \"gap-6\" },\n { direction: \"vertical\", size: \"xl\", class: \"gap-8\" },\n ],\n defaultVariants: {\n direction: \"horizontal\",\n size: \"md\",\n },\n});\n\nexport interface SpaceProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spaceVariants> {\n split?: React.ReactNode;\n}\n\nconst Space = React.forwardRef<HTMLDivElement, SpaceProps>(\n (\n { className, direction, size, align, wrap, split, children, ...props },\n ref,\n ) => {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n\n return (\n <div\n ref={ref}\n className={cn(\n spaceVariants({ direction, size, align, wrap }),\n className,\n )}\n {...props}\n >\n {childrenArray.map((child, index) => (\n <React.Fragment key={index}>\n {child}\n {split && index < childrenArray.length - 1 && (\n <span className=\"select-none\">{split}</span>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n },\n);\nSpace.displayName = \"Space\";\n\nexport { Space, spaceVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface AffixProps {\n offsetTop?: number;\n offsetBottom?: number;\n target?: () => HTMLElement | Window;\n onChange?: (affixed: boolean) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Affix = React.forwardRef<HTMLDivElement, AffixProps>(\n ({ offsetTop, offsetBottom, target, onChange, className, children }, ref) => {\n const [affixed, setAffixed] = React.useState(false);\n const [styles, setStyles] = React.useState<React.CSSProperties>({});\n const placeholderRef = React.useRef<HTMLDivElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const getTarget = target ? target() : window;\n\n const handleScroll = () => {\n if (!placeholderRef.current || !contentRef.current) return;\n\n const placeholderRect = placeholderRef.current.getBoundingClientRect();\n const contentHeight = contentRef.current.offsetHeight;\n\n let newAffixed = false;\n let newStyles: React.CSSProperties = {};\n\n if (offsetTop !== undefined) {\n if (placeholderRect.top <= offsetTop) {\n newAffixed = true;\n newStyles = {\n position: \"fixed\",\n top: offsetTop,\n left: placeholderRect.left,\n width: placeholderRect.width,\n };\n }\n }\n\n if (offsetBottom !== undefined) {\n const viewportHeight = window.innerHeight;\n if (placeholderRect.bottom >= viewportHeight - offsetBottom) {\n newAffixed = true;\n newStyles = {\n position: \"fixed\",\n bottom: offsetBottom,\n left: placeholderRect.left,\n width: placeholderRect.width,\n };\n }\n }\n\n if (newAffixed !== affixed) {\n setAffixed(newAffixed);\n onChange?.(newAffixed);\n }\n\n setStyles(newStyles);\n };\n\n if (getTarget instanceof Window) {\n window.addEventListener(\"scroll\", handleScroll);\n window.addEventListener(\"resize\", handleScroll);\n handleScroll();\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n window.removeEventListener(\"resize\", handleScroll);\n };\n } else {\n getTarget.addEventListener(\"scroll\", handleScroll);\n handleScroll();\n return () => getTarget.removeEventListener(\"scroll\", handleScroll);\n }\n }, [offsetTop, offsetBottom, target, affixed, onChange]);\n\n return (\n <>\n <div\n ref={placeholderRef}\n style={\n affixed ? { height: contentRef.current?.offsetHeight } : undefined\n }\n />\n <div\n ref={contentRef}\n className={cn(className)}\n style={affixed ? styles : undefined}\n >\n {children}\n </div>\n </>\n );\n },\n);\nAffix.displayName = \"Affix\";\n\nexport { Affix };\n","import * as React from \"react\";\nimport { ArrowUp } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface BackTopProps {\n visibilityHeight?: number;\n target?: () => HTMLElement | Window;\n onClick?: () => void;\n className?: string;\n}\n\nconst BackTop = React.forwardRef<HTMLDivElement, BackTopProps>(\n ({ visibilityHeight = 400, target, onClick, className }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const getTarget = target ? target() : window;\n\n const handleScroll = () => {\n if (getTarget instanceof Window) {\n setVisible(window.scrollY > visibilityHeight);\n } else {\n setVisible(getTarget.scrollTop > visibilityHeight);\n }\n };\n\n if (getTarget instanceof Window) {\n window.addEventListener(\"scroll\", handleScroll);\n return () => window.removeEventListener(\"scroll\", handleScroll);\n } else {\n getTarget.addEventListener(\"scroll\", handleScroll);\n return () => getTarget.removeEventListener(\"scroll\", handleScroll);\n }\n }, [visibilityHeight, target]);\n\n const scrollToTop = () => {\n const getTarget = target ? target() : window;\n\n if (getTarget instanceof Window) {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } else {\n getTarget.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n onClick?.();\n };\n\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"fixed bottom-8 right-8 z-50\",\n \"animate-in fade-in slide-in-from-bottom-4\",\n className,\n )}\n >\n <Button\n variant=\"gradient\"\n size=\"icon\"\n className=\"h-12 w-12 rounded-full shadow-[var(--shadow-elevated)]\"\n onClick={scrollToTop}\n >\n <ArrowUp className=\"h-5 w-5\" />\n </Button>\n </div>\n );\n },\n);\nBackTop.displayName = \"BackTop\";\n\nexport { BackTop };\n","import * as React from \"react\";\nimport { Plus, X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nexport interface FloatButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode;\n description?: string;\n tooltip?: string;\n shape?: \"circle\" | \"square\";\n variant?: \"default\" | \"primary\";\n badge?: {\n count?: number;\n dot?: boolean;\n };\n}\n\nconst FloatButton = React.forwardRef<HTMLButtonElement, FloatButtonProps>(\n (\n {\n className,\n icon,\n description,\n tooltip,\n shape = \"circle\",\n variant = \"default\",\n badge,\n ...props\n },\n ref,\n ) => {\n const button = (\n <Button\n ref={ref}\n variant={variant === \"primary\" ? \"gradient\" : \"outline\"}\n size=\"icon\"\n className={cn(\n \"relative h-12 w-12 shadow-[var(--shadow-elevated)]\",\n shape === \"circle\" && \"rounded-full\",\n shape === \"square\" && \"rounded-lg\",\n description && \"h-auto w-auto px-4 py-3 flex-col gap-1\",\n className,\n )}\n {...props}\n >\n {icon}\n {description && (\n <span className=\"text-xs whitespace-nowrap\">{description}</span>\n )}\n {badge && (badge.dot || (badge.count && badge.count > 0)) && (\n <span\n className={cn(\n \"absolute -top-1 -right-1 flex items-center justify-center\",\n \"bg-red-500 text-white text-xs font-medium\",\n badge.dot\n ? \"h-2 w-2 rounded-full\"\n : \"h-5 min-w-[20px] px-1 rounded-full\",\n )}\n >\n {!badge.dot &&\n badge.count &&\n (badge.count > 99 ? \"99+\" : badge.count)}\n </span>\n )}\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"left\">{tooltip}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n },\n);\nFloatButton.displayName = \"FloatButton\";\n\nexport interface FloatButtonGroupProps {\n trigger?: \"click\" | \"hover\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst FloatButtonGroup = React.forwardRef<\n HTMLDivElement,\n FloatButtonGroupProps\n>(\n (\n {\n trigger = \"click\",\n open: controlledOpen,\n onOpenChange,\n icon = <Plus className=\"h-5 w-5\" />,\n children,\n className,\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const open = controlledOpen ?? internalOpen;\n\n const handleToggle = () => {\n const newOpen = !open;\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n const handleMouseEnter = () => {\n if (trigger === \"hover\") {\n setInternalOpen(true);\n onOpenChange?.(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (trigger === \"hover\") {\n setInternalOpen(false);\n onOpenChange?.(false);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative inline-flex flex-col-reverse items-center gap-3\",\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* Children buttons */}\n {open && (\n <div className=\"flex flex-col-reverse items-center gap-3 animate-in fade-in slide-in-from-bottom-4\">\n {children}\n </div>\n )}\n\n {/* Trigger button */}\n <FloatButton\n icon={open ? <X className=\"h-5 w-5\" /> : icon}\n variant=\"primary\"\n onClick={trigger === \"click\" ? handleToggle : undefined}\n className={cn(\"transition-transform\", open && \"rotate-45\")}\n />\n </div>\n );\n },\n);\nFloatButtonGroup.displayName = \"FloatButtonGroup\";\n\nexport { FloatButton, FloatButtonGroup };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface WatermarkProps {\n children?: React.ReactNode;\n content?: string | string[];\n width?: number;\n height?: number;\n rotate?: number;\n zIndex?: number;\n image?: string;\n font?: {\n color?: string;\n fontSize?: number;\n fontWeight?: \"normal\" | \"light\" | \"bold\";\n fontFamily?: string;\n };\n gap?: [number, number];\n offset?: [number, number];\n className?: string;\n}\n\nconst Watermark = React.forwardRef<HTMLDivElement, WatermarkProps>(\n (\n {\n children,\n content = \"\",\n width = 120,\n height = 64,\n rotate = -22,\n zIndex = 9,\n image,\n font = {},\n gap = [100, 100],\n offset = [0, 0],\n className,\n },\n ref,\n ) => {\n const {\n color = \"rgba(0,0,0,.15)\",\n fontSize = 16,\n fontWeight = \"normal\",\n fontFamily = \"sans-serif\",\n } = font;\n\n const [base64Url, setBase64Url] = React.useState(\"\");\n\n React.useEffect(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const ratio = window.devicePixelRatio || 1;\n const canvasWidth = (width + gap[0]) * ratio;\n const canvasHeight = (height + gap[1]) * ratio;\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n ctx.translate(offset[0] * ratio, offset[1] * ratio);\n ctx.rotate((Math.PI / 180) * rotate);\n\n if (image) {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n ctx.drawImage(img, 0, 0, width * ratio, height * ratio);\n setBase64Url(canvas.toDataURL());\n };\n img.src = image;\n } else {\n ctx.font = `${fontWeight} ${fontSize * ratio}px ${fontFamily}`;\n ctx.fillStyle = color;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n\n const contents = Array.isArray(content) ? content : [content];\n contents.forEach((text, index) => {\n ctx.fillText(text, 0, index * (fontSize * ratio + 10));\n });\n\n setBase64Url(canvas.toDataURL());\n }\n }, [\n content,\n width,\n height,\n rotate,\n image,\n color,\n fontSize,\n fontWeight,\n fontFamily,\n gap,\n offset,\n ]);\n\n return (\n <div ref={ref} className={cn(\"relative\", className)}>\n {children}\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n zIndex,\n backgroundImage: `url(${base64Url})`,\n backgroundRepeat: \"repeat\",\n }}\n />\n </div>\n );\n },\n);\nWatermark.displayName = \"Watermark\";\n\nexport { Watermark };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst headingVariants = cva(\n \"font-bold tracking-tight text-[var(--color-text)]\",\n {\n variants: {\n level: {\n h1: \"text-5xl md:text-6xl\",\n h2: \"text-4xl md:text-5xl\",\n h3: \"text-3xl md:text-4xl\",\n h4: \"text-2xl md:text-3xl\",\n h5: \"text-xl md:text-2xl\",\n h6: \"text-lg md:text-xl\",\n },\n gradient: {\n true: \"bg-gradient-to-r from-purple-400 via-fuchsia-400 to-pink-400 bg-clip-text text-transparent\",\n },\n },\n defaultVariants: {\n level: \"h2\",\n },\n },\n);\n\nexport interface HeadingProps\n extends\n React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof headingVariants> {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ className, level, gradient, as, ...props }, ref) => {\n const Component = as || level || \"h2\";\n const typedRef = ref as React.Ref<HTMLHeadingElement>;\n\n return (\n <Component\n ref={typedRef}\n className={cn(\n headingVariants({ level: level || (as as typeof level), gradient }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nHeading.displayName = \"Heading\";\n\nconst textVariants = cva(\"text-[var(--color-text)]\", {\n variants: {\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n },\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n },\n variant: {\n default: \"text-[var(--color-text)]\",\n secondary: \"text-[var(--color-text-secondary)]\",\n muted: \"text-[var(--color-text-muted)]\",\n placeholder: \"text-[var(--color-text-placeholder)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n weight: \"normal\",\n variant: \"default\",\n },\n});\n\nexport interface TextProps\n extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof textVariants> {\n as?: \"p\" | \"span\" | \"div\" | \"label\";\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n ({ className, size, weight, variant, as = \"p\", ...props }, ref) => {\n const Component = as;\n\n return (\n <Component\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n className={cn(textVariants({ size, weight, variant }), className)}\n {...props}\n />\n );\n },\n);\nText.displayName = \"Text\";\n\nexport { Heading, Text, headingVariants, textVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> {\n block?: boolean;\n language?: string;\n}\n\nconst Code = React.forwardRef<HTMLElement, CodeProps>(\n ({ className, block, language, children, ...props }, ref) => {\n if (block) {\n return (\n <pre\n className={cn(\n \"relative rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)]\",\n \"overflow-x-auto\",\n className,\n )}\n >\n {language && (\n <span className=\"absolute top-2 right-2 text-xs text-[var(--color-text-muted)]\">\n {language}\n </span>\n )}\n <code\n ref={ref}\n className=\"text-sm text-[var(--color-text)] font-mono\"\n {...props}\n >\n {children}\n </code>\n </pre>\n );\n }\n\n return (\n <code\n ref={ref}\n className={cn(\n \"relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm\",\n \"bg-[var(--color-bg-glass)] border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n className,\n )}\n {...props}\n >\n {children}\n </code>\n );\n },\n);\nCode.displayName = \"Code\";\n\nexport { Code };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst kbdVariants = cva(\n \"inline-flex items-center justify-center rounded border font-mono text-xs font-medium\",\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 px-1\",\n md: \"h-6 min-w-6 px-1.5\",\n lg: \"h-7 min-w-7 px-2\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof kbdVariants> {}\n\nconst Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, ...props }, ref) => {\n return (\n <kbd\n ref={ref}\n className={cn(\n kbdVariants({ size }),\n \"border-[var(--color-border)] bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-sm\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nKbd.displayName = \"Kbd\";\n\nexport { Kbd, kbdVariants };\n","import * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)] disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: [\n \"bg-transparent hover:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=on]:bg-[var(--color-bg-glass)] data-[state=on]:text-[var(--color-text)]\",\n ],\n outline: [\n \"border border-[var(--color-border)] bg-transparent\",\n \"hover:bg-[var(--color-bg-glass-hover)] hover:border-[var(--color-border-strong)]\",\n \"data-[state=on]:bg-[var(--color-bg-glass)] data-[state=on]:border-[var(--color-primary)]\",\n ],\n },\n size: {\n sm: \"h-8 px-2\",\n md: \"h-9 px-3\",\n lg: \"h-10 px-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface ToggleProps\n extends\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>,\n VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cn } from \"../utils\";\nimport { toggleVariants } from \"./toggle\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"md\",\n variant: \"default\",\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import * as React from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center rounded-full px-3 py-1 text-xs font-medium transition-all\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n gradient: [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n solid: [\"bg-[var(--color-bg-elevated)]\", \"text-[var(--color-text)]\"],\n },\n clickable: {\n true: \"cursor-pointer hover:scale-105 active:scale-95\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ChipProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n onRemove?: () => void;\n}\n\nconst Chip = React.forwardRef<HTMLDivElement, ChipProps>(\n (\n {\n className,\n variant,\n clickable,\n leftIcon,\n rightIcon,\n children,\n onClick,\n onRemove,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n chipVariants({ variant, clickable: clickable || !!onClick }),\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {leftIcon && <span className=\"mr-1.5\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"ml-1.5\">{rightIcon}</span>}\n {onRemove && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"ml-1.5 inline-flex items-center justify-center rounded-full hover:bg-[var(--color-bg-glass-hover)] p-0.5 transition-colors\"\n aria-label=\"Remove\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"h-3 w-3\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n );\n },\n);\nChip.displayName = \"Chip\";\n\nexport { Chip, chipVariants };\n","import * as React from \"react\";\nimport { X, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface TourStep {\n target: string | (() => HTMLElement | null);\n title: string;\n description: string;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n cover?: React.ReactNode;\n}\n\nexport interface TourProps {\n steps: TourStep[];\n open?: boolean;\n current?: number;\n onClose?: () => void;\n onChange?: (current: number) => void;\n onFinish?: () => void;\n className?: string;\n}\n\nconst Tour = React.forwardRef<HTMLDivElement, TourProps>(\n (\n {\n steps,\n open = false,\n current: controlledCurrent = 0,\n onClose,\n onChange,\n onFinish,\n className,\n },\n ref,\n ) => {\n const [internalCurrent, setInternalCurrent] = React.useState(0);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [targetRect, setTargetRect] = React.useState<DOMRect | null>(null);\n\n const current = controlledCurrent ?? internalCurrent;\n const currentStep = steps[current];\n\n React.useEffect(() => {\n if (!open || !currentStep) return;\n\n const updatePosition = () => {\n const target =\n typeof currentStep.target === \"string\"\n ? document.querySelector(currentStep.target)\n : currentStep.target();\n\n if (!target) return;\n\n const rect = target.getBoundingClientRect();\n setTargetRect(rect);\n\n const placement = currentStep.placement || \"bottom\";\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case \"top\":\n top = rect.top - 200;\n left = rect.left + rect.width / 2;\n break;\n case \"bottom\":\n top = rect.bottom + 10;\n left = rect.left + rect.width / 2;\n break;\n case \"left\":\n top = rect.top + rect.height / 2;\n left = rect.left - 320;\n break;\n case \"right\":\n top = rect.top + rect.height / 2;\n left = rect.right + 10;\n break;\n }\n\n setPosition({ top, left });\n\n // Highlight target\n target.classList.add(\"tour-target\");\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition);\n\n // Remove highlight\n const target =\n typeof currentStep.target === \"string\"\n ? document.querySelector(currentStep.target)\n : currentStep.target();\n target?.classList.remove(\"tour-target\");\n };\n }, [open, current, currentStep]);\n\n if (!open || !currentStep) return null;\n\n const handlePrevious = () => {\n const newCurrent = Math.max(0, current - 1);\n setInternalCurrent(newCurrent);\n onChange?.(newCurrent);\n };\n\n const handleNext = () => {\n if (current === steps.length - 1) {\n onFinish?.();\n onClose?.();\n } else {\n const newCurrent = Math.min(steps.length - 1, current + 1);\n setInternalCurrent(newCurrent);\n onChange?.(newCurrent);\n }\n };\n\n return (\n <>\n {/* Overlay */}\n <div\n className=\"fixed inset-0 z-[9998]\"\n style={{\n background: \"rgba(0, 0, 0, 0.5)\",\n pointerEvents: \"none\",\n }}\n />\n\n {/* Target highlight */}\n {targetRect && (\n <div\n className=\"fixed z-[9999] pointer-events-none\"\n style={{\n top: targetRect.top - 4,\n left: targetRect.left - 4,\n width: targetRect.width + 8,\n height: targetRect.height + 8,\n border: \"2px solid var(--color-primary)\",\n borderRadius: \"8px\",\n boxShadow: \"0 0 0 9999px rgba(0, 0, 0, 0.5)\",\n }}\n />\n )}\n\n {/* Tour card */}\n <div\n ref={ref}\n className={cn(\n \"fixed z-[10000] w-80 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in fade-in zoom-in-95\",\n className,\n )}\n style={{\n top: position.top,\n left: position.left,\n transform: \"translateX(-50%)\",\n }}\n >\n {currentStep.cover && (\n <div className=\"rounded-t-lg overflow-hidden\">\n {currentStep.cover}\n </div>\n )}\n\n <div className=\"p-4\">\n <div className=\"flex items-start justify-between mb-2\">\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {currentStep.title}\n </h3>\n <button\n onClick={onClose}\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n\n <p className=\"text-sm text-[var(--color-text-secondary)] mb-4\">\n {currentStep.description}\n </p>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"text-xs text-[var(--color-text-muted)]\">\n {current + 1} / {steps.length}\n </div>\n\n <div className=\"flex gap-2\">\n {current > 0 && (\n <Button variant=\"outline\" size=\"sm\" onClick={handlePrevious}>\n <ChevronLeft className=\"h-4 w-4 mr-1\" />\n Previous\n </Button>\n )}\n <Button variant=\"gradient\" size=\"sm\" onClick={handleNext}>\n {current === steps.length - 1 ? \"Finish\" : \"Next\"}\n {current < steps.length - 1 && (\n <ChevronRight className=\"h-4 w-4 ml-1\" />\n )}\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n <style>{`\n .tour-target {\n position: relative;\n z-index: 9999;\n }\n `}</style>\n </>\n );\n },\n);\nTour.displayName = \"Tour\";\n\nexport { Tour };\n","import * as React from \"react\";\n\ntype Theme = \"dark\" | \"light\" | \"system\";\n\ntype ThemeProviderProps = {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\ntype ThemeProviderState = {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n};\n\nconst initialState: ThemeProviderState = {\n theme: \"dark\",\n setTheme: () => null,\n};\n\nconst ThemeProviderContext = React.createContext<ThemeProviderState>(initialState);\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"dark\",\n storageKey = \"baole-ui-theme\",\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = React.useState<Theme>(\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\n );\n\n React.useEffect(() => {\n const root = window.document.documentElement;\n\n root.classList.remove(\"light\", \"dark\");\n\n if (theme === \"system\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n\n root.classList.add(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n }, [theme]);\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n\nexport const useTheme = () => {\n const context = React.useContext(ThemeProviderContext);\n\n if (context === undefined)\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n\n return context;\n};\n"],"names":["r","f","n","o","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","_a","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","key","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","i","group","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","falsyToString","cx","cva","base","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","React","size","asChild","loading","leftIcon","rightIcon","fullWidth","children","disabled","ref","Comp","Slot","isDisabled","content","jsxs","Fragment","jsx","Loader2","cardVariants","Card","padding","hoverable","bordered","style","accentColor","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","badgeVariants","Badge","dot","removable","onRemove","e","X","inputVariants","Input","type","statusProp","hint","error","suffix","clearable","onClear","wrapperClassName","status","showClear","input","InputNumber","controlledValue","defaultValue","min","max","step","precision","onChange","formatter","parser","controls","internalValue","setInternalValue","inputRef","formatValue","val","parseValue","displayValue","parsed","clampValue","clamped","handleChange","handleStep","direction","currentValue","newValue","canStepUp","canStepDown","Plus","Minus","Textarea","id","generatedId","textareaId","errorId","hintId","hasError","Checkbox","description","checkboxId","checkbox","CheckboxPrimitive","Check","Switch","switchId","switchElement","SwitchPrimitives","RadioGroup","RadioGroupPrimitive","RadioGroupItem","radioId","radio","Circle","labelVariants","Label","required","LabelPrimitive","Slider","showValue","SliderPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","InputOTPSeparator","Dot","FormContext","Form","onSubmit","errors","touched","FormItem","name","FormSection","title","FormActions","toDate","argStr","constructFrom","date","millisecondsInWeek","millisecondsInDay","defaultOptions","getDefaultOptions","startOfWeek","options","weekStartsOn","_b","_d","_c","_date","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeekYear","fourthOfJanuary","isDate","isValid","startOfYear","cleanDate","formatDistanceLocale","formatDistance","token","count","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","matched","Calendar","showOutsideDays","DayPicker","ChevronLeft","ChevronRight","Popover","PopoverPrimitive","PopoverTrigger","PopoverAnchor","PopoverContent","align","sideOffset","DatePicker","onDateChange","placeholder","CalendarIcon","DateRangePicker","dateRange","onDateRangeChange","ScrollArea","ScrollAreaPrimitive","ScrollBar","orientation","TimePicker","minuteStep","secondStep","showSecond","open","setOpen","_","seconds","getDisplayTime","h","m","s","period","handleTimeSelect","newTime","isPM","hour24","handlePeriodToggle","currentHours","getCurrentHour","Clock","hour","minute","second","defaultPresetColors","ColorPicker","presetColors","showInput","color","Rating","readonly","allowHalf","hoverValue","setHoverValue","sizeClasses","handleClick","isHalf","handleMouseEnter","handleMouseLeave","isFilled","isHalfFilled","Star","Upload","accept","multiple","maxSize","maxCount","fileList","beforeUpload","customRequest","listType","files","setFiles","handleFileChange","selectedFiles","file","newFile","newFiles","response","updatedFiles","handleRemove","UploadIcon","FileIcon","AutoComplete","onSelect","activeIndex","setActiveIndex","containerRef","filteredOptions","option","handleClickOutside","event","handleSelect","handleKeyDown","prev","Mentions","rows","mentionSearch","setMentionSearch","mentionPosition","setMentionPosition","textareaRef","cursorPosition","mentionMatch","textBeforeCursor","textAfterCursor","beforeMention","newPosition","node","Cascader","changeOnSelect","activeMenus","setActiveMenus","getSelectedOptions","vals","currentOptions","opt","level","displayLabel","selectedOptions","menu","isSelected","hasChildren","Transfer","dataSource","targetKeys","selectedKeys","onSelectChange","titles","showSearch","leftSelected","setLeftSelected","rightSelected","setRightSelected","leftSearch","setLeftSearch","rightSearch","setRightSearch","leftDataSource","item","rightDataSource","filteredLeftData","filteredRightData","handleLeftCheck","checked","newSelected","handleRightCheck","handleMoveToRight","newTargetKeys","handleMoveToLeft","renderList","data","selected","onCheck","search","onSearchChange","TreeSelect","treeData","treeCheckable","expandedKeys","setExpandedKeys","flattenTree","nodes","traverse","findNodeByValue","getSelectedNodes","getDisplayText","selectedNodes","currentValues","newValues","v","handleExpand","nodeValue","renderTreeNode","isExpanded","child","alertVariants","iconMap","Info","CheckCircle2","AlertTriangle","AlertCircle","Alert","icon","dismissible","onDismiss","dismissed","setDismissed","handleDismiss","Icon","showIcon","AlertTitle","AlertDescription","Progress","progressValue","ProgressPrimitive","Skeleton","lines","animated","height","baseStyles","spinnerVariants","Spinner","Toaster","Sonner","EmptyState","action","Result","subtitle","extra","defaultIcons","XCircle","Notification","onClose","icons","NotificationManager","notifications","notification","Message","duration","timer","messageInstances","updateCallback","show","instance","close","msg","MessageManager","MessageContainer","messages","setMessages","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Sheet","shouldScaleBackground","DrawerPrimitive","SheetTrigger","SheetPortal","SheetClose","SheetOverlay","SheetContent","SheetHeader","SheetFooter","SheetTitle","SheetDescription","DrawerContext","Drawer","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","drawerContentVariants","DrawerContent","finalDirection","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","Modal","onOpenChange","footer","centered","closable","maskClosable","handleMaskClick","handleClose","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","DropdownMenuSubContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","NavigationMenu","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuIndicator","MenubarMenu","MenubarPrimitive","MenubarGroup","MenubarPortal","MenubarSub","MenubarRadioGroup","Menubar","MenubarTrigger","MenubarSubTrigger","MenubarSubContent","MenubarContent","alignOffset","MenubarItem","MenubarCheckboxItem","MenubarRadioItem","MenubarLabel","MenubarSeparator","MenubarShortcut","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","MoreHorizontal","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis","Anchor","links","controlledActiveLink","offsetTop","targetOffset","internalActiveLink","setInternalActiveLink","activeLink","handleScroll","scrollPosition","sections","link","main","current","section","href","target","top","renderLink","stepsVariants","Steps","items","onStepChange","sizes","getStepStatus","renderStepIcon","stepStatus","iconClasses","renderStep","isLast","isClickable","Segmented","block","Sidebar","collapsible","defaultCollapsed","controlledCollapsed","onCollapsedChange","collapsedWidth","internalCollapsed","setInternalCollapsed","collapsed","handleToggle","newCollapsed","SidebarHeader","SidebarContent","SidebarFooter","SidebarGroup","SidebarGroupLabel","SidebarGroupContent","SidebarMenuItem","active","avatarVariants","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","CarouselContext","useCarousel","Carousel","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","scrollPrev","scrollNext","CarouselContent","CarouselItem","CarouselPrevious","ArrowLeft","CarouselNext","ArrowRight","Image","src","alt","fallback","onError","aspectRatio","objectFit","setError","setLoading","aspectRatioClasses","objectFitClasses","handleError","handleLoad","ImageIcon","Statistic","trend","trendValue","valueClassName","ArrowUp","ArrowDown","List","divided","onItemClick","itemClassName","Descriptions","columns","layout","gridCols","Timeline","getColorClass","Stepper","steps","currentStep","isCompleted","isCurrent","isUpcoming","tagVariants","Tag","Tree","checkable","controlledCheckedKeys","controlledExpandedKeys","controlledSelectedKeys","onExpand","internalCheckedKeys","setInternalCheckedKeys","internalExpandedKeys","setInternalExpandedKeys","internalSelectedKeys","setInternalSelectedKeys","checkedKeys","newExpandedKeys","handleCheck","newCheckedKeys","newSelectedKeys","isChecked","QRCode","bgColor","fgColor","includeMargin","imageSettings","canvasRef","canvas","ctx","cellSize","margin","hash","j","cornerSize","x","y","img","imgX","imgY","CustomTooltip","payload","entry","LineChart","xKey","showGrid","showLegend","ResponsiveContainer","RechartsLineChart","CartesianGrid","XAxis","YAxis","Legend","line","Line","BarChart","bars","RechartsBarChart","bar","Bar","AreaChart","areas","RechartsAreaChart","area","Area","PieChart","innerRadius","COLORS","RechartsPieChart","Pie","Cell","Layout","LayoutHeader","LayoutSider","LayoutContent","LayoutFooter","Separator","decorative","SeparatorPrimitive","Divider","AspectRatio","AspectRatioPrimitive","ResizablePanelGroup","ResizablePrimitive","ResizablePanel","ResizableHandle","withHandle","GripVertical","containerVariants","Container","stackVariants","Stack","spacing","justify","wrap","gridVariants","Grid","cols","gap","gridItemVariants","GridItem","span","spaceVariants","Space","split","childrenArray","Affix","offsetBottom","affixed","setAffixed","styles","setStyles","placeholderRef","contentRef","getTarget","placeholderRect","newAffixed","newStyles","viewportHeight","BackTop","visibilityHeight","onClick","visible","setVisible","scrollToTop","FloatButton","tooltip","shape","badge","button","FloatButtonGroup","trigger","controlledOpen","internalOpen","setInternalOpen","newOpen","Watermark","rotate","zIndex","image","font","fontSize","fontWeight","fontFamily","base64Url","setBase64Url","ratio","canvasWidth","canvasHeight","text","headingVariants","Heading","gradient","as","textVariants","Text","weight","Code","language","kbdVariants","Kbd","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","chipVariants","Chip","clickable","Tour","controlledCurrent","onFinish","internalCurrent","setInternalCurrent","setPosition","targetRect","setTargetRect","updatePosition","rect","placement","left","handlePrevious","newCurrent","handleNext","initialState","ThemeProviderContext","ThemeProvider","defaultTheme","storageKey","setTheme","root","systemTheme","useTheme"],"mappings":"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","x_google_ignoreList":[0,1,3,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.2.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils.ts","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/button.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/input.tsx","../src/components/input-number.tsx","../src/components/textarea.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/radio-group.tsx","../src/components/label.tsx","../src/components/slider.tsx","../src/components/select.tsx","../src/components/input-otp.tsx","../src/components/form.tsx","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/toDate.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constructFrom.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/constants.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/defaultOptions.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfDay.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/differenceInCalendarDays.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfISOWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isDate.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/isValid.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/localize.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US/_lib/match.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/locale/en-US.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getDayOfYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getISOWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/startOfWeekYear.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/getWeek.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/addLeadingZeros.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/lightFormatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/formatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/format/longFormatters.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/_lib/protectedTokens.mjs","../node_modules/.pnpm/date-fns@3.6.0/node_modules/date-fns/format.mjs","../src/components/calendar.tsx","../src/components/popover.tsx","../src/components/date-picker.tsx","../src/components/date-range-picker.tsx","../src/components/scroll-area.tsx","../src/components/time-picker.tsx","../src/components/color-picker.tsx","../src/components/rating.tsx","../src/components/upload.tsx","../src/components/auto-complete.tsx","../src/components/mentions.tsx","../src/components/cascader.tsx","../src/components/transfer.tsx","../src/components/tree-select.tsx","../src/components/alert.tsx","../src/components/progress.tsx","../src/components/skeleton.tsx","../src/components/spinner.tsx","../src/components/toaster.tsx","../src/components/empty-state.tsx","../src/components/result.tsx","../src/components/notification.tsx","../src/components/message.tsx","../src/components/dialog.tsx","../src/components/alert-dialog.tsx","../src/components/sheet.tsx","../src/components/drawer.tsx","../src/components/modal.tsx","../src/components/hover-card.tsx","../src/components/tooltip.tsx","../src/components/command.tsx","../src/components/tabs.tsx","../src/components/accordion.tsx","../src/components/dropdown-menu.tsx","../src/components/context-menu.tsx","../src/components/navigation-menu.tsx","../src/components/menubar.tsx","../src/components/breadcrumb.tsx","../src/components/pagination.tsx","../src/components/anchor.tsx","../src/components/steps.tsx","../src/components/segmented.tsx","../src/components/sidebar.tsx","../src/components/avatar.tsx","../src/components/table.tsx","../src/components/carousel.tsx","../src/components/image.tsx","../src/components/statistic.tsx","../src/components/list.tsx","../src/components/descriptions.tsx","../src/components/timeline.tsx","../src/components/stepper.tsx","../src/components/tag.tsx","../src/components/tree.tsx","../src/components/qrcode.tsx","../src/components/chart.tsx","../src/components/layout.tsx","../src/components/separator.tsx","../src/components/divider.tsx","../src/components/aspect-ratio.tsx","../src/components/resizable.tsx","../src/components/container.tsx","../src/components/stack.tsx","../src/components/grid.tsx","../src/components/space.tsx","../src/components/affix.tsx","../src/components/back-top.tsx","../src/components/float-button.tsx","../src/components/watermark.tsx","../src/components/typography.tsx","../src/components/code.tsx","../src/components/kbd.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/collapsible.tsx","../src/components/chip.tsx","../src/components/tour.tsx","../src/components/theme-provider.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;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\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 remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\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 const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\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 if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\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 const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\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 const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\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 */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\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};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function 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 function 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 return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\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))\\(.+\\)$/;\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', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...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 { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center font-medium transition-all duration-200 outline-none disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n gradient:\n \"bg-gradient-to-r from-purple-500 via-fuchsia-500 to-pink-500 text-white hover:shadow-lg hover:shadow-purple-500/40 hover:scale-[1.02] active:scale-[0.98]\",\n outline:\n \"border border-white/20 bg-white/5 text-white hover:border-purple-400/50 hover:bg-white/10 backdrop-blur-sm\",\n ghost:\n \"bg-transparent text-white/80 hover:bg-white/10 hover:text-white\",\n destructive:\n \"bg-gradient-to-r from-rose-500 to-pink-600 text-white hover:shadow-[var(--glow-danger)] hover:scale-[1.02] active:scale-[0.98]\",\n success:\n \"bg-gradient-to-r from-emerald-500 to-teal-500 text-white hover:shadow-[var(--glow-success)] hover:scale-[1.02] active:scale-[0.98]\",\n secondary:\n \"bg-white/8 text-white/90 hover:bg-white/12 border border-white/10\",\n link: \"text-purple-400 hover:text-purple-300 underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-6 px-2.5 text-xs rounded-md gap-1\",\n sm: \"h-8 px-3 text-sm rounded-md gap-1.5\",\n md: \"h-9 px-4 text-sm rounded-lg gap-2\",\n lg: \"h-11 px-6 text-base rounded-lg gap-2\",\n xl: \"h-13 px-8 text-lg rounded-xl gap-3\",\n icon: \"size-9 rounded-lg p-0\",\n },\n },\n defaultVariants: {\n variant: \"gradient\",\n size: \"md\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n children,\n disabled,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n\n const content = (\n <>\n {loading && <Loader2 className=\"animate-spin\" size={16} />}\n {!loading && leftIcon && leftIcon}\n {children}\n {!loading && rightIcon && rightIcon}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n fullWidth && \"w-full\",\n loading && \"pointer-events-none opacity-70\",\n )}\n ref={ref}\n disabled={isDisabled}\n data-slot=\"button\"\n {...props}\n >\n {content}\n </Comp>\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst cardVariants = cva(\"rounded-xl transition-all duration-300\", {\n variants: {\n variant: {\n glass: \"bg-white/5 border border-white/10 backdrop-blur-[12px]\",\n gradient:\n \"bg-white/5 backdrop-blur-[12px] border border-transparent gradient-border\",\n solid: \"bg-[var(--color-bg-secondary)] border border-white/10\",\n outlined: \"bg-transparent border border-white/20\",\n },\n padding: {\n none: \"p-0\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n },\n defaultVariants: {\n variant: \"glass\",\n padding: \"md\",\n },\n});\n\ninterface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n hoverable?: boolean;\n bordered?: boolean;\n accentColor?: string;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant,\n padding,\n hoverable = false,\n bordered = false,\n children,\n style,\n accentColor,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n cardVariants({ variant, padding }),\n hoverable &&\n \"hover:-translate-y-1 hover:shadow-[var(--shadow-elevated)] cursor-pointer\",\n bordered && \"border-2\",\n className,\n )}\n style={accentColor ? { ...style, borderTopColor: accentColor } : style}\n data-slot=\"card\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-lg text-white\", className)} {...props} />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-white/60\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nconst CardAction = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"absolute top-4 right-4\", className)}\n {...props}\n />\n));\nCardAction.displayName = \"CardAction\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n CardAction,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center font-medium transition-colors border\",\n {\n variants: {\n variant: {\n default: \"bg-white/5 border-white/10 text-white/90\",\n gradient:\n \"bg-gradient-to-r from-purple-500 to-fuchsia-500 border-purple-400/30 text-white\",\n outline: \"bg-transparent border-white/10 text-white/80\",\n success: \"bg-emerald-500/10 border-emerald-400/30 text-emerald-100\",\n warning: \"bg-amber-500/10 border-amber-400/30 text-amber-100\",\n destructive: \"bg-rose-500/10 border-rose-400/30 text-rose-100\",\n info: \"bg-blue-500/10 border-blue-400/30 text-blue-100\",\n secondary: \"bg-white/8 border-white/10 text-white/70\",\n },\n size: {\n sm: \"text-xs px-1.5 py-0.5 gap-0.5 rounded-md\",\n md: \"text-xs px-2 py-1 gap-1 rounded-md\",\n lg: \"text-sm px-2.5 py-1 gap-1 rounded-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface BadgeProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n dot?: boolean;\n removable?: boolean;\n onRemove?: () => void;\n asChild?: boolean;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant,\n size,\n dot = false,\n removable = false,\n onRemove,\n asChild = false,\n children,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n data-slot=\"badge\"\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"size-1.5 rounded-full\",\n variant === \"success\" && \"bg-emerald-400\",\n variant === \"warning\" && \"bg-amber-400\",\n variant === \"destructive\" && \"bg-rose-400\",\n variant === \"info\" && \"bg-blue-400\",\n variant === \"gradient\" && \"bg-white\",\n (!variant ||\n variant === \"default\" ||\n variant === \"outline\" ||\n variant === \"secondary\") &&\n \"bg-white/50\",\n )}\n />\n )}\n {children}\n {removable && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n className=\"ml-0.5 hover:text-white transition-colors\"\n >\n <X size={12} />\n </button>\n )}\n </Comp>\n );\n },\n);\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X, Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst inputVariants = cva(\n \"w-full rounded-lg border bg-[var(--color-bg-input)] text-white placeholder:text-[var(--color-text-placeholder)] transition-all duration-200 outline-none\",\n {\n variants: {\n size: {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-9 px-3 text-sm\",\n lg: \"h-11 px-4 text-base\",\n },\n status: {\n default:\n \"border-white/10 focus:border-purple-400/70 focus:ring-2 focus:ring-purple-400/20\",\n error:\n \"border-red-400/70 focus:border-red-400/70 focus:ring-2 focus:ring-red-400/20\",\n warning:\n \"border-amber-400/70 focus:border-amber-400/70 focus:ring-2 focus:ring-amber-400/20\",\n success:\n \"border-emerald-400/70 focus:border-emerald-400/70 focus:ring-2 focus:ring-emerald-400/20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n },\n);\n\nexport interface InputProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">,\n VariantProps<typeof inputVariants> {\n label?: string;\n hint?: string;\n error?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n loading?: boolean;\n wrapperClassName?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type = \"text\",\n size,\n status: statusProp,\n label,\n hint,\n error,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n clearable = false,\n onClear,\n loading = false,\n wrapperClassName,\n value,\n ...props\n },\n ref,\n ) => {\n const status = error ? \"error\" : statusProp || \"default\";\n const showClear = clearable && value && !loading;\n\n const input = (\n <div className=\"relative flex items-center\">\n {leftIcon && (\n <div className=\"absolute left-3 text-white/40 pointer-events-none\">\n {leftIcon}\n </div>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ size, status }),\n leftIcon && \"pl-9\",\n (rightIcon || loading || showClear) && \"pr-9\",\n className,\n )}\n ref={ref}\n value={value}\n data-slot=\"input\"\n {...props}\n />\n {loading && (\n <div className=\"absolute right-3 text-white/40\">\n <Loader2 size={16} className=\"animate-spin\" />\n </div>\n )}\n {!loading && showClear && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n onClear?.();\n }}\n className=\"absolute right-3 text-white/40 hover:text-white transition-colors\"\n >\n <X size={16} />\n </button>\n )}\n {!loading && !showClear && rightIcon && (\n <div className=\"absolute right-3 text-white/40 pointer-events-none\">\n {rightIcon}\n </div>\n )}\n </div>\n );\n\n if (label || hint || error || prefix || suffix) {\n return (\n <div className={cn(\"flex flex-col gap-1.5\", wrapperClassName)}>\n {label && (\n <label className=\"text-sm font-medium text-white/80\">{label}</label>\n )}\n {prefix || suffix ? (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-white/60 whitespace-nowrap\">\n {prefix}\n </span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-white/60 whitespace-nowrap\">\n {suffix}\n </span>\n )}\n </div>\n ) : (\n input\n )}\n {(hint || error) && (\n <p\n className={cn(\n \"text-xs\",\n error ? \"text-rose-400\" : \"text-white/50\",\n )}\n >\n {error || hint}\n </p>\n )}\n </div>\n );\n }\n\n return input;\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\n","import * as React from \"react\";\nimport { Plus, Minus } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface InputNumberProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\"\n> {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n onChange?: (value: number | undefined) => void;\n formatter?: (value: number | undefined) => string;\n parser?: (displayValue: string) => number;\n controls?: boolean;\n disabled?: boolean;\n}\n\nconst InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n min = -Infinity,\n max = Infinity,\n step = 1,\n precision,\n onChange,\n formatter,\n parser,\n controls = true,\n disabled,\n ...props\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<\n number | undefined\n >(defaultValue);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const value = controlledValue ?? internalValue;\n\n const formatValue = (val: number | undefined): string => {\n if (val === undefined) return \"\";\n if (formatter) return formatter(val);\n if (precision !== undefined) return val.toFixed(precision);\n return String(val);\n };\n\n const parseValue = (displayValue: string): number | undefined => {\n if (!displayValue) return undefined;\n if (parser) return parser(displayValue);\n const parsed = parseFloat(displayValue);\n return isNaN(parsed) ? undefined : parsed;\n };\n\n const clampValue = (val: number | undefined): number | undefined => {\n if (val === undefined) return undefined;\n let clamped = Math.max(min, Math.min(max, val));\n if (precision !== undefined) {\n clamped = parseFloat(clamped.toFixed(precision));\n }\n return clamped;\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const parsed = parseValue(e.target.value);\n const clamped = clampValue(parsed);\n setInternalValue(clamped);\n onChange?.(clamped);\n };\n\n const handleStep = (direction: \"up\" | \"down\") => {\n const currentValue = value ?? 0;\n const newValue =\n direction === \"up\" ? currentValue + step : currentValue - step;\n const clamped = clampValue(newValue);\n setInternalValue(clamped);\n onChange?.(clamped);\n };\n\n const canStepUp = value === undefined || value + step <= max;\n const canStepDown = value === undefined || value - step >= min;\n\n return (\n <div\n className={cn(\n \"relative flex items-center\",\n \"rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-colors\",\n \"focus-within:border-[var(--color-primary)] focus-within:ring-2 focus-within:ring-[var(--color-primary)]/20\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n <input\n ref={inputRef}\n type=\"text\"\n role=\"spinbutton\"\n value={formatValue(value)}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n \"flex-1 bg-transparent px-3 py-2 text-sm\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"focus:outline-none\",\n controls && \"pr-0\",\n )}\n {...props}\n />\n\n {controls && (\n <div className=\"flex flex-col border-l border-[var(--color-border)]\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled || !canStepUp}\n onClick={() => handleStep(\"up\")}\n className=\"h-5 w-7 rounded-none rounded-tr-md border-b border-[var(--color-border)] hover:bg-[var(--color-bg-glass-hover)]\"\n aria-label=\"Increment\"\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled || !canStepDown}\n onClick={() => handleStep(\"down\")}\n className=\"h-5 w-7 rounded-none rounded-br-md hover:bg-[var(--color-bg-glass-hover)]\"\n aria-label=\"Decrement\"\n >\n <Minus className=\"h-3 w-3\" />\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\nInputNumber.displayName = \"InputNumber\";\n\nexport { InputNumber };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string;\n error?: string;\n hint?: string;\n status?: \"default\" | \"error\" | \"success\" | \"warning\";\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n className,\n label,\n error,\n hint,\n status = \"default\",\n id,\n disabled,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const errorId = `${textareaId}-error`;\n const hintId = `${textareaId}-hint`;\n\n const hasError = status === \"error\" || !!error;\n\n const statusStyles = {\n default:\n \"border-[var(--color-border)] focus:border-[var(--color-border-focus)]\",\n error:\n \"border-[var(--color-border-error)] focus:border-[var(--color-border-error)]\",\n success:\n \"border-[var(--color-border-success)] focus:border-[var(--color-border-success)]\",\n warning:\n \"border-[var(--color-border-warning)] focus:border-[var(--color-border-warning)]\",\n };\n\n return (\n <div className=\"w-full space-y-2\">\n {label && (\n <label\n htmlFor={textareaId}\n className=\"block text-sm font-medium text-[var(--color-text)]\"\n >\n {label}\n </label>\n )}\n <textarea\n id={textareaId}\n className={cn(\n \"flex min-h-[80px] w-full rounded-lg border px-4 py-3\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"resize-y\",\n statusStyles[hasError ? \"error\" : status],\n className,\n )}\n ref={ref}\n disabled={disabled}\n aria-invalid={hasError ? \"true\" : \"false\"}\n aria-describedby={error ? errorId : hint ? hintId : undefined}\n {...props}\n />\n {error && (\n <p\n id={errorId}\n className=\"text-sm text-[var(--color-destructive)]\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n {hint && !error && (\n <p id={hintId} className=\"text-sm text-[var(--color-text-muted)]\">\n {hint}\n </p>\n )}\n </div>\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface CheckboxProps extends Omit<\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n \"asChild\"\n> {\n label?: string;\n description?: string;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n const checkbox = (\n <CheckboxPrimitive.Root\n ref={ref}\n id={checkboxId}\n className={cn(\n \"peer h-5 w-5 shrink-0 rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--color-primary)] data-[state=checked]:border-[var(--color-primary)]\",\n \"data-[state=checked]:shadow-[var(--glow-primary)]\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4 text-white\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {checkbox}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return checkbox;\n});\n\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../utils\";\n\nexport interface SwitchProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\n \"asChild\"\n> {\n label?: string;\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const switchId = id || generatedId;\n\n const switchElement = (\n <SwitchPrimitives.Root\n id={switchId}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--color-primary)]\",\n \"data-[state=checked]:shadow-[var(--glow-primary)]\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0\",\n \"transition-transform duration-200\",\n \"data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {switchElement}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return switchElement;\n});\n\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nexport interface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n> {\n label?: string;\n description?: string;\n}\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, label, description, id, ...props }, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n\n const radio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={radioId}\n className={cn(\n \"aspect-square h-5 w-5 rounded-full border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-[var(--color-primary)]\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n\n if (label || description) {\n return (\n <div className=\"flex items-start gap-3\">\n {radio}\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={radioId}\n className=\"text-sm font-medium text-[var(--color-text)] cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n return radio;\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n variant: {\n default: \"text-[var(--color-text)]\",\n muted: \"text-[var(--color-text-muted)]\",\n error: \"text-[var(--color-destructive)]\",\n },\n required: {\n true: \"after:content-['*'] after:ml-0.5 after:text-[var(--color-destructive)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface LabelProps\n extends\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, variant, required, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants({ variant, required }), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../utils\";\n\nexport interface SliderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\"\n> {\n label?: string;\n showValue?: boolean;\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({ className, label, showValue, ...props }, ref) => {\n const value = props.value || props.defaultValue || [0];\n const displayValue = Array.isArray(value) ? value[0] : value;\n\n return (\n <div className=\"w-full space-y-3\">\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <label className=\"text-sm font-medium text-[var(--color-text)]\">\n {label}\n </label>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {displayValue}\n </span>\n )}\n </div>\n )}\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\">\n <SliderPrimitive.Range className=\"absolute h-full bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-[var(--color-primary)] bg-white shadow-lg transition-all hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)] disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n </div>\n );\n});\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-11 w-full items-center justify-between rounded-lg border border-[var(--color-border)] px-4 py-2\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] placeholder:text-[var(--color-text-placeholder)]\",\n \"transition-all duration-200\",\n \"hover:bg-[var(--color-bg-input-hover)] hover:border-[var(--color-border-strong)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-md py-2 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors duration-150\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { Dot } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n \"text-sm transition-all\",\n \"first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive &&\n \"z-10 ring-2 ring-[var(--color-primary)] ring-offset-[var(--color-bg)]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-[var(--color-text)] duration-1000\" />\n </div>\n )}\n </div>\n );\n});\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Label } from \"./label\";\n\ntype FormContextValue = {\n errors: Record<string, string>;\n touched: Record<string, boolean>;\n};\n\nconst FormContext = React.createContext<FormContextValue>({\n errors: {},\n touched: {},\n});\n\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n errors?: Record<string, string>;\n touched?: Record<string, boolean>;\n}\n\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ className, onSubmit, errors = {}, touched = {}, ...props }, ref) => {\n return (\n <FormContext.Provider value={{ errors, touched }}>\n <form\n ref={ref}\n onSubmit={onSubmit}\n className={cn(\"space-y-6\", className)}\n {...props}\n />\n </FormContext.Provider>\n );\n },\n);\nForm.displayName = \"Form\";\n\nexport interface FormItemProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n name?: string;\n required?: boolean;\n description?: string;\n}\n\nconst FormItem = React.forwardRef<HTMLDivElement, FormItemProps>(\n (\n { className, label, name, required, description, children, ...props },\n ref,\n ) => {\n const { errors, touched } = React.useContext(FormContext);\n const error = name && touched[name] ? errors[name] : undefined;\n\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {label && (\n <Label htmlFor={name}>\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Label>\n )}\n {children}\n {description && !error && (\n <p className=\"text-xs text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n {error && <p className=\"text-xs text-red-500\">{error}</p>}\n </div>\n );\n },\n);\nFormItem.displayName = \"FormItem\";\n\nexport interface FormSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string;\n description?: string;\n}\n\nconst FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ className, title, description, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)} {...props}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n {description}\n </p>\n )}\n </div>\n )}\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n },\n);\nFormSection.displayName = \"FormSection\";\n\nconst FormActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-3 pt-4\", className)}\n {...props}\n />\n));\nFormActions.displayName = \"FormActions\";\n\nexport { Form, FormItem, FormSection, FormActions };\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../utils\";\nimport { buttonVariants } from \"./button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium text-[var(--color-text)]\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-[var(--color-text-muted)] rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-[var(--color-bg-glass)]/50 [&:has([aria-selected])]:bg-[var(--color-bg-glass)] first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary)] hover:text-white focus:bg-[var(--color-primary)] focus:text-white\",\n day_today: \"bg-[var(--color-bg-glass)] text-[var(--color-text)]\",\n day_outside:\n \"day-outside text-[var(--color-text-muted)] opacity-50 aria-selected:bg-[var(--color-bg-glass)]/50 aria-selected:text-[var(--color-text-muted)] aria-selected:opacity-30\",\n day_disabled: \"text-[var(--color-text-muted)] opacity-50\",\n day_range_middle:\n \"aria-selected:bg-[var(--color-bg-glass)] aria-selected:text-[var(--color-text)]\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ ...props }) => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: ({ ...props }) => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DatePickerProps {\n date?: Date;\n onDateChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n { date, onDateChange, placeholder = \"Pick a date\", disabled, className },\n ref,\n ) => {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !date && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date ? format(date, \"PPP\") : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={onDateChange}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n },\n);\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface DateRangePickerProps {\n dateRange?: DateRange;\n onDateRangeChange?: (dateRange: DateRange | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst DateRangePicker = React.forwardRef<\n HTMLButtonElement,\n DateRangePickerProps\n>(\n (\n {\n dateRange,\n onDateRangeChange,\n placeholder = \"Pick a date range\",\n disabled,\n className,\n },\n ref,\n ) => {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateRange && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateRange?.from ? (\n dateRange.to ? (\n <>\n {format(dateRange.from, \"LLL dd, y\")} -{\" \"}\n {format(dateRange.to, \"LLL dd, y\")}\n </>\n ) : (\n format(dateRange.from, \"LLL dd, y\")\n )\n ) : (\n <span>{placeholder}</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n selected={dateRange}\n onSelect={onDateRangeChange}\n numberOfMonths={2}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n },\n);\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n","import * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"../utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-[var(--color-border)] hover:bg-[var(--color-border-strong)] transition-colors\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\nimport { Clock } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface TimePickerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (time: Date | undefined) => void;\n format?: \"12\" | \"24\";\n minuteStep?: number;\n secondStep?: number;\n showSecond?: boolean;\n disabled?: boolean;\n placeholder?: string;\n className?: string;\n}\n\nconst TimePicker = React.forwardRef<HTMLButtonElement, TimePickerProps>(\n (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n format = \"24\",\n minuteStep = 1,\n secondStep = 1,\n showSecond = false,\n disabled,\n placeholder = \"Select time\",\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(\n defaultValue,\n );\n const [open, setOpen] = React.useState(false);\n\n const value = controlledValue ?? internalValue;\n\n const hours =\n format === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n const minutes = Array.from(\n { length: 60 / minuteStep },\n (_, i) => i * minuteStep,\n );\n const seconds = Array.from(\n { length: 60 / secondStep },\n (_, i) => i * secondStep,\n );\n\n const getDisplayTime = (): string => {\n if (!value) return placeholder;\n\n let h = value.getHours();\n const m = value.getMinutes();\n const s = value.getSeconds();\n\n let period = \"\";\n if (format === \"12\") {\n period = h >= 12 ? \" PM\" : \" AM\";\n h = h % 12 || 12;\n }\n\n const timeStr = showSecond\n ? `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`\n : `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}`;\n\n return timeStr + period;\n };\n\n const handleTimeSelect = (\n type: \"hour\" | \"minute\" | \"second\",\n val: number,\n ) => {\n const newTime = value ? new Date(value) : new Date();\n\n if (type === \"hour\") {\n if (format === \"12\") {\n const isPM = newTime.getHours() >= 12;\n const hour24 = val === 12 ? (isPM ? 12 : 0) : val + (isPM ? 12 : 0);\n newTime.setHours(hour24);\n } else {\n newTime.setHours(val);\n }\n } else if (type === \"minute\") {\n newTime.setMinutes(val);\n } else if (type === \"second\") {\n newTime.setSeconds(val);\n }\n\n setInternalValue(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodToggle = () => {\n if (!value || format !== \"12\") return;\n\n const newTime = new Date(value);\n const currentHours = newTime.getHours();\n newTime.setHours((currentHours + 12) % 24);\n\n setInternalValue(newTime);\n onChange?.(newTime);\n };\n\n const getCurrentHour = (): number => {\n if (!value) return format === \"12\" ? 12 : 0;\n const h = value.getHours();\n return format === \"12\" ? h % 12 || 12 : h;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <Clock className=\"mr-2 h-4 w-4\" />\n {getDisplayTime()}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Hours */}\n <ScrollArea className=\"h-64 w-20\">\n <div className=\"p-1\">\n {hours.map((hour) => (\n <button\n key={hour}\n onClick={() => handleTimeSelect(\"hour\", hour)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n getCurrentHour() === hour\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(hour).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n\n {/* Minutes */}\n <ScrollArea className=\"h-64 w-20 border-l border-[var(--color-border)]\">\n <div className=\"p-1\">\n {minutes.map((minute) => (\n <button\n key={minute}\n onClick={() => handleTimeSelect(\"minute\", minute)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n value?.getMinutes() === minute\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(minute).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n\n {/* Seconds */}\n {showSecond && (\n <ScrollArea className=\"h-64 w-20 border-l border-[var(--color-border)]\">\n <div className=\"p-1\">\n {seconds.map((second) => (\n <button\n key={second}\n onClick={() => handleTimeSelect(\"second\", second)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded-md transition-colors text-center\",\n value?.getSeconds() === second\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n {String(second).padStart(2, \"0\")}\n </button>\n ))}\n </div>\n </ScrollArea>\n )}\n\n {/* AM/PM Toggle */}\n {format === \"12\" && (\n <div className=\"flex flex-col border-l border-[var(--color-border)] p-1\">\n <button\n onClick={handlePeriodToggle}\n className={cn(\n \"px-3 py-2 text-sm rounded-md transition-colors\",\n value && value.getHours() < 12\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n AM\n </button>\n <button\n onClick={handlePeriodToggle}\n className={cn(\n \"px-3 py-2 text-sm rounded-md transition-colors mt-1\",\n value && value.getHours() >= 12\n ? \"bg-[var(--color-primary)] text-white\"\n : \"hover:bg-[var(--color-bg-glass-hover)]\",\n )}\n >\n PM\n </button>\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n },\n);\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n presetColors?: string[];\n showInput?: boolean;\n disabled?: boolean;\n className?: string;\n}\n\nconst defaultPresetColors = [\n \"#f87171\",\n \"#fb923c\",\n \"#fbbf24\",\n \"#facc15\",\n \"#a3e635\",\n \"#4ade80\",\n \"#34d399\",\n \"#2dd4bf\",\n \"#22d3ee\",\n \"#38bdf8\",\n \"#60a5fa\",\n \"#818cf8\",\n \"#a78bfa\",\n \"#c084fc\",\n \"#e879f9\",\n \"#f472b6\",\n \"#fb7185\",\n \"#000000\",\n];\n\nconst ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value = \"#000000\",\n onChange,\n presetColors = defaultPresetColors,\n showInput = true,\n disabled = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(value);\n\n React.useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (color: string) => {\n setInternalValue(color);\n onChange?.(color);\n };\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"h-10 w-10 rounded-md border-2 border-[var(--color-border)] transition-all\",\n \"hover:border-[var(--color-border-strong)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n className,\n )}\n style={{ backgroundColor: internalValue }}\n />\n </PopoverTrigger>\n <PopoverContent className=\"w-64\">\n <div className=\"space-y-4\">\n {showInput && (\n <div className=\"flex items-center gap-2\">\n <Input\n value={internalValue}\n onChange={(e) => handleChange(e.target.value)}\n placeholder=\"#000000\"\n className=\"flex-1\"\n />\n <div\n className=\"h-10 w-10 rounded-md border border-[var(--color-border)]\"\n style={{ backgroundColor: internalValue }}\n />\n </div>\n )}\n\n <div className=\"grid grid-cols-6 gap-2\">\n {presetColors.map((color) => (\n <button\n key={color}\n type=\"button\"\n className={cn(\n \"h-8 w-8 rounded-md border border-[var(--color-border)] transition-all\",\n \"hover:scale-110 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)]\",\n \"flex items-center justify-center\",\n )}\n style={{ backgroundColor: color }}\n onClick={() => handleChange(color)}\n >\n {internalValue.toLowerCase() === color.toLowerCase() && (\n <Check className=\"h-4 w-4 text-white drop-shadow-md\" />\n )}\n </button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\nColorPicker.displayName = \"ColorPicker\";\n\nexport { ColorPicker };\n","import * as React from \"react\";\nimport { Star } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface RatingProps {\n value?: number;\n onChange?: (value: number) => void;\n max?: number;\n readonly?: boolean;\n disabled?: boolean;\n allowHalf?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n value = 0,\n onChange,\n max = 5,\n readonly = false,\n disabled = false,\n allowHalf = false,\n size = \"md\",\n className,\n },\n ref,\n ) => {\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n\n const sizeClasses = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n const handleClick = (index: number, isHalf: boolean) => {\n if (readonly || disabled) return;\n const newValue = isHalf ? index + 0.5 : index + 1;\n onChange?.(newValue);\n };\n\n const handleMouseEnter = (index: number, isHalf: boolean) => {\n if (readonly || disabled) return;\n const newValue = isHalf ? index + 0.5 : index + 1;\n setHoverValue(newValue);\n };\n\n const handleMouseLeave = () => {\n setHoverValue(null);\n };\n\n const displayValue = hoverValue ?? value;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1\",\n (readonly || disabled) && \"pointer-events-none\",\n disabled && \"opacity-50\",\n className,\n )}\n onMouseLeave={handleMouseLeave}\n >\n {Array.from({ length: max }).map((_, index) => {\n const isFilled = index < Math.floor(displayValue);\n const isHalfFilled =\n allowHalf &&\n index === Math.floor(displayValue) &&\n displayValue % 1 !== 0;\n\n return (\n <div key={index} className=\"relative inline-flex cursor-pointer\">\n {/* Half star support */}\n {allowHalf && (\n <div\n className=\"absolute inset-0 w-1/2 z-10\"\n onClick={() => handleClick(index, true)}\n onMouseEnter={() => handleMouseEnter(index, true)}\n />\n )}\n <div\n className=\"relative\"\n onClick={() => handleClick(index, false)}\n onMouseEnter={() => handleMouseEnter(index, false)}\n >\n <Star\n className={cn(\n sizeClasses[size],\n \"transition-all\",\n isFilled || isHalfFilled\n ? \"fill-[var(--color-primary)] text-[var(--color-primary)]\"\n : \"text-[var(--color-border-strong)]\",\n )}\n />\n {isHalfFilled && (\n <div className=\"absolute inset-0 overflow-hidden w-1/2\">\n <Star\n className={cn(\n sizeClasses[size],\n \"fill-[var(--color-primary)] text-[var(--color-primary)]\",\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\nRating.displayName = \"Rating\";\n\nexport { Rating };\n","import * as React from \"react\";\nimport { Upload as UploadIcon, X, FileIcon } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface UploadFile {\n uid: string;\n name: string;\n status: \"uploading\" | \"done\" | \"error\";\n url?: string;\n percent?: number;\n}\n\nexport interface UploadProps {\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxCount?: number;\n fileList?: UploadFile[];\n onChange?: (fileList: UploadFile[]) => void;\n onRemove?: (file: UploadFile) => void;\n beforeUpload?: (file: File) => boolean | Promise<boolean>;\n customRequest?: (file: File) => Promise<{ url: string }>;\n disabled?: boolean;\n listType?: \"text\" | \"picture\";\n className?: string;\n}\n\nconst Upload = React.forwardRef<HTMLDivElement, UploadProps>(\n (\n {\n accept,\n multiple = false,\n maxSize,\n maxCount,\n fileList = [],\n onChange,\n onRemove,\n beforeUpload,\n customRequest,\n disabled = false,\n listType = \"text\",\n className,\n },\n ref,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [files, setFiles] = React.useState<UploadFile[]>(fileList);\n\n React.useEffect(() => {\n setFiles(fileList);\n }, [fileList]);\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n\n for (const file of selectedFiles) {\n // Check max size\n if (maxSize && file.size > maxSize) {\n console.error(`File ${file.name} exceeds max size`);\n continue;\n }\n\n // Check max count\n if (maxCount && files.length >= maxCount) {\n console.error(\"Maximum file count reached\");\n break;\n }\n\n // Before upload hook\n if (beforeUpload) {\n const shouldUpload = await beforeUpload(file);\n if (!shouldUpload) continue;\n }\n\n const newFile: UploadFile = {\n uid: `${Date.now()}-${file.name}`,\n name: file.name,\n status: \"uploading\",\n percent: 0,\n };\n\n const newFiles = [...files, newFile];\n setFiles(newFiles);\n onChange?.(newFiles);\n\n // Simulate upload or use custom request\n try {\n if (customRequest) {\n const response = await customRequest(file);\n newFile.url = response.url;\n } else {\n // Simulate upload\n newFile.url = URL.createObjectURL(file);\n }\n newFile.status = \"done\";\n newFile.percent = 100;\n } catch (error) {\n newFile.status = \"error\";\n }\n\n const updatedFiles = newFiles.map((f) =>\n f.uid === newFile.uid ? newFile : f,\n );\n setFiles(updatedFiles);\n onChange?.(updatedFiles);\n }\n\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n };\n\n const handleRemove = (file: UploadFile) => {\n const newFiles = files.filter((f) => f.uid !== file.uid);\n setFiles(newFiles);\n onChange?.(newFiles);\n onRemove?.(file);\n };\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n <div\n onClick={handleClick}\n className={cn(\n \"border-2 border-dashed border-[var(--color-border)] rounded-lg p-6\",\n \"hover:border-[var(--color-primary)] transition-colors cursor-pointer\",\n \"flex flex-col items-center justify-center gap-2\",\n disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <UploadIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n <div className=\"text-sm text-[var(--color-text-muted)]\">\n Click to upload or drag and drop\n </div>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"hidden\"\n />\n </div>\n\n {files.length > 0 && (\n <div className=\"space-y-2\">\n {files.map((file) => (\n <div\n key={file.uid}\n className={cn(\n \"flex items-center gap-3 p-3 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)]\",\n )}\n >\n {listType === \"picture\" && file.url ? (\n <img\n src={file.url}\n alt={file.name}\n className=\"h-12 w-12 object-cover rounded\"\n />\n ) : (\n <FileIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n )}\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[var(--color-text)] truncate\">\n {file.name}\n </div>\n {file.status === \"uploading\" && (\n <div className=\"text-xs text-[var(--color-text-muted)]\">\n Uploading... {file.percent}%\n </div>\n )}\n {file.status === \"error\" && (\n <div className=\"text-xs text-red-500\">Upload failed</div>\n )}\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(file);\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nUpload.displayName = \"Upload\";\n\nexport { Upload };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\n\nexport interface AutoCompleteOption {\n value: string;\n label: string;\n}\n\nexport interface AutoCompleteProps {\n options: AutoCompleteOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onSelect?: (value: string, option: AutoCompleteOption) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst AutoComplete = React.forwardRef<HTMLInputElement, AutoCompleteProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSelect,\n placeholder,\n disabled,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = React.useMemo(() => {\n if (!value) return options;\n return options.filter((option) =>\n option.label.toLowerCase().includes(value.toLowerCase()),\n );\n }, [options, value]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleChange = (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n setOpen(true);\n setActiveIndex(0);\n };\n\n const handleSelect = (option: AutoCompleteOption) => {\n setInternalValue(option.value);\n onChange?.(option.value);\n onSelect?.(option.value, option);\n setOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open || filteredOptions.length === 0) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0,\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1,\n );\n break;\n case \"Enter\":\n e.preventDefault();\n if (filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n setOpen(false);\n break;\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative\", className)}>\n <Input\n ref={ref}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n />\n\n {open && filteredOptions.length > 0 && (\n <div\n className={cn(\n \"absolute z-50 w-full mt-1 max-h-60 overflow-auto rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n {filteredOptions.map((option, index) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors text-sm\",\n index === activeIndex\n ? \"bg-[var(--color-bg-glass-hover)] text-[var(--color-text)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n )}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nAutoComplete.displayName = \"AutoComplete\";\n\nexport { AutoComplete };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Textarea } from \"./textarea\";\n\nexport interface MentionOption {\n value: string;\n label: string;\n avatar?: string;\n}\n\nexport interface MentionsProps {\n options: MentionOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onSelect?: (option: MentionOption) => void;\n prefix?: string;\n placeholder?: string;\n disabled?: boolean;\n rows?: number;\n className?: string;\n}\n\nconst Mentions = React.forwardRef<HTMLTextAreaElement, MentionsProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSelect,\n prefix = \"@\",\n placeholder,\n disabled,\n rows = 3,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [mentionSearch, setMentionSearch] = React.useState(\"\");\n const [mentionPosition, setMentionPosition] = React.useState({\n top: 0,\n left: 0,\n });\n const [activeIndex, setActiveIndex] = React.useState(0);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = React.useMemo(() => {\n if (!mentionSearch) return options;\n return options.filter((option) =>\n option.label.toLowerCase().includes(mentionSearch.toLowerCase()),\n );\n }, [options, mentionSearch]);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n\n // Check for mention trigger\n const cursorPosition = e.target.selectionStart;\n const textBeforeCursor = newValue.slice(0, cursorPosition);\n const mentionMatch = textBeforeCursor.match(\n new RegExp(`${prefix}(\\\\w*)$`),\n );\n\n if (mentionMatch) {\n setMentionSearch(mentionMatch[1]);\n setOpen(true);\n setActiveIndex(0);\n } else {\n setOpen(false);\n }\n };\n\n const handleSelect = (option: MentionOption) => {\n if (!textareaRef.current) return;\n\n const cursorPosition = textareaRef.current.selectionStart;\n const textBeforeCursor = value.slice(0, cursorPosition);\n const textAfterCursor = value.slice(cursorPosition);\n\n const mentionMatch = textBeforeCursor.match(\n new RegExp(`${prefix}(\\\\w*)$`),\n );\n if (!mentionMatch) return;\n\n const beforeMention = textBeforeCursor.slice(0, -mentionMatch[0].length);\n const newValue = `${beforeMention}${prefix}${option.value} ${textAfterCursor}`;\n\n setInternalValue(newValue);\n onChange?.(newValue);\n onSelect?.(option);\n setOpen(false);\n\n // Set cursor position after mention\n setTimeout(() => {\n const newPosition =\n beforeMention.length + prefix.length + option.value.length + 1;\n textareaRef.current?.setSelectionRange(newPosition, newPosition);\n textareaRef.current?.focus();\n }, 0);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!open || filteredOptions.length === 0) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0,\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setActiveIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1,\n );\n break;\n case \"Enter\":\n if (filteredOptions[activeIndex]) {\n e.preventDefault();\n handleSelect(filteredOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setOpen(false);\n break;\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative\", className)}>\n <Textarea\n ref={(node) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n textareaRef.current = node;\n }}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n />\n\n {open && filteredOptions.length > 0 && (\n <div\n className={cn(\n \"absolute z-50 w-64 max-h-60 overflow-auto rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n style={{\n top: \"100%\",\n marginTop: \"4px\",\n }}\n >\n {filteredOptions.map((option, index) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors\",\n index === activeIndex\n ? \"bg-[var(--color-bg-glass-hover)] text-[var(--color-text)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n )}\n >\n {option.avatar && (\n <img\n src={option.avatar}\n alt={option.label}\n className=\"h-6 w-6 rounded-full\"\n />\n )}\n <div className=\"flex-1 text-sm\">{option.label}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n);\nMentions.displayName = \"Mentions\";\n\nexport { Mentions };\n","import * as React from \"react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\n\nexport interface CascaderOption {\n value: string;\n label: string;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps {\n options: CascaderOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[], selectedOptions: CascaderOption[]) => void;\n placeholder?: string;\n disabled?: boolean;\n changeOnSelect?: boolean;\n className?: string;\n}\n\nconst Cascader = React.forwardRef<HTMLDivElement, CascaderProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue = [],\n onChange,\n placeholder = \"Please select\",\n disabled,\n changeOnSelect = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] =\n React.useState<string[]>(defaultValue);\n const [open, setOpen] = React.useState(false);\n const [activeMenus, setActiveMenus] = React.useState<CascaderOption[][]>([\n options,\n ]);\n\n const value = controlledValue ?? internalValue;\n\n const getSelectedOptions = (vals: string[]): CascaderOption[] => {\n const result: CascaderOption[] = [];\n let currentOptions = options;\n\n for (const val of vals) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (!option) break;\n result.push(option);\n currentOptions = option.children || [];\n }\n\n return result;\n };\n\n const handleSelect = (option: CascaderOption, level: number) => {\n if (option.disabled) return;\n\n const newValue = [...value.slice(0, level), option.value];\n\n if (option.children && option.children.length > 0) {\n setActiveMenus([...activeMenus.slice(0, level + 1), option.children]);\n\n if (changeOnSelect) {\n setInternalValue(newValue);\n onChange?.(newValue, getSelectedOptions(newValue));\n }\n } else {\n setInternalValue(newValue);\n onChange?.(newValue, getSelectedOptions(newValue));\n setOpen(false);\n setActiveMenus([options]);\n }\n };\n\n const displayLabel = React.useMemo(() => {\n const selectedOptions = getSelectedOptions(value);\n return selectedOptions.length > 0\n ? selectedOptions.map((opt) => opt.label).join(\" / \")\n : placeholder;\n }, [value, options, placeholder]);\n\n return (\n <div ref={ref} className={cn(\"\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-between\",\n !value.length && \"text-[var(--color-text-muted)]\",\n )}\n >\n <span className=\"truncate\">{displayLabel}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {activeMenus.map((menu, level) => (\n <div\n key={level}\n className={cn(\n \"w-40 max-h-64 overflow-y-auto\",\n level > 0 && \"border-l border-[var(--color-border)]\",\n )}\n >\n {menu.map((option) => {\n const isSelected = value[level] === option.value;\n const hasChildren =\n option.children && option.children.length > 0;\n\n return (\n <div\n key={option.value}\n onClick={() => handleSelect(option, level)}\n className={cn(\n \"flex items-center justify-between px-3 py-2 cursor-pointer transition-colors text-sm\",\n isSelected\n ? \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n option.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <span className=\"truncate\">{option.label}</span>\n {hasChildren && (\n <ChevronRight className=\"h-4 w-4 shrink-0 ml-2\" />\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\nCascader.displayName = \"Cascader\";\n\nexport { Cascader };\n","import * as React from \"react\";\nimport { ChevronRight, ChevronLeft } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Checkbox } from \"./checkbox\";\nimport { Input } from \"./input\";\n\nexport interface TransferItem {\n key: string;\n title: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface TransferProps {\n dataSource: TransferItem[];\n targetKeys?: string[];\n selectedKeys?: string[];\n onChange?: (\n targetKeys: string[],\n direction: \"left\" | \"right\",\n moveKeys: string[],\n ) => void;\n onSelectChange?: (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[],\n ) => void;\n titles?: [string, string];\n showSearch?: boolean;\n className?: string;\n}\n\nconst Transfer = React.forwardRef<HTMLDivElement, TransferProps>(\n (\n {\n dataSource,\n targetKeys = [],\n selectedKeys = [],\n onChange,\n onSelectChange,\n titles = [\"Source\", \"Target\"],\n showSearch = false,\n className,\n },\n ref,\n ) => {\n const [leftSelected, setLeftSelected] = React.useState<string[]>([]);\n const [rightSelected, setRightSelected] = React.useState<string[]>([]);\n const [leftSearch, setLeftSearch] = React.useState(\"\");\n const [rightSearch, setRightSearch] = React.useState(\"\");\n\n const leftDataSource = dataSource.filter(\n (item) => !targetKeys.includes(item.key),\n );\n const rightDataSource = dataSource.filter((item) =>\n targetKeys.includes(item.key),\n );\n\n const filteredLeftData = leftDataSource.filter((item) =>\n item.title.toLowerCase().includes(leftSearch.toLowerCase()),\n );\n const filteredRightData = rightDataSource.filter((item) =>\n item.title.toLowerCase().includes(rightSearch.toLowerCase()),\n );\n\n const handleLeftCheck = (key: string, checked: boolean) => {\n const newSelected = checked\n ? [...leftSelected, key]\n : leftSelected.filter((k) => k !== key);\n setLeftSelected(newSelected);\n onSelectChange?.(newSelected, rightSelected);\n };\n\n const handleRightCheck = (key: string, checked: boolean) => {\n const newSelected = checked\n ? [...rightSelected, key]\n : rightSelected.filter((k) => k !== key);\n setRightSelected(newSelected);\n onSelectChange?.(leftSelected, newSelected);\n };\n\n const handleMoveToRight = () => {\n const newTargetKeys = [...targetKeys, ...leftSelected];\n onChange?.(newTargetKeys, \"right\", leftSelected);\n setLeftSelected([]);\n };\n\n const handleMoveToLeft = () => {\n const newTargetKeys = targetKeys.filter(\n (key) => !rightSelected.includes(key),\n );\n onChange?.(newTargetKeys, \"left\", rightSelected);\n setRightSelected([]);\n };\n\n const renderList = (\n data: TransferItem[],\n selected: string[],\n onCheck: (key: string, checked: boolean) => void,\n search: string,\n onSearchChange: (value: string) => void,\n title: string,\n ) => (\n <div className=\"flex flex-col w-64 h-80 border border-[var(--color-border)] rounded-lg bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\">\n <div className=\"p-3 border-b border-[var(--color-border)]\">\n <div className=\"text-sm font-medium text-[var(--color-text)] mb-2\">\n {title}\n </div>\n {showSearch && (\n <Input\n placeholder=\"Search\"\n value={search}\n onChange={(e) => onSearchChange(e.target.value)}\n size=\"sm\"\n />\n )}\n </div>\n <div className=\"flex-1 overflow-y-auto p-2\">\n {data.map((item) => (\n <label\n key={item.key}\n className={cn(\n \"flex items-center gap-3 p-2 rounded-md cursor-pointer transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n item.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n <Checkbox\n checked={selected.includes(item.key)}\n onCheckedChange={(checked) =>\n onCheck(item.key, checked as boolean)\n }\n disabled={item.disabled}\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[var(--color-text)] truncate\">\n {item.title}\n </div>\n {item.description && (\n <div className=\"text-xs text-[var(--color-text-muted)] truncate\">\n {item.description}\n </div>\n )}\n </div>\n </label>\n ))}\n </div>\n </div>\n );\n\n return (\n <div ref={ref} className={cn(\"flex items-center gap-4\", className)}>\n {renderList(\n filteredLeftData,\n leftSelected,\n handleLeftCheck,\n leftSearch,\n setLeftSearch,\n titles[0],\n )}\n\n <div className=\"flex flex-col gap-2\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={handleMoveToRight}\n disabled={leftSelected.length === 0}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={handleMoveToLeft}\n disabled={rightSelected.length === 0}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {renderList(\n filteredRightData,\n rightSelected,\n handleRightCheck,\n rightSearch,\n setRightSearch,\n titles[1],\n )}\n </div>\n );\n },\n);\nTransfer.displayName = \"Transfer\";\n\nexport { Transfer };\n","import * as React from \"react\";\nimport { Check, ChevronDown, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface TreeSelectNode {\n value: string;\n label: string;\n children?: TreeSelectNode[];\n disabled?: boolean;\n}\n\nexport interface TreeSelectProps {\n treeData: TreeSelectNode[];\n value?: string | string[];\n defaultValue?: string | string[];\n onChange?: (\n value: string | string[],\n selectedNodes: TreeSelectNode[],\n ) => void;\n multiple?: boolean;\n placeholder?: string;\n disabled?: boolean;\n treeCheckable?: boolean;\n className?: string;\n}\n\nconst TreeSelect = React.forwardRef<HTMLButtonElement, TreeSelectProps>(\n (\n {\n treeData,\n value: controlledValue,\n defaultValue,\n onChange,\n multiple = false,\n placeholder = \"Please select\",\n disabled,\n treeCheckable = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<string | string[]>(\n defaultValue ?? (multiple ? [] : \"\"),\n );\n const [open, setOpen] = React.useState(false);\n const [expandedKeys, setExpandedKeys] = React.useState<string[]>([]);\n\n const value = controlledValue ?? internalValue;\n\n const flattenTree = (nodes: TreeSelectNode[]): TreeSelectNode[] => {\n const result: TreeSelectNode[] = [];\n const traverse = (node: TreeSelectNode) => {\n result.push(node);\n if (node.children) {\n node.children.forEach(traverse);\n }\n };\n nodes.forEach(traverse);\n return result;\n };\n\n const findNodeByValue = (val: string): TreeSelectNode | undefined => {\n return flattenTree(treeData).find((node) => node.value === val);\n };\n\n const getSelectedNodes = (): TreeSelectNode[] => {\n if (Array.isArray(value)) {\n return value.map(findNodeByValue).filter(Boolean) as TreeSelectNode[];\n }\n const node = findNodeByValue(value);\n return node ? [node] : [];\n };\n\n const getDisplayText = (): string => {\n const selectedNodes = getSelectedNodes();\n if (selectedNodes.length === 0) return placeholder;\n return selectedNodes.map((node) => node.label).join(\", \");\n };\n\n const handleSelect = (node: TreeSelectNode) => {\n if (node.disabled) return;\n\n if (multiple) {\n const currentValues = Array.isArray(value) ? value : [];\n const newValues = currentValues.includes(node.value)\n ? currentValues.filter((v) => v !== node.value)\n : [...currentValues, node.value];\n setInternalValue(newValues);\n onChange?.(newValues, getSelectedNodes());\n } else {\n setInternalValue(node.value);\n onChange?.(node.value, [node]);\n setOpen(false);\n }\n };\n\n const handleExpand = (nodeValue: string) => {\n setExpandedKeys((prev) =>\n prev.includes(nodeValue)\n ? prev.filter((key) => key !== nodeValue)\n : [...prev, nodeValue],\n );\n };\n\n const isSelected = (nodeValue: string): boolean => {\n return Array.isArray(value)\n ? value.includes(nodeValue)\n : value === nodeValue;\n };\n\n const renderTreeNode = (\n node: TreeSelectNode,\n level: number = 0,\n ): React.ReactNode => {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expandedKeys.includes(node.value);\n const selected = isSelected(node.value);\n\n return (\n <div key={node.value}>\n <div\n className={cn(\n \"flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer transition-colors text-sm\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n selected &&\n \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\",\n node.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n style={{ paddingLeft: `${level * 20 + 8}px` }}\n >\n {hasChildren ? (\n <button\n onClick={() => handleExpand(node.value)}\n className=\"shrink-0 p-0.5\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </button>\n ) : (\n <span className=\"w-5\" />\n )}\n\n <div\n onClick={() => handleSelect(node)}\n className=\"flex items-center justify-between flex-1\"\n >\n <span>{node.label}</span>\n {selected && <Check className=\"h-4 w-4\" />}\n </div>\n </div>\n\n {hasChildren && isExpanded && (\n <div>\n {node.children!.map((child) => renderTreeNode(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-between\",\n !getSelectedNodes().length && \"text-[var(--color-text-muted)]\",\n className,\n )}\n >\n <span className=\"truncate\">{getDisplayText()}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-0\" align=\"start\">\n <ScrollArea className=\"h-64\">\n <div className=\"p-2\">\n {treeData.map((node) => renderTreeNode(node))}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n );\n },\n);\nTreeSelect.displayName = \"TreeSelect\";\n\nexport { TreeSelect };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n AlertCircle,\n CheckCircle2,\n Info,\n AlertTriangle,\n X,\n} from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 backdrop-blur-[var(--blur-glass)] transition-all duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n info: [\n \"bg-blue-500/10 border-blue-500/30\",\n \"text-blue-200\",\n \"[&>svg]:text-blue-400\",\n ],\n success: [\n \"bg-emerald-500/10 border-emerald-500/30\",\n \"text-emerald-200\",\n \"[&>svg]:text-emerald-400\",\n ],\n warning: [\n \"bg-amber-500/10 border-amber-500/30\",\n \"text-amber-200\",\n \"[&>svg]:text-amber-400\",\n ],\n error: [\n \"bg-red-500/10 border-red-500/30\",\n \"text-red-200\",\n \"[&>svg]:text-red-400\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst iconMap = {\n default: Info,\n info: Info,\n success: CheckCircle2,\n warning: AlertTriangle,\n error: AlertCircle,\n};\n\nexport interface AlertProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n title?: string;\n icon?: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"default\",\n title,\n icon,\n dismissible,\n onDismiss,\n children,\n ...props\n },\n ref,\n ) => {\n const [dismissed, setDismissed] = React.useState(false);\n\n const handleDismiss = () => {\n setDismissed(true);\n onDismiss?.();\n };\n\n if (dismissed) return null;\n\n const Icon = iconMap[variant || \"default\"];\n const showIcon = icon !== null;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex items-start gap-3\">\n {showIcon && (\n <div className=\"mt-0.5 shrink-0\">\n {icon || <Icon className=\"h-5 w-5\" />}\n </div>\n )}\n <div className=\"flex-1 space-y-1\">\n {title && (\n <h5 className=\"font-semibold leading-none tracking-tight\">\n {title}\n </h5>\n )}\n {children && (\n <div className=\"text-sm opacity-90 [&_p]:leading-relaxed\">\n {children}\n </div>\n )}\n </div>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"shrink-0 rounded-md p-1 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 focus:ring-offset-[var(--color-bg)]\"\n aria-label=\"Dismiss alert\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm opacity-90 [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cn } from \"../utils\";\n\nexport interface ProgressProps extends React.ComponentPropsWithoutRef<\n typeof ProgressPrimitive.Root\n> {\n label?: string;\n showValue?: boolean;\n variant?: \"default\" | \"gradient\";\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(\n (\n { className, value = 0, label, showValue, variant = \"default\", ...props },\n ref,\n ) => {\n const progressValue = Math.min(Math.max(value ?? 0, 0), 100);\n\n return (\n <div className=\"w-full space-y-2\">\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <span className=\"text-sm font-medium text-[var(--color-text)]\">\n {label}\n </span>\n )}\n {showValue && (\n <span className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {progressValue}%\n </span>\n )}\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-[var(--color-bg-input)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n \"h-full w-full flex-1 transition-all duration-300 ease-out\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-primary)]\",\n )}\n style={{ transform: `translateX(-${100 - progressValue}%)` }}\n />\n </ProgressPrimitive.Root>\n </div>\n );\n },\n);\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"rect\" | \"circle\" | \"text\" | \"card\";\n lines?: number;\n animated?: boolean;\n width?: string | number;\n height?: string | number;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"rect\",\n lines = 3,\n animated = true,\n width,\n height,\n style,\n ...props\n },\n ref,\n ) => {\n const baseStyles = cn(\n \"bg-white/8 rounded-md\",\n animated && \"animate-pulse animate-shimmer\",\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div className={cn(\"space-y-2\", className)} ref={ref} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={baseStyles}\n style={{\n height: \"0.75rem\",\n width: i === lines - 1 ? \"80%\" : \"100%\",\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n baseStyles,\n variant === \"circle\" && \"rounded-full\",\n variant === \"card\" && \"h-32 w-full\",\n className,\n )}\n style={{\n width,\n height: variant === \"text\" ? \"0.75rem\" : height,\n ...style,\n }}\n data-slot=\"skeleton\"\n {...props}\n />\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-2 border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n xl: \"h-12 w-12\",\n },\n variant: {\n default: \"text-[var(--color-text)]\",\n primary: \"text-[var(--color-primary)]\",\n secondary: \"text-[var(--color-text-secondary)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n },\n);\n\nexport interface SpinnerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(spinnerVariants({ size, variant }), className)}\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n },\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };\n","import { Toaster as Sonner, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Sonner\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-[var(--color-bg-secondary)] group-[.toaster]:backdrop-blur-[var(--blur-heavy)] group-[.toaster]:text-[var(--color-text)] group-[.toaster]:border-[var(--color-border)] group-[.toaster]:shadow-[var(--shadow-elevated)] group-[.toaster]:rounded-xl\",\n description: \"group-[.toast]:text-[var(--color-text-muted)]\",\n actionButton:\n \"group-[.toast]:bg-[var(--color-primary)] group-[.toast]:text-white group-[.toast]:rounded-md\",\n cancelButton:\n \"group-[.toast]:bg-[var(--color-bg-glass)] group-[.toast]:text-[var(--color-text-muted)] group-[.toast]:rounded-md\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster, toast };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\n className,\n )}\n {...props}\n >\n {icon && (\n <div className=\"mb-4 text-[var(--color-text-muted)] opacity-50\">\n {icon}\n </div>\n )}\n <h3 className=\"text-lg font-semibold text-[var(--color-text)] mb-2\">\n {title}\n </h3>\n {description && (\n <p className=\"text-sm text-[var(--color-text-muted)] max-w-sm mb-6\">\n {description}\n </p>\n )}\n {action && <div>{action}</div>}\n </div>\n );\n },\n);\nEmptyState.displayName = \"EmptyState\";\n\nexport { EmptyState };\n","import * as React from \"react\";\nimport { CheckCircle2, XCircle, AlertCircle, Info } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface ResultProps {\n status?: \"success\" | \"error\" | \"warning\" | \"info\";\n title: string;\n subtitle?: string;\n icon?: React.ReactNode;\n extra?: React.ReactNode;\n className?: string;\n}\n\nconst Result = React.forwardRef<HTMLDivElement, ResultProps>(\n ({ status = \"info\", title, subtitle, icon, extra, className }, ref) => {\n const defaultIcons = {\n success: <CheckCircle2 className=\"h-16 w-16 text-green-500\" />,\n error: <XCircle className=\"h-16 w-16 text-red-500\" />,\n warning: <AlertCircle className=\"h-16 w-16 text-yellow-500\" />,\n info: <Info className=\"h-16 w-16 text-[var(--color-primary)]\" />,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center py-12 px-4\",\n className,\n )}\n >\n <div className=\"mb-6\">{icon || defaultIcons[status]}</div>\n <h3 className=\"text-2xl font-semibold text-[var(--color-text)] mb-2\">\n {title}\n </h3>\n {subtitle && (\n <p className=\"text-[var(--color-text-secondary)] max-w-md mb-6\">\n {subtitle}\n </p>\n )}\n {extra && <div className=\"flex gap-3\">{extra}</div>}\n </div>\n );\n },\n);\nResult.displayName = \"Result\";\n\nexport { Result };\n","import * as React from \"react\";\nimport { X, CheckCircle2, XCircle, AlertCircle, Info } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface NotificationProps {\n id: string;\n type?: \"success\" | \"error\" | \"warning\" | \"info\";\n title: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n}\n\nconst Notification = React.forwardRef<HTMLDivElement, NotificationProps>(\n ({ id, type = \"info\", title, description, onClose }, ref) => {\n const icons = {\n success: <CheckCircle2 className=\"h-5 w-5 text-green-500\" />,\n error: <XCircle className=\"h-5 w-5 text-red-500\" />,\n warning: <AlertCircle className=\"h-5 w-5 text-yellow-500\" />,\n info: <Info className=\"h-5 w-5 text-[var(--color-primary)]\" />,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex gap-3 p-4 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in slide-in-from-right-full\",\n )}\n >\n <div className=\"shrink-0\">{icons[type]}</div>\n <div className=\"flex-1 space-y-1\">\n <div className=\"text-sm font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n {description && (\n <div className=\"text-sm text-[var(--color-text-secondary)]\">\n {description}\n </div>\n )}\n </div>\n <button\n onClick={onClose}\n className=\"shrink-0 text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n );\n },\n);\nNotification.displayName = \"Notification\";\n\n// Notification Manager\ntype NotificationManagerProps = {\n notifications: NotificationProps[];\n onRemove: (id: string) => void;\n};\n\nexport const NotificationManager: React.FC<NotificationManagerProps> = ({\n notifications,\n onRemove,\n}) => {\n return (\n <div className=\"fixed top-4 right-4 z-[100] flex flex-col gap-3 max-w-md\">\n {notifications.map((notification) => (\n <Notification\n key={notification.id}\n {...notification}\n onClose={() => onRemove(notification.id)}\n />\n ))}\n </div>\n );\n};\n\nexport { Notification };\n","import * as React from \"react\";\nimport {\n CheckCircle2,\n XCircle,\n AlertCircle,\n Info,\n Loader2,\n X,\n} from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport type MessageType = \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\";\n\nexport interface MessageProps {\n type?: MessageType;\n content: React.ReactNode;\n duration?: number;\n onClose?: () => void;\n icon?: React.ReactNode;\n className?: string;\n}\n\nconst Message = React.forwardRef<HTMLDivElement, MessageProps>(\n (\n { type = \"info\", content, duration = 3000, onClose, icon, className },\n ref,\n ) => {\n React.useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n onClose?.();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const icons = {\n success: <CheckCircle2 className=\"h-5 w-5 text-green-500\" />,\n error: <XCircle className=\"h-5 w-5 text-red-500\" />,\n warning: <AlertCircle className=\"h-5 w-5 text-yellow-500\" />,\n info: <Info className=\"h-5 w-5 text-blue-500\" />,\n loading: (\n <Loader2 className=\"h-5 w-5 text-[var(--color-primary)] animate-spin\" />\n ),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-3 px-4 py-3 rounded-lg\",\n \"bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in fade-in slide-in-from-top-4\",\n className,\n )}\n >\n {icon || icons[type]}\n <span className=\"flex-1 text-sm text-[var(--color-text)]\">\n {content}\n </span>\n {onClose && (\n <button\n onClick={onClose}\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n },\n);\nMessage.displayName = \"Message\";\n\n// Message Manager\ninterface MessageInstance {\n id: string;\n type: MessageType;\n content: React.ReactNode;\n duration?: number;\n}\n\nlet messageContainer: HTMLDivElement | null = null;\nlet messageInstances: MessageInstance[] = [];\nlet updateCallback: (() => void) | null = null;\n\nconst getContainer = (): HTMLDivElement => {\n if (!messageContainer) {\n messageContainer = document.createElement(\"div\");\n messageContainer.className =\n \"fixed top-4 left-1/2 -translate-x-1/2 z-[10000] flex flex-col gap-2\";\n document.body.appendChild(messageContainer);\n }\n return messageContainer;\n};\n\nconst show = (type: MessageType, content: React.ReactNode, duration = 3000) => {\n const id = Math.random().toString(36).substring(7);\n const instance: MessageInstance = { id, type, content, duration };\n messageInstances.push(instance);\n updateCallback?.();\n\n if (duration > 0) {\n setTimeout(() => {\n close(id);\n }, duration);\n }\n\n return id;\n};\n\nconst close = (id: string) => {\n messageInstances = messageInstances.filter((msg) => msg.id !== id);\n updateCallback?.();\n};\n\nexport const MessageManager = {\n success: (content: React.ReactNode, duration?: number) =>\n show(\"success\", content, duration),\n error: (content: React.ReactNode, duration?: number) =>\n show(\"error\", content, duration),\n warning: (content: React.ReactNode, duration?: number) =>\n show(\"warning\", content, duration),\n info: (content: React.ReactNode, duration?: number) =>\n show(\"info\", content, duration),\n loading: (content: React.ReactNode, duration?: number) =>\n show(\"loading\", content, duration),\n destroy: (id?: string) => {\n if (id) {\n close(id);\n } else {\n messageInstances = [];\n updateCallback?.();\n }\n },\n};\n\nexport const MessageContainer: React.FC = () => {\n const [messages, setMessages] = React.useState<MessageInstance[]>([]);\n\n React.useEffect(() => {\n updateCallback = () => {\n setMessages([...messageInstances]);\n };\n return () => {\n updateCallback = null;\n };\n }, []);\n\n if (messages.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 left-1/2 -translate-x-1/2 z-[10000] flex flex-col gap-2\">\n {messages.map((msg) => (\n <Message\n key={msg.id}\n type={msg.type}\n content={msg.content}\n duration={0}\n onClose={() => MessageManager.destroy(msg.id)}\n />\n ))}\n </div>\n );\n};\n\nexport { Message };\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-[var(--color-border)] p-6 shadow-[var(--shadow-elevated)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"rounded-xl\",\n \"duration-200\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-md opacity-70 ring-offset-[var(--color-bg)] transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { cn } from \"../utils\";\nimport { buttonVariants } from \"./button\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-[var(--color-border)] p-6 shadow-[var(--shadow-elevated)] duration-200\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"rounded-xl\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-[var(--color-text)]\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant: \"gradient\" }), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../utils\";\n\nconst Sheet = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n);\nSheet.displayName = \"Sheet\";\n\nconst SheetTrigger = DrawerPrimitive.Trigger;\n\nconst SheetPortal = DrawerPrimitive.Portal;\n\nconst SheetClose = DrawerPrimitive.Close;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-xl border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n className,\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-[var(--color-border)]\" />\n {children}\n </DrawerPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = \"SheetContent\";\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nSheetTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\ntype DrawerDirection = \"left\" | \"right\" | \"top\" | \"bottom\";\n\ninterface DrawerContextType {\n direction?: DrawerDirection;\n}\n\nconst DrawerContext = React.createContext<DrawerContextType>({});\n\ninterface DrawerProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n shouldScaleBackground?: boolean;\n direction?: DrawerDirection;\n modal?: boolean;\n dismissible?: boolean;\n onDrag?: (event: React.PointerEvent<HTMLDivElement>, percentageDragged: number) => void;\n onRelease?: (event: React.PointerEvent<HTMLDivElement>, open: boolean) => void;\n children?: React.ReactNode;\n}\n\nconst Drawer = ({\n shouldScaleBackground = true,\n direction = \"right\",\n ...props\n}: DrawerProps) => (\n <DrawerContext.Provider value={{ direction }}>\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n direction={direction === \"bottom\" || direction === \"top\" ? direction : \"right\"}\n {...props}\n />\n </DrawerContext.Provider>\n);\nDrawer.displayName = \"Drawer\";\n\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerClose = DrawerPrimitive.Close;\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n className,\n )}\n {...props}\n />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst drawerContentVariants = cva(\n \"fixed z-50 flex flex-col border border-[var(--color-border)] bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)] shadow-[var(--shadow-elevated)]\",\n {\n variants: {\n direction: {\n left: \"inset-y-0 left-0 h-full w-[378px] border-r rounded-r-xl\",\n right: \"inset-y-0 right-0 h-full w-[378px] border-l rounded-l-xl\",\n top: \"inset-x-0 top-0 w-full h-[378px] border-b rounded-b-xl\",\n bottom: \"inset-x-0 bottom-0 w-full h-auto max-h-[80vh] border-t rounded-t-xl\",\n },\n },\n defaultVariants: {\n direction: \"right\",\n },\n },\n);\n\ninterface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>,\n VariantProps<typeof drawerContentVariants> {}\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n DrawerContentProps\n>(({ className, children, direction, ...props }, ref) => {\n const context = React.useContext(DrawerContext);\n const finalDirection = direction || context.direction || \"right\";\n\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(drawerContentVariants({ direction: finalDirection }), className)}\n {...props}\n >\n {finalDirection === \"bottom\" && (\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-[var(--color-border)]\" />\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n});\nDrawerContent.displayName = \"DrawerContent\";\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-2 p-6 border-b border-[var(--color-border)]\", className)}\n {...props}\n />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-6 border-t border-[var(--color-border)]\", className)}\n {...props}\n />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n width?: string | number;\n centered?: boolean;\n closable?: boolean;\n maskClosable?: boolean;\n className?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open = false,\n onOpenChange,\n title,\n children,\n footer,\n width = 520,\n centered = true,\n closable = true,\n maskClosable = true,\n className,\n },\n ref,\n ) => {\n React.useEffect(() => {\n if (open) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [open]);\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onOpenChange?.(false);\n }\n };\n\n const handleClose = () => {\n onOpenChange?.(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {/* Mask */}\n <div\n role=\"presentation\"\n className={cn(\n \"fixed inset-0 z-50 bg-[var(--color-bg-overlay)] backdrop-blur-sm\",\n \"animate-in fade-in\",\n )}\n onClick={handleMaskClick}\n />\n\n {/* Modal */}\n <div\n className={cn(\n \"fixed z-50\",\n centered\n ? \"left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n : \"left-1/2 top-[100px] -translate-x-1/2\",\n \"animate-in fade-in zoom-in-95\",\n )}\n >\n <div\n ref={ref}\n className={cn(\n \"flex flex-col rounded-xl border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n className,\n )}\n style={{ width: typeof width === \"number\" ? `${width}px` : width }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n {(title || closable) && (\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-[var(--color-border)]\">\n {title && (\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </h3>\n )}\n {closable && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleClose}\n className=\"ml-auto\"\n aria-label=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-6 py-4 max-h-[70vh] overflow-y-auto\">\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-[var(--color-border)]\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </>\n );\n },\n);\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { cn } from \"../utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"px-3 py-1.5 text-sm text-[var(--color-text)]\",\n \"shadow-[var(--shadow-glass)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-lg\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends React.ComponentPropsWithoutRef<\n typeof Dialog\n> {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-text-muted)] [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div\n className=\"flex items-center border-b border-[var(--color-border)] px-3\"\n cmdk-input-wrapper=\"\"\n >\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none\",\n \"placeholder:text-[var(--color-text-placeholder)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm text-[var(--color-text-muted)]\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-[var(--color-text)]\",\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"aria-selected:bg-[var(--color-bg-glass-hover)] aria-selected:text-[var(--color-text)]\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-11 items-center justify-center rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)] p-1\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-4 py-2\",\n \"text-sm font-medium text-[var(--color-text-secondary)]\",\n \"ring-offset-[var(--color-bg)] transition-all\",\n \"hover:text-[var(--color-text)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=active]:bg-[var(--color-bg-elevated)] data-[state=active]:text-[var(--color-text)] data-[state=active]:shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-4 ring-offset-[var(--color-bg)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-[var(--color-border)]\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium text-[var(--color-text)]\",\n \"transition-all hover:text-[var(--color-text-secondary)]\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div\n className={cn(\"pb-4 pt-0 text-[var(--color-text-secondary)]\", className)}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst ContextMenu = ContextMenuPrimitive.Root;\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)] focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)] focus:bg-[var(--color-bg-glass-hover)] focus:text-[var(--color-text)] focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-[var(--color-bg-glass)] data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n);\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n className,\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90\",\n \"md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-[var(--color-border)] shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n};\n","import * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst MenubarMenu: typeof MenubarPrimitive.Menu = MenubarPrimitive.Menu;\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-11 items-center space-x-1 rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n />\n));\nMenubar.displayName = MenubarPrimitive.Root.displayName;\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-3 py-1.5 text-sm font-medium outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n className,\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=open]:bg-[var(--color-bg-glass-hover)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref,\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden rounded-lg border border-[var(--color-border)] p-1\",\n \"bg-[var(--color-popover)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-[var(--shadow-glass)]\",\n \"data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n ),\n);\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4 text-[var(--color-primary)]\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"focus:bg-[var(--color-bg-glass-hover)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-[var(--color-primary)] text-[var(--color-primary)]\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-[var(--color-text)]\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-[var(--color-border)]\", className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n );\n};\nMenubarShortcut.displayName = \"MenubarShortcut\";\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n};\n","import * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode;\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean;\n }\n>(({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n \"transition-colors hover:text-[var(--color-text)]\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-[var(--color-text)]\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { buttonVariants, type ButtonProps } from \"./button\";\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n));\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">;\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"gradient\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface AnchorLink {\n key: string;\n href: string;\n title: string;\n children?: AnchorLink[];\n}\n\nexport interface AnchorProps {\n links: AnchorLink[];\n activeLink?: string;\n onChange?: (currentActiveLink: string) => void;\n offsetTop?: number;\n targetOffset?: number;\n className?: string;\n}\n\nconst Anchor = React.forwardRef<HTMLDivElement, AnchorProps>(\n (\n {\n links,\n activeLink: controlledActiveLink,\n onChange,\n offsetTop = 0,\n targetOffset,\n className,\n },\n ref,\n ) => {\n const [internalActiveLink, setInternalActiveLink] =\n React.useState<string>(\"\");\n const activeLink = controlledActiveLink ?? internalActiveLink;\n\n React.useEffect(() => {\n const handleScroll = () => {\n const scrollPosition =\n window.scrollY + (targetOffset ?? window.innerHeight / 2);\n\n // Find all anchor targets\n const sections = links.flatMap((link) => {\n const main = {\n href: link.href,\n el: document.querySelector(link.href),\n };\n const children =\n link.children?.map((child) => ({\n href: child.href,\n el: document.querySelector(child.href),\n })) || [];\n return [main, ...children];\n });\n\n // Find the current section\n let current = \"\";\n for (const section of sections) {\n if (section.el) {\n const rect = section.el.getBoundingClientRect();\n const top = rect.top + window.scrollY;\n if (top <= scrollPosition) {\n current = section.href;\n }\n }\n }\n\n if (current && current !== activeLink) {\n setInternalActiveLink(current);\n onChange?.(current);\n }\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n handleScroll(); // Initial check\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [links, activeLink, onChange, targetOffset]);\n\n const handleClick = (\n e: React.MouseEvent<HTMLAnchorElement>,\n href: string,\n ) => {\n e.preventDefault();\n const target = document.querySelector(href);\n if (target) {\n const top =\n target.getBoundingClientRect().top + window.scrollY - offsetTop;\n window.scrollTo({ top, behavior: \"smooth\" });\n setInternalActiveLink(href);\n onChange?.(href);\n }\n };\n\n const renderLink = (link: AnchorLink, level: number = 0) => {\n const isActive = activeLink === link.href;\n\n return (\n <div key={link.key}>\n <a\n href={link.href}\n onClick={(e) => handleClick(e, link.href)}\n className={cn(\n \"block py-1 text-sm transition-colors border-l-2\",\n level === 0 ? \"pl-4\" : \"pl-8\",\n isActive\n ? \"border-[var(--color-primary)] text-[var(--color-primary)] font-medium\"\n : \"border-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:border-[var(--color-border-strong)]\",\n )}\n >\n {link.title}\n </a>\n {link.children && link.children.length > 0 && (\n <div className=\"ml-2\">\n {link.children.map((child) => renderLink(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-1\", className)}\n style={{ position: \"sticky\", top: offsetTop }}\n >\n {links.map((link) => renderLink(link))}\n </div>\n );\n },\n);\nAnchor.displayName = \"Anchor\";\n\nexport { Anchor };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst stepsVariants = cva(\"flex w-full\", {\n variants: {\n direction: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n direction: \"horizontal\",\n size: \"md\",\n },\n});\n\nexport interface StepItem {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n subTitle?: string;\n}\n\nexport interface StepsProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof stepsVariants> {\n current?: number;\n status?: \"wait\" | \"process\" | \"finish\" | \"error\";\n items: StepItem[];\n onStepChange?: (current: number) => void;\n type?: \"default\" | \"navigation\" | \"inline\";\n}\n\nconst Steps = React.forwardRef<HTMLDivElement, StepsProps>(\n (\n {\n className,\n direction = \"horizontal\",\n size = \"md\",\n current = 0,\n status = \"process\",\n items,\n onStepChange,\n type = \"default\",\n ...props\n },\n ref,\n ) => {\n const sizeMap = {\n sm: {\n circle: \"h-6 w-6 text-xs\",\n title: \"text-xs\",\n description: \"text-xs\",\n },\n md: {\n circle: \"h-8 w-8 text-sm\",\n title: \"text-sm\",\n description: \"text-xs\",\n },\n lg: {\n circle: \"h-10 w-10 text-base\",\n title: \"text-base\",\n description: \"text-sm\",\n },\n };\n\n const sizes = sizeMap[size ?? \"md\"];\n\n const getStepStatus = (\n index: number,\n ): \"wait\" | \"process\" | \"finish\" | \"error\" => {\n if (index < current) return \"finish\";\n if (index === current) return status;\n return \"wait\";\n };\n\n const renderStepIcon = (index: number, item: StepItem) => {\n const stepStatus = getStepStatus(index);\n\n const iconClasses = cn(\n \"flex items-center justify-center rounded-full border-2 transition-all\",\n sizes.circle,\n stepStatus === \"finish\" && [\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-white\",\n ],\n stepStatus === \"process\" && [\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-bg-glass)]\",\n ],\n stepStatus === \"error\" && [\"bg-red-500 border-red-500 text-white\"],\n stepStatus === \"wait\" && [\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-transparent\",\n ],\n );\n\n return (\n <div className={iconClasses}>\n {stepStatus === \"finish\" ? (\n <Check className=\"h-4 w-4\" />\n ) : item.icon ? (\n item.icon\n ) : (\n <span className=\"font-semibold\">{index + 1}</span>\n )}\n </div>\n );\n };\n\n const renderStep = (item: StepItem, index: number) => {\n const stepStatus = getStepStatus(index);\n const isLast = index === items.length - 1;\n const isClickable = onStepChange && index < items.length;\n\n return (\n <div\n key={index}\n className={cn(\n \"flex flex-1\",\n direction === \"horizontal\" ? \"flex-col items-center\" : \"flex-row\",\n isClickable && \"cursor-pointer\",\n )}\n onClick={() => isClickable && onStepChange(index)}\n >\n <div\n className={cn(\n \"flex items-center\",\n direction === \"horizontal\" ? \"flex-col\" : \"flex-row gap-3\",\n )}\n >\n {/* Icon */}\n <div className=\"relative\">{renderStepIcon(index, item)}</div>\n\n {/* Content */}\n <div\n className={cn(\n \"flex flex-col\",\n direction === \"horizontal\"\n ? \"items-center mt-2 text-center\"\n : \"items-start flex-1\",\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"font-medium\",\n sizes.title,\n stepStatus === \"process\" && \"text-[var(--color-text)]\",\n stepStatus === \"finish\" && \"text-[var(--color-text)]\",\n stepStatus === \"wait\" && \"text-[var(--color-text-muted)]\",\n stepStatus === \"error\" && \"text-red-500\",\n )}\n >\n {item.title}\n </span>\n {item.subTitle && (\n <span className=\"text-xs text-[var(--color-text-muted)]\">\n {item.subTitle}\n </span>\n )}\n </div>\n {item.description && (\n <span\n className={cn(\n \"text-[var(--color-text-muted)] mt-1\",\n sizes.description,\n )}\n >\n {item.description}\n </span>\n )}\n </div>\n </div>\n\n {/* Connector */}\n {!isLast && (\n <div\n className={cn(\n \"transition-all\",\n direction === \"horizontal\"\n ? \"h-[2px] flex-1 mx-4 mt-4\"\n : \"w-[2px] h-8 ml-4 my-2\",\n index < current\n ? \"bg-[var(--color-primary)]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(stepsVariants({ direction }), className)}\n {...props}\n >\n {items.map((item, index) => renderStep(item, index))}\n </div>\n );\n },\n);\nSteps.displayName = \"Steps\";\n\nexport { Steps, stepsVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface SegmentedOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n block?: boolean;\n disabled?: boolean;\n className?: string;\n}\n\nconst Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(\n (\n {\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n size = \"md\",\n block = false,\n disabled = false,\n className,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(\n defaultValue || options[0]?.value || \"\",\n );\n\n const value = controlledValue ?? internalValue;\n\n const handleChange = (newValue: string) => {\n if (disabled) return;\n\n const option = options.find((opt) => opt.value === newValue);\n if (option?.disabled) return;\n\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const sizeClasses = {\n sm: \"h-7 text-xs\",\n md: \"h-9 text-sm\",\n lg: \"h-11 text-base\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1 p-1 rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n block && \"flex w-full\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {options.map((option) => {\n const isActive = value === option.value;\n const isDisabled = disabled || option.disabled;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n disabled={isDisabled}\n onClick={() => handleChange(option.value)}\n className={cn(\n \"inline-flex items-center justify-center gap-2 px-3 rounded-md font-medium transition-all\",\n sizeClasses[size],\n block && \"flex-1\",\n isActive && [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n !isActive && [\n \"text-[var(--color-text-secondary)]\",\n \"hover:text-[var(--color-text)]\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n ],\n isDisabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.icon && <span className=\"shrink-0\">{option.icon}</span>}\n {option.label}\n </button>\n );\n })}\n </div>\n );\n },\n);\nSegmented.displayName = \"Segmented\";\n\nexport { Segmented };\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n width?: number;\n collapsedWidth?: number;\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n className,\n collapsible = false,\n defaultCollapsed = false,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n width = 256,\n collapsedWidth = 64,\n children,\n ...props\n },\n ref,\n ) => {\n const [internalCollapsed, setInternalCollapsed] =\n React.useState(defaultCollapsed);\n const collapsed = controlledCollapsed ?? internalCollapsed;\n\n const handleToggle = () => {\n const newCollapsed = !collapsed;\n setInternalCollapsed(newCollapsed);\n onCollapsedChange?.(newCollapsed);\n };\n\n return (\n <aside\n ref={ref}\n className={cn(\n \"relative flex flex-col\",\n \"border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-300\",\n className,\n )}\n style={{\n width: collapsed ? collapsedWidth : width,\n }}\n {...props}\n >\n {children}\n\n {collapsible && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleToggle}\n className={cn(\n \"absolute -right-3 top-6 z-10 h-6 w-6 rounded-full\",\n \"border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-elevated)]\",\n \"shadow-sm\",\n )}\n >\n {collapsed ? (\n <ChevronRight className=\"h-3 w-3\" />\n ) : (\n <ChevronLeft className=\"h-3 w-3\" />\n )}\n </Button>\n )}\n </aside>\n );\n },\n);\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-16 items-center border-b border-[var(--color-border)] px-4\",\n className,\n )}\n {...props}\n />\n));\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex-1 overflow-y-auto py-4\", className)}\n {...props}\n />\n));\nSidebarContent.displayName = \"SidebarContent\";\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"border-t border-[var(--color-border)] p-4\", className)}\n {...props}\n />\n));\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-3 py-2\", className)} {...props} />\n));\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"px-3 py-2 text-xs font-medium uppercase tracking-wider\",\n \"text-[var(--color-text-muted)]\",\n className,\n )}\n {...props}\n />\n));\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"space-y-1\", className)} {...props} />\n));\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nexport interface SidebarMenuItemProps extends React.HTMLAttributes<HTMLAnchorElement> {\n icon?: React.ReactNode;\n active?: boolean;\n href?: string;\n}\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarMenuItemProps\n>(({ className, icon, active, children, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n \"flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors\",\n active\n ? \"bg-[var(--color-bg-glass)] text-[var(--color-text)] font-medium\"\n : \"text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-glass-hover)] hover:text-[var(--color-text)]\",\n className,\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"truncate\">{children}</span>\n </a>\n));\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarGroupContent,\n SidebarMenuItem,\n};\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden rounded-full border-2 border-[var(--color-border)]\",\n {\n variants: {\n size: {\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface AvatarProps\n extends\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full object-cover\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center\",\n \"bg-gradient-to-br from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white font-semibold\",\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)]\",\n \"[&_tr]:border-b\",\n className,\n )}\n {...props}\n />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t border-[var(--color-border)] bg-[var(--color-bg-glass)]/50 font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)] transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=selected]:bg-[var(--color-bg-glass)]\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-semibold text-[var(--color-text)]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle text-[var(--color-text-secondary)]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-[var(--color-text-muted)]\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","import * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return;\n }\n\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\nCarousel.displayName = \"Carousel\";\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n});\nCarouselContent.displayName = \"CarouselContent\";\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n});\nCarouselItem.displayName = \"CarouselItem\";\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n});\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n});\nCarouselNext.displayName = \"CarouselNext\";\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","import * as React from \"react\";\nimport { ImageIcon } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n fallback?: React.ReactNode;\n onError?: () => void;\n aspectRatio?: \"square\" | \"video\" | \"portrait\" | \"auto\";\n objectFit?: \"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\";\n}\n\nconst Image = React.forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n className,\n src,\n alt = \"\",\n fallback,\n onError,\n aspectRatio = \"auto\",\n objectFit = \"cover\",\n ...props\n },\n ref,\n ) => {\n const [error, setError] = React.useState(false);\n const [loading, setLoading] = React.useState(true);\n\n const aspectRatioClasses = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n auto: \"\",\n };\n\n const objectFitClasses = {\n contain: \"object-contain\",\n cover: \"object-cover\",\n fill: \"object-fill\",\n none: \"object-none\",\n \"scale-down\": \"object-scale-down\",\n };\n\n const handleError = () => {\n setError(true);\n setLoading(false);\n onError?.();\n };\n\n const handleLoad = () => {\n setLoading(false);\n };\n\n if (error || !src) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center bg-[var(--color-bg-glass)] rounded-md\",\n aspectRatioClasses[aspectRatio],\n className,\n )}\n >\n {fallback || (\n <div className=\"flex flex-col items-center gap-2 text-[var(--color-text-muted)]\">\n <ImageIcon className=\"h-8 w-8\" />\n <span className=\"text-xs\">Image not available</span>\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"relative overflow-hidden rounded-md\",\n aspectRatioClasses[aspectRatio],\n className,\n )}\n >\n {loading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-[var(--color-bg-glass)] animate-pulse\">\n <ImageIcon className=\"h-8 w-8 text-[var(--color-text-muted)]\" />\n </div>\n )}\n <img\n ref={ref}\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"h-full w-full transition-opacity duration-300\",\n objectFitClasses[objectFit],\n loading ? \"opacity-0\" : \"opacity-100\",\n )}\n {...props}\n />\n </div>\n );\n },\n);\nImage.displayName = \"Image\";\n\nexport { Image };\n","import * as React from \"react\";\nimport { ArrowUp, ArrowDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface StatisticProps {\n title: string;\n value: string | number;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n trend?: \"up\" | \"down\";\n trendValue?: string | number;\n valueClassName?: string;\n className?: string;\n}\n\nconst Statistic = React.forwardRef<HTMLDivElement, StatisticProps>(\n (\n {\n title,\n value,\n prefix,\n suffix,\n trend,\n trendValue,\n valueClassName,\n className,\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)}>\n <div className=\"text-sm text-[var(--color-text-muted)]\">{title}</div>\n <div className=\"flex items-baseline gap-2\">\n <div\n className={cn(\n \"text-3xl font-bold text-[var(--color-text)]\",\n valueClassName,\n )}\n >\n {prefix && <span className=\"mr-1\">{prefix}</span>}\n {value}\n {suffix && <span className=\"ml-1\">{suffix}</span>}\n </div>\n {trend && (\n <div\n className={cn(\n \"flex items-center text-sm font-medium\",\n trend === \"up\" ? \"text-green-500\" : \"text-red-500\",\n )}\n >\n {trend === \"up\" ? (\n <ArrowUp className=\"h-4 w-4 mr-1\" />\n ) : (\n <ArrowDown className=\"h-4 w-4 mr-1\" />\n )}\n {trendValue}\n </div>\n )}\n </div>\n </div>\n );\n },\n);\nStatistic.displayName = \"Statistic\";\n\nexport { Statistic };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface ListItem {\n id: string;\n title: string;\n description?: string;\n avatar?: React.ReactNode;\n actions?: React.ReactNode;\n extra?: React.ReactNode;\n}\n\nexport interface ListProps {\n items: ListItem[];\n bordered?: boolean;\n hoverable?: boolean;\n divided?: boolean;\n onItemClick?: (item: ListItem) => void;\n className?: string;\n itemClassName?: string;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>(\n (\n {\n items,\n bordered = false,\n hoverable = true,\n divided = true,\n onItemClick,\n className,\n itemClassName,\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg\",\n bordered && \"border border-[var(--color-border)]\",\n className,\n )}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n onClick={() => onItemClick?.(item)}\n className={cn(\n \"flex items-center gap-4 p-4\",\n hoverable &&\n \"transition-colors hover:bg-[var(--color-bg-glass-hover)]\",\n onItemClick && \"cursor-pointer\",\n divided &&\n index < items.length - 1 &&\n \"border-b border-[var(--color-border)]\",\n itemClassName,\n )}\n >\n {/* Avatar */}\n {item.avatar && <div className=\"shrink-0\">{item.avatar}</div>}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium text-[var(--color-text)]\">\n {item.title}\n </div>\n {item.description && (\n <div className=\"text-sm text-[var(--color-text-muted)] mt-1\">\n {item.description}\n </div>\n )}\n </div>\n\n {/* Extra Content */}\n {item.extra && (\n <div className=\"shrink-0 text-[var(--color-text-secondary)]\">\n {item.extra}\n </div>\n )}\n\n {/* Actions */}\n {item.actions && (\n <div className=\"shrink-0 flex items-center gap-2\">\n {item.actions}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n },\n);\nList.displayName = \"List\";\n\nexport { List };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface DescriptionItem {\n label: string;\n content: React.ReactNode;\n span?: number;\n}\n\nexport interface DescriptionsProps {\n title?: string;\n items: DescriptionItem[];\n columns?: 1 | 2 | 3 | 4;\n bordered?: boolean;\n layout?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nconst Descriptions = React.forwardRef<HTMLDivElement, DescriptionsProps>(\n (\n {\n title,\n items,\n columns = 3,\n bordered = false,\n layout = \"horizontal\",\n className,\n },\n ref,\n ) => {\n const gridCols = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n if (bordered) {\n return (\n <div ref={ref} className={cn(\"rounded-lg overflow-hidden\", className)}>\n {title && (\n <div className=\"px-4 py-3 bg-[var(--color-bg-glass)] border border-[var(--color-border)] font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n )}\n <div className=\"border border-[var(--color-border)] border-t-0\">\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\n \"grid\",\n layout === \"horizontal\"\n ? \"grid-cols-[200px_1fr]\"\n : \"grid-cols-1\",\n )}\n >\n <div className=\"px-4 py-3 bg-[var(--color-bg-glass)]/50 border-b border-r border-[var(--color-border)] text-sm font-medium text-[var(--color-text)]\">\n {item.label}\n </div>\n <div className=\"px-4 py-3 border-b border-[var(--color-border)] text-sm text-[var(--color-text-secondary)]\">\n {item.content}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={ref} className={cn(\"\", className)}>\n {title && (\n <div className=\"mb-4 text-lg font-semibold text-[var(--color-text)]\">\n {title}\n </div>\n )}\n <div className={cn(\"grid gap-4\", gridCols[columns])}>\n {items.map((item, index) => (\n <div\n key={index}\n className={cn(\"space-y-1\", item.span && `col-span-${item.span}`)}\n >\n <div className=\"text-sm font-medium text-[var(--color-text-muted)]\">\n {item.label}\n </div>\n <div className=\"text-sm text-[var(--color-text)]\">\n {item.content}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n },\n);\nDescriptions.displayName = \"Descriptions\";\n\nexport { Descriptions };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface TimelineItem {\n title: string;\n description?: string;\n timestamp?: string;\n icon?: React.ReactNode;\n color?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"error\";\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n variant?: \"default\" | \"gradient\";\n className?: string;\n}\n\nconst Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n ({ items, variant = \"default\", className }, ref) => {\n const getColorClass = (color?: string) => {\n switch (color) {\n case \"primary\":\n return \"border-[var(--color-primary)] bg-[var(--color-primary)]\";\n case \"success\":\n return \"border-green-500 bg-green-500\";\n case \"warning\":\n return \"border-yellow-500 bg-yellow-500\";\n case \"error\":\n return \"border-red-500 bg-red-500\";\n default:\n return \"border-[var(--color-border-strong)] bg-[var(--color-bg-glass)]\";\n }\n };\n\n return (\n <div ref={ref} className={cn(\"relative\", className)}>\n {items.map((item, index) => (\n <div key={index} className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Timeline Line */}\n {index < items.length - 1 && (\n <div\n className={cn(\n \"absolute left-[19px] top-[32px] bottom-0 w-[2px]\",\n variant === \"gradient\"\n ? \"bg-gradient-to-b from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n\n {/* Timeline Dot */}\n <div className=\"relative z-10 flex shrink-0\">\n <div\n className={cn(\n \"flex h-10 w-10 items-center justify-center rounded-full border-2\",\n getColorClass(item.color),\n item.icon && \"text-white\",\n )}\n >\n {item.icon || (\n <div className=\"h-3 w-3 rounded-full bg-current\" />\n )}\n </div>\n </div>\n\n {/* Timeline Content */}\n <div className=\"flex-1 pt-1\">\n <div className=\"flex items-center justify-between mb-1\">\n <h4 className=\"text-sm font-semibold text-[var(--color-text)]\">\n {item.title}\n </h4>\n {item.timestamp && (\n <time className=\"text-xs text-[var(--color-text-muted)]\">\n {item.timestamp}\n </time>\n )}\n </div>\n {item.description && (\n <p className=\"text-sm text-[var(--color-text-secondary)]\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nTimeline.displayName = \"Timeline\";\n\nexport { Timeline };\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../utils\";\n\nexport interface Step {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: Step[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"default\" | \"gradient\";\n className?: string;\n}\n\nconst Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n (\n {\n steps,\n currentStep,\n orientation = \"horizontal\",\n variant = \"default\",\n className,\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row items-center\" : \"flex-col\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const isCompleted = index < currentStep;\n const isCurrent = index === currentStep;\n const isUpcoming = index > currentStep;\n\n return (\n <React.Fragment key={index}>\n <div\n className={cn(\n \"flex items-center\",\n orientation === \"vertical\" ? \"flex-row\" : \"flex-col\",\n )}\n >\n {/* Step Circle */}\n <div\n className={cn(\n \"flex items-center justify-center rounded-full border-2 transition-all\",\n \"h-10 w-10 shrink-0\",\n isCompleted &&\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899] border-transparent text-white\",\n isCompleted &&\n variant === \"default\" &&\n \"bg-[var(--color-primary)] border-[var(--color-primary)] text-white\",\n isCurrent &&\n \"border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-bg-glass)]\",\n isUpcoming &&\n \"border-[var(--color-border)] text-[var(--color-text-muted)] bg-transparent\",\n )}\n >\n {isCompleted ? (\n <Check className=\"h-5 w-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Step Content */}\n <div\n className={cn(\n \"flex flex-col\",\n orientation === \"horizontal\"\n ? \"items-center mt-2\"\n : \"items-start ml-4\",\n )}\n >\n <div\n className={cn(\n \"text-sm font-medium\",\n isCurrent && \"text-[var(--color-text)]\",\n isCompleted && \"text-[var(--color-text)]\",\n isUpcoming && \"text-[var(--color-text-muted)]\",\n )}\n >\n {step.title}\n </div>\n {step.description && (\n <div className=\"text-xs text-[var(--color-text-muted)] mt-1\">\n {step.description}\n </div>\n )}\n </div>\n </div>\n\n {/* Connector Line */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n \"transition-all\",\n orientation === \"horizontal\"\n ? \"h-[2px] flex-1 mx-2\"\n : \"w-[2px] h-8 ml-5\",\n index < currentStep\n ? variant === \"gradient\"\n ? \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\"\n : \"bg-[var(--color-primary)]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n },\n);\nStepper.displayName = \"Stepper\";\n\nexport { Stepper };\n","import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst tagVariants = cva(\n \"inline-flex items-center gap-1.5 rounded-md px-2.5 py-0.5 text-xs font-medium transition-all\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n solid: [\"bg-[var(--color-bg-elevated)]\", \"text-[var(--color-text)]\"],\n gradient: [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n success: [\n \"bg-green-500/20 border border-green-500/50\",\n \"text-green-500\",\n ],\n warning: [\n \"bg-yellow-500/20 border border-yellow-500/50\",\n \"text-yellow-500\",\n ],\n error: [\"bg-red-500/20 border border-red-500/50\", \"text-red-500\"],\n info: [\"bg-blue-500/20 border border-blue-500/50\", \"text-blue-500\"],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface TagProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tagVariants> {\n closable?: boolean;\n onClose?: () => void;\n icon?: React.ReactNode;\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n (\n { className, variant, closable, onClose, icon, children, ...props },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n className={cn(tagVariants({ variant }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n {children}\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"shrink-0 hover:opacity-70 transition-opacity\"\n aria-label=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n );\n },\n);\nTag.displayName = \"Tag\";\n\nexport { Tag, tagVariants };\n","import * as React from \"react\";\nimport { ChevronRight, ChevronDown } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Checkbox } from \"./checkbox\";\n\nexport interface TreeNode {\n key: string;\n title: string;\n children?: TreeNode[];\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface TreeProps {\n treeData: TreeNode[];\n checkable?: boolean;\n checkedKeys?: string[];\n expandedKeys?: string[];\n selectedKeys?: string[];\n onCheck?: (checkedKeys: string[]) => void;\n onExpand?: (expandedKeys: string[]) => void;\n onSelect?: (selectedKeys: string[]) => void;\n className?: string;\n}\n\nconst Tree = React.forwardRef<HTMLDivElement, TreeProps>(\n (\n {\n treeData,\n checkable = false,\n checkedKeys: controlledCheckedKeys,\n expandedKeys: controlledExpandedKeys,\n selectedKeys: controlledSelectedKeys,\n onCheck,\n onExpand,\n onSelect,\n className,\n },\n ref,\n ) => {\n const [internalCheckedKeys, setInternalCheckedKeys] = React.useState<\n string[]\n >([]);\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<\n string[]\n >([]);\n const [internalSelectedKeys, setInternalSelectedKeys] = React.useState<\n string[]\n >([]);\n\n const checkedKeys = controlledCheckedKeys ?? internalCheckedKeys;\n const expandedKeys = controlledExpandedKeys ?? internalExpandedKeys;\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys;\n\n const handleExpand = (key: string) => {\n const newExpandedKeys = expandedKeys.includes(key)\n ? expandedKeys.filter((k) => k !== key)\n : [...expandedKeys, key];\n setInternalExpandedKeys(newExpandedKeys);\n onExpand?.(newExpandedKeys);\n };\n\n const handleCheck = (key: string, checked: boolean) => {\n const newCheckedKeys = checked\n ? [...checkedKeys, key]\n : checkedKeys.filter((k) => k !== key);\n setInternalCheckedKeys(newCheckedKeys);\n onCheck?.(newCheckedKeys);\n };\n\n const handleSelect = (key: string) => {\n const newSelectedKeys = selectedKeys.includes(key) ? [] : [key];\n setInternalSelectedKeys(newSelectedKeys);\n onSelect?.(newSelectedKeys);\n };\n\n const renderTreeNode = (node: TreeNode, level: number = 0) => {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expandedKeys.includes(node.key);\n const isChecked = checkedKeys.includes(node.key);\n const isSelected = selectedKeys.includes(node.key);\n\n return (\n <div key={node.key} className=\"select-none\">\n <div\n className={cn(\n \"flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer transition-colors\",\n \"hover:bg-[var(--color-bg-glass-hover)]\",\n isSelected &&\n \"bg-[var(--color-bg-glass)] text-[var(--color-primary)]\",\n node.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n style={{ paddingLeft: `${level * 20 + 8}px` }}\n >\n {hasChildren ? (\n <button\n onClick={() => handleExpand(node.key)}\n className=\"shrink-0 p-0.5 hover:bg-[var(--color-bg-glass)] rounded\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </button>\n ) : (\n <span className=\"w-5\" />\n )}\n\n {checkable && (\n <Checkbox\n checked={isChecked}\n onCheckedChange={(checked) =>\n handleCheck(node.key, checked as boolean)\n }\n disabled={node.disabled}\n />\n )}\n\n <div\n onClick={() => !node.disabled && handleSelect(node.key)}\n className=\"flex items-center gap-2 flex-1\"\n >\n {node.icon && <span className=\"shrink-0\">{node.icon}</span>}\n <span className=\"text-sm\">{node.title}</span>\n </div>\n </div>\n\n {hasChildren && isExpanded && (\n <div>\n {node.children!.map((child) => renderTreeNode(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border border-[var(--color-border)] p-2\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n >\n {treeData.map((node) => renderTreeNode(node))}\n </div>\n );\n },\n);\nTree.displayName = \"Tree\";\n\nexport { Tree };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface QRCodeProps {\n value: string;\n size?: number;\n level?: \"L\" | \"M\" | \"Q\" | \"H\";\n bgColor?: string;\n fgColor?: string;\n includeMargin?: boolean;\n imageSettings?: {\n src: string;\n height: number;\n width: number;\n excavate?: boolean;\n };\n className?: string;\n}\n\n// Simple QR Code generator (basic implementation)\n// In production, use a library like 'qrcode.react' or 'qrcode'\nconst QRCode = React.forwardRef<HTMLDivElement, QRCodeProps>(\n (\n {\n value,\n size = 128,\n level = \"M\",\n bgColor = \"#FFFFFF\",\n fgColor = \"#000000\",\n includeMargin = false,\n imageSettings,\n className,\n },\n ref,\n ) => {\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n // Simple placeholder implementation\n // In production, use a proper QR code library\n canvas.width = size;\n canvas.height = size;\n\n // Background\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size, size);\n\n // Foreground (simplified pattern)\n ctx.fillStyle = fgColor;\n const cellSize = size / 25; // 25x25 grid for simplicity\n const margin = includeMargin ? cellSize : 0;\n\n // Create a simple pattern based on value hash\n const hash = value\n .split(\"\")\n .reduce((acc, char) => acc + char.charCodeAt(0), 0);\n\n for (let i = 0; i < 25; i++) {\n for (let j = 0; j < 25; j++) {\n // Pseudo-random pattern based on position and hash\n if ((i * 25 + j + hash) % 3 === 0) {\n ctx.fillRect(\n margin + i * cellSize,\n margin + j * cellSize,\n cellSize,\n cellSize,\n );\n }\n }\n }\n\n // Add corners (finder patterns)\n const cornerSize = cellSize * 7;\n const corners = [\n [margin, margin],\n [size - cornerSize - margin, margin],\n [margin, size - cornerSize - margin],\n ];\n\n corners.forEach(([x, y]) => {\n ctx.fillStyle = fgColor;\n ctx.fillRect(x, y, cornerSize, cornerSize);\n ctx.fillStyle = bgColor;\n ctx.fillRect(\n x + cellSize,\n y + cellSize,\n cornerSize - 2 * cellSize,\n cornerSize - 2 * cellSize,\n );\n ctx.fillStyle = fgColor;\n ctx.fillRect(\n x + 2 * cellSize,\n y + 2 * cellSize,\n cornerSize - 4 * cellSize,\n cornerSize - 4 * cellSize,\n );\n });\n\n // Add image in center if provided\n if (imageSettings) {\n const img = new Image();\n img.onload = () => {\n const imgX = (size - imageSettings.width) / 2;\n const imgY = (size - imageSettings.height) / 2;\n\n if (imageSettings.excavate) {\n ctx.fillStyle = bgColor;\n ctx.fillRect(\n imgX - 5,\n imgY - 5,\n imageSettings.width + 10,\n imageSettings.height + 10,\n );\n }\n\n ctx.drawImage(\n img,\n imgX,\n imgY,\n imageSettings.width,\n imageSettings.height,\n );\n };\n img.src = imageSettings.src;\n }\n }, [value, size, level, bgColor, fgColor, includeMargin, imageSettings]);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center p-4 rounded-lg\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n className,\n )}\n >\n <canvas ref={canvasRef} className=\"rounded\" />\n </div>\n );\n },\n);\nQRCode.displayName = \"QRCode\";\n\nexport { QRCode };\n","import * as React from \"react\";\nimport {\n LineChart as RechartsLineChart,\n BarChart as RechartsBarChart,\n AreaChart as RechartsAreaChart,\n PieChart as RechartsPieChart,\n Line,\n Bar,\n Area,\n Pie,\n Cell,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n TooltipProps,\n} from \"recharts\";\nimport { cn } from \"../utils\";\n\n// Custom Tooltip\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = ({\n active,\n payload,\n label,\n}) => {\n if (!active || !payload || !payload.length) return null;\n\n return (\n <div className=\"rounded-lg border border-[var(--color-border)] bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)] p-3 shadow-[var(--shadow-glass)]\">\n <p className=\"text-sm font-medium text-[var(--color-text)] mb-2\">\n {label}\n </p>\n {payload.map((entry: any, index: number) => (\n <div\n key={index}\n className=\"flex items-center gap-2 text-xs text-[var(--color-text-secondary)]\"\n >\n <span\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span>{entry.name}:</span>\n <span className=\"font-medium text-[var(--color-text)]\">\n {entry.value}\n </span>\n </div>\n ))}\n </div>\n );\n};\n\nexport interface LineChartProps {\n data: any[];\n xKey: string;\n lines: {\n dataKey: string;\n name?: string;\n color?: string;\n strokeWidth?: number;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const LineChart: React.FC<LineChartProps> = ({\n data,\n xKey,\n lines,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsLineChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {lines.map((line, index) => (\n <Line\n key={line.dataKey}\n type=\"monotone\"\n dataKey={line.dataKey}\n name={line.name || line.dataKey}\n stroke={line.color || `hsl(${index * 60}, 70%, 50%)`}\n strokeWidth={line.strokeWidth || 2}\n dot={false}\n activeDot={{ r: 6 }}\n />\n ))}\n </RechartsLineChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface BarChartProps {\n data: any[];\n xKey: string;\n bars: {\n dataKey: string;\n name?: string;\n color?: string;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n xKey,\n bars,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsBarChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {bars.map((bar, index) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n name={bar.name || bar.dataKey}\n fill={bar.color || `hsl(${index * 60}, 70%, 50%)`}\n radius={[4, 4, 0, 0]}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface AreaChartProps {\n data: any[];\n xKey: string;\n areas: {\n dataKey: string;\n name?: string;\n color?: string;\n }[];\n height?: number;\n showGrid?: boolean;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n xKey,\n areas,\n height = 300,\n showGrid = true,\n showLegend = true,\n className,\n}) => {\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsAreaChart data={data}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border)\"\n vertical={false}\n />\n )}\n <XAxis\n dataKey={xKey}\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <YAxis\n stroke=\"var(--color-text-muted)\"\n tick={{ fill: \"var(--color-text-muted)\", fontSize: 12 }}\n tickLine={false}\n axisLine={{ stroke: \"var(--color-border)\" }}\n />\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n {areas.map((area, index) => (\n <Area\n key={area.dataKey}\n type=\"monotone\"\n dataKey={area.dataKey}\n name={area.name || area.dataKey}\n stroke={area.color || `hsl(${index * 60}, 70%, 50%)`}\n fill={area.color || `hsl(${index * 60}, 70%, 50%)`}\n fillOpacity={0.2}\n strokeWidth={2}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport interface PieChartProps {\n data: {\n name: string;\n value: number;\n color?: string;\n }[];\n height?: number;\n innerRadius?: number;\n showLegend?: boolean;\n className?: string;\n}\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n height = 300,\n innerRadius = 0,\n showLegend = true,\n className,\n}) => {\n const COLORS = [\"#a855f7\", \"#ec4899\", \"#f472b6\", \"#8b5cf6\", \"#d946ef\"];\n\n return (\n <div className={cn(\"w-full\", className)}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={height / 3}\n paddingAngle={2}\n dataKey=\"value\"\n >\n {data.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={entry.color || COLORS[index % COLORS.length]}\n />\n ))}\n </Pie>\n <Tooltip content={<CustomTooltip />} />\n {showLegend && (\n <Legend\n wrapperStyle={{\n color: \"var(--color-text-secondary)\",\n fontSize: 12,\n }}\n />\n )}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\nexport { CustomTooltip as ChartTooltip };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nconst Layout = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex min-h-screen\", className)} {...props} />\n));\nLayout.displayName = \"Layout\";\n\nconst LayoutHeader = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <header\n ref={ref}\n className={cn(\n \"border-b border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"sticky top-0 z-40\",\n className,\n )}\n {...props}\n />\n));\nLayoutHeader.displayName = \"LayoutHeader\";\n\nconst LayoutSider = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & {\n width?: string | number;\n collapsed?: boolean;\n collapsedWidth?: string | number;\n }\n>(\n (\n {\n className,\n width = 256,\n collapsed = false,\n collapsedWidth = 80,\n style,\n ...props\n },\n ref,\n ) => (\n <aside\n ref={ref}\n className={cn(\n \"border-r border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"transition-all duration-300\",\n className,\n )}\n style={{\n width: collapsed\n ? typeof collapsedWidth === \"number\"\n ? `${collapsedWidth}px`\n : collapsedWidth\n : typeof width === \"number\"\n ? `${width}px`\n : width,\n ...style,\n }}\n {...props}\n />\n ),\n);\nLayoutSider.displayName = \"LayoutSider\";\n\nconst LayoutContent = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <main\n ref={ref}\n className={cn(\"flex-1 overflow-auto\", className)}\n {...props}\n />\n));\nLayoutContent.displayName = \"LayoutContent\";\n\nconst LayoutFooter = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn(\n \"border-t border-[var(--color-border)]\",\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n className,\n )}\n {...props}\n />\n));\nLayoutFooter.displayName = \"LayoutFooter\";\n\nexport { Layout, LayoutHeader, LayoutSider, LayoutContent, LayoutFooter };\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../utils\";\n\ninterface SeparatorProps extends React.ComponentPropsWithoutRef<\n typeof SeparatorPrimitive.Root\n> {\n variant?: \"default\" | \"gradient\";\n label?: string;\n}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n {\n className,\n orientation = \"horizontal\",\n decorative = true,\n variant = \"default\",\n label,\n ...props\n },\n ref,\n ) => {\n if (label) {\n return (\n <div className=\"relative flex items-center\">\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"flex-1\",\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" && \"h-px\",\n orientation === \"vertical\" && \"w-px\",\n className,\n )}\n {...props}\n />\n <span className=\"px-2 text-xs text-white/50\">{label}</span>\n <SeparatorPrimitive.Root\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"flex-1\",\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" && \"h-px\",\n orientation === \"vertical\" && \"w-px\",\n )}\n />\n </div>\n );\n }\n\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n variant === \"default\" && \"bg-white/10\",\n variant === \"gradient\" &&\n \"bg-gradient-to-r from-transparent via-white/20 to-transparent\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className,\n )}\n data-slot=\"separator\"\n {...props}\n />\n );\n },\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"default\" | \"gradient\";\n label?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n variant = \"default\",\n label,\n ...props\n },\n ref,\n ) => {\n if (label) {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-3 my-4\", className)}\n {...props}\n >\n <div\n className={cn(\n \"flex-1 h-px\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n <span className=\"text-sm text-[var(--color-text-muted)]\">\n {label}\n </span>\n <div\n className={cn(\n \"flex-1 h-px\",\n variant === \"gradient\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"w-full h-px\" : \"h-full w-px\",\n variant === \"gradient\"\n ? orientation === \"horizontal\"\n ? \"bg-gradient-to-r from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-gradient-to-b from-transparent via-[var(--color-border)] to-transparent\"\n : \"bg-[var(--color-border)]\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDivider.displayName = \"Divider\";\n\nexport { Divider };\n","import * as React from \"react\";\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n","import { GripVertical } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\nimport { cn } from \"../utils\";\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n);\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex w-px items-center justify-center bg-[var(--color-border)]\",\n \"after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2\",\n \"hover:bg-[var(--color-border-strong)]\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-1\",\n \"data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full\",\n \"data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0\",\n \"[&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border border-[var(--color-border)] bg-[var(--color-bg-glass)]\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n);\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst containerVariants = cva(\"w-full mx-auto px-4 sm:px-6 lg:px-8\", {\n variants: {\n size: {\n sm: \"max-w-3xl\",\n md: \"max-w-5xl\",\n lg: \"max-w-7xl\",\n xl: \"max-w-[1400px]\",\n full: \"max-w-full\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nexport interface ContainerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof containerVariants> {}\n\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ className, size, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(containerVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nContainer.displayName = \"Container\";\n\nexport { Container, containerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst stackVariants = cva(\"flex\", {\n variants: {\n direction: {\n row: \"flex-row\",\n column: \"flex-col\",\n rowReverse: \"flex-row-reverse\",\n columnReverse: \"flex-col-reverse\",\n },\n spacing: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n },\n defaultVariants: {\n direction: \"column\",\n spacing: \"md\",\n },\n});\n\nexport interface StackProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof stackVariants> {}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ className, direction, spacing, align, justify, wrap, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n stackVariants({ direction, spacing, align, justify, wrap }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nStack.displayName = \"Stack\";\n\nexport { Stack, stackVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst gridVariants = cva(\"grid w-full\", {\n variants: {\n cols: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n 12: \"grid-cols-12\",\n },\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n },\n defaultVariants: {\n cols: 12,\n gap: \"md\",\n },\n});\n\nexport interface GridProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof gridVariants> {}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n ({ className, cols, gap, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(gridVariants({ cols, gap }), className)}\n {...props}\n />\n );\n },\n);\nGrid.displayName = \"Grid\";\n\nconst gridItemVariants = cva(\"\", {\n variants: {\n span: {\n 1: \"col-span-1\",\n 2: \"col-span-2\",\n 3: \"col-span-3\",\n 4: \"col-span-4\",\n 5: \"col-span-5\",\n 6: \"col-span-6\",\n 7: \"col-span-7\",\n 8: \"col-span-8\",\n 9: \"col-span-9\",\n 10: \"col-span-10\",\n 11: \"col-span-11\",\n 12: \"col-span-12\",\n full: \"col-span-full\",\n },\n },\n defaultVariants: {\n span: 1,\n },\n});\n\nexport interface GridItemProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof gridItemVariants> {}\n\nconst GridItem = React.forwardRef<HTMLDivElement, GridItemProps>(\n ({ className, span, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(gridItemVariants({ span }), className)}\n {...props}\n />\n );\n },\n);\nGridItem.displayName = \"GridItem\";\n\nexport { Grid, GridItem, gridVariants, gridItemVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spaceVariants = cva(\"inline-flex\", {\n variants: {\n direction: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n baseline: \"items-baseline\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n },\n compoundVariants: [\n // Horizontal spacing\n { direction: \"horizontal\", size: \"xs\", class: \"gap-1\" },\n { direction: \"horizontal\", size: \"sm\", class: \"gap-2\" },\n { direction: \"horizontal\", size: \"md\", class: \"gap-4\" },\n { direction: \"horizontal\", size: \"lg\", class: \"gap-6\" },\n { direction: \"horizontal\", size: \"xl\", class: \"gap-8\" },\n // Vertical spacing\n { direction: \"vertical\", size: \"xs\", class: \"gap-1\" },\n { direction: \"vertical\", size: \"sm\", class: \"gap-2\" },\n { direction: \"vertical\", size: \"md\", class: \"gap-4\" },\n { direction: \"vertical\", size: \"lg\", class: \"gap-6\" },\n { direction: \"vertical\", size: \"xl\", class: \"gap-8\" },\n ],\n defaultVariants: {\n direction: \"horizontal\",\n size: \"md\",\n },\n});\n\nexport interface SpaceProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spaceVariants> {\n split?: React.ReactNode;\n}\n\nconst Space = React.forwardRef<HTMLDivElement, SpaceProps>(\n (\n { className, direction, size, align, wrap, split, children, ...props },\n ref,\n ) => {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n\n return (\n <div\n ref={ref}\n className={cn(\n spaceVariants({ direction, size, align, wrap }),\n className,\n )}\n {...props}\n >\n {childrenArray.map((child, index) => (\n <React.Fragment key={index}>\n {child}\n {split && index < childrenArray.length - 1 && (\n <span className=\"select-none\">{split}</span>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n },\n);\nSpace.displayName = \"Space\";\n\nexport { Space, spaceVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface AffixProps {\n offsetTop?: number;\n offsetBottom?: number;\n target?: () => HTMLElement | Window;\n onChange?: (affixed: boolean) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Affix = React.forwardRef<HTMLDivElement, AffixProps>(\n ({ offsetTop, offsetBottom, target, onChange, className, children }, ref) => {\n const [affixed, setAffixed] = React.useState(false);\n const [styles, setStyles] = React.useState<React.CSSProperties>({});\n const placeholderRef = React.useRef<HTMLDivElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const getTarget = target ? target() : window;\n\n const handleScroll = () => {\n if (!placeholderRef.current || !contentRef.current) return;\n\n const placeholderRect = placeholderRef.current.getBoundingClientRect();\n const contentHeight = contentRef.current.offsetHeight;\n\n let newAffixed = false;\n let newStyles: React.CSSProperties = {};\n\n if (offsetTop !== undefined) {\n if (placeholderRect.top <= offsetTop) {\n newAffixed = true;\n newStyles = {\n position: \"fixed\",\n top: offsetTop,\n left: placeholderRect.left,\n width: placeholderRect.width,\n };\n }\n }\n\n if (offsetBottom !== undefined) {\n const viewportHeight = window.innerHeight;\n if (placeholderRect.bottom >= viewportHeight - offsetBottom) {\n newAffixed = true;\n newStyles = {\n position: \"fixed\",\n bottom: offsetBottom,\n left: placeholderRect.left,\n width: placeholderRect.width,\n };\n }\n }\n\n if (newAffixed !== affixed) {\n setAffixed(newAffixed);\n onChange?.(newAffixed);\n }\n\n setStyles(newStyles);\n };\n\n if (getTarget instanceof Window) {\n window.addEventListener(\"scroll\", handleScroll);\n window.addEventListener(\"resize\", handleScroll);\n handleScroll();\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n window.removeEventListener(\"resize\", handleScroll);\n };\n } else {\n getTarget.addEventListener(\"scroll\", handleScroll);\n handleScroll();\n return () => getTarget.removeEventListener(\"scroll\", handleScroll);\n }\n }, [offsetTop, offsetBottom, target, affixed, onChange]);\n\n return (\n <>\n <div\n ref={placeholderRef}\n style={\n affixed ? { height: contentRef.current?.offsetHeight } : undefined\n }\n />\n <div\n ref={contentRef}\n className={cn(className)}\n style={affixed ? styles : undefined}\n >\n {children}\n </div>\n </>\n );\n },\n);\nAffix.displayName = \"Affix\";\n\nexport { Affix };\n","import * as React from \"react\";\nimport { ArrowUp } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface BackTopProps {\n visibilityHeight?: number;\n target?: () => HTMLElement | Window;\n onClick?: () => void;\n className?: string;\n}\n\nconst BackTop = React.forwardRef<HTMLDivElement, BackTopProps>(\n ({ visibilityHeight = 400, target, onClick, className }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const getTarget = target ? target() : window;\n\n const handleScroll = () => {\n if (getTarget instanceof Window) {\n setVisible(window.scrollY > visibilityHeight);\n } else {\n setVisible(getTarget.scrollTop > visibilityHeight);\n }\n };\n\n if (getTarget instanceof Window) {\n window.addEventListener(\"scroll\", handleScroll);\n return () => window.removeEventListener(\"scroll\", handleScroll);\n } else {\n getTarget.addEventListener(\"scroll\", handleScroll);\n return () => getTarget.removeEventListener(\"scroll\", handleScroll);\n }\n }, [visibilityHeight, target]);\n\n const scrollToTop = () => {\n const getTarget = target ? target() : window;\n\n if (getTarget instanceof Window) {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } else {\n getTarget.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n onClick?.();\n };\n\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"fixed bottom-8 right-8 z-50\",\n \"animate-in fade-in slide-in-from-bottom-4\",\n className,\n )}\n >\n <Button\n variant=\"gradient\"\n size=\"icon\"\n className=\"h-12 w-12 rounded-full shadow-[var(--shadow-elevated)]\"\n onClick={scrollToTop}\n >\n <ArrowUp className=\"h-5 w-5\" />\n </Button>\n </div>\n );\n },\n);\nBackTop.displayName = \"BackTop\";\n\nexport { BackTop };\n","import * as React from \"react\";\nimport { Plus, X } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nexport interface FloatButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode;\n description?: string;\n tooltip?: string;\n shape?: \"circle\" | \"square\";\n variant?: \"default\" | \"primary\";\n badge?: {\n count?: number;\n dot?: boolean;\n };\n}\n\nconst FloatButton = React.forwardRef<HTMLButtonElement, FloatButtonProps>(\n (\n {\n className,\n icon,\n description,\n tooltip,\n shape = \"circle\",\n variant = \"default\",\n badge,\n ...props\n },\n ref,\n ) => {\n const button = (\n <Button\n ref={ref}\n variant={variant === \"primary\" ? \"gradient\" : \"outline\"}\n size=\"icon\"\n className={cn(\n \"relative h-12 w-12 shadow-[var(--shadow-elevated)]\",\n shape === \"circle\" && \"rounded-full\",\n shape === \"square\" && \"rounded-lg\",\n description && \"h-auto w-auto px-4 py-3 flex-col gap-1\",\n className,\n )}\n {...props}\n >\n {icon}\n {description && (\n <span className=\"text-xs whitespace-nowrap\">{description}</span>\n )}\n {badge && (badge.dot || (badge.count && badge.count > 0)) && (\n <span\n className={cn(\n \"absolute -top-1 -right-1 flex items-center justify-center\",\n \"bg-red-500 text-white text-xs font-medium\",\n badge.dot\n ? \"h-2 w-2 rounded-full\"\n : \"h-5 min-w-[20px] px-1 rounded-full\",\n )}\n >\n {!badge.dot &&\n badge.count &&\n (badge.count > 99 ? \"99+\" : badge.count)}\n </span>\n )}\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"left\">{tooltip}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n },\n);\nFloatButton.displayName = \"FloatButton\";\n\nexport interface FloatButtonGroupProps {\n trigger?: \"click\" | \"hover\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst FloatButtonGroup = React.forwardRef<\n HTMLDivElement,\n FloatButtonGroupProps\n>(\n (\n {\n trigger = \"click\",\n open: controlledOpen,\n onOpenChange,\n icon = <Plus className=\"h-5 w-5\" />,\n children,\n className,\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const open = controlledOpen ?? internalOpen;\n\n const handleToggle = () => {\n const newOpen = !open;\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n const handleMouseEnter = () => {\n if (trigger === \"hover\") {\n setInternalOpen(true);\n onOpenChange?.(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (trigger === \"hover\") {\n setInternalOpen(false);\n onOpenChange?.(false);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative inline-flex flex-col-reverse items-center gap-3\",\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* Children buttons */}\n {open && (\n <div className=\"flex flex-col-reverse items-center gap-3 animate-in fade-in slide-in-from-bottom-4\">\n {children}\n </div>\n )}\n\n {/* Trigger button */}\n <FloatButton\n icon={open ? <X className=\"h-5 w-5\" /> : icon}\n variant=\"primary\"\n onClick={trigger === \"click\" ? handleToggle : undefined}\n className={cn(\"transition-transform\", open && \"rotate-45\")}\n />\n </div>\n );\n },\n);\nFloatButtonGroup.displayName = \"FloatButtonGroup\";\n\nexport { FloatButton, FloatButtonGroup };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface WatermarkProps {\n children?: React.ReactNode;\n content?: string | string[];\n width?: number;\n height?: number;\n rotate?: number;\n zIndex?: number;\n image?: string;\n font?: {\n color?: string;\n fontSize?: number;\n fontWeight?: \"normal\" | \"light\" | \"bold\";\n fontFamily?: string;\n };\n gap?: [number, number];\n offset?: [number, number];\n className?: string;\n}\n\nconst Watermark = React.forwardRef<HTMLDivElement, WatermarkProps>(\n (\n {\n children,\n content = \"\",\n width = 120,\n height = 64,\n rotate = -22,\n zIndex = 9,\n image,\n font = {},\n gap = [100, 100],\n offset = [0, 0],\n className,\n },\n ref,\n ) => {\n const {\n color = \"rgba(0,0,0,.15)\",\n fontSize = 16,\n fontWeight = \"normal\",\n fontFamily = \"sans-serif\",\n } = font;\n\n const [base64Url, setBase64Url] = React.useState(\"\");\n\n React.useEffect(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const ratio = window.devicePixelRatio || 1;\n const canvasWidth = (width + gap[0]) * ratio;\n const canvasHeight = (height + gap[1]) * ratio;\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n ctx.translate(offset[0] * ratio, offset[1] * ratio);\n ctx.rotate((Math.PI / 180) * rotate);\n\n if (image) {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n ctx.drawImage(img, 0, 0, width * ratio, height * ratio);\n setBase64Url(canvas.toDataURL());\n };\n img.src = image;\n } else {\n ctx.font = `${fontWeight} ${fontSize * ratio}px ${fontFamily}`;\n ctx.fillStyle = color;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n\n const contents = Array.isArray(content) ? content : [content];\n contents.forEach((text, index) => {\n ctx.fillText(text, 0, index * (fontSize * ratio + 10));\n });\n\n setBase64Url(canvas.toDataURL());\n }\n }, [\n content,\n width,\n height,\n rotate,\n image,\n color,\n fontSize,\n fontWeight,\n fontFamily,\n gap,\n offset,\n ]);\n\n return (\n <div ref={ref} className={cn(\"relative\", className)}>\n {children}\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n zIndex,\n backgroundImage: `url(${base64Url})`,\n backgroundRepeat: \"repeat\",\n }}\n />\n </div>\n );\n },\n);\nWatermark.displayName = \"Watermark\";\n\nexport { Watermark };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst headingVariants = cva(\n \"font-bold tracking-tight text-[var(--color-text)]\",\n {\n variants: {\n level: {\n h1: \"text-5xl md:text-6xl\",\n h2: \"text-4xl md:text-5xl\",\n h3: \"text-3xl md:text-4xl\",\n h4: \"text-2xl md:text-3xl\",\n h5: \"text-xl md:text-2xl\",\n h6: \"text-lg md:text-xl\",\n },\n gradient: {\n true: \"bg-gradient-to-r from-purple-400 via-fuchsia-400 to-pink-400 bg-clip-text text-transparent\",\n },\n },\n defaultVariants: {\n level: \"h2\",\n },\n },\n);\n\nexport interface HeadingProps\n extends\n React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof headingVariants> {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ className, level, gradient, as, ...props }, ref) => {\n const Component = as || level || \"h2\";\n const typedRef = ref as React.Ref<HTMLHeadingElement>;\n\n return (\n <Component\n ref={typedRef}\n className={cn(\n headingVariants({ level: level || (as as typeof level), gradient }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nHeading.displayName = \"Heading\";\n\nconst textVariants = cva(\"text-[var(--color-text)]\", {\n variants: {\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n },\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n },\n variant: {\n default: \"text-[var(--color-text)]\",\n secondary: \"text-[var(--color-text-secondary)]\",\n muted: \"text-[var(--color-text-muted)]\",\n placeholder: \"text-[var(--color-text-placeholder)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n weight: \"normal\",\n variant: \"default\",\n },\n});\n\nexport interface TextProps\n extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof textVariants> {\n as?: \"p\" | \"span\" | \"div\" | \"label\";\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n ({ className, size, weight, variant, as = \"p\", ...props }, ref) => {\n const Component = as;\n\n return (\n <Component\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n className={cn(textVariants({ size, weight, variant }), className)}\n {...props}\n />\n );\n },\n);\nText.displayName = \"Text\";\n\nexport { Heading, Text, headingVariants, textVariants };\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface CodeProps extends React.HTMLAttributes<HTMLElement> {\n block?: boolean;\n language?: string;\n}\n\nconst Code = React.forwardRef<HTMLElement, CodeProps>(\n ({ className, block, language, children, ...props }, ref) => {\n if (block) {\n return (\n <pre\n className={cn(\n \"relative rounded-lg border border-[var(--color-border)] p-4\",\n \"bg-[var(--color-bg-elevated)] backdrop-blur-[var(--blur-glass)]\",\n \"overflow-x-auto\",\n className,\n )}\n >\n {language && (\n <span className=\"absolute top-2 right-2 text-xs text-[var(--color-text-muted)]\">\n {language}\n </span>\n )}\n <code\n ref={ref}\n className=\"text-sm text-[var(--color-text)] font-mono\"\n {...props}\n >\n {children}\n </code>\n </pre>\n );\n }\n\n return (\n <code\n ref={ref}\n className={cn(\n \"relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm\",\n \"bg-[var(--color-bg-glass)] border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n className,\n )}\n {...props}\n >\n {children}\n </code>\n );\n },\n);\nCode.displayName = \"Code\";\n\nexport { Code };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst kbdVariants = cva(\n \"inline-flex items-center justify-center rounded border font-mono text-xs font-medium\",\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 px-1\",\n md: \"h-6 min-w-6 px-1.5\",\n lg: \"h-7 min-w-7 px-2\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof kbdVariants> {}\n\nconst Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, ...props }, ref) => {\n return (\n <kbd\n ref={ref}\n className={cn(\n kbdVariants({ size }),\n \"border-[var(--color-border)] bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"text-[var(--color-text)] shadow-sm\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nKbd.displayName = \"Kbd\";\n\nexport { Kbd, kbdVariants };\n","import * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg)] disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: [\n \"bg-transparent hover:bg-[var(--color-bg-glass-hover)]\",\n \"data-[state=on]:bg-[var(--color-bg-glass)] data-[state=on]:text-[var(--color-text)]\",\n ],\n outline: [\n \"border border-[var(--color-border)] bg-transparent\",\n \"hover:bg-[var(--color-bg-glass-hover)] hover:border-[var(--color-border-strong)]\",\n \"data-[state=on]:bg-[var(--color-bg-glass)] data-[state=on]:border-[var(--color-primary)]\",\n ],\n },\n size: {\n sm: \"h-8 px-2\",\n md: \"h-9 px-3\",\n lg: \"h-10 px-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface ToggleProps\n extends\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>,\n VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cn } from \"../utils\";\nimport { toggleVariants } from \"./toggle\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"md\",\n variant: \"default\",\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import * as React from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center rounded-full px-3 py-1 text-xs font-medium transition-all\",\n {\n variants: {\n variant: {\n default: [\n \"bg-[var(--color-bg-glass)] backdrop-blur-[var(--blur-glass)]\",\n \"border border-[var(--color-border)]\",\n \"text-[var(--color-text)]\",\n ],\n gradient: [\n \"bg-gradient-to-r from-[var(--color-primary)] to-[#ec4899]\",\n \"text-white shadow-[var(--glow-primary)]\",\n ],\n solid: [\"bg-[var(--color-bg-elevated)]\", \"text-[var(--color-text)]\"],\n },\n clickable: {\n true: \"cursor-pointer hover:scale-105 active:scale-95\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ChipProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n onRemove?: () => void;\n}\n\nconst Chip = React.forwardRef<HTMLDivElement, ChipProps>(\n (\n {\n className,\n variant,\n clickable,\n leftIcon,\n rightIcon,\n children,\n onClick,\n onRemove,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n chipVariants({ variant, clickable: clickable || !!onClick }),\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {leftIcon && <span className=\"mr-1.5\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"ml-1.5\">{rightIcon}</span>}\n {onRemove && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"ml-1.5 inline-flex items-center justify-center rounded-full hover:bg-[var(--color-bg-glass-hover)] p-0.5 transition-colors\"\n aria-label=\"Remove\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"h-3 w-3\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n );\n },\n);\nChip.displayName = \"Chip\";\n\nexport { Chip, chipVariants };\n","import * as React from \"react\";\nimport { X, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\n\nexport interface TourStep {\n target: string | (() => HTMLElement | null);\n title: string;\n description: string;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n cover?: React.ReactNode;\n}\n\nexport interface TourProps {\n steps: TourStep[];\n open?: boolean;\n current?: number;\n onClose?: () => void;\n onChange?: (current: number) => void;\n onFinish?: () => void;\n className?: string;\n}\n\nconst Tour = React.forwardRef<HTMLDivElement, TourProps>(\n (\n {\n steps,\n open = false,\n current: controlledCurrent = 0,\n onClose,\n onChange,\n onFinish,\n className,\n },\n ref,\n ) => {\n const [internalCurrent, setInternalCurrent] = React.useState(0);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [targetRect, setTargetRect] = React.useState<DOMRect | null>(null);\n\n const current = controlledCurrent ?? internalCurrent;\n const currentStep = steps[current];\n\n React.useEffect(() => {\n if (!open || !currentStep) return;\n\n const updatePosition = () => {\n const target =\n typeof currentStep.target === \"string\"\n ? document.querySelector(currentStep.target)\n : currentStep.target();\n\n if (!target) return;\n\n const rect = target.getBoundingClientRect();\n setTargetRect(rect);\n\n const placement = currentStep.placement || \"bottom\";\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case \"top\":\n top = rect.top - 200;\n left = rect.left + rect.width / 2;\n break;\n case \"bottom\":\n top = rect.bottom + 10;\n left = rect.left + rect.width / 2;\n break;\n case \"left\":\n top = rect.top + rect.height / 2;\n left = rect.left - 320;\n break;\n case \"right\":\n top = rect.top + rect.height / 2;\n left = rect.right + 10;\n break;\n }\n\n setPosition({ top, left });\n\n // Highlight target\n target.classList.add(\"tour-target\");\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition);\n\n // Remove highlight\n const target =\n typeof currentStep.target === \"string\"\n ? document.querySelector(currentStep.target)\n : currentStep.target();\n target?.classList.remove(\"tour-target\");\n };\n }, [open, current, currentStep]);\n\n if (!open || !currentStep) return null;\n\n const handlePrevious = () => {\n const newCurrent = Math.max(0, current - 1);\n setInternalCurrent(newCurrent);\n onChange?.(newCurrent);\n };\n\n const handleNext = () => {\n if (current === steps.length - 1) {\n onFinish?.();\n onClose?.();\n } else {\n const newCurrent = Math.min(steps.length - 1, current + 1);\n setInternalCurrent(newCurrent);\n onChange?.(newCurrent);\n }\n };\n\n return (\n <>\n {/* Overlay */}\n <div\n className=\"fixed inset-0 z-[9998]\"\n style={{\n background: \"rgba(0, 0, 0, 0.5)\",\n pointerEvents: \"none\",\n }}\n />\n\n {/* Target highlight */}\n {targetRect && (\n <div\n className=\"fixed z-[9999] pointer-events-none\"\n style={{\n top: targetRect.top - 4,\n left: targetRect.left - 4,\n width: targetRect.width + 8,\n height: targetRect.height + 8,\n border: \"2px solid var(--color-primary)\",\n borderRadius: \"8px\",\n boxShadow: \"0 0 0 9999px rgba(0, 0, 0, 0.5)\",\n }}\n />\n )}\n\n {/* Tour card */}\n <div\n ref={ref}\n className={cn(\n \"fixed z-[10000] w-80 rounded-lg border border-[var(--color-border)]\",\n \"bg-[var(--color-bg-secondary)] backdrop-blur-[var(--blur-heavy)]\",\n \"shadow-[var(--shadow-elevated)]\",\n \"animate-in fade-in zoom-in-95\",\n className,\n )}\n style={{\n top: position.top,\n left: position.left,\n transform: \"translateX(-50%)\",\n }}\n >\n {currentStep.cover && (\n <div className=\"rounded-t-lg overflow-hidden\">\n {currentStep.cover}\n </div>\n )}\n\n <div className=\"p-4\">\n <div className=\"flex items-start justify-between mb-2\">\n <h3 className=\"text-lg font-semibold text-[var(--color-text)]\">\n {currentStep.title}\n </h3>\n <button\n onClick={onClose}\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n\n <p className=\"text-sm text-[var(--color-text-secondary)] mb-4\">\n {currentStep.description}\n </p>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"text-xs text-[var(--color-text-muted)]\">\n {current + 1} / {steps.length}\n </div>\n\n <div className=\"flex gap-2\">\n {current > 0 && (\n <Button variant=\"outline\" size=\"sm\" onClick={handlePrevious}>\n <ChevronLeft className=\"h-4 w-4 mr-1\" />\n Previous\n </Button>\n )}\n <Button variant=\"gradient\" size=\"sm\" onClick={handleNext}>\n {current === steps.length - 1 ? \"Finish\" : \"Next\"}\n {current < steps.length - 1 && (\n <ChevronRight className=\"h-4 w-4 ml-1\" />\n )}\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n <style>{`\n .tour-target {\n position: relative;\n z-index: 9999;\n }\n `}</style>\n </>\n );\n },\n);\nTour.displayName = \"Tour\";\n\nexport { Tour };\n","import * as React from \"react\";\n\ntype Theme = \"dark\" | \"light\" | \"system\";\n\ntype ThemeProviderProps = {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\ntype ThemeProviderState = {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n};\n\nconst initialState: ThemeProviderState = {\n theme: \"dark\",\n setTheme: () => null,\n};\n\nconst ThemeProviderContext = React.createContext<ThemeProviderState>(initialState);\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"dark\",\n storageKey = \"baole-ui-theme\",\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = React.useState<Theme>(\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\n );\n\n React.useEffect(() => {\n const root = window.document.documentElement;\n\n root.classList.remove(\"light\", \"dark\");\n\n if (theme === \"system\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n\n root.classList.add(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n }, [theme]);\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n\nexport const useTheme = () => {\n const context = React.useContext(ThemeProviderContext);\n\n if (context === undefined)\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n\n return context;\n};\n"],"names":["r","f","n","o","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","_a","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","key","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","i","group","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","falsyToString","cx","cva","base","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","React","size","asChild","loading","leftIcon","rightIcon","fullWidth","children","disabled","ref","Comp","Slot","isDisabled","content","jsxs","Fragment","jsx","Loader2","cardVariants","Card","padding","hoverable","bordered","style","accentColor","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","badgeVariants","Badge","dot","removable","onRemove","e","X","inputVariants","Input","type","statusProp","hint","error","suffix","clearable","onClear","wrapperClassName","status","showClear","input","InputNumber","controlledValue","defaultValue","min","max","step","precision","onChange","formatter","parser","controls","internalValue","setInternalValue","inputRef","formatValue","val","parseValue","displayValue","parsed","clampValue","clamped","handleChange","handleStep","direction","currentValue","newValue","canStepUp","canStepDown","Plus","Minus","Textarea","id","generatedId","textareaId","errorId","hintId","hasError","Checkbox","description","checkboxId","checkbox","CheckboxPrimitive","Check","Switch","switchId","switchElement","SwitchPrimitives","RadioGroup","RadioGroupPrimitive","RadioGroupItem","radioId","radio","Circle","labelVariants","Label","required","LabelPrimitive","Slider","showValue","SliderPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","InputOTPSeparator","Dot","FormContext","Form","onSubmit","errors","touched","FormItem","name","FormSection","title","FormActions","toDate","argStr","constructFrom","date","millisecondsInWeek","millisecondsInDay","defaultOptions","getDefaultOptions","startOfWeek","options","weekStartsOn","_b","_d","_c","_date","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeekYear","fourthOfJanuary","isDate","isValid","startOfYear","cleanDate","formatDistanceLocale","formatDistance","token","count","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","matched","Calendar","showOutsideDays","DayPicker","ChevronLeft","ChevronRight","Popover","PopoverPrimitive","PopoverTrigger","PopoverAnchor","PopoverContent","align","sideOffset","DatePicker","onDateChange","placeholder","CalendarIcon","DateRangePicker","dateRange","onDateRangeChange","ScrollArea","ScrollAreaPrimitive","ScrollBar","orientation","TimePicker","minuteStep","secondStep","showSecond","open","setOpen","_","seconds","getDisplayTime","h","m","s","period","handleTimeSelect","newTime","isPM","hour24","handlePeriodToggle","currentHours","getCurrentHour","Clock","hour","minute","second","defaultPresetColors","ColorPicker","presetColors","showInput","color","Rating","readonly","allowHalf","hoverValue","setHoverValue","sizeClasses","handleClick","isHalf","handleMouseEnter","handleMouseLeave","isFilled","isHalfFilled","Star","Upload","accept","multiple","maxSize","maxCount","fileList","beforeUpload","customRequest","listType","files","setFiles","handleFileChange","selectedFiles","file","newFile","newFiles","response","updatedFiles","handleRemove","UploadIcon","FileIcon","AutoComplete","onSelect","activeIndex","setActiveIndex","containerRef","filteredOptions","option","handleClickOutside","event","handleSelect","handleKeyDown","prev","Mentions","rows","mentionSearch","setMentionSearch","mentionPosition","setMentionPosition","textareaRef","cursorPosition","mentionMatch","textBeforeCursor","textAfterCursor","beforeMention","newPosition","node","Cascader","changeOnSelect","activeMenus","setActiveMenus","getSelectedOptions","vals","currentOptions","opt","level","displayLabel","selectedOptions","menu","isSelected","hasChildren","Transfer","dataSource","targetKeys","selectedKeys","onSelectChange","titles","showSearch","leftSelected","setLeftSelected","rightSelected","setRightSelected","leftSearch","setLeftSearch","rightSearch","setRightSearch","leftDataSource","item","rightDataSource","filteredLeftData","filteredRightData","handleLeftCheck","checked","newSelected","handleRightCheck","handleMoveToRight","newTargetKeys","handleMoveToLeft","renderList","data","selected","onCheck","search","onSearchChange","TreeSelect","treeData","treeCheckable","expandedKeys","setExpandedKeys","flattenTree","nodes","traverse","findNodeByValue","getSelectedNodes","getDisplayText","selectedNodes","currentValues","newValues","v","handleExpand","nodeValue","renderTreeNode","isExpanded","child","alertVariants","iconMap","Info","CheckCircle2","AlertTriangle","AlertCircle","Alert","icon","dismissible","onDismiss","dismissed","setDismissed","handleDismiss","Icon","showIcon","AlertTitle","AlertDescription","Progress","progressValue","ProgressPrimitive","Skeleton","lines","animated","height","baseStyles","spinnerVariants","Spinner","Toaster","Sonner","EmptyState","action","Result","subtitle","extra","defaultIcons","XCircle","Notification","onClose","icons","NotificationManager","notifications","notification","Message","duration","timer","messageInstances","updateCallback","show","instance","close","msg","MessageManager","MessageContainer","messages","setMessages","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Sheet","shouldScaleBackground","DrawerPrimitive","SheetTrigger","SheetPortal","SheetClose","SheetOverlay","SheetContent","SheetHeader","SheetFooter","SheetTitle","SheetDescription","DrawerContext","Drawer","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","drawerContentVariants","DrawerContent","finalDirection","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","Modal","onOpenChange","footer","centered","closable","maskClosable","handleMaskClick","handleClose","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","DropdownMenuSubContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","NavigationMenu","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuIndicator","MenubarMenu","MenubarPrimitive","MenubarGroup","MenubarPortal","MenubarSub","MenubarRadioGroup","Menubar","MenubarTrigger","MenubarSubTrigger","MenubarSubContent","MenubarContent","alignOffset","MenubarItem","MenubarCheckboxItem","MenubarRadioItem","MenubarLabel","MenubarSeparator","MenubarShortcut","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","MoreHorizontal","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis","Anchor","links","controlledActiveLink","offsetTop","targetOffset","internalActiveLink","setInternalActiveLink","activeLink","handleScroll","scrollPosition","sections","link","main","current","section","href","target","top","renderLink","stepsVariants","Steps","items","onStepChange","sizes","getStepStatus","renderStepIcon","stepStatus","iconClasses","renderStep","isLast","isClickable","Segmented","block","Sidebar","collapsible","defaultCollapsed","controlledCollapsed","onCollapsedChange","collapsedWidth","internalCollapsed","setInternalCollapsed","collapsed","handleToggle","newCollapsed","SidebarHeader","SidebarContent","SidebarFooter","SidebarGroup","SidebarGroupLabel","SidebarGroupContent","SidebarMenuItem","active","avatarVariants","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","CarouselContext","useCarousel","Carousel","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","scrollPrev","scrollNext","CarouselContent","CarouselItem","CarouselPrevious","ArrowLeft","CarouselNext","ArrowRight","Image","src","alt","fallback","onError","aspectRatio","objectFit","setError","setLoading","aspectRatioClasses","objectFitClasses","handleError","handleLoad","ImageIcon","Statistic","trend","trendValue","valueClassName","ArrowUp","ArrowDown","List","divided","onItemClick","itemClassName","Descriptions","columns","layout","gridCols","Timeline","getColorClass","Stepper","steps","currentStep","isCompleted","isCurrent","isUpcoming","tagVariants","Tag","Tree","checkable","controlledCheckedKeys","controlledExpandedKeys","controlledSelectedKeys","onExpand","internalCheckedKeys","setInternalCheckedKeys","internalExpandedKeys","setInternalExpandedKeys","internalSelectedKeys","setInternalSelectedKeys","checkedKeys","newExpandedKeys","handleCheck","newCheckedKeys","newSelectedKeys","isChecked","QRCode","bgColor","fgColor","includeMargin","imageSettings","canvasRef","canvas","ctx","cellSize","margin","hash","j","cornerSize","x","y","img","imgX","imgY","CustomTooltip","payload","entry","LineChart","xKey","showGrid","showLegend","ResponsiveContainer","RechartsLineChart","CartesianGrid","XAxis","YAxis","Legend","line","Line","BarChart","bars","RechartsBarChart","bar","Bar","AreaChart","areas","RechartsAreaChart","area","Area","PieChart","innerRadius","COLORS","RechartsPieChart","Pie","Cell","Layout","LayoutHeader","LayoutSider","LayoutContent","LayoutFooter","Separator","decorative","SeparatorPrimitive","Divider","AspectRatio","AspectRatioPrimitive","ResizablePanelGroup","ResizablePrimitive","ResizablePanel","ResizableHandle","withHandle","GripVertical","containerVariants","Container","stackVariants","Stack","spacing","justify","wrap","gridVariants","Grid","cols","gap","gridItemVariants","GridItem","span","spaceVariants","Space","split","childrenArray","Affix","offsetBottom","affixed","setAffixed","styles","setStyles","placeholderRef","contentRef","getTarget","placeholderRect","newAffixed","newStyles","viewportHeight","BackTop","visibilityHeight","onClick","visible","setVisible","scrollToTop","FloatButton","tooltip","shape","badge","button","FloatButtonGroup","trigger","controlledOpen","internalOpen","setInternalOpen","newOpen","Watermark","rotate","zIndex","image","font","fontSize","fontWeight","fontFamily","base64Url","setBase64Url","ratio","canvasWidth","canvasHeight","text","headingVariants","Heading","gradient","as","textVariants","Text","weight","Code","language","kbdVariants","Kbd","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","chipVariants","Chip","clickable","Tour","controlledCurrent","onFinish","internalCurrent","setInternalCurrent","setPosition","targetRect","setTargetRect","updatePosition","rect","placement","left","handlePrevious","newCurrent","handleNext","initialState","ThemeProviderContext","ThemeProvider","defaultTheme","storageKey","setTheme","root","systemTheme","useTheme"],"mappings":"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","x_google_ignoreList":[0,1,3,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}
|