@flysk-tech/amocrm-kommo-vue-ui-kit 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/appearance.ts","../src/composables/useTheme.ts","../src/composables/useComponentTheme.ts","../src/composables/usePortal.ts","../src/composables/useFormValidation.ts","../src/composables/useThemeClassName.ts","../src/utils/index.ts","../src/components/BaseInput/BaseInput.vue","../src/components/VisuallyHiddenInput/VisuallyHiddenInput.vue","../src/components/Spinner/Spinner.vue","../src/components/Button/composables/useButtonAnimations.ts","../src/components/Button/Button.vue","../src/components/Button/Button.themes.ts","../src/components/Text/Text.themes.ts","../src/components/Input/Input.themes.ts","../src/components/Input/Input.vue","../src/components/TextArea/TextArea.vue","../src/components/TextArea/TextArea.themes.ts","../src/components/Text/Text.vue","../src/components/InlineInput/InlineInput.themes.ts","../src/components/InlineInput/InlineInput.vue","../src/components/Switcher/Switcher.vue","../src/components/Label/Label.vue","../src/components/Switcher/Switcher.themes.ts","../src/components/SelectButton/SelectButton.vue","../src/components/SelectButton/SelectButton.themes.ts","../src/lib/vue/createComponentContext.ts","../src/components/Select/Select.context.ts","../src/components/Select/Select.vue","../src/components/Select/Select.themes.ts","../src/components/Select/components/Option/Option.vue","../src/components/Select/components/Item/Item.vue","../src/components/Select/components/Item/Item.themes.ts","../src/components/Select/components/Arrow/Arrow.vue","../src/components/Select/components/Arrow/Arrow.themes.ts","../src/components/Select/components/Icon/Icon.vue","../src/components/Select/components/Icon/Icon.themes.ts","../src/components/List/List.vue","../src/components/List/List.themes.ts","../src/components/Select/components/Button/Button.vue","../src/composables/useOnOutsideClick.ts","../src/components/Select/components/List/SelectList.vue","../src/components/Select/components/Value/Value.vue","../src/components/MultiSelect/MultiSelect.context.ts","../src/components/MultiSelect/MultiSelect.vue","../src/components/MultiSelect/MultiSelect.themes.ts","../src/components/MultiSelect/components/Trigger/Trigger.vue","../src/components/MultiSelect/components/List/MultiSelectList.vue","../src/lib/utils.ts","../src/components/Checkbox/Checkbox.vue","../src/components/Label/LabelGroup.vue","../src/components/Label/Label.themes.ts","../src/components/Checkbox/Checkbox.themes.ts","../src/components/MultiSelect/components/Item/Item.vue","../src/components/MultiSelect/components/Group/Group.vue","../src/components/MultiSelect/components/All/All.vue","../src/components/MultiSelect/components/Value/Value.vue","../src/components/MultiSelect/components/Search/Search.vue","../src/components/MultiSelect/components/Combobox/Combobox.vue","../src/components/Portal/Portal.vue","../src/components/ContentBlock/ContentBlock.vue","../src/components/ContentBlock/ContentBlock.themes.ts","../src/components/Link/Link.vue","../src/components/Link/Link.themes.ts","../src/components/Spinner/Spinner.themes.ts","../src/components/Callout/Callout.vue","../src/icons/warning.svg","../src/icons/error.svg","../src/icons/success.svg","../src/icons/info.svg","../src/components/Callout/Callout.themes.ts","../src/components/Accordion/Accordion.context.ts","../src/components/Accordion/components/AccordionSingle/AccordionSingle.vue","../src/components/Accordion/components/AccordionMultiple/AccordionMultiple.vue","../src/components/Accordion/Accordion.vue","../src/icons/chevronDown.svg","../src/components/Accordion/components/Item/Item.vue","../src/components/Accordion/Accordion.themes.ts","../src/components/Accordion/components/Item/Item.themes.ts","../src/components/Accordion/index.ts","../src/components/FilterTabs/FilterTabs.context.ts","../src/components/FilterTabs/FilterTabs.vue","../src/components/FilterTabs/FilterTabs.themes.ts","../src/components/FilterTabs/components/ItemRoot/ItemRoot.context.ts","../src/components/FilterTabs/components/ItemRoot/ItemRoot.vue","../src/components/FilterTabs/components/ItemRoot/ItemRoot.themes.ts","../src/components/FilterTabs/components/Tab/Tab.vue","../src/components/FilterTabs/components/Tab/Tab.themes.ts","../src/components/CheckboxGroup/CheckboxGroup.context.ts","../src/components/CheckboxGroup/composables/useCheckboxGroupState.ts","../src/components/CheckboxGroup/CheckboxGroup.vue","../src/components/CheckboxGroup/CheckboxGroup.themes.ts","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.context.ts","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.vue","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.themes.ts","../src/components/CheckboxGroup/components/CheckboxSelectAll/ItemRootSelectAll.context.ts","../src/components/CheckboxGroup/components/CheckboxSelectAll/ItemRootSelectAll.vue","../src/components/CheckboxGroup/components/CheckboxSelectAll/CheckboxSelectAll.vue","../src/components/RadioGroup/RadioGroup.context.ts","../src/components/RadioGroup/components/ItemRoot/ItemRoot.context.ts","../src/components/RadioGroup/components/ItemRoot/ItemRoot.vue","../src/components/RadioGroup/components/ItemRoot/ItemRoot.themes.ts","../src/components/RadioGroup/components/Radio/Radio.vue","../src/components/RadioGroup/components/Radio/Radio.themes.ts","../src/components/RadioGroup/RadioGroup.vue","../src/components/RadioGroup/RadioGroup.themes.ts","../src/index.ts"],"sourcesContent":["export enum Appearance {\n /**\n * Standard theme\n */\n DEFAULT = 'default',\n /**\n * Alternative \"Dark\" Theme\n */\n ALTERNATIVE = 'alternative',\n}\n\nexport const APPEARANCE_ATTRIBUTE_NAME = 'data-crm-ui-kit-theme'\nexport const DEFAULT_APPEARANCE = Appearance.DEFAULT","import { provide, inject, ref, computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\nimport type { ThemeConfig, ThemeMode } from '@/types/theme'\nimport { Appearance } from '@/lib/appearance'\n\n// Ключ для provide/inject\nexport const THEME_PROVIDER_KEY = Symbol('theme-provider')\n\n// Интерфейс контекста темы\nexport interface ThemeContext {\n themeConfig: Readonly<Ref<ThemeConfig>>\n appearance: Readonly<Ref<Appearance>>\n setTheme: (config: Partial<ThemeConfig>) => void\n setAppearance: (appearance: Appearance) => void\n toggleTheme: () => void\n}\n\n// Функция для предоставления темы\nexport function provideTheme(initialConfig?: Partial<ThemeConfig>): ThemeContext {\n const themeConfig = ref<ThemeConfig>({\n mode: 'light',\n customVariables: {},\n ...initialConfig\n })\n\n const appearance = computed<Appearance>(() => {\n return themeConfig.value.mode === 'dark' ? Appearance.ALTERNATIVE : Appearance.DEFAULT\n })\n\n const setTheme = (config: Partial<ThemeConfig>) => {\n themeConfig.value = {\n ...themeConfig.value,\n ...config\n }\n updateDocumentTheme(themeConfig.value)\n }\n\n const setAppearance = (newAppearance: Appearance) => {\n const mode: ThemeMode = newAppearance === Appearance.ALTERNATIVE ? 'dark' : 'light'\n setTheme({ mode })\n }\n\n const toggleTheme = () => {\n const newMode: ThemeMode = themeConfig.value.mode === 'light' ? 'dark' : 'light'\n setTheme({ mode: newMode })\n }\n\n // Инициализация темы в DOM\n updateDocumentTheme(themeConfig.value)\n\n const context: ThemeContext = {\n themeConfig: readonly(themeConfig),\n appearance: readonly(appearance),\n setTheme,\n setAppearance,\n toggleTheme\n }\n\n provide(THEME_PROVIDER_KEY, context)\n return context\n}\n\n// Функция для использования темы\nexport function useTheme(): ThemeContext {\n const context = inject<ThemeContext>(THEME_PROVIDER_KEY)\n\n if (!context) {\n throw new Error(\n 'useTheme must be used within a component that has provideTheme() called in a parent component'\n )\n }\n\n return context\n}\n\n// Функция для обновления DOM с темой\nfunction updateDocumentTheme(config: ThemeConfig) {\n if (typeof document === 'undefined') return\n\n // Устанавливаем data-theme атрибут\n document.documentElement.setAttribute('data-theme', config.mode)\n\n // Устанавливаем кастомные CSS переменные\n if (config.customVariables) {\n Object.entries(config.customVariables).forEach(([property, value]) => {\n document.documentElement.style.setProperty(property, value)\n })\n }\n}\n\n// Хук для получения текущего режима темы\nexport function useThemeMode(): Readonly<Ref<ThemeMode>> {\n const { themeConfig } = useTheme()\n return computed(() => themeConfig.value.mode)\n}\n\n// Хук для CSS переменных темы\nexport function useThemeVariables(): Readonly<Ref<Record<string, string>>> {\n const { themeConfig } = useTheme()\n return computed(() => themeConfig.value.customVariables || {})\n}","import { computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\nimport type { ComponentThemeVariables, CSSVariables } from '@/types/theme'\n\n// Композиционная функция для работы с темами компонентов\nexport function useComponentTheme<T extends ComponentThemeVariables>(\n componentName: string,\n theme: T | Ref<T>\n) {\n const themeRef = typeof theme === 'object' && 'value' in theme ? theme : computed(() => theme)\n\n // Генерируем CSS переменные с префиксом компонента\n const cssVariables = computed<CSSVariables>(() => {\n const vars: CSSVariables = {}\n\n Object.entries(themeRef.value).forEach(([key, value]) => {\n const cssVarName = `--crm-ui-kit-${componentName}-${key}` as keyof CSSVariables\n vars[cssVarName] = String(value)\n })\n\n return vars\n })\n\n // Объект стилей для привязки к элементу\n const styleVars = computed(() => {\n const styles: Record<string, string> = {}\n\n Object.entries(cssVariables.value).forEach(([property, value]) => {\n styles[property] = value\n })\n\n return styles\n })\n\n return {\n cssVariables: readonly(cssVariables),\n styleVars: readonly(styleVars)\n }\n}\n\n// Хелпер для создания темы компонента\nexport function createComponentTheme<T extends ComponentThemeVariables>(\n componentName: string,\n defaultTheme: T\n) {\n return function useTheme(customTheme?: Partial<T>) {\n const theme = computed(() => ({\n ...defaultTheme,\n ...customTheme\n }))\n\n return useComponentTheme(componentName, theme)\n }\n}","import { ref, readonly, onMounted, onUnmounted } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\ninterface UsePortalReturn {\n portalTarget: DeepReadonly<Ref<HTMLElement | undefined>>\n isReady: DeepReadonly<Ref<boolean>>\n}\n\n// Композиционная функция для работы с порталами (телепортацией)\nexport function usePortal(targetSelector?: string): UsePortalReturn {\n const portalTarget = ref<HTMLElement>()\n const isReady = ref(false)\n\n const createPortalTarget = (selector: string) => {\n if (typeof document === 'undefined') return null\n\n let target = document.querySelector<HTMLElement>(selector)\n\n if (!target) {\n // Если элемент не найден, создаем его\n target = document.createElement('div')\n target.setAttribute('id', selector.replace('#', ''))\n document.body.appendChild(target)\n }\n\n return target\n }\n\n onMounted(() => {\n if (typeof document === 'undefined') return\n\n if (targetSelector) {\n portalTarget.value = createPortalTarget(targetSelector) || document.body\n } else {\n portalTarget.value = document.body\n }\n\n isReady.value = true\n })\n\n onUnmounted(() => {\n // Очищаем созданные нами элементы при размонтировании\n if (\n targetSelector &&\n portalTarget.value &&\n portalTarget.value !== document.body &&\n portalTarget.value.children.length === 0\n ) {\n portalTarget.value.remove()\n }\n })\n\n return {\n portalTarget: readonly(portalTarget),\n isReady: readonly(isReady)\n }\n}\n\n// Хелпер для создания уникального селектора портала\nexport function createPortalId(prefix: string = 'amocrm-portal'): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`\n}\n\n// Предустановленные порталы для различных целей\nexport const PORTAL_TARGETS = {\n MODAL: '#amocrm-modal-portal',\n TOOLTIP: '#amocrm-tooltip-portal',\n DROPDOWN: '#amocrm-dropdown-portal',\n NOTIFICATION: '#amocrm-notification-portal'\n} as const\n\n// Композиционная функция для модальных окон\nexport function useModalPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.MODAL)\n}\n\n// Композиционная функция для тултипов\nexport function useTooltipPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.TOOLTIP)\n}\n\n// Композиционная функция для выпадающих списков\nexport function useDropdownPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.DROPDOWN)\n}","import { ref, computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\n\n// Тип для правила валидации\nexport type ValidationRule<T = any> = (value: T) => string | true\n\n// Интерфейс для состояния валидации поля\nexport interface FieldValidation<T = any> {\n value: Ref<T>\n error: Ref<string | null>\n isValid: Ref<boolean>\n isDirty: Ref<boolean>\n validate: () => boolean\n clearError: () => void\n touch: () => void\n}\n\n// Композиционная функция для валидации одного поля\nexport function useFieldValidation<T>(\n initialValue: T,\n rules: ValidationRule<T>[] = []\n): FieldValidation<T> {\n const value = ref<T>(initialValue) as Ref<T>\n const error = ref<string | null>(null)\n const isDirty = ref(false)\n\n const isValid = computed(() => error.value === null)\n\n const validate = (): boolean => {\n for (const rule of rules) {\n const result = rule(value.value)\n if (result !== true) {\n error.value = result\n return false\n }\n }\n error.value = null\n return true\n }\n\n const clearError = () => {\n error.value = null\n }\n\n const touch = () => {\n isDirty.value = true\n }\n\n return {\n value,\n error: readonly(error),\n isValid: readonly(isValid),\n isDirty: readonly(isDirty),\n validate,\n clearError,\n touch\n }\n}\n\n// Композиционная функция для валидации формы\nexport function useFormValidation<T extends Record<string, any>>(\n initialValues: T,\n rules: Partial<Record<keyof T, ValidationRule<T[keyof T]>[]>> = {}\n) {\n const fields = {} as Record<keyof T, FieldValidation<T[keyof T]>>\n const errors = ref<Partial<Record<keyof T, string>>>({})\n\n // Создаем поля валидации для каждого значения\n Object.keys(initialValues).forEach(<K extends keyof T>(key: K) => {\n const fieldRules = rules[key] || []\n fields[key] = useFieldValidation(initialValues[key], fieldRules)\n })\n\n const isFormValid = computed(() => {\n return Object.values(fields).every(field => field.isValid.value)\n })\n\n const hasErrors = computed(() => {\n return Object.values(fields).some(field => field.error.value !== null)\n })\n\n const validateField = <K extends keyof T>(fieldName: K): boolean => {\n const field = fields[fieldName]\n if (!field) return true\n\n const isValid = field.validate()\n if (!isValid && field.error.value) {\n errors.value[fieldName] = field.error.value\n } else {\n delete errors.value[fieldName]\n }\n return isValid\n }\n\n const validateForm = (): boolean => {\n let isValid = true\n const newErrors: Partial<Record<keyof T, string>> = {}\n\n Object.keys(fields).forEach(<K extends keyof T>(key: K) => {\n const fieldValid = validateField(key)\n if (!fieldValid && fields[key].error.value) {\n newErrors[key] = fields[key].error.value\n isValid = false\n }\n })\n\n errors.value = newErrors\n return isValid\n }\n\n const clearErrors = () => {\n Object.values(fields).forEach(field => field.clearError())\n errors.value = {}\n }\n\n const clearFieldError = <K extends keyof T>(fieldName: K) => {\n fields[fieldName]?.clearError()\n delete errors.value[fieldName]\n }\n\n const setFieldError = <K extends keyof T>(fieldName: K, error: string) => {\n if (fields[fieldName]) {\n fields[fieldName].error.value = error\n errors.value[fieldName] = error\n }\n }\n\n const getFieldValue = <K extends keyof T>(fieldName: K): T[K] => {\n return fields[fieldName]?.value.value as T[K]\n }\n\n const setFieldValue = <K extends keyof T>(fieldName: K, value: T[K]) => {\n if (fields[fieldName]) {\n fields[fieldName].value.value = value\n }\n }\n\n return {\n fields,\n errors: readonly(errors),\n isFormValid: readonly(isFormValid),\n hasErrors: readonly(hasErrors),\n validateField,\n validateForm,\n clearErrors,\n clearFieldError,\n setFieldError,\n getFieldValue,\n setFieldValue\n }\n}\n\n// Предустановленные правила валидации\nexport const ValidationRules = {\n required: (message = 'Поле обязательно для заполнения'): ValidationRule => {\n return (value: any) => {\n if (value === null || value === undefined || value === '') {\n return message\n }\n return true\n }\n },\n\n minLength: (min: number, message?: string): ValidationRule<string> => {\n return (value: string) => {\n if (value && value.length < min) {\n return message || `Минимальная длина: ${min} символов`\n }\n return true\n }\n },\n\n maxLength: (max: number, message?: string): ValidationRule<string> => {\n return (value: string) => {\n if (value && value.length > max) {\n return message || `Максимальная длина: ${max} символов`\n }\n return true\n }\n },\n\n email: (message = 'Некорректный email адрес'): ValidationRule<string> => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return (value: string) => {\n if (value && !emailRegex.test(value)) {\n return message\n }\n return true\n }\n },\n\n pattern: (regex: RegExp, message = 'Некорректный формат'): ValidationRule<string> => {\n return (value: string) => {\n if (value && !regex.test(value)) {\n return message\n }\n return true\n }\n }\n}","import { ref, watch, onBeforeUnmount } from 'vue'\nimport type { CrmUiKitCSSProperties } from '@/lib/theme'\n\nconst DEFAULT_PREFIX = 'crm-ui-kit-theme'\n\nlet counter = 0\n\nconst stylesMap = new Map<object, { className: string; styleElement: HTMLStyleElement; refCount: number }>()\n\nconst createClass = <T extends CrmUiKitCSSProperties>(newTheme: T) => {\n const className = `${DEFAULT_PREFIX}-${++counter}`\n const styleElement = document.createElement('style')\n const stylesString = Object.entries(newTheme)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n ')\n\n styleElement.textContent = `.${className} {\\n ${stylesString}\\n}`\n document.head.appendChild(styleElement)\n\n return { className, styleElement }\n}\n\nexport const useThemeClassName = <T extends CrmUiKitCSSProperties>(\n theme: T\n) => {\n const className = ref<string>('')\n let currentTheme: object = theme\n let currentEntry: { className: string; styleElement: HTMLStyleElement; refCount: number } | undefined\n\n const updateClassName = (newTheme: T) => {\n // Уменьшаем счётчик для предыдущей темы\n if (currentEntry) {\n currentEntry.refCount--\n if (currentEntry.refCount === 0) {\n // Удаляем стиль из DOM, если больше никто не использует\n currentEntry.styleElement.remove()\n stylesMap.delete(currentTheme)\n }\n }\n\n currentTheme = newTheme\n const existedEntry = stylesMap.get(newTheme)\n\n if (existedEntry) {\n // Увеличиваем счётчик ссылок\n existedEntry.refCount++\n className.value = existedEntry.className\n currentEntry = existedEntry\n } else {\n // Создаём новый класс\n const { className: themeClassName, styleElement } = createClass(newTheme)\n const entry = { className: themeClassName, styleElement, refCount: 1 }\n stylesMap.set(newTheme, entry)\n className.value = themeClassName\n currentEntry = entry\n }\n }\n\n // Инициализация\n updateClassName(theme)\n\n // Следим за изменениями темы\n watch(() => theme, updateClassName)\n\n // Очистка при размонтировании\n onBeforeUnmount(() => {\n if (currentEntry) {\n currentEntry.refCount--\n if (currentEntry.refCount === 0) {\n currentEntry.styleElement.remove()\n stylesMap.delete(currentTheme)\n }\n }\n })\n\n return className\n}\n","// Утилитарные функции\n\n// Функция-заглушка (аналог noop из React версии)\nexport const noop = () => {}\n\n// Функция для генерации уникальных ID\nexport function generateId(prefix: string = 'amocrm'): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`\n}\n\n// Функция для работы с CSS классами (аналог classnames)\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\n// Функция для debounce\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>\n\n return function executedFunction(...args: Parameters<T>) {\n const later = () => {\n clearTimeout(timeout)\n func(...args)\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n }\n}\n\n// Функция для throttle\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean\n\n return function (this: unknown, ...args: Parameters<T>) {\n if (!inThrottle) {\n func.apply(this, args)\n inThrottle = true\n setTimeout(() => (inThrottle = false), limit)\n }\n }\n}\n\n// Функция для проверки, является ли значение объектом\nexport function isObject(value: any): value is Record<string, any> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\n// Функция для глубокого слияния объектов\nexport function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isObject(sourceValue) && isObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue as Partial<typeof targetValue>)\n } else {\n result[key] = sourceValue as T[Extract<keyof T, string>]\n }\n }\n }\n\n return result\n}\n\n// Функция для проверки поддержки браузером определенной функции\nexport function isSupported(feature: string): boolean {\n if (typeof window === 'undefined') return false\n\n switch (feature) {\n case 'IntersectionObserver':\n return 'IntersectionObserver' in window\n case 'ResizeObserver':\n return 'ResizeObserver' in window\n case 'MutationObserver':\n return 'MutationObserver' in window\n default:\n return false\n }\n}","<template>\n <input\n v-bind=\"$attrs\"\n ref=\"inputRef\"\n :class=\"[\n styles.input,\n {\n [styles.placeholder_visible]: isPlaceholderVisibleOnFocus\n }\n ]\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadonly\"\n />\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref } from 'vue'\nimport type { BaseInputProps } from './BaseInput.types'\nimport styles from './BaseInput.module.scss'\n\ntype Props = BaseInputProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n})\n\nconst inputRef = ref<HTMLInputElement | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <BaseInput\n ref=\"inputRef\"\n :class=\"styles.input\"\n v-bind=\"inputProps\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, onMounted, watch } from 'vue'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport type { VisuallyHiddenInputProps } from './VisuallyHiddenInput.types'\nimport styles from './VisuallyHiddenInput.module.scss'\n\nconst props = defineProps<VisuallyHiddenInputProps>()\n\nconst inputRef = ref<InstanceType<typeof BaseInput> | null>(null)\n\nconst inputProps = computed(() => {\n const { isChecked, isDefaultChecked, ...rest } = props\n\n if (isChecked !== undefined) {\n return { checked: isChecked, ...rest }\n }\n\n return rest\n})\n\nconst getInputElement = (): HTMLInputElement | null => {\n return inputRef.value?.inputRef ?? null\n}\n\nonMounted(() => {\n if (props.isDefaultChecked) {\n const el = getInputElement()\n if (el) el.checked = true\n }\n})\n\nif (props.isChecked !== undefined) {\n watch(() => props.isChecked, (val) => {\n const el = getInputElement()\n if (el) el.checked = !!val\n })\n}\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <span\n :class=\"[\n styles.spinner,\n { [styles.centered]: isCentered }\n ]\"\n :style=\"theme || {}\"\n v-bind=\"$attrs\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport type { SpinnerProps } from './Spinner.types'\nimport styles from './Spinner.module.scss'\n\ntype Props = SpinnerProps & {}\n\nwithDefaults(defineProps<Props>(), {\n isCentered: false,\n theme: undefined\n})\n</script>","import { ref } from 'vue'\n\n// Vue версия useShowInvalidAnimation хука из React\nexport function useShowInvalidAnimation() {\n const shouldShowInvalidAnimation = ref(false)\n\n // Функция для запуска анимации ошибки - логика идентична React версии\n const showInvalidAnimation = (onAnimationEnd = () => {}) => {\n shouldShowInvalidAnimation.value = true\n\n setTimeout(() => {\n shouldShowInvalidAnimation.value = false\n onAnimationEnd()\n }, 400) // Тот же таймаут 400мс\n }\n\n return {\n shouldShowInvalidAnimation,\n showInvalidAnimation\n }\n}\n\n// Vue версия useShowSuccessfulState хука из React\nexport function useShowSuccessfulState() {\n const shouldShowSuccessfulState = ref(false)\n\n // Функция для показа состояния успеха - логика идентична React версии\n const showSuccessfulState = (onAnimationEnd = () => {}) => {\n shouldShowSuccessfulState.value = true\n\n setTimeout(() => {\n shouldShowSuccessfulState.value = false\n onAnimationEnd()\n }, 1500) // Тот же таймаут 1500мс\n }\n\n return {\n shouldShowSuccessfulState,\n showSuccessfulState\n }\n}","<template>\n <button\n v-bind=\"$attrs\"\n :type=\"type\"\n :class=\"[\n styles.button,\n {\n [styles.invalid]: shouldShowInvalidAnimation,\n [styles.success]: shouldShowSuccessfulState,\n [styles.disabled]: isDisabled\n }\n ]\"\n :style=\"theme\"\n :disabled=\"(isDisabled || isLoading) && !isClickableWhileDisabled\"\n @click=\"handleClick\"\n >\n <span :class=\"styles.content\">\n <!-- Состояние успеха -->\n <span v-if=\"shouldShowSuccessfulState\">\n {{ successfulStateText }}\n <slot v-if=\"!successfulStateText\" />\n </span>\n\n <!-- Состояние загрузки -->\n <span v-else-if=\"isLoading\" :class=\"styles.spinner_container\">\n <Spinner\n :theme=\"isDisabled ? spinnerThemes.disabledTheme : spinnerThemes.defaultTheme\"\n :is-centered=\"true\"\n />\n </span>\n\n <!-- Обычное состояние -->\n <template v-else>\n <span v-if=\"before\" :class=\"styles.before\">\n <slot name=\"before\">{{ before }}</slot>\n </span>\n\n <span>\n <slot />\n </span>\n\n <span v-if=\"after\" :class=\"styles.after\">\n <slot name=\"after\">{{ after }}</slot>\n </span>\n </template>\n </span>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Spinner from '../Spinner/Spinner.vue'\nimport { useShowInvalidAnimation, useShowSuccessfulState } from './composables/useButtonAnimations'\nimport type { ButtonProps } from './Button.types'\nimport styles from './Button.module.scss'\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n isLoading: false,\n isDisabled: false,\n isClickableWhileDisabled: false\n})\n\nconst emit = defineEmits<{\n (e: 'click', event: MouseEvent): void\n}>()\n\nconst { shouldShowInvalidAnimation, showInvalidAnimation } = useShowInvalidAnimation()\nconst { shouldShowSuccessfulState, showSuccessfulState } = useShowSuccessfulState()\n\ndefineExpose({ showInvalidAnimation, showSuccessfulState })\n\n// Mapping тем для Spinner - точно как в React версии\nconst spinnerThemes = computed(() => {\n const defaultTheme = {\n '--crm-ui-kit-spinner-border-color': props.theme?.['--crm-ui-kit-button-spinner-border-color'],\n '--crm-ui-kit-spinner-border-width': props.theme?.['--crm-ui-kit-button-spinner-border-width'],\n '--crm-ui-kit-spinner-circle-size': props.theme?.['--crm-ui-kit-button-spinner-circle-size'],\n '--crm-ui-kit-spinner-border-style': props.theme?.['--crm-ui-kit-button-spinner-border-style'],\n }\n\n const disabledTheme = {\n ...defaultTheme,\n '--crm-ui-kit-spinner-border-color': props.theme?.['--crm-ui-kit-button-spinner-disabled-border-color'],\n }\n\n return { defaultTheme, disabledTheme }\n})\n\n// Обработка клика - идентична React версии\nconst handleClick = (event: MouseEvent) => {\n // Если кнопка disabled и не clickableWhileDisabled - не вызываем onClick\n if (props.isDisabled && !props.isClickableWhileDisabled) {\n return\n }\n\n if (props.isLoading) {\n return\n }\n\n emit('click', event)\n}\n</script>","// Типы для системы тем Button\ntype ButtonThemeKey =\n | '--crm-ui-kit-button-z-index'\n | '--crm-ui-kit-button-height'\n | '--crm-ui-kit-button-color'\n | '--crm-ui-kit-button-font-size'\n | '--crm-ui-kit-button-line-height'\n | '--crm-ui-kit-button-font-weight'\n | '--crm-ui-kit-button-padding'\n | '--crm-ui-kit-button-elements-spacing'\n | '--crm-ui-kit-button-sibling-element-spacing'\n | '--crm-ui-kit-button-border-width'\n | '--crm-ui-kit-button-border-color'\n | '--crm-ui-kit-button-border-style'\n | '--crm-ui-kit-button-border-radius'\n | '--crm-ui-kit-button-background-color'\n | '--crm-ui-kit-button-disabled-opacity'\n | '--crm-ui-kit-button-disabled-color'\n | '--crm-ui-kit-button-disabled-background-color'\n | '--crm-ui-kit-button-disabled-border-color'\n | '--crm-ui-kit-button-spinner-disabled-border-color'\n | '--crm-ui-kit-button-hover-color'\n | '--crm-ui-kit-button-hover-background-color'\n | '--crm-ui-kit-button-hover-border-width'\n | '--crm-ui-kit-button-hover-border-color'\n | '--crm-ui-kit-button-hover-border-style'\n | '--crm-ui-kit-button-hover-border-radius'\n | '--crm-ui-kit-button-success-color'\n | '--crm-ui-kit-button-success-background-color'\n | '--crm-ui-kit-button-success-hover-background-color'\n | '--crm-ui-kit-button-success-border-color'\n | '--crm-ui-kit-button-spinner-border-color'\n | '--crm-ui-kit-button-spinner-circle-size'\n | '--crm-ui-kit-button-spinner-border-width'\n | '--crm-ui-kit-button-spinner-border-style';\n\nexport type ButtonThemeType = {\n [K in ButtonThemeKey]: string;\n};\n\n// Базовые значения темы Button\nconst ButtonBaseThemeValues = {\n '--crm-ui-kit-button-z-index': '1',\n '--crm-ui-kit-button-height': '36px',\n '--crm-ui-kit-button-elements-spacing': '4px',\n '--crm-ui-kit-button-font-size': '14px',\n '--crm-ui-kit-button-line-height': '14px',\n '--crm-ui-kit-button-font-weight': 'bold',\n '--crm-ui-kit-button-sibling-element-spacing': '7px',\n '--crm-ui-kit-button-disabled-opacity': 'var(--crm-ui-kit-disabled-opacity)',\n '--crm-ui-kit-button-padding': '0px 10px',\n\n '--crm-ui-kit-button-border-width': '1px',\n '--crm-ui-kit-button-border-style': 'solid',\n '--crm-ui-kit-button-border-radius': '3px',\n\n '--crm-ui-kit-button-hover-border-width': '1px',\n '--crm-ui-kit-button-hover-border-style': 'solid',\n '--crm-ui-kit-button-hover-border-radius': '3px',\n\n '--crm-ui-kit-button-success-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-success-background-color': 'var(--crm-ui-kit-color-mustard-yellow)',\n '--crm-ui-kit-button-success-hover-background-color': 'var(--crm-ui-kit-color-amber)',\n '--crm-ui-kit-button-success-border-color': 'var(--crm-ui-kit-color-goldenrod)',\n\n '--crm-ui-kit-button-spinner-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n '--crm-ui-kit-button-spinner-disabled-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n '--crm-ui-kit-button-spinner-border-width': '2px',\n '--crm-ui-kit-button-spinner-circle-size': '16px',\n '--crm-ui-kit-button-spinner-border-style': 'solid',\n}\n\n// Нейтральная тема Button - адаптирована под наши CSS переменные\nexport const ButtonNeutralTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-button-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-disabled-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-button-disabled-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-hover-background-color': 'var(--crm-ui-kit-palette-button-classic-hover-background)',\n '--crm-ui-kit-button-hover-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n}\n\n// Основная тема Button\nexport const ButtonPrimaryTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-border-color': 'var(--crm-ui-kit-color-cerulean-blue)',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-disabled-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-button-disabled-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-button-background-color': 'var(--crm-ui-kit-palette-active-element-900)',\n\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-hover-background-color': 'var(--crm-ui-kit-color-azure-blue)',\n '--crm-ui-kit-button-hover-border-color': 'var(--crm-ui-kit-color-cerulean-blue)',\n\n '--crm-ui-kit-button-spinner-border-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-spinner-disabled-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n}\n\n// Вторичная тема Button\nexport const ButtonSecondaryTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-height': '30px',\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-button-padding': '0px 8px',\n '--crm-ui-kit-button-border-color': 'transparent',\n '--crm-ui-kit-button-background-color': 'inherit',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-button-disabled-background-color': 'inherit',\n '--crm-ui-kit-button-disabled-border-color': 'transparent',\n\n '--crm-ui-kit-button-hover-background-color': 'inherit',\n '--crm-ui-kit-button-hover-border-color': 'transparent',\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n}","type TextThemeKey =\n | '--crm-ui-kit-text-color'\n | '--crm-ui-kit-text-font'\n | '--crm-ui-kit-text-size-s-font-size'\n | '--crm-ui-kit-text-size-s-line-height'\n | '--crm-ui-kit-text-size-m-font-size'\n | '--crm-ui-kit-text-size-m-line-height'\n | '--crm-ui-kit-text-size-ms-font-size'\n | '--crm-ui-kit-text-size-ms-line-height'\n | '--crm-ui-kit-text-size-l-font-size'\n | '--crm-ui-kit-text-size-l-line-height'\n | '--crm-ui-kit-text-size-xl-font-size'\n | '--crm-ui-kit-text-size-xl-line-height';\n\nexport type TextTheme = {\n [K in TextThemeKey]: string;\n};\n\ntype TextBaseSizesThemeType = Omit<\n TextTheme,\n '--crm-ui-kit-text-color' | '--crm-ui-kit-text-font'\n>;\n\nexport const TextBaseSizesTheme: TextBaseSizesThemeType = {\n '--crm-ui-kit-text-size-s-font-size': '11px',\n '--crm-ui-kit-text-size-s-line-height': '15px',\n '--crm-ui-kit-text-size-m-font-size': '13px',\n '--crm-ui-kit-text-size-m-line-height': '20px',\n '--crm-ui-kit-text-size-ms-font-size': '13px',\n '--crm-ui-kit-text-size-ms-line-height': '15px',\n '--crm-ui-kit-text-size-l-font-size': '15px',\n '--crm-ui-kit-text-size-l-line-height': '20px',\n '--crm-ui-kit-text-size-xl-font-size': '18px',\n '--crm-ui-kit-text-size-xl-line-height': '24px',\n};\n\nexport const TextPrimaryTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextSecondaryLightTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextSecondaryDarkTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-secondary-dark)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextErrorTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};","import { TextPrimaryTheme, TextErrorTheme, type TextTheme } from '../Text/Text.themes'\n\ntype InputThemeKey =\n | '--crm-ui-kit-input-font-size'\n | '--crm-ui-kit-input-line-height'\n | '--crm-ui-kit-input-border-top'\n | '--crm-ui-kit-input-border-bottom'\n | '--crm-ui-kit-input-border-left'\n | '--crm-ui-kit-input-error-border-top'\n | '--crm-ui-kit-input-error-border-bottom'\n | '--crm-ui-kit-input-error-border-left'\n | '--crm-ui-kit-input-error-border-right'\n | '--crm-ui-kit-input-border-width'\n | '--crm-ui-kit-input-border-right'\n | '--crm-ui-kit-input-border-radius'\n | '--crm-ui-kit-input-color'\n | '--crm-ui-kit-input-padding-right'\n | '--crm-ui-kit-input-padding-left'\n | '--crm-ui-kit-input-height'\n | '--crm-ui-kit-input-width'\n | '--crm-ui-kit-input-after-min-width'\n | '--crm-ui-kit-input-error-color'\n | '--crm-ui-kit-input-error-description-color'\n | '--crm-ui-kit-input-error-description-offset-placement-right'\n | '--crm-ui-kit-input-error-description-offset-placement-bottom'\n | '--crm-ui-kit-input-error-placement-right-width'\n | '--crm-ui-kit-input-error-placeholder-color'\n | '--crm-ui-kit-input-disabled-opacity'\n | '--crm-ui-kit-input-disabled-background-color'\n | '--crm-ui-kit-input-disabled-border-top'\n | '--crm-ui-kit-input-disabled-border-bottom'\n | '--crm-ui-kit-input-disabled-border-left'\n | '--crm-ui-kit-input-disabled-border-right'\n | '--crm-ui-kit-input-disabled-color'\n | '--crm-ui-kit-input-placeholder-color'\n | '--crm-ui-kit-input-background-color';\n\nexport type InputTheme = {\n [K in InputThemeKey]: string;\n};\n\nconst InputBaseValues: Omit<\n InputTheme,\n | '--crm-ui-kit-input-border-top'\n | '--crm-ui-kit-input-border-bottom'\n | '--crm-ui-kit-input-border-left'\n | '--crm-ui-kit-input-border-right'\n | '--crm-ui-kit-input-error-border-top'\n | '--crm-ui-kit-input-error-border-bottom'\n | '--crm-ui-kit-input-error-border-left'\n | '--crm-ui-kit-input-error-border-right'\n | '--crm-ui-kit-input-disabled-border-top'\n | '--crm-ui-kit-input-disabled-border-bottom'\n | '--crm-ui-kit-input-disabled-border-left'\n | '--crm-ui-kit-input-disabled-border-right'\n> = {\n '--crm-ui-kit-input-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-error-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-input-error-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-input-error-description-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-input-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-input-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-input-border-width': '1px',\n '--crm-ui-kit-input-line-height': '19.42px',\n '--crm-ui-kit-input-disabled-opacity': '0.6',\n '--crm-ui-kit-input-disabled-background-color': 'transparent',\n '--crm-ui-kit-input-error-placement-right-width': '250px',\n '--crm-ui-kit-input-after-min-width': '36px',\n '--crm-ui-kit-input-error-description-offset-placement-bottom': '5px',\n '--crm-ui-kit-input-error-description-offset-placement-right': '10px',\n '--crm-ui-kit-input-border-radius': '3px',\n '--crm-ui-kit-input-padding-right': '9px',\n '--crm-ui-kit-input-padding-left': '9px',\n '--crm-ui-kit-input-height': '34px',\n '--crm-ui-kit-input-width': '100%',\n};\n\nexport const InputLightTheme: InputTheme = {\n ...InputBaseValues,\n '--crm-ui-kit-input-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n\n '--crm-ui-kit-input-error-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-input-disabled-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n};\n\nexport const InputDarkTheme: InputTheme = {\n ...InputBaseValues,\n '--crm-ui-kit-input-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-input-error-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-input-disabled-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n};\n\nexport const InputInvalidTextTheme: TextTheme = TextErrorTheme;\n\n// Для обратной совместимости\nexport const InputPrimaryTheme = InputLightTheme;\nexport const InputSecondaryTheme = InputDarkTheme;","<template>\n <div :class=\"[styles.wrapper, $attrs.class]\" :style=\"effectiveTheme\">\n <div\n :class=\"[\n styles.input_wrapper,\n {\n [styles.invalid_description_right]: invalidDescriptionPlacement === 'right'\n }\n ]\"\n >\n <div\n :class=\"[\n styles.input_container,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <BaseInput\n v-bind=\"inputAttrs\"\n ref=\"inputRef\"\n :class=\"{ [styles.has_after]: Boolean(after) || Boolean($slots.after) }\"\n :is-disabled=\"isDisabled\"\n :is-readonly=\"isReadonly\"\n :is-placeholder-visible-on-focus=\"isPlaceholderVisibleOnFocus\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n <div v-if=\"after || $slots.after\" :class=\"styles.after\">\n <slot name=\"after\">{{ after }}</slot>\n </div>\n </div>\n <div\n v-if=\"isInvalid && invalidDescription\"\n :class=\"styles.invalid_description\"\n :style=\"invalidTextTheme\"\n >\n {{ invalidDescription }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport type { InputProps } from './Input.types'\n\ndefineOptions({ inheritAttrs: false })\nimport { InputInvalidTextTheme, InputLightTheme } from './Input.themes'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport styles from './Input.module.scss'\n\ntype Props = InputProps & {\n modelValue?: string | number | null\n}\n\nconst attrs = useAttrs()\nconst inputAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n if (props.modelValue !== undefined) {\n return { ...rest, value: props.modelValue }\n }\n return rest\n})\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'input', event: Event): void\n (e: 'change', event: Event): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n invalidDescriptionPlacement: 'bottom',\n modelValue: undefined,\n after: undefined,\n invalidDescription: undefined\n})\n\nconst emit = defineEmits<Emits>()\n\n// Ref для input элемента\nconst inputRef = ref<HTMLInputElement | null>(null)\n\n// Вычисляемая тема - используем переданную или дефолтную\nconst effectiveTheme = computed(() => props.theme || InputLightTheme)\n\n// Вычисляемая тема для текста ошибки\nconst invalidTextTheme = computed(() => ({\n ...InputInvalidTextTheme\n}))\n\n// Обработчики событий\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('update:modelValue', target.value)\n emit('input', event)\n}\n\nconst handleChange = (event: Event) => {\n emit('change', event)\n}\n\nconst handleFocus = (event: FocusEvent) => {\n emit('focus', event)\n}\n\nconst handleBlur = (event: FocusEvent) => {\n emit('blur', event)\n}\n\n// Экспорт ref для доступа к элементу input\ndefineExpose({\n inputRef\n})\n</script>\n\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <div\n :class=\"[\n styles.textarea_container,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <textarea\n v-bind=\"$attrs\"\n ref=\"textareaRef\"\n :class=\"[\n styles.textarea,\n {\n [styles.placeholder_visible]: isPlaceholderVisibleOnFocus\n }\n ]\"\n :style=\"{ maxHeight: maxHeight ? `${maxHeight}px` : undefined }\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadOnly\"\n :value=\"modelValue\"\n @input=\"handleInput\"\n />\n </div>\n <div\n v-if=\"isInvalid && invalidDescription\"\n :class=\"styles.invalid_description\"\n >\n {{ invalidDescription }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref, watch, nextTick } from 'vue'\nimport type { TextAreaProps } from './TextArea.types'\nimport styles from './TextArea.module.scss'\n\ntype Props = TextAreaProps & {\n modelValue?: string | number\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'autosize'): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n isAutosized: false,\n isPlaceholderVisibleOnFocus: false,\n modelValue: '',\n})\n\nconst emit = defineEmits<Emits>()\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null)\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLTextAreaElement\n emit('update:modelValue', target.value)\n\n if (props.isAutosized) {\n autoResize()\n }\n}\n\nconst autoResize = () => {\n if (!textareaRef.value || !props.isAutosized) return\n\n nextTick(() => {\n if (textareaRef.value) {\n textareaRef.value.style.height = 'auto'\n textareaRef.value.style.height = `${textareaRef.value.scrollHeight}px`\n emit('autosize')\n }\n })\n}\n\nwatch(\n () => props.modelValue,\n () => {\n if (props.isAutosized) {\n autoResize()\n }\n }\n)\n\nwatch(\n () => props.isAutosized,\n (newValue) => {\n if (newValue) {\n autoResize()\n }\n }\n)\n\ndefineExpose({\n textareaRef,\n})\n</script>\n","type TextAreaThemeKey =\n | '--crm-ui-kit-textarea-font-size'\n | '--crm-ui-kit-textarea-font-weight'\n | '--crm-ui-kit-textarea-line-height'\n | '--crm-ui-kit-textarea-border-color'\n | '--crm-ui-kit-textarea-border-width'\n | '--crm-ui-kit-textarea-border-style'\n | '--crm-ui-kit-textarea-border-radius'\n | '--crm-ui-kit-textarea-color'\n | '--crm-ui-kit-textarea-padding-top'\n | '--crm-ui-kit-textarea-padding-horizontal'\n | '--crm-ui-kit-textarea-padding-bottom'\n | '--crm-ui-kit-textarea-width'\n | '--crm-ui-kit-textarea-spacing'\n | '--crm-ui-kit-textarea-min-height'\n | '--crm-ui-kit-textarea-error-color'\n | '--crm-ui-kit-textarea-error-border-color'\n | '--crm-ui-kit-textarea-error-placeholder-color'\n | '--crm-ui-kit-textarea-disabled-color'\n | '--crm-ui-kit-textarea-disabled-background-color'\n | '--crm-ui-kit-textarea-disabled-border-color'\n | '--crm-ui-kit-textarea-disabled-opacity'\n | '--crm-ui-kit-textarea-placeholder-color'\n | '--crm-ui-kit-textarea-background-color'\n | '--crm-ui-kit-textarea-scrollbar-thumb-background'\n | '--crm-ui-kit-textarea-scrollbar-offset'\n\nexport type TextAreaTheme = {\n [K in TextAreaThemeKey]: string\n}\n\nconst TextAreaBaseValues: Omit<\n TextAreaTheme,\n '--crm-ui-kit-textarea-border-color'\n> = {\n '--crm-ui-kit-textarea-disabled-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-textarea-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-textarea-disabled-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-textarea-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-textarea-error-border-color':\n 'var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-textarea-error-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-textarea-error-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-textarea-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-textarea-disabled-background-color': 'transparent',\n '--crm-ui-kit-textarea-disabled-opacity': '0.6',\n '--crm-ui-kit-textarea-font-weight': '400',\n '--crm-ui-kit-textarea-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-textarea-line-height': '19px',\n '--crm-ui-kit-textarea-padding-top': '8px',\n '--crm-ui-kit-textarea-padding-horizontal': '9px',\n '--crm-ui-kit-textarea-padding-bottom': '7px',\n '--crm-ui-kit-textarea-border-radius': '3px',\n '--crm-ui-kit-textarea-spacing': '4px',\n '--crm-ui-kit-textarea-width': '100%',\n '--crm-ui-kit-textarea-min-height': '56px',\n '--crm-ui-kit-textarea-border-width': '1px',\n '--crm-ui-kit-textarea-border-style': 'solid',\n '--crm-ui-kit-textarea-scrollbar-thumb-background':\n 'var(--crm-ui-kit-palette-scrollbar-thumb-background)',\n '--crm-ui-kit-textarea-scrollbar-offset': '4px',\n}\n\nexport const TextareaLightTheme: TextAreaTheme = {\n ...TextAreaBaseValues,\n '--crm-ui-kit-textarea-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\n\nexport const TextareaDarkTheme: TextAreaTheme = {\n ...TextAreaBaseValues,\n '--crm-ui-kit-textarea-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n","<template>\n <span\n v-bind=\"$attrs\"\n :class=\"[\n styles.text,\n styles[size],\n {\n [styles.ellipsis]: isEllipsis,\n [styles.line_clamp]: isLineClampAllowed\n }\n ]\"\n :style=\"{\n ...(isLineClampAllowed && { WebkitLineClamp: maxRows }),\n ...theme,\n ...style\n }\"\n >\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { TextProps, TextSizes } from './Text.types'\nimport styles from './Text.module.scss'\n\ntype Props = TextProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n isEllipsis: false,\n maxRows: 1,\n style: () => ({})\n})\n\n// Проверяем валидность размера и выбрасываем ошибку если нужно\nconst validSizes: TextSizes[] = ['s', 'm', 'ms', 'l', 'xl']\nif (!validSizes.includes(props.size)) {\n throw new Error('Unknown size was presented')\n}\n\n// Определяем, разрешен ли line clamp\nconst isLineClampAllowed = computed(() => props.maxRows > 1)\n</script>","import { TextPrimaryTheme, type TextTheme } from '@/components/Text'\n\ntype InlineInputThemeKey =\n | '--crm-ui-kit-inline-input-font-size'\n | '--crm-ui-kit-inline-input-line-height'\n | '--crm-ui-kit-inline-input-color'\n | '--crm-ui-kit-inline-input-placeholder-color'\n | '--crm-ui-kit-inline-input-disabled-color'\n | '--crm-ui-kit-inline-input-width'\n | '--crm-ui-kit-inline-input-height'\n | '--crm-ui-kit-inline-input-padding-left'\n | '--crm-ui-kit-inline-input-padding-right'\n | '--crm-ui-kit-input-after-min-width'\n | '--crm-ui-kit-inline-input-border-color'\n | '--crm-ui-kit-inline-input-border-style'\n | '--crm-ui-kit-inline-input-border-width'\n | '--crm-ui-kit-inline-input-focus-border-color'\n | '--crm-ui-kit-inline-input-disabled-opacity'\n | '--crm-ui-kit-inline-input-invalid-description-offset'\n | '--crm-ui-kit-inline-input-invalid-description-padding-x'\n | '--crm-ui-kit-inline-input-invalid-description-padding-y'\n | '--crm-ui-kit-inline-input-invalid-description-width'\n | '--crm-ui-kit-inline-input-invalid-description-background-color'\n | '--crm-ui-kit-inline-input-invalid-description-border-radius'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-width'\n | '--crm-ui-kit-inline-input-invalid-description-color'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-top'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-left'\n\nexport type InlineInputTheme = {\n [K in InlineInputThemeKey]: string\n}\n\nconst InlineInputBaseValues: Omit<\n InlineInputTheme,\n | '--crm-ui-kit-inline-input-border-color'\n | '--crm-ui-kit-inline-input-focus-border-color'\n> = {\n '--crm-ui-kit-inline-input-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-inline-input-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-inline-input-disabled-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-inline-input-invalid-description-color':\n 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-inline-input-invalid-description-background-color':\n 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-inline-input-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-input-after-min-width': '36px',\n '--crm-ui-kit-inline-input-line-height': '20px',\n '--crm-ui-kit-inline-input-width': '100%',\n '--crm-ui-kit-inline-input-height': '19px',\n '--crm-ui-kit-inline-input-invalid-description-width': 'auto',\n '--crm-ui-kit-inline-input-disabled-opacity': '0.6',\n '--crm-ui-kit-inline-input-padding-left': '1px',\n '--crm-ui-kit-inline-input-padding-right': '1px',\n '--crm-ui-kit-inline-input-border-style': 'solid',\n '--crm-ui-kit-inline-input-border-width': '1px',\n '--crm-ui-kit-inline-input-invalid-description-offset': '5px',\n '--crm-ui-kit-inline-input-invalid-description-padding-x': '5px',\n '--crm-ui-kit-inline-input-invalid-description-padding-y': '9px',\n '--crm-ui-kit-inline-input-invalid-description-border-radius': '3px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-width': '4px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-top': '13px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-left': '-5px',\n}\n\nexport const InlineInputPrimaryTheme: InlineInputTheme = {\n ...InlineInputBaseValues,\n '--crm-ui-kit-inline-input-border-color': 'transparent',\n '--crm-ui-kit-inline-input-focus-border-color':\n 'var(--crm-ui-kit-color-blueberry)',\n}\n\nexport const InlineInputPrimaryFocusedTheme: InlineInputTheme = {\n ...InlineInputBaseValues,\n '--crm-ui-kit-inline-input-border-color': 'var(--crm-ui-kit-color-blueberry)',\n '--crm-ui-kit-inline-input-focus-border-color':\n 'var(--crm-ui-kit-color-blueberry)',\n}\n\nexport const InlineInputInvalidTextTheme: TextTheme = {\n ...TextPrimaryTheme,\n '--crm-ui-kit-text-color':\n 'var(--crm-ui-kit-inline-input-invalid-description-color)',\n '--crm-ui-kit-text-size-m-line-height': '15px',\n}\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <div\n :class=\"[\n styles.input_container,\n {\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <BaseInput\n v-bind=\"inputAttrs\"\n ref=\"inputRef\"\n :class=\"{ [styles.has_after]: Boolean(after) }\"\n :is-disabled=\"isDisabled\"\n :is-readonly=\"isReadonly\"\n :is-placeholder-visible-on-focus=\"isPlaceholderVisibleOnFocus\"\n @input=\"handleInput\"\n />\n </div>\n <div v-if=\"after\" :class=\"styles.after_container\">\n <div :class=\"styles.after\">{{ after }}</div>\n </div>\n <div v-if=\"isInvalid\" :class=\"styles.invalid_description_container\">\n <Text size=\"m\" :theme=\"InlineInputInvalidTextTheme\" :class=\"styles.invalid_description\">\n {{ invalidDescription }}\n </Text>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { computed, ref, useAttrs } from 'vue'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport Text from '@/components/Text/Text.vue'\nimport type { InlineInputProps } from './InlineInput.types'\nimport { InlineInputInvalidTextTheme } from './InlineInput.themes'\nimport styles from './InlineInput.module.scss'\n\ntype Props = InlineInputProps & {\n modelValue?: string | number | null\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'input', event: Event): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n modelValue: undefined,\n})\n\nconst emit = defineEmits<Emits>()\n\nconst attrs = useAttrs()\nconst inputAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n if (props.modelValue !== undefined) {\n return { ...rest, value: props.modelValue }\n }\n return rest\n})\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('update:modelValue', target.value)\n emit('input', event)\n}\n\nconst inputRef = ref<InstanceType<typeof BaseInput> | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <VisuallyHiddenInput\n v-bind=\"$attrs\"\n :id=\"props.id\"\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"checkbox\"\n :is-disabled=\"props.isDisabled\"\n :is-readonly=\"props.isReadonly\"\n :is-checked=\"props.isChecked\"\n :is-default-checked=\"props.isDefaultChecked\"\n :value=\"props.value\"\n :name=\"props.name\"\n />\n <span :class=\"styles.switcher\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport type { SwitcherProps } from './Switcher.types'\nimport styles from './Switcher.module.scss'\n\ntype Props = SwitcherProps\n\nconst props = defineProps<Props>()\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <label\n v-bind=\"$attrs\"\n ref=\"labelRef\"\n :class=\"[\n textPlacementClass,\n {\n [styles.centered]: isCentered\n }\n ]\"\n :style=\"theme\"\n >\n <div v-if=\"text || description || $slots.text || $slots.description\" :class=\"styles.text_container\">\n <span v-if=\"text || $slots.text\">\n <slot name=\"text\">{{ text }}</slot>\n </span>\n <div v-if=\"description || $slots.description\" :class=\"styles.text_description\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n <slot />\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { LabelProps } from './Label.types'\nimport styles from './Label.module.scss'\n\ntype Props = LabelProps\n\nconst props = withDefaults(defineProps<Props>(), {\n textPlacement: 'top',\n isCentered: false,\n})\n\nconst labelRef = ref<HTMLLabelElement | null>(null)\n\nconst textPlacementMap = {\n top: styles.top,\n left: styles.left,\n right: styles.right,\n}\n\nconst textPlacementClass = computed(() => textPlacementMap[props.textPlacement])\n\ndefineExpose({\n labelRef,\n})\n</script>\n","type SwitcherThemeKey =\n | '--crm-ui-kit-switcher-active-element-color'\n | '--crm-ui-kit-switcher-border-color'\n | '--crm-ui-kit-switcher-circle-size'\n | '--crm-ui-kit-switcher-line-border-radius'\n | '--crm-ui-kit-switcher-line-width'\n | '--crm-ui-kit-switcher-border-width'\n | '--crm-ui-kit-switcher-disabled-opacity'\n | '--crm-ui-kit-switcher-focus-visible-outline-color'\n | '--crm-ui-kit-switcher-focus-visible-outline-width'\n | '--crm-ui-kit-switcher-focus-visible-outline-style'\n | '--crm-ui-kit-switcher-focus-visible-outline-offset'\n | '--crm-ui-kit-switcher-focus-visible-border-radius'\n\nexport type SwitcherTheme = {\n [K in SwitcherThemeKey]: string\n}\n\nexport const SwitcherPrimaryTheme: SwitcherTheme = {\n '--crm-ui-kit-switcher-active-element-color':\n 'var(--crm-ui-kit-palette-active-element-900)',\n '--crm-ui-kit-switcher-border-color':\n 'var(--crm-ui-kit-palette-switcher-border-default)',\n\n '--crm-ui-kit-switcher-line-border-radius': '26px',\n '--crm-ui-kit-switcher-circle-size': '14px',\n '--crm-ui-kit-switcher-line-width': '9px',\n '--crm-ui-kit-switcher-border-width': '1px',\n '--crm-ui-kit-switcher-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n\n '--crm-ui-kit-switcher-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-switcher-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-switcher-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-switcher-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-switcher-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n","<template>\n <button\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n type=\"button\"\n :class=\"[\n styles.button,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n :style=\"theme\"\n :disabled=\"isDisabled\"\n @click=\"handleClick\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectButtonProps } from './SelectButton.types'\nimport styles from './SelectButton.module.scss'\n\ntype Props = SelectButtonProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n})\n\nconst emit = defineEmits<{\n (e: 'toggle'): void\n}>()\n\nconst buttonRef = ref<HTMLButtonElement | null>(null)\n\nconst ENTER = 'Enter'\nconst SPACEBAR = 'Space'\n\nconst handleClick = () => {\n emit('toggle')\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if ([ENTER, SPACEBAR].includes(e.code)) {\n e.preventDefault()\n handleClick()\n }\n}\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","type SelectButtonThemeKey =\n | '--crm-ui-kit-select-button-background-color'\n | '--crm-ui-kit-select-button-padding'\n | '--crm-ui-kit-select-button-height'\n | '--crm-ui-kit-select-button-z-index'\n | '--crm-ui-kit-select-button-width'\n | '--crm-ui-kit-select-button-font-size'\n | '--crm-ui-kit-select-button-line-height'\n | '--crm-ui-kit-select-button-border-width'\n | '--crm-ui-kit-select-button-border-radius'\n | '--crm-ui-kit-select-button-border'\n | '--crm-ui-kit-select-button-disabled-border'\n | '--crm-ui-kit-select-button-disabled-border-opacity'\n | '--crm-ui-kit-select-button-disabled-border-color'\n | '--crm-ui-kit-select-button-error-border'\n | '--crm-ui-kit-select-button-error-color'\n | '--crm-ui-kit-select-button-focus-visible-border'\n | '--crm-ui-kit-select-button-color'\n\nexport type SelectButtonThemeType = {\n [K in SelectButtonThemeKey]: string\n}\n\nconst SelectButtonBaseValues: Omit<\n SelectButtonThemeType,\n | '--crm-ui-kit-select-button-border'\n | '--crm-ui-kit-select-button-error-border'\n | '--crm-ui-kit-select-button-disabled-border'\n> = {\n '--crm-ui-kit-select-button-border-width': '1px',\n '--crm-ui-kit-select-button-z-index': '10',\n '--crm-ui-kit-select-button-height': '36px',\n '--crm-ui-kit-select-button-width': '100%',\n '--crm-ui-kit-select-button-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-select-button-error-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-select-button-border-radius': '3px',\n '--crm-ui-kit-select-button-padding': '0px 7px 0px 9px',\n '--crm-ui-kit-select-button-disabled-border-color':\n 'var(--crm-ui-kit-color-grey)',\n '--crm-ui-kit-select-button-disabled-border-opacity': '0.5',\n '--crm-ui-kit-select-button-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-select-button-line-height': '20px',\n '--crm-ui-kit-select-button-focus-visible-border':\n '1px solid var(--crm-ui-kit-palette-border-active)',\n '--crm-ui-kit-select-button-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n\nexport const SelectButtonLightTheme: SelectButtonThemeType = {\n ...SelectButtonBaseValues,\n\n '--crm-ui-kit-select-button-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-default)',\n\n '--crm-ui-kit-select-button-error-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-select-button-disabled-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const SelectButtonDarkTheme: SelectButtonThemeType = {\n ...SelectButtonBaseValues,\n\n '--crm-ui-kit-select-button-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-select-button-error-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-select-button-disabled-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n}\n","import { inject, provide, type InjectionKey } from 'vue'\n\nexport const createComponentContext = <T extends object | null>(\n rootComponentName: string,\n defaultContext?: T\n) => {\n const key: InjectionKey<T> = Symbol(rootComponentName)\n\n const provideContext = (context: T) => {\n provide(key, context)\n }\n\n const useContext = (consumerName: string): T => {\n const context = inject(key, defaultContext)\n\n if (context) {\n return context\n }\n\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``\n )\n }\n\n return [provideContext, useContext] as const\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { SelectContextProps } from './Select.types'\n\nconst DISPLAY_NAME = 'Select'\n\nconst [provideSelectContext, useSelectContext] =\n createComponentContext<SelectContextProps>(DISPLAY_NAME)\n\nexport { provideSelectContext, useSelectContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"selectRef\"\n :class=\"[\n styles.select,\n {\n [styles.opened]: currentIsOpen\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, useAttrs, getCurrentInstance } from 'vue'\nimport { provideSelectContext, DISPLAY_NAME } from './Select.context'\nimport type { SelectProps, SelectItem } from './Select.types'\nimport styles from './Select.module.scss'\n\nconst BASE_HOVER_INDEX = -1\n\ntype Props = SelectProps\n\nconst props = defineProps<Props>()\n\nconst emit = defineEmits<{\n (e: 'change', item: SelectItem): void\n (e: 'openChange', open: boolean): void\n}>()\n\nconst selectRef = ref<HTMLDivElement | null>(null)\nconst internalIsOpened = ref(props.isDefaultOpen ?? false)\nconst internalHoveredIndex = ref(BASE_HOVER_INDEX)\nconst internalDefaultValue = ref<SelectItem | undefined>(props.defaultValue)\n\nconst isControlled = computed(() => props.value !== undefined)\n\n// Check if isOpen was actually passed by the parent (Vue Boolean default is false)\nconst instance = getCurrentInstance()\nconst isOpenControlled = computed(() => {\n const vnode = instance?.vnode\n return vnode?.props ? ('isOpen' in vnode.props || 'is-open' in vnode.props) : false\n})\n\nconst selected = computed(() =>\n isControlled.value ? props.value : internalDefaultValue.value\n)\n\nconst currentIsOpen = computed(() =>\n isOpenControlled.value ? Boolean(props.isOpen) : internalIsOpened.value\n)\n\nconst handleOpen = (open: boolean) => {\n if (!(props.isDisabled ?? false) && !isOpenControlled.value) {\n internalIsOpened.value = open\n emit('openChange', open)\n }\n}\n\nconst handleChange = (item: SelectItem) => {\n if (!isControlled.value) {\n internalDefaultValue.value = item\n }\n\n emit('change', item)\n internalIsOpened.value = false\n}\n\nconst handleHoveredIndexChange = (index: number) => {\n internalHoveredIndex.value = index\n}\n\n// Use getters for reactive context\nconst context = reactive({\n get hoveredIndex() { return internalHoveredIndex.value },\n set hoveredIndex(v) { internalHoveredIndex.value = v },\n onHoveredIndexChange: handleHoveredIndexChange,\n onChange: handleChange,\n get isOpened() { return currentIsOpen.value },\n onOpen: handleOpen,\n get isDisabled() { return props.isDisabled ?? false },\n get isInvalid() { return props.isInvalid ?? false },\n get value() { return selected.value },\n get defaultValue() { return props.defaultValue },\n})\n\nprovideSelectContext(context as any)\n\ndefineExpose({\n selectRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type SelectRootThemeKey =\n | '--crm-ui-kit-select-z-index'\n | '--crm-ui-kit-select-opened-z-index'\n\nexport type SelectRootThemeType = {\n [K in SelectRootThemeKey]: string\n}\n\nexport const SelectRootTheme: SelectRootThemeType = {\n '--crm-ui-kit-select-z-index': 'auto',\n '--crm-ui-kit-select-opened-z-index': '60',\n}\n","<template>\n <span ref=\"optionRef\" :class=\"[styles.text, props.class]\">\n <Text :theme=\"OptionTextTheme\" size=\"l\" :is-ellipsis=\"true\">\n <slot />\n </Text>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport Text from '@/components/Text/Text.vue'\nimport { TextPrimaryTheme, type TextTheme } from '@/components/Text'\nimport styles from './Option.module.scss'\n\nconst props = defineProps<{\n class?: string\n}>()\n\nconst OptionTextTheme: TextTheme = {\n ...TextPrimaryTheme,\n '--crm-ui-kit-text-color': 'inherit',\n}\n\nconst optionRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n optionRef,\n})\n</script>\n","<template>\n <li\n ref=\"itemRef\"\n v-bind=\"$attrs\"\n :class=\"[\n styles.item,\n {\n [styles.selected]: isSelected,\n [styles.hovered]: isHovered,\n },\n props.class,\n ]\"\n :style=\"theme\"\n @click=\"handleClick\"\n >\n <slot>\n <Option>{{ item.option }}</Option>\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useSelectContext } from '../../Select.context'\nimport type { SelectItem } from '../../Select.types'\nimport Option from '../Option/Option.vue'\nimport type { SelectItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'Select.Item'\n\nconst props = defineProps<{\n item: SelectItem\n index: number\n class?: string\n theme: SelectItemThemeType\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst itemRef = ref<HTMLLIElement | null>(null)\n\nconst isSelected = computed(() => selectContext.value?.value === props.item.value)\nconst isHovered = computed(() => selectContext.hoveredIndex === props.index)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n selectContext.onHoveredIndexChange(props.index)\n if (typeof selectContext.onChange === 'function') {\n selectContext.onChange(props.item)\n }\n}\n\ndefineExpose({\n itemRef,\n})\n</script>\n","type SelectItemThemeKey =\n | '--crm-ui-kit-select-item-padding'\n | '--crm-ui-kit-select-item-margin'\n | '--crm-ui-kit-select-item-font-size'\n | '--crm-ui-kit-select-item-font-weight'\n | '--crm-ui-kit-select-item-selected-background-color'\n | '--crm-ui-kit-select-item-selected-background'\n | '--crm-ui-kit-select-item-hovered-background-color'\n | '--crm-ui-kit-select-item-hover-background-color'\n\nexport type SelectItemThemeType = {\n [K in SelectItemThemeKey]: string\n}\n\nexport const SelectItemTheme: SelectItemThemeType = {\n '--crm-ui-kit-select-item-padding': '7px 6px 7px 22px',\n '--crm-ui-kit-select-item-margin': '0px -11px 0px 0px',\n '--crm-ui-kit-select-item-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-select-item-font-weight': '400',\n '--crm-ui-kit-select-item-selected-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-select-item-selected-background':\n 'var(--crm-ui-kit-icon-check-mark) 8px 14px no-repeat',\n '--crm-ui-kit-select-item-hovered-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-select-item-hover-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n}\n","<template>\n <span ref=\"arrowRef\" :class=\"[styles.wrapper, props.class]\" :style=\"theme\">\n <slot>\n <svg xmlns=\"http://www.w3.org/2000/svg\" :width=\"BASE_WIDTH\" :height=\"BASE_HEIGHT\" fill=\"none\" viewBox=\"0 0 21 21\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m5.25 8.826 1-1 4.5 4.4 4.5-4.4 1 1-5.5 5.5-5.5-5.5Z\" clip-rule=\"evenodd\"/>\n </svg>\n </slot>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectArrowThemeType } from './Arrow.themes'\nimport styles from './Arrow.module.scss'\n\nconst BASE_WIDTH = 20\nconst BASE_HEIGHT = 20\n\nconst props = defineProps<{\n theme: SelectArrowThemeType\n class?: string\n}>()\n\nconst arrowRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n arrowRef,\n})\n</script>\n","type SelectArrowThemeKey =\n | '--crm-ui-kit-select-arrow-width'\n | '--crm-ui-kit-select-arrow-height'\n | '--crm-ui-kit-select-margin'\n\nexport type SelectArrowThemeType = {\n [K in SelectArrowThemeKey]: string\n}\n\nexport const SelectArrowTheme: SelectArrowThemeType = {\n '--crm-ui-kit-select-arrow-width': '20px',\n '--crm-ui-kit-select-arrow-height': '20px',\n '--crm-ui-kit-select-margin': '0 0 0 auto',\n}\n","<template>\n <span v-if=\"$slots.default\" ref=\"iconRef\" :class=\"styles.wrapper\" :style=\"theme\">\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectIconThemeType } from './Icon.themes'\nimport styles from './Icon.module.scss'\n\ndefineProps<{\n theme: SelectIconThemeType\n}>()\n\nconst iconRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n iconRef,\n})\n</script>\n","type SelectIconThemeKey =\n | '--crm-ui-kit-select-icon-width'\n | '--crm-ui-kit-select-icon-height'\n | '--crm-ui-kit-select-icon-margin'\n\nexport type SelectIconThemeType = {\n [K in SelectIconThemeKey]: string\n}\n\nexport const SelectIconTheme: SelectIconThemeType = {\n '--crm-ui-kit-select-icon-width': '20px',\n '--crm-ui-kit-select-icon-height': '20px',\n '--crm-ui-kit-select-icon-margin': '0 6px 0 0',\n}\n","<template>\n <ul\n v-if=\"isOpened\"\n v-bind=\"$attrs\"\n ref=\"listRef\"\n tabindex=\"0\"\n role=\"list\"\n :class=\"[\n styles.list,\n {\n [styles.opened]: isOpened\n },\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport type { ListProps } from './List.types'\nimport styles from './List.module.scss'\n\ntype Props = ListProps\n\nconst props = withDefaults(defineProps<Props>(), {\n hoveredIndex: 0,\n})\n\nconst emit = defineEmits<{\n (e: 'select', index: number): void\n (e: 'toggle', toggle: boolean): void\n (e: 'hoveredIndexChange', index: number): void\n}>()\n\nconst listRef = ref<HTMLUListElement | null>(null)\n\nconst slots = defineSlots()\nconst itemsLength = computed(() => {\n if (!slots.default) return 0\n const children = slots.default()\n return children.length\n})\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n const { hoveredIndex } = props\n\n switch (event.code) {\n case 'ArrowDown':\n event.preventDefault()\n if (hoveredIndex < itemsLength.value - 1) {\n emit('hoveredIndexChange', hoveredIndex + 1)\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (hoveredIndex > 0) {\n emit('hoveredIndexChange', hoveredIndex - 1)\n }\n break\n\n case 'Enter':\n case 'Space':\n event.preventDefault()\n emit('select', hoveredIndex)\n break\n\n case 'Escape':\n event.preventDefault()\n emit('toggle', false)\n break\n }\n}\n\ndefineExpose({\n listRef,\n})\n</script>\n","type ListThemeKey =\n | '--crm-ui-kit-list-top'\n | '--crm-ui-kit-list-max-height'\n | '--crm-ui-kit-list-width'\n | '--crm-ui-kit-list-border-radius'\n | '--crm-ui-kit-list-border-color'\n | '--crm-ui-kit-list-background-color'\n | '--crm-ui-kit-list-left'\n | '--crm-ui-kit-list-padding-right'\n | '--crm-ui-kit-list-margin-right'\n | '--crm-ui-kit-list-border-width'\n | '--crm-ui-kit-list-outline'\n | '--crm-ui-kit-list-z-index'\n | '--crm-ui-kit-list-border-style'\n | '--crm-ui-kit-list-color'\n\nexport type ListThemeType = {\n [K in ListThemeKey]: string\n}\n\nexport const ListTheme: ListThemeType = {\n '--crm-ui-kit-list-top': '0px',\n '--crm-ui-kit-list-max-height': '211px',\n '--crm-ui-kit-list-z-index': '30',\n '--crm-ui-kit-list-border-style': 'solid',\n '--crm-ui-kit-list-left': '-13px',\n '--crm-ui-kit-list-width': '100%',\n '--crm-ui-kit-list-padding-right': '11px',\n '--crm-ui-kit-list-margin-right': '-13px',\n '--crm-ui-kit-list-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-list-border-width': '1px',\n '--crm-ui-kit-list-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-list-border-radius': '3px',\n '--crm-ui-kit-list-outline': 'none',\n '--crm-ui-kit-list-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n","<template>\n <SelectButton\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n :theme=\"theme\"\n :is-disabled=\"selectContext.isDisabled\"\n :is-invalid=\"selectContext.isInvalid\"\n @toggle=\"handleToggle\"\n >\n <slot />\n </SelectButton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport SelectButton from '@/components/SelectButton/SelectButton.vue'\nimport type { SelectButtonThemeType } from '@/components/SelectButton'\nimport { useSelectContext } from '../../Select.context'\n\nconst DISPLAY_NAME = 'Select.Button'\n\ndefineProps<{\n theme: SelectButtonThemeType\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst buttonRef = ref<InstanceType<typeof SelectButton> | null>(null)\n\nconst handleToggle = () => {\n selectContext.onOpen(!selectContext.isOpened)\n}\n\n// After closing the list, focus back on the button\nwatch(\n () => selectContext.isOpened,\n (newVal, oldVal) => {\n if (oldVal && !newVal) {\n buttonRef.value?.buttonRef?.focus()\n }\n }\n)\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","import { onMounted, onUnmounted, type Ref } from 'vue'\n\nexport interface UseOnOutsideClickOptions {\n ref: Ref<HTMLElement | null>\n handler: () => void\n}\n\nexport const useOnOutsideClick = ({ ref, handler }: UseOnOutsideClickOptions) => {\n const handleClick = (event: MouseEvent) => {\n if (ref.value && !ref.value.contains(event.target as Node)) {\n handler()\n }\n }\n\n onMounted(() => {\n document.addEventListener('mousedown', handleClick)\n })\n\n onUnmounted(() => {\n document.removeEventListener('mousedown', handleClick)\n })\n}\n","<template>\n <Teleport v-if=\"container\" :to=\"container\">\n <BaseList\n ref=\"listRef\"\n :class=\"props.class\"\n :is-opened=\"selectContext.isOpened\"\n :theme=\"theme\"\n :hovered-index=\"effectiveHoveredIndex\"\n @hovered-index-change=\"handleHoveredIndexChange\"\n @toggle=\"handleListToggle\"\n @select=\"handleItemSelect\"\n >\n <slot />\n </BaseList>\n </Teleport>\n <BaseList\n v-else\n ref=\"listRef\"\n :class=\"props.class\"\n :is-opened=\"selectContext.isOpened\"\n :theme=\"theme\"\n :hovered-index=\"effectiveHoveredIndex\"\n @hovered-index-change=\"handleHoveredIndexChange\"\n @toggle=\"handleListToggle\"\n @select=\"handleItemSelect\"\n >\n <slot />\n </BaseList>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots } from 'vue'\nimport BaseList from '@/components/List/List.vue'\nimport type { ListThemeType } from '@/components/List'\nimport { useSelectContext } from '../../Select.context'\nimport { useOnOutsideClick } from '@/composables/useOnOutsideClick'\nimport type { SelectItem } from '../../Select.types'\n\nconst DISPLAY_NAME = 'Select.List'\n\nconst props = defineProps<{\n theme: ListThemeType\n class?: string\n container?: Element | DocumentFragment | null\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst listRef = ref<InstanceType<typeof BaseList> | null>(null)\n\n// Build items array from slot children for handleItemSelect\nconst slots = useSlots()\nconst items = computed(() => {\n if (!slots.default) return [] as SelectItem[]\n const children = slots.default()\n return children.map((child) => {\n return child.props?.item as SelectItem\n }).filter(Boolean)\n})\n\nconst itemsMap = computed(() => {\n const map: Record<string, number> = {}\n items.value.forEach((item, index) => {\n if (item?.value !== undefined) {\n map[String(item.value)] = index\n }\n })\n return map\n})\n\nconst effectiveHoveredIndex = computed(() => {\n if (selectContext.value) {\n const idx = itemsMap.value[String(selectContext.value.value)]\n if (idx !== undefined) return idx\n }\n return selectContext.hoveredIndex\n})\n\nconst handleHoveredIndexChange = (index: number) => {\n selectContext.onHoveredIndexChange(index)\n}\n\nconst handleListToggle = (toggle: boolean) => {\n selectContext.onOpen(toggle)\n}\n\nconst handleItemSelect = (index: number) => {\n const item = items.value[index]\n if (item && typeof selectContext.onChange === 'function') {\n selectContext.onChange(item)\n }\n}\n\n// Outside click to close\nconst listElRef = computed(() => listRef.value?.listRef ?? null)\n\nuseOnOutsideClick({\n ref: listElRef,\n handler: () => {\n if (selectContext.isOpened) {\n selectContext.onOpen(false)\n }\n },\n})\n\n// Focus the list when opened\nwatch(\n () => selectContext.isOpened,\n (opened) => {\n if (opened) {\n listRef.value?.listRef?.focus()\n }\n }\n)\n\ndefineExpose({\n listRef,\n})\n</script>\n","<template>\n <slot v-if=\"$slots.default\" />\n <template v-else>\n <Option ref=\"optionRef\" :class=\"props.class\">\n {{ shouldShowPlaceholder ? placeholder : selectContext.value?.option }}\n </Option>\n </template>\n\n <VisuallyHiddenInput :name=\"name\" type=\"hidden\" :value=\"selectContext.value?.value\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport { useSelectContext } from '../../Select.context'\nimport Option from '../Option/Option.vue'\n\nconst DISPLAY_NAME = 'Select.Value'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n name?: string\n}>(), {\n placeholder: '',\n class: '',\n})\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst shouldShowPlaceholder = computed(() => !selectContext.value)\n\nconst optionRef = ref<InstanceType<typeof Option> | null>(null)\n\ndefineExpose({\n optionRef,\n})\n</script>\n","import { createComponentContext } from '@/lib/vue'\nimport type { MultiSelectContextProps } from './MultiSelect.types'\n\nconst DISPLAY_NAME = 'MultiSelect'\n\nconst [provideMultiSelectContext, useMultiSelectContext] =\n createComponentContext<MultiSelectContextProps>(DISPLAY_NAME)\n\nexport { provideMultiSelectContext, useMultiSelectContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"multiSelectRef\"\n :class=\"[\n styles.multiselect,\n {\n [styles.opened]: currentIsOpen\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, watch, getCurrentInstance } from 'vue'\nimport { provideMultiSelectContext, DISPLAY_NAME } from './MultiSelect.context'\nimport type { MultiSelectProps, MultiSelectItem } from './MultiSelect.types'\nimport styles from './MultiSelect.module.scss'\n\ntype Props = MultiSelectProps\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'multi',\n groupSelectable: false,\n})\n\nconst emit = defineEmits<{\n (e: 'change', items: MultiSelectItem[]): void\n (e: 'openChange', open: boolean): void\n}>()\n\nconst multiSelectRef = ref<HTMLDivElement | null>(null)\nconst internalIsOpened = ref(props.isDefaultOpen ?? false)\nconst internalHoveredValue = ref<string | number | null>(null)\nconst searchQuery = ref('')\n\n// Internal values Set for uncontrolled mode\nconst internalValues = ref<Set<string | number>>(\n new Set((props.defaultValue ?? []).map(item => item.value))\n)\n\nconst isControlled = computed(() => props.value !== undefined)\n\n// Check if isOpen was actually passed by the parent\nconst instance = getCurrentInstance()\nconst isOpenControlled = computed(() => {\n const vnode = instance?.vnode\n return vnode?.props ? ('isOpen' in vnode.props || 'is-open' in vnode.props) : false\n})\n\n// Current values Set (controlled or internal)\nconst currentValues = computed(() => {\n if (isControlled.value) {\n return new Set((props.value ?? []).map(item => item.value))\n }\n return internalValues.value\n})\n\nconst currentIsOpen = computed(() =>\n isOpenControlled.value ? Boolean(props.isOpen) : internalIsOpened.value\n)\n\n// All available items (flat list)\nconst allItems = computed(() => props.items ?? [])\n\n// Resolve selected values back to full MultiSelectItem objects\nconst selectedItems = computed(() => {\n const vals = currentValues.value\n return allItems.value.filter(item => vals.has(item.value))\n})\n\nconst handleOpen = (open: boolean) => {\n if (!(props.isDisabled ?? false)) {\n if (!isOpenControlled.value) {\n internalIsOpened.value = open\n }\n if (!open) {\n searchQuery.value = ''\n }\n emit('openChange', open)\n }\n}\n\nconst handleToggleItem = (item: MultiSelectItem) => {\n if (props.mode === 'single') {\n // Single mode: select item, close dropdown\n if (!isControlled.value) {\n internalValues.value = new Set([item.value])\n }\n emit('change', [item])\n handleOpen(false)\n } else {\n // Multi mode: toggle item in Set, keep dropdown open\n const newValues = new Set(currentValues.value)\n if (newValues.has(item.value)) {\n newValues.delete(item.value)\n } else {\n newValues.add(item.value)\n }\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n }\n}\n\nconst handleToggleGroup = (groupId: string | number) => {\n const groupItems = allItems.value.filter(item => item.group === groupId)\n if (groupItems.length === 0) return\n\n const allSelected = groupItems.every(item => currentValues.value.has(item.value))\n const newValues = new Set(currentValues.value)\n\n if (allSelected) {\n groupItems.forEach(item => newValues.delete(item.value))\n } else {\n groupItems.forEach(item => newValues.add(item.value))\n }\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n}\n\nconst handleToggleAll = () => {\n const allSelected = allItems.value.length > 0 &&\n allItems.value.every(item => currentValues.value.has(item.value))\n const newValues = new Set<string | number>()\n\n if (!allSelected) {\n allItems.value.forEach(item => newValues.add(item.value))\n }\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n}\n\nconst getGroupItems = (groupId: string | number): MultiSelectItem[] => {\n return allItems.value.filter(item => item.group === groupId)\n}\n\nconst isGroupAllSelected = (groupId: string | number): boolean => {\n const groupItems = getGroupItems(groupId)\n return groupItems.length > 0 && groupItems.every(item => currentValues.value.has(item.value))\n}\n\nconst isGroupPartiallySelected = (groupId: string | number): boolean => {\n const groupItems = getGroupItems(groupId)\n const selectedCount = groupItems.filter(item => currentValues.value.has(item.value)).length\n return selectedCount > 0 && selectedCount < groupItems.length\n}\n\nconst isAllSelected = (): boolean => {\n return allItems.value.length > 0 &&\n allItems.value.every(item => currentValues.value.has(item.value))\n}\n\nconst isPartiallySelected = (): boolean => {\n const selectedCount = allItems.value.filter(item => currentValues.value.has(item.value)).length\n return selectedCount > 0 && selectedCount < allItems.value.length\n}\n\nconst handleHoveredItemChange = (value: string | number | null) => {\n internalHoveredValue.value = value\n}\n\nconst handleSearchChange = (query: string) => {\n searchQuery.value = query\n}\n\nconst isItemMatchingSearch = (item: MultiSelectItem): boolean => {\n const q = searchQuery.value.trim().toLowerCase()\n if (!q) return true\n return item.option.toLowerCase().includes(q)\n}\n\nconst isGroupMatchingSearch = (groupId: string | number): boolean => {\n const q = searchQuery.value.trim().toLowerCase()\n if (!q) return true\n const groupItems = getGroupItems(groupId)\n return groupItems.some(item => item.option.toLowerCase().includes(q))\n}\n\n// Watch items prop — remove stale selected values\nwatch(\n () => props.items,\n (newItems) => {\n if (!newItems) return\n const validValues = new Set(newItems.map(item => item.value))\n const currentVals = currentValues.value\n const staleValues = [...currentVals].filter(v => !validValues.has(v))\n\n if (staleValues.length > 0) {\n const newValues = new Set(currentVals)\n staleValues.forEach(v => newValues.delete(v))\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = newItems.filter(i => newValues.has(i.value))\n emit('change', selected)\n }\n },\n { deep: true }\n)\n\nconst context = reactive({\n get values() { return currentValues.value },\n get selectedItems() { return selectedItems.value },\n get isOpened() { return currentIsOpen.value },\n get isDisabled() { return props.isDisabled ?? false },\n get isInvalid() { return props.isInvalid ?? false },\n get hoveredItemValue() { return internalHoveredValue.value },\n get mode() { return props.mode ?? 'multi' },\n get groupSelectable() { return props.groupSelectable ?? false },\n get searchQuery() { return searchQuery.value },\n onOpen: handleOpen,\n onToggleItem: handleToggleItem,\n onToggleGroup: handleToggleGroup,\n onToggleAll: handleToggleAll,\n onHoveredItemChange: handleHoveredItemChange,\n onSearchChange: handleSearchChange,\n isItemMatchingSearch,\n isGroupMatchingSearch,\n getGroupItems,\n isGroupAllSelected,\n isGroupPartiallySelected,\n isAllSelected,\n isPartiallySelected,\n})\n\nprovideMultiSelectContext(context as any)\n\ndefineExpose({\n multiSelectRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type MultiSelectRootThemeKey =\n | '--crm-ui-kit-multiselect-z-index'\n | '--crm-ui-kit-multiselect-opened-z-index'\n\nexport type MultiSelectRootThemeType = {\n [K in MultiSelectRootThemeKey]: string\n}\n\nexport const MultiSelectRootTheme: MultiSelectRootThemeType = {\n '--crm-ui-kit-multiselect-z-index': 'auto',\n '--crm-ui-kit-multiselect-opened-z-index': '60',\n}\n","<template>\n <SelectButton\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n :theme=\"theme\"\n :is-disabled=\"multiSelectContext.isDisabled\"\n :is-invalid=\"multiSelectContext.isInvalid\"\n @toggle=\"handleToggle\"\n >\n <slot />\n </SelectButton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport SelectButton from '@/components/SelectButton/SelectButton.vue'\nimport type { SelectButtonThemeType } from '@/components/SelectButton'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\n\nconst DISPLAY_NAME = 'MultiSelect.Trigger'\n\ndefineProps<{\n theme: SelectButtonThemeType\n}>()\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst buttonRef = ref<InstanceType<typeof SelectButton> | null>(null)\n\nconst handleToggle = () => {\n multiSelectContext.onOpen(!multiSelectContext.isOpened)\n}\n\n// After closing the list, focus back on the button\nwatch(\n () => multiSelectContext.isOpened,\n (newVal, oldVal) => {\n if (oldVal && !newVal) {\n buttonRef.value?.buttonRef?.focus()\n }\n }\n)\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","<template>\n <Teleport v-if=\"container\" :to=\"container\">\n <ul\n v-if=\"multiSelectContext.isOpened\"\n ref=\"listRef\"\n v-bind=\"$attrs\"\n tabindex=\"0\"\n role=\"listbox\"\n :aria-multiselectable=\"multiSelectContext.mode === 'multi' ? 'true' : undefined\"\n :class=\"[\n 'custom-scroll',\n styles.list,\n props.class,\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n <li v-if=\"itemsCount === 0\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </Teleport>\n <template v-else>\n <ul\n v-if=\"multiSelectContext.isOpened\"\n ref=\"listRef\"\n v-bind=\"$attrs\"\n tabindex=\"0\"\n role=\"listbox\"\n :aria-multiselectable=\"multiSelectContext.mode === 'multi' ? 'true' : undefined\"\n :class=\"[\n 'custom-scroll',\n styles.list,\n props.class,\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n <li v-if=\"itemsCount === 0\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, type VNode, nextTick } from 'vue'\nimport type { ListThemeType } from '@/components/List'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport { useOnOutsideClick } from '@/composables/useOnOutsideClick'\nimport type { MultiSelectItem } from '../../MultiSelect.types'\nimport styles from './MultiSelectList.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.List'\n\nconst props = withDefaults(defineProps<{\n theme: ListThemeType\n class?: string\n container?: Element | DocumentFragment | null\n emptyText?: string\n}>(), {\n emptyText: 'Нет элементов',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst listRef = ref<HTMLUListElement | null>(null)\n\n// Build items array from slot children for keyboard navigation\nconst slots = useSlots()\n\nfunction extractItems(vnodes: VNode[]): MultiSelectItem[] {\n const result: MultiSelectItem[] = []\n for (const vnode of vnodes) {\n if (vnode.props?.item) {\n result.push(vnode.props.item as MultiSelectItem)\n }\n // Recurse into Fragment children (e.g. v-for, groups)\n if (Array.isArray(vnode.children)) {\n result.push(...extractItems(vnode.children as VNode[]))\n }\n }\n return result\n}\n\nconst items = computed(() => {\n if (!slots.default) return [] as MultiSelectItem[]\n const children = slots.default()\n return extractItems(children)\n})\n\nconst itemsCount = computed(() => items.value.length)\n\nconst itemsMap = computed(() => {\n const map: Record<string, number> = {}\n items.value.forEach((item, index) => {\n if (item?.value !== undefined) {\n map[String(item.value)] = index\n }\n })\n return map\n})\n\n// Local hovered index for keyboard navigation\nconst localHoveredIndex = ref(-1)\n\n// Sync local index when context hovered value changes externally\nconst currentHoveredIndex = computed(() => {\n const val = multiSelectContext.hoveredItemValue\n if (val === null) return -1\n const idx = itemsMap.value[String(val)]\n return idx ?? -1\n})\n\n// Update local when list opens\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n localHoveredIndex.value = currentHoveredIndex.value\n }\n }\n)\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n const total = itemsCount.value\n let idx = localHoveredIndex.value\n\n switch (event.code) {\n case 'ArrowDown':\n event.preventDefault()\n if (idx < total - 1) {\n idx++\n localHoveredIndex.value = idx\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onHoveredItemChange(item.value)\n }\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (idx > 0) {\n idx--\n localHoveredIndex.value = idx\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onHoveredItemChange(item.value)\n }\n }\n break\n\n case 'Enter':\n case 'Space':\n event.preventDefault()\n if (idx >= 0 && idx < total) {\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onToggleItem(item)\n }\n }\n break\n\n case 'Escape':\n event.preventDefault()\n multiSelectContext.onOpen(false)\n break\n }\n}\n\n// Outside click to close\nuseOnOutsideClick({\n ref: listRef,\n handler: () => {\n if (multiSelectContext.isOpened) {\n multiSelectContext.onOpen(false)\n }\n },\n})\n\n// Focus the list when opened\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n // nextTick handled by Vue reactivity — the ref is available after v-if renders\n setTimeout(() => {\n listRef.value?.focus()\n }, 0)\n }\n }\n)\n\ndefineExpose({\n listRef,\n items,\n itemsMap,\n})\n</script>\n","export const isTouchableDevice = () => Boolean('ontouchstart' in window)\n\nexport const isValidRenderValue = (value: any) => {\n return (\n value !== null &&\n value !== undefined &&\n (typeof value === 'string' || typeof value === 'number')\n )\n}\n","<template>\n <div\n :class=\"[\n styles.wrapper,\n {\n [styles.touchable]: isTouchable\n }\n ]\"\n :style=\"theme\"\n >\n <VisuallyHiddenInput\n v-bind=\"$attrs\"\n :id=\"props.id\"\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"checkbox\"\n :is-disabled=\"props.isDisabled\"\n :is-readonly=\"props.isReadonly\"\n :is-checked=\"props.isChecked\"\n :is-default-checked=\"props.isDefaultChecked\"\n :value=\"props.value\"\n :name=\"props.name\"\n />\n <span\n :class=\"[\n styles.checkbox,\n {\n [styles.indeterminate]: checkedStyle === 'indeterminate',\n [styles.invalid]: isInvalid\n }\n ]\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref, onMounted } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport type { CheckboxProps } from './Checkbox.types'\nimport { isTouchableDevice } from '@/lib/utils'\nimport styles from './Checkbox.module.scss'\n\ntype Props = CheckboxProps\n\nconst props = withDefaults(defineProps<Props>(), {\n checkedStyle: 'mark',\n isInvalid: false,\n})\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\nconst isTouchable = ref(false)\n\nonMounted(() => {\n isTouchable.value = isTouchableDevice()\n})\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <div ref=\"groupRef\">\n <div\n v-for=\"(child, index) in childrenArray\"\n :key=\"index\"\n :class=\"[styles.wrapper]\"\n :style=\"theme\"\n >\n <component :is=\"child\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { LabelGroupProps } from './Label.types'\nimport styles from './Label.module.scss'\n\ntype Props = LabelGroupProps & {}\n\nconst props = defineProps<Props>()\nconst slots = defineSlots<{ default?(): any }>()\nconst groupRef = ref<HTMLDivElement | null>(null)\n\nconst childrenArray = computed(() => slots.default ? slots.default() : [])\n\ndefineExpose({\n groupRef,\n})\n</script>\n","type LabelGroupThemeKey = '--crm-ui-kit-label-group-margin-bottom'\ntype LabelThemeKey =\n | '--crm-ui-kit-label-spacing'\n | '--crm-ui-kit-label-text-width'\n | '--crm-ui-kit-label-description-spacing'\n\nexport type LabelGroupThemeType = {\n [K in LabelGroupThemeKey]: string\n}\n\nexport type LabelThemeType = {\n [K in LabelThemeKey]: string\n}\n\nexport const LabelGroupTheme: LabelGroupThemeType = {\n '--crm-ui-kit-label-group-margin-bottom': '16px',\n}\n\nexport const LabelTheme: LabelThemeType = {\n '--crm-ui-kit-label-spacing': '4px',\n '--crm-ui-kit-label-description-spacing': '4px',\n '--crm-ui-kit-label-text-width': 'auto',\n}\n","import { LabelTheme, type LabelThemeType } from '@/components/Label'\n\ntype CheckboxThemeKey =\n | '--crm-ui-kit-checkbox-size'\n | '--crm-ui-kit-checkbox-z-index'\n | '--crm-ui-kit-checkbox-background-color'\n | '--crm-ui-kit-checkbox-disabled-background-color'\n | '--crm-ui-kit-checkbox-border-width'\n | '--crm-ui-kit-checkbox-border-radius'\n | '--crm-ui-kit-checkbox-border-style'\n | '--crm-ui-kit-checkbox-border-color'\n | '--crm-ui-kit-checkbox-error-border-color'\n | '--crm-ui-kit-checkbox-checked-background'\n | '--crm-ui-kit-checkbox-indeterminate-background'\n | '--crm-ui-kit-checkbox-focus-visible-outline-color'\n | '--crm-ui-kit-checkbox-focus-visible-outline-width'\n | '--crm-ui-kit-checkbox-focus-visible-outline-style'\n | '--crm-ui-kit-checkbox-focus-visible-outline-offset'\n | '--crm-ui-kit-checkbox-focus-visible-border-radius'\n\nexport type CheckboxThemeType = {\n [K in CheckboxThemeKey]: string\n}\n\nexport const CheckboxBaseValues: Omit<\n CheckboxThemeType,\n '--crm-ui-kit-checkbox-size' | '--crm-ui-kit-checkbox-border-color'\n> = {\n '--crm-ui-kit-checkbox-z-index': '3',\n\n '--crm-ui-kit-checkbox-border-width': '1px',\n '--crm-ui-kit-checkbox-border-radius': '3px',\n '--crm-ui-kit-checkbox-border-style': 'solid',\n\n '--crm-ui-kit-checkbox-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-checkbox-disabled-background-color':\n 'var(--crm-ui-kit-palette-background-primary-disabled)',\n\n '--crm-ui-kit-checkbox-error-border-color': 'var(--crm-ui-kit-color-error)',\n\n '--crm-ui-kit-checkbox-checked-background':\n 'var(--crm-ui-kit-checkbox-background-color) var(--crm-ui-kit-icon-checked-mark) no-repeat center / 70%',\n '--crm-ui-kit-checkbox-indeterminate-background':\n 'var(--crm-ui-kit-checkbox-background-color) var(--crm-ui-kit-icon-minus) no-repeat center',\n\n '--crm-ui-kit-checkbox-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-checkbox-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-checkbox-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-checkbox-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-checkbox-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n\nexport const CheckboxLightTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '20px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\nexport const CheckboxSmallLightTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '16px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\n\nexport const CheckboxDarkTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '20px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const CheckboxSmallDarkTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '16px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const CheckboxLabelTheme: LabelThemeType = {\n ...LabelTheme,\n '--crm-ui-kit-label-description-spacing': '8px',\n '--crm-ui-kit-label-spacing': '8px',\n}\n","<template>\n <li\n v-if=\"isVisible\"\n ref=\"itemRef\"\n v-bind=\"$attrs\"\n role=\"option\"\n :aria-selected=\"isSelected\"\n :class=\"[\n styles.item,\n {\n [styles.selected]: isSelected,\n [styles.hovered]: isHovered,\n },\n ]\"\n :style=\"theme\"\n :title=\"item.option\"\n @click=\"handleClick\"\n >\n <Checkbox\n v-if=\"multiSelectContext.mode === 'multi'\"\n :theme=\"checkboxTheme\"\n :is-checked=\"isSelected\"\n :tabindex=\"-1\"\n @click.stop\n />\n <slot>\n <Option>{{ item.option }}</Option>\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectItem as MultiSelectItemType } from '../../MultiSelect.types'\nimport type { MultiSelectItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Item'\n\nconst props = defineProps<{\n item: MultiSelectItemType\n theme: MultiSelectItemThemeType\n}>()\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst itemRef = ref<HTMLLIElement | null>(null)\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst isVisible = computed(() => multiSelectContext.isItemMatchingSearch(props.item))\nconst isSelected = computed(() => multiSelectContext.values.has(props.item.value))\nconst isHovered = computed(() => multiSelectContext.hoveredItemValue === props.item.value)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n multiSelectContext.onToggleItem(props.item)\n}\n\ndefineExpose({\n itemRef,\n})\n</script>\n","<template>\n <li v-if=\"isVisible\" :class=\"styles.group\" role=\"group\" :aria-label=\"group.label\">\n <div\n :class=\"[\n styles.header,\n {\n [styles.headerSelectable]: multiSelectContext.groupSelectable\n }\n ]\"\n :style=\"headerStyle\"\n :title=\"group.label\"\n @click=\"handleHeaderClick\"\n >\n <Checkbox\n v-if=\"multiSelectContext.groupSelectable\"\n :theme=\"checkboxTheme\"\n :is-checked=\"isChecked\"\n :checked-style=\"checkedStyle\"\n :tabindex=\"-1\"\n @click.stop\n />\n <span :class=\"styles.label\">{{ group.label }}</span>\n </div>\n <ul :class=\"styles.children\">\n <slot />\n <li v-if=\"hasNoChildren\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectGroup as MultiSelectGroupType } from '../../MultiSelect.types'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport styles from './Group.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Group'\n\nconst COLOR_PATTERN = /^(#[\\da-f]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+))?\\s*\\)|hsla?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*(,\\s*(0|1|0?\\.\\d+))?\\s*\\)|[a-z]{3,20})$/i\n\nimport type { MultiSelectGroupThemeType } from './Group.themes'\n\nconst props = withDefaults(defineProps<{\n group: MultiSelectGroupType\n theme: MultiSelectGroupThemeType\n emptyText?: string\n}>(), {\n emptyText: 'Нет элементов',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst isVisible = computed(() => multiSelectContext.isGroupMatchingSearch(props.group.id))\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst slots = useSlots()\nconst hasNoChildren = computed(() => {\n if (!slots.default) return true\n const children = slots.default()\n return children.length === 0\n})\n\nconst isGroupAllSelected = computed(() =>\n multiSelectContext.isGroupAllSelected(props.group.id)\n)\nconst isGroupPartiallySelected = computed(() =>\n multiSelectContext.isGroupPartiallySelected(props.group.id)\n)\n\nconst isChecked = computed(() =>\n isGroupAllSelected.value || isGroupPartiallySelected.value\n)\n\nconst checkedStyle = computed<CheckedStyleType>(() =>\n isGroupAllSelected.value ? 'mark' : 'indeterminate'\n)\n\nconst isValidColor = (color: string): boolean => {\n return COLOR_PATTERN.test(color.trim())\n}\n\nconst headerStyle = computed(() => {\n const base = { ...props.theme } as Record<string, string>\n if (props.group.color && isValidColor(props.group.color)) {\n base.backgroundColor = props.group.color\n }\n return base\n})\n\nconst handleHeaderClick = () => {\n if (multiSelectContext.groupSelectable) {\n multiSelectContext.onToggleGroup(props.group.id)\n }\n}\n</script>\n","<template>\n <li\n v-if=\"!multiSelectContext.searchQuery\"\n :class=\"styles.item\"\n :style=\"theme\"\n @click=\"handleClick\"\n >\n <Checkbox\n :theme=\"checkboxTheme\"\n :is-checked=\"isChecked\"\n :checked-style=\"checkedStyle\"\n :tabindex=\"-1\"\n @click.stop\n />\n <Option>{{ label }}</Option>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectItemThemeType } from '../Item/Item.themes'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport styles from '../Item/Item.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.All'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectItemThemeType\n label?: string\n}>(), {\n label: 'Выбрать всё',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst isAllSelected = computed(() => multiSelectContext.isAllSelected())\nconst isPartiallySelected = computed(() => multiSelectContext.isPartiallySelected())\n\nconst isChecked = computed(() =>\n isAllSelected.value || isPartiallySelected.value\n)\n\nconst checkedStyle = computed<CheckedStyleType>(() =>\n isAllSelected.value ? 'mark' : 'indeterminate'\n)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n multiSelectContext.onToggleAll()\n}\n</script>\n","<template>\n <slot v-if=\"$slots.default\" />\n <template v-else>\n <Option ref=\"optionRef\" :class=\"styles.text\">\n {{ displayText }}\n </Option>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport styles from './Value.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Value'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n displayMode?: 'count' | 'names'\n maxDisplayItems?: number\n countTemplate?: string\n class?: string\n}>(), {\n placeholder: '',\n displayMode: 'count',\n maxDisplayItems: 2,\n countTemplate: '{n} выбрано',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst optionRef = ref<InstanceType<typeof Option> | null>(null)\n\nconst displayText = computed(() => {\n const selected = multiSelectContext.selectedItems\n\n if (selected.length === 0) {\n return props.placeholder\n }\n\n if (props.displayMode === 'count') {\n return props.countTemplate.replace('{n}', String(selected.length))\n }\n\n // names mode\n const visible = selected.slice(0, props.maxDisplayItems)\n const rest = selected.length - visible.length\n const names = visible.map(item => item.option).join(', ')\n\n if (rest > 0) {\n return `${names} +${rest}`\n }\n return names\n})\n\ndefineExpose({\n optionRef,\n})\n</script>\n","<template>\n <li :class=\"styles.search\" :style=\"theme\">\n <input\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"text\"\n :placeholder=\"placeholder\"\n :value=\"multiSelectContext.searchQuery\"\n @input=\"handleInput\"\n @keydown.stop\n />\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, nextTick } from 'vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectSearchThemeType } from './Search.themes'\nimport styles from './Search.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Search'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectSearchThemeType\n placeholder?: string\n}>(), {\n placeholder: 'Поиск...',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst inputRef = ref<HTMLInputElement | null>(null)\n\nconst handleInput = (e: Event) => {\n multiSelectContext.onSearchChange((e.target as HTMLInputElement).value)\n}\n\n// Auto-focus when list opens\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n nextTick(() => {\n setTimeout(() => inputRef.value?.focus(), 0)\n })\n }\n }\n)\n</script>\n","<template>\n <div :class=\"styles.combobox\" :style=\"theme\">\n <div\n ref=\"containerRef\"\n :class=\"[\n styles.inputContainer,\n {\n [styles.focused]: multiSelectContext.isOpened,\n [styles.invalid]: multiSelectContext.isInvalid,\n [styles.disabled]: multiSelectContext.isDisabled,\n }\n ]\"\n @click=\"handleContainerClick\"\n >\n <input\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"text\"\n :placeholder=\"placeholder\"\n :value=\"multiSelectContext.isOpened ? multiSelectContext.searchQuery : displayText\"\n :disabled=\"multiSelectContext.isDisabled\"\n :readonly=\"!multiSelectContext.isOpened\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeyDown\"\n />\n <slot name=\"after\">\n <span :class=\"[styles.arrow, { [styles.arrowOpen]: multiSelectContext.isOpened }]\" />\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick } from 'vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectGroup } from '../../MultiSelect.types'\nimport type { MultiSelectComboboxThemeType } from './Combobox.themes'\nimport styles from './Combobox.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Combobox'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectComboboxThemeType\n placeholder?: string\n groups?: MultiSelectGroup[]\n}>(), {\n placeholder: 'Поиск...',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst containerRef = ref<HTMLDivElement | null>(null)\n\nconst groupsMap = computed(() => {\n if (!props.groups) return null\n const map = new Map<string | number, string>()\n for (const g of props.groups) {\n map.set(g.id, g.label)\n }\n return map\n})\n\nconst displayText = computed(() => {\n if (multiSelectContext.isOpened) return ''\n const items = multiSelectContext.selectedItems\n if (items.length === 0) return ''\n if (items.length === 1) return items[0].option\n if (multiSelectContext.isAllSelected()) return `Все (${items.length})`\n\n // Group-aware display: show group name only when entire group is selected\n if (groupsMap.value && items.every(i => i.group != null)) {\n const groupIds = [...new Set(items.map(i => i.group!))]\n const fullySelectedGroups = groupIds.filter(id => multiSelectContext.isGroupAllSelected(id))\n\n if (fullySelectedGroups.length > 0 && fullySelectedGroups.length === groupIds.length) {\n if (fullySelectedGroups.length === 1) {\n const label = groupsMap.value.get(fullySelectedGroups[0])\n if (label) return `${label} (${items.length})`\n }\n const firstLabel = groupsMap.value.get(fullySelectedGroups[0])\n if (firstLabel) {\n return fullySelectedGroups.length === 2\n ? `${firstLabel}, ${groupsMap.value.get(fullySelectedGroups[1])}`\n : `${firstLabel} +${fullySelectedGroups.length - 1}`\n }\n }\n }\n\n return `${items[0].option} +${items.length - 1}`\n})\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n multiSelectContext.onSearchChange(value)\n}\n\nconst handleFocus = () => {\n if (!multiSelectContext.isDisabled) {\n multiSelectContext.onOpen(true)\n }\n}\n\nconst handleContainerClick = () => {\n inputRef.value?.focus()\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (e.code === 'Escape') {\n multiSelectContext.onOpen(false)\n inputRef.value?.blur()\n }\n}\n\n// Keep input focused while dropdown is open\nwatch(() => multiSelectContext.isOpened, (opened) => {\n if (opened) {\n nextTick(() => inputRef.value?.focus())\n }\n})\n\ndefineExpose({ inputRef })\n</script>\n","<template>\n <Teleport :to=\"container\" :disabled=\"!container\">\n <div ref=\"portalRef\" v-bind=\"$attrs\">\n <slot />\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport type { PortalProps } from './Portal.types'\n\ntype Props = PortalProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n container: undefined,\n})\n\nconst portalRef = ref<HTMLDivElement | null>(null)\n\nconst container = computed(() => props.container || document.body)\n\ndefineExpose({\n portalRef,\n})\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"blockRef\"\n :class=\"styles.block\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { ContentBlockProps } from './ContentBlock.types'\nimport styles from './ContentBlock.module.scss'\n\ntype Props = ContentBlockProps\n\nconst props = defineProps<Props>()\n\nconst blockRef = ref<HTMLDivElement | null>(null)\n\ndefineExpose({\n blockRef,\n})\n</script>\n","type ContentBlockKey =\n | '--crm-ui-kit-content-block-box-shadow'\n | '--crm-ui-kit-content-block-background'\n | '--crm-ui-kit-content-block-box-sizing'\n | '--crm-ui-kit-content-block-padding'\n | '--crm-ui-kit-content-block-border-radius'\n\nexport type ContentBlockThemeType = {\n [K in ContentBlockKey]: string\n}\n\nexport const ContentBlockTheme: ContentBlockThemeType = {\n '--crm-ui-kit-content-block-box-sizing': 'border-box',\n '--crm-ui-kit-content-block-padding': '18px 18px 29px',\n '--crm-ui-kit-content-block-border-radius': '3px',\n '--crm-ui-kit-content-block-box-shadow':\n 'var(--crm-ui-kit-palette-content-block-box-shadow)',\n '--crm-ui-kit-content-block-background':\n 'var(--crm-ui-kit-palette-background-primary)',\n}\n","<template>\n <a\n ref=\"linkRef\"\n v-bind=\"$attrs\"\n :class=\"styles.link\"\n :style=\"theme\"\n >\n <slot />\n </a>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { LinkProps } from './Link.types'\nimport styles from './Link.module.scss'\n\ntype Props = LinkProps\n\nconst props = defineProps<Props>()\n\nconst linkRef = ref<HTMLAnchorElement | null>(null)\n\ndefineExpose({\n linkRef,\n})\n</script>\n","type LinkThemeKey =\n | '--crm-ui-kit-link-color'\n | '--crm-ui-kit-link-hover-color'\n | '--crm-ui-kit-link-focus-visible-outline-color'\n | '--crm-ui-kit-link-focus-visible-outline-width'\n | '--crm-ui-kit-link-focus-visible-outline-style'\n | '--crm-ui-kit-link-focus-visible-outline-offset'\n | '--crm-ui-kit-link-focus-visible-border-radius'\n | '--crm-ui-kit-link-text-decoration'\n\nexport type LinkTheme = {\n [K in LinkThemeKey]: string\n}\n\nexport const LinkPrimaryTheme: LinkTheme = {\n '--crm-ui-kit-link-color': 'var(--crm-ui-kit-palette-link-primary)',\n '--crm-ui-kit-link-hover-color':\n 'var(--crm-ui-kit-palette-link-hover-primary)',\n '--crm-ui-kit-link-text-decoration': 'underline',\n '--crm-ui-kit-link-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-link-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-link-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-link-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-link-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n","export const SpinnerTheme = {\n '--crm-ui-kit-spinner-border-color': '#158fd2',\n '--crm-ui-kit-spinner-border-width': '2px',\n '--crm-ui-kit-spinner-circle-size': '16px',\n '--crm-ui-kit-spinner-border-style': 'solid',\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"calloutRef\"\n :class=\"styles.wrapper\"\n :style=\"themeStyles\"\n >\n <component\n :is=\"theme.Icon\"\n v-if=\"isIconAvailable\"\n :class=\"styles.icon\"\n />\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { CalloutProps } from './Callout.types'\nimport styles from './Callout.module.scss'\n\ntype Props = CalloutProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isIconAvailable: true,\n})\n\nconst calloutRef = ref<HTMLDivElement | null>(null)\n\nconst themeStyles = computed(() => {\n const { Icon, ...cssVars } = props.theme\n return cssVars\n})\n\ndefineExpose({\n calloutRef,\n})\n</script>\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\" d=\\\"M9 15.207q0-.468.292-.76c.195-.194.468-.272.799-.272.35 0 .623.097.818.272q.292.292.292.76c0 .468-.097.565-.292.76q-.292.292-.818.292c-.331 0-.585-.097-.799-.292Q9 15.675 9 15.207m.195-8.688h1.831v4.5l-.35 2.22h-1.13l-.351-2.22z\\\" clip-rule=\\\"evenodd\\\"></path><path stroke=\\\"currentColor\\\" stroke-width=\\\"1.3\\\" d=\\\"M8.666 2.47a1.542 1.542 0 0 1 2.671 0l7.804 13.518a1.542 1.542 0 0 1-1.335 2.313H2.197a1.542 1.542 0 0 1-1.335-2.313z\\\"></path></g><defs><clipPath id=\\\"a\\\"><path fill=\\\"currentColor\\\" d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"currentColor\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path d=\\\"M8.96 4.75h2.077v4.859l-.403 2.407H9.362L8.96 9.609zm-.218 9.363q0-.517.341-.812.342-.31.9-.31.59 0 .93.31.34.295.341.812 0 .516-.34.827-.342.31-.931.31-.558 0-.9-.31-.34-.31-.34-.827Z\\\"></path><path fill-rule=\\\"evenodd\\\" d=\\\"M10 1.625a8.375 8.375 0 1 0 0 16.75 8.375 8.375 0 0 0 0-16.75M.375 10a9.625 9.625 0 1 1 19.25 0 9.625 9.625 0 0 1-19.25 0\\\" clip-rule=\\\"evenodd\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g stroke=\\\"currentColor\\\" clip-path=\\\"url(#a)\\\"><path stroke-width=\\\"1.299\\\" d=\\\"M.65 10a9.35 9.35 0 1 1 18.7 0 9.35 9.35 0 0 1-18.7 0Z\\\"></path><path stroke-width=\\\"1.299\\\" d=\\\"M.65 10a9.35 9.35 0 1 1 18.7 0 9.35 9.35 0 0 1-18.7 0Z\\\"></path><path stroke-width=\\\"1.455\\\" d=\\\"m5.328 10 3.117 3.117 6.234-6.234\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"currentColor\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path d=\\\"M10.972 15.195H9.023V8.7h1.949v6.494Zm-.285-8.72a.96.96 0 0 1-.695.278.93.93 0 0 1-.69-.284.96.96 0 0 1-.279-.695q0-.413.285-.69a.96.96 0 0 1 .695-.279q.412 0 .69.284.279.285.279.696a.93.93 0 0 1-.285.69\\\"></path><path fill-rule=\\\"evenodd\\\" d=\\\"M10 1.299A8.701 8.701 0 1 0 10 18.7a8.701 8.701 0 0 0 0-17.4ZM0 10C0 4.477 4.477 0 10 0s10 4.477 10 10-4.477 10-10 10S0 15.523 0 10\\\" clip-rule=\\\"evenodd\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import WarningIcon from '@/icons/warning.svg'\nimport ErrorIcon from '@/icons/error.svg'\nimport SuccessIcon from '@/icons/success.svg'\nimport InfoIcon from '@/icons/info.svg'\n\ntype CalloutKey =\n | '--crm-ui-kit-callout-background-color'\n | '--crm-ui-kit-callout-padding'\n | '--crm-ui-kit-callout-border-radius'\n | '--crm-ui-kit-callout-icon-color'\n\nexport type CalloutThemeType = {\n Icon: unknown\n} & {\n [K in CalloutKey]: string\n}\n\nexport const CalloutBaseValues: Omit<\n CalloutThemeType,\n 'Icon' | '--crm-ui-kit-callout-background-color'\n> = {\n '--crm-ui-kit-callout-padding': '12px',\n '--crm-ui-kit-callout-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n '--crm-ui-kit-callout-icon-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n\nexport const CalloutWarningTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: WarningIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-warning-background-color)',\n}\n\nexport const CalloutErrorTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: ErrorIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-error-background-color)',\n}\n\nexport const CalloutSuccessTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: SuccessIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-success-background-color)',\n}\n\nexport const CalloutInfoTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: InfoIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-info-background-color)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { AccordionContextProps } from './Accordion.types'\n\nconst DISPLAY_NAME = 'Accordion'\n\nconst [provideAccordionContext, useAccordionContext] =\n createComponentContext<AccordionContextProps>(DISPLAY_NAME)\n\nexport { provideAccordionContext, useAccordionContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"accordionRef\"\n :class=\"[styles.wrapper, themeClassName]\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, toRef } from 'vue'\nimport { provideAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { AccordionSingleProps } from '../../Accordion.types'\nimport type { AccordionThemeType } from '../../Accordion.themes'\nimport styles from '../../Accordion.module.scss'\n\ntype Props = AccordionSingleProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isCollapsible: false,\n})\n\nconst emit = defineEmits<{\n (e: 'change', value?: string): void\n}>()\n\nconst accordionRef = ref<HTMLDivElement | null>(null)\nconst internalValue = ref<string | undefined>(props.defaultValue)\n\nconst themeClassName = useThemeClassName<AccordionThemeType>(props.theme)\n\nconst isControlled = computed(() => 'value' in props && props.value !== undefined)\nconst currentValue = computed(() =>\n isControlled.value ? props.value : internalValue.value\n)\n\nconst getCorrectValue = (newValue: string) => {\n if (props.isCollapsible) {\n return newValue === currentValue.value ? undefined : newValue\n }\n return newValue\n}\n\nconst handleChange = (newValue: string) => {\n const correctValue = getCorrectValue(newValue)\n\n if (!isControlled.value) {\n internalValue.value = correctValue\n }\n\n emit('change', correctValue)\n}\n\n// Provide context - просто передаём computed ref напрямую\n// Vue автоматически отслеживает изменения в computed\nprovideAccordionContext({\n value: currentValue, // computed ref\n defaultValue: toRef(() => props.defaultValue),\n onChange: handleChange,\n})\n\ndefineExpose({\n accordionRef,\n})\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"accordionRef\"\n :class=\"[styles.wrapper, themeClassName]\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, toRef } from 'vue'\nimport { provideAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { AccordionMultipleProps } from '../../Accordion.types'\nimport type { AccordionThemeType } from '../../Accordion.themes'\nimport styles from '../../Accordion.module.scss'\n\ntype Props = AccordionMultipleProps\n\nconst props = withDefaults(defineProps<Props>(), {\n defaultValue: () => [],\n})\n\nconst emit = defineEmits<{\n (e: 'change', value: string[]): void\n}>()\n\nconst accordionRef = ref<HTMLDivElement | null>(null)\nconst internalValue = ref<string[]>(props.defaultValue || [])\n\nconst themeClassName = useThemeClassName<AccordionThemeType>(props.theme)\n\nconst isControlled = computed(() => 'value' in props && props.value !== undefined)\nconst currentValue = computed(() =>\n isControlled.value ? (props.value || []) : internalValue.value\n)\n\nconst getCorrectValue = (newValue: string): string[] => {\n const current = currentValue.value || []\n if (current.includes(newValue)) {\n return current.filter((val) => val !== newValue)\n }\n return [...current, newValue]\n}\n\nconst handleChange = (newValue: string) => {\n const correctValue = getCorrectValue(newValue)\n\n if (!isControlled.value) {\n internalValue.value = correctValue\n }\n\n emit('change', correctValue)\n}\n\n// Provide context - просто передаём computed ref напрямую\n// Vue автоматически отслеживает изменения в computed\nprovideAccordionContext({\n value: currentValue, // computed ref\n defaultValue: toRef(() => props.defaultValue),\n onChange: handleChange,\n})\n\ndefineExpose({\n accordionRef,\n})\n</script>\n","<template>\n <AccordionMultiple\n v-if=\"type === 'multiple'\"\n v-bind=\"($props as AccordionMultipleProps)\"\n ref=\"accordionRef\"\n >\n <slot />\n </AccordionMultiple>\n <AccordionSingle\n v-else\n v-bind=\"($props as AccordionSingleProps)\"\n ref=\"accordionRef\"\n >\n <slot />\n </AccordionSingle>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport AccordionSingle from './components/AccordionSingle/AccordionSingle.vue'\nimport AccordionMultiple from './components/AccordionMultiple/AccordionMultiple.vue'\nimport type {\n AccordionProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n} from './Accordion.types'\nimport { DISPLAY_NAME } from './Accordion.context'\n\ndefineProps<AccordionProps>()\n\nconst accordionRef = ref<\n InstanceType<typeof AccordionSingle | typeof AccordionMultiple> | null\n>(null)\n\ndefineExpose({\n accordionRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"10\",\n height: \"7\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n fill: \"currentColor\",\n \"fill-rule\": \"evenodd\",\n d: \"M.176.78a.574.574 0 0 1 .857 0L4.96 5.058 8.967.692a.573.573 0 0 1 .857 0 .705.705 0 0 1 0 .933L5.485 6.351a.6.6 0 0 1-.14.114.573.573 0 0 1-.83-.026L.175 1.713a.706.706 0 0 1 0-.933Z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]))]))\n}\nexport default { render: render }","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"itemRef\"\n :class=\"[\n styles.wrapper,\n {\n [styles.active]: isActive\n },\n themeClassName\n ]\"\n >\n <div :class=\"styles.header\" @click=\"handleClick\">\n <div :class=\"styles.header_left\">\n <div v-if=\"before\" :class=\"styles.before_title\">\n <component :is=\"before\" />\n </div>\n\n <Text :theme=\"TextPrimaryTheme\" size=\"xl\" :is-ellipsis=\"true\">\n {{ title }}\n </Text>\n </div>\n\n <span :class=\"styles.chevron_container\">\n <ChevronDownIcon :class=\"styles.chevron_icon\" />\n </span>\n </div>\n\n <div :class=\"styles.content\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, unref } from 'vue'\nimport ChevronDownIcon from '@/icons/chevronDown.svg'\nimport Text from '@/components/Text/Text.vue'\nimport { TextPrimaryTheme } from '@/components/Text/Text.themes'\nimport { useAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { ItemProps } from './Item.types'\nimport type { AccordionItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'Accordion.Item'\n\ntype Props = ItemProps\n\nconst props = withDefaults(defineProps<Props>(), {\n before: null,\n})\n\nconst itemRef = ref<HTMLDivElement | null>(null)\n\nconst { onChange, value: currentValue } = useAccordionContext(DISPLAY_NAME)\n\nconst themeClassName = useThemeClassName<AccordionItemThemeType>(props.theme)\n\nconst handleClick = () => {\n onChange(props.value)\n}\n\nconst isActive = computed(() => {\n const val = unref(currentValue)\n if (Array.isArray(val)) {\n return val.includes(props.value)\n }\n return val === props.value\n})\n\ndefineExpose({\n itemRef,\n})\n</script>\n","type AccordionThemeKey = '--crm-ui-kit-accordion-width'\n\nexport type AccordionThemeType = {\n [K in AccordionThemeKey]: string\n}\n\nexport const AccordionTheme: AccordionThemeType = {\n '--crm-ui-kit-accordion-width': '100%',\n}\n","type ItemThemeKey =\n | '--crm-ui-kit-accordion-item-border-radius'\n | '--crm-ui-kit-accordion-item-border-color'\n | '--crm-ui-kit-accordion-item-box-shadow'\n | '--crm-ui-kit-accordion-item-background-color'\n | '--crm-ui-kit-accordion-item-padding'\n | '--crm-ui-kit-accordion-item-margin-bottom'\n | '--crm-ui-kit-accordion-item-chevron-icon-color'\n\nexport type AccordionItemThemeType = {\n [K in ItemThemeKey]: string\n}\n\nexport const AccordionItemTheme: AccordionItemThemeType = {\n '--crm-ui-kit-accordion-item-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n '--crm-ui-kit-accordion-item-box-shadow':\n 'var(--crm-ui-kit-palette-accordion-item-box-shadow)',\n '--crm-ui-kit-accordion-item-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-accordion-item-padding': '12px 12px 12px 22px',\n '--crm-ui-kit-accordion-item-margin-bottom': '16px',\n '--crm-ui-kit-accordion-item-chevron-icon-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-accordion-item-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n","import AccordionComponent from './Accordion.vue'\nimport Item from './components/Item/Item.vue'\n\nexport * from './Accordion.types'\nexport * from './Accordion.themes'\nexport { AccordionItemTheme, type AccordionItemThemeType } from './components/Item'\n\n// Create compound component\nconst Accordion = AccordionComponent as typeof AccordionComponent & {\n Item: typeof Item\n}\n\nAccordion.Item = Item\n\nexport { Accordion }\nexport default Accordion\n","import { createComponentContext } from '@/lib/vue'\nimport type { FilterTabsContextProps } from './FilterTabs.types'\n\nconst DISPLAY_NAME = 'FilterTabs'\n\nconst [provideFilterTabsContext, useFilterTabsContext] =\n createComponentContext<FilterTabsContextProps>(DISPLAY_NAME)\n\nexport { provideFilterTabsContext, useFilterTabsContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"filterTabsRef\"\n :class=\"[\n styles.filter_tabs,\n {\n [styles.horizontal]: orientation === 'horizontal'\n },\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watchEffect } from 'vue'\nimport { provideFilterTabsContext, DISPLAY_NAME } from './FilterTabs.context'\nimport type { FilterTabsProps } from './FilterTabs.types'\nimport styles from './FilterTabs.module.scss'\n\ntype Props = FilterTabsProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'horizontal',\n})\n\nconst emit = defineEmits<{\n (e: 'change', updatedValues: string[], trigger?: string): void\n}>()\n\nconst filterTabsRef = ref<HTMLDivElement | null>(null)\nconst state = ref<string[]>([])\n\nconst handleManageState = (name?: string) => {\n const prev = state.value\n\n let updatedState = prev\n\n if (!name && state.value.length) {\n updatedState = []\n }\n\n if (name) {\n const isSelected = state.value.includes(name)\n\n if (props.isMultiSelect) {\n updatedState = isSelected\n ? prev.filter((item) => item !== name)\n : [...prev, name]\n }\n\n if (!props.isMultiSelect && !isSelected) {\n updatedState = [name]\n }\n }\n\n state.value = updatedState\n emit('change', updatedState, name)\n}\n\nconst registerActiveName = (name: string) => {\n const prev = state.value\n\n if (props.isMultiSelect) {\n state.value = [...prev, name]\n return\n }\n\n if (!props.isMultiSelect && !prev.length) {\n state.value = [name]\n }\n}\n\nconst context = reactive({\n values: state.value,\n onChange: handleManageState,\n registerActiveName,\n isDisabled: props.isDisabled,\n})\n\nwatchEffect(() => {\n context.values = state.value\n context.isDisabled = props.isDisabled\n})\n\nprovideFilterTabsContext(context as any)\n\ndefineExpose({\n filterTabsRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type FilterTabsThemeKey = '--crm-ui-kit-filter-tabs-spacing'\n\nexport type FilterTabsThemeType = {\n [K in FilterTabsThemeKey]: string\n}\n\nexport const FilterTabsTheme: FilterTabsThemeType = {\n '--crm-ui-kit-filter-tabs-spacing': '8px',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { TabItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'FilterTabs.ItemRoot'\n\nconst [provideTabItemRootContext, useTabItemRootContext] =\n createComponentContext<TabItemContextProps>(DISPLAY_NAME)\n\nexport { provideTabItemRootContext, useTabItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport { useFilterTabsContext } from '../../FilterTabs.context'\nimport { provideTabItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst filterTabsContext = useFilterTabsContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => filterTabsContext.isDisabled)\nconst { registerActiveName } = filterTabsContext\n\nonMounted(() => {\n if (props.isDefaultActive && props.name) {\n registerActiveName(props.name)\n }\n})\n\nconst contextValue = computed(() => {\n const { theme, class: _class, isDefaultActive, ...rest } = props\n return rest\n})\n\nprovideTabItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-filter-tabs-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const FilterTabsItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-filter-tabs-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","<template>\n <button\n ref=\"buttonRef\"\n v-bind=\"restProps\"\n :class=\"[\n styles.button,\n {\n [styles.selected]: isSelected\n },\n className\n ]\"\n :style=\"theme\"\n :name=\"name\"\n :disabled=\"isDisabled || isItemRootDisabled\"\n @click=\"handleChange\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useFilterTabsContext } from '../../FilterTabs.context'\nimport { useTabItemRootContext } from '../ItemRoot/ItemRoot.context'\nimport type { TabProps } from './Tab.types'\nimport styles from './Tab.module.scss'\n\nconst DISPLAY_NAME = 'FilterTabs.Tab'\n\ntype Props = TabProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst { theme, class: className, ...restProps } = props\n\nconst buttonRef = ref<HTMLButtonElement | null>(null)\n\nconst filterTabsContext = useFilterTabsContext(DISPLAY_NAME)\n\nconst { name, isDisabled: isItemRootDisabled } =\n useTabItemRootContext(DISPLAY_NAME)\n\nconst isSelected = computed(() => filterTabsContext.values.includes(name))\nconst isDisabled = computed(() => filterTabsContext.isDisabled)\n\nconst handleChange = () => {\n filterTabsContext.onChange(name)\n}\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","type TabThemeKey =\n | '--crm-ui-kit-filter-tabs-tab-z-index'\n | '--crm-ui-kit-filter-tabs-tab-background-color'\n | '--crm-ui-kit-filter-tabs-tab-border-width'\n | '--crm-ui-kit-filter-tabs-tab-border-radius'\n | '--crm-ui-kit-filter-tabs-tab-border-style'\n | '--crm-ui-kit-filter-tabs-tab-action-color'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-color'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-width'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-style'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-offset'\n | '--crm-ui-kit-filter-tabs-tab-text-color'\n | '--crm-ui-kit-filter-tabs-tab-hover-background-color'\n\nexport type TabThemeType = {\n [K in TabThemeKey]: string\n}\n\nexport const TabPrimaryTheme: TabThemeType = {\n '--crm-ui-kit-filter-tabs-tab-z-index': '3',\n '--crm-ui-kit-filter-tabs-tab-action-color':\n 'var(--crm-ui-kit-color-blueberry)',\n\n '--crm-ui-kit-filter-tabs-tab-border-width': '1px',\n '--crm-ui-kit-filter-tabs-tab-border-radius': '3px',\n '--crm-ui-kit-filter-tabs-tab-border-style': 'solid',\n\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-color':\n 'var(--crm-ui-kit-color-cobalt-blue)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-filter-tabs-tab-background-color':\n 'var(--crm-ui-kit-palette-surface-background-color)',\n '--crm-ui-kit-filter-tabs-tab-text-color':\n 'var(--crm-ui-kit-palette-surface-text-color)',\n '--crm-ui-kit-filter-tabs-tab-hover-background-color':\n 'var(--crm-ui-kit-palette-surface-hover-background-color)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxContextProps } from './CheckboxGroup.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup'\n\nconst [provideCheckboxGroupContext, useCheckboxGroupContext] =\n createComponentContext<CheckboxContextProps>(DISPLAY_NAME)\n\nexport { provideCheckboxGroupContext, useCheckboxGroupContext, DISPLAY_NAME }\n","import { ref, watch, nextTick, type Ref } from 'vue'\nimport type {\n InternalCheckboxGroupChangeEvent,\n RegisterHandlerType,\n CheckboxStateType,\n CheckboxGroupChangeEvent,\n} from '../CheckboxGroup.types'\n\nexport interface UseCheckboxGroupStateArgs {\n isDisabled?: boolean\n onChange: Ref<CheckboxGroupChangeEvent | undefined>\n}\n\nexport const useCheckboxGroupState = ({\n isDisabled,\n onChange,\n}: UseCheckboxGroupStateArgs) => {\n const state = ref<Map<string, CheckboxStateType>>(new Map())\n const registeredComponents = ref<Record<string, boolean>>({})\n const queueComponents = ref<CheckboxStateType[]>([])\n\n const handleChange = (changeEvent: InternalCheckboxGroupChangeEvent) => {\n const copyState = new Map(state.value)\n\n if (changeEvent.type === 'selectAll' && !isDisabled) {\n const isSomeChecked = Array.from(copyState.values()).some(\n (checkbox) => checkbox.isChecked && !checkbox.isDisabled\n )\n\n copyState.forEach((checkbox) => {\n if (!checkbox.isDisabled) {\n checkbox.isChecked = !isSomeChecked\n }\n })\n }\n\n if (changeEvent.type === 'checkbox' && !isDisabled) {\n const currentCheckbox = copyState.get(changeEvent.name)\n\n if (currentCheckbox && !currentCheckbox.isDisabled) {\n copyState.set(currentCheckbox.name, {\n ...currentCheckbox,\n isChecked: !currentCheckbox.isChecked,\n })\n }\n }\n\n state.value = copyState\n if (typeof onChange.value === 'function') {\n onChange.value([...copyState.values()], changeEvent)\n }\n }\n\n watch(\n () => queueComponents.value.length,\n async () => {\n if (queueComponents.value.length) {\n await nextTick()\n const queue = [...queueComponents.value]\n queueComponents.value = []\n\n const copyState = new Map(state.value)\n queue.forEach((checkbox) => copyState.set(checkbox.name, checkbox))\n state.value = copyState\n }\n },\n { flush: 'post' }\n )\n\n const register: RegisterHandlerType = (name, options = {}) => {\n if (name !== 'selectAll' && !registeredComponents.value[name]) {\n registeredComponents.value[name] = true\n\n queueComponents.value.push({\n name,\n isChecked: Boolean(options.isDefaultChecked),\n isDisabled: Boolean(options.isDisabled),\n })\n }\n\n return {\n name,\n onChange: handleChange,\n ...options,\n }\n }\n\n return {\n state,\n register,\n }\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"checkboxGroupRef\"\n :class=\"[\n styles.checkbox_group,\n {\n [styles.horizontal]: orientation === 'horizontal'\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, toRef, watchEffect } from 'vue'\nimport { provideCheckboxGroupContext, DISPLAY_NAME } from './CheckboxGroup.context'\nimport { useCheckboxGroupState } from './composables/useCheckboxGroupState'\nimport type { CheckboxGroupProps } from './CheckboxGroup.types'\nimport styles from './CheckboxGroup.module.scss'\n\ntype Props = CheckboxGroupProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'vertical',\n})\n\nconst checkboxGroupRef = ref<HTMLDivElement | null>(null)\n\nconst { register, state } = useCheckboxGroupState({\n onChange: toRef(props, 'onChange'),\n isDisabled: props.isDisabled,\n})\n\n// Provide reactive context — provide once, update reactively\nconst context = reactive({\n values: state.value,\n register,\n isDisabled: props.isDisabled,\n})\n\nwatchEffect(() => {\n context.values = state.value\n context.isDisabled = props.isDisabled\n})\n\nprovideCheckboxGroupContext(context as any)\n\ndefineExpose({\n checkboxGroupRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type CheckboxGroupThemeKey = '--crm-ui-kit-checkbox-group-spacing'\n\nexport type CheckboxGroupThemeType = {\n [K in CheckboxGroupThemeKey]: string\n}\n\nexport const CheckboxGroupTheme: CheckboxGroupThemeType = {\n '--crm-ui-kit-checkbox-group-spacing': '8px',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.ItemRoot'\n\nconst [provideCheckboxItemRootContext, useCheckboxItemRootContext] =\n createComponentContext<CheckboxItemContextProps>(DISPLAY_NAME)\n\nexport { provideCheckboxItemRootContext, useCheckboxItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport { provideCheckboxItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => groupContext.isDisabled)\n\nconst contextValue = computed(() => {\n const { theme, class: _class, ...checkboxProps } = props\n return {\n ...groupContext.register(props.name, checkboxProps),\n value: props.value,\n }\n})\n\nprovideCheckboxItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-checkbox-group-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const CheckboxGroupItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-checkbox-group-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxItemSelectAllContextValue } from './ItemRootSelectAll.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.ItemRootSelectAll'\n\nconst [\n provideCheckboxItemRootSelectAllContext,\n useCheckboxItemRootSelectAllContext,\n] = createComponentContext<CheckboxItemSelectAllContextValue>(DISPLAY_NAME)\n\nexport {\n provideCheckboxItemRootSelectAllContext,\n useCheckboxItemRootSelectAllContext,\n DISPLAY_NAME,\n}\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport {\n provideCheckboxItemRootSelectAllContext,\n DISPLAY_NAME,\n} from './ItemRootSelectAll.context'\nimport type { ItemRootSelectAllProps } from './ItemRootSelectAll.types'\nimport styles from '../ItemRoot/ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootSelectAllProps>()\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => groupContext.isDisabled)\n\nconst contextValue = computed(() => {\n const { theme, class: _class, ...rest } = props\n return {\n ...groupContext.register('selectAll'),\n ...rest,\n }\n})\n\nprovideCheckboxItemRootSelectAllContext(contextValue.value)\n</script>\n","<template>\n <CheckboxCore\n ref=\"checkboxRef\"\n :class=\"className_\"\n :theme=\"theme\"\n :value=\"SELECT_ALL\"\n :is-disabled=\"groupContext.isDisabled || selectAllContext.isDisabled\"\n :is-checked=\"propsBasedOnInternalState.isChecked\"\n :checked-style=\"propsBasedOnInternalState.checkedStyle\"\n v-bind=\"rest\"\n @change=\"handleChange\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport CheckboxCore from '@/components/Checkbox/Checkbox.vue'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport { useCheckboxItemRootSelectAllContext } from './ItemRootSelectAll.context'\nimport type { CheckboxProps } from '../Checkbox/Checkbox.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.CheckboxSelectAll'\nconst SELECT_ALL = 'selectAll'\n\ntype Props = CheckboxProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst { theme, class: className_, checkedStyle: _checkedStyle, ...rest } = props\n\nconst checkboxRef = ref<InstanceType<typeof CheckboxCore> | null>(null)\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\n\nconst selectAllContext = useCheckboxItemRootSelectAllContext(DISPLAY_NAME)\n\nconst handleChange = () => {\n selectAllContext.onChange({ type: SELECT_ALL, name: SELECT_ALL })\n}\n\nconst propsBasedOnInternalState = computed(() => {\n const vals = groupContext.values\n const allChecked = Array.from(vals.values()).every(\n (checkbox) => checkbox.isChecked\n )\n const checkedStyle: CheckedStyleType = allChecked ? 'mark' : 'indeterminate'\n\n return {\n isChecked: Array.from(vals.values()).some(\n (checkbox) => checkbox.isChecked\n ),\n checkedStyle,\n }\n})\n\ndefineExpose({\n checkboxRef,\n})\n</script>\n","import { createComponentContext } from '@/lib/vue'\nimport type { RadioContextProps } from './RadioGroup.types'\n\nconst DISPLAY_NAME = 'RadioGroup'\n\nconst [provideRadioGroupContext, useRadioGroupContext] =\n createComponentContext<RadioContextProps>(DISPLAY_NAME)\n\nexport { provideRadioGroupContext, useRadioGroupContext, DISPLAY_NAME }\n","import { createComponentContext } from '@/lib/vue'\nimport type { RadioItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'RadioGroup.ItemRoot'\n\nconst [provideRadioItemRootContext, useRadioItemRootContext] =\n createComponentContext<RadioItemContextProps>(DISPLAY_NAME)\n\nexport { provideRadioItemRootContext, useRadioItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useRadioGroupContext } from '../../RadioGroup.context'\nimport { provideRadioItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst radioGroupContext = useRadioGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => radioGroupContext.isDisabled)\n\n// Provide context for Radio component\nconst contextValue = computed(() => {\n const { theme, ...rest } = props\n return rest\n})\n\nprovideRadioItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-radio-group-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const RadioGroupItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-radio-group-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","<template>\n <div :class=\"[styles.wrapper, itemRootClass]\" :style=\"theme\">\n <VisuallyHiddenInput\n ref=\"inputRef\"\n :class=\"[styles.input, props.class]\"\n type=\"radio\"\n :value=\"value\"\n :is-disabled=\"radioGroupContext.isDisabled || itemRootIsDisabled\"\n v-bind=\"propsBasedOnType\"\n />\n <span :class=\"styles.radio\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport { useRadioGroupContext } from '../../RadioGroup.context'\nimport { useRadioItemRootContext } from '../ItemRoot/ItemRoot.context'\nimport type { RadioProps } from './Radio.types'\nimport styles from './Radio.module.scss'\n\nconst DISPLAY_NAME = 'RadioGroup.Radio'\n\ntype Props = RadioProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\n\nconst radioGroupContext = useRadioGroupContext(DISPLAY_NAME)\n\nconst {\n value,\n isDisabled: itemRootIsDisabled,\n class: itemRootClass,\n ...restItemRoot\n} = useRadioItemRootContext(DISPLAY_NAME)\n\nconst propsBasedOnType = computed(() => {\n const baseProps = {\n name: radioGroupContext.name,\n onChange: radioGroupContext.onChange,\n ...restItemRoot,\n }\n\n if (radioGroupContext.defaultValue) {\n return {\n isDefaultChecked: radioGroupContext.defaultValue === value,\n ...baseProps,\n }\n }\n\n return {\n isChecked: radioGroupContext.value === value,\n ...baseProps,\n }\n})\n\ndefineExpose({\n inputRef,\n})\n</script>\n","type RadioThemeKey =\n | '--crm-ui-kit-radio-size'\n | '--crm-ui-kit-radio-z-index'\n | '--crm-ui-kit-radio-background-color'\n | '--crm-ui-kit-radio-border-width'\n | '--crm-ui-kit-radio-border-radius'\n | '--crm-ui-kit-radio-border-style'\n | '--crm-ui-kit-radio-border-color'\n | '--crm-ui-kit-radio-checked-circle-size'\n | '--crm-ui-kit-radio-checked-circle-color'\n | '--crm-ui-kit-radio-focus-visible-outline-color'\n | '--crm-ui-kit-radio-focus-visible-outline-width'\n | '--crm-ui-kit-radio-focus-visible-outline-style'\n | '--crm-ui-kit-radio-focus-visible-outline-offset'\n | '--crm-ui-kit-radio-focus-visible-border-radius'\n\nexport type RadioThemeType = {\n [K in RadioThemeKey]: string\n}\n\nexport const RadioPrimaryTheme: RadioThemeType = {\n '--crm-ui-kit-radio-size': '20px',\n '--crm-ui-kit-radio-z-index': '3',\n '--crm-ui-kit-radio-checked-circle-size': '8px',\n '--crm-ui-kit-radio-checked-circle-color':\n 'var(--crm-ui-kit-color-blueberry)',\n\n '--crm-ui-kit-radio-border-width': '1px',\n '--crm-ui-kit-radio-border-radius': '50%',\n '--crm-ui-kit-radio-border-style': 'solid',\n '--crm-ui-kit-radio-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-radio-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-radio-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-radio-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-radio-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-radio-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-radio-focus-visible-border-radius': '50%',\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"radiogroupRef\"\n role=\"radiogroup\"\n :class=\"[\n styles.radiogroup,\n {\n [styles.horizontal]: orientation === 'horizontal'\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue'\nimport { provideRadioGroupContext, DISPLAY_NAME } from './RadioGroup.context'\nimport type { RadioGroupProps } from './RadioGroup.types'\nimport styles from './RadioGroup.module.scss'\n\ntype Props = RadioGroupProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'vertical',\n})\n\nconst emit = defineEmits<{\n (e: 'change', value: string): void\n}>()\n\nconst radiogroupRef = ref<HTMLDivElement | null>(null)\n\nconst handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('change', target.value)\n}\n\n// Use reactive getters for proper reactivity propagation\nconst context = reactive({\n get name() { return props.name },\n get value() { return props.value },\n get defaultValue() { return props.defaultValue },\n get isDisabled() { return props.isDisabled },\n onChange: handleChange,\n})\n\nprovideRadioGroupContext(context as any)\n\ndefineExpose({\n radiogroupRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport Label from '@/components/Label/Label.vue'\nimport { ItemRoot } from './components/ItemRoot'\nimport { Radio } from './components/Radio'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type RadioGroupThemeKey = '--crm-ui-kit-radio-group-spacing'\n\nexport type RadioGroupThemeType = {\n [K in RadioGroupThemeKey]: string\n}\n\nexport const RadioGroupTheme: RadioGroupThemeType = {\n '--crm-ui-kit-radio-group-spacing': '8px',\n}\n","// Главный файл экспорта библиотеки @flysk-tech/amocrm-kommo-vue-ui-kit\n\n// Стили\nimport './styles/index.scss'\n\n// Типы\nexport * from './types'\n\n// Композиционные функции\nexport * from './composables'\n\n// Утилиты\nexport * from './utils'\n\n// Компоненты\nexport * from './components'\n\n// Версия библиотеки\nexport const version = '0.0.1'\n\n// Функция для установки библиотеки как плагина Vue\nimport type { App } from 'vue'\n\nexport interface AmoCrmUiKitOptions {\n // Опции конфигурации будут добавлены позже\n}\n\nexport function install(app: App, options?: AmoCrmUiKitOptions) {\n // Регистрация компонентов будет добавлена по мере их создания\n // Plugin installation — component registration will be added as components are completed\n}\n\n// Экспорт по умолчанию для использования как плагин\nexport default {\n install,\n version\n}"],"names":["Appearance","APPEARANCE_ATTRIBUTE_NAME","DEFAULT_APPEARANCE","THEME_PROVIDER_KEY","provideTheme","initialConfig","themeConfig","ref","appearance","computed","setTheme","config","updateDocumentTheme","setAppearance","newAppearance","mode","toggleTheme","newMode","context","readonly","provide","useTheme","inject","property","value","useThemeMode","useThemeVariables","useComponentTheme","componentName","theme","themeRef","cssVariables","vars","key","cssVarName","styleVars","styles","createComponentTheme","defaultTheme","customTheme","usePortal","targetSelector","portalTarget","isReady","createPortalTarget","selector","target","onMounted","onUnmounted","createPortalId","prefix","PORTAL_TARGETS","useModalPortal","useTooltipPortal","useDropdownPortal","useFieldValidation","initialValue","rules","error","isDirty","isValid","validate","rule","result","clearError","touch","useFormValidation","initialValues","fields","errors","fieldRules","isFormValid","field","hasErrors","validateField","fieldName","validateForm","newErrors","clearErrors","clearFieldError","_a","setFieldError","getFieldValue","setFieldValue","ValidationRules","message","min","max","emailRegex","regex","DEFAULT_PREFIX","counter","stylesMap","createClass","newTheme","className","styleElement","stylesString","useThemeClassName","currentTheme","currentEntry","updateClassName","existedEntry","themeClassName","entry","watch","onBeforeUnmount","noop","generateId","cn","classes","debounce","func","wait","timeout","args","later","throttle","limit","inThrottle","isObject","deepMerge","source","sourceValue","targetValue","isSupported","feature","inputRef","__expose","_createElementBlock","_mergeProps","_ctx","_unref","__props","props","inputProps","isChecked","isDefaultChecked","rest","getInputElement","el","val","_openBlock","_createBlock","BaseInput","$attrs","useShowInvalidAnimation","shouldShowInvalidAnimation","onAnimationEnd","useShowSuccessfulState","shouldShowSuccessfulState","emit","__emit","showInvalidAnimation","showSuccessfulState","spinnerThemes","_b","_c","_d","disabledTheme","_e","handleClick","event","_createElementVNode","_normalizeClass","_hoisted_2","_createTextVNode","_toDisplayString","_renderSlot","_createVNode","Spinner","_Fragment","ButtonBaseThemeValues","ButtonNeutralTheme","ButtonPrimaryTheme","ButtonSecondaryTheme","TextBaseSizesTheme","TextPrimaryTheme","TextSecondaryLightTheme","TextSecondaryDarkTheme","TextErrorTheme","InputBaseValues","InputLightTheme","InputDarkTheme","InputInvalidTextTheme","InputPrimaryTheme","InputSecondaryTheme","attrs","useAttrs","inputAttrs","_","__","effectiveTheme","invalidTextTheme","handleInput","handleChange","handleFocus","handleBlur","$slots","textareaRef","autoResize","nextTick","newValue","TextAreaBaseValues","TextareaLightTheme","TextareaDarkTheme","isLineClampAllowed","InlineInputBaseValues","InlineInputPrimaryTheme","InlineInputPrimaryFocusedTheme","InlineInputInvalidTextTheme","Text","VisuallyHiddenInput","labelRef","textPlacementMap","textPlacementClass","_hoisted_1","SwitcherPrimaryTheme","ENTER","SPACEBAR","buttonRef","handleKeyDown","e","SelectButtonBaseValues","SelectButtonLightTheme","SelectButtonDarkTheme","createComponentContext","rootComponentName","defaultContext","consumerName","DISPLAY_NAME","provideSelectContext","useSelectContext","__default__","defineComponent","selectRef","internalIsOpened","internalHoveredIndex","internalDefaultValue","isControlled","instance","getCurrentInstance","isOpenControlled","vnode","selected","currentIsOpen","reactive","v","index","item","open","SelectRootTheme","OptionTextTheme","optionRef","selectContext","itemRef","isSelected","isHovered","Option","SelectItemTheme","BASE_WIDTH","BASE_HEIGHT","arrowRef","SelectArrowTheme","iconRef","SelectIconTheme","listRef","slots","_useSlots","itemsLength","hoveredIndex","ListTheme","handleToggle","newVal","oldVal","SelectButton","useOnOutsideClick","handler","useSlots","items","child","itemsMap","map","effectiveHoveredIndex","idx","handleHoveredIndexChange","handleListToggle","toggle","handleItemSelect","listElRef","opened","_Teleport","BaseList","shouldShowPlaceholder","provideMultiSelectContext","useMultiSelectContext","multiSelectRef","internalHoveredValue","searchQuery","internalValues","currentValues","allItems","selectedItems","vals","handleOpen","handleToggleItem","newValues","i","handleToggleGroup","groupId","groupItems","allSelected","handleToggleAll","getGroupItems","isGroupAllSelected","isGroupPartiallySelected","selectedCount","isAllSelected","isPartiallySelected","handleHoveredItemChange","handleSearchChange","query","isItemMatchingSearch","q","isGroupMatchingSearch","newItems","validValues","currentVals","staleValues","MultiSelectRootTheme","multiSelectContext","extractItems","vnodes","children","itemsCount","localHoveredIndex","currentHoveredIndex","total","isTouchableDevice","isTouchable","groupRef","childrenArray","_renderList","_resolveDynamicComponent","LabelGroupTheme","LabelTheme","CheckboxBaseValues","CheckboxLightTheme","CheckboxSmallLightTheme","CheckboxDarkTheme","CheckboxSmallDarkTheme","checkboxTheme","isVisible","Checkbox","COLOR_PATTERN","hasNoChildren","checkedStyle","isValidColor","color","headerStyle","base","handleHeaderClick","displayText","visible","names","containerRef","groupsMap","g","groupIds","fullySelectedGroups","id","label","firstLabel","handleContainerClick","portalRef","container","blockRef","ContentBlockTheme","linkRef","LinkPrimaryTheme","SpinnerTheme","calloutRef","themeStyles","Icon","cssVars","render","_cache","_createStaticVNode","WarningIcon","ErrorIcon","SuccessIcon","InfoIcon","CalloutBaseValues","CalloutWarningTheme","CalloutErrorTheme","CalloutSuccessTheme","CalloutInfoTheme","provideAccordionContext","useAccordionContext","accordionRef","internalValue","currentValue","getCorrectValue","correctValue","toRef","current","AccordionMultiple","$props","AccordionSingle","ChevronDownIcon","onChange","isActive","unref","AccordionTheme","AccordionItemTheme","Accordion","AccordionComponent","Item","provideFilterTabsContext","useFilterTabsContext","filterTabsRef","state","handleManageState","name","prev","updatedState","registerActiveName","watchEffect","FilterTabsTheme","provideTabItemRootContext","useTabItemRootContext","filterTabsContext","groupIsDisabled","contextValue","_class","isDefaultActive","FilterTabsItemRootTheme","restProps","isItemRootDisabled","isDisabled","TabPrimaryTheme","provideCheckboxGroupContext","useCheckboxGroupContext","useCheckboxGroupState","registeredComponents","queueComponents","changeEvent","copyState","isSomeChecked","checkbox","currentCheckbox","queue","options","checkboxGroupRef","register","CheckboxGroupTheme","provideCheckboxItemRootContext","groupContext","checkboxProps","CheckboxGroupItemRootTheme","provideCheckboxItemRootSelectAllContext","useCheckboxItemRootSelectAllContext","SELECT_ALL","className_","_checkedStyle","checkboxRef","selectAllContext","propsBasedOnInternalState","CheckboxCore","provideRadioGroupContext","useRadioGroupContext","provideRadioItemRootContext","useRadioItemRootContext","radioGroupContext","RadioGroupItemRootTheme","itemRootIsDisabled","itemRootClass","restItemRoot","propsBasedOnType","baseProps","RadioPrimaryTheme","radiogroupRef","RadioGroupTheme","version","install","app"],"mappings":";AAAO,IAAKA,uBAAAA,OAIVA,EAAA,UAAU,WAIVA,EAAA,cAAc,eARJA,IAAAA,MAAA,CAAA,CAAA;AAWL,MAAMC,KAA4B,yBAC5BC,KAAqB,WCNrBC,KAAqB,OAAO,gBAAgB;AAYlD,SAASC,GAAaC,GAAoD;AAC/E,QAAMC,IAAcC,EAAiB;AAAA,IACnC,MAAM;AAAA,IACN,iBAAiB,CAAA;AAAA,IACjB,GAAGF;AAAA,EAAA,CACJ,GAEKG,IAAaC,EAAqB,MAC/BH,EAAY,MAAM,SAAS,SAASN,GAAW,cAAcA,GAAW,OAChF,GAEKU,IAAW,CAACC,MAAiC;AACjD,IAAAL,EAAY,QAAQ;AAAA,MAClB,GAAGA,EAAY;AAAA,MACf,GAAGK;AAAA,IAAA,GAELC,GAAoBN,EAAY,KAAK;AAAA,EACvC,GAEMO,IAAgB,CAACC,MAA8B;AACnD,UAAMC,IAAkBD,MAAkBd,GAAW,cAAc,SAAS;AAC5E,IAAAU,EAAS,EAAE,MAAAK,GAAM;AAAA,EACnB,GAEMC,IAAc,MAAM;AACxB,UAAMC,IAAqBX,EAAY,MAAM,SAAS,UAAU,SAAS;AACzE,IAAAI,EAAS,EAAE,MAAMO,GAAS;AAAA,EAC5B;AAGA,EAAAL,GAAoBN,EAAY,KAAK;AAErC,QAAMY,IAAwB;AAAA,IAC5B,aAAaC,EAASb,CAAW;AAAA,IACjC,YAAYa,EAASX,CAAU;AAAA,IAC/B,UAAAE;AAAA,IACA,eAAAG;AAAA,IACA,aAAAG;AAAA,EAAA;AAGF,SAAAI,GAAQjB,IAAoBe,CAAO,GAC5BA;AACT;AAGO,SAASG,KAAyB;AACvC,QAAMH,IAAUI,GAAqBnB,EAAkB;AAEvD,MAAI,CAACe;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,SAAOA;AACT;AAGA,SAASN,GAAoBD,GAAqB;AAChD,EAAI,OAAO,WAAa,QAGxB,SAAS,gBAAgB,aAAa,cAAcA,EAAO,IAAI,GAG3DA,EAAO,mBACT,OAAO,QAAQA,EAAO,eAAe,EAAE,QAAQ,CAAC,CAACY,GAAUC,CAAK,MAAM;AACpE,aAAS,gBAAgB,MAAM,YAAYD,GAAUC,CAAK;AAAA,EAC5D,CAAC;AAEL;AAGO,SAASC,KAAyC;AACvD,QAAM,EAAE,aAAAnB,EAAA,IAAgBe,GAAA;AACxB,SAAOZ,EAAS,MAAMH,EAAY,MAAM,IAAI;AAC9C;AAGO,SAASoB,KAA2D;AACzE,QAAM,EAAE,aAAApB,EAAA,IAAgBe,GAAA;AACxB,SAAOZ,EAAS,MAAMH,EAAY,MAAM,mBAAmB,CAAA,CAAE;AAC/D;AC/FO,SAASqB,GACdC,GACAC,GACA;AACA,QAAMC,IAAW,OAAOD,KAAU,YAAY,WAAWA,IAAQA,IAAQpB,EAAS,MAAMoB,CAAK,GAGvFE,IAAetB,EAAuB,MAAM;AAChD,UAAMuB,IAAqB,CAAA;AAE3B,kBAAO,QAAQF,EAAS,KAAK,EAAE,QAAQ,CAAC,CAACG,GAAKT,CAAK,MAAM;AACvD,YAAMU,IAAa,gBAAgBN,CAAa,IAAIK,CAAG;AACvD,MAAAD,EAAKE,CAAU,IAAI,OAAOV,CAAK;AAAA,IACjC,CAAC,GAEMQ;AAAA,EACT,CAAC,GAGKG,IAAY1B,EAAS,MAAM;AAC/B,UAAM2B,IAAiC,CAAA;AAEvC,kBAAO,QAAQL,EAAa,KAAK,EAAE,QAAQ,CAAC,CAACR,GAAUC,CAAK,MAAM;AAChE,MAAAY,EAAOb,CAAQ,IAAIC;AAAA,IACrB,CAAC,GAEMY;AAAA,EACT,CAAC;AAED,SAAO;AAAA,IACL,cAAcjB,EAASY,CAAY;AAAA,IACnC,WAAWZ,EAASgB,CAAS;AAAA,EAAA;AAEjC;AAGO,SAASE,GACdT,GACAU,GACA;AACA,SAAO,SAAkBC,GAA0B;AACjD,UAAMV,IAAQpB,EAAS,OAAO;AAAA,MAC5B,GAAG6B;AAAA,MACH,GAAGC;AAAA,IAAA,EACH;AAEF,WAAOZ,GAAkBC,GAAeC,CAAK;AAAA,EAC/C;AACF;AC5CO,SAASW,GAAUC,GAA0C;AAClE,QAAMC,IAAenC,EAAA,GACfoC,IAAUpC,EAAI,EAAK,GAEnBqC,IAAqB,CAACC,MAAqB;AAC/C,QAAI,OAAO,WAAa,IAAa,QAAO;AAE5C,QAAIC,IAAS,SAAS,cAA2BD,CAAQ;AAEzD,WAAKC,MAEHA,IAAS,SAAS,cAAc,KAAK,GACrCA,EAAO,aAAa,MAAMD,EAAS,QAAQ,KAAK,EAAE,CAAC,GACnD,SAAS,KAAK,YAAYC,CAAM,IAG3BA;AAAA,EACT;AAEA,SAAAC,GAAU,MAAM;AACd,IAAI,OAAO,WAAa,QAEpBN,IACFC,EAAa,QAAQE,EAAmBH,CAAc,KAAK,SAAS,OAEpEC,EAAa,QAAQ,SAAS,MAGhCC,EAAQ,QAAQ;AAAA,EAClB,CAAC,GAEDK,GAAY,MAAM;AAEhB,IACEP,KACAC,EAAa,SACbA,EAAa,UAAU,SAAS,QAChCA,EAAa,MAAM,SAAS,WAAW,KAEvCA,EAAa,MAAM,OAAA;AAAA,EAEvB,CAAC,GAEM;AAAA,IACL,cAAcvB,EAASuB,CAAY;AAAA,IACnC,SAASvB,EAASwB,CAAO;AAAA,EAAA;AAE7B;AAGO,SAASM,GAAeC,IAAiB,iBAAyB;AACvE,SAAO,GAAGA,CAAM,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAC7D;AAGO,MAAMC,KAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAChB;AAGO,SAASC,KAAkC;AAChD,SAAOZ,GAAUW,GAAe,KAAK;AACvC;AAGO,SAASE,KAAoC;AAClD,SAAOb,GAAUW,GAAe,OAAO;AACzC;AAGO,SAASG,KAAqC;AACnD,SAAOd,GAAUW,GAAe,QAAQ;AAC1C;AClEO,SAASI,GACdC,GACAC,IAA6B,IACT;AACpB,QAAMjC,IAAQjB,EAAOiD,CAAY,GAC3BE,IAAQnD,EAAmB,IAAI,GAC/BoD,IAAUpD,EAAI,EAAK,GAEnBqD,IAAUnD,EAAS,MAAMiD,EAAM,UAAU,IAAI,GAE7CG,IAAW,MAAe;AAC9B,eAAWC,KAAQL,GAAO;AACxB,YAAMM,IAASD,EAAKtC,EAAM,KAAK;AAC/B,UAAIuC,MAAW;AACb,eAAAL,EAAM,QAAQK,GACP;AAAA,IAEX;AACA,WAAAL,EAAM,QAAQ,MACP;AAAA,EACT,GAEMM,IAAa,MAAM;AACvB,IAAAN,EAAM,QAAQ;AAAA,EAChB,GAEMO,IAAQ,MAAM;AAClB,IAAAN,EAAQ,QAAQ;AAAA,EAClB;AAEA,SAAO;AAAA,IACL,OAAAnC;AAAA,IACA,OAAOL,EAASuC,CAAK;AAAA,IACrB,SAASvC,EAASyC,CAAO;AAAA,IACzB,SAASzC,EAASwC,CAAO;AAAA,IACzB,UAAAE;AAAA,IACA,YAAAG;AAAA,IACA,OAAAC;AAAA,EAAA;AAEJ;AAGO,SAASC,GACdC,GACAV,IAAgE,IAChE;AACA,QAAMW,IAAS,CAAA,GACTC,IAAS9D,EAAsC,EAAE;AAGvD,SAAO,KAAK4D,CAAa,EAAE,QAAQ,CAAoBlC,MAAW;AAChE,UAAMqC,IAAab,EAAMxB,CAAG,KAAK,CAAA;AACjC,IAAAmC,EAAOnC,CAAG,IAAIsB,GAAmBY,EAAclC,CAAG,GAAGqC,CAAU;AAAA,EACjE,CAAC;AAED,QAAMC,IAAc9D,EAAS,MACpB,OAAO,OAAO2D,CAAM,EAAE,MAAM,CAAAI,MAASA,EAAM,QAAQ,KAAK,CAChE,GAEKC,IAAYhE,EAAS,MAClB,OAAO,OAAO2D,CAAM,EAAE,KAAK,CAAAI,MAASA,EAAM,MAAM,UAAU,IAAI,CACtE,GAEKE,IAAgB,CAAoBC,MAA0B;AAClE,UAAMH,IAAQJ,EAAOO,CAAS;AAC9B,QAAI,CAACH,EAAO,QAAO;AAEnB,UAAMZ,IAAUY,EAAM,SAAA;AACtB,WAAI,CAACZ,KAAWY,EAAM,MAAM,QAC1BH,EAAO,MAAMM,CAAS,IAAIH,EAAM,MAAM,QAEtC,OAAOH,EAAO,MAAMM,CAAS,GAExBf;AAAA,EACT,GAEMgB,IAAe,MAAe;AAClC,QAAIhB,IAAU;AACd,UAAMiB,IAA8C,CAAA;AAEpD,kBAAO,KAAKT,CAAM,EAAE,QAAQ,CAAoBnC,MAAW;AAEzD,MAAI,CADeyC,EAAczC,CAAG,KACjBmC,EAAOnC,CAAG,EAAE,MAAM,UACnC4C,EAAU5C,CAAG,IAAImC,EAAOnC,CAAG,EAAE,MAAM,OACnC2B,IAAU;AAAA,IAEd,CAAC,GAEDS,EAAO,QAAQQ,GACRjB;AAAA,EACT,GAEMkB,IAAc,MAAM;AACxB,WAAO,OAAOV,CAAM,EAAE,QAAQ,CAAAI,MAASA,EAAM,YAAY,GACzDH,EAAO,QAAQ,CAAA;AAAA,EACjB,GAEMU,IAAkB,CAAoBJ,MAAiB;;AAC3D,KAAAK,IAAAZ,EAAOO,CAAS,MAAhB,QAAAK,EAAmB,cACnB,OAAOX,EAAO,MAAMM,CAAS;AAAA,EAC/B,GAEMM,IAAgB,CAAoBN,GAAcjB,MAAkB;AACxE,IAAIU,EAAOO,CAAS,MAClBP,EAAOO,CAAS,EAAE,MAAM,QAAQjB,GAChCW,EAAO,MAAMM,CAAS,IAAIjB;AAAA,EAE9B,GAEMwB,IAAgB,CAAoBP,MAAuB;;AAC/D,YAAOK,IAAAZ,EAAOO,CAAS,MAAhB,gBAAAK,EAAmB,MAAM;AAAA,EAClC,GAEMG,IAAgB,CAAoBR,GAAcnD,MAAgB;AACtE,IAAI4C,EAAOO,CAAS,MAClBP,EAAOO,CAAS,EAAE,MAAM,QAAQnD;AAAA,EAEpC;AAEA,SAAO;AAAA,IACL,QAAA4C;AAAA,IACA,QAAQjD,EAASkD,CAAM;AAAA,IACvB,aAAalD,EAASoD,CAAW;AAAA,IACjC,WAAWpD,EAASsD,CAAS;AAAA,IAC7B,eAAAC;AAAA,IACA,cAAAE;AAAA,IACA,aAAAE;AAAA,IACA,iBAAAC;AAAA,IACA,eAAAE;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,EAAA;AAEJ;AAGO,MAAMC,KAAkB;AAAA,EAC7B,UAAU,CAACC,IAAU,sCACZ,CAAC7D,MACFA,KAAU,QAA+BA,MAAU,KAC9C6D,IAEF;AAAA,EAIX,WAAW,CAACC,GAAaD,MAChB,CAAC7D,MACFA,KAASA,EAAM,SAAS8D,IACnBD,KAAW,sBAAsBC,CAAG,cAEtC;AAAA,EAIX,WAAW,CAACC,GAAaF,MAChB,CAAC7D,MACFA,KAASA,EAAM,SAAS+D,IACnBF,KAAW,uBAAuBE,CAAG,cAEvC;AAAA,EAIX,OAAO,CAACF,IAAU,+BAAuD;AACvE,UAAMG,IAAa;AACnB,WAAO,CAAChE,MACFA,KAAS,CAACgE,EAAW,KAAKhE,CAAK,IAC1B6D,IAEF;AAAA,EAEX;AAAA,EAEA,SAAS,CAACI,GAAeJ,IAAU,0BAC1B,CAAC7D,MACFA,KAAS,CAACiE,EAAM,KAAKjE,CAAK,IACrB6D,IAEF;AAGb,GCpMMK,KAAiB;AAEvB,IAAIC,KAAU;AAEd,MAAMC,yBAAgB,IAAA,GAEhBC,KAAc,CAAkCC,MAAgB;AACpE,QAAMC,IAAY,GAAGL,EAAc,IAAI,EAAEC,EAAO,IAC1CK,IAAe,SAAS,cAAc,OAAO,GAC7CC,IAAe,OAAO,QAAQH,CAAQ,EACzC,IAAI,CAAC,CAAC7D,GAAKT,CAAK,MAAM,GAAGS,CAAG,KAAKT,CAAK,GAAG,EACzC,KAAK;AAAA,GAAM;AAEd,SAAAwE,EAAa,cAAc,IAAID,CAAS;AAAA,IAASE,CAAY;AAAA,IAC7D,SAAS,KAAK,YAAYD,CAAY,GAE/B,EAAE,WAAAD,GAAW,cAAAC,EAAA;AACtB,GAEaE,KAAoB,CAC/BrE,MACG;AACH,QAAMkE,IAAYxF,EAAY,EAAE;AAChC,MAAI4F,IAAuBtE,GACvBuE;AAEJ,QAAMC,IAAkB,CAACP,MAAgB;AAEvC,IAAIM,MACFA,EAAa,YACTA,EAAa,aAAa,MAE5BA,EAAa,aAAa,OAAA,GAC1BR,GAAU,OAAOO,CAAY,KAIjCA,IAAeL;AACf,UAAMQ,IAAeV,GAAU,IAAIE,CAAQ;AAE3C,QAAIQ;AAEF,MAAAA,EAAa,YACbP,EAAU,QAAQO,EAAa,WAC/BF,IAAeE;AAAA,SACV;AAEL,YAAM,EAAE,WAAWC,GAAgB,cAAAP,EAAA,IAAiBH,GAAYC,CAAQ,GAClEU,IAAQ,EAAE,WAAWD,GAAgB,cAAAP,GAAc,UAAU,EAAA;AACnE,MAAAJ,GAAU,IAAIE,GAAUU,CAAK,GAC7BT,EAAU,QAAQQ,GAClBH,IAAeI;AAAA,IACjB;AAAA,EACF;AAGA,SAAAH,EAAgBxE,CAAK,GAGrB4E,EAAM,MAAM5E,GAAOwE,CAAe,GAGlCK,GAAgB,MAAM;AACpB,IAAIN,MACFA,EAAa,YACTA,EAAa,aAAa,MAC5BA,EAAa,aAAa,OAAA,GAC1BR,GAAU,OAAOO,CAAY;AAAA,EAGnC,CAAC,GAEMJ;AACT,GCzEaY,KAAO,MAAM;AAAC;AAGpB,SAASC,GAAW1D,IAAiB,UAAkB;AAC5D,SAAO,GAAGA,CAAM,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAC7D;AAGO,SAAS2D,MAAMC,GAAwD;AAC5E,SAAOA,EAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAGO,SAASC,GACdC,GACAC,GACkC;AAClC,MAAIC;AAEJ,SAAO,YAA6BC,GAAqB;AACvD,UAAMC,IAAQ,MAAM;AAClB,mBAAaF,CAAO,GACpBF,EAAK,GAAGG,CAAI;AAAA,IACd;AAEA,iBAAaD,CAAO,GACpBA,IAAU,WAAWE,GAAOH,CAAI;AAAA,EAClC;AACF;AAGO,SAASI,GACdL,GACAM,GACkC;AAClC,MAAIC;AAEJ,SAAO,YAA4BJ,GAAqB;AACtD,IAAKI,MACHP,EAAK,MAAM,MAAMG,CAAI,GACrBI,IAAa,IACb,WAAW,MAAOA,IAAa,IAAQD,CAAK;AAAA,EAEhD;AACF;AAGO,SAASE,GAAShG,GAA0C;AACjE,SAAOA,MAAU,QAAQ,OAAOA,KAAU,YAAY,CAAC,MAAM,QAAQA,CAAK;AAC5E;AAGO,SAASiG,GAAyC3E,GAAW4E,GAAuB;AACzF,QAAM3D,IAAS,EAAE,GAAGjB,EAAA;AAEpB,aAAWb,KAAOyF;AAChB,QAAIA,EAAO,eAAezF,CAAG,GAAG;AAC9B,YAAM0F,IAAcD,EAAOzF,CAAG,GACxB2F,IAAc7D,EAAO9B,CAAG;AAE9B,MAAIuF,GAASG,CAAW,KAAKH,GAASI,CAAW,IAC/C7D,EAAO9B,CAAG,IAAIwF,GAAUG,GAAaD,CAA0C,IAE/E5D,EAAO9B,CAAG,IAAI0F;AAAA,IAElB;AAGF,SAAO5D;AACT;AAGO,SAAS8D,GAAYC,GAA0B;AACpD,MAAI,OAAO,SAAW,IAAa,QAAO;AAE1C,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO,0BAA0B;AAAA,IACnC,KAAK;AACH,aAAO,oBAAoB;AAAA,IAC7B,KAAK;AACH,aAAO,sBAAsB;AAAA,IAC/B;AACE,aAAO;AAAA,EAAA;AAEb;;;;;;;;;;;;;;AC1DA,UAAMC,IAAWxH,EAA6B,IAAI;AAElD,WAAAyH,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBAjCCE,EAWE,SAXFC,EAWEC,EAAA,QAVc;AAAA,eACV;AAAA,MAAJ,KAAIJ;AAAA,MACH,OAAK;AAAA,QAAUK,EAAAhG,EAAA,EAAO;AAAA;WAAwBgG,EAAAhG,EAAA,EAAO,mBAAmB,GAAGiG,EAAA;AAAA,QAAA;AAAA;MAM3E,UAAUA,EAAA;AAAA,MACV,UAAUA,EAAA;AAAA,IAAA;;;;;;;;;;;;;;;;ACGf,UAAMC,IAAQD,GAERN,IAAWxH,EAA2C,IAAI,GAE1DgI,IAAa9H,EAAS,MAAM;AAChC,YAAM,EAAE,WAAA+H,GAAW,kBAAAC,GAAkB,GAAGC,MAASJ;AAEjD,aAAIE,MAAc,SACT,EAAE,SAASA,GAAW,GAAGE,EAAA,IAG3BA;AAAA,IACT,CAAC,GAEKC,IAAkB,MAA+B;;AACrD,eAAO3D,IAAA+C,EAAS,UAAT,gBAAA/C,EAAgB,aAAY;AAAA,IACrC;AAEA,WAAAjC,GAAU,MAAM;AACd,UAAIuF,EAAM,kBAAkB;AAC1B,cAAMM,IAAKD,EAAA;AACX,QAAIC,QAAO,UAAU;AAAA,MACvB;AAAA,IACF,CAAC,GAEGN,EAAM,cAAc,UACtB7B,EAAM,MAAM6B,EAAM,WAAW,CAACO,MAAQ;AACpC,YAAMD,IAAKD,EAAA;AACX,MAAIC,MAAIA,EAAG,UAAU,CAAC,CAACC;AAAA,IACzB,CAAC,GAGHb,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,cA/CCe,EAAA,GAAAC,EAIEC,IAJFd,EAIE;AAAA,eAHI;AAAA,MAAJ,KAAIH;AAAA,MACH,OAAOK,EAAAhG,EAAA,EAAO;AAAA,IAAA,GACPmG,EAAA,KAAU,GAAA,MAAA,IAAA,CAAA,OAAA,CAAA;AAAA;;;;;;;;;;;;;sBCHpBO,EAAA,GAAAb,EAOE,QAPFC,EAOE;AAAA,MANC,OAAK;AAAA,QAAUE,EAAAhG,EAAA,EAAO;AAAA,WAAkBgG,EAAAhG,EAAA,EAAO,QAAQ,GAAGiG,EAAA,WAAA;AAAA,MAAU;AAAA,MAIpE,OAAOA,EAAA,SAAK,CAAA;AAAA,IAAA,GACLY,EAAAA,MAAM,GAAA,MAAA,EAAA;AAAA;;ACJX,SAASC,KAA0B;AACxC,QAAMC,IAA6B5I,EAAI,EAAK;AAY5C,SAAO;AAAA,IACL,4BAAA4I;AAAA,IACA,sBAX2B,CAACC,IAAiB,MAAM;AAAA,IAAC,MAAM;AAC1D,MAAAD,EAA2B,QAAQ,IAEnC,WAAW,MAAM;AACf,QAAAA,EAA2B,QAAQ,IACnCC,EAAA;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA,EAIE;AAEJ;AAGO,SAASC,KAAyB;AACvC,QAAMC,IAA4B/I,EAAI,EAAK;AAY3C,SAAO;AAAA,IACL,2BAAA+I;AAAA,IACA,qBAX0B,CAACF,IAAiB,MAAM;AAAA,IAAC,MAAM;AACzD,MAAAE,EAA0B,QAAQ,IAElC,WAAW,MAAM;AACf,QAAAA,EAA0B,QAAQ,IAClCF,EAAA;AAAA,MACF,GAAG,IAAI;AAAA,IACT;AAAA,EAIE;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;ACgBA,UAAMd,IAAQD,GAORkB,IAAOC,GAIP,EAAE,4BAAAL,GAA4B,sBAAAM,EAAA,IAAyBP,GAAA,GACvD,EAAE,2BAAAI,GAA2B,qBAAAI,EAAA,IAAwBL,GAAA;AAE3D,IAAArB,EAAa,EAAE,sBAAAyB,GAAsB,qBAAAC,GAAqB;AAG1D,UAAMC,IAAgBlJ,EAAS,MAAM;;AACnC,YAAM6B,IAAe;AAAA,QACnB,sCAAqC0C,IAAAsD,EAAM,UAAN,gBAAAtD,EAAc;AAAA,QACnD,sCAAqC4E,IAAAtB,EAAM,UAAN,gBAAAsB,EAAc;AAAA,QACnD,qCAAoCC,IAAAvB,EAAM,UAAN,gBAAAuB,EAAc;AAAA,QAClD,sCAAqCC,IAAAxB,EAAM,UAAN,gBAAAwB,EAAc;AAAA,MAA0C,GAGzFC,IAAgB;AAAA,QACpB,GAAGzH;AAAA,QACH,sCAAqC0H,IAAA1B,EAAM,UAAN,gBAAA0B,EAAc;AAAA,MAAmD;AAGxG,aAAO,EAAE,cAAA1H,GAAc,eAAAyH,EAAA;AAAA,IACzB,CAAC,GAGKE,IAAc,CAACC,MAAsB;AAEzC,MAAI5B,EAAM,cAAc,CAACA,EAAM,4BAI3BA,EAAM,aAIViB,EAAK,SAASW,CAAK;AAAA,IACrB;2BApGEjC,EA6CS,UA7CTC,EA6CSC,EAAA,QA5CO;AAAA,MACb,MAAME,EAAA;AAAA,MACN,OAAK;AAAA,QAAUD,EAAAhG,CAAA,EAAO;AAAA;WAAyBgG,EAAAhG,CAAA,EAAO,OAAO,GAAGgG,EAAAe,CAAA;AAAA,WAAqCf,EAAAhG,CAAA,EAAO,OAAO,GAAGgG,EAAAkB,CAAA;AAAA,WAAoClB,EAAAhG,CAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,QAAA;AAAA;MAQ5K,OAAOA,EAAA;AAAA,MACP,WAAWA,EAAA,cAAcA,EAAA,eAAeA,EAAA;AAAA,MACxC,SAAO4B;AAAA,IAAA;MAERE,EA6BO,QAAA;AAAA,QA7BA,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,OAAO;AAAA,MAAA;QAEdgG,EAAAkB,CAAA,UAAZrB,EAGO,QAAAoC,IAAA;AAAA,UAFFC,EAAAC,EAAAlC,EAAA,mBAAmB,IAAG,KACzB,CAAA;AAAA,UAAaA,EAAA,kCAAbmC,EAAoCrC,EAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA;AAAA,cAIrBE,EAAA,kBAAjBJ,EAKO,QAAA;AAAA;UALsB,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,iBAAiB;AAAA,QAAA;UAC1DqI,EAGEC,IAAA;AAAA,YAFC,OAAOrC,eAAasB,EAAA,MAAc,gBAAgBA,EAAA,MAAc;AAAA,YAChE,eAAa;AAAA,UAAA;uBAKlB1B,EAYW0C,IAAA,EAAA,KAAA,KAAA;AAAA,UAXGtC,EAAA,eAAZJ,EAEO,QAAA;AAAA;YAFc,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,MAAM;AAAA,UAAA;YACvCoI,EAAuCrC,wBAAvC,MAAuC;AAAA,kBAAhBE,EAAA,MAAM,GAAA,CAAA;AAAA,YAAA;;UAG/B8B,EAEO,QAAA,MAAA;AAAA,YADLK,EAAQrC,EAAA,QAAA,SAAA;AAAA,UAAA;UAGEE,EAAA,cAAZJ,EAEO,QAAA;AAAA;YAFa,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,KAAK;AAAA,UAAA;YACrCoI,EAAqCrC,uBAArC,MAAqC;AAAA,kBAAfE,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;;;;ICD/BuC,KAAwB;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,wCAAwC;AAAA,EACxC,iCAAiC;AAAA,EACjC,mCAAmC;AAAA,EACnC,mCAAmC;AAAA,EACnC,+CAA+C;AAAA,EAC/C,wCAAwC;AAAA,EACxC,+BAA+B;AAAA,EAE/B,oCAAoC;AAAA,EACpC,oCAAoC;AAAA,EACpC,qCAAqC;AAAA,EAErC,0CAA0C;AAAA,EAC1C,0CAA0C;AAAA,EAC1C,2CAA2C;AAAA,EAE3C,qCAAqC;AAAA,EACrC,gDAAgD;AAAA,EAChD,sDAAsD;AAAA,EACtD,4CAA4C;AAAA,EAE5C,4CAA4C;AAAA,EAC5C,qDAAqD;AAAA,EACrD,4CAA4C;AAAA,EAC5C,2CAA2C;AAAA,EAC3C,4CAA4C;AAC9C,GAGaC,KAAsC;AAAA,EACjD,GAAGD;AAAA,EACH,6BAA6B;AAAA,EAC7B,oCAAoC;AAAA,EACpC,wCAAwC;AAAA,EAExC,sCAAsC;AAAA,EACtC,iDAAiD;AAAA,EACjD,6CAA6C;AAAA,EAE7C,mCAAmC;AAAA,EACnC,8CAA8C;AAAA,EAC9C,0CAA0C;AAC5C,GAGaE,KAAsC;AAAA,EACjD,GAAGF;AAAA,EACH,6BAA6B;AAAA,EAC7B,oCAAoC;AAAA,EAEpC,sCAAsC;AAAA,EACtC,iDAAiD;AAAA,EACjD,6CAA6C;AAAA,EAE7C,wCAAwC;AAAA,EAExC,mCAAmC;AAAA,EACnC,8CAA8C;AAAA,EAC9C,0CAA0C;AAAA,EAE1C,4CAA4C;AAAA,EAC5C,qDAAqD;AACvD,GAGaG,KAAwC;AAAA,EACnD,GAAGH;AAAA,EACH,8BAA8B;AAAA,EAC9B,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,oCAAoC;AAAA,EACpC,wCAAwC;AAAA,EAExC,sCAAsC;AAAA,EACtC,iDAAiD;AAAA,EACjD,6CAA6C;AAAA,EAE7C,8CAA8C;AAAA,EAC9C,0CAA0C;AAAA,EAC1C,mCAAmC;AACrC,GCrGaI,KAA6C;AAAA,EACxD,sCAAsC;AAAA,EACtC,wCAAwC;AAAA,EACxC,sCAAsC;AAAA,EACtC,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,yCAAyC;AAAA,EACzC,sCAAsC;AAAA,EACtC,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,yCAAyC;AAC3C,GAEaC,KAA8B;AAAA,EACzC,GAAGD;AAAA,EACH,2BAA2B;AAAA,EAC3B,0BAA0B;AAC5B,GAEaE,KAAqC;AAAA,EAChD,GAAGF;AAAA,EACH,2BAA2B;AAAA,EAC3B,0BAA0B;AAC5B,GAEaG,KAAoC;AAAA,EAC/C,GAAGH;AAAA,EACH,2BAA2B;AAAA,EAC3B,0BAA0B;AAC5B,GAEaI,KAA4B;AAAA,EACvC,GAAGJ;AAAA,EACH,2BAA2B;AAAA,EAC3B,0BAA0B;AAC5B,GCjBMK,KAcF;AAAA,EACF,qCAAqC;AAAA,EACrC,4BAA4B;AAAA,EAC5B,kCAAkC;AAAA,EAClC,wCACE;AAAA,EACF,8CACE;AAAA,EACF,8CAA8C;AAAA,EAC9C,uCACE;AAAA,EACF,gCAAgC;AAAA,EAChC,mCAAmC;AAAA,EACnC,kCAAkC;AAAA,EAClC,uCAAuC;AAAA,EACvC,gDAAgD;AAAA,EAChD,kDAAkD;AAAA,EAClD,sCAAsC;AAAA,EACtC,gEAAgE;AAAA,EAChE,+DAA+D;AAAA,EAC/D,oCAAoC;AAAA,EACpC,oCAAoC;AAAA,EACpC,mCAAmC;AAAA,EACnC,6BAA6B;AAAA,EAC7B,4BAA4B;AAC9B,GAEaC,KAA8B;AAAA,EACzC,GAAGD;AAAA,EACH,iCACE;AAAA,EACF,oCACE;AAAA,EACF,kCACE;AAAA,EACF,mCACE;AAAA,EAEF,uCACE;AAAA,EACF,0CACE;AAAA,EACF,wCACE;AAAA,EACF,yCACE;AAAA,EAEF,0CACE;AAAA,EACF,6CACE;AAAA,EACF,2CACE;AAAA,EACF,4CACE;AACJ,GAEaE,KAA6B;AAAA,EACxC,GAAGF;AAAA,EACH,iCACE;AAAA,EACF,oCACE;AAAA,EACF,kCACE;AAAA,EACF,mCACE;AAAA,EAEF,uCACE;AAAA,EACF,0CACE;AAAA,EACF,wCACE;AAAA,EACF,yCACE;AAAA,EAEF,0CACE;AAAA,EACF,6CACE;AAAA,EACF,2CACE;AAAA,EACF,4CACE;AACJ,GAEaG,KAAmCJ,IAGnCK,KAAoBH,IACpBI,KAAsBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvFnC,UAAMI,IAAQC,GAAA,GACRC,IAAapL,EAAS,MAAM;AAChC,YAAM,EAAE,OAAOqL,GAAG,OAAOC,GAAI,GAAGrD,MAASiD;AACzC,aAAIrD,EAAM,eAAe,SAChB,EAAE,GAAGI,GAAM,OAAOJ,EAAM,WAAA,IAE1BI;AAAA,IACT,CAAC,GAUKJ,IAAQD,GAWRkB,IAAOC,GAGPzB,IAAWxH,EAA6B,IAAI,GAG5CyL,IAAiBvL,EAAS,MAAM6H,EAAM,SAASgD,EAAe,GAG9DW,IAAmBxL,EAAS,OAAO;AAAA,MACvC,GAAG+K;AAAA,IAAA,EACH,GAGIU,IAAc,CAAChC,MAAiB;AACpC,YAAMpH,IAASoH,EAAM;AACrB,MAAAX,EAAK,qBAAqBzG,EAAO,KAAK,GACtCyG,EAAK,SAASW,CAAK;AAAA,IACrB,GAEMiC,IAAe,CAACjC,MAAiB;AACrC,MAAAX,EAAK,UAAUW,CAAK;AAAA,IACtB,GAEMkC,IAAc,CAAClC,MAAsB;AACzC,MAAAX,EAAK,SAASW,CAAK;AAAA,IACrB,GAEMmC,IAAa,CAACnC,MAAsB;AACxC,MAAAX,EAAK,QAAQW,CAAK;AAAA,IACpB;AAGA,WAAAlC,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBAzHCE,EA0CM,OAAA;AAAA,MA1CA,UAAQG,EAAAhG,CAAA,EAAO,SAAS6G,EAAAA,OAAO,KAAK,CAAA;AAAA,MAAI,SAAO+C,EAAA,KAAc;AAAA,IAAA;MACjE7B,EAwCM,OAAA;AAAA,QAvCH,OAAKC,EAAA;AAAA,UAAYhC,EAAAhG,CAAA,EAAO;AAAA;aAAoCgG,EAAAhG,CAAA,EAAO,yBAAyB,GAAGiG,EAAA,gCAA2B;AAAA,UAAA;AAAA;;QAO3H8B,EAwBM,OAAA;AAAA,UAvBH,OAAKC,EAAA;AAAA,YAAchC,EAAAhG,CAAA,EAAO;AAAA;eAA0CgG,EAAAhG,CAAA,EAAO,OAAO,GAAGiG,EAAA;AAAA,eAAwBD,EAAAhG,CAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,YAAA;AAAA;;UAQhIoC,EAWEzB,IAXFd,EAWE2D,EAAA,OAVkB;AAAA,qBACd;AAAA,YAAJ,KAAI9D;AAAA,YACH,OAAK,EAAA,CAAKK,EAAAhG,CAAA,EAAO,SAAS,GAAG,EAAQiG,EAAA,SAAU,EAAQiE,EAAAA,OAAO,MAAK;AAAA,YACnE,eAAajE,EAAA;AAAA,YACb,eAAaA,EAAA;AAAA,YACb,mCAAiCA,EAAA;AAAA,YACjC,SAAO6D;AAAA,YACP,UAAQC;AAAA,YACR,SAAOC;AAAA,YACP,QAAMC;AAAA,UAAA;UAEEhE,EAAA,SAASiE,EAAAA,OAAO,cAA3BrE,EAEM,OAAA;AAAA;YAF6B,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,KAAK;AAAA,UAAA;YACpDoI,EAAqCrC,uBAArC,MAAqC;AAAA,kBAAfE,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;QAIvBA,EAAA,aAAaA,EAAA,2BADrBJ,EAMM,OAAA;AAAA;UAJH,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,mBAAmB;AAAA,UACjC,SAAO6J,EAAA,KAAgB;AAAA,QAAA,KAErB5D,EAAA,kBAAkB,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACY7B,UAAMC,IAAQD,GASRkB,IAAOC,GAEP+C,IAAchM,EAAgC,IAAI,GAElD2L,IAAc,CAAChC,MAAiB;AACpC,YAAMpH,IAASoH,EAAM;AACrB,MAAAX,EAAK,qBAAqBzG,EAAO,KAAK,GAElCwF,EAAM,eACRkE,EAAA;AAAA,IAEJ,GAEMA,IAAa,MAAM;AACvB,MAAI,CAACD,EAAY,SAAS,CAACjE,EAAM,eAEjCmE,GAAS,MAAM;AACb,QAAIF,EAAY,UACdA,EAAY,MAAM,MAAM,SAAS,QACjCA,EAAY,MAAM,MAAM,SAAS,GAAGA,EAAY,MAAM,YAAY,MAClEhD,EAAK,UAAU;AAAA,MAEnB,CAAC;AAAA,IACH;AAEA,WAAA9C;AAAA,MACE,MAAM6B,EAAM;AAAA,MACZ,MAAM;AACJ,QAAIA,EAAM,eACRkE,EAAA;AAAA,MAEJ;AAAA,IAAA,GAGF/F;AAAA,MACE,MAAM6B,EAAM;AAAA,MACZ,CAACoE,MAAa;AACZ,QAAIA,KACFF,EAAA;AAAA,MAEJ;AAAA,IAAA,GAGFxE,EAAa;AAAA,MACX,aAAAuE;AAAA,IAAA,CACD,mBAzGCtE,EAgCM,OAAA;AAAA,MAhCA,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,OAAO;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MACxC8B,EAwBM,OAAA;AAAA,QAvBH,OAAKC,EAAA;AAAA,UAAYhC,EAAAhG,CAAA,EAAO;AAAA;aAAyCgG,EAAAhG,CAAA,EAAO,OAAO,GAAGiG,EAAA;AAAA,aAAsBD,EAAAhG,CAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,UAAA;AAAA;;QAQ3H8B,EAcE,YAdFjC,EAcEC,EAAA,QAbc;AAAA,mBACV;AAAA,UAAJ,KAAIoE;AAAA,UACH,OAAK;AAAA,YAAcnE,EAAAhG,CAAA,EAAO;AAAA;eAAmCgG,EAAAhG,CAAA,EAAO,mBAAmB,GAAGiG,EAAA;AAAA,YAAA;AAAA;UAM1F,OAAK,EAAA,WAAeA,EAAA,YAAS,GAAMA,EAAA,SAAS,OAAO,OAAA;AAAA,UACnD,UAAUA,EAAA;AAAA,UACV,UAAUA,EAAA;AAAA,UACV,OAAOA,EAAA;AAAA,UACP,SAAO6D;AAAA,QAAA;;MAIJ7D,EAAA,aAAaA,EAAA,2BADrBJ,EAKM,OAAA;AAAA;QAHH,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,mBAAmB;AAAA,MAAA,KAE/BiG,EAAA,kBAAkB,GAAA,CAAA;;;ICArBsE,KAGF;AAAA,EACF,+CACE;AAAA,EACF,+BAA+B;AAAA,EAC/B,wCACE;AAAA,EACF,2CACE;AAAA,EACF,4CACE;AAAA,EACF,qCAAqC;AAAA,EACrC,iDACE;AAAA,EACF,0CACE;AAAA,EACF,mDAAmD;AAAA,EACnD,0CAA0C;AAAA,EAC1C,qCAAqC;AAAA,EACrC,mCAAmC;AAAA,EACnC,qCAAqC;AAAA,EACrC,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,wCAAwC;AAAA,EACxC,uCAAuC;AAAA,EACvC,iCAAiC;AAAA,EACjC,+BAA+B;AAAA,EAC/B,oCAAoC;AAAA,EACpC,sCAAsC;AAAA,EACtC,sCAAsC;AAAA,EACtC,oDACE;AAAA,EACF,0CAA0C;AAC5C,GAEaC,KAAoC;AAAA,EAC/C,GAAGD;AAAA,EACH,sCACE;AACJ,GAEaE,KAAmC;AAAA,EAC9C,GAAGF;AAAA,EACH,sCACE;AACJ;;;;;;;;;;;;;;;;;;;;AClDA,UAAMrE,IAAQD;AAQd,QAAI,CAD4B,CAAC,KAAK,KAAK,MAAM,KAAK,IAAI,EAC1C,SAASC,EAAM,IAAI;AACjC,YAAM,IAAI,MAAM,4BAA4B;AAI9C,UAAMwE,IAAqBrM,EAAS,MAAM6H,EAAM,UAAU,CAAC;2BAxCzDL,EAiBO,QAjBPC,EAiBOC,EAAA,QAhBS;AAAA,MACb,OAAK;AAAA,QAAUC,EAAAhG,EAAA,EAAO;AAAA,QAAYgG,EAAAhG,EAAA,EAAOiG,EAAA,IAAI;AAAA;WAAoBD,EAAAhG,EAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,WAAqBD,EAAAhG,EAAA,EAAO,UAAU,GAAG0K,EAAA;AAAA,QAAA;AAAA;MAQ5H,OAAK;AAAA,QAAc,GAAAA,EAAA,4BAAyCzE,EAAA,QAAA;AAAA,WAAqBA,EAAA;AAAA,WAAgBA,EAAA;AAAA,MAAA;AAAA;MAMlGmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICgBN4E,KAIF;AAAA,EACF,mCAAmC;AAAA,EACnC,+CACE;AAAA,EACF,4CACE;AAAA,EACF,uDACE;AAAA,EACF,kEACE;AAAA,EACF,uCAAuC;AAAA,EACvC,sCAAsC;AAAA,EACtC,yCAAyC;AAAA,EACzC,mCAAmC;AAAA,EACnC,oCAAoC;AAAA,EACpC,uDAAuD;AAAA,EACvD,8CAA8C;AAAA,EAC9C,0CAA0C;AAAA,EAC1C,2CAA2C;AAAA,EAC3C,0CAA0C;AAAA,EAC1C,0CAA0C;AAAA,EAC1C,wDAAwD;AAAA,EACxD,2DAA2D;AAAA,EAC3D,2DAA2D;AAAA,EAC3D,+DAA+D;AAAA,EAC/D,6DAA6D;AAAA,EAC7D,2DAA2D;AAAA,EAC3D,4DAA4D;AAC9D,GAEaC,KAA4C;AAAA,EACvD,GAAGD;AAAA,EACH,0CAA0C;AAAA,EAC1C,gDACE;AACJ,GAEaE,KAAmD;AAAA,EAC9D,GAAGF;AAAA,EACH,0CAA0C;AAAA,EAC1C,gDACE;AACJ,GAEaG,KAAyC;AAAA,EACpD,GAAGjC;AAAA,EACH,2BACE;AAAA,EACF,wCAAwC;AAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA,UAAM3C,IAAQD,GAQRkB,IAAOC,GAEPmC,IAAQC,GAAA,GACRC,IAAapL,EAAS,MAAM;AAChC,YAAM,EAAE,OAAOqL,GAAG,OAAOC,GAAI,GAAGrD,MAASiD;AACzC,aAAIrD,EAAM,eAAe,SAChB,EAAE,GAAGI,GAAM,OAAOJ,EAAM,WAAA,IAE1BI;AAAA,IACT,CAAC,GAEKwD,IAAc,CAAChC,MAAiB;AACpC,YAAMpH,IAASoH,EAAM;AACrB,MAAAX,EAAK,qBAAqBzG,EAAO,KAAK,GACtCyG,EAAK,SAASW,CAAK;AAAA,IACrB,GAEMnC,IAAWxH,EAA2C,IAAI;AAEhE,WAAAyH,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBA9ECE,EA2BM,OAAA;AAAA,MA3BA,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,OAAO;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MACxC8B,EAiBM,OAAA;AAAA,QAhBH,OAAKC,EAAA;AAAA,UAAYhC,EAAAhG,CAAA,EAAO;AAAA;aAAsCgG,EAAAhG,CAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,UAAA;AAAA;;QAOjFoC,EAQEzB,IARFd,EAQE2D,EAAA,OAPkB;AAAA,mBACd;AAAA,UAAJ,KAAI9D;AAAA,UACH,UAAUK,EAAAhG,CAAA,EAAO,SAAS,GAAG,EAAQiG,EAAA,MAAK;AAAA,UAC1C,eAAaA,EAAA;AAAA,UACb,eAAaA,EAAA;AAAA,UACb,mCAAiCA,EAAA;AAAA,UACjC,SAAO6D;AAAA,QAAA;;MAGD7D,EAAA,cAAXJ,EAEM,OAAA;AAAA;QAFa,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,eAAe;AAAA,MAAA;QAC9C+H,EAA4C,OAAA;AAAA,UAAtC,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,KAAK;AAAA,QAAA,KAAKiG,EAAA,KAAK,GAAA,CAAA;AAAA,MAAA;MAE1BA,EAAA,kBAAXJ,EAIM,OAAA;AAAA;QAJiB,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,6BAA6B;AAAA,MAAA;QAChEqI,EAEO0C,IAAA;AAAA,UAFD,MAAK;AAAA,UAAK,OAAO/E,EAAA8E,EAAA;AAAA,UAA8B,OAAK9C,EAAEhC,EAAAhG,CAAA,EAAO,mBAAmB;AAAA,QAAA;qBACpF,MAAwB;AAAA,gBAArBiG,EAAA,kBAAkB,GAAA,CAAA;AAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;ACI7B,UAAMC,IAAQD,GAERN,IAAWxH,EAAqD,IAAI;AAE1E,WAAAyH,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBAlCCE,EAeM,OAAA;AAAA,MAfA,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,OAAO;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MACxCoC,EAYE2C,IAZFlF,EAYEC,EAAA,QAXc;AAAA,QACb,IAAIG,EAAM;AAAA,iBACP;AAAA,QAAJ,KAAIP;AAAA,QACH,OAAOK,EAAAhG,EAAA,EAAO;AAAA,QACf,MAAK;AAAA,QACJ,eAAakG,EAAM;AAAA,QACnB,eAAaA,EAAM;AAAA,QACnB,cAAYA,EAAM;AAAA,QAClB,sBAAoBA,EAAM;AAAA,QAC1B,OAAOA,EAAM;AAAA,QACb,MAAMA,EAAM;AAAA,MAAA;MAEf6B,EAAiC,QAAA;AAAA,QAA1B,OAAKC,EAAEhC,EAAAhG,EAAA,EAAO,QAAQ;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;ACgBjC,UAAMkG,IAAQD,GAKRgF,IAAW9M,EAA6B,IAAI,GAE5C+M,IAAmB;AAAA,MACvB,KAAKlL,EAAO;AAAA,MACZ,MAAMA,EAAO;AAAA,MACb,OAAOA,EAAO;AAAA,IAAA,GAGVmL,IAAqB9M,EAAS,MAAM6M,EAAiBhF,EAAM,aAAa,CAAC;AAE/E,WAAAN,EAAa;AAAA,MACX,UAAAqF;AAAA,IAAA,CACD,mBA/CCpF,EAoBQ,SApBRC,EAoBQC,EAAA,QAnBQ;AAAA,eACV;AAAA,MAAJ,KAAIkF;AAAA,MACH,OAAK;AAAA,QAAUE,EAAA;AAAA;WAAqCnF,EAAAhG,CAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,QAAA;AAAA;MAMtE,OAAOA,EAAA;AAAA,IAAA;MAEGA,EAAA,QAAQA,iBAAeiE,EAAAA,OAAO,QAAQA,EAAAA,OAAO,oBAAxDrE,EAOM,OAAA;AAAA;QAPgE,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,cAAc;AAAA,MAAA;QACpFiG,EAAA,QAAQiE,EAAAA,OAAO,aAA3BrE,EAEO,QAAAuF,IAAA;AAAA,UADLhD,EAAmCrC,sBAAnC,MAAmC;AAAA,gBAAdE,EAAA,IAAI,GAAA,CAAA;AAAA,UAAA;;QAEhBA,EAAA,eAAeiE,EAAAA,OAAO,oBAAjCrE,EAEM,OAAA;AAAA;UAFyC,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,gBAAgB;AAAA,QAAA;UAC3EoI,EAAiDrC,6BAAjD,MAAiD;AAAA,gBAArBE,EAAA,WAAW,GAAA,CAAA;AAAA,UAAA;;;MAG3CmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICFCsF,KAAsC;AAAA,EACjD,8CACE;AAAA,EACF,sCACE;AAAA,EAEF,4CAA4C;AAAA,EAC5C,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,sCAAsC;AAAA,EACtC,0CACE;AAAA,EAEF,qDACE;AAAA,EACF,qDACE;AAAA,EACF,qDACE;AAAA,EACF,sDACE;AAAA,EACF,qDACE;AACJ;;;;sBCFMC,KAAQ,SACRC,KAAW;;;;;;;;;AAPjB,UAAMpE,IAAOC,GAIPoE,IAAYrN,EAA8B,IAAI,GAK9C0J,IAAc,MAAM;AACxB,MAAAV,EAAK,QAAQ;AAAA,IACf,GAEMsE,IAAgB,CAACC,MAAqB;AAC1C,MAAI,CAACJ,IAAOC,EAAQ,EAAE,SAASG,EAAE,IAAI,MACnCA,EAAE,eAAA,GACF7D,EAAA;AAAA,IAEJ;AAEA,WAAAjC,EAAa;AAAA,MACX,WAAA4F;AAAA,IAAA,CACD,cAtDC9E,EAAA,GAAAb,EAiBS,UAjBTC,EAiBS;AAAA,eAhBH;AAAA,MAAJ,KAAI0F;AAAA,IAAA,GACI3E,EAAAA,QAAM;AAAA,MACd,MAAK;AAAA,MACJ,OAAK;AAAA,QAAUb,EAAAhG,EAAA,EAAO;AAAA;WAAyBgG,EAAAhG,EAAA,EAAO,OAAO,GAAGiG,EAAA;AAAA,WAAoBD,EAAAhG,EAAA,EAAO,QAAQ,GAAGiG,EAAA;AAAA,QAAA;AAAA;MAOtG,OAAOA,EAAA;AAAA,MACP,UAAUA,EAAA;AAAA,MACV,SAAO4B;AAAA,MACP,WAAS4D;AAAA,IAAA;MAEVrD,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICMN4F,KAKF;AAAA,EACF,2CAA2C;AAAA,EAC3C,sCAAsC;AAAA,EACtC,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,+CACE;AAAA,EACF,0CAA0C;AAAA,EAC1C,4CAA4C;AAAA,EAC5C,sCAAsC;AAAA,EACtC,oDACE;AAAA,EACF,sDAAsD;AAAA,EACtD,wCAAwC;AAAA,EACxC,0CAA0C;AAAA,EAC1C,mDACE;AAAA,EACF,oCAAoC;AACtC,GAEaC,KAAgD;AAAA,EAC3D,GAAGD;AAAA,EAEH,qCACE;AAAA,EAEF,2CACE;AAAA,EAEF,8CACE;AACJ,GAEaE,KAA+C;AAAA,EAC1D,GAAGF;AAAA,EAEH,qCACE;AAAA,EAEF,2CACE;AAAA,EAEF,8CACE;AACJ,GCtEaG,IAAyB,CACpCC,GACAC,MACG;AACH,QAAMnM,IAAuB,OAAOkM,CAAiB;AAkBrD,SAAO,CAhBgB,CAACjN,MAAe;AACrC,IAAAE,GAAQa,GAAKf,CAAO;AAAA,EACtB,GAEmB,CAACmN,MAA4B;AAC9C,UAAMnN,IAAUI,GAAOW,GAAKmM,CAAc;AAE1C,QAAIlN;AACF,aAAOA;AAGT,UAAM,IAAI;AAAA,MACR,KAAKmN,CAAY,4BAA4BF,CAAiB;AAAA,IAAA;AAAA,EAElE,CAEkC;AACpC,GCtBMG,KAAe,UAEf,CAACC,IAAsBC,EAAgB,IAC3CN,EAA2CI,EAAY;;;GC6FzDG,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;;;;;AA3ED,UAAMhG,IAAQD,GAERkB,IAAOC,GAKPmF,IAAYpO,EAA2B,IAAI,GAC3CqO,IAAmBrO,EAAI+H,EAAM,iBAAiB,EAAK,GACnDuG,IAAuBtO,EAAI,EAAgB,GAC3CuO,IAAuBvO,EAA4B+H,EAAM,YAAY,GAErEyG,IAAetO,EAAS,MAAM6H,EAAM,UAAU,MAAS,GAGvD0G,IAAWC,GAAA,GACXC,IAAmBzO,EAAS,MAAM;AACtC,YAAM0O,IAAQH,KAAA,gBAAAA,EAAU;AACxB,aAAOG,KAAA,QAAAA,EAAO,QAAS,YAAYA,EAAM,SAAS,aAAaA,EAAM,QAAS;AAAA,IAChF,CAAC,GAEKC,IAAW3O;AAAA,MAAS,MACxBsO,EAAa,QAAQzG,EAAM,QAAQwG,EAAqB;AAAA,IAAA,GAGpDO,IAAgB5O;AAAA,MAAS,MAC7ByO,EAAiB,QAAQ,EAAQ5G,EAAM,SAAUsG,EAAiB;AAAA,IAAA,GAwB9D1N,KAAUoO,GAAS;AAAA,MACvB,IAAI,eAAe;AAAE,eAAOT,EAAqB;AAAA,MAAM;AAAA,MACvD,IAAI,aAAaU,GAAG;AAAE,QAAAV,EAAqB,QAAQU;AAAA,MAAE;AAAA,MACrD,sBAR+B,CAACC,MAAkB;AAClD,QAAAX,EAAqB,QAAQW;AAAA,MAC/B;AAAA,MAOE,UAlBmB,CAACC,MAAqB;AACzC,QAAKV,EAAa,UAChBD,EAAqB,QAAQW,IAG/BlG,EAAK,UAAUkG,CAAI,GACnBb,EAAiB,QAAQ;AAAA,MAC3B;AAAA,MAYE,IAAI,WAAW;AAAE,eAAOS,EAAc;AAAA,MAAM;AAAA,MAC5C,QA3BiB,CAACK,MAAkB;AACpC,QAAI,EAAEpH,EAAM,cAAc,OAAU,CAAC4G,EAAiB,UACpDN,EAAiB,QAAQc,GACzBnG,EAAK,cAAcmG,CAAI;AAAA,MAE3B;AAAA,MAuBE,IAAI,aAAa;AAAE,eAAOpH,EAAM,cAAc;AAAA,MAAM;AAAA,MACpD,IAAI,YAAY;AAAE,eAAOA,EAAM,aAAa;AAAA,MAAM;AAAA,MAClD,IAAI,QAAQ;AAAE,eAAO8G,EAAS;AAAA,MAAM;AAAA,MACpC,IAAI,eAAe;AAAE,eAAO9G,EAAM;AAAA,MAAa;AAAA,IAAA,CAChD;AAED,WAAAiG,GAAqBrN,EAAc,GAEnC8G,EAAa;AAAA,MACX,WAAA2G;AAAA,IAAA,CACD,oBA5FC1G,EAYM,OAZNC,EAYMC,EAAA,QAXU;AAAA,eACV;AAAA,MAAJ,KAAIwG;AAAA,MACH,OAAK;AAAA,QAAUvG,EAAAhG,EAAA,EAAO;AAAA;WAAyBgG,EAAAhG,EAAA,EAAO,MAAM,GAAGiN,EAAA;AAAA,QAAA;AAAA;MAM/D,OAAOhH,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICJCwH,KAAuC;AAAA,EAClD,+BAA+B;AAAA,EAC/B,sCAAsC;AACxC;;;;;;;;ACGA,UAAMrH,IAAQD,GAIRuH,IAA6B;AAAA,MACjC,GAAG3E;AAAA,MACH,2BAA2B;AAAA,IAAA,GAGvB4E,IAAYtP,EAA4B,IAAI;AAElD,WAAAyH,EAAa;AAAA,MACX,WAAA6H;AAAA,IAAA,CACD,mBA1BC5H,EAIO,QAAA;AAAA,eAJG;AAAA,MAAJ,KAAI4H;AAAA,MAAa,UAAQzH,EAAAhG,EAAA,EAAO,MAAMkG,EAAM,KAAK,CAAA;AAAA,IAAA;MACrDmC,EAEO0C,IAAA;AAAA,QAFA,OAAOyC;AAAA,QAAiB,MAAK;AAAA,QAAK,eAAa;AAAA,MAAA;mBACpD,MAAQ;AAAA,UAARpF,EAAQrC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;GC0BRmG,KAAe;;;;;;;;;AAErB,UAAMhG,IAAQD,GAORyH,IAAgBtB,GAAiBF,EAAY,GAE7CyB,IAAUxP,EAA0B,IAAI,GAExCyP,IAAavP,EAAS;;AAAM,eAAAuE,IAAA8K,EAAc,UAAd,gBAAA9K,EAAqB,WAAUsD,EAAM,KAAK;AAAA,KAAK,GAC3E2H,IAAYxP,EAAS,MAAMqP,EAAc,iBAAiBxH,EAAM,KAAK,GAErE2B,IAAc,CAAC6D,MAAkB;AACrC,MAAAA,EAAE,eAAA,GACFgC,EAAc,qBAAqBxH,EAAM,KAAK,GAC1C,OAAOwH,EAAc,YAAa,cACpCA,EAAc,SAASxH,EAAM,IAAI;AAAA,IAErC;AAEA,WAAAN,EAAa;AAAA,MACX,SAAA+H;AAAA,IAAA,CACD,cAtDCjH,EAAA,GAAAb,EAiBK,MAjBLC,EAiBK;AAAA,eAhBC;AAAA,MAAJ,KAAI6H;AAAA,IAAA,GACI9G,EAAAA,QAAM;AAAA,MACb,OAAK;AAAA,QAAUb,EAAAhG,EAAA,EAAO;AAAA;WAAuBgG,EAAAhG,EAAA,EAAO,QAAQ,GAAG4N,EAAA;AAAA,WAAqB5H,EAAAhG,EAAA,EAAO,OAAO,GAAG6N,EAAA;AAAA,QAAA;AAAA,QAA0B3H,EAAM;AAAA,MAAA;AAAA,MAQrI,OAAOD,EAAA;AAAA,MACP,SAAO4B;AAAA,IAAA;MAERO,EAEOrC,yBAFP,MAEO;AAAA,QADLsC,EAAkCyF,IAAA,MAAA;AAAA,qBAA1B,MAAiB;AAAA,YAAd5F,EAAAC,EAAAlC,EAAA,KAAK,MAAM,GAAA,CAAA;AAAA,UAAA;;;;;;ICFf8H,KAAuC;AAAA,EAClD,oCAAoC;AAAA,EACpC,mCAAmC;AAAA,EACnC,sCAAsC;AAAA,EACtC,wCAAwC;AAAA,EACxC,sDACE;AAAA,EACF,gDACE;AAAA,EACF,qDACE;AAAA,EACF,mDACE;AACJ;;GCZMC,KAAa,IACbC,KAAc;;;;;;;AAEpB,UAAM/H,IAAQD,GAKRiI,IAAW/P,EAA4B,IAAI;AAEjD,WAAAyH,EAAa;AAAA,MACX,UAAAsI;AAAA,IAAA,CACD,mBA1BCrI,EAMO,QAAA;AAAA,eANG;AAAA,MAAJ,KAAIqI;AAAA,MAAY,UAAQlI,EAAAhG,EAAA,EAAO,SAASkG,EAAM,KAAK,CAAA;AAAA,MAAI,SAAOD,EAAA,KAAK;AAAA,IAAA;MACvEmC,EAIOrC,yBAJP,MAIO;AAAA,cAHLF,EAEM,OAAA;AAAA,UAFD,OAAM;AAAA,UAA8B,OAAOmI;AAAA,UAAa,QAAQC;AAAA,UAAa,MAAK;AAAA,UAAO,SAAQ;AAAA,QAAA;UACpGlG,EAA4H,QAAA;AAAA,YAAtH,MAAK;AAAA,YAAe,aAAU;AAAA,YAAU,GAAE;AAAA,YAAuD,aAAU;AAAA,UAAA;;;;;ICK5GoG,KAAyC;AAAA,EACpD,mCAAmC;AAAA,EACnC,oCAAoC;AAAA,EACpC,8BAA8B;AAChC;;;;;;;;ACEA,UAAMC,IAAUjQ,EAA4B,IAAI;AAEhD,WAAAyH,EAAa;AAAA,MACX,SAAAwI;AAAA,IAAA,CACD,aAlBalE,EAAAA,OAAO,gBAAnBrE,EAEO,QAAA;AAAA;eAFyB;AAAA,MAAJ,KAAIuI;AAAA,MAAW,OAAKpG,EAAEhC,EAAAhG,EAAA,EAAO,OAAO;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MAC7EmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICOCsI,KAAuC;AAAA,EAClD,kCAAkC;AAAA,EAClC,mCAAmC;AAAA,EACnC,mCAAmC;AACrC;;;;;;;;;;;;ACcA,UAAMnI,IAAQD,GAIRkB,IAAOC,GAMPkH,IAAUnQ,EAA6B,IAAI,GAE3CoQ,IAAQC,GAAA,GACRC,IAAcpQ,EAAS,MACtBkQ,EAAM,UACMA,EAAM,QAAA,EACP,SAFW,CAG5B,GAEK9C,IAAgB,CAAC3D,MAAyB;AAC9C,YAAM,EAAE,cAAA4G,MAAiBxI;AAEzB,cAAQ4B,EAAM,MAAA;AAAA,QACZ,KAAK;AACH,UAAAA,EAAM,eAAA,GACF4G,IAAeD,EAAY,QAAQ,KACrCtH,EAAK,sBAAsBuH,IAAe,CAAC;AAE7C;AAAA,QAEF,KAAK;AACH,UAAA5G,EAAM,eAAA,GACF4G,IAAe,KACjBvH,EAAK,sBAAsBuH,IAAe,CAAC;AAE7C;AAAA,QAEF,KAAK;AAAA,QACL,KAAK;AACH,UAAA5G,EAAM,eAAA,GACNX,EAAK,UAAUuH,CAAY;AAC3B;AAAA,QAEF,KAAK;AACH,UAAA5G,EAAM,eAAA,GACNX,EAAK,UAAU,EAAK;AACpB;AAAA,MAAA;AAAA,IAEN;AAEA,WAAAvB,EAAa;AAAA,MACX,SAAA0I;AAAA,IAAA,CACD,aA7ESrI,EAAA,iBADRJ,EAgBK,MAhBLC,EAgBK,EAAA,KAAA,KAdKe,EAAAA,QAAM;AAAA,eACV;AAAA,MAAJ,KAAIyH;AAAA,MACJ,UAAS;AAAA,MACT,MAAK;AAAA,MACJ,OAAK;AAAA,QAAUtI,EAAAhG,EAAA,EAAO;AAAA;WAAuBgG,EAAAhG,EAAA,EAAO,MAAM,GAAGiG,EAAA;AAAA,QAAA;AAAA;MAM7D,OAAOA,EAAA;AAAA,MACP,WAASwF;AAAA,IAAA;MAEVrD,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICIC4I,KAA2B;AAAA,EACtC,yBAAyB;AAAA,EACzB,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAC7B,kCAAkC;AAAA,EAClC,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,mCAAmC;AAAA,EACnC,kCAAkC;AAAA,EAClC,sCACE;AAAA,EACF,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,EAClC,mCAAmC;AAAA,EACnC,6BAA6B;AAAA,EAC7B,2BAA2B;AAC7B,GCjBMzC,KAAe;;;;;;AAMrB,UAAMwB,IAAgBtB,GAAiBF,EAAY,GAE7CV,IAAYrN,EAA8C,IAAI,GAE9DyQ,IAAe,MAAM;AACzB,MAAAlB,EAAc,OAAO,CAACA,EAAc,QAAQ;AAAA,IAC9C;AAGA,WAAArJ;AAAA,MACE,MAAMqJ,EAAc;AAAA,MACpB,CAACmB,GAAQC,MAAW;;AAClB,QAAIA,KAAU,CAACD,OACbrH,KAAA5E,IAAA4I,EAAU,UAAV,gBAAA5I,EAAiB,cAAjB,QAAA4E,EAA4B;AAAA,MAEhC;AAAA,IAAA,GAGF5B,EAAa;AAAA,MACX,WAAA4F;AAAA,IAAA,CACD,cA5CC9E,EAAA,GAAAC,EASeoI,IATfjJ,EASe;AAAA,eART;AAAA,MAAJ,KAAI0F;AAAA,IAAA,GACI3E,EAAAA,QAAM;AAAA,MACb,OAAOZ,EAAA;AAAA,MACP,eAAaD,EAAA0H,CAAA,EAAc;AAAA,MAC3B,cAAY1H,EAAA0H,CAAA,EAAc;AAAA,MAC1B,UAAQkB;AAAA,IAAA;iBAET,MAAQ;AAAA,QAARxG,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;ICFCiJ,KAAoB,CAAC,EAAE,KAAA7Q,GAAK,SAAA8Q,QAAwC;AAC/E,QAAMpH,IAAc,CAACC,MAAsB;AACzC,IAAI3J,EAAI,SAAS,CAACA,EAAI,MAAM,SAAS2J,EAAM,MAAc,KACvDmH,EAAA;AAAA,EAEJ;AAEA,EAAAtO,GAAU,MAAM;AACd,aAAS,iBAAiB,aAAakH,CAAW;AAAA,EACpD,CAAC,GAEDjH,GAAY,MAAM;AAChB,aAAS,oBAAoB,aAAaiH,CAAW;AAAA,EACvD,CAAC;AACH,GCiBMqE,KAAe;;;;;;;;AAErB,UAAMhG,IAAQD,GAMRyH,IAAgBtB,GAAiBF,EAAY,GAE7CoC,IAAUnQ,EAA0C,IAAI,GAGxDoQ,IAAQW,GAAA,GACRC,IAAQ9Q,EAAS,MAChBkQ,EAAM,UACMA,EAAM,QAAA,EACP,IAAI,CAACa,MAAU;;AAC7B,cAAOxM,IAAAwM,EAAM,UAAN,gBAAAxM,EAAa;AAAA,IACtB,CAAC,EAAE,OAAO,OAAO,IAJU,CAAA,CAK5B,GAEKyM,IAAWhR,EAAS,MAAM;AAC9B,YAAMiR,IAA8B,CAAA;AACpC,aAAAH,EAAM,MAAM,QAAQ,CAAC9B,GAAMD,MAAU;AACnC,SAAIC,KAAA,gBAAAA,EAAM,WAAU,WAClBiC,EAAI,OAAOjC,EAAK,KAAK,CAAC,IAAID;AAAA,MAE9B,CAAC,GACMkC;AAAA,IACT,CAAC,GAEKC,IAAwBlR,EAAS,MAAM;AAC3C,UAAIqP,EAAc,OAAO;AACvB,cAAM8B,IAAMH,EAAS,MAAM,OAAO3B,EAAc,MAAM,KAAK,CAAC;AAC5D,YAAI8B,MAAQ,OAAW,QAAOA;AAAA,MAChC;AACA,aAAO9B,EAAc;AAAA,IACvB,CAAC,GAEK+B,IAA2B,CAACrC,MAAkB;AAClD,MAAAM,EAAc,qBAAqBN,CAAK;AAAA,IAC1C,GAEMsC,IAAmB,CAACC,MAAoB;AAC5C,MAAAjC,EAAc,OAAOiC,CAAM;AAAA,IAC7B,GAEMC,IAAmB,CAACxC,MAAkB;AAC1C,YAAMC,IAAO8B,EAAM,MAAM/B,CAAK;AAC9B,MAAIC,KAAQ,OAAOK,EAAc,YAAa,cAC5CA,EAAc,SAASL,CAAI;AAAA,IAE/B,GAGMwC,IAAYxR,EAAS,MAAA;;AAAM,eAAAuE,IAAA0L,EAAQ,UAAR,gBAAA1L,EAAe,YAAW;AAAA,KAAI;AAE/D,WAAAoM,GAAkB;AAAA,MAChB,KAAKa;AAAA,MACL,SAAS,MAAM;AACb,QAAInC,EAAc,YAChBA,EAAc,OAAO,EAAK;AAAA,MAE9B;AAAA,IAAA,CACD,GAGDrJ;AAAA,MACE,MAAMqJ,EAAc;AAAA,MACpB,CAACoC,MAAW;;AACV,QAAIA,OACFtI,KAAA5E,IAAA0L,EAAQ,UAAR,gBAAA1L,EAAe,YAAf,QAAA4E,EAAwB;AAAA,MAE5B;AAAA,IAAA,GAGF5B,EAAa;AAAA,MACX,SAAA0I;AAAA,IAAA,CACD,aApHiBrI,EAAA,kBAAhBU,EAaWoJ,IAAA;AAAA;MAbiB,IAAI9J,EAAA;AAAA,IAAA;MAC9BoC,EAWW2H,IAAA;AAAA,iBAVL;AAAA,QAAJ,KAAI1B;AAAA,QACH,OAAKtG,EAAE9B,EAAM,KAAK;AAAA,QAClB,aAAWF,EAAA0H,CAAA,EAAc;AAAA,QACzB,OAAOzH,EAAA;AAAA,QACP,iBAAesJ,EAAA;AAAA,QACf,sBAAsBE;AAAA,QACtB,UAAQC;AAAA,QACR,UAAQE;AAAA,MAAA;mBAET,MAAQ;AAAA,UAARxH,EAAQrC,EAAA,QAAA,SAAA;AAAA,QAAA;;;2BAGZY,EAYWqJ,IAAA;AAAA;eAVL;AAAA,MAAJ,KAAI1B;AAAA,MACH,OAAKtG,EAAE9B,EAAM,KAAK;AAAA,MAClB,aAAWF,EAAA0H,CAAA,EAAc;AAAA,MACzB,OAAOzH,EAAA;AAAA,MACP,iBAAesJ,EAAA;AAAA,MACf,sBAAsBE;AAAA,MACtB,UAAQC;AAAA,MACR,UAAQE;AAAA,IAAA;iBAET,MAAQ;AAAA,QAARxH,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;ICTNmG,KAAe;;;;;;;;AAErB,UAAMhG,IAAQD,GASRyH,IAAgBtB,GAAiBF,EAAY,GAE7C+D,IAAwB5R,EAAS,MAAM,CAACqP,EAAc,KAAK,GAE3DD,IAAYtP,EAAwC,IAAI;AAE9D,WAAAyH,EAAa;AAAA,MACX,WAAA6H;AAAA,IAAA,CACD;;;QAnCavD,EAAAA,OAAO,UAAnB9B,EAA8BrC,EAAA,QAAA,WAAA,EAAA,KAAA,GAAA,UAE5BY,EAESmH,IAAA;AAAA;mBAFG;AAAA,UAAJ,KAAIL;AAAA,UAAa,OAAKzF,EAAE9B,EAAM,KAAK;AAAA,QAAA;qBACzC,MAAA;;AAAuE;AAAA,cAApEgC,EAAAC,EAAA8H,EAAA,QAAwBhK,EAAA,eAAcD,IAAAA,KAAc,UAAdA,gBAAAA,EAAqB,MAAM,GAAA,CAAA;AAAA,YAAA;AAAA;;;QAIxEqC,EAAsF2C,IAAA;AAAA,UAAhE,MAAM/E,EAAA;AAAA,UAAM,MAAK;AAAA,UAAU,QAAOD,IAAAA,EAAA0H,CAAA,EAAc,UAAd1H,gBAAAA,EAAqB;AAAA,QAAA;;;;ICLzEkG,KAAe,eAEf,CAACgE,IAA2BC,CAAqB,IACrDrE,EAAgDI,EAAY;;;GCoP9DG,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;;;;;;;;AApOD,UAAMhG,IAAQD,GAKRkB,IAAOC,GAKPgJ,IAAiBjS,EAA2B,IAAI,GAChDqO,IAAmBrO,EAAI+H,EAAM,iBAAiB,EAAK,GACnDmK,IAAuBlS,EAA4B,IAAI,GACvDmS,IAAcnS,EAAI,EAAE,GAGpBoS,IAAiBpS;AAAA,MACrB,IAAI,KAAK+H,EAAM,gBAAgB,CAAA,GAAI,IAAI,CAAAmH,MAAQA,EAAK,KAAK,CAAC;AAAA,IAAA,GAGtDV,IAAetO,EAAS,MAAM6H,EAAM,UAAU,MAAS,GAGvD0G,IAAWC,GAAA,GACXC,IAAmBzO,EAAS,MAAM;AACtC,YAAM0O,IAAQH,KAAA,gBAAAA,EAAU;AACxB,aAAOG,KAAA,QAAAA,EAAO,QAAS,YAAYA,EAAM,SAAS,aAAaA,EAAM,QAAS;AAAA,IAChF,CAAC,GAGKyD,IAAgBnS,EAAS,MACzBsO,EAAa,QACR,IAAI,KAAKzG,EAAM,SAAS,CAAA,GAAI,IAAI,CAAAmH,MAAQA,EAAK,KAAK,CAAC,IAErDkD,EAAe,KACvB,GAEKtD,IAAgB5O;AAAA,MAAS,MAC7ByO,EAAiB,QAAQ,EAAQ5G,EAAM,SAAUsG,EAAiB;AAAA,IAAA,GAI9DiE,IAAWpS,EAAS,MAAM6H,EAAM,SAAS,CAAA,CAAE,GAG3CwK,IAAgBrS,EAAS,MAAM;AACnC,YAAMsS,IAAOH,EAAc;AAC3B,aAAOC,EAAS,MAAM,OAAO,CAAApD,MAAQsD,EAAK,IAAItD,EAAK,KAAK,CAAC;AAAA,IAC3D,CAAC,GAEKuD,IAAa,CAACtD,MAAkB;AACpC,OAAMpH,EAAM,cAAc,QACnB4G,EAAiB,UACpBN,EAAiB,QAAQc,IAEtBA,MACHgD,EAAY,QAAQ,KAEtBnJ,EAAK,cAAcmG,CAAI;AAAA,IAE3B,GAEMuD,KAAmB,CAACxD,MAA0B;AAClD,UAAInH,EAAM,SAAS;AAEjB,QAAKyG,EAAa,UAChB4D,EAAe,QAAQ,oBAAI,IAAI,CAAClD,EAAK,KAAK,CAAC,IAE7ClG,EAAK,UAAU,CAACkG,CAAI,CAAC,GACrBuD,EAAW,EAAK;AAAA,WACX;AAEL,cAAME,IAAY,IAAI,IAAIN,EAAc,KAAK;AAC7C,QAAIM,EAAU,IAAIzD,EAAK,KAAK,IAC1ByD,EAAU,OAAOzD,EAAK,KAAK,IAE3ByD,EAAU,IAAIzD,EAAK,KAAK,GAErBV,EAAa,UAChB4D,EAAe,QAAQO;AAEzB,cAAM9D,IAAWyD,EAAS,MAAM,OAAO,OAAKK,EAAU,IAAIC,EAAE,KAAK,CAAC;AAClE,QAAA5J,EAAK,UAAU6F,CAAQ;AAAA,MACzB;AAAA,IACF,GAEMgE,IAAoB,CAACC,MAA6B;AACtD,YAAMC,IAAaT,EAAS,MAAM,OAAO,CAAApD,MAAQA,EAAK,UAAU4D,CAAO;AACvE,UAAIC,EAAW,WAAW,EAAG;AAE7B,YAAMC,IAAcD,EAAW,MAAM,CAAA7D,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC,GAC1EyD,IAAY,IAAI,IAAIN,EAAc,KAAK;AAE7C,MAAIW,IACFD,EAAW,QAAQ,CAAA7D,MAAQyD,EAAU,OAAOzD,EAAK,KAAK,CAAC,IAEvD6D,EAAW,QAAQ,CAAA7D,MAAQyD,EAAU,IAAIzD,EAAK,KAAK,CAAC,GAGjDV,EAAa,UAChB4D,EAAe,QAAQO;AAEzB,YAAM9D,IAAWyD,EAAS,MAAM,OAAO,OAAKK,EAAU,IAAIC,EAAE,KAAK,CAAC;AAClE,MAAA5J,EAAK,UAAU6F,CAAQ;AAAA,IACzB,GAEMoE,KAAkB,MAAM;AAC5B,YAAMD,IAAcV,EAAS,MAAM,SAAS,KAC1CA,EAAS,MAAM,MAAM,CAAApD,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC,GAC5DyD,wBAAgB,IAAA;AAEtB,MAAKK,KACHV,EAAS,MAAM,QAAQ,CAAApD,MAAQyD,EAAU,IAAIzD,EAAK,KAAK,CAAC,GAGrDV,EAAa,UAChB4D,EAAe,QAAQO;AAEzB,YAAM9D,IAAWyD,EAAS,MAAM,OAAO,OAAKK,EAAU,IAAIC,EAAE,KAAK,CAAC;AAClE,MAAA5J,EAAK,UAAU6F,CAAQ;AAAA,IACzB,GAEMqE,KAAgB,CAACJ,MACdR,EAAS,MAAM,OAAO,CAAApD,MAAQA,EAAK,UAAU4D,CAAO,GAGvDK,KAAqB,CAACL,MAAsC;AAChE,YAAMC,IAAaG,GAAcJ,CAAO;AACxC,aAAOC,EAAW,SAAS,KAAKA,EAAW,MAAM,CAAA7D,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC;AAAA,IAC9F,GAEMkE,KAA2B,CAACN,MAAsC;AACtE,YAAMC,IAAaG,GAAcJ,CAAO,GAClCO,IAAgBN,EAAW,OAAO,CAAA7D,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC,EAAE;AACrF,aAAOmE,IAAgB,KAAKA,IAAgBN,EAAW;AAAA,IACzD,GAEMO,KAAgB,MACbhB,EAAS,MAAM,SAAS,KAC7BA,EAAS,MAAM,MAAM,CAAApD,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC,GAG9DqE,KAAsB,MAAe;AACzC,YAAMF,IAAgBf,EAAS,MAAM,OAAO,CAAApD,MAAQmD,EAAc,MAAM,IAAInD,EAAK,KAAK,CAAC,EAAE;AACzF,aAAOmE,IAAgB,KAAKA,IAAgBf,EAAS,MAAM;AAAA,IAC7D,GAEMkB,KAA0B,CAACvS,MAAkC;AACjE,MAAAiR,EAAqB,QAAQjR;AAAA,IAC/B,GAEMwS,KAAqB,CAACC,MAAkB;AAC5C,MAAAvB,EAAY,QAAQuB;AAAA,IACtB,GAEMC,KAAuB,CAACzE,MAAmC;AAC/D,YAAM0E,IAAIzB,EAAY,MAAM,KAAA,EAAO,YAAA;AACnC,aAAKyB,IACE1E,EAAK,OAAO,YAAA,EAAc,SAAS0E,CAAC,IAD5B;AAAA,IAEjB,GAEMC,KAAwB,CAACf,MAAsC;AACnE,YAAMc,IAAIzB,EAAY,MAAM,KAAA,EAAO,YAAA;AACnC,aAAKyB,IACcV,GAAcJ,CAAO,EACtB,KAAK,CAAA5D,MAAQA,EAAK,OAAO,YAAA,EAAc,SAAS0E,CAAC,CAAC,IAFrD;AAAA,IAGjB;AAGA,IAAA1N;AAAA,MACE,MAAM6B,EAAM;AAAA,MACZ,CAAC+L,MAAa;AACZ,YAAI,CAACA,EAAU;AACf,cAAMC,IAAc,IAAI,IAAID,EAAS,IAAI,CAAA5E,MAAQA,EAAK,KAAK,CAAC,GACtD8E,IAAc3B,EAAc,OAC5B4B,IAAc,CAAC,GAAGD,CAAW,EAAE,OAAO,CAAAhF,MAAK,CAAC+E,EAAY,IAAI/E,CAAC,CAAC;AAEpE,YAAIiF,EAAY,SAAS,GAAG;AAC1B,gBAAMtB,IAAY,IAAI,IAAIqB,CAAW;AACrC,UAAAC,EAAY,QAAQ,CAAAjF,OAAK2D,EAAU,OAAO3D,EAAC,CAAC,GAEvCR,EAAa,UAChB4D,EAAe,QAAQO;AAEzB,gBAAM9D,IAAWiF,EAAS,OAAO,CAAAlB,OAAKD,EAAU,IAAIC,GAAE,KAAK,CAAC;AAC5D,UAAA5J,EAAK,UAAU6F,CAAQ;AAAA,QACzB;AAAA,MACF;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK;AAGf,UAAMlO,KAAUoO,GAAS;AAAA,MACvB,IAAI,SAAS;AAAE,eAAOsD,EAAc;AAAA,MAAM;AAAA,MAC1C,IAAI,gBAAgB;AAAE,eAAOE,EAAc;AAAA,MAAM;AAAA,MACjD,IAAI,WAAW;AAAE,eAAOzD,EAAc;AAAA,MAAM;AAAA,MAC5C,IAAI,aAAa;AAAE,eAAO/G,EAAM,cAAc;AAAA,MAAM;AAAA,MACpD,IAAI,YAAY;AAAE,eAAOA,EAAM,aAAa;AAAA,MAAM;AAAA,MAClD,IAAI,mBAAmB;AAAE,eAAOmK,EAAqB;AAAA,MAAM;AAAA,MAC3D,IAAI,OAAO;AAAE,eAAOnK,EAAM,QAAQ;AAAA,MAAQ;AAAA,MAC1C,IAAI,kBAAkB;AAAE,eAAOA,EAAM,mBAAmB;AAAA,MAAM;AAAA,MAC9D,IAAI,cAAc;AAAE,eAAOoK,EAAY;AAAA,MAAM;AAAA,MAC7C,QAAQM;AAAA,MACR,cAAcC;AAAA,MACd,eAAeG;AAAA,MACf,aAAaI;AAAA,MACb,qBAAqBO;AAAA,MACrB,gBAAgBC;AAAA,MAChB,sBAAAE;AAAA,MACA,uBAAAE;AAAA,MACA,eAAAX;AAAA,MACA,oBAAAC;AAAA,MACA,0BAAAC;AAAA,MACA,eAAAE;AAAA,MACA,qBAAAC;AAAA,IAAA,CACD;AAED,WAAAxB,GAA0BpR,EAAc,GAExC8G,EAAa;AAAA,MACX,gBAAAwK;AAAA,IAAA,CACD,mBAnPCvK,EAYM,OAZNC,EAYMC,EAAA,QAXU;AAAA,eACV;AAAA,MAAJ,KAAIqK;AAAA,MACH,OAAK;AAAA,QAAUpK,EAAAhG,EAAA,EAAO;AAAA;WAA8BgG,EAAAhG,EAAA,EAAO,MAAM,GAAGiN,EAAA;AAAA,QAAA;AAAA;MAMpE,OAAOhH,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICJCsM,KAAiD;AAAA,EAC5D,oCAAoC;AAAA,EACpC,2CAA2C;AAC7C,GCQMnG,KAAe;;;;;;AAMrB,UAAMoG,IAAqBnC,EAAsBjE,EAAY,GAEvDV,IAAYrN,EAA8C,IAAI,GAE9DyQ,IAAe,MAAM;AACzB,MAAA0D,EAAmB,OAAO,CAACA,EAAmB,QAAQ;AAAA,IACxD;AAGA,WAAAjO;AAAA,MACE,MAAMiO,EAAmB;AAAA,MACzB,CAACzD,GAAQC,MAAW;;AAClB,QAAIA,KAAU,CAACD,OACbrH,KAAA5E,IAAA4I,EAAU,UAAV,gBAAA5I,EAAiB,cAAjB,QAAA4E,EAA4B;AAAA,MAEhC;AAAA,IAAA,GAGF5B,EAAa;AAAA,MACX,WAAA4F;AAAA,IAAA,CACD,cA5CC9E,EAAA,GAAAC,EASeoI,IATfjJ,EASe;AAAA,eART;AAAA,MAAJ,KAAI0F;AAAA,IAAA,GACI3E,EAAAA,QAAM;AAAA,MACb,OAAOZ,EAAA;AAAA,MACP,eAAaD,EAAAsM,CAAA,EAAmB;AAAA,MAChC,cAAYtM,EAAAsM,CAAA,EAAmB;AAAA,MAC/B,UAAQ1D;AAAA,IAAA;iBAET,MAAQ;AAAA,QAARxG,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;iEC8CNmG,KAAe;;;;;;;;;AAErB,UAAMhG,IAAQD,GASRqM,IAAqBnC,EAAsBjE,EAAY,GAEvDoC,IAAUnQ,EAA6B,IAAI,GAG3CoQ,IAAQW,GAAA;AAEd,aAASqD,EAAaC,GAAoC;;AACxD,YAAM7Q,IAA4B,CAAA;AAClC,iBAAWoL,KAASyF;AAClB,SAAI5P,IAAAmK,EAAM,UAAN,QAAAnK,EAAa,QACfjB,EAAO,KAAKoL,EAAM,MAAM,IAAuB,GAG7C,MAAM,QAAQA,EAAM,QAAQ,KAC9BpL,EAAO,KAAK,GAAG4Q,EAAaxF,EAAM,QAAmB,CAAC;AAG1D,aAAOpL;AAAA,IACT;AAEA,UAAMwN,IAAQ9Q,EAAS,MAAM;AAC3B,UAAI,CAACkQ,EAAM,QAAS,QAAO,CAAA;AAC3B,YAAMkE,IAAWlE,EAAM,QAAA;AACvB,aAAOgE,EAAaE,CAAQ;AAAA,IAC9B,CAAC,GAEKC,IAAarU,EAAS,MAAM8Q,EAAM,MAAM,MAAM,GAE9CE,IAAWhR,EAAS,MAAM;AAC9B,YAAMiR,IAA8B,CAAA;AACpC,aAAAH,EAAM,MAAM,QAAQ,CAAC9B,GAAMD,MAAU;AACnC,SAAIC,KAAA,gBAAAA,EAAM,WAAU,WAClBiC,EAAI,OAAOjC,EAAK,KAAK,CAAC,IAAID;AAAA,MAE9B,CAAC,GACMkC;AAAA,IACT,CAAC,GAGKqD,IAAoBxU,EAAI,EAAE,GAG1ByU,IAAsBvU,EAAS,MAAM;AACzC,YAAMoI,IAAM6L,EAAmB;AAC/B,aAAI7L,MAAQ,OAAa,KACb4I,EAAS,MAAM,OAAO5I,CAAG,CAAC,KACxB;AAAA,IAChB,CAAC;AAGD,IAAApC;AAAA,MACE,MAAMiO,EAAmB;AAAA,MACzB,CAACxC,MAAW;AACV,QAAIA,MACF6C,EAAkB,QAAQC,EAAoB;AAAA,MAElD;AAAA,IAAA;AAGF,UAAMnH,IAAgB,CAAC3D,MAAyB;AAC9C,YAAM+K,IAAQH,EAAW;AACzB,UAAIlD,IAAMmD,EAAkB;AAE5B,cAAQ7K,EAAM,MAAA;AAAA,QACZ,KAAK;AAEH,cADAA,EAAM,eAAA,GACF0H,IAAMqD,IAAQ,GAAG;AACnB,YAAArD,KACAmD,EAAkB,QAAQnD;AAC1B,kBAAMnC,IAAO8B,EAAM,MAAMK,CAAG;AAC5B,YAAInC,KACFiF,EAAmB,oBAAoBjF,EAAK,KAAK;AAAA,UAErD;AACA;AAAA,QAEF,KAAK;AAEH,cADAvF,EAAM,eAAA,GACF0H,IAAM,GAAG;AACX,YAAAA,KACAmD,EAAkB,QAAQnD;AAC1B,kBAAMnC,IAAO8B,EAAM,MAAMK,CAAG;AAC5B,YAAInC,KACFiF,EAAmB,oBAAoBjF,EAAK,KAAK;AAAA,UAErD;AACA;AAAA,QAEF,KAAK;AAAA,QACL,KAAK;AAEH,cADAvF,EAAM,eAAA,GACF0H,KAAO,KAAKA,IAAMqD,GAAO;AAC3B,kBAAMxF,IAAO8B,EAAM,MAAMK,CAAG;AAC5B,YAAInC,KACFiF,EAAmB,aAAajF,CAAI;AAAA,UAExC;AACA;AAAA,QAEF,KAAK;AACH,UAAAvF,EAAM,eAAA,GACNwK,EAAmB,OAAO,EAAK;AAC/B;AAAA,MAAA;AAAA,IAEN;AAGA,WAAAtD,GAAkB;AAAA,MAChB,KAAKV;AAAA,MACL,SAAS,MAAM;AACb,QAAIgE,EAAmB,YACrBA,EAAmB,OAAO,EAAK;AAAA,MAEnC;AAAA,IAAA,CACD,GAGDjO;AAAA,MACE,MAAMiO,EAAmB;AAAA,MACzB,CAACxC,MAAW;AACV,QAAIA,KAEF,WAAW,MAAM;;AACf,WAAAlN,IAAA0L,EAAQ,UAAR,QAAA1L,EAAe;AAAA,QACjB,GAAG,CAAC;AAAA,MAER;AAAA,IAAA,GAGFgD,EAAa;AAAA,MACX,SAAA0I;AAAA,MACA,OAAAa;AAAA,MACA,UAAAE;AAAA,IAAA,CACD,aAvMiBpJ,EAAA,kBAAhBU,EAqBWoJ,IAAA;AAAA;MArBiB,IAAI9J,EAAA;AAAA,IAAA;MAEtBD,EAAAsM,CAAA,EAAmB,YAD3B5L,KAAAb,EAmBK,MAnBLC,EAmBK;AAAA;iBAjBC;AAAA,QAAJ,KAAIwI;AAAA,MAAA,GACIzH,EAAAA,QAAM;AAAA,QACd,UAAS;AAAA,QACT,MAAK;AAAA,QACJ,wBAAsBb,EAAAsM,CAAA,EAAmB,4BAA4B;AAAA,QACrE,OAAK;AAAA;UAAqCtM,EAAAhG,EAAA,EAAO;AAAA,UAAckG,EAAM;AAAA,QAAA;AAAA,QAKrE,OAAOD,EAAA;AAAA,QACP,WAASwF;AAAA,MAAA;QAEVrD,EAAQrC,EAAA,QAAA,SAAA;AAAA,QACE2M,EAAA,UAAU,UAApB7M,EAEK,MAAA;AAAA;UAFwB,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,QAAA,KAC3CiG,EAAA,SAAS,GAAA,CAAA;;2BAIlBJ,EAqBW0C,IAAA,EAAA,KAAA,KAAA;AAAA,MAnBDvC,EAAAsM,CAAA,EAAmB,YAD3B5L,KAAAb,EAmBK,MAnBLC,EAmBK;AAAA;iBAjBC;AAAA,QAAJ,KAAIwI;AAAA,MAAA,GACIzH,EAAAA,QAAM;AAAA,QACd,UAAS;AAAA,QACT,MAAK;AAAA,QACJ,wBAAsBb,EAAAsM,CAAA,EAAmB,4BAA4B;AAAA,QACrE,OAAK;AAAA;UAAqCtM,EAAAhG,EAAA,EAAO;AAAA,UAAckG,EAAM;AAAA,QAAA;AAAA,QAKrE,OAAOD,EAAA;AAAA,QACP,WAASwF;AAAA,MAAA;QAEVrD,EAAQrC,EAAA,QAAA,SAAA;AAAA,QACE2M,EAAA,UAAU,UAApB7M,EAEK,MAAA;AAAA;UAFwB,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,QAAA,KAC3CiG,EAAA,SAAS,GAAA,CAAA;;;;ICzCP6M,KAAoB,MAAc,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;AC8CjE,UAAM5M,IAAQD,GAKRN,IAAWxH,EAAqD,IAAI,GACpE4U,IAAc5U,EAAI,EAAK;AAE7B,WAAAwC,GAAU,MAAM;AACd,MAAAoS,EAAY,QAAQD,GAAA;AAAA,IACtB,CAAC,GAEDlN,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBA3DCE,EA+BM,OAAA;AAAA,MA9BH,OAAKmC,EAAA;AAAA,QAAUhC,EAAAhG,CAAA,EAAO;AAAA;WAA0BgG,EAAAhG,CAAA,EAAO,SAAS,GAAG+S,EAAA;AAAA,QAAA;AAAA;MAMnE,SAAO9M,EAAA,KAAK;AAAA,IAAA;MAEboC,EAYE2C,IAZFlF,EAYEC,EAAA,QAXc;AAAA,QACb,IAAIG,EAAM;AAAA,iBACP;AAAA,QAAJ,KAAIP;AAAA,QACH,OAAOK,EAAAhG,CAAA,EAAO;AAAA,QACf,MAAK;AAAA,QACJ,eAAakG,EAAM;AAAA,QACnB,eAAaA,EAAM;AAAA,QACnB,cAAYA,EAAM;AAAA,QAClB,sBAAoBA,EAAM;AAAA,QAC1B,OAAOA,EAAM;AAAA,QACb,MAAMA,EAAM;AAAA,MAAA;MAEf6B,EAQE,QAAA;AAAA,QAPC,OAAKC,EAAA;AAAA,UAAYhC,EAAAhG,CAAA,EAAO;AAAA;aAA+BgG,EAAAhG,CAAA,EAAO,aAAa,GAAGiG,EAAA,iBAAY;AAAA,aAAiCD,EAAAhG,CAAA,EAAO,OAAO,GAAGiG,EAAA;AAAA,UAAA;AAAA;;;;;;;;;;ACHnJ,UAAMsI,IAAQC,GAAA,GACRwE,IAAW7U,EAA2B,IAAI,GAE1C8U,IAAgB5U,EAAS,MAAMkQ,EAAM,UAAUA,EAAM,QAAA,IAAY,EAAE;AAEzE,WAAA3I,EAAa;AAAA,MACX,UAAAoN;AAAA,IAAA,CACD,mBA3BCnN,EASM,OAAA;AAAA,eATG;AAAA,MAAJ,KAAImN;AAAA,IAAA;OACPtM,EAAA,EAAA,GAAAb,EAOM0C,IAAA,MAAA2K,GANqBD,EAAA,OAAa,CAA9B7D,GAAOhC,YADjBvH,EAOM,OAAA;AAAA,QALH,KAAKuH;AAAA,QACL,OAAKpF,EAAA,CAAGhC,EAAAhG,CAAA,EAAO,OAAO,CAAA;AAAA,QACtB,SAAOiG,EAAA,KAAK;AAAA,MAAA;SAEbS,KAAAC,EAAyBwM,GAAT/D,CAAK,CAAA;AAAA,MAAA;;;ICMdgE,KAAuC;AAAA,EAClD,0CAA0C;AAC5C,GAEaC,KAA6B;AAAA,EACxC,8BAA8B;AAAA,EAC9B,0CAA0C;AAAA,EAC1C,iCAAiC;AACnC,GCEaC,KAGT;AAAA,EACF,iCAAiC;AAAA,EAEjC,sCAAsC;AAAA,EACtC,uCAAuC;AAAA,EACvC,sCAAsC;AAAA,EAEtC,0CACE;AAAA,EAEF,mDACE;AAAA,EAEF,4CAA4C;AAAA,EAE5C,4CACE;AAAA,EACF,kDACE;AAAA,EAEF,qDACE;AAAA,EACF,qDACE;AAAA,EACF,qDACE;AAAA,EACF,sDACE;AAAA,EACF,qDACE;AACJ,GAEaC,KAAwC;AAAA,EACnD,GAAGD;AAAA,EACH,8BAA8B;AAAA,EAC9B,sCACE;AACJ,GACaE,KAA6C;AAAA,EACxD,GAAGF;AAAA,EACH,8BAA8B;AAAA,EAC9B,sCACE;AACJ,GAEaG,KAAuC;AAAA,EAClD,GAAGH;AAAA,EACH,8BAA8B;AAAA,EAC9B,sCACE;AACJ,GAEaI,KAA4C;AAAA,EACvD,GAAGJ;AAAA,EACH,8BAA8B;AAAA,EAC9B,sCACE;AACJ;AAAA,CAEkD;AAAA,EAChD,GAAGD;AAGL;;;;;oCCjDMnH,KAAe;;;;;;;AAErB,UAAMhG,IAAQD,GAKRqM,IAAqBnC,EAAsBjE,EAAY,GAEvDyB,IAAUxP,EAA0B,IAAI,GAExCwV,IAAgBJ,IAEhBK,IAAYvV,EAAS,MAAMiU,EAAmB,qBAAqBpM,EAAM,IAAI,CAAC,GAC9E0H,IAAavP,EAAS,MAAMiU,EAAmB,OAAO,IAAIpM,EAAM,KAAK,KAAK,CAAC,GAC3E2H,IAAYxP,EAAS,MAAMiU,EAAmB,qBAAqBpM,EAAM,KAAK,KAAK,GAEnF2B,IAAc,CAAC6D,MAAkB;AACrC,MAAAA,EAAE,eAAA,GACF4G,EAAmB,aAAapM,EAAM,IAAI;AAAA,IAC5C;AAEA,WAAAN,EAAa;AAAA,MACX,SAAA+H;AAAA,IAAA,CACD,aA/DSiG,EAAA,SADRlN,EAAA,GAAAb,EA2BK,MA3BLC,EA2BK;AAAA;eAzBC;AAAA,MAAJ,KAAI6H;AAAA,IAAA,GACI9G,EAAAA,QAAM;AAAA,MACd,MAAK;AAAA,MACJ,iBAAe+G,EAAA;AAAA,MACf,OAAK;AAAA,QAAU5H,EAAAhG,EAAA,EAAO;AAAA;WAAuBgG,EAAAhG,EAAA,EAAO,QAAQ,GAAG4N,EAAA;AAAA,WAAqB5H,EAAAhG,EAAA,EAAO,OAAO,GAAG6N,EAAA;AAAA,QAAA;AAAA;MAOrG,OAAO5H,EAAA;AAAA,MACP,OAAOA,EAAA,KAAK;AAAA,MACZ,SAAO4B;AAAA,IAAA;MAGA7B,EAAAsM,CAAA,EAAmB,SAAI,gBAD/B3L,EAMEkN,IAAA;AAAA;QAJC,OAAO7N,EAAA2N,CAAA;AAAA,QACP,cAAY/F,EAAA;AAAA,QACZ,UAAU;AAAA,QACV,4BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,MAAA;MAEbxF,EAEOrC,yBAFP,MAEO;AAAA,QADLsC,EAAkCyF,IAAA,MAAA;AAAA,qBAA1B,MAAiB;AAAA,YAAd5F,EAAAC,EAAAlC,EAAA,KAAK,MAAM,GAAA,CAAA;AAAA,UAAA;;;;;;;;;;;;;wCCetBiG,KAAe;;;;;;;;AAErB,UAAM4H,IAAgB,wLAIhB5N,IAAQD,GAQRqM,IAAqBnC,EAAsBjE,EAAY,GAEvD0H,IAAYvV,EAAS,MAAMiU,EAAmB,sBAAsBpM,EAAM,MAAM,EAAE,CAAC,GAEnFyN,IAAgBJ,IAEhBhF,IAAQW,GAAA,GACR6E,IAAgB1V,EAAS,MACxBkQ,EAAM,UACMA,EAAM,QAAA,EACP,WAAW,IAFA,EAG5B,GAEK+C,IAAqBjT;AAAA,MAAS,MAClCiU,EAAmB,mBAAmBpM,EAAM,MAAM,EAAE;AAAA,IAAA,GAEhDqL,IAA2BlT;AAAA,MAAS,MACxCiU,EAAmB,yBAAyBpM,EAAM,MAAM,EAAE;AAAA,IAAA,GAGtDE,IAAY/H;AAAA,MAAS,MACzBiT,EAAmB,SAASC,EAAyB;AAAA,IAAA,GAGjDyC,IAAe3V;AAAA,MAA2B,MAC9CiT,EAAmB,QAAQ,SAAS;AAAA,IAAA,GAGhC2C,IAAe,CAACC,MACbJ,EAAc,KAAKI,EAAM,KAAA,CAAM,GAGlCC,IAAc9V,EAAS,MAAM;AACjC,YAAM+V,IAAO,EAAE,GAAGlO,EAAM,MAAA;AACxB,aAAIA,EAAM,MAAM,SAAS+N,EAAa/N,EAAM,MAAM,KAAK,MACrDkO,EAAK,kBAAkBlO,EAAM,MAAM,QAE9BkO;AAAA,IACT,CAAC,GAEKC,IAAoB,MAAM;AAC9B,MAAI/B,EAAmB,mBACrBA,EAAmB,cAAcpM,EAAM,MAAM,EAAE;AAAA,IAEnD;qBAlGY0N,EAAA,cAAV/N,EA4BK,MAAA;AAAA;MA5BiB,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,MAAE,MAAK;AAAA,MAAS,cAAYiG,EAAA,MAAM;AAAA,IAAA;MACzE8B,EAoBM,OAAA;AAAA,QAnBH,OAAKC,EAAA;AAAA,UAAYhC,EAAAhG,EAAA,EAAO;AAAA;YAA6B,CAAAgG,EAAAhG,EAAA,EAAO,gBAAgB,GAAGgG,EAAAsM,CAAA,EAAmB;AAAA,UAAA;AAAA;QAMlG,SAAO6B,EAAA,KAAW;AAAA,QAClB,OAAOlO,EAAA,MAAM;AAAA,QACb,SAAOoO;AAAA,MAAA;QAGArO,EAAAsM,CAAA,EAAmB,wBAD3B3L,EAOEkN,IAAA;AAAA;UALC,OAAO7N,EAAA2N,CAAA;AAAA,UACP,cAAYvN,EAAA;AAAA,UACZ,iBAAe4N,EAAA;AAAA,UACf,UAAU;AAAA,UACV,4BAAD,MAAA;AAAA,UAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QAAA;QAEbjM,EAAoD,QAAA;AAAA,UAA7C,OAAKC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,QAAA,GAAKmI,EAAAlC,EAAA,MAAM,KAAK,GAAA,CAAA;AAAA,MAAA;MAE5C8B,EAKK,MAAA;AAAA,QALA,OAAKC,EAAEhC,EAAAhG,EAAA,EAAO,QAAQ;AAAA,MAAA;QACzBoI,EAAQrC,EAAA,QAAA,SAAA;AAAA,QACEgO,EAAA,cAAVlO,EAEK,MAAA;AAAA;UAFqB,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,QAAA,KACxCiG,EAAA,SAAS,GAAA,CAAA;;;;ICEdiG,KAAe;;;;;;;AASrB,UAAMoG,IAAqBnC,EAAsBjE,EAAY,GAEvDyH,IAAgBJ,IAEhB9B,IAAgBpT,EAAS,MAAMiU,EAAmB,eAAe,GACjEZ,IAAsBrT,EAAS,MAAMiU,EAAmB,qBAAqB,GAE7ElM,IAAY/H;AAAA,MAAS,MACzBoT,EAAc,SAASC,EAAoB;AAAA,IAAA,GAGvCsC,IAAe3V;AAAA,MAA2B,MAC9CoT,EAAc,QAAQ,SAAS;AAAA,IAAA,GAG3B5J,IAAc,CAAC6D,MAAkB;AACrC,MAAAA,EAAE,eAAA,GACF4G,EAAmB,YAAA;AAAA,IACrB;qBArDWtM,EAAAsM,CAAA,EAAmB,gCAD5BzM,EAcK,MAAA;AAAA;MAZF,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,IAAI;AAAA,MAClB,SAAOiG,EAAA,KAAK;AAAA,MACZ,SAAO4B;AAAA,IAAA;MAERQ,EAMEwL,IAAA;AAAA,QALC,OAAO7N,EAAA2N,CAAA;AAAA,QACP,cAAYvN,EAAA;AAAA,QACZ,iBAAe4N,EAAA;AAAA,QACf,UAAU;AAAA,QACV,4BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,MAAA;MAEb3L,EAA4ByF,IAAA,MAAA;AAAA,mBAApB,MAAW;AAAA,cAAR7H,EAAA,KAAK,GAAA,CAAA;AAAA,QAAA;;;;;;;;GCCdiG,KAAe;;;;;;;;;;AAErB,UAAMhG,IAAQD,GAaRqM,IAAqBnC,EAAsBjE,EAAY,GAEvDuB,IAAYtP,EAAwC,IAAI,GAExDmW,IAAcjW,EAAS,MAAM;AACjC,YAAM2O,IAAWsF,EAAmB;AAEpC,UAAItF,EAAS,WAAW;AACtB,eAAO9G,EAAM;AAGf,UAAIA,EAAM,gBAAgB;AACxB,eAAOA,EAAM,cAAc,QAAQ,OAAO,OAAO8G,EAAS,MAAM,CAAC;AAInE,YAAMuH,IAAUvH,EAAS,MAAM,GAAG9G,EAAM,eAAe,GACjDI,IAAO0G,EAAS,SAASuH,EAAQ,QACjCC,IAAQD,EAAQ,IAAI,CAAAlH,MAAQA,EAAK,MAAM,EAAE,KAAK,IAAI;AAExD,aAAI/G,IAAO,IACF,GAAGkO,CAAK,KAAKlO,CAAI,KAEnBkO;AAAA,IACT,CAAC;AAED,WAAA5O,EAAa;AAAA,MACX,WAAA6H;AAAA,IAAA,CACD,aAzDavD,EAAAA,OAAO,UAAnB9B,EAA8BrC,EAAA,QAAA,WAAA,EAAA,KAAA,GAAA,UAE5BY,EAESmH,IAAA;AAAA;eAFG;AAAA,MAAJ,KAAIL;AAAA,MAAa,OAAKzF,EAAEhC,EAAAhG,EAAA,EAAO,IAAI;AAAA,IAAA;iBACzC,MAAiB;AAAA,YAAdsU,EAAA,KAAW,GAAA,CAAA;AAAA,MAAA;;;;;;;kCCgBdpI,KAAe;;;;;;;AASrB,UAAMoG,IAAqBnC,EAAsBjE,EAAY,GAEvDvG,IAAWxH,EAA6B,IAAI,GAE5C2L,IAAc,CAAC4B,MAAa;AAChC,MAAA4G,EAAmB,eAAgB5G,EAAE,OAA4B,KAAK;AAAA,IACxE;AAGA,WAAArH;AAAA,MACE,MAAMiO,EAAmB;AAAA,MACzB,CAACxC,MAAW;AACV,QAAIA,KACFzF,GAAS,MAAM;AACb,qBAAW,MAAA;;AAAM,oBAAAzH,IAAA+C,EAAS,UAAT,gBAAA/C,EAAgB;AAAA,aAAS,CAAC;AAAA,QAC7C,CAAC;AAAA,MAEL;AAAA,IAAA,mBA7CAiD,EAUK,MAAA;AAAA,MAVA,OAAKmC,EAAEhC,EAAAhG,EAAA,EAAO,MAAM;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MACtC8B,EAQE,SAAA;AAAA,iBAPI;AAAA,QAAJ,KAAIpC;AAAA,QACH,OAAKqC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,QACpB,MAAK;AAAA,QACJ,aAAaiG,EAAA;AAAA,QACb,OAAOD,EAAAsM,CAAA,EAAmB;AAAA,QAC1B,SAAOxI;AAAA,QACP,8BAAD,MAAA;AAAA,QAAA,GAAa,CAAA,MAAA,CAAA;AAAA,MAAA;;;;;;;;;;;;0DC+BboC,KAAe;;;;;;;;AAErB,UAAMhG,IAAQD,GAQRqM,IAAqBnC,EAAsBjE,EAAY,GAEvDvG,IAAWxH,EAA6B,IAAI,GAC5CsW,IAAetW,EAA2B,IAAI,GAE9CuW,IAAYrW,EAAS,MAAM;AAC/B,UAAI,CAAC6H,EAAM,OAAQ,QAAO;AAC1B,YAAMoJ,wBAAU,IAAA;AAChB,iBAAWqF,KAAKzO,EAAM;AACpB,QAAAoJ,EAAI,IAAIqF,EAAE,IAAIA,EAAE,KAAK;AAEvB,aAAOrF;AAAA,IACT,CAAC,GAEKgF,IAAcjW,EAAS,MAAM;AACjC,UAAIiU,EAAmB,SAAU,QAAO;AACxC,YAAMnD,IAAQmD,EAAmB;AACjC,UAAInD,EAAM,WAAW,EAAG,QAAO;AAC/B,UAAIA,EAAM,WAAW,EAAG,QAAOA,EAAM,CAAC,EAAE;AACxC,UAAImD,EAAmB,gBAAiB,QAAO,QAAQnD,EAAM,MAAM;AAGnE,UAAIuF,EAAU,SAASvF,EAAM,MAAM,OAAK4B,EAAE,SAAS,IAAI,GAAG;AACxD,cAAM6D,IAAW,CAAC,GAAG,IAAI,IAAIzF,EAAM,IAAI,CAAA4B,MAAKA,EAAE,KAAM,CAAC,CAAC,GAChD8D,IAAsBD,EAAS,OAAO,OAAMtC,EAAmB,mBAAmBwC,CAAE,CAAC;AAE3F,YAAID,EAAoB,SAAS,KAAKA,EAAoB,WAAWD,EAAS,QAAQ;AACpF,cAAIC,EAAoB,WAAW,GAAG;AACpC,kBAAME,IAAQL,EAAU,MAAM,IAAIG,EAAoB,CAAC,CAAC;AACxD,gBAAIE,EAAO,QAAO,GAAGA,CAAK,KAAK5F,EAAM,MAAM;AAAA,UAC7C;AACA,gBAAM6F,IAAaN,EAAU,MAAM,IAAIG,EAAoB,CAAC,CAAC;AAC7D,cAAIG;AACF,mBAAOH,EAAoB,WAAW,IAClC,GAAGG,CAAU,KAAKN,EAAU,MAAM,IAAIG,EAAoB,CAAC,CAAC,CAAC,KAC7D,GAAGG,CAAU,KAAKH,EAAoB,SAAS,CAAC;AAAA,QAExD;AAAA,MACF;AAEA,aAAO,GAAG1F,EAAM,CAAC,EAAE,MAAM,KAAKA,EAAM,SAAS,CAAC;AAAA,IAChD,CAAC,GAEKrF,IAAc,CAAC4B,MAAa;AAChC,YAAMtM,IAASsM,EAAE,OAA4B;AAC7C,MAAA4G,EAAmB,eAAelT,CAAK;AAAA,IACzC,GAEM4K,IAAc,MAAM;AACxB,MAAKsI,EAAmB,cACtBA,EAAmB,OAAO,EAAI;AAAA,IAElC,GAEM2C,IAAuB,MAAM;;AACjC,OAAArS,IAAA+C,EAAS,UAAT,QAAA/C,EAAgB;AAAA,IAClB,GAEM6I,IAAgB,CAACC,MAAqB;;AAC1C,MAAIA,EAAE,SAAS,aACb4G,EAAmB,OAAO,EAAK,IAC/B1P,IAAA+C,EAAS,UAAT,QAAA/C,EAAgB;AAAA,IAEpB;AAGA,WAAAyB,EAAM,MAAMiO,EAAmB,UAAU,CAACxC,MAAW;AACnD,MAAIA,KACFzF,GAAS,MAAA;;AAAM,gBAAAzH,IAAA+C,EAAS,UAAT,gBAAA/C,EAAgB;AAAA,OAAO;AAAA,IAE1C,CAAC,GAEDgD,EAAa,EAAE,UAAAD,GAAU,mBAzHvBE,EA6BM,OAAA;AAAA,MA7BA,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,QAAQ;AAAA,MAAG,SAAOiG,EAAA,KAAK;AAAA,IAAA;MACzC8B,EA2BM,OAAA;AAAA,iBA1BA;AAAA,QAAJ,KAAI0M;AAAA,QACH,OAAKzM,EAAA;AAAA,UAAYhC,EAAAhG,CAAA,EAAO;AAAA;YAAqC,CAAAgG,EAAAhG,CAAA,EAAO,OAAO,GAAGgG,EAAAsM,CAAA,EAAmB;AAAA,YAAqB,CAAAtM,EAAAhG,CAAA,EAAO,OAAO,GAAGgG,EAAAsM,CAAA,EAAmB;AAAA,YAAsB,CAAAtM,EAAAhG,CAAA,EAAO,QAAQ,GAAGgG,EAAAsM,CAAA,EAAmB;AAAA,UAAA;AAAA;QAQrN,SAAO2C;AAAA,MAAA;QAERlN,EAWE,SAAA;AAAA,mBAVI;AAAA,UAAJ,KAAIpC;AAAA,UACH,OAAKqC,EAAEhC,EAAAhG,CAAA,EAAO,KAAK;AAAA,UACpB,MAAK;AAAA,UACJ,aAAaiG,EAAA;AAAA,UACb,OAAOD,KAAmB,WAAWA,EAAAsM,CAAA,EAAmB,cAAcgC,EAAA;AAAA,UACtE,UAAUtO,EAAAsM,CAAA,EAAmB;AAAA,UAC7B,UAAQ,CAAGtM,EAAAsM,CAAA,EAAmB;AAAA,UAC9B,SAAOxI;AAAA,UACP,SAAOE;AAAA,UACP,WAASyB;AAAA,QAAA;QAEZrD,EAEOrC,uBAFP,MAEO;AAAA,UADLgC,EAAqF,QAAA;AAAA,YAA9E,OAAKC,EAAA,CAAGhC,EAAAhG,CAAA,EAAO,OAAK,EAAA,CAAKgG,EAAAhG,CAAA,EAAO,SAAS,GAAGgG,EAAAsM,CAAA,EAAmB,SAAA,CAAQ,CAAA;AAAA,UAAA;;;;;;;;;;;ACbtF,UAAMpM,IAAQD,GAIRiP,IAAY/W,EAA2B,IAAI,GAE3CgX,IAAY9W,EAAS,MAAM6H,EAAM,aAAa,SAAS,IAAI;AAEjE,WAAAN,EAAa;AAAA,MACX,WAAAsP;AAAA,IAAA,CACD,mBAvBCvO,EAIWoJ,IAAA;AAAA,MAJA,IAAIoF,EAAA;AAAA,MAAY,WAAWA,EAAA;AAAA,IAAA;MACpCpN,EAEM,OAFNjC,EAEM;AAAA,iBAFG;AAAA,QAAJ,KAAIoP;AAAA,MAAA,GAAoBrO,EAAAA,MAAM,GAAA;AAAA,QACjCuB,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;ACiBd,UAAMqP,IAAWjX,EAA2B,IAAI;AAEhD,WAAAyH,EAAa;AAAA,MACX,UAAAwP;AAAA,IAAA,CACD,mBAvBCvP,EAOM,OAPNC,EAOMC,EAAA,QANU;AAAA,eACV;AAAA,MAAJ,KAAIqP;AAAA,MACH,OAAOpP,EAAAhG,EAAA,EAAO;AAAA,MACd,OAAOiG,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICICsP,KAA2C;AAAA,EACtD,yCAAyC;AAAA,EACzC,sCAAsC;AAAA,EACtC,4CAA4C;AAAA,EAC5C,yCACE;AAAA,EACF,yCACE;AACJ;;;;;;;;ACCA,UAAMC,IAAUnX,EAA8B,IAAI;AAElD,WAAAyH,EAAa;AAAA,MACX,SAAA0P;AAAA,IAAA,CACD,cAvBC5O,EAAA,GAAAb,EAOI,KAPJC,EAOI;AAAA,eANE;AAAA,MAAJ,KAAIwP;AAAA,IAAA,GACIzO,EAAAA,QAAM;AAAA,MACb,OAAOb,EAAAhG,EAAA,EAAO;AAAA,MACd,OAAOiG,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICOCwP,KAA8B;AAAA,EACzC,2BAA2B;AAAA,EAC3B,iCACE;AAAA,EACF,qCAAqC;AAAA,EACrC,iDACE;AAAA,EACF,iDACE;AAAA,EACF,iDACE;AAAA,EACF,kDACE;AAAA,EACF,iDACE;AACJ,GC7BaC,KAAe;AAAA,EAC1B,qCAAqC;AAAA,EACrC,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,qCAAqC;AACvC;;;;;;;;;;ACkBA,UAAMtP,IAAQD,GAIRwP,IAAatX,EAA2B,IAAI,GAE5CuX,IAAcrX,EAAS,MAAM;AACjC,YAAM,EAAE,MAAAsX,GAAM,GAAGC,EAAA,IAAY1P,EAAM;AACnC,aAAO0P;AAAA,IACT,CAAC;AAED,WAAAhQ,EAAa;AAAA,MACX,YAAA6P;AAAA,IAAA,CACD,mBAnCC5P,EAYM,OAZNC,EAYMC,EAAA,QAXU;AAAA,eACV;AAAA,MAAJ,KAAI0P;AAAA,MACH,OAAOzP,EAAAhG,EAAA,EAAO;AAAA,MACd,OAAO0V,EAAA;AAAA,IAAA;MAIAzP,EAAA,wBAFRU,EAIEwM,GAHKlN,EAAA,MAAM,IAAI,GAAA;AAAA;QAEd,OAAK+B,EAAEhC,EAAAhG,EAAA,EAAO,IAAI;AAAA,MAAA;MAErBoI,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICVNqF,KAAa;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAASyK,GAAO9P,GAAM+P,GAAQ;AACnC,SAAQpP,EAAU,GAAIb,EAAoB,OAAOuF,IAAY,CAAC,GAAI0K,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI;AAAA,IAC1FC,GAAmB,6lBAAmnB,CAAC;AAAA,EAC3oB,EAAK,CAAC;AACN;AACA,MAAAC,KAAe,EAAE,QAAQH,GAAM,GCZzBzK,KAAa;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAASyK,GAAO9P,GAAM+P,GAAQ;AACnC,SAAQpP,EAAU,GAAIb,EAAoB,OAAOuF,IAAY,CAAC,GAAI0K,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI;AAAA,IAC1FC,GAAmB,oeAAkf,CAAC;AAAA,EAC1gB,EAAK,CAAC;AACN;AACA,MAAAE,KAAe,EAAE,QAAQJ,GAAM,GCZzBzK,KAAa;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAASyK,GAAO9P,GAAM+P,GAAQ;AACnC,SAAQpP,EAAU,GAAIb,EAAoB,OAAOuF,IAAY,CAAC,GAAI0K,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI;AAAA,IAC1FC,GAAmB,+XAAmZ,CAAC;AAAA,EAC3a,EAAK,CAAC;AACN;AACA,MAAAG,KAAe,EAAE,QAAQL,GAAM,GCZzBzK,KAAa;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAASyK,GAAO9P,GAAM+P,GAAQ;AACnC,SAAQpP,EAAU,GAAIb,EAAoB,OAAOuF,IAAY,CAAC,GAAI0K,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI;AAAA,IAC1FC,GAAmB,igBAA+gB,CAAC;AAAA,EACviB,EAAK,CAAC;AACN;AACA,MAAAI,KAAe,EAAE,QAAQN,GAAM,GCGlBO,KAGT;AAAA,EACF,gCAAgC;AAAA,EAChC,sCACE;AAAA,EACF,mCAAmC;AACrC,GAEaC,KAAwC;AAAA,EACnD,GAAGD;AAAA,EACH,MAAMJ;AAAA,EACN,yCACE;AACJ,GAEaM,KAAsC;AAAA,EACjD,GAAGF;AAAA,EACH,MAAMH;AAAA,EACN,yCACE;AACJ,GAEaM,KAAwC;AAAA,EACnD,GAAGH;AAAA,EACH,MAAMF;AAAA,EACN,yCACE;AACJ,GAEaM,KAAqC;AAAA,EAChD,GAAGJ;AAAA,EACH,MAAMD;AAAA,EACN,yCACE;AACJ,GClDMjK,KAAe,aAEf,CAACuK,IAAyBC,EAAmB,IACjD5K,EAA8CI,EAAY;;;;;;;;;;;;ACc5D,UAAMhG,IAAQD,GAIRkB,IAAOC,GAIPuP,IAAexY,EAA2B,IAAI,GAC9CyY,IAAgBzY,EAAwB+H,EAAM,YAAY,GAE1D/B,IAAiBL,GAAsCoC,EAAM,KAAK,GAElEyG,IAAetO,EAAS,MAAM,WAAW6H,KAASA,EAAM,UAAU,MAAS,GAC3E2Q,IAAexY;AAAA,MAAS,MAC5BsO,EAAa,QAAQzG,EAAM,QAAQ0Q,EAAc;AAAA,IAAA,GAG7CE,IAAkB,CAACxM,MACnBpE,EAAM,iBACDoE,MAAauM,EAAa,QAAQ,SAEpCvM,GAGHP,IAAe,CAACO,MAAqB;AACzC,YAAMyM,IAAeD,EAAgBxM,CAAQ;AAE7C,MAAKqC,EAAa,UAChBiK,EAAc,QAAQG,IAGxB5P,EAAK,UAAU4P,CAAY;AAAA,IAC7B;AAIA,WAAAN,GAAwB;AAAA,MACtB,OAAOI;AAAA;AAAA,MACP,cAAcG,GAAM,MAAM9Q,EAAM,YAAY;AAAA,MAC5C,UAAU6D;AAAA,IAAA,CACX,GAEDnE,EAAa;AAAA,MACX,cAAA+Q;AAAA,IAAA,CACD,mBAhEC9Q,EAMM,OANNC,EAMMC,EAAA,QALU;AAAA,eACV;AAAA,MAAJ,KAAI4Q;AAAA,MACH,OAAK,CAAG3Q,EAAAhG,EAAA,EAAO,SAASgG,EAAA7B,CAAA,CAAc;AAAA,IAAA;MAEvCiE,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;;;;;;;;;;ACcZ,UAAMG,IAAQD,GAIRkB,IAAOC,GAIPuP,IAAexY,EAA2B,IAAI,GAC9CyY,IAAgBzY,EAAc+H,EAAM,gBAAgB,CAAA,CAAE,GAEtD/B,IAAiBL,GAAsCoC,EAAM,KAAK,GAElEyG,IAAetO,EAAS,MAAM,WAAW6H,KAASA,EAAM,UAAU,MAAS,GAC3E2Q,IAAexY;AAAA,MAAS,MAC5BsO,EAAa,QAASzG,EAAM,SAAS,CAAA,IAAM0Q,EAAc;AAAA,IAAA,GAGrDE,IAAkB,CAACxM,MAA+B;AACtD,YAAM2M,IAAUJ,EAAa,SAAS,CAAA;AACtC,aAAII,EAAQ,SAAS3M,CAAQ,IACpB2M,EAAQ,OAAO,CAACxQ,MAAQA,MAAQ6D,CAAQ,IAE1C,CAAC,GAAG2M,GAAS3M,CAAQ;AAAA,IAC9B,GAEMP,IAAe,CAACO,MAAqB;AACzC,YAAMyM,IAAeD,EAAgBxM,CAAQ;AAE7C,MAAKqC,EAAa,UAChBiK,EAAc,QAAQG,IAGxB5P,EAAK,UAAU4P,CAAY;AAAA,IAC7B;AAIA,WAAAN,GAAwB;AAAA,MACtB,OAAOI;AAAA;AAAA,MACP,cAAcG,GAAM,MAAM9Q,EAAM,YAAY;AAAA,MAC5C,UAAU6D;AAAA,IAAA,CACX,GAEDnE,EAAa;AAAA,MACX,cAAA+Q;AAAA,IAAA,CACD,mBAjEC9Q,EAMM,OANNC,EAMMC,EAAA,QALU;AAAA,eACV;AAAA,MAAJ,KAAI4Q;AAAA,MACH,OAAK,CAAG3Q,EAAAhG,EAAA,EAAO,SAASgG,EAAA7B,CAAA,CAAc;AAAA,IAAA;MAEvCiE,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICoCZsG,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;;AAdD,UAAMyK,IAAexY,EAEnB,IAAI;AAEN,WAAAyH,EAAa;AAAA,MACX,cAAA+Q;AAAA,IAAA,CACD,aAlCS1Q,EAAA,SAAI,mBADZU,EAMoBuQ,IANpBpR,EAMoB,EAAA,KAAA,EAAA,GAJTqR,EAAAA,QAAM;AAAA,eACX;AAAA,MAAJ,KAAIR;AAAA,IAAA;iBAEJ,MAAQ;AAAA,QAARvO,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;oBAEVY,EAMkByQ,IANlBtR,EAMkB,EAAA,KAAA,KAJPqR,EAAAA,QAAM;AAAA,eACX;AAAA,MAAJ,KAAIR;AAAA,IAAA;iBAEJ,MAAQ;AAAA,QAARvO,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;ICXNqF,KAAa;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAASyK,GAAO9P,GAAM+P,GAAQ;AACnC,SAAQpP,EAAU,GAAIb,EAAoB,OAAOuF,IAAY,CAAC,GAAI0K,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI;AAAA,IAC1F/N,EAAoB,QAAQ;AAAA,MAC1B,MAAM;AAAA,MACN,aAAa;AAAA,MACb,GAAG;AAAA,MACH,aAAa;AAAA,IACnB,GAAO,MAAM,EAAE;AAAA,EACf,EAAK,CAAC;AACN;AACA,MAAAsP,KAAe,EAAE,QAAQxB,GAAM;;;;;;;;;;;;;GC0BzB3J,KAAe;;;;;;;;;AAIrB,UAAMhG,IAAQD,GAIR0H,IAAUxP,EAA2B,IAAI,GAEzC,EAAE,UAAAmZ,GAAU,OAAOT,EAAA,IAAiBH,GAAoBxK,EAAY,GAEpE/H,IAAiBL,GAA0CoC,EAAM,KAAK,GAEtE2B,IAAc,MAAM;AACxB,MAAAyP,EAASpR,EAAM,KAAK;AAAA,IACtB,GAEMqR,IAAWlZ,EAAS,MAAM;AAC9B,YAAMoI,IAAM+Q,EAAMX,CAAY;AAC9B,aAAI,MAAM,QAAQpQ,CAAG,IACZA,EAAI,SAASP,EAAM,KAAK,IAE1BO,MAAQP,EAAM;AAAA,IACvB,CAAC;AAED,WAAAN,EAAa;AAAA,MACX,SAAA+H;AAAA,IAAA,CACD,mBAxEC9H,EA8BM,OA9BNC,EA8BMC,EAAA,QA7BU;AAAA,eACV;AAAA,MAAJ,KAAI4H;AAAA,MACH,OAAK;AAAA,QAAU3H,EAAAhG,CAAA,EAAO;AAAA;WAA0BgG,EAAAhG,CAAA,EAAO,MAAM,GAAGuX,EAAA;AAAA,QAAA;AAAA,QAAwBvR,EAAA7B,CAAA;AAAA,MAAA;AAAA;MAQzF4D,EAcM,OAAA;AAAA,QAdA,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,MAAM;AAAA,QAAG,SAAO6H;AAAA,MAAA;QAClCE,EAQM,OAAA;AAAA,UARA,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,WAAW;AAAA,QAAA;UAClBiG,EAAA,eAAXJ,EAEM,OAAA;AAAA;YAFc,OAAKmC,EAAEhC,EAAAhG,CAAA,EAAO,YAAY;AAAA,UAAA;aAC5C0G,KAAAC,EAA0BwM,GAAVlN,EAAA,MAAM,CAAA;AAAA,UAAA;UAGxBoC,EAEO0C,IAAA;AAAA,YAFA,OAAO/E,EAAA6C,EAAA;AAAA,YAAkB,MAAK;AAAA,YAAM,eAAa;AAAA,UAAA;uBACtD,MAAW;AAAA,kBAAR5C,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;;QAIZ8B,EAEO,QAAA;AAAA,UAFA,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,iBAAiB;AAAA,QAAA;UACpCqI,EAAgDrC,EAAAqR,EAAA,GAAA;AAAA,YAA9B,OAAKrP,EAAEhC,EAAAhG,CAAA,EAAO,YAAY;AAAA,UAAA;;;MAIhD+H,EAEM,OAAA;AAAA,QAFA,OAAKC,EAAEhC,EAAAhG,CAAA,EAAO,OAAO;AAAA,MAAA;QACzBoI,EAAQrC,EAAA,QAAA,SAAA;AAAA,MAAA;;;ICvBD0R,KAAqC;AAAA,EAChD,gCAAgC;AAClC,GCKaC,KAA6C;AAAA,EACxD,6CACE;AAAA,EACF,0CACE;AAAA,EACF,gDACE;AAAA,EACF,uCAAuC;AAAA,EACvC,6CAA6C;AAAA,EAC7C,kDACE;AAAA,EACF,4CACE;AACJ,GClBMC,KAAYC;AAIlBD,GAAU,OAAOE;ACTjB,MAAM3L,KAAe,cAEf,CAAC4L,IAA0BC,EAAoB,IACnDjM,EAA+CI,EAAY;;;;GC4F7DG,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;;AA5ED,UAAMhG,IAAQD,GAKRkB,IAAOC,GAIP4Q,IAAgB7Z,EAA2B,IAAI,GAC/C8Z,IAAQ9Z,EAAc,EAAE,GAExB+Z,IAAoB,CAACC,MAAkB;AAC3C,YAAMC,IAAOH,EAAM;AAEnB,UAAII,IAAeD;AAMnB,UAJI,CAACD,KAAQF,EAAM,MAAM,WACvBI,IAAe,CAAA,IAGbF,GAAM;AACR,cAAMvK,IAAaqK,EAAM,MAAM,SAASE,CAAI;AAE5C,QAAIjS,EAAM,kBACRmS,IAAezK,IACXwK,EAAK,OAAO,CAAC/K,MAASA,MAAS8K,CAAI,IACnC,CAAC,GAAGC,GAAMD,CAAI,IAGhB,CAACjS,EAAM,iBAAiB,CAAC0H,MAC3ByK,IAAe,CAACF,CAAI;AAAA,MAExB;AAEA,MAAAF,EAAM,QAAQI,GACdlR,EAAK,UAAUkR,GAAcF,CAAI;AAAA,IACnC,GAEMG,IAAqB,CAACH,MAAiB;AAC3C,YAAMC,IAAOH,EAAM;AAEnB,UAAI/R,EAAM,eAAe;AACvB,QAAA+R,EAAM,QAAQ,CAAC,GAAGG,GAAMD,CAAI;AAC5B;AAAA,MACF;AAEA,MAAI,CAACjS,EAAM,iBAAiB,CAACkS,EAAK,WAChCH,EAAM,QAAQ,CAACE,CAAI;AAAA,IAEvB,GAEMrZ,IAAUoO,GAAS;AAAA,MACvB,QAAQ+K,EAAM;AAAA,MACd,UAAUC;AAAA,MACV,oBAAAI;AAAA,MACA,YAAYpS,EAAM;AAAA,IAAA,CACnB;AAED,WAAAqS,GAAY,MAAM;AAChB,MAAAzZ,EAAQ,SAASmZ,EAAM,OACvBnZ,EAAQ,aAAaoH,EAAM;AAAA,IAC7B,CAAC,GAED4R,GAAyBhZ,CAAc,GAEvC8G,EAAa;AAAA,MACX,eAAAoS;AAAA,IAAA,CACD,mBA3FCnS,EAYM,OAZNC,EAYMC,EAAA,QAXU;AAAA,eACV;AAAA,MAAJ,KAAIiS;AAAA,MACH,OAAK;AAAA,QAAUhS,EAAAhG,EAAA,EAAO;AAAA;WAA8BgG,EAAAhG,EAAA,EAAO,UAAU,GAAGiG,EAAA,gBAAW;AAAA,QAAA;AAAA;MAMnF,OAAOA,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICNCyS,KAAuC;AAAA,EAClD,oCAAoC;AACtC,GCLMtM,KAAe,uBAEf,CAACuM,IAA2BC,EAAqB,IACrD5M,EAA4CI,EAAY;;;;;;;;;;;;;;ACgB1D,UAAMhG,IAAQD,GAER0S,IAAoBZ,GAAqB7L,EAAY,GACrD0M,IAAkBva,EAAS,MAAMsa,EAAkB,UAAU,GAC7D,EAAE,oBAAAL,MAAuBK;AAE/B,IAAAhY,GAAU,MAAM;AACd,MAAIuF,EAAM,mBAAmBA,EAAM,QACjCoS,EAAmBpS,EAAM,IAAI;AAAA,IAEjC,CAAC;AAED,UAAM2S,IAAexa,EAAS,MAAM;AAClC,YAAM,EAAE,OAAAoB,GAAO,OAAOqZ,GAAQ,iBAAAC,GAAiB,GAAGzS,MAASJ;AAC3D,aAAOI;AAAA,IACT,CAAC;AAED,WAAAmS,GAA0BI,EAAa,KAAK,mBAtC1ChT,EAWM,OAAA;AAAA,MAVH,OAAKmC,EAAA;AAAA,QAAUhC,EAAAhG,EAAA,EAAO;AAAA,QAAiBkG,EAAM;AAAA;UAAwB,CAAAF,EAAAhG,EAAA,EAAO,QAAQ,GAAG4Y,EAAA,SAAmB3S,EAAA;AAAA,QAAA;AAAA;MAO1G,SAAOA,EAAA,KAAK;AAAA,IAAA;MAEbmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICLCiT,KAA6C;AAAA,EACxD,uDACE;AACJ;;;8BCkBM9M,KAAe;;;;;;;;AAMrB,UAAMhG,IAAQD,GAIR,EAAE,OAAAxG,GAAO,OAAOkE,GAAW,GAAGsV,MAAc/S,GAE5CsF,IAAYrN,EAA8B,IAAI,GAE9Cwa,IAAoBZ,GAAqB7L,EAAY,GAErD,EAAE,MAAAiM,GAAM,YAAYe,EAAA,IACxBR,GAAsBxM,EAAY,GAE9B0B,IAAavP,EAAS,MAAMsa,EAAkB,OAAO,SAASR,CAAI,CAAC,GACnEgB,IAAa9a,EAAS,MAAMsa,EAAkB,UAAU,GAExD5O,IAAe,MAAM;AACzB,MAAA4O,EAAkB,SAASR,CAAI;AAAA,IACjC;AAEA,WAAAvS,EAAa;AAAA,MACX,WAAA4F;AAAA,IAAA,CACD,cAtDC9E,EAAA,GAAAb,EAgBS,UAhBTC,EAgBS;AAAA,eAfH;AAAA,MAAJ,KAAI0F;AAAA,IAAA,GACIyN,GAAS;AAAA,MAChB,OAAK;AAAA,QAAUjT,EAAAhG,EAAA,EAAO;AAAA;WAAyBgG,EAAAhG,EAAA,EAAO,QAAQ,GAAG4N,EAAA;AAAA,QAAA;AAAA,QAA0B5H,EAAArC,CAAA;AAAA,MAAA;AAAA,MAO3F,OAAOqC,EAAAvG,CAAA;AAAA,MACP,MAAMuG,EAAAmS,CAAA;AAAA,MACN,UAAUgB,EAAA,SAAcnT,EAAAkT,CAAA;AAAA,MACxB,SAAOnP;AAAA,IAAA;MAER3B,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICECqT,KAAgC;AAAA,EAC3C,wCAAwC;AAAA,EACxC,6CACE;AAAA,EAEF,6CAA6C;AAAA,EAC7C,8CAA8C;AAAA,EAC9C,6CAA6C;AAAA,EAE7C,4DACE;AAAA,EACF,4DACE;AAAA,EACF,4DACE;AAAA,EACF,6DACE;AAAA,EACF,iDACE;AAAA,EACF,2CACE;AAAA,EACF,uDACE;AACJ,GCtCMlN,KAAe,iBAEf,CAACmN,IAA6BC,EAAuB,IACzDxN,EAA6CI,EAAY,GCO9CqN,KAAwB,CAAC;AAAA,EACpC,YAAAJ;AAAA,EACA,UAAA7B;AACF,MAAiC;AAC/B,QAAMW,IAAQ9Z,EAAoC,oBAAI,KAAK,GACrDqb,IAAuBrb,EAA6B,EAAE,GACtDsb,IAAkBtb,EAAyB,EAAE,GAE7C4L,IAAe,CAAC2P,MAAkD;AACtE,UAAMC,IAAY,IAAI,IAAI1B,EAAM,KAAK;AAErC,QAAIyB,EAAY,SAAS,eAAe,CAACP,GAAY;AACnD,YAAMS,IAAgB,MAAM,KAAKD,EAAU,OAAA,CAAQ,EAAE;AAAA,QACnD,CAACE,MAAaA,EAAS,aAAa,CAACA,EAAS;AAAA,MAAA;AAGhD,MAAAF,EAAU,QAAQ,CAACE,MAAa;AAC9B,QAAKA,EAAS,eACZA,EAAS,YAAY,CAACD;AAAA,MAE1B,CAAC;AAAA,IACH;AAEA,QAAIF,EAAY,SAAS,cAAc,CAACP,GAAY;AAClD,YAAMW,IAAkBH,EAAU,IAAID,EAAY,IAAI;AAEtD,MAAII,KAAmB,CAACA,EAAgB,cACtCH,EAAU,IAAIG,EAAgB,MAAM;AAAA,QAClC,GAAGA;AAAA,QACH,WAAW,CAACA,EAAgB;AAAA,MAAA,CAC7B;AAAA,IAEL;AAEA,IAAA7B,EAAM,QAAQ0B,GACV,OAAOrC,EAAS,SAAU,cAC5BA,EAAS,MAAM,CAAC,GAAGqC,EAAU,OAAA,CAAQ,GAAGD,CAAW;AAAA,EAEvD;AAEA,SAAArV;AAAA,IACE,MAAMoV,EAAgB,MAAM;AAAA,IAC5B,YAAY;AACV,UAAIA,EAAgB,MAAM,QAAQ;AAChC,cAAMpP,GAAA;AACN,cAAM0P,IAAQ,CAAC,GAAGN,EAAgB,KAAK;AACvC,QAAAA,EAAgB,QAAQ,CAAA;AAExB,cAAME,IAAY,IAAI,IAAI1B,EAAM,KAAK;AACrC,QAAA8B,EAAM,QAAQ,CAACF,MAAaF,EAAU,IAAIE,EAAS,MAAMA,CAAQ,CAAC,GAClE5B,EAAM,QAAQ0B;AAAA,MAChB;AAAA,IACF;AAAA,IACA,EAAE,OAAO,OAAA;AAAA,EAAO,GAqBX;AAAA,IACL,OAAA1B;AAAA,IACA,UApBoC,CAACE,GAAM6B,IAAU,CAAA,OACjD7B,MAAS,eAAe,CAACqB,EAAqB,MAAMrB,CAAI,MAC1DqB,EAAqB,MAAMrB,CAAI,IAAI,IAEnCsB,EAAgB,MAAM,KAAK;AAAA,MACzB,MAAAtB;AAAA,MACA,WAAW,EAAQ6B,EAAQ;AAAA,MAC3B,YAAY,EAAQA,EAAQ;AAAA,IAAU,CACvC,IAGI;AAAA,MACL,MAAA7B;AAAA,MACA,UAAUpO;AAAA,MACV,GAAGiQ;AAAA,IAAA;AAAA,EAML;AAEJ;;;;GChCA3N,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;AApCD,UAAMhG,IAAQD,GAKRgU,IAAmB9b,EAA2B,IAAI,GAElD,EAAE,UAAA+b,GAAU,OAAAjC,EAAA,IAAUsB,GAAsB;AAAA,MAChD,UAAUvC,GAAM9Q,GAAO,UAAU;AAAA,MACjC,YAAYA,EAAM;AAAA,IAAA,CACnB,GAGKpH,IAAUoO,GAAS;AAAA,MACvB,QAAQ+K,EAAM;AAAA,MACd,UAAAiC;AAAA,MACA,YAAYhU,EAAM;AAAA,IAAA,CACnB;AAED,WAAAqS,GAAY,MAAM;AAChB,MAAAzZ,EAAQ,SAASmZ,EAAM,OACvBnZ,EAAQ,aAAaoH,EAAM;AAAA,IAC7B,CAAC,GAEDmT,GAA4Bva,CAAc,GAE1C8G,EAAa;AAAA,MACX,kBAAAqU;AAAA,IAAA,CACD,mBApDCpU,EAYM,OAZNC,EAYMC,EAAA,QAXU;AAAA,eACV;AAAA,MAAJ,KAAIkU;AAAA,MACH,OAAK;AAAA,QAAUjU,EAAAhG,EAAA,EAAO;AAAA;WAAiCgG,EAAAhG,EAAA,EAAO,UAAU,GAAGiG,EAAA,gBAAW;AAAA,QAAA;AAAA;MAMtF,OAAOA,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICNCoU,KAA6C;AAAA,EACxD,uCAAuC;AACzC,GCLMjO,KAAe,0BAEf,CAACkO,EAA0D,IAC/DtO,EAAiDI,EAAY;;;;;;;;;;;;;;;ACgB/D,UAAMhG,IAAQD,GAERoU,IAAef,GAAwBpN,EAAY,GACnD0M,IAAkBva,EAAS,MAAMgc,EAAa,UAAU,GAExDxB,IAAexa,EAAS,MAAM;AAClC,YAAM,EAAE,OAAAoB,GAAO,OAAOqZ,GAAQ,GAAGwB,MAAkBpU;AACnD,aAAO;AAAA,QACL,GAAGmU,EAAa,SAASnU,EAAM,MAAMoU,CAAa;AAAA,QAClD,OAAOpU,EAAM;AAAA,MAAA;AAAA,IAEjB,CAAC;AAED,WAAAkU,GAA+BvB,EAAa,KAAK,mBAlC/ChT,EAWM,OAAA;AAAA,MAVH,OAAKmC,EAAA;AAAA,QAAUhC,EAAAhG,EAAA,EAAO;AAAA,QAAiBkG,EAAM;AAAA;UAAwB,CAAAF,EAAAhG,EAAA,EAAO,QAAQ,GAAG4Y,EAAA,SAAmB3S,EAAA;AAAA,QAAA;AAAA;MAO1G,SAAOA,EAAA,KAAK;AAAA,IAAA;MAEbmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICLCwU,KAAgD;AAAA,EAC3D,0DACE;AACJ,GCNMrO,KAAe,mCAEf;AAAA,EACJsO;AAAA,EACAC;AACF,IAAI3O,EAA0DI,EAAY;;;;;;;;ACiB1E,UAAMhG,IAAQD,GAERoU,IAAef,GAAwBpN,EAAY,GACnD0M,IAAkBva,EAAS,MAAMgc,EAAa,UAAU,GAExDxB,IAAexa,EAAS,MAAM;AAClC,YAAM,EAAE,OAAAoB,GAAO,OAAOqZ,GAAQ,GAAGxS,MAASJ;AAC1C,aAAO;AAAA,QACL,GAAGmU,EAAa,SAAS,WAAW;AAAA,QACpC,GAAG/T;AAAA,MAAA;AAAA,IAEP,CAAC;AAED,WAAAkU,GAAwC3B,EAAa,KAAK,mBArCxDhT,EAWM,OAAA;AAAA,MAVH,OAAKmC,EAAA;AAAA,QAAUhC,EAAAhG,EAAA,EAAO;AAAA,QAAiBkG,EAAM;AAAA;UAAwB,CAAAF,EAAAhG,EAAA,EAAO,QAAQ,GAAG4Y,EAAA,SAAmB3S,EAAA;AAAA,QAAA;AAAA;MAO1G,SAAOA,EAAA,KAAK;AAAA,IAAA;MAEbmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICWNmG,KAAe,mCACfwO,KAAa;;;;;;;;;;;;AAMnB,UAAMxU,IAAQD,GAIR,EAAE,OAAAxG,GAAO,OAAOkb,GAAY,cAAcC,GAAe,GAAGtU,MAASJ,GAErE2U,IAAc1c,EAA8C,IAAI,GAEhEkc,IAAef,GAAwBpN,EAAY,GAEnD4O,IAAmBL,GAAoCvO,EAAY,GAEnEnC,IAAe,MAAM;AACzB,MAAA+Q,EAAiB,SAAS,EAAE,MAAMJ,IAAY,MAAMA,IAAY;AAAA,IAClE,GAEMK,IAA4B1c,EAAS,MAAM;AAC/C,YAAMsS,IAAO0J,EAAa,QAIpBrG,IAHa,MAAM,KAAKrD,EAAK,OAAA,CAAQ,EAAE;AAAA,QAC3C,CAACkJ,MAAaA,EAAS;AAAA,MAAA,IAE2B,SAAS;AAE7D,aAAO;AAAA,QACL,WAAW,MAAM,KAAKlJ,EAAK,OAAA,CAAQ,EAAE;AAAA,UACnC,CAACkJ,MAAaA,EAAS;AAAA,QAAA;AAAA,QAEzB,cAAA7F;AAAA,MAAA;AAAA,IAEJ,CAAC;AAED,WAAApO,EAAa;AAAA,MACX,aAAAiV;AAAA,IAAA,CACD,cA7DCnU,EAAA,GAAAC,EAUEqU,IAVFlV,EAUE;AAAA,eATI;AAAA,MAAJ,KAAI+U;AAAA,MACH,OAAO7U,EAAA2U,CAAA;AAAA,MACP,OAAO3U,EAAAvG,CAAA;AAAA,MACP,OAAOib;AAAA,MACP,eAAa1U,EAAAqU,CAAA,EAAa,cAAcrU,EAAA8U,CAAA,EAAiB;AAAA,MACzD,cAAYC,EAAA,MAA0B;AAAA,MACtC,iBAAeA,EAAA,MAA0B;AAAA,IAAA,GAClCzU,GAAI,EACX,UAAQyD,GAAY,GAAA,MAAA,IAAA,CAAA,SAAA,SAAA,eAAA,cAAA,eAAA,CAAA;AAAA;ICPnBmC,KAAe,cAEf,CAAC+O,IAA0BC,EAAoB,IACnDpP,EAA0CI,EAAY;;;GCHlDA,KAAe,uBAEf,CAACiP,IAA6BC,EAAuB,IACzDtP,EAA8CI,EAAY;;;;;;;;;;;;;;;;;;ACe5D,UAAMhG,IAAQD,GAERoV,IAAoBH,GAAqBhP,EAAY,GACrD0M,IAAkBva,EAAS,MAAMgd,EAAkB,UAAU,GAG7DxC,IAAexa,EAAS,MAAM;AAClC,YAAM,EAAE,OAAAoB,GAAO,GAAG6G,EAAA,IAASJ;AAC3B,aAAOI;AAAA,IACT,CAAC;AAED,WAAA6U,GAA4BtC,EAAa,KAAK,mBA/B5ChT,EAUM,OAAA;AAAA,MATH,OAAKmC,EAAA;AAAA,QAAUhC,EAAAhG,EAAA,EAAO;AAAA;UAA4B,CAAAgG,EAAAhG,EAAA,EAAO,QAAQ,GAAG4Y,EAAA,SAAmB3S,EAAA;AAAA,QAAA;AAAA;MAMvF,SAAOA,EAAA,KAAK;AAAA,IAAA;MAEbmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICJCuV,KAA6C;AAAA,EACxD,uDACE;AACJ;;;;GCaMpP,KAAe;;;;;;;AAMrB,UAAMhG,IAAQD,GAIRN,IAAWxH,EAAqD,IAAI,GAEpEkd,IAAoBH,GAAqBhP,EAAY,GAErD;AAAA,MACJ,OAAA9M;AAAA,MACA,YAAYmc;AAAA,MACZ,OAAOC;AAAA,MACP,GAAGC;AAAA,IAAA,IACDL,GAAwBlP,EAAY,GAElCwP,IAAmBrd,EAAS,MAAM;AACtC,YAAMsd,IAAY;AAAA,QAChB,MAAMN,EAAkB;AAAA,QACxB,UAAUA,EAAkB;AAAA,QAC5B,GAAGI;AAAA,MAAA;AAGL,aAAIJ,EAAkB,eACb;AAAA,QACL,kBAAkBA,EAAkB,iBAAiBjc;AAAA,QACrD,GAAGuc;AAAA,MAAA,IAIA;AAAA,QACL,WAAWN,EAAkB,UAAUjc;AAAA,QACvC,GAAGuc;AAAA,MAAA;AAAA,IAEP,CAAC;AAED,WAAA/V,EAAa;AAAA,MACX,UAAAD;AAAA,IAAA,CACD,mBAhECE,EAUM,OAAA;AAAA,MAVA,OAAKmC,EAAA,CAAGhC,EAAAhG,EAAA,EAAO,SAASgG,EAAAwV,CAAA,CAAa,CAAA;AAAA,MAAI,SAAOvV,EAAA,KAAK;AAAA,IAAA;MACzDoC,EAOE2C,IAPFlF,EAOE;AAAA,iBANI;AAAA,QAAJ,KAAIH;AAAA,QACH,QAAQK,EAAAhG,EAAA,EAAO,OAAOkG,EAAM,KAAK;AAAA,QAClC,MAAK;AAAA,QACJ,OAAOF,EAAA5G,CAAA;AAAA,QACP,eAAa4G,EAAAqV,CAAA,EAAkB,cAAcrV,EAAAuV,CAAA;AAAA,MAAA,GACtCG,EAAA,KAAgB,GAAA,MAAA,IAAA,CAAA,SAAA,SAAA,aAAA,CAAA;AAAA,MAE1B3T,EAA8B,QAAA;AAAA,QAAvB,OAAKC,EAAEhC,EAAAhG,EAAA,EAAO,KAAK;AAAA,MAAA;;;ICUjB4b,KAAoC;AAAA,EAC/C,2BAA2B;AAAA,EAC3B,8BAA8B;AAAA,EAC9B,0CAA0C;AAAA,EAC1C,2CACE;AAAA,EAEF,mCAAmC;AAAA,EACnC,oCAAoC;AAAA,EACpC,mCAAmC;AAAA,EACnC,mCAAmC;AAAA,EACnC,uCACE;AAAA,EAEF,kDACE;AAAA,EACF,kDACE;AAAA,EACF,kDACE;AAAA,EACF,mDACE;AAAA,EACF,kDAAkD;AACpD,GCoBAvP,KAAeC,EAAgB;AAAA,EAC7B,MAAMJ;AACR,CAAC;;;;;;;;;;;;AAxCD,UAAMhG,IAAQD,GAKRkB,IAAOC,GAIPyU,IAAgB1d,EAA2B,IAAI,GAQ/CW,IAAUoO,GAAS;AAAA,MACvB,IAAI,OAAO;AAAE,eAAOhH,EAAM;AAAA,MAAK;AAAA,MAC/B,IAAI,QAAQ;AAAE,eAAOA,EAAM;AAAA,MAAM;AAAA,MACjC,IAAI,eAAe;AAAE,eAAOA,EAAM;AAAA,MAAa;AAAA,MAC/C,IAAI,aAAa;AAAE,eAAOA,EAAM;AAAA,MAAW;AAAA,MAC3C,UAXmB,CAAC4B,MAAiB;AACrC,cAAMpH,IAASoH,EAAM;AACrB,QAAAX,EAAK,UAAUzG,EAAO,KAAK;AAAA,MAC7B;AAAA,IAQY,CACX;AAED,WAAAua,GAAyBnc,CAAc,GAEvC8G,EAAa;AAAA,MACX,eAAAiW;AAAA,IAAA,CACD,mBArDChW,EAaM,OAbNC,EAaMC,EAAA,QAZU;AAAA,eACV;AAAA,MAAJ,KAAI8V;AAAA,MACJ,MAAK;AAAA,MACJ,OAAK;AAAA,QAAU7V,EAAAhG,EAAA,EAAO;AAAA;WAA6BgG,EAAAhG,EAAA,EAAO,UAAU,GAAGiG,EAAA,gBAAW;AAAA,QAAA;AAAA;MAMlF,OAAOA,EAAA;AAAA,IAAA;MAERmC,EAAQrC,EAAA,QAAA,SAAA;AAAA,IAAA;;ICPC+V,KAAuC;AAAA,EAClD,oCAAoC;AACtC,GCUaC,KAAU;AAShB,SAASC,GAAQC,GAAUjC,GAA8B;AAGhE;AAGA,MAAA5M,KAAe;AAAA,EACb,SAAA4O;AAAA,EACA,SAAAD;AACF;"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/appearance.ts","../src/composables/useTheme.ts","../src/composables/useComponentTheme.ts","../src/composables/usePortal.ts","../src/composables/useFormValidation.ts","../src/composables/useThemeClassName.ts","../src/utils/index.ts","../src/components/BaseInput/BaseInput.vue","../src/components/VisuallyHiddenInput/VisuallyHiddenInput.vue","../src/components/Spinner/Spinner.vue","../src/components/Button/composables/useButtonAnimations.ts","../src/components/Button/Button.vue","../src/components/Button/Button.themes.ts","../src/components/Text/Text.themes.ts","../src/components/Input/Input.themes.ts","../src/components/Input/Input.vue","../src/components/TextArea/TextArea.vue","../src/components/TextArea/TextArea.themes.ts","../src/components/Text/Text.vue","../src/components/InlineInput/InlineInput.themes.ts","../src/components/InlineInput/InlineInput.vue","../src/components/Switcher/Switcher.vue","../src/components/Label/Label.vue","../src/components/Switcher/Switcher.themes.ts","../src/components/SelectButton/SelectButton.vue","../src/components/SelectButton/SelectButton.themes.ts","../src/lib/vue/createComponentContext.ts","../src/components/Select/Select.context.ts","../src/components/Select/Select.vue","../src/components/Select/Select.themes.ts","../src/components/Select/components/Option/Option.vue","../src/components/Select/components/Item/Item.vue","../src/components/Select/components/Item/Item.themes.ts","../src/components/Select/components/Arrow/Arrow.vue","../src/components/Select/components/Arrow/Arrow.themes.ts","../src/components/Select/components/Icon/Icon.vue","../src/components/Select/components/Icon/Icon.themes.ts","../src/components/List/List.vue","../src/components/List/List.themes.ts","../src/components/Select/components/Button/Button.vue","../src/composables/useOnOutsideClick.ts","../src/components/Select/components/List/SelectList.vue","../src/components/Select/components/Value/Value.vue","../src/components/MultiSelect/MultiSelect.context.ts","../src/components/MultiSelect/MultiSelect.vue","../src/components/MultiSelect/MultiSelect.themes.ts","../src/lib/utils.ts","../src/components/Checkbox/Checkbox.vue","../src/components/Label/LabelGroup.vue","../src/components/Label/Label.themes.ts","../src/components/Checkbox/Checkbox.themes.ts","../src/components/MultiSelect/components/Item/Item.vue","../src/components/MultiSelect/components/Item/Item.themes.ts","../src/components/MultiSelect/components/Group/Group.vue","../src/components/MultiSelect/components/Group/Group.themes.ts","../src/components/MultiSelect/components/Combobox/Combobox.vue","../src/components/MultiSelect/components/Combobox/Combobox.themes.ts","../src/components/MultiSelect/components/Search/Search.vue","../src/components/MultiSelect/components/Search/Search.themes.ts","../src/components/MultiSelect/components/Trigger/Trigger.vue","../src/components/MultiSelect/components/List/MultiSelectList.vue","../src/components/MultiSelect/components/All/All.vue","../src/components/MultiSelect/components/Value/Value.vue","../src/components/Portal/Portal.vue","../src/components/ContentBlock/ContentBlock.vue","../src/components/ContentBlock/ContentBlock.themes.ts","../src/components/Link/Link.vue","../src/components/Link/Link.themes.ts","../src/components/Spinner/Spinner.themes.ts","../src/components/Callout/Callout.vue","../src/icons/warning.svg","../src/icons/error.svg","../src/icons/success.svg","../src/icons/info.svg","../src/components/Callout/Callout.themes.ts","../src/components/Accordion/Accordion.context.ts","../src/components/Accordion/components/AccordionSingle/AccordionSingle.vue","../src/components/Accordion/components/AccordionMultiple/AccordionMultiple.vue","../src/components/Accordion/Accordion.vue","../src/icons/chevronDown.svg","../src/components/Accordion/components/Item/Item.vue","../src/components/Accordion/Accordion.themes.ts","../src/components/Accordion/components/Item/Item.themes.ts","../src/components/Accordion/index.ts","../src/components/FilterTabs/FilterTabs.context.ts","../src/components/FilterTabs/FilterTabs.vue","../src/components/FilterTabs/FilterTabs.themes.ts","../src/components/FilterTabs/components/ItemRoot/ItemRoot.context.ts","../src/components/FilterTabs/components/ItemRoot/ItemRoot.vue","../src/components/FilterTabs/components/ItemRoot/ItemRoot.themes.ts","../src/components/FilterTabs/components/Tab/Tab.vue","../src/components/FilterTabs/components/Tab/Tab.themes.ts","../src/components/CheckboxGroup/CheckboxGroup.context.ts","../src/components/CheckboxGroup/composables/useCheckboxGroupState.ts","../src/components/CheckboxGroup/CheckboxGroup.vue","../src/components/CheckboxGroup/CheckboxGroup.themes.ts","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.context.ts","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.vue","../src/components/CheckboxGroup/components/ItemRoot/ItemRoot.themes.ts","../src/components/CheckboxGroup/components/CheckboxSelectAll/ItemRootSelectAll.context.ts","../src/components/CheckboxGroup/components/CheckboxSelectAll/ItemRootSelectAll.vue","../src/components/CheckboxGroup/components/CheckboxSelectAll/CheckboxSelectAll.vue","../src/components/RadioGroup/RadioGroup.context.ts","../src/components/RadioGroup/components/ItemRoot/ItemRoot.context.ts","../src/components/RadioGroup/components/ItemRoot/ItemRoot.vue","../src/components/RadioGroup/components/ItemRoot/ItemRoot.themes.ts","../src/components/RadioGroup/components/Radio/Radio.vue","../src/components/RadioGroup/components/Radio/Radio.themes.ts","../src/components/RadioGroup/RadioGroup.vue","../src/components/RadioGroup/RadioGroup.themes.ts","../src/index.ts"],"sourcesContent":["export enum Appearance {\n /**\n * Standard theme\n */\n DEFAULT = 'default',\n /**\n * Alternative \"Dark\" Theme\n */\n ALTERNATIVE = 'alternative',\n}\n\nexport const APPEARANCE_ATTRIBUTE_NAME = 'data-crm-ui-kit-theme'\nexport const DEFAULT_APPEARANCE = Appearance.DEFAULT","import { provide, inject, ref, computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\nimport type { ThemeConfig, ThemeMode } from '@/types/theme'\nimport { Appearance } from '@/lib/appearance'\n\n// Ключ для provide/inject\nexport const THEME_PROVIDER_KEY = Symbol('theme-provider')\n\n// Интерфейс контекста темы\nexport interface ThemeContext {\n themeConfig: Readonly<Ref<ThemeConfig>>\n appearance: Readonly<Ref<Appearance>>\n setTheme: (config: Partial<ThemeConfig>) => void\n setAppearance: (appearance: Appearance) => void\n toggleTheme: () => void\n}\n\n// Функция для предоставления темы\nexport function provideTheme(initialConfig?: Partial<ThemeConfig>): ThemeContext {\n const themeConfig = ref<ThemeConfig>({\n mode: 'light',\n customVariables: {},\n ...initialConfig\n })\n\n const appearance = computed<Appearance>(() => {\n return themeConfig.value.mode === 'dark' ? Appearance.ALTERNATIVE : Appearance.DEFAULT\n })\n\n const setTheme = (config: Partial<ThemeConfig>) => {\n themeConfig.value = {\n ...themeConfig.value,\n ...config\n }\n updateDocumentTheme(themeConfig.value)\n }\n\n const setAppearance = (newAppearance: Appearance) => {\n const mode: ThemeMode = newAppearance === Appearance.ALTERNATIVE ? 'dark' : 'light'\n setTheme({ mode })\n }\n\n const toggleTheme = () => {\n const newMode: ThemeMode = themeConfig.value.mode === 'light' ? 'dark' : 'light'\n setTheme({ mode: newMode })\n }\n\n // Инициализация темы в DOM\n updateDocumentTheme(themeConfig.value)\n\n const context: ThemeContext = {\n themeConfig: readonly(themeConfig),\n appearance: readonly(appearance),\n setTheme,\n setAppearance,\n toggleTheme\n }\n\n provide(THEME_PROVIDER_KEY, context)\n return context\n}\n\n// Функция для использования темы\nexport function useTheme(): ThemeContext {\n const context = inject<ThemeContext>(THEME_PROVIDER_KEY)\n\n if (!context) {\n throw new Error(\n 'useTheme must be used within a component that has provideTheme() called in a parent component'\n )\n }\n\n return context\n}\n\n// Функция для обновления DOM с темой\nfunction updateDocumentTheme(config: ThemeConfig) {\n if (typeof document === 'undefined') return\n\n // Устанавливаем data-theme атрибут\n document.documentElement.setAttribute('data-theme', config.mode)\n\n // Устанавливаем кастомные CSS переменные\n if (config.customVariables) {\n Object.entries(config.customVariables).forEach(([property, value]) => {\n document.documentElement.style.setProperty(property, value)\n })\n }\n}\n\n// Хук для получения текущего режима темы\nexport function useThemeMode(): Readonly<Ref<ThemeMode>> {\n const { themeConfig } = useTheme()\n return computed(() => themeConfig.value.mode)\n}\n\n// Хук для CSS переменных темы\nexport function useThemeVariables(): Readonly<Ref<Record<string, string>>> {\n const { themeConfig } = useTheme()\n return computed(() => themeConfig.value.customVariables || {})\n}","import { computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\nimport type { ComponentThemeVariables, CSSVariables } from '@/types/theme'\n\n// Композиционная функция для работы с темами компонентов\nexport function useComponentTheme<T extends ComponentThemeVariables>(\n componentName: string,\n theme: T | Ref<T>\n) {\n const themeRef = typeof theme === 'object' && 'value' in theme ? theme : computed(() => theme)\n\n // Генерируем CSS переменные с префиксом компонента\n const cssVariables = computed<CSSVariables>(() => {\n const vars: CSSVariables = {}\n\n Object.entries(themeRef.value).forEach(([key, value]) => {\n const cssVarName = `--crm-ui-kit-${componentName}-${key}` as keyof CSSVariables\n vars[cssVarName] = String(value)\n })\n\n return vars\n })\n\n // Объект стилей для привязки к элементу\n const styleVars = computed(() => {\n const styles: Record<string, string> = {}\n\n Object.entries(cssVariables.value).forEach(([property, value]) => {\n styles[property] = value\n })\n\n return styles\n })\n\n return {\n cssVariables: readonly(cssVariables),\n styleVars: readonly(styleVars)\n }\n}\n\n// Хелпер для создания темы компонента\nexport function createComponentTheme<T extends ComponentThemeVariables>(\n componentName: string,\n defaultTheme: T\n) {\n return function useTheme(customTheme?: Partial<T>) {\n const theme = computed(() => ({\n ...defaultTheme,\n ...customTheme\n }))\n\n return useComponentTheme(componentName, theme)\n }\n}","import { ref, readonly, onMounted, onUnmounted } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\ninterface UsePortalReturn {\n portalTarget: DeepReadonly<Ref<HTMLElement | undefined>>\n isReady: DeepReadonly<Ref<boolean>>\n}\n\n// Композиционная функция для работы с порталами (телепортацией)\nexport function usePortal(targetSelector?: string): UsePortalReturn {\n const portalTarget = ref<HTMLElement>()\n const isReady = ref(false)\n\n const createPortalTarget = (selector: string) => {\n if (typeof document === 'undefined') return null\n\n let target = document.querySelector<HTMLElement>(selector)\n\n if (!target) {\n // Если элемент не найден, создаем его\n target = document.createElement('div')\n target.setAttribute('id', selector.replace('#', ''))\n document.body.appendChild(target)\n }\n\n return target\n }\n\n onMounted(() => {\n if (typeof document === 'undefined') return\n\n if (targetSelector) {\n portalTarget.value = createPortalTarget(targetSelector) || document.body\n } else {\n portalTarget.value = document.body\n }\n\n isReady.value = true\n })\n\n onUnmounted(() => {\n // Очищаем созданные нами элементы при размонтировании\n if (\n targetSelector &&\n portalTarget.value &&\n portalTarget.value !== document.body &&\n portalTarget.value.children.length === 0\n ) {\n portalTarget.value.remove()\n }\n })\n\n return {\n portalTarget: readonly(portalTarget),\n isReady: readonly(isReady)\n }\n}\n\n// Хелпер для создания уникального селектора портала\nexport function createPortalId(prefix: string = 'amocrm-portal'): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`\n}\n\n// Предустановленные порталы для различных целей\nexport const PORTAL_TARGETS = {\n MODAL: '#amocrm-modal-portal',\n TOOLTIP: '#amocrm-tooltip-portal',\n DROPDOWN: '#amocrm-dropdown-portal',\n NOTIFICATION: '#amocrm-notification-portal'\n} as const\n\n// Композиционная функция для модальных окон\nexport function useModalPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.MODAL)\n}\n\n// Композиционная функция для тултипов\nexport function useTooltipPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.TOOLTIP)\n}\n\n// Композиционная функция для выпадающих списков\nexport function useDropdownPortal(): UsePortalReturn {\n return usePortal(PORTAL_TARGETS.DROPDOWN)\n}","import { ref, computed, readonly } from 'vue'\nimport type { Ref } from 'vue'\n\n// Тип для правила валидации\nexport type ValidationRule<T = any> = (value: T) => string | true\n\n// Интерфейс для состояния валидации поля\nexport interface FieldValidation<T = any> {\n value: Ref<T>\n error: Ref<string | null>\n isValid: Ref<boolean>\n isDirty: Ref<boolean>\n validate: () => boolean\n clearError: () => void\n touch: () => void\n}\n\n// Композиционная функция для валидации одного поля\nexport function useFieldValidation<T>(\n initialValue: T,\n rules: ValidationRule<T>[] = []\n): FieldValidation<T> {\n const value = ref<T>(initialValue) as Ref<T>\n const error = ref<string | null>(null)\n const isDirty = ref(false)\n\n const isValid = computed(() => error.value === null)\n\n const validate = (): boolean => {\n for (const rule of rules) {\n const result = rule(value.value)\n if (result !== true) {\n error.value = result\n return false\n }\n }\n error.value = null\n return true\n }\n\n const clearError = () => {\n error.value = null\n }\n\n const touch = () => {\n isDirty.value = true\n }\n\n return {\n value,\n error: readonly(error),\n isValid: readonly(isValid),\n isDirty: readonly(isDirty),\n validate,\n clearError,\n touch\n }\n}\n\n// Композиционная функция для валидации формы\nexport function useFormValidation<T extends Record<string, any>>(\n initialValues: T,\n rules: Partial<Record<keyof T, ValidationRule<T[keyof T]>[]>> = {}\n) {\n const fields = {} as Record<keyof T, FieldValidation<T[keyof T]>>\n const errors = ref<Partial<Record<keyof T, string>>>({})\n\n // Создаем поля валидации для каждого значения\n Object.keys(initialValues).forEach(<K extends keyof T>(key: K) => {\n const fieldRules = rules[key] || []\n fields[key] = useFieldValidation(initialValues[key], fieldRules)\n })\n\n const isFormValid = computed(() => {\n return Object.values(fields).every(field => field.isValid.value)\n })\n\n const hasErrors = computed(() => {\n return Object.values(fields).some(field => field.error.value !== null)\n })\n\n const validateField = <K extends keyof T>(fieldName: K): boolean => {\n const field = fields[fieldName]\n if (!field) return true\n\n const isValid = field.validate()\n if (!isValid && field.error.value) {\n errors.value[fieldName] = field.error.value\n } else {\n delete errors.value[fieldName]\n }\n return isValid\n }\n\n const validateForm = (): boolean => {\n let isValid = true\n const newErrors: Partial<Record<keyof T, string>> = {}\n\n Object.keys(fields).forEach(<K extends keyof T>(key: K) => {\n const fieldValid = validateField(key)\n if (!fieldValid && fields[key].error.value) {\n newErrors[key] = fields[key].error.value\n isValid = false\n }\n })\n\n errors.value = newErrors\n return isValid\n }\n\n const clearErrors = () => {\n Object.values(fields).forEach(field => field.clearError())\n errors.value = {}\n }\n\n const clearFieldError = <K extends keyof T>(fieldName: K) => {\n fields[fieldName]?.clearError()\n delete errors.value[fieldName]\n }\n\n const setFieldError = <K extends keyof T>(fieldName: K, error: string) => {\n if (fields[fieldName]) {\n fields[fieldName].error.value = error\n errors.value[fieldName] = error\n }\n }\n\n const getFieldValue = <K extends keyof T>(fieldName: K): T[K] => {\n return fields[fieldName]?.value.value as T[K]\n }\n\n const setFieldValue = <K extends keyof T>(fieldName: K, value: T[K]) => {\n if (fields[fieldName]) {\n fields[fieldName].value.value = value\n }\n }\n\n return {\n fields,\n errors: readonly(errors),\n isFormValid: readonly(isFormValid),\n hasErrors: readonly(hasErrors),\n validateField,\n validateForm,\n clearErrors,\n clearFieldError,\n setFieldError,\n getFieldValue,\n setFieldValue\n }\n}\n\n// Предустановленные правила валидации\nexport const ValidationRules = {\n required: (message = 'Поле обязательно для заполнения'): ValidationRule => {\n return (value: any) => {\n if (value === null || value === undefined || value === '') {\n return message\n }\n return true\n }\n },\n\n minLength: (min: number, message?: string): ValidationRule<string> => {\n return (value: string) => {\n if (value && value.length < min) {\n return message || `Минимальная длина: ${min} символов`\n }\n return true\n }\n },\n\n maxLength: (max: number, message?: string): ValidationRule<string> => {\n return (value: string) => {\n if (value && value.length > max) {\n return message || `Максимальная длина: ${max} символов`\n }\n return true\n }\n },\n\n email: (message = 'Некорректный email адрес'): ValidationRule<string> => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return (value: string) => {\n if (value && !emailRegex.test(value)) {\n return message\n }\n return true\n }\n },\n\n pattern: (regex: RegExp, message = 'Некорректный формат'): ValidationRule<string> => {\n return (value: string) => {\n if (value && !regex.test(value)) {\n return message\n }\n return true\n }\n }\n}","import { ref, watch, onBeforeUnmount } from 'vue'\nimport type { CrmUiKitCSSProperties } from '@/lib/theme'\n\nconst DEFAULT_PREFIX = 'crm-ui-kit-theme'\n\nlet counter = 0\n\nconst stylesMap = new Map<object, { className: string; styleElement: HTMLStyleElement; refCount: number }>()\n\nconst createClass = <T extends CrmUiKitCSSProperties>(newTheme: T) => {\n const className = `${DEFAULT_PREFIX}-${++counter}`\n const styleElement = document.createElement('style')\n const stylesString = Object.entries(newTheme)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n ')\n\n styleElement.textContent = `.${className} {\\n ${stylesString}\\n}`\n document.head.appendChild(styleElement)\n\n return { className, styleElement }\n}\n\nexport const useThemeClassName = <T extends CrmUiKitCSSProperties>(\n theme: T\n) => {\n const className = ref<string>('')\n let currentTheme: object = theme\n let currentEntry: { className: string; styleElement: HTMLStyleElement; refCount: number } | undefined\n\n const updateClassName = (newTheme: T) => {\n // Уменьшаем счётчик для предыдущей темы\n if (currentEntry) {\n currentEntry.refCount--\n if (currentEntry.refCount === 0) {\n // Удаляем стиль из DOM, если больше никто не использует\n currentEntry.styleElement.remove()\n stylesMap.delete(currentTheme)\n }\n }\n\n currentTheme = newTheme\n const existedEntry = stylesMap.get(newTheme)\n\n if (existedEntry) {\n // Увеличиваем счётчик ссылок\n existedEntry.refCount++\n className.value = existedEntry.className\n currentEntry = existedEntry\n } else {\n // Создаём новый класс\n const { className: themeClassName, styleElement } = createClass(newTheme)\n const entry = { className: themeClassName, styleElement, refCount: 1 }\n stylesMap.set(newTheme, entry)\n className.value = themeClassName\n currentEntry = entry\n }\n }\n\n // Инициализация\n updateClassName(theme)\n\n // Следим за изменениями темы\n watch(() => theme, updateClassName)\n\n // Очистка при размонтировании\n onBeforeUnmount(() => {\n if (currentEntry) {\n currentEntry.refCount--\n if (currentEntry.refCount === 0) {\n currentEntry.styleElement.remove()\n stylesMap.delete(currentTheme)\n }\n }\n })\n\n return className\n}\n","// Утилитарные функции\n\n// Функция-заглушка (аналог noop из React версии)\nexport const noop = () => {}\n\n// Функция для генерации уникальных ID\nexport function generateId(prefix: string = 'amocrm'): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`\n}\n\n// Функция для работы с CSS классами (аналог classnames)\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\n// Функция для debounce\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>\n\n return function executedFunction(...args: Parameters<T>) {\n const later = () => {\n clearTimeout(timeout)\n func(...args)\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n }\n}\n\n// Функция для throttle\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean\n\n return function (this: unknown, ...args: Parameters<T>) {\n if (!inThrottle) {\n func.apply(this, args)\n inThrottle = true\n setTimeout(() => (inThrottle = false), limit)\n }\n }\n}\n\n// Функция для проверки, является ли значение объектом\nexport function isObject(value: any): value is Record<string, any> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\n// Функция для глубокого слияния объектов\nexport function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isObject(sourceValue) && isObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue as Partial<typeof targetValue>)\n } else {\n result[key] = sourceValue as T[Extract<keyof T, string>]\n }\n }\n }\n\n return result\n}\n\n// Функция для проверки поддержки браузером определенной функции\nexport function isSupported(feature: string): boolean {\n if (typeof window === 'undefined') return false\n\n switch (feature) {\n case 'IntersectionObserver':\n return 'IntersectionObserver' in window\n case 'ResizeObserver':\n return 'ResizeObserver' in window\n case 'MutationObserver':\n return 'MutationObserver' in window\n default:\n return false\n }\n}","<template>\n <input\n v-bind=\"$attrs\"\n ref=\"inputRef\"\n :class=\"[\n styles.input,\n {\n [styles.placeholder_visible]: isPlaceholderVisibleOnFocus\n }\n ]\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadonly\"\n />\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref } from 'vue'\nimport type { BaseInputProps } from './BaseInput.types'\nimport styles from './BaseInput.module.scss'\n\ntype Props = BaseInputProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n})\n\nconst inputRef = ref<HTMLInputElement | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <BaseInput\n ref=\"inputRef\"\n :class=\"styles.input\"\n v-bind=\"inputProps\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, onMounted, watch } from 'vue'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport type { VisuallyHiddenInputProps } from './VisuallyHiddenInput.types'\nimport styles from './VisuallyHiddenInput.module.scss'\n\nconst props = defineProps<VisuallyHiddenInputProps>()\n\nconst inputRef = ref<InstanceType<typeof BaseInput> | null>(null)\n\nconst inputProps = computed(() => {\n const { isChecked, isDefaultChecked, ...rest } = props\n\n if (isChecked !== undefined) {\n return { checked: isChecked, ...rest }\n }\n\n return rest\n})\n\nconst getInputElement = (): HTMLInputElement | null => {\n return inputRef.value?.inputRef ?? null\n}\n\nonMounted(() => {\n if (props.isDefaultChecked) {\n const el = getInputElement()\n if (el) el.checked = true\n }\n})\n\nif (props.isChecked !== undefined) {\n watch(() => props.isChecked, (val) => {\n const el = getInputElement()\n if (el) el.checked = !!val\n })\n}\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <span\n :class=\"[\n styles.spinner,\n { [styles.centered]: isCentered }\n ]\"\n :style=\"theme || {}\"\n v-bind=\"$attrs\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport type { SpinnerProps } from './Spinner.types'\nimport styles from './Spinner.module.scss'\n\ntype Props = SpinnerProps & {}\n\nwithDefaults(defineProps<Props>(), {\n isCentered: false,\n theme: undefined\n})\n</script>","import { ref } from 'vue'\n\n// Vue версия useShowInvalidAnimation хука из React\nexport function useShowInvalidAnimation() {\n const shouldShowInvalidAnimation = ref(false)\n\n // Функция для запуска анимации ошибки - логика идентична React версии\n const showInvalidAnimation = (onAnimationEnd = () => {}) => {\n shouldShowInvalidAnimation.value = true\n\n setTimeout(() => {\n shouldShowInvalidAnimation.value = false\n onAnimationEnd()\n }, 400) // Тот же таймаут 400мс\n }\n\n return {\n shouldShowInvalidAnimation,\n showInvalidAnimation\n }\n}\n\n// Vue версия useShowSuccessfulState хука из React\nexport function useShowSuccessfulState() {\n const shouldShowSuccessfulState = ref(false)\n\n // Функция для показа состояния успеха - логика идентична React версии\n const showSuccessfulState = (onAnimationEnd = () => {}) => {\n shouldShowSuccessfulState.value = true\n\n setTimeout(() => {\n shouldShowSuccessfulState.value = false\n onAnimationEnd()\n }, 1500) // Тот же таймаут 1500мс\n }\n\n return {\n shouldShowSuccessfulState,\n showSuccessfulState\n }\n}","<template>\n <button\n v-bind=\"$attrs\"\n :type=\"type\"\n :class=\"[\n styles.button,\n {\n [styles.invalid]: shouldShowInvalidAnimation,\n [styles.success]: shouldShowSuccessfulState,\n [styles.disabled]: isDisabled\n }\n ]\"\n :style=\"theme\"\n :disabled=\"(isDisabled || isLoading) && !isClickableWhileDisabled\"\n @click=\"handleClick\"\n >\n <span :class=\"styles.content\">\n <!-- Состояние успеха -->\n <span v-if=\"shouldShowSuccessfulState\">\n {{ successfulStateText }}\n <slot v-if=\"!successfulStateText\" />\n </span>\n\n <!-- Состояние загрузки -->\n <span v-else-if=\"isLoading\" :class=\"styles.spinner_container\">\n <Spinner\n :theme=\"isDisabled ? spinnerThemes.disabledTheme : spinnerThemes.defaultTheme\"\n :is-centered=\"true\"\n />\n </span>\n\n <!-- Обычное состояние -->\n <template v-else>\n <span v-if=\"before\" :class=\"styles.before\">\n <slot name=\"before\">{{ before }}</slot>\n </span>\n\n <span>\n <slot />\n </span>\n\n <span v-if=\"after\" :class=\"styles.after\">\n <slot name=\"after\">{{ after }}</slot>\n </span>\n </template>\n </span>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Spinner from '../Spinner/Spinner.vue'\nimport { useShowInvalidAnimation, useShowSuccessfulState } from './composables/useButtonAnimations'\nimport type { ButtonProps } from './Button.types'\nimport styles from './Button.module.scss'\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n isLoading: false,\n isDisabled: false,\n isClickableWhileDisabled: false\n})\n\nconst emit = defineEmits<{\n (e: 'click', event: MouseEvent): void\n}>()\n\nconst { shouldShowInvalidAnimation, showInvalidAnimation } = useShowInvalidAnimation()\nconst { shouldShowSuccessfulState, showSuccessfulState } = useShowSuccessfulState()\n\ndefineExpose({ showInvalidAnimation, showSuccessfulState })\n\n// Mapping тем для Spinner - точно как в React версии\nconst spinnerThemes = computed(() => {\n const defaultTheme = {\n '--crm-ui-kit-spinner-border-color': props.theme?.['--crm-ui-kit-button-spinner-border-color'],\n '--crm-ui-kit-spinner-border-width': props.theme?.['--crm-ui-kit-button-spinner-border-width'],\n '--crm-ui-kit-spinner-circle-size': props.theme?.['--crm-ui-kit-button-spinner-circle-size'],\n '--crm-ui-kit-spinner-border-style': props.theme?.['--crm-ui-kit-button-spinner-border-style'],\n }\n\n const disabledTheme = {\n ...defaultTheme,\n '--crm-ui-kit-spinner-border-color': props.theme?.['--crm-ui-kit-button-spinner-disabled-border-color'],\n }\n\n return { defaultTheme, disabledTheme }\n})\n\n// Обработка клика - идентична React версии\nconst handleClick = (event: MouseEvent) => {\n // Если кнопка disabled и не clickableWhileDisabled - не вызываем onClick\n if (props.isDisabled && !props.isClickableWhileDisabled) {\n return\n }\n\n if (props.isLoading) {\n return\n }\n\n emit('click', event)\n}\n</script>","// Типы для системы тем Button\ntype ButtonThemeKey =\n | '--crm-ui-kit-button-z-index'\n | '--crm-ui-kit-button-height'\n | '--crm-ui-kit-button-color'\n | '--crm-ui-kit-button-font-size'\n | '--crm-ui-kit-button-line-height'\n | '--crm-ui-kit-button-font-weight'\n | '--crm-ui-kit-button-padding'\n | '--crm-ui-kit-button-elements-spacing'\n | '--crm-ui-kit-button-sibling-element-spacing'\n | '--crm-ui-kit-button-border-width'\n | '--crm-ui-kit-button-border-color'\n | '--crm-ui-kit-button-border-style'\n | '--crm-ui-kit-button-border-radius'\n | '--crm-ui-kit-button-background-color'\n | '--crm-ui-kit-button-disabled-opacity'\n | '--crm-ui-kit-button-disabled-color'\n | '--crm-ui-kit-button-disabled-background-color'\n | '--crm-ui-kit-button-disabled-border-color'\n | '--crm-ui-kit-button-spinner-disabled-border-color'\n | '--crm-ui-kit-button-hover-color'\n | '--crm-ui-kit-button-hover-background-color'\n | '--crm-ui-kit-button-hover-border-width'\n | '--crm-ui-kit-button-hover-border-color'\n | '--crm-ui-kit-button-hover-border-style'\n | '--crm-ui-kit-button-hover-border-radius'\n | '--crm-ui-kit-button-success-color'\n | '--crm-ui-kit-button-success-background-color'\n | '--crm-ui-kit-button-success-hover-background-color'\n | '--crm-ui-kit-button-success-border-color'\n | '--crm-ui-kit-button-spinner-border-color'\n | '--crm-ui-kit-button-spinner-circle-size'\n | '--crm-ui-kit-button-spinner-border-width'\n | '--crm-ui-kit-button-spinner-border-style';\n\nexport type ButtonThemeType = {\n [K in ButtonThemeKey]: string;\n};\n\n// Базовые значения темы Button\nconst ButtonBaseThemeValues = {\n '--crm-ui-kit-button-z-index': '1',\n '--crm-ui-kit-button-height': '36px',\n '--crm-ui-kit-button-elements-spacing': '4px',\n '--crm-ui-kit-button-font-size': '14px',\n '--crm-ui-kit-button-line-height': '14px',\n '--crm-ui-kit-button-font-weight': 'bold',\n '--crm-ui-kit-button-sibling-element-spacing': '7px',\n '--crm-ui-kit-button-disabled-opacity': 'var(--crm-ui-kit-disabled-opacity)',\n '--crm-ui-kit-button-padding': '0px 10px',\n\n '--crm-ui-kit-button-border-width': '1px',\n '--crm-ui-kit-button-border-style': 'solid',\n '--crm-ui-kit-button-border-radius': '3px',\n\n '--crm-ui-kit-button-hover-border-width': '1px',\n '--crm-ui-kit-button-hover-border-style': 'solid',\n '--crm-ui-kit-button-hover-border-radius': '3px',\n\n '--crm-ui-kit-button-success-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-success-background-color': 'var(--crm-ui-kit-color-mustard-yellow)',\n '--crm-ui-kit-button-success-hover-background-color': 'var(--crm-ui-kit-color-amber)',\n '--crm-ui-kit-button-success-border-color': 'var(--crm-ui-kit-color-goldenrod)',\n\n '--crm-ui-kit-button-spinner-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n '--crm-ui-kit-button-spinner-disabled-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n '--crm-ui-kit-button-spinner-border-width': '2px',\n '--crm-ui-kit-button-spinner-circle-size': '16px',\n '--crm-ui-kit-button-spinner-border-style': 'solid',\n}\n\n// Нейтральная тема Button - адаптирована под наши CSS переменные\nexport const ButtonNeutralTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-button-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-disabled-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-button-disabled-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-hover-background-color': 'var(--crm-ui-kit-palette-button-classic-hover-background)',\n '--crm-ui-kit-button-hover-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n}\n\n// Основная тема Button\nexport const ButtonPrimaryTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-border-color': 'var(--crm-ui-kit-color-cerulean-blue)',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-button-disabled-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-button-disabled-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-button-background-color': 'var(--crm-ui-kit-palette-active-element-900)',\n\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-hover-background-color': 'var(--crm-ui-kit-color-azure-blue)',\n '--crm-ui-kit-button-hover-border-color': 'var(--crm-ui-kit-color-cerulean-blue)',\n\n '--crm-ui-kit-button-spinner-border-color': 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-button-spinner-disabled-border-color': 'var(--crm-ui-kit-color-bright-blue)',\n}\n\n// Вторичная тема Button\nexport const ButtonSecondaryTheme: ButtonThemeType = {\n ...ButtonBaseThemeValues,\n '--crm-ui-kit-button-height': '30px',\n '--crm-ui-kit-button-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-button-padding': '0px 8px',\n '--crm-ui-kit-button-border-color': 'transparent',\n '--crm-ui-kit-button-background-color': 'inherit',\n\n '--crm-ui-kit-button-disabled-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-button-disabled-background-color': 'inherit',\n '--crm-ui-kit-button-disabled-border-color': 'transparent',\n\n '--crm-ui-kit-button-hover-background-color': 'inherit',\n '--crm-ui-kit-button-hover-border-color': 'transparent',\n '--crm-ui-kit-button-hover-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n}","type TextThemeKey =\n | '--crm-ui-kit-text-color'\n | '--crm-ui-kit-text-font'\n | '--crm-ui-kit-text-size-s-font-size'\n | '--crm-ui-kit-text-size-s-line-height'\n | '--crm-ui-kit-text-size-m-font-size'\n | '--crm-ui-kit-text-size-m-line-height'\n | '--crm-ui-kit-text-size-ms-font-size'\n | '--crm-ui-kit-text-size-ms-line-height'\n | '--crm-ui-kit-text-size-l-font-size'\n | '--crm-ui-kit-text-size-l-line-height'\n | '--crm-ui-kit-text-size-xl-font-size'\n | '--crm-ui-kit-text-size-xl-line-height';\n\nexport type TextTheme = {\n [K in TextThemeKey]: string;\n};\n\ntype TextBaseSizesThemeType = Omit<\n TextTheme,\n '--crm-ui-kit-text-color' | '--crm-ui-kit-text-font'\n>;\n\nexport const TextBaseSizesTheme: TextBaseSizesThemeType = {\n '--crm-ui-kit-text-size-s-font-size': '11px',\n '--crm-ui-kit-text-size-s-line-height': '15px',\n '--crm-ui-kit-text-size-m-font-size': '13px',\n '--crm-ui-kit-text-size-m-line-height': '20px',\n '--crm-ui-kit-text-size-ms-font-size': '13px',\n '--crm-ui-kit-text-size-ms-line-height': '15px',\n '--crm-ui-kit-text-size-l-font-size': '15px',\n '--crm-ui-kit-text-size-l-line-height': '20px',\n '--crm-ui-kit-text-size-xl-font-size': '18px',\n '--crm-ui-kit-text-size-xl-line-height': '24px',\n};\n\nexport const TextPrimaryTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextSecondaryLightTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-secondary-light)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextSecondaryDarkTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-palette-text-secondary-dark)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};\n\nexport const TextErrorTheme: TextTheme = {\n ...TextBaseSizesTheme,\n '--crm-ui-kit-text-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-text-font': 'PT Sans',\n};","import { TextPrimaryTheme, TextErrorTheme, type TextTheme } from '../Text/Text.themes'\n\ntype InputThemeKey =\n | '--crm-ui-kit-input-font-size'\n | '--crm-ui-kit-input-line-height'\n | '--crm-ui-kit-input-border-top'\n | '--crm-ui-kit-input-border-bottom'\n | '--crm-ui-kit-input-border-left'\n | '--crm-ui-kit-input-error-border-top'\n | '--crm-ui-kit-input-error-border-bottom'\n | '--crm-ui-kit-input-error-border-left'\n | '--crm-ui-kit-input-error-border-right'\n | '--crm-ui-kit-input-border-width'\n | '--crm-ui-kit-input-border-right'\n | '--crm-ui-kit-input-border-radius'\n | '--crm-ui-kit-input-color'\n | '--crm-ui-kit-input-padding-right'\n | '--crm-ui-kit-input-padding-left'\n | '--crm-ui-kit-input-height'\n | '--crm-ui-kit-input-width'\n | '--crm-ui-kit-input-after-min-width'\n | '--crm-ui-kit-input-error-color'\n | '--crm-ui-kit-input-error-description-color'\n | '--crm-ui-kit-input-error-description-offset-placement-right'\n | '--crm-ui-kit-input-error-description-offset-placement-bottom'\n | '--crm-ui-kit-input-error-placement-right-width'\n | '--crm-ui-kit-input-error-placeholder-color'\n | '--crm-ui-kit-input-disabled-opacity'\n | '--crm-ui-kit-input-disabled-background-color'\n | '--crm-ui-kit-input-disabled-border-top'\n | '--crm-ui-kit-input-disabled-border-bottom'\n | '--crm-ui-kit-input-disabled-border-left'\n | '--crm-ui-kit-input-disabled-border-right'\n | '--crm-ui-kit-input-disabled-color'\n | '--crm-ui-kit-input-placeholder-color'\n | '--crm-ui-kit-input-background-color';\n\nexport type InputTheme = {\n [K in InputThemeKey]: string;\n};\n\nconst InputBaseValues: Omit<\n InputTheme,\n | '--crm-ui-kit-input-border-top'\n | '--crm-ui-kit-input-border-bottom'\n | '--crm-ui-kit-input-border-left'\n | '--crm-ui-kit-input-border-right'\n | '--crm-ui-kit-input-error-border-top'\n | '--crm-ui-kit-input-error-border-bottom'\n | '--crm-ui-kit-input-error-border-left'\n | '--crm-ui-kit-input-error-border-right'\n | '--crm-ui-kit-input-disabled-border-top'\n | '--crm-ui-kit-input-disabled-border-bottom'\n | '--crm-ui-kit-input-disabled-border-left'\n | '--crm-ui-kit-input-disabled-border-right'\n> = {\n '--crm-ui-kit-input-disabled-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-error-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-input-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-input-error-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-input-error-description-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-input-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-input-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-input-border-width': '1px',\n '--crm-ui-kit-input-line-height': '19.42px',\n '--crm-ui-kit-input-disabled-opacity': '0.6',\n '--crm-ui-kit-input-disabled-background-color': 'transparent',\n '--crm-ui-kit-input-error-placement-right-width': '250px',\n '--crm-ui-kit-input-after-min-width': '36px',\n '--crm-ui-kit-input-error-description-offset-placement-bottom': '5px',\n '--crm-ui-kit-input-error-description-offset-placement-right': '10px',\n '--crm-ui-kit-input-border-radius': '3px',\n '--crm-ui-kit-input-padding-right': '9px',\n '--crm-ui-kit-input-padding-left': '9px',\n '--crm-ui-kit-input-height': '34px',\n '--crm-ui-kit-input-width': '100%',\n};\n\nexport const InputLightTheme: InputTheme = {\n ...InputBaseValues,\n '--crm-ui-kit-input-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-input-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-default)',\n\n '--crm-ui-kit-input-error-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-input-disabled-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n};\n\nexport const InputDarkTheme: InputTheme = {\n ...InputBaseValues,\n '--crm-ui-kit-input-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-input-error-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-input-error-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-input-disabled-border-top':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-bottom':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-left':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-input-disabled-border-right':\n 'var(--crm-ui-kit-input-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n};\n\nexport const InputInvalidTextTheme: TextTheme = TextErrorTheme;\n\n// Для обратной совместимости\nexport const InputPrimaryTheme = InputLightTheme;\nexport const InputSecondaryTheme = InputDarkTheme;","<template>\n <div :class=\"[styles.wrapper, $attrs.class]\" :style=\"effectiveTheme\">\n <div\n :class=\"[\n styles.input_wrapper,\n {\n [styles.invalid_description_right]: invalidDescriptionPlacement === 'right'\n }\n ]\"\n >\n <div\n :class=\"[\n styles.input_container,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <BaseInput\n v-bind=\"inputAttrs\"\n ref=\"inputRef\"\n :class=\"{ [styles.has_after]: Boolean(after) || Boolean($slots.after) }\"\n :is-disabled=\"isDisabled\"\n :is-readonly=\"isReadonly\"\n :is-placeholder-visible-on-focus=\"isPlaceholderVisibleOnFocus\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n <div v-if=\"after || $slots.after\" :class=\"styles.after\">\n <slot name=\"after\">{{ after }}</slot>\n </div>\n </div>\n <div\n v-if=\"isInvalid && invalidDescription\"\n :class=\"styles.invalid_description\"\n :style=\"invalidTextTheme\"\n >\n {{ invalidDescription }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport type { InputProps } from './Input.types'\n\ndefineOptions({ inheritAttrs: false })\nimport { InputInvalidTextTheme, InputLightTheme } from './Input.themes'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport styles from './Input.module.scss'\n\ntype Props = InputProps & {\n modelValue?: string | number | null\n}\n\nconst attrs = useAttrs()\nconst inputAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n if (props.modelValue !== undefined) {\n return { ...rest, value: props.modelValue }\n }\n return rest\n})\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'input', event: Event): void\n (e: 'change', event: Event): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n invalidDescriptionPlacement: 'bottom',\n modelValue: undefined,\n after: undefined,\n invalidDescription: undefined\n})\n\nconst emit = defineEmits<Emits>()\n\n// Ref для input элемента\nconst inputRef = ref<HTMLInputElement | null>(null)\n\n// Вычисляемая тема - используем переданную или дефолтную\nconst effectiveTheme = computed(() => props.theme || InputLightTheme)\n\n// Вычисляемая тема для текста ошибки\nconst invalidTextTheme = computed(() => ({\n ...InputInvalidTextTheme\n}))\n\n// Обработчики событий\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('update:modelValue', target.value)\n emit('input', event)\n}\n\nconst handleChange = (event: Event) => {\n emit('change', event)\n}\n\nconst handleFocus = (event: FocusEvent) => {\n emit('focus', event)\n}\n\nconst handleBlur = (event: FocusEvent) => {\n emit('blur', event)\n}\n\n// Экспорт ref для доступа к элементу input\ndefineExpose({\n inputRef\n})\n</script>\n\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <div\n :class=\"[\n styles.textarea_container,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <textarea\n v-bind=\"$attrs\"\n ref=\"textareaRef\"\n :class=\"[\n styles.textarea,\n {\n [styles.placeholder_visible]: isPlaceholderVisibleOnFocus\n }\n ]\"\n :style=\"{ maxHeight: maxHeight ? `${maxHeight}px` : undefined }\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadOnly\"\n :value=\"modelValue\"\n @input=\"handleInput\"\n />\n </div>\n <div\n v-if=\"isInvalid && invalidDescription\"\n :class=\"styles.invalid_description\"\n >\n {{ invalidDescription }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref, watch, nextTick } from 'vue'\nimport type { TextAreaProps } from './TextArea.types'\nimport styles from './TextArea.module.scss'\n\ntype Props = TextAreaProps & {\n modelValue?: string | number\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'autosize'): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n isAutosized: false,\n isPlaceholderVisibleOnFocus: false,\n modelValue: '',\n})\n\nconst emit = defineEmits<Emits>()\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null)\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLTextAreaElement\n emit('update:modelValue', target.value)\n\n if (props.isAutosized) {\n autoResize()\n }\n}\n\nconst autoResize = () => {\n if (!textareaRef.value || !props.isAutosized) return\n\n nextTick(() => {\n if (textareaRef.value) {\n textareaRef.value.style.height = 'auto'\n textareaRef.value.style.height = `${textareaRef.value.scrollHeight}px`\n emit('autosize')\n }\n })\n}\n\nwatch(\n () => props.modelValue,\n () => {\n if (props.isAutosized) {\n autoResize()\n }\n }\n)\n\nwatch(\n () => props.isAutosized,\n (newValue) => {\n if (newValue) {\n autoResize()\n }\n }\n)\n\ndefineExpose({\n textareaRef,\n})\n</script>\n","type TextAreaThemeKey =\n | '--crm-ui-kit-textarea-font-size'\n | '--crm-ui-kit-textarea-font-weight'\n | '--crm-ui-kit-textarea-line-height'\n | '--crm-ui-kit-textarea-border-color'\n | '--crm-ui-kit-textarea-border-width'\n | '--crm-ui-kit-textarea-border-style'\n | '--crm-ui-kit-textarea-border-radius'\n | '--crm-ui-kit-textarea-color'\n | '--crm-ui-kit-textarea-padding-top'\n | '--crm-ui-kit-textarea-padding-horizontal'\n | '--crm-ui-kit-textarea-padding-bottom'\n | '--crm-ui-kit-textarea-width'\n | '--crm-ui-kit-textarea-spacing'\n | '--crm-ui-kit-textarea-min-height'\n | '--crm-ui-kit-textarea-error-color'\n | '--crm-ui-kit-textarea-error-border-color'\n | '--crm-ui-kit-textarea-error-placeholder-color'\n | '--crm-ui-kit-textarea-disabled-color'\n | '--crm-ui-kit-textarea-disabled-background-color'\n | '--crm-ui-kit-textarea-disabled-border-color'\n | '--crm-ui-kit-textarea-disabled-opacity'\n | '--crm-ui-kit-textarea-placeholder-color'\n | '--crm-ui-kit-textarea-background-color'\n | '--crm-ui-kit-textarea-scrollbar-thumb-background'\n | '--crm-ui-kit-textarea-scrollbar-offset'\n\nexport type TextAreaTheme = {\n [K in TextAreaThemeKey]: string\n}\n\nconst TextAreaBaseValues: Omit<\n TextAreaTheme,\n '--crm-ui-kit-textarea-border-color'\n> = {\n '--crm-ui-kit-textarea-disabled-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-textarea-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-textarea-disabled-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-textarea-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-textarea-error-border-color':\n 'var(--crm-ui-kit-palette-border-error)',\n '--crm-ui-kit-textarea-error-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-textarea-error-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-textarea-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-textarea-disabled-background-color': 'transparent',\n '--crm-ui-kit-textarea-disabled-opacity': '0.6',\n '--crm-ui-kit-textarea-font-weight': '400',\n '--crm-ui-kit-textarea-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-textarea-line-height': '19px',\n '--crm-ui-kit-textarea-padding-top': '8px',\n '--crm-ui-kit-textarea-padding-horizontal': '9px',\n '--crm-ui-kit-textarea-padding-bottom': '7px',\n '--crm-ui-kit-textarea-border-radius': '3px',\n '--crm-ui-kit-textarea-spacing': '4px',\n '--crm-ui-kit-textarea-width': '100%',\n '--crm-ui-kit-textarea-min-height': '56px',\n '--crm-ui-kit-textarea-border-width': '1px',\n '--crm-ui-kit-textarea-border-style': 'solid',\n '--crm-ui-kit-textarea-scrollbar-thumb-background':\n 'var(--crm-ui-kit-palette-scrollbar-thumb-background)',\n '--crm-ui-kit-textarea-scrollbar-offset': '4px',\n}\n\nexport const TextareaLightTheme: TextAreaTheme = {\n ...TextAreaBaseValues,\n '--crm-ui-kit-textarea-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\n\nexport const TextareaDarkTheme: TextAreaTheme = {\n ...TextAreaBaseValues,\n '--crm-ui-kit-textarea-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n","<template>\n <span\n v-bind=\"$attrs\"\n :class=\"[\n styles.text,\n styles[size],\n {\n [styles.ellipsis]: isEllipsis,\n [styles.line_clamp]: isLineClampAllowed\n }\n ]\"\n :style=\"{\n ...(isLineClampAllowed && { WebkitLineClamp: maxRows }),\n ...theme,\n ...style\n }\"\n >\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { TextProps, TextSizes } from './Text.types'\nimport styles from './Text.module.scss'\n\ntype Props = TextProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n isEllipsis: false,\n maxRows: 1,\n style: () => ({})\n})\n\n// Проверяем валидность размера и выбрасываем ошибку если нужно\nconst validSizes: TextSizes[] = ['s', 'm', 'ms', 'l', 'xl']\nif (!validSizes.includes(props.size)) {\n throw new Error('Unknown size was presented')\n}\n\n// Определяем, разрешен ли line clamp\nconst isLineClampAllowed = computed(() => props.maxRows > 1)\n</script>","import { TextPrimaryTheme, type TextTheme } from '@/components/Text'\n\ntype InlineInputThemeKey =\n | '--crm-ui-kit-inline-input-font-size'\n | '--crm-ui-kit-inline-input-line-height'\n | '--crm-ui-kit-inline-input-color'\n | '--crm-ui-kit-inline-input-placeholder-color'\n | '--crm-ui-kit-inline-input-disabled-color'\n | '--crm-ui-kit-inline-input-width'\n | '--crm-ui-kit-inline-input-height'\n | '--crm-ui-kit-inline-input-padding-left'\n | '--crm-ui-kit-inline-input-padding-right'\n | '--crm-ui-kit-input-after-min-width'\n | '--crm-ui-kit-inline-input-border-color'\n | '--crm-ui-kit-inline-input-border-style'\n | '--crm-ui-kit-inline-input-border-width'\n | '--crm-ui-kit-inline-input-focus-border-color'\n | '--crm-ui-kit-inline-input-disabled-opacity'\n | '--crm-ui-kit-inline-input-invalid-description-offset'\n | '--crm-ui-kit-inline-input-invalid-description-padding-x'\n | '--crm-ui-kit-inline-input-invalid-description-padding-y'\n | '--crm-ui-kit-inline-input-invalid-description-width'\n | '--crm-ui-kit-inline-input-invalid-description-background-color'\n | '--crm-ui-kit-inline-input-invalid-description-border-radius'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-width'\n | '--crm-ui-kit-inline-input-invalid-description-color'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-top'\n | '--crm-ui-kit-inline-input-invalid-description-arrow-left'\n\nexport type InlineInputTheme = {\n [K in InlineInputThemeKey]: string\n}\n\nconst InlineInputBaseValues: Omit<\n InlineInputTheme,\n | '--crm-ui-kit-inline-input-border-color'\n | '--crm-ui-kit-inline-input-focus-border-color'\n> = {\n '--crm-ui-kit-inline-input-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-inline-input-placeholder-color':\n 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-inline-input-disabled-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-inline-input-invalid-description-color':\n 'var(--crm-ui-kit-color-white)',\n '--crm-ui-kit-inline-input-invalid-description-background-color':\n 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-inline-input-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-input-after-min-width': '36px',\n '--crm-ui-kit-inline-input-line-height': '20px',\n '--crm-ui-kit-inline-input-width': '100%',\n '--crm-ui-kit-inline-input-height': '19px',\n '--crm-ui-kit-inline-input-invalid-description-width': 'auto',\n '--crm-ui-kit-inline-input-disabled-opacity': '0.6',\n '--crm-ui-kit-inline-input-padding-left': '1px',\n '--crm-ui-kit-inline-input-padding-right': '1px',\n '--crm-ui-kit-inline-input-border-style': 'solid',\n '--crm-ui-kit-inline-input-border-width': '1px',\n '--crm-ui-kit-inline-input-invalid-description-offset': '5px',\n '--crm-ui-kit-inline-input-invalid-description-padding-x': '5px',\n '--crm-ui-kit-inline-input-invalid-description-padding-y': '9px',\n '--crm-ui-kit-inline-input-invalid-description-border-radius': '3px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-width': '4px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-top': '13px',\n '--crm-ui-kit-inline-input-invalid-description-arrow-left': '-5px',\n}\n\nexport const InlineInputPrimaryTheme: InlineInputTheme = {\n ...InlineInputBaseValues,\n '--crm-ui-kit-inline-input-border-color': 'transparent',\n '--crm-ui-kit-inline-input-focus-border-color':\n 'var(--crm-ui-kit-color-blueberry)',\n}\n\nexport const InlineInputPrimaryFocusedTheme: InlineInputTheme = {\n ...InlineInputBaseValues,\n '--crm-ui-kit-inline-input-border-color': 'var(--crm-ui-kit-color-blueberry)',\n '--crm-ui-kit-inline-input-focus-border-color':\n 'var(--crm-ui-kit-color-blueberry)',\n}\n\nexport const InlineInputInvalidTextTheme: TextTheme = {\n ...TextPrimaryTheme,\n '--crm-ui-kit-text-color':\n 'var(--crm-ui-kit-inline-input-invalid-description-color)',\n '--crm-ui-kit-text-size-m-line-height': '15px',\n}\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <div\n :class=\"[\n styles.input_container,\n {\n [styles.disabled]: isDisabled\n }\n ]\"\n >\n <BaseInput\n v-bind=\"inputAttrs\"\n ref=\"inputRef\"\n :class=\"{ [styles.has_after]: Boolean(after) }\"\n :is-disabled=\"isDisabled\"\n :is-readonly=\"isReadonly\"\n :is-placeholder-visible-on-focus=\"isPlaceholderVisibleOnFocus\"\n @input=\"handleInput\"\n />\n </div>\n <div v-if=\"after\" :class=\"styles.after_container\">\n <div :class=\"styles.after\">{{ after }}</div>\n </div>\n <div v-if=\"isInvalid\" :class=\"styles.invalid_description_container\">\n <Text size=\"m\" :theme=\"InlineInputInvalidTextTheme\" :class=\"styles.invalid_description\">\n {{ invalidDescription }}\n </Text>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { computed, ref, useAttrs } from 'vue'\nimport BaseInput from '@/components/BaseInput/BaseInput.vue'\nimport Text from '@/components/Text/Text.vue'\nimport type { InlineInputProps } from './InlineInput.types'\nimport { InlineInputInvalidTextTheme } from './InlineInput.themes'\nimport styles from './InlineInput.module.scss'\n\ntype Props = InlineInputProps & {\n modelValue?: string | number | null\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void\n (e: 'input', event: Event): void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n isPlaceholderVisibleOnFocus: false,\n modelValue: undefined,\n})\n\nconst emit = defineEmits<Emits>()\n\nconst attrs = useAttrs()\nconst inputAttrs = computed(() => {\n const { class: _, style: __, ...rest } = attrs\n if (props.modelValue !== undefined) {\n return { ...rest, value: props.modelValue }\n }\n return rest\n})\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('update:modelValue', target.value)\n emit('input', event)\n}\n\nconst inputRef = ref<InstanceType<typeof BaseInput> | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <div :class=\"styles.wrapper\" :style=\"theme\">\n <VisuallyHiddenInput\n v-bind=\"$attrs\"\n :id=\"props.id\"\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"checkbox\"\n :is-disabled=\"props.isDisabled\"\n :is-readonly=\"props.isReadonly\"\n :is-checked=\"props.isChecked\"\n :is-default-checked=\"props.isDefaultChecked\"\n :value=\"props.value\"\n :name=\"props.name\"\n />\n <span :class=\"styles.switcher\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport type { SwitcherProps } from './Switcher.types'\nimport styles from './Switcher.module.scss'\n\ntype Props = SwitcherProps\n\nconst props = defineProps<Props>()\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <label\n v-bind=\"$attrs\"\n ref=\"labelRef\"\n :class=\"[\n textPlacementClass,\n {\n [styles.centered]: isCentered\n }\n ]\"\n :style=\"theme\"\n >\n <div v-if=\"text || description || $slots.text || $slots.description\" :class=\"styles.text_container\">\n <span v-if=\"text || $slots.text\">\n <slot name=\"text\">{{ text }}</slot>\n </span>\n <div v-if=\"description || $slots.description\" :class=\"styles.text_description\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n <slot />\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { LabelProps } from './Label.types'\nimport styles from './Label.module.scss'\n\ntype Props = LabelProps\n\nconst props = withDefaults(defineProps<Props>(), {\n textPlacement: 'top',\n isCentered: false,\n})\n\nconst labelRef = ref<HTMLLabelElement | null>(null)\n\nconst textPlacementMap = {\n top: styles.top,\n left: styles.left,\n right: styles.right,\n}\n\nconst textPlacementClass = computed(() => textPlacementMap[props.textPlacement])\n\ndefineExpose({\n labelRef,\n})\n</script>\n","type SwitcherThemeKey =\n | '--crm-ui-kit-switcher-active-element-color'\n | '--crm-ui-kit-switcher-border-color'\n | '--crm-ui-kit-switcher-circle-size'\n | '--crm-ui-kit-switcher-line-border-radius'\n | '--crm-ui-kit-switcher-line-width'\n | '--crm-ui-kit-switcher-border-width'\n | '--crm-ui-kit-switcher-disabled-opacity'\n | '--crm-ui-kit-switcher-focus-visible-outline-color'\n | '--crm-ui-kit-switcher-focus-visible-outline-width'\n | '--crm-ui-kit-switcher-focus-visible-outline-style'\n | '--crm-ui-kit-switcher-focus-visible-outline-offset'\n | '--crm-ui-kit-switcher-focus-visible-border-radius'\n\nexport type SwitcherTheme = {\n [K in SwitcherThemeKey]: string\n}\n\nexport const SwitcherPrimaryTheme: SwitcherTheme = {\n '--crm-ui-kit-switcher-active-element-color':\n 'var(--crm-ui-kit-palette-active-element-900)',\n '--crm-ui-kit-switcher-border-color':\n 'var(--crm-ui-kit-palette-switcher-border-default)',\n\n '--crm-ui-kit-switcher-line-border-radius': '26px',\n '--crm-ui-kit-switcher-circle-size': '14px',\n '--crm-ui-kit-switcher-line-width': '9px',\n '--crm-ui-kit-switcher-border-width': '1px',\n '--crm-ui-kit-switcher-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n\n '--crm-ui-kit-switcher-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-switcher-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-switcher-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-switcher-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-switcher-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n","<template>\n <button\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n type=\"button\"\n :class=\"[\n styles.button,\n {\n [styles.invalid]: isInvalid,\n [styles.disabled]: isDisabled\n }\n ]\"\n :style=\"theme\"\n :disabled=\"isDisabled\"\n @click=\"handleClick\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectButtonProps } from './SelectButton.types'\nimport styles from './SelectButton.module.scss'\n\ntype Props = SelectButtonProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n isInvalid: false,\n isDisabled: false,\n})\n\nconst emit = defineEmits<{\n (e: 'toggle'): void\n}>()\n\nconst buttonRef = ref<HTMLButtonElement | null>(null)\n\nconst ENTER = 'Enter'\nconst SPACEBAR = 'Space'\n\nconst handleClick = () => {\n emit('toggle')\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if ([ENTER, SPACEBAR].includes(e.code)) {\n e.preventDefault()\n handleClick()\n }\n}\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","type SelectButtonThemeKey =\n | '--crm-ui-kit-select-button-background-color'\n | '--crm-ui-kit-select-button-padding'\n | '--crm-ui-kit-select-button-height'\n | '--crm-ui-kit-select-button-z-index'\n | '--crm-ui-kit-select-button-width'\n | '--crm-ui-kit-select-button-font-size'\n | '--crm-ui-kit-select-button-line-height'\n | '--crm-ui-kit-select-button-border-width'\n | '--crm-ui-kit-select-button-border-radius'\n | '--crm-ui-kit-select-button-border'\n | '--crm-ui-kit-select-button-disabled-border'\n | '--crm-ui-kit-select-button-disabled-border-opacity'\n | '--crm-ui-kit-select-button-disabled-border-color'\n | '--crm-ui-kit-select-button-error-border'\n | '--crm-ui-kit-select-button-error-color'\n | '--crm-ui-kit-select-button-focus-visible-border'\n | '--crm-ui-kit-select-button-color'\n\nexport type SelectButtonThemeType = {\n [K in SelectButtonThemeKey]: string\n}\n\nconst SelectButtonBaseValues: Omit<\n SelectButtonThemeType,\n | '--crm-ui-kit-select-button-border'\n | '--crm-ui-kit-select-button-error-border'\n | '--crm-ui-kit-select-button-disabled-border'\n> = {\n '--crm-ui-kit-select-button-border-width': '1px',\n '--crm-ui-kit-select-button-z-index': '10',\n '--crm-ui-kit-select-button-height': '36px',\n '--crm-ui-kit-select-button-width': '100%',\n '--crm-ui-kit-select-button-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-select-button-error-color': 'var(--crm-ui-kit-color-error)',\n '--crm-ui-kit-select-button-border-radius': '3px',\n '--crm-ui-kit-select-button-padding': '0px 7px 0px 9px',\n '--crm-ui-kit-select-button-disabled-border-color':\n 'var(--crm-ui-kit-color-grey)',\n '--crm-ui-kit-select-button-disabled-border-opacity': '0.5',\n '--crm-ui-kit-select-button-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-select-button-line-height': '20px',\n '--crm-ui-kit-select-button-focus-visible-border':\n '1px solid var(--crm-ui-kit-palette-border-active)',\n '--crm-ui-kit-select-button-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n\nexport const SelectButtonLightTheme: SelectButtonThemeType = {\n ...SelectButtonBaseValues,\n\n '--crm-ui-kit-select-button-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-default)',\n\n '--crm-ui-kit-select-button-error-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-select-button-disabled-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const SelectButtonDarkTheme: SelectButtonThemeType = {\n ...SelectButtonBaseValues,\n\n '--crm-ui-kit-select-button-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n\n '--crm-ui-kit-select-button-error-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-error)',\n\n '--crm-ui-kit-select-button-disabled-border':\n 'var(--crm-ui-kit-select-button-border-width) solid var(--crm-ui-kit-palette-border-primary)',\n}\n","import { inject, provide, type InjectionKey } from 'vue'\n\nexport const createComponentContext = <T extends object | null>(\n rootComponentName: string,\n defaultContext?: T\n) => {\n const key: InjectionKey<T> = Symbol(rootComponentName)\n\n const provideContext = (context: T) => {\n provide(key, context)\n }\n\n const useContext = (consumerName: string): T => {\n const context = inject(key, defaultContext)\n\n if (context) {\n return context\n }\n\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``\n )\n }\n\n return [provideContext, useContext] as const\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { SelectContextProps } from './Select.types'\n\nconst DISPLAY_NAME = 'Select'\n\nconst [provideSelectContext, useSelectContext] =\n createComponentContext<SelectContextProps>(DISPLAY_NAME)\n\nexport { provideSelectContext, useSelectContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"selectRef\"\n :class=\"[\n styles.select,\n {\n [styles.opened]: currentIsOpen\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, useAttrs, getCurrentInstance } from 'vue'\nimport { provideSelectContext, DISPLAY_NAME } from './Select.context'\nimport type { SelectProps, SelectItem } from './Select.types'\nimport styles from './Select.module.scss'\n\nconst BASE_HOVER_INDEX = -1\n\ntype Props = SelectProps\n\nconst props = defineProps<Props>()\n\nconst emit = defineEmits<{\n (e: 'change', item: SelectItem): void\n (e: 'openChange', open: boolean): void\n}>()\n\nconst selectRef = ref<HTMLDivElement | null>(null)\nconst internalIsOpened = ref(props.isDefaultOpen ?? false)\nconst internalHoveredIndex = ref(BASE_HOVER_INDEX)\nconst internalDefaultValue = ref<SelectItem | undefined>(props.defaultValue)\n\nconst isControlled = computed(() => props.value !== undefined)\n\n// Check if isOpen was actually passed by the parent (Vue Boolean default is false)\nconst instance = getCurrentInstance()\nconst isOpenControlled = computed(() => {\n const vnode = instance?.vnode\n return vnode?.props ? ('isOpen' in vnode.props || 'is-open' in vnode.props) : false\n})\n\nconst selected = computed(() =>\n isControlled.value ? props.value : internalDefaultValue.value\n)\n\nconst currentIsOpen = computed(() =>\n isOpenControlled.value ? Boolean(props.isOpen) : internalIsOpened.value\n)\n\nconst handleOpen = (open: boolean) => {\n if (!(props.isDisabled ?? false) && !isOpenControlled.value) {\n internalIsOpened.value = open\n emit('openChange', open)\n }\n}\n\nconst handleChange = (item: SelectItem) => {\n if (!isControlled.value) {\n internalDefaultValue.value = item\n }\n\n emit('change', item)\n internalIsOpened.value = false\n}\n\nconst handleHoveredIndexChange = (index: number) => {\n internalHoveredIndex.value = index\n}\n\n// Use getters for reactive context\nconst context = reactive({\n get hoveredIndex() { return internalHoveredIndex.value },\n set hoveredIndex(v) { internalHoveredIndex.value = v },\n onHoveredIndexChange: handleHoveredIndexChange,\n onChange: handleChange,\n get isOpened() { return currentIsOpen.value },\n onOpen: handleOpen,\n get isDisabled() { return props.isDisabled ?? false },\n get isInvalid() { return props.isInvalid ?? false },\n get value() { return selected.value },\n get defaultValue() { return props.defaultValue },\n})\n\nprovideSelectContext(context as any)\n\ndefineExpose({\n selectRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type SelectRootThemeKey =\n | '--crm-ui-kit-select-z-index'\n | '--crm-ui-kit-select-opened-z-index'\n\nexport type SelectRootThemeType = {\n [K in SelectRootThemeKey]: string\n}\n\nexport const SelectRootTheme: SelectRootThemeType = {\n '--crm-ui-kit-select-z-index': 'auto',\n '--crm-ui-kit-select-opened-z-index': '60',\n}\n","<template>\n <span ref=\"optionRef\" :class=\"[styles.text, props.class]\">\n <Text :theme=\"OptionTextTheme\" size=\"l\" :is-ellipsis=\"true\">\n <slot />\n </Text>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport Text from '@/components/Text/Text.vue'\nimport { TextPrimaryTheme, type TextTheme } from '@/components/Text'\nimport styles from './Option.module.scss'\n\nconst props = defineProps<{\n class?: string\n}>()\n\nconst OptionTextTheme: TextTheme = {\n ...TextPrimaryTheme,\n '--crm-ui-kit-text-color': 'inherit',\n}\n\nconst optionRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n optionRef,\n})\n</script>\n","<template>\n <li\n ref=\"itemRef\"\n v-bind=\"$attrs\"\n :class=\"[\n styles.item,\n {\n [styles.selected]: isSelected,\n [styles.hovered]: isHovered,\n },\n props.class,\n ]\"\n :style=\"theme\"\n @click=\"handleClick\"\n >\n <slot>\n <Option>{{ item.option }}</Option>\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useSelectContext } from '../../Select.context'\nimport type { SelectItem } from '../../Select.types'\nimport Option from '../Option/Option.vue'\nimport type { SelectItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'Select.Item'\n\nconst props = defineProps<{\n item: SelectItem\n index: number\n class?: string\n theme: SelectItemThemeType\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst itemRef = ref<HTMLLIElement | null>(null)\n\nconst isSelected = computed(() => selectContext.value?.value === props.item.value)\nconst isHovered = computed(() => selectContext.hoveredIndex === props.index)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n selectContext.onHoveredIndexChange(props.index)\n if (typeof selectContext.onChange === 'function') {\n selectContext.onChange(props.item)\n }\n}\n\ndefineExpose({\n itemRef,\n})\n</script>\n","type SelectItemThemeKey =\n | '--crm-ui-kit-select-item-padding'\n | '--crm-ui-kit-select-item-margin'\n | '--crm-ui-kit-select-item-font-size'\n | '--crm-ui-kit-select-item-font-weight'\n | '--crm-ui-kit-select-item-selected-background-color'\n | '--crm-ui-kit-select-item-selected-background'\n | '--crm-ui-kit-select-item-hovered-background-color'\n | '--crm-ui-kit-select-item-hover-background-color'\n\nexport type SelectItemThemeType = {\n [K in SelectItemThemeKey]: string\n}\n\nexport const SelectItemTheme: SelectItemThemeType = {\n '--crm-ui-kit-select-item-padding': '7px 6px 7px 22px',\n '--crm-ui-kit-select-item-margin': '0px -11px 0px 0px',\n '--crm-ui-kit-select-item-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-select-item-font-weight': '400',\n '--crm-ui-kit-select-item-selected-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-select-item-selected-background':\n 'var(--crm-ui-kit-icon-check-mark) 8px 14px no-repeat',\n '--crm-ui-kit-select-item-hovered-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-select-item-hover-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n}\n","<template>\n <span ref=\"arrowRef\" :class=\"[styles.wrapper, props.class]\" :style=\"theme\">\n <slot>\n <svg xmlns=\"http://www.w3.org/2000/svg\" :width=\"BASE_WIDTH\" :height=\"BASE_HEIGHT\" fill=\"none\" viewBox=\"0 0 21 21\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"m5.25 8.826 1-1 4.5 4.4 4.5-4.4 1 1-5.5 5.5-5.5-5.5Z\" clip-rule=\"evenodd\"/>\n </svg>\n </slot>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectArrowThemeType } from './Arrow.themes'\nimport styles from './Arrow.module.scss'\n\nconst BASE_WIDTH = 20\nconst BASE_HEIGHT = 20\n\nconst props = defineProps<{\n theme: SelectArrowThemeType\n class?: string\n}>()\n\nconst arrowRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n arrowRef,\n})\n</script>\n","type SelectArrowThemeKey =\n | '--crm-ui-kit-select-arrow-width'\n | '--crm-ui-kit-select-arrow-height'\n | '--crm-ui-kit-select-margin'\n\nexport type SelectArrowThemeType = {\n [K in SelectArrowThemeKey]: string\n}\n\nexport const SelectArrowTheme: SelectArrowThemeType = {\n '--crm-ui-kit-select-arrow-width': '20px',\n '--crm-ui-kit-select-arrow-height': '20px',\n '--crm-ui-kit-select-margin': '0 0 0 auto',\n}\n","<template>\n <span v-if=\"$slots.default\" ref=\"iconRef\" :class=\"styles.wrapper\" :style=\"theme\">\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { SelectIconThemeType } from './Icon.themes'\nimport styles from './Icon.module.scss'\n\ndefineProps<{\n theme: SelectIconThemeType\n}>()\n\nconst iconRef = ref<HTMLSpanElement | null>(null)\n\ndefineExpose({\n iconRef,\n})\n</script>\n","type SelectIconThemeKey =\n | '--crm-ui-kit-select-icon-width'\n | '--crm-ui-kit-select-icon-height'\n | '--crm-ui-kit-select-icon-margin'\n\nexport type SelectIconThemeType = {\n [K in SelectIconThemeKey]: string\n}\n\nexport const SelectIconTheme: SelectIconThemeType = {\n '--crm-ui-kit-select-icon-width': '20px',\n '--crm-ui-kit-select-icon-height': '20px',\n '--crm-ui-kit-select-icon-margin': '0 6px 0 0',\n}\n","<template>\n <ul\n v-if=\"isOpened\"\n v-bind=\"$attrs\"\n ref=\"listRef\"\n tabindex=\"0\"\n role=\"list\"\n :class=\"[\n styles.list,\n {\n [styles.opened]: isOpened\n },\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport type { ListProps } from './List.types'\nimport styles from './List.module.scss'\n\ntype Props = ListProps\n\nconst props = withDefaults(defineProps<Props>(), {\n hoveredIndex: 0,\n})\n\nconst emit = defineEmits<{\n (e: 'select', index: number): void\n (e: 'toggle', toggle: boolean): void\n (e: 'hoveredIndexChange', index: number): void\n}>()\n\nconst listRef = ref<HTMLUListElement | null>(null)\n\nconst slots = defineSlots()\nconst itemsLength = computed(() => {\n if (!slots.default) return 0\n const children = slots.default()\n return children.length\n})\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n const { hoveredIndex } = props\n\n switch (event.code) {\n case 'ArrowDown':\n event.preventDefault()\n if (hoveredIndex < itemsLength.value - 1) {\n emit('hoveredIndexChange', hoveredIndex + 1)\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (hoveredIndex > 0) {\n emit('hoveredIndexChange', hoveredIndex - 1)\n }\n break\n\n case 'Enter':\n case 'Space':\n event.preventDefault()\n emit('select', hoveredIndex)\n break\n\n case 'Escape':\n event.preventDefault()\n emit('toggle', false)\n break\n }\n}\n\ndefineExpose({\n listRef,\n})\n</script>\n","type ListThemeKey =\n | '--crm-ui-kit-list-top'\n | '--crm-ui-kit-list-max-height'\n | '--crm-ui-kit-list-width'\n | '--crm-ui-kit-list-border-radius'\n | '--crm-ui-kit-list-border-color'\n | '--crm-ui-kit-list-background-color'\n | '--crm-ui-kit-list-left'\n | '--crm-ui-kit-list-padding-right'\n | '--crm-ui-kit-list-margin-right'\n | '--crm-ui-kit-list-border-width'\n | '--crm-ui-kit-list-outline'\n | '--crm-ui-kit-list-z-index'\n | '--crm-ui-kit-list-border-style'\n | '--crm-ui-kit-list-color'\n\nexport type ListThemeType = {\n [K in ListThemeKey]: string\n}\n\nexport const ListTheme: ListThemeType = {\n '--crm-ui-kit-list-top': '0px',\n '--crm-ui-kit-list-max-height': '211px',\n '--crm-ui-kit-list-z-index': '30',\n '--crm-ui-kit-list-border-style': 'solid',\n '--crm-ui-kit-list-left': '-13px',\n '--crm-ui-kit-list-width': '100%',\n '--crm-ui-kit-list-padding-right': '11px',\n '--crm-ui-kit-list-margin-right': '-13px',\n '--crm-ui-kit-list-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-list-border-width': '1px',\n '--crm-ui-kit-list-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-list-border-radius': '3px',\n '--crm-ui-kit-list-outline': 'none',\n '--crm-ui-kit-list-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n","<template>\n <SelectButton\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n :theme=\"theme\"\n :is-disabled=\"selectContext.isDisabled\"\n :is-invalid=\"selectContext.isInvalid\"\n @toggle=\"handleToggle\"\n >\n <slot />\n </SelectButton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport SelectButton from '@/components/SelectButton/SelectButton.vue'\nimport type { SelectButtonThemeType } from '@/components/SelectButton'\nimport { useSelectContext } from '../../Select.context'\n\nconst DISPLAY_NAME = 'Select.Button'\n\ndefineProps<{\n theme: SelectButtonThemeType\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst buttonRef = ref<InstanceType<typeof SelectButton> | null>(null)\n\nconst handleToggle = () => {\n selectContext.onOpen(!selectContext.isOpened)\n}\n\n// After closing the list, focus back on the button\nwatch(\n () => selectContext.isOpened,\n (newVal, oldVal) => {\n if (oldVal && !newVal) {\n buttonRef.value?.buttonRef?.focus()\n }\n }\n)\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","import { onMounted, onUnmounted, type Ref } from 'vue'\n\nexport interface UseOnOutsideClickOptions {\n ref: Ref<HTMLElement | null>\n handler: () => void\n}\n\nexport const useOnOutsideClick = ({ ref, handler }: UseOnOutsideClickOptions) => {\n const handleClick = (event: MouseEvent) => {\n if (ref.value && !ref.value.contains(event.target as Node)) {\n handler()\n }\n }\n\n onMounted(() => {\n document.addEventListener('mousedown', handleClick)\n })\n\n onUnmounted(() => {\n document.removeEventListener('mousedown', handleClick)\n })\n}\n","<template>\n <Teleport v-if=\"container\" :to=\"container\">\n <BaseList\n ref=\"listRef\"\n :class=\"props.class\"\n :is-opened=\"selectContext.isOpened\"\n :theme=\"theme\"\n :hovered-index=\"effectiveHoveredIndex\"\n @hovered-index-change=\"handleHoveredIndexChange\"\n @toggle=\"handleListToggle\"\n @select=\"handleItemSelect\"\n >\n <slot />\n </BaseList>\n </Teleport>\n <BaseList\n v-else\n ref=\"listRef\"\n :class=\"props.class\"\n :is-opened=\"selectContext.isOpened\"\n :theme=\"theme\"\n :hovered-index=\"effectiveHoveredIndex\"\n @hovered-index-change=\"handleHoveredIndexChange\"\n @toggle=\"handleListToggle\"\n @select=\"handleItemSelect\"\n >\n <slot />\n </BaseList>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots } from 'vue'\nimport BaseList from '@/components/List/List.vue'\nimport type { ListThemeType } from '@/components/List'\nimport { useSelectContext } from '../../Select.context'\nimport { useOnOutsideClick } from '@/composables/useOnOutsideClick'\nimport type { SelectItem } from '../../Select.types'\n\nconst DISPLAY_NAME = 'Select.List'\n\nconst props = defineProps<{\n theme: ListThemeType\n class?: string\n container?: Element | DocumentFragment | null\n}>()\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst listRef = ref<InstanceType<typeof BaseList> | null>(null)\n\n// Build items array from slot children for handleItemSelect\nconst slots = useSlots()\nconst items = computed(() => {\n if (!slots.default) return [] as SelectItem[]\n const children = slots.default()\n return children.map((child) => {\n return child.props?.item as SelectItem\n }).filter(Boolean)\n})\n\nconst itemsMap = computed(() => {\n const map: Record<string, number> = {}\n items.value.forEach((item, index) => {\n if (item?.value !== undefined) {\n map[String(item.value)] = index\n }\n })\n return map\n})\n\nconst effectiveHoveredIndex = computed(() => {\n if (selectContext.value) {\n const idx = itemsMap.value[String(selectContext.value.value)]\n if (idx !== undefined) return idx\n }\n return selectContext.hoveredIndex\n})\n\nconst handleHoveredIndexChange = (index: number) => {\n selectContext.onHoveredIndexChange(index)\n}\n\nconst handleListToggle = (toggle: boolean) => {\n selectContext.onOpen(toggle)\n}\n\nconst handleItemSelect = (index: number) => {\n const item = items.value[index]\n if (item && typeof selectContext.onChange === 'function') {\n selectContext.onChange(item)\n }\n}\n\n// Outside click to close\nconst listElRef = computed(() => listRef.value?.listRef ?? null)\n\nuseOnOutsideClick({\n ref: listElRef,\n handler: () => {\n if (selectContext.isOpened) {\n selectContext.onOpen(false)\n }\n },\n})\n\n// Focus the list when opened\nwatch(\n () => selectContext.isOpened,\n (opened) => {\n if (opened) {\n listRef.value?.listRef?.focus()\n }\n }\n)\n\ndefineExpose({\n listRef,\n})\n</script>\n","<template>\n <slot v-if=\"$slots.default\" />\n <template v-else>\n <Option ref=\"optionRef\" :class=\"props.class\">\n {{ shouldShowPlaceholder ? placeholder : selectContext.value?.option }}\n </Option>\n </template>\n\n <VisuallyHiddenInput :name=\"name\" type=\"hidden\" :value=\"selectContext.value?.value\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport { useSelectContext } from '../../Select.context'\nimport Option from '../Option/Option.vue'\n\nconst DISPLAY_NAME = 'Select.Value'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n name?: string\n}>(), {\n placeholder: '',\n class: '',\n})\n\nconst selectContext = useSelectContext(DISPLAY_NAME)\n\nconst shouldShowPlaceholder = computed(() => !selectContext.value)\n\nconst optionRef = ref<InstanceType<typeof Option> | null>(null)\n\ndefineExpose({\n optionRef,\n})\n</script>\n","import { createComponentContext } from '@/lib/vue'\nimport type { MultiSelectContextProps } from './MultiSelect.types'\n\nconst DISPLAY_NAME = 'MultiSelect'\n\nconst [provideMultiSelectContext, useMultiSelectContext] =\n createComponentContext<MultiSelectContextProps>(DISPLAY_NAME)\n\nexport { provideMultiSelectContext, useMultiSelectContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"multiSelectRef\"\n :class=\"[\n styles.multiselect,\n {\n [styles.opened]: currentIsOpen\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, watch, getCurrentInstance } from 'vue'\nimport { provideMultiSelectContext, DISPLAY_NAME } from './MultiSelect.context'\nimport type { MultiSelectProps, MultiSelectItem } from './MultiSelect.types'\nimport styles from './MultiSelect.module.scss'\n\ntype Props = MultiSelectProps\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'multi',\n groupSelectable: false,\n})\n\nconst emit = defineEmits<{\n (e: 'change', items: MultiSelectItem[]): void\n (e: 'openChange', open: boolean): void\n}>()\n\nconst multiSelectRef = ref<HTMLDivElement | null>(null)\nconst internalIsOpened = ref(props.isDefaultOpen ?? false)\nconst internalHoveredValue = ref<string | number | null>(null)\nconst searchQuery = ref('')\n\n// Internal values Set for uncontrolled mode\nconst internalValues = ref<Set<string | number>>(\n new Set((props.defaultValue ?? []).map(item => item.value))\n)\n\nconst isControlled = computed(() => props.value !== undefined)\n\n// Check if isOpen was actually passed by the parent\nconst instance = getCurrentInstance()\nconst isOpenControlled = computed(() => {\n const vnode = instance?.vnode\n return vnode?.props ? ('isOpen' in vnode.props || 'is-open' in vnode.props) : false\n})\n\n// Current values Set (controlled or internal)\nconst currentValues = computed(() => {\n if (isControlled.value) {\n return new Set((props.value ?? []).map(item => item.value))\n }\n return internalValues.value\n})\n\nconst currentIsOpen = computed(() =>\n isOpenControlled.value ? Boolean(props.isOpen) : internalIsOpened.value\n)\n\n// All available items (flat list)\nconst allItems = computed(() => props.items ?? [])\n\n// Resolve selected values back to full MultiSelectItem objects\nconst selectedItems = computed(() => {\n const vals = currentValues.value\n return allItems.value.filter(item => vals.has(item.value))\n})\n\nconst handleOpen = (open: boolean) => {\n if (!(props.isDisabled ?? false)) {\n if (!isOpenControlled.value) {\n internalIsOpened.value = open\n }\n if (!open) {\n searchQuery.value = ''\n }\n emit('openChange', open)\n }\n}\n\nconst handleToggleItem = (item: MultiSelectItem) => {\n if (props.mode === 'single') {\n // Single mode: select item, close dropdown\n if (!isControlled.value) {\n internalValues.value = new Set([item.value])\n }\n emit('change', [item])\n handleOpen(false)\n } else {\n // Multi mode: toggle item in Set, keep dropdown open\n const newValues = new Set(currentValues.value)\n if (newValues.has(item.value)) {\n newValues.delete(item.value)\n } else {\n newValues.add(item.value)\n }\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n }\n}\n\nconst handleToggleGroup = (groupId: string | number) => {\n const groupItems = allItems.value.filter(item => item.group === groupId)\n if (groupItems.length === 0) return\n\n const allSelected = groupItems.every(item => currentValues.value.has(item.value))\n const newValues = new Set(currentValues.value)\n\n if (allSelected) {\n groupItems.forEach(item => newValues.delete(item.value))\n } else {\n groupItems.forEach(item => newValues.add(item.value))\n }\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n}\n\nconst handleToggleAll = () => {\n const allSelected = allItems.value.length > 0 &&\n allItems.value.every(item => currentValues.value.has(item.value))\n const newValues = new Set<string | number>()\n\n if (!allSelected) {\n allItems.value.forEach(item => newValues.add(item.value))\n }\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = allItems.value.filter(i => newValues.has(i.value))\n emit('change', selected)\n}\n\nconst getGroupItems = (groupId: string | number): MultiSelectItem[] => {\n return allItems.value.filter(item => item.group === groupId)\n}\n\nconst isGroupAllSelected = (groupId: string | number): boolean => {\n const groupItems = getGroupItems(groupId)\n return groupItems.length > 0 && groupItems.every(item => currentValues.value.has(item.value))\n}\n\nconst isGroupPartiallySelected = (groupId: string | number): boolean => {\n const groupItems = getGroupItems(groupId)\n const selectedCount = groupItems.filter(item => currentValues.value.has(item.value)).length\n return selectedCount > 0 && selectedCount < groupItems.length\n}\n\nconst isAllSelected = (): boolean => {\n return allItems.value.length > 0 &&\n allItems.value.every(item => currentValues.value.has(item.value))\n}\n\nconst isPartiallySelected = (): boolean => {\n const selectedCount = allItems.value.filter(item => currentValues.value.has(item.value)).length\n return selectedCount > 0 && selectedCount < allItems.value.length\n}\n\nconst handleHoveredItemChange = (value: string | number | null) => {\n internalHoveredValue.value = value\n}\n\nconst handleSearchChange = (query: string) => {\n searchQuery.value = query\n}\n\nconst isItemMatchingSearch = (item: MultiSelectItem): boolean => {\n const q = searchQuery.value.trim().toLowerCase()\n if (!q) return true\n return item.option.toLowerCase().includes(q)\n}\n\nconst isGroupMatchingSearch = (groupId: string | number): boolean => {\n const q = searchQuery.value.trim().toLowerCase()\n if (!q) return true\n const groupItems = getGroupItems(groupId)\n return groupItems.some(item => item.option.toLowerCase().includes(q))\n}\n\n// Watch items prop — remove stale selected values\nwatch(\n () => props.items,\n (newItems) => {\n if (!newItems) return\n const validValues = new Set(newItems.map(item => item.value))\n const currentVals = currentValues.value\n const staleValues = [...currentVals].filter(v => !validValues.has(v))\n\n if (staleValues.length > 0) {\n const newValues = new Set(currentVals)\n staleValues.forEach(v => newValues.delete(v))\n\n if (!isControlled.value) {\n internalValues.value = newValues\n }\n const selected = newItems.filter(i => newValues.has(i.value))\n emit('change', selected)\n }\n },\n { deep: true }\n)\n\nconst context = reactive({\n get values() { return currentValues.value },\n get selectedItems() { return selectedItems.value },\n get isOpened() { return currentIsOpen.value },\n get isDisabled() { return props.isDisabled ?? false },\n get isInvalid() { return props.isInvalid ?? false },\n get hoveredItemValue() { return internalHoveredValue.value },\n get mode() { return props.mode ?? 'multi' },\n get groupSelectable() { return props.groupSelectable ?? false },\n get searchQuery() { return searchQuery.value },\n onOpen: handleOpen,\n onToggleItem: handleToggleItem,\n onToggleGroup: handleToggleGroup,\n onToggleAll: handleToggleAll,\n onHoveredItemChange: handleHoveredItemChange,\n onSearchChange: handleSearchChange,\n isItemMatchingSearch,\n isGroupMatchingSearch,\n getGroupItems,\n isGroupAllSelected,\n isGroupPartiallySelected,\n isAllSelected,\n isPartiallySelected,\n})\n\nprovideMultiSelectContext(context as any)\n\ndefineExpose({\n multiSelectRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type MultiSelectRootThemeKey =\n | '--crm-ui-kit-multiselect-z-index'\n | '--crm-ui-kit-multiselect-opened-z-index'\n\nexport type MultiSelectRootThemeType = {\n [K in MultiSelectRootThemeKey]: string\n}\n\nexport const MultiSelectRootTheme: MultiSelectRootThemeType = {\n '--crm-ui-kit-multiselect-z-index': 'auto',\n '--crm-ui-kit-multiselect-opened-z-index': '60',\n}\n","export const isTouchableDevice = () => Boolean('ontouchstart' in window)\n\nexport const isValidRenderValue = (value: any) => {\n return (\n value !== null &&\n value !== undefined &&\n (typeof value === 'string' || typeof value === 'number')\n )\n}\n","<template>\n <div\n :class=\"[\n styles.wrapper,\n {\n [styles.touchable]: isTouchable\n }\n ]\"\n :style=\"theme\"\n >\n <VisuallyHiddenInput\n v-bind=\"$attrs\"\n :id=\"props.id\"\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"checkbox\"\n :is-disabled=\"props.isDisabled\"\n :is-readonly=\"props.isReadonly\"\n :is-checked=\"props.isChecked\"\n :is-default-checked=\"props.isDefaultChecked\"\n :value=\"props.value\"\n :name=\"props.name\"\n />\n <span\n :class=\"[\n styles.checkbox,\n {\n [styles.indeterminate]: checkedStyle === 'indeterminate',\n [styles.invalid]: isInvalid\n }\n ]\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false })\n\nimport { ref, onMounted } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport type { CheckboxProps } from './Checkbox.types'\nimport { isTouchableDevice } from '@/lib/utils'\nimport styles from './Checkbox.module.scss'\n\ntype Props = CheckboxProps\n\nconst props = withDefaults(defineProps<Props>(), {\n checkedStyle: 'mark',\n isInvalid: false,\n})\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\nconst isTouchable = ref(false)\n\nonMounted(() => {\n isTouchable.value = isTouchableDevice()\n})\n\ndefineExpose({\n inputRef,\n})\n</script>\n","<template>\n <div ref=\"groupRef\">\n <div\n v-for=\"(child, index) in childrenArray\"\n :key=\"index\"\n :class=\"[styles.wrapper]\"\n :style=\"theme\"\n >\n <component :is=\"child\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { LabelGroupProps } from './Label.types'\nimport styles from './Label.module.scss'\n\ntype Props = LabelGroupProps & {}\n\nconst props = defineProps<Props>()\nconst slots = defineSlots<{ default?(): any }>()\nconst groupRef = ref<HTMLDivElement | null>(null)\n\nconst childrenArray = computed(() => slots.default ? slots.default() : [])\n\ndefineExpose({\n groupRef,\n})\n</script>\n","type LabelGroupThemeKey = '--crm-ui-kit-label-group-margin-bottom'\ntype LabelThemeKey =\n | '--crm-ui-kit-label-spacing'\n | '--crm-ui-kit-label-text-width'\n | '--crm-ui-kit-label-description-spacing'\n\nexport type LabelGroupThemeType = {\n [K in LabelGroupThemeKey]: string\n}\n\nexport type LabelThemeType = {\n [K in LabelThemeKey]: string\n}\n\nexport const LabelGroupTheme: LabelGroupThemeType = {\n '--crm-ui-kit-label-group-margin-bottom': '16px',\n}\n\nexport const LabelTheme: LabelThemeType = {\n '--crm-ui-kit-label-spacing': '4px',\n '--crm-ui-kit-label-description-spacing': '4px',\n '--crm-ui-kit-label-text-width': 'auto',\n}\n","import { LabelTheme, type LabelThemeType } from '@/components/Label'\n\ntype CheckboxThemeKey =\n | '--crm-ui-kit-checkbox-size'\n | '--crm-ui-kit-checkbox-z-index'\n | '--crm-ui-kit-checkbox-background-color'\n | '--crm-ui-kit-checkbox-disabled-background-color'\n | '--crm-ui-kit-checkbox-border-width'\n | '--crm-ui-kit-checkbox-border-radius'\n | '--crm-ui-kit-checkbox-border-style'\n | '--crm-ui-kit-checkbox-border-color'\n | '--crm-ui-kit-checkbox-error-border-color'\n | '--crm-ui-kit-checkbox-checked-background'\n | '--crm-ui-kit-checkbox-indeterminate-background'\n | '--crm-ui-kit-checkbox-focus-visible-outline-color'\n | '--crm-ui-kit-checkbox-focus-visible-outline-width'\n | '--crm-ui-kit-checkbox-focus-visible-outline-style'\n | '--crm-ui-kit-checkbox-focus-visible-outline-offset'\n | '--crm-ui-kit-checkbox-focus-visible-border-radius'\n\nexport type CheckboxThemeType = {\n [K in CheckboxThemeKey]: string\n}\n\nexport const CheckboxBaseValues: Omit<\n CheckboxThemeType,\n '--crm-ui-kit-checkbox-size' | '--crm-ui-kit-checkbox-border-color'\n> = {\n '--crm-ui-kit-checkbox-z-index': '3',\n\n '--crm-ui-kit-checkbox-border-width': '1px',\n '--crm-ui-kit-checkbox-border-radius': '3px',\n '--crm-ui-kit-checkbox-border-style': 'solid',\n\n '--crm-ui-kit-checkbox-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-checkbox-disabled-background-color':\n 'var(--crm-ui-kit-palette-background-primary-disabled)',\n\n '--crm-ui-kit-checkbox-error-border-color': 'var(--crm-ui-kit-color-error)',\n\n '--crm-ui-kit-checkbox-checked-background':\n 'var(--crm-ui-kit-checkbox-background-color) var(--crm-ui-kit-icon-checked-mark) no-repeat center / 70%',\n '--crm-ui-kit-checkbox-indeterminate-background':\n 'var(--crm-ui-kit-checkbox-background-color) var(--crm-ui-kit-icon-minus) no-repeat center',\n\n '--crm-ui-kit-checkbox-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-checkbox-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-checkbox-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-checkbox-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-checkbox-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n\nexport const CheckboxLightTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '20px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\nexport const CheckboxSmallLightTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '16px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-default)',\n}\n\nexport const CheckboxDarkTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '20px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const CheckboxSmallDarkTheme: CheckboxThemeType = {\n ...CheckboxBaseValues,\n '--crm-ui-kit-checkbox-size': '16px',\n '--crm-ui-kit-checkbox-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n\nexport const CheckboxLabelTheme: LabelThemeType = {\n ...LabelTheme,\n '--crm-ui-kit-label-description-spacing': '8px',\n '--crm-ui-kit-label-spacing': '8px',\n}\n","<template>\n <li\n v-if=\"isVisible\"\n ref=\"itemRef\"\n v-bind=\"$attrs\"\n role=\"option\"\n :aria-selected=\"isSelected\"\n :class=\"[\n styles.item,\n {\n [styles.selected]: isSelected,\n [styles.hovered]: isHovered,\n },\n ]\"\n :style=\"theme\"\n :title=\"item.option\"\n @click=\"handleClick\"\n >\n <Checkbox\n v-if=\"multiSelectContext.mode === 'multi'\"\n :theme=\"checkboxTheme\"\n :is-checked=\"isSelected\"\n :tabindex=\"-1\"\n @click.stop\n />\n <slot>\n <Option>{{ item.option }}</Option>\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectItem as MultiSelectItemType } from '../../MultiSelect.types'\nimport type { MultiSelectItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Item'\n\nconst props = defineProps<{\n item: MultiSelectItemType\n theme: MultiSelectItemThemeType\n}>()\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst itemRef = ref<HTMLLIElement | null>(null)\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst isVisible = computed(() => multiSelectContext.isItemMatchingSearch(props.item))\nconst isSelected = computed(() => multiSelectContext.values.has(props.item.value))\nconst isHovered = computed(() => multiSelectContext.hoveredItemValue === props.item.value)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n multiSelectContext.onToggleItem(props.item)\n}\n\ndefineExpose({\n itemRef,\n})\n</script>\n","type MultiSelectItemThemeKey =\n | '--crm-ui-kit-multiselect-item-padding'\n | '--crm-ui-kit-multiselect-item-font-size'\n | '--crm-ui-kit-multiselect-item-font-weight'\n | '--crm-ui-kit-multiselect-item-selected-background-color'\n | '--crm-ui-kit-multiselect-item-hovered-background-color'\n | '--crm-ui-kit-multiselect-item-hover-background-color'\n | '--crm-ui-kit-multiselect-item-checkbox-gap'\n\nexport type MultiSelectItemThemeType = {\n [K in MultiSelectItemThemeKey]: string\n}\n\nexport const MultiSelectItemTheme: MultiSelectItemThemeType = {\n '--crm-ui-kit-multiselect-item-padding': '7px 6px 7px 12px',\n '--crm-ui-kit-multiselect-item-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-multiselect-item-font-weight': '400',\n '--crm-ui-kit-multiselect-item-selected-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-multiselect-item-hovered-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-multiselect-item-hover-background-color':\n 'var(--crm-ui-kit-palette-background-default)',\n '--crm-ui-kit-multiselect-item-checkbox-gap': '8px',\n}\n","<template>\n <li v-if=\"isVisible\" :class=\"styles.group\" role=\"group\" :aria-label=\"group.label\">\n <div\n :class=\"[\n styles.header,\n {\n [styles.headerSelectable]: multiSelectContext.groupSelectable\n }\n ]\"\n :style=\"headerStyle\"\n :title=\"group.label\"\n @click=\"handleHeaderClick\"\n >\n <Checkbox\n v-if=\"multiSelectContext.groupSelectable\"\n :theme=\"checkboxTheme\"\n :is-checked=\"isChecked\"\n :checked-style=\"checkedStyle\"\n :tabindex=\"-1\"\n @click.stop\n />\n <span :class=\"styles.label\">{{ group.label }}</span>\n </div>\n <ul :class=\"styles.children\">\n <slot />\n <li v-if=\"hasNoChildren\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectGroup as MultiSelectGroupType } from '../../MultiSelect.types'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport styles from './Group.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Group'\n\nconst COLOR_PATTERN = /^(#[\\da-f]{3,8}|rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,\\s*(0|1|0?\\.\\d+))?\\s*\\)|hsla?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*(,\\s*(0|1|0?\\.\\d+))?\\s*\\)|[a-z]{3,20})$/i\n\nimport type { MultiSelectGroupThemeType } from './Group.themes'\n\nconst props = withDefaults(defineProps<{\n group: MultiSelectGroupType\n theme: MultiSelectGroupThemeType\n emptyText?: string\n}>(), {\n emptyText: 'Нет элементов',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst isVisible = computed(() => multiSelectContext.isGroupMatchingSearch(props.group.id))\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst slots = useSlots()\nconst hasNoChildren = computed(() => {\n if (!slots.default) return true\n const children = slots.default()\n return children.length === 0\n})\n\nconst isGroupAllSelected = computed(() =>\n multiSelectContext.isGroupAllSelected(props.group.id)\n)\nconst isGroupPartiallySelected = computed(() =>\n multiSelectContext.isGroupPartiallySelected(props.group.id)\n)\n\nconst isChecked = computed(() =>\n isGroupAllSelected.value || isGroupPartiallySelected.value\n)\n\nconst checkedStyle = computed<CheckedStyleType>(() =>\n isGroupAllSelected.value ? 'mark' : 'indeterminate'\n)\n\nconst isValidColor = (color: string): boolean => {\n return COLOR_PATTERN.test(color.trim())\n}\n\nconst headerStyle = computed(() => {\n const base = { ...props.theme } as Record<string, string>\n if (props.group.color && isValidColor(props.group.color)) {\n base.backgroundColor = props.group.color\n }\n return base\n})\n\nconst handleHeaderClick = () => {\n if (multiSelectContext.groupSelectable) {\n multiSelectContext.onToggleGroup(props.group.id)\n }\n}\n</script>\n","type MultiSelectGroupThemeKey =\n | '--crm-ui-kit-multiselect-group-padding'\n | '--crm-ui-kit-multiselect-group-font-size'\n | '--crm-ui-kit-multiselect-group-font-weight'\n | '--crm-ui-kit-multiselect-group-color'\n | '--crm-ui-kit-multiselect-group-background-color'\n | '--crm-ui-kit-multiselect-group-text-transform'\n\nexport type MultiSelectGroupThemeType = {\n [K in MultiSelectGroupThemeKey]: string\n}\n\nexport const MultiSelectGroupTheme: MultiSelectGroupThemeType = {\n '--crm-ui-kit-multiselect-group-padding': '8px 12px',\n '--crm-ui-kit-multiselect-group-font-size': '13px',\n '--crm-ui-kit-multiselect-group-font-weight': '700',\n '--crm-ui-kit-multiselect-group-color': '#363b44',\n '--crm-ui-kit-multiselect-group-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-multiselect-group-text-transform': 'uppercase',\n}\n","<template>\n <div :class=\"styles.combobox\" :style=\"theme\">\n <div\n ref=\"containerRef\"\n :class=\"[\n styles.inputContainer,\n {\n [styles.focused]: multiSelectContext.isOpened,\n [styles.invalid]: multiSelectContext.isInvalid,\n [styles.disabled]: multiSelectContext.isDisabled,\n }\n ]\"\n @click=\"handleContainerClick\"\n >\n <input\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"text\"\n :placeholder=\"placeholder\"\n :value=\"multiSelectContext.isOpened ? multiSelectContext.searchQuery : displayText\"\n :disabled=\"multiSelectContext.isDisabled\"\n :readonly=\"!multiSelectContext.isOpened\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeyDown\"\n />\n <slot name=\"after\">\n <span :class=\"[styles.arrow, { [styles.arrowOpen]: multiSelectContext.isOpened }]\" />\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick } from 'vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectGroup } from '../../MultiSelect.types'\nimport type { MultiSelectComboboxThemeType } from './Combobox.themes'\nimport styles from './Combobox.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Combobox'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectComboboxThemeType\n placeholder?: string\n groups?: MultiSelectGroup[]\n}>(), {\n placeholder: 'Поиск...',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst containerRef = ref<HTMLDivElement | null>(null)\n\nconst groupsMap = computed(() => {\n if (!props.groups) return null\n const map = new Map<string | number, string>()\n for (const g of props.groups) {\n map.set(g.id, g.label)\n }\n return map\n})\n\nconst displayText = computed(() => {\n if (multiSelectContext.isOpened) return ''\n const items = multiSelectContext.selectedItems\n if (items.length === 0) return ''\n if (items.length === 1) return items[0].option\n if (multiSelectContext.isAllSelected()) return `Все (${items.length})`\n\n // Group-aware display: show group name only when entire group is selected\n if (groupsMap.value && items.every(i => i.group != null)) {\n const groupIds = [...new Set(items.map(i => i.group!))]\n const fullySelectedGroups = groupIds.filter(id => multiSelectContext.isGroupAllSelected(id))\n\n if (fullySelectedGroups.length > 0 && fullySelectedGroups.length === groupIds.length) {\n if (fullySelectedGroups.length === 1) {\n const label = groupsMap.value.get(fullySelectedGroups[0])\n if (label) return `${label} (${items.length})`\n }\n const firstLabel = groupsMap.value.get(fullySelectedGroups[0])\n if (firstLabel) {\n return fullySelectedGroups.length === 2\n ? `${firstLabel}, ${groupsMap.value.get(fullySelectedGroups[1])}`\n : `${firstLabel} +${fullySelectedGroups.length - 1}`\n }\n }\n }\n\n return `${items[0].option} +${items.length - 1}`\n})\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n multiSelectContext.onSearchChange(value)\n}\n\nconst handleFocus = () => {\n if (!multiSelectContext.isDisabled) {\n multiSelectContext.onOpen(true)\n }\n}\n\nconst handleContainerClick = () => {\n inputRef.value?.focus()\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (e.code === 'Escape') {\n multiSelectContext.onOpen(false)\n inputRef.value?.blur()\n }\n}\n\n// Keep input focused while dropdown is open\nwatch(() => multiSelectContext.isOpened, (opened) => {\n if (opened) {\n nextTick(() => inputRef.value?.focus())\n }\n})\n\ndefineExpose({ inputRef })\n</script>\n","type MultiSelectComboboxThemeKey =\n | '--crm-ui-kit-multiselect-combobox-width'\n | '--crm-ui-kit-multiselect-combobox-height'\n | '--crm-ui-kit-multiselect-combobox-padding'\n | '--crm-ui-kit-multiselect-combobox-font-size'\n | '--crm-ui-kit-multiselect-combobox-color'\n | '--crm-ui-kit-multiselect-combobox-placeholder-color'\n | '--crm-ui-kit-multiselect-combobox-background-color'\n | '--crm-ui-kit-multiselect-combobox-border'\n | '--crm-ui-kit-multiselect-combobox-border-radius'\n | '--crm-ui-kit-multiselect-combobox-hover-border-color'\n | '--crm-ui-kit-multiselect-combobox-focus-border-color'\n | '--crm-ui-kit-multiselect-combobox-error-border-color'\n\nexport type MultiSelectComboboxThemeType = {\n [K in MultiSelectComboboxThemeKey]: string\n}\n\nexport const MultiSelectComboboxTheme: MultiSelectComboboxThemeType = {\n '--crm-ui-kit-multiselect-combobox-width': '100%',\n '--crm-ui-kit-multiselect-combobox-height': '36px',\n '--crm-ui-kit-multiselect-combobox-padding': '0 7px 0 9px',\n '--crm-ui-kit-multiselect-combobox-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-multiselect-combobox-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-multiselect-combobox-placeholder-color': 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-multiselect-combobox-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-multiselect-combobox-border': '1px solid var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-multiselect-combobox-border-radius': '3px',\n '--crm-ui-kit-multiselect-combobox-hover-border-color': 'var(--crm-ui-kit-palette-border-default)',\n '--crm-ui-kit-multiselect-combobox-focus-border-color': 'var(--crm-ui-kit-palette-border-active)',\n '--crm-ui-kit-multiselect-combobox-error-border-color': 'var(--crm-ui-kit-color-error)',\n}\n\nexport const MultiSelectComboboxInlineTheme: MultiSelectComboboxThemeType = {\n '--crm-ui-kit-multiselect-combobox-width': '100%',\n '--crm-ui-kit-multiselect-combobox-height': '24px',\n '--crm-ui-kit-multiselect-combobox-padding': '0 2px',\n '--crm-ui-kit-multiselect-combobox-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-multiselect-combobox-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-multiselect-combobox-placeholder-color': 'var(--crm-ui-kit-palette-placeholder-primary)',\n '--crm-ui-kit-multiselect-combobox-background-color': 'transparent',\n '--crm-ui-kit-multiselect-combobox-border': '1px solid transparent',\n '--crm-ui-kit-multiselect-combobox-border-radius': '0',\n '--crm-ui-kit-multiselect-combobox-hover-border-color': 'transparent',\n '--crm-ui-kit-multiselect-combobox-focus-border-color': 'transparent',\n '--crm-ui-kit-multiselect-combobox-error-border-color': 'var(--crm-ui-kit-color-error)',\n}\n","<template>\n <li :class=\"styles.search\" :style=\"theme\">\n <input\n ref=\"inputRef\"\n :class=\"styles.input\"\n type=\"text\"\n :placeholder=\"placeholder\"\n :value=\"multiSelectContext.searchQuery\"\n @input=\"handleInput\"\n @keydown.stop\n />\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, nextTick } from 'vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectSearchThemeType } from './Search.themes'\nimport styles from './Search.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Search'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectSearchThemeType\n placeholder?: string\n}>(), {\n placeholder: 'Поиск...',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst inputRef = ref<HTMLInputElement | null>(null)\n\nconst handleInput = (e: Event) => {\n multiSelectContext.onSearchChange((e.target as HTMLInputElement).value)\n}\n\n// Auto-focus when list opens\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n nextTick(() => {\n setTimeout(() => inputRef.value?.focus(), 0)\n })\n }\n }\n)\n</script>\n","type MultiSelectSearchThemeKey =\n | '--crm-ui-kit-multiselect-search-padding'\n | '--crm-ui-kit-multiselect-search-input-padding'\n | '--crm-ui-kit-multiselect-search-font-size'\n | '--crm-ui-kit-multiselect-search-color'\n | '--crm-ui-kit-multiselect-search-background-color'\n | '--crm-ui-kit-multiselect-search-border-bottom'\n\nexport type MultiSelectSearchThemeType = {\n [K in MultiSelectSearchThemeKey]: string\n}\n\nexport const MultiSelectSearchTheme: MultiSelectSearchThemeType = {\n '--crm-ui-kit-multiselect-search-padding': '4px 8px',\n '--crm-ui-kit-multiselect-search-input-padding': '6px 4px',\n '--crm-ui-kit-multiselect-search-font-size': 'var(--crm-ui-kit-base-font-size)',\n '--crm-ui-kit-multiselect-search-color': 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-multiselect-search-background-color': 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-multiselect-search-border-bottom': '1px solid var(--crm-ui-kit-palette-border-primary)',\n}\n","<template>\n <SelectButton\n ref=\"buttonRef\"\n v-bind=\"$attrs\"\n :theme=\"theme\"\n :is-disabled=\"multiSelectContext.isDisabled\"\n :is-invalid=\"multiSelectContext.isInvalid\"\n @toggle=\"handleToggle\"\n >\n <slot />\n </SelectButton>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport SelectButton from '@/components/SelectButton/SelectButton.vue'\nimport type { SelectButtonThemeType } from '@/components/SelectButton'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\n\nconst DISPLAY_NAME = 'MultiSelect.Trigger'\n\ndefineProps<{\n theme: SelectButtonThemeType\n}>()\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst buttonRef = ref<InstanceType<typeof SelectButton> | null>(null)\n\nconst handleToggle = () => {\n multiSelectContext.onOpen(!multiSelectContext.isOpened)\n}\n\n// After closing the list, focus back on the button\nwatch(\n () => multiSelectContext.isOpened,\n (newVal, oldVal) => {\n if (oldVal && !newVal) {\n buttonRef.value?.buttonRef?.focus()\n }\n }\n)\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","<template>\n <Teleport v-if=\"container\" :to=\"container\">\n <ul\n v-if=\"multiSelectContext.isOpened\"\n ref=\"listRef\"\n v-bind=\"$attrs\"\n tabindex=\"0\"\n role=\"listbox\"\n :aria-multiselectable=\"multiSelectContext.mode === 'multi' ? 'true' : undefined\"\n :class=\"[\n 'custom-scroll',\n styles.list,\n props.class,\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n <li v-if=\"itemsCount === 0\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </Teleport>\n <template v-else>\n <ul\n v-if=\"multiSelectContext.isOpened\"\n ref=\"listRef\"\n v-bind=\"$attrs\"\n tabindex=\"0\"\n role=\"listbox\"\n :aria-multiselectable=\"multiSelectContext.mode === 'multi' ? 'true' : undefined\"\n :class=\"[\n 'custom-scroll',\n styles.list,\n props.class,\n ]\"\n :style=\"theme\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n <li v-if=\"itemsCount === 0\" :class=\"styles.empty\">\n {{ emptyText }}\n </li>\n </ul>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, type VNode, nextTick } from 'vue'\nimport type { ListThemeType } from '@/components/List'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport { useOnOutsideClick } from '@/composables/useOnOutsideClick'\nimport type { MultiSelectItem } from '../../MultiSelect.types'\nimport styles from './MultiSelectList.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.List'\n\nconst props = withDefaults(defineProps<{\n theme: ListThemeType\n class?: string\n container?: Element | DocumentFragment | null\n emptyText?: string\n}>(), {\n emptyText: 'Нет элементов',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst listRef = ref<HTMLUListElement | null>(null)\n\n// Build items array from slot children for keyboard navigation\nconst slots = useSlots()\n\nfunction extractItems(vnodes: VNode[]): MultiSelectItem[] {\n const result: MultiSelectItem[] = []\n for (const vnode of vnodes) {\n if (vnode.props?.item) {\n result.push(vnode.props.item as MultiSelectItem)\n }\n // Recurse into Fragment children (e.g. v-for)\n if (Array.isArray(vnode.children)) {\n result.push(...extractItems(vnode.children as VNode[]))\n }\n // Recurse into component slot children (e.g. MultiSelectGroup)\n else if (\n vnode.children\n && typeof vnode.children === 'object'\n && 'default' in vnode.children\n && typeof (vnode.children as Record<string, unknown>).default === 'function'\n ) {\n const slotFn = (vnode.children as Record<string, () => VNode[]>).default\n const slotChildren = slotFn()\n if (Array.isArray(slotChildren)) {\n result.push(...extractItems(slotChildren))\n }\n }\n }\n return result\n}\n\nconst items = computed(() => {\n if (!slots.default) return [] as MultiSelectItem[]\n const children = slots.default()\n return extractItems(children)\n})\n\nconst itemsCount = computed(() => items.value.length)\n\nconst itemsMap = computed(() => {\n const map: Record<string, number> = {}\n items.value.forEach((item, index) => {\n if (item?.value !== undefined) {\n map[String(item.value)] = index\n }\n })\n return map\n})\n\n// Local hovered index for keyboard navigation\nconst localHoveredIndex = ref(-1)\n\n// Sync local index when context hovered value changes externally\nconst currentHoveredIndex = computed(() => {\n const val = multiSelectContext.hoveredItemValue\n if (val === null) return -1\n const idx = itemsMap.value[String(val)]\n return idx ?? -1\n})\n\n// Update local when list opens\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n localHoveredIndex.value = currentHoveredIndex.value\n }\n }\n)\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n const total = itemsCount.value\n let idx = localHoveredIndex.value\n\n switch (event.code) {\n case 'ArrowDown':\n event.preventDefault()\n if (idx < total - 1) {\n idx++\n localHoveredIndex.value = idx\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onHoveredItemChange(item.value)\n }\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (idx > 0) {\n idx--\n localHoveredIndex.value = idx\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onHoveredItemChange(item.value)\n }\n }\n break\n\n case 'Enter':\n case 'Space':\n event.preventDefault()\n if (idx >= 0 && idx < total) {\n const item = items.value[idx]\n if (item) {\n multiSelectContext.onToggleItem(item)\n }\n }\n break\n\n case 'Escape':\n event.preventDefault()\n multiSelectContext.onOpen(false)\n break\n }\n}\n\n// Outside click to close\nuseOnOutsideClick({\n ref: listRef,\n handler: () => {\n if (multiSelectContext.isOpened) {\n multiSelectContext.onOpen(false)\n }\n },\n})\n\n// Focus the list when opened\nwatch(\n () => multiSelectContext.isOpened,\n (opened) => {\n if (opened) {\n // nextTick handled by Vue reactivity — the ref is available after v-if renders\n setTimeout(() => {\n listRef.value?.focus()\n }, 0)\n }\n }\n)\n\ndefineExpose({\n listRef,\n items,\n itemsMap,\n})\n</script>\n","<template>\n <li\n v-if=\"!multiSelectContext.searchQuery\"\n :class=\"styles.item\"\n :style=\"theme\"\n @click=\"handleClick\"\n >\n <Checkbox\n :theme=\"checkboxTheme\"\n :is-checked=\"isChecked\"\n :checked-style=\"checkedStyle\"\n :tabindex=\"-1\"\n @click.stop\n />\n <Option>{{ label }}</Option>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Checkbox from '@/components/Checkbox/Checkbox.vue'\nimport { CheckboxLightTheme } from '@/components/Checkbox/Checkbox.themes'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport type { MultiSelectItemThemeType } from '../Item/Item.themes'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport styles from '../Item/Item.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.All'\n\nconst props = withDefaults(defineProps<{\n theme: MultiSelectItemThemeType\n label?: string\n}>(), {\n label: 'Выбрать всё',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst checkboxTheme = CheckboxLightTheme\n\nconst isAllSelected = computed(() => multiSelectContext.isAllSelected())\nconst isPartiallySelected = computed(() => multiSelectContext.isPartiallySelected())\n\nconst isChecked = computed(() =>\n isAllSelected.value || isPartiallySelected.value\n)\n\nconst checkedStyle = computed<CheckedStyleType>(() =>\n isAllSelected.value ? 'mark' : 'indeterminate'\n)\n\nconst handleClick = (e: MouseEvent) => {\n e.preventDefault()\n multiSelectContext.onToggleAll()\n}\n</script>\n","<template>\n <slot v-if=\"$slots.default\" />\n <template v-else>\n <Option ref=\"optionRef\" :class=\"styles.text\">\n {{ displayText }}\n </Option>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport Option from '@/components/Select/components/Option/Option.vue'\nimport { useMultiSelectContext } from '../../MultiSelect.context'\nimport styles from './Value.module.scss'\n\nconst DISPLAY_NAME = 'MultiSelect.Value'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n displayMode?: 'count' | 'names'\n maxDisplayItems?: number\n countTemplate?: string\n class?: string\n}>(), {\n placeholder: '',\n displayMode: 'count',\n maxDisplayItems: 2,\n countTemplate: '{n} выбрано',\n})\n\nconst multiSelectContext = useMultiSelectContext(DISPLAY_NAME)\n\nconst optionRef = ref<InstanceType<typeof Option> | null>(null)\n\nconst displayText = computed(() => {\n const selected = multiSelectContext.selectedItems\n\n if (selected.length === 0) {\n return props.placeholder\n }\n\n if (props.displayMode === 'count') {\n return props.countTemplate.replace('{n}', String(selected.length))\n }\n\n // names mode\n const visible = selected.slice(0, props.maxDisplayItems)\n const rest = selected.length - visible.length\n const names = visible.map(item => item.option).join(', ')\n\n if (rest > 0) {\n return `${names} +${rest}`\n }\n return names\n})\n\ndefineExpose({\n optionRef,\n})\n</script>\n","<template>\n <Teleport :to=\"container\" :disabled=\"!container\">\n <div ref=\"portalRef\" v-bind=\"$attrs\">\n <slot />\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport type { PortalProps } from './Portal.types'\n\ntype Props = PortalProps & {}\n\nconst props = withDefaults(defineProps<Props>(), {\n container: undefined,\n})\n\nconst portalRef = ref<HTMLDivElement | null>(null)\n\nconst container = computed(() => props.container || document.body)\n\ndefineExpose({\n portalRef,\n})\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"blockRef\"\n :class=\"styles.block\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { ContentBlockProps } from './ContentBlock.types'\nimport styles from './ContentBlock.module.scss'\n\ntype Props = ContentBlockProps\n\nconst props = defineProps<Props>()\n\nconst blockRef = ref<HTMLDivElement | null>(null)\n\ndefineExpose({\n blockRef,\n})\n</script>\n","type ContentBlockKey =\n | '--crm-ui-kit-content-block-box-shadow'\n | '--crm-ui-kit-content-block-background'\n | '--crm-ui-kit-content-block-box-sizing'\n | '--crm-ui-kit-content-block-padding'\n | '--crm-ui-kit-content-block-border-radius'\n\nexport type ContentBlockThemeType = {\n [K in ContentBlockKey]: string\n}\n\nexport const ContentBlockTheme: ContentBlockThemeType = {\n '--crm-ui-kit-content-block-box-sizing': 'border-box',\n '--crm-ui-kit-content-block-padding': '18px 18px 29px',\n '--crm-ui-kit-content-block-border-radius': '3px',\n '--crm-ui-kit-content-block-box-shadow':\n 'var(--crm-ui-kit-palette-content-block-box-shadow)',\n '--crm-ui-kit-content-block-background':\n 'var(--crm-ui-kit-palette-background-primary)',\n}\n","<template>\n <a\n ref=\"linkRef\"\n v-bind=\"$attrs\"\n :class=\"styles.link\"\n :style=\"theme\"\n >\n <slot />\n </a>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { LinkProps } from './Link.types'\nimport styles from './Link.module.scss'\n\ntype Props = LinkProps\n\nconst props = defineProps<Props>()\n\nconst linkRef = ref<HTMLAnchorElement | null>(null)\n\ndefineExpose({\n linkRef,\n})\n</script>\n","type LinkThemeKey =\n | '--crm-ui-kit-link-color'\n | '--crm-ui-kit-link-hover-color'\n | '--crm-ui-kit-link-focus-visible-outline-color'\n | '--crm-ui-kit-link-focus-visible-outline-width'\n | '--crm-ui-kit-link-focus-visible-outline-style'\n | '--crm-ui-kit-link-focus-visible-outline-offset'\n | '--crm-ui-kit-link-focus-visible-border-radius'\n | '--crm-ui-kit-link-text-decoration'\n\nexport type LinkTheme = {\n [K in LinkThemeKey]: string\n}\n\nexport const LinkPrimaryTheme: LinkTheme = {\n '--crm-ui-kit-link-color': 'var(--crm-ui-kit-palette-link-primary)',\n '--crm-ui-kit-link-hover-color':\n 'var(--crm-ui-kit-palette-link-hover-primary)',\n '--crm-ui-kit-link-text-decoration': 'underline',\n '--crm-ui-kit-link-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-link-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-link-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-link-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-link-focus-visible-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n}\n","export const SpinnerTheme = {\n '--crm-ui-kit-spinner-border-color': '#158fd2',\n '--crm-ui-kit-spinner-border-width': '2px',\n '--crm-ui-kit-spinner-circle-size': '16px',\n '--crm-ui-kit-spinner-border-style': 'solid',\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"calloutRef\"\n :class=\"styles.wrapper\"\n :style=\"themeStyles\"\n >\n <component\n :is=\"theme.Icon\"\n v-if=\"isIconAvailable\"\n :class=\"styles.icon\"\n />\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { CalloutProps } from './Callout.types'\nimport styles from './Callout.module.scss'\n\ntype Props = CalloutProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isIconAvailable: true,\n})\n\nconst calloutRef = ref<HTMLDivElement | null>(null)\n\nconst themeStyles = computed(() => {\n const { Icon, ...cssVars } = props.theme\n return cssVars\n})\n\ndefineExpose({\n calloutRef,\n})\n</script>\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\" d=\\\"M9 15.207q0-.468.292-.76c.195-.194.468-.272.799-.272.35 0 .623.097.818.272q.292.292.292.76c0 .468-.097.565-.292.76q-.292.292-.818.292c-.331 0-.585-.097-.799-.292Q9 15.675 9 15.207m.195-8.688h1.831v4.5l-.35 2.22h-1.13l-.351-2.22z\\\" clip-rule=\\\"evenodd\\\"></path><path stroke=\\\"currentColor\\\" stroke-width=\\\"1.3\\\" d=\\\"M8.666 2.47a1.542 1.542 0 0 1 2.671 0l7.804 13.518a1.542 1.542 0 0 1-1.335 2.313H2.197a1.542 1.542 0 0 1-1.335-2.313z\\\"></path></g><defs><clipPath id=\\\"a\\\"><path fill=\\\"currentColor\\\" d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"currentColor\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path d=\\\"M8.96 4.75h2.077v4.859l-.403 2.407H9.362L8.96 9.609zm-.218 9.363q0-.517.341-.812.342-.31.9-.31.59 0 .93.31.34.295.341.812 0 .516-.34.827-.342.31-.931.31-.558 0-.9-.31-.34-.31-.34-.827Z\\\"></path><path fill-rule=\\\"evenodd\\\" d=\\\"M10 1.625a8.375 8.375 0 1 0 0 16.75 8.375 8.375 0 0 0 0-16.75M.375 10a9.625 9.625 0 1 1 19.25 0 9.625 9.625 0 0 1-19.25 0\\\" clip-rule=\\\"evenodd\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g stroke=\\\"currentColor\\\" clip-path=\\\"url(#a)\\\"><path stroke-width=\\\"1.299\\\" d=\\\"M.65 10a9.35 9.35 0 1 1 18.7 0 9.35 9.35 0 0 1-18.7 0Z\\\"></path><path stroke-width=\\\"1.299\\\" d=\\\"M.65 10a9.35 9.35 0 1 1 18.7 0 9.35 9.35 0 0 1-18.7 0Z\\\"></path><path stroke-width=\\\"1.455\\\" d=\\\"m5.328 10 3.117 3.117 6.234-6.234\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"20\",\n height: \"20\",\n fill: \"currentColor\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createStaticVNode(\"<g clip-path=\\\"url(#a)\\\"><path d=\\\"M10.972 15.195H9.023V8.7h1.949v6.494Zm-.285-8.72a.96.96 0 0 1-.695.278.93.93 0 0 1-.69-.284.96.96 0 0 1-.279-.695q0-.413.285-.69a.96.96 0 0 1 .695-.279q.412 0 .69.284.279.285.279.696a.93.93 0 0 1-.285.69\\\"></path><path fill-rule=\\\"evenodd\\\" d=\\\"M10 1.299A8.701 8.701 0 1 0 10 18.7a8.701 8.701 0 0 0 0-17.4ZM0 10C0 4.477 4.477 0 10 0s10 4.477 10 10-4.477 10-10 10S0 15.523 0 10\\\" clip-rule=\\\"evenodd\\\"></path></g><defs><clipPath id=\\\"a\\\"><path d=\\\"M0 0h20v20H0z\\\"></path></clipPath></defs>\", 2)\n ]))]))\n}\nexport default { render: render }","import WarningIcon from '@/icons/warning.svg'\nimport ErrorIcon from '@/icons/error.svg'\nimport SuccessIcon from '@/icons/success.svg'\nimport InfoIcon from '@/icons/info.svg'\n\ntype CalloutKey =\n | '--crm-ui-kit-callout-background-color'\n | '--crm-ui-kit-callout-padding'\n | '--crm-ui-kit-callout-border-radius'\n | '--crm-ui-kit-callout-icon-color'\n\nexport type CalloutThemeType = {\n Icon: unknown\n} & {\n [K in CalloutKey]: string\n}\n\nexport const CalloutBaseValues: Omit<\n CalloutThemeType,\n 'Icon' | '--crm-ui-kit-callout-background-color'\n> = {\n '--crm-ui-kit-callout-padding': '12px',\n '--crm-ui-kit-callout-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n '--crm-ui-kit-callout-icon-color': 'var(--crm-ui-kit-palette-text-primary)',\n}\n\nexport const CalloutWarningTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: WarningIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-warning-background-color)',\n}\n\nexport const CalloutErrorTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: ErrorIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-error-background-color)',\n}\n\nexport const CalloutSuccessTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: SuccessIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-success-background-color)',\n}\n\nexport const CalloutInfoTheme: CalloutThemeType = {\n ...CalloutBaseValues,\n Icon: InfoIcon,\n '--crm-ui-kit-callout-background-color':\n 'var(--crm-ui-kit-palette-callout-info-background-color)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { AccordionContextProps } from './Accordion.types'\n\nconst DISPLAY_NAME = 'Accordion'\n\nconst [provideAccordionContext, useAccordionContext] =\n createComponentContext<AccordionContextProps>(DISPLAY_NAME)\n\nexport { provideAccordionContext, useAccordionContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"accordionRef\"\n :class=\"[styles.wrapper, themeClassName]\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, toRef } from 'vue'\nimport { provideAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { AccordionSingleProps } from '../../Accordion.types'\nimport type { AccordionThemeType } from '../../Accordion.themes'\nimport styles from '../../Accordion.module.scss'\n\ntype Props = AccordionSingleProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isCollapsible: false,\n})\n\nconst emit = defineEmits<{\n (e: 'change', value?: string): void\n}>()\n\nconst accordionRef = ref<HTMLDivElement | null>(null)\nconst internalValue = ref<string | undefined>(props.defaultValue)\n\nconst themeClassName = useThemeClassName<AccordionThemeType>(props.theme)\n\nconst isControlled = computed(() => 'value' in props && props.value !== undefined)\nconst currentValue = computed(() =>\n isControlled.value ? props.value : internalValue.value\n)\n\nconst getCorrectValue = (newValue: string) => {\n if (props.isCollapsible) {\n return newValue === currentValue.value ? undefined : newValue\n }\n return newValue\n}\n\nconst handleChange = (newValue: string) => {\n const correctValue = getCorrectValue(newValue)\n\n if (!isControlled.value) {\n internalValue.value = correctValue\n }\n\n emit('change', correctValue)\n}\n\n// Provide context - просто передаём computed ref напрямую\n// Vue автоматически отслеживает изменения в computed\nprovideAccordionContext({\n value: currentValue, // computed ref\n defaultValue: toRef(() => props.defaultValue),\n onChange: handleChange,\n})\n\ndefineExpose({\n accordionRef,\n})\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"accordionRef\"\n :class=\"[styles.wrapper, themeClassName]\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, toRef } from 'vue'\nimport { provideAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { AccordionMultipleProps } from '../../Accordion.types'\nimport type { AccordionThemeType } from '../../Accordion.themes'\nimport styles from '../../Accordion.module.scss'\n\ntype Props = AccordionMultipleProps\n\nconst props = withDefaults(defineProps<Props>(), {\n defaultValue: () => [],\n})\n\nconst emit = defineEmits<{\n (e: 'change', value: string[]): void\n}>()\n\nconst accordionRef = ref<HTMLDivElement | null>(null)\nconst internalValue = ref<string[]>(props.defaultValue || [])\n\nconst themeClassName = useThemeClassName<AccordionThemeType>(props.theme)\n\nconst isControlled = computed(() => 'value' in props && props.value !== undefined)\nconst currentValue = computed(() =>\n isControlled.value ? (props.value || []) : internalValue.value\n)\n\nconst getCorrectValue = (newValue: string): string[] => {\n const current = currentValue.value || []\n if (current.includes(newValue)) {\n return current.filter((val) => val !== newValue)\n }\n return [...current, newValue]\n}\n\nconst handleChange = (newValue: string) => {\n const correctValue = getCorrectValue(newValue)\n\n if (!isControlled.value) {\n internalValue.value = correctValue\n }\n\n emit('change', correctValue)\n}\n\n// Provide context - просто передаём computed ref напрямую\n// Vue автоматически отслеживает изменения в computed\nprovideAccordionContext({\n value: currentValue, // computed ref\n defaultValue: toRef(() => props.defaultValue),\n onChange: handleChange,\n})\n\ndefineExpose({\n accordionRef,\n})\n</script>\n","<template>\n <AccordionMultiple\n v-if=\"type === 'multiple'\"\n v-bind=\"($props as AccordionMultipleProps)\"\n ref=\"accordionRef\"\n >\n <slot />\n </AccordionMultiple>\n <AccordionSingle\n v-else\n v-bind=\"($props as AccordionSingleProps)\"\n ref=\"accordionRef\"\n >\n <slot />\n </AccordionSingle>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport AccordionSingle from './components/AccordionSingle/AccordionSingle.vue'\nimport AccordionMultiple from './components/AccordionMultiple/AccordionMultiple.vue'\nimport type {\n AccordionProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n} from './Accordion.types'\nimport { DISPLAY_NAME } from './Accordion.context'\n\ndefineProps<AccordionProps>()\n\nconst accordionRef = ref<\n InstanceType<typeof AccordionSingle | typeof AccordionMultiple> | null\n>(null)\n\ndefineExpose({\n accordionRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"10\",\n height: \"7\",\n fill: \"none\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n fill: \"currentColor\",\n \"fill-rule\": \"evenodd\",\n d: \"M.176.78a.574.574 0 0 1 .857 0L4.96 5.058 8.967.692a.573.573 0 0 1 .857 0 .705.705 0 0 1 0 .933L5.485 6.351a.6.6 0 0 1-.14.114.573.573 0 0 1-.83-.026L.175 1.713a.706.706 0 0 1 0-.933Z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]))]))\n}\nexport default { render: render }","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"itemRef\"\n :class=\"[\n styles.wrapper,\n {\n [styles.active]: isActive\n },\n themeClassName\n ]\"\n >\n <div :class=\"styles.header\" @click=\"handleClick\">\n <div :class=\"styles.header_left\">\n <div v-if=\"before\" :class=\"styles.before_title\">\n <component :is=\"before\" />\n </div>\n\n <Text :theme=\"TextPrimaryTheme\" size=\"xl\" :is-ellipsis=\"true\">\n {{ title }}\n </Text>\n </div>\n\n <span :class=\"styles.chevron_container\">\n <ChevronDownIcon :class=\"styles.chevron_icon\" />\n </span>\n </div>\n\n <div :class=\"styles.content\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, unref } from 'vue'\nimport ChevronDownIcon from '@/icons/chevronDown.svg'\nimport Text from '@/components/Text/Text.vue'\nimport { TextPrimaryTheme } from '@/components/Text/Text.themes'\nimport { useAccordionContext } from '../../Accordion.context'\nimport { useThemeClassName } from '@/composables/useThemeClassName'\nimport type { ItemProps } from './Item.types'\nimport type { AccordionItemThemeType } from './Item.themes'\nimport styles from './Item.module.scss'\n\nconst DISPLAY_NAME = 'Accordion.Item'\n\ntype Props = ItemProps\n\nconst props = withDefaults(defineProps<Props>(), {\n before: null,\n})\n\nconst itemRef = ref<HTMLDivElement | null>(null)\n\nconst { onChange, value: currentValue } = useAccordionContext(DISPLAY_NAME)\n\nconst themeClassName = useThemeClassName<AccordionItemThemeType>(props.theme)\n\nconst handleClick = () => {\n onChange(props.value)\n}\n\nconst isActive = computed(() => {\n const val = unref(currentValue)\n if (Array.isArray(val)) {\n return val.includes(props.value)\n }\n return val === props.value\n})\n\ndefineExpose({\n itemRef,\n})\n</script>\n","type AccordionThemeKey = '--crm-ui-kit-accordion-width'\n\nexport type AccordionThemeType = {\n [K in AccordionThemeKey]: string\n}\n\nexport const AccordionTheme: AccordionThemeType = {\n '--crm-ui-kit-accordion-width': '100%',\n}\n","type ItemThemeKey =\n | '--crm-ui-kit-accordion-item-border-radius'\n | '--crm-ui-kit-accordion-item-border-color'\n | '--crm-ui-kit-accordion-item-box-shadow'\n | '--crm-ui-kit-accordion-item-background-color'\n | '--crm-ui-kit-accordion-item-padding'\n | '--crm-ui-kit-accordion-item-margin-bottom'\n | '--crm-ui-kit-accordion-item-chevron-icon-color'\n\nexport type AccordionItemThemeType = {\n [K in ItemThemeKey]: string\n}\n\nexport const AccordionItemTheme: AccordionItemThemeType = {\n '--crm-ui-kit-accordion-item-border-radius':\n 'var(--crm-ui-kit-palette-focus-visible-border-radius)',\n '--crm-ui-kit-accordion-item-box-shadow':\n 'var(--crm-ui-kit-palette-accordion-item-box-shadow)',\n '--crm-ui-kit-accordion-item-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n '--crm-ui-kit-accordion-item-padding': '12px 12px 12px 22px',\n '--crm-ui-kit-accordion-item-margin-bottom': '16px',\n '--crm-ui-kit-accordion-item-chevron-icon-color':\n 'var(--crm-ui-kit-palette-text-primary)',\n '--crm-ui-kit-accordion-item-border-color':\n 'var(--crm-ui-kit-palette-border-primary)',\n}\n","import AccordionComponent from './Accordion.vue'\nimport Item from './components/Item/Item.vue'\n\nexport * from './Accordion.types'\nexport * from './Accordion.themes'\nexport { AccordionItemTheme, type AccordionItemThemeType } from './components/Item'\n\n// Create compound component\nconst Accordion = AccordionComponent as typeof AccordionComponent & {\n Item: typeof Item\n}\n\nAccordion.Item = Item\n\nexport { Accordion }\nexport default Accordion\n","import { createComponentContext } from '@/lib/vue'\nimport type { FilterTabsContextProps } from './FilterTabs.types'\n\nconst DISPLAY_NAME = 'FilterTabs'\n\nconst [provideFilterTabsContext, useFilterTabsContext] =\n createComponentContext<FilterTabsContextProps>(DISPLAY_NAME)\n\nexport { provideFilterTabsContext, useFilterTabsContext, DISPLAY_NAME }\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"filterTabsRef\"\n :class=\"[\n styles.filter_tabs,\n {\n [styles.horizontal]: orientation === 'horizontal'\n },\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watchEffect } from 'vue'\nimport { provideFilterTabsContext, DISPLAY_NAME } from './FilterTabs.context'\nimport type { FilterTabsProps } from './FilterTabs.types'\nimport styles from './FilterTabs.module.scss'\n\ntype Props = FilterTabsProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'horizontal',\n})\n\nconst emit = defineEmits<{\n (e: 'change', updatedValues: string[], trigger?: string): void\n}>()\n\nconst filterTabsRef = ref<HTMLDivElement | null>(null)\nconst state = ref<string[]>([])\n\nconst handleManageState = (name?: string) => {\n const prev = state.value\n\n let updatedState = prev\n\n if (!name && state.value.length) {\n updatedState = []\n }\n\n if (name) {\n const isSelected = state.value.includes(name)\n\n if (props.isMultiSelect) {\n updatedState = isSelected\n ? prev.filter((item) => item !== name)\n : [...prev, name]\n }\n\n if (!props.isMultiSelect && !isSelected) {\n updatedState = [name]\n }\n }\n\n state.value = updatedState\n emit('change', updatedState, name)\n}\n\nconst registerActiveName = (name: string) => {\n const prev = state.value\n\n if (props.isMultiSelect) {\n state.value = [...prev, name]\n return\n }\n\n if (!props.isMultiSelect && !prev.length) {\n state.value = [name]\n }\n}\n\nconst context = reactive({\n values: state.value,\n onChange: handleManageState,\n registerActiveName,\n isDisabled: props.isDisabled,\n})\n\nwatchEffect(() => {\n context.values = state.value\n context.isDisabled = props.isDisabled\n})\n\nprovideFilterTabsContext(context as any)\n\ndefineExpose({\n filterTabsRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type FilterTabsThemeKey = '--crm-ui-kit-filter-tabs-spacing'\n\nexport type FilterTabsThemeType = {\n [K in FilterTabsThemeKey]: string\n}\n\nexport const FilterTabsTheme: FilterTabsThemeType = {\n '--crm-ui-kit-filter-tabs-spacing': '8px',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { TabItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'FilterTabs.ItemRoot'\n\nconst [provideTabItemRootContext, useTabItemRootContext] =\n createComponentContext<TabItemContextProps>(DISPLAY_NAME)\n\nexport { provideTabItemRootContext, useTabItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport { useFilterTabsContext } from '../../FilterTabs.context'\nimport { provideTabItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst filterTabsContext = useFilterTabsContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => filterTabsContext.isDisabled)\nconst { registerActiveName } = filterTabsContext\n\nonMounted(() => {\n if (props.isDefaultActive && props.name) {\n registerActiveName(props.name)\n }\n})\n\nconst contextValue = computed(() => {\n const { theme, class: _class, isDefaultActive, ...rest } = props\n return rest\n})\n\nprovideTabItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-filter-tabs-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const FilterTabsItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-filter-tabs-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","<template>\n <button\n ref=\"buttonRef\"\n v-bind=\"restProps\"\n :class=\"[\n styles.button,\n {\n [styles.selected]: isSelected\n },\n className\n ]\"\n :style=\"theme\"\n :name=\"name\"\n :disabled=\"isDisabled || isItemRootDisabled\"\n @click=\"handleChange\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useFilterTabsContext } from '../../FilterTabs.context'\nimport { useTabItemRootContext } from '../ItemRoot/ItemRoot.context'\nimport type { TabProps } from './Tab.types'\nimport styles from './Tab.module.scss'\n\nconst DISPLAY_NAME = 'FilterTabs.Tab'\n\ntype Props = TabProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst { theme, class: className, ...restProps } = props\n\nconst buttonRef = ref<HTMLButtonElement | null>(null)\n\nconst filterTabsContext = useFilterTabsContext(DISPLAY_NAME)\n\nconst { name, isDisabled: isItemRootDisabled } =\n useTabItemRootContext(DISPLAY_NAME)\n\nconst isSelected = computed(() => filterTabsContext.values.includes(name))\nconst isDisabled = computed(() => filterTabsContext.isDisabled)\n\nconst handleChange = () => {\n filterTabsContext.onChange(name)\n}\n\ndefineExpose({\n buttonRef,\n})\n</script>\n","type TabThemeKey =\n | '--crm-ui-kit-filter-tabs-tab-z-index'\n | '--crm-ui-kit-filter-tabs-tab-background-color'\n | '--crm-ui-kit-filter-tabs-tab-border-width'\n | '--crm-ui-kit-filter-tabs-tab-border-radius'\n | '--crm-ui-kit-filter-tabs-tab-border-style'\n | '--crm-ui-kit-filter-tabs-tab-action-color'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-color'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-width'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-style'\n | '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-offset'\n | '--crm-ui-kit-filter-tabs-tab-text-color'\n | '--crm-ui-kit-filter-tabs-tab-hover-background-color'\n\nexport type TabThemeType = {\n [K in TabThemeKey]: string\n}\n\nexport const TabPrimaryTheme: TabThemeType = {\n '--crm-ui-kit-filter-tabs-tab-z-index': '3',\n '--crm-ui-kit-filter-tabs-tab-action-color':\n 'var(--crm-ui-kit-color-blueberry)',\n\n '--crm-ui-kit-filter-tabs-tab-border-width': '1px',\n '--crm-ui-kit-filter-tabs-tab-border-radius': '3px',\n '--crm-ui-kit-filter-tabs-tab-border-style': 'solid',\n\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-color':\n 'var(--crm-ui-kit-color-cobalt-blue)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-filter-tabs-tab-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-filter-tabs-tab-background-color':\n 'var(--crm-ui-kit-palette-surface-background-color)',\n '--crm-ui-kit-filter-tabs-tab-text-color':\n 'var(--crm-ui-kit-palette-surface-text-color)',\n '--crm-ui-kit-filter-tabs-tab-hover-background-color':\n 'var(--crm-ui-kit-palette-surface-hover-background-color)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxContextProps } from './CheckboxGroup.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup'\n\nconst [provideCheckboxGroupContext, useCheckboxGroupContext] =\n createComponentContext<CheckboxContextProps>(DISPLAY_NAME)\n\nexport { provideCheckboxGroupContext, useCheckboxGroupContext, DISPLAY_NAME }\n","import { ref, watch, nextTick, type Ref } from 'vue'\nimport type {\n InternalCheckboxGroupChangeEvent,\n RegisterHandlerType,\n CheckboxStateType,\n CheckboxGroupChangeEvent,\n} from '../CheckboxGroup.types'\n\nexport interface UseCheckboxGroupStateArgs {\n isDisabled?: boolean\n onChange: Ref<CheckboxGroupChangeEvent | undefined>\n}\n\nexport const useCheckboxGroupState = ({\n isDisabled,\n onChange,\n}: UseCheckboxGroupStateArgs) => {\n const state = ref<Map<string, CheckboxStateType>>(new Map())\n const registeredComponents = ref<Record<string, boolean>>({})\n const queueComponents = ref<CheckboxStateType[]>([])\n\n const handleChange = (changeEvent: InternalCheckboxGroupChangeEvent) => {\n const copyState = new Map(state.value)\n\n if (changeEvent.type === 'selectAll' && !isDisabled) {\n const isSomeChecked = Array.from(copyState.values()).some(\n (checkbox) => checkbox.isChecked && !checkbox.isDisabled\n )\n\n copyState.forEach((checkbox) => {\n if (!checkbox.isDisabled) {\n checkbox.isChecked = !isSomeChecked\n }\n })\n }\n\n if (changeEvent.type === 'checkbox' && !isDisabled) {\n const currentCheckbox = copyState.get(changeEvent.name)\n\n if (currentCheckbox && !currentCheckbox.isDisabled) {\n copyState.set(currentCheckbox.name, {\n ...currentCheckbox,\n isChecked: !currentCheckbox.isChecked,\n })\n }\n }\n\n state.value = copyState\n if (typeof onChange.value === 'function') {\n onChange.value([...copyState.values()], changeEvent)\n }\n }\n\n watch(\n () => queueComponents.value.length,\n async () => {\n if (queueComponents.value.length) {\n await nextTick()\n const queue = [...queueComponents.value]\n queueComponents.value = []\n\n const copyState = new Map(state.value)\n queue.forEach((checkbox) => copyState.set(checkbox.name, checkbox))\n state.value = copyState\n }\n },\n { flush: 'post' }\n )\n\n const register: RegisterHandlerType = (name, options = {}) => {\n if (name !== 'selectAll' && !registeredComponents.value[name]) {\n registeredComponents.value[name] = true\n\n queueComponents.value.push({\n name,\n isChecked: Boolean(options.isDefaultChecked),\n isDisabled: Boolean(options.isDisabled),\n })\n }\n\n return {\n name,\n onChange: handleChange,\n ...options,\n }\n }\n\n return {\n state,\n register,\n }\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"checkboxGroupRef\"\n :class=\"[\n styles.checkbox_group,\n {\n [styles.horizontal]: orientation === 'horizontal'\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, toRef, watchEffect } from 'vue'\nimport { provideCheckboxGroupContext, DISPLAY_NAME } from './CheckboxGroup.context'\nimport { useCheckboxGroupState } from './composables/useCheckboxGroupState'\nimport type { CheckboxGroupProps } from './CheckboxGroup.types'\nimport styles from './CheckboxGroup.module.scss'\n\ntype Props = CheckboxGroupProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'vertical',\n})\n\nconst checkboxGroupRef = ref<HTMLDivElement | null>(null)\n\nconst { register, state } = useCheckboxGroupState({\n onChange: toRef(props, 'onChange'),\n isDisabled: props.isDisabled,\n})\n\n// Provide reactive context — provide once, update reactively\nconst context = reactive({\n values: state.value,\n register,\n isDisabled: props.isDisabled,\n})\n\nwatchEffect(() => {\n context.values = state.value\n context.isDisabled = props.isDisabled\n})\n\nprovideCheckboxGroupContext(context as any)\n\ndefineExpose({\n checkboxGroupRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type CheckboxGroupThemeKey = '--crm-ui-kit-checkbox-group-spacing'\n\nexport type CheckboxGroupThemeType = {\n [K in CheckboxGroupThemeKey]: string\n}\n\nexport const CheckboxGroupTheme: CheckboxGroupThemeType = {\n '--crm-ui-kit-checkbox-group-spacing': '8px',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.ItemRoot'\n\nconst [provideCheckboxItemRootContext, useCheckboxItemRootContext] =\n createComponentContext<CheckboxItemContextProps>(DISPLAY_NAME)\n\nexport { provideCheckboxItemRootContext, useCheckboxItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport { provideCheckboxItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => groupContext.isDisabled)\n\nconst contextValue = computed(() => {\n const { theme, class: _class, ...checkboxProps } = props\n return {\n ...groupContext.register(props.name, checkboxProps),\n value: props.value,\n }\n})\n\nprovideCheckboxItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-checkbox-group-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const CheckboxGroupItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-checkbox-group-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","import { createComponentContext } from '@/lib/vue'\nimport type { CheckboxItemSelectAllContextValue } from './ItemRootSelectAll.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.ItemRootSelectAll'\n\nconst [\n provideCheckboxItemRootSelectAllContext,\n useCheckboxItemRootSelectAllContext,\n] = createComponentContext<CheckboxItemSelectAllContextValue>(DISPLAY_NAME)\n\nexport {\n provideCheckboxItemRootSelectAllContext,\n useCheckboxItemRootSelectAllContext,\n DISPLAY_NAME,\n}\n","<template>\n <div\n :class=\"[\n styles.item_root,\n props.class,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport {\n provideCheckboxItemRootSelectAllContext,\n DISPLAY_NAME,\n} from './ItemRootSelectAll.context'\nimport type { ItemRootSelectAllProps } from './ItemRootSelectAll.types'\nimport styles from '../ItemRoot/ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootSelectAllProps>()\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => groupContext.isDisabled)\n\nconst contextValue = computed(() => {\n const { theme, class: _class, ...rest } = props\n return {\n ...groupContext.register('selectAll'),\n ...rest,\n }\n})\n\nprovideCheckboxItemRootSelectAllContext(contextValue.value)\n</script>\n","<template>\n <CheckboxCore\n ref=\"checkboxRef\"\n :class=\"className_\"\n :theme=\"theme\"\n :value=\"SELECT_ALL\"\n :is-disabled=\"groupContext.isDisabled || selectAllContext.isDisabled\"\n :is-checked=\"propsBasedOnInternalState.isChecked\"\n :checked-style=\"propsBasedOnInternalState.checkedStyle\"\n v-bind=\"rest\"\n @change=\"handleChange\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport CheckboxCore from '@/components/Checkbox/Checkbox.vue'\nimport type { CheckedStyleType } from '@/components/Checkbox/Checkbox.types'\nimport { useCheckboxGroupContext } from '../../CheckboxGroup.context'\nimport { useCheckboxItemRootSelectAllContext } from './ItemRootSelectAll.context'\nimport type { CheckboxProps } from '../Checkbox/Checkbox.types'\n\nconst DISPLAY_NAME = 'CheckboxGroup.CheckboxSelectAll'\nconst SELECT_ALL = 'selectAll'\n\ntype Props = CheckboxProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst { theme, class: className_, checkedStyle: _checkedStyle, ...rest } = props\n\nconst checkboxRef = ref<InstanceType<typeof CheckboxCore> | null>(null)\n\nconst groupContext = useCheckboxGroupContext(DISPLAY_NAME)\n\nconst selectAllContext = useCheckboxItemRootSelectAllContext(DISPLAY_NAME)\n\nconst handleChange = () => {\n selectAllContext.onChange({ type: SELECT_ALL, name: SELECT_ALL })\n}\n\nconst propsBasedOnInternalState = computed(() => {\n const vals = groupContext.values\n const allChecked = Array.from(vals.values()).every(\n (checkbox) => checkbox.isChecked\n )\n const checkedStyle: CheckedStyleType = allChecked ? 'mark' : 'indeterminate'\n\n return {\n isChecked: Array.from(vals.values()).some(\n (checkbox) => checkbox.isChecked\n ),\n checkedStyle,\n }\n})\n\ndefineExpose({\n checkboxRef,\n})\n</script>\n","import { createComponentContext } from '@/lib/vue'\nimport type { RadioContextProps } from './RadioGroup.types'\n\nconst DISPLAY_NAME = 'RadioGroup'\n\nconst [provideRadioGroupContext, useRadioGroupContext] =\n createComponentContext<RadioContextProps>(DISPLAY_NAME)\n\nexport { provideRadioGroupContext, useRadioGroupContext, DISPLAY_NAME }\n","import { createComponentContext } from '@/lib/vue'\nimport type { RadioItemContextProps } from './ItemRoot.types'\n\nconst DISPLAY_NAME = 'RadioGroup.ItemRoot'\n\nconst [provideRadioItemRootContext, useRadioItemRootContext] =\n createComponentContext<RadioItemContextProps>(DISPLAY_NAME)\n\nexport { provideRadioItemRootContext, useRadioItemRootContext, DISPLAY_NAME }\n","<template>\n <div\n :class=\"[\n styles.item_root,\n {\n [styles.disabled]: groupIsDisabled || isDisabled\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useRadioGroupContext } from '../../RadioGroup.context'\nimport { provideRadioItemRootContext, DISPLAY_NAME } from './ItemRoot.context'\nimport type { ItemRootProps } from './ItemRoot.types'\nimport styles from './ItemRoot.module.scss'\n\nconst props = defineProps<ItemRootProps>()\n\nconst radioGroupContext = useRadioGroupContext(DISPLAY_NAME)\nconst groupIsDisabled = computed(() => radioGroupContext.isDisabled)\n\n// Provide context for Radio component\nconst contextValue = computed(() => {\n const { theme, ...rest } = props\n return rest\n})\n\nprovideRadioItemRootContext(contextValue.value)\n</script>\n","type ItemRootKey = '--crm-ui-kit-radio-group-item-root-disabled-opacity'\n\nexport type ItemRootThemeType = {\n [K in ItemRootKey]: string\n}\n\nexport const RadioGroupItemRootTheme: ItemRootThemeType = {\n '--crm-ui-kit-radio-group-item-root-disabled-opacity':\n 'var(--crm-ui-kit-disabled-opacity)',\n}\n","<template>\n <div :class=\"[styles.wrapper, itemRootClass]\" :style=\"theme\">\n <VisuallyHiddenInput\n ref=\"inputRef\"\n :class=\"[styles.input, props.class]\"\n type=\"radio\"\n :value=\"value\"\n :is-disabled=\"radioGroupContext.isDisabled || itemRootIsDisabled\"\n v-bind=\"propsBasedOnType\"\n />\n <span :class=\"styles.radio\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport VisuallyHiddenInput from '@/components/VisuallyHiddenInput/VisuallyHiddenInput.vue'\nimport { useRadioGroupContext } from '../../RadioGroup.context'\nimport { useRadioItemRootContext } from '../ItemRoot/ItemRoot.context'\nimport type { RadioProps } from './Radio.types'\nimport styles from './Radio.module.scss'\n\nconst DISPLAY_NAME = 'RadioGroup.Radio'\n\ntype Props = RadioProps & {\n class?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n class: '',\n})\n\nconst inputRef = ref<InstanceType<typeof VisuallyHiddenInput> | null>(null)\n\nconst radioGroupContext = useRadioGroupContext(DISPLAY_NAME)\n\nconst {\n value,\n isDisabled: itemRootIsDisabled,\n class: itemRootClass,\n ...restItemRoot\n} = useRadioItemRootContext(DISPLAY_NAME)\n\nconst propsBasedOnType = computed(() => {\n const baseProps = {\n name: radioGroupContext.name,\n onChange: radioGroupContext.onChange,\n ...restItemRoot,\n }\n\n if (radioGroupContext.defaultValue) {\n return {\n isDefaultChecked: radioGroupContext.defaultValue === value,\n ...baseProps,\n }\n }\n\n return {\n isChecked: radioGroupContext.value === value,\n ...baseProps,\n }\n})\n\ndefineExpose({\n inputRef,\n})\n</script>\n","type RadioThemeKey =\n | '--crm-ui-kit-radio-size'\n | '--crm-ui-kit-radio-z-index'\n | '--crm-ui-kit-radio-background-color'\n | '--crm-ui-kit-radio-border-width'\n | '--crm-ui-kit-radio-border-radius'\n | '--crm-ui-kit-radio-border-style'\n | '--crm-ui-kit-radio-border-color'\n | '--crm-ui-kit-radio-checked-circle-size'\n | '--crm-ui-kit-radio-checked-circle-color'\n | '--crm-ui-kit-radio-focus-visible-outline-color'\n | '--crm-ui-kit-radio-focus-visible-outline-width'\n | '--crm-ui-kit-radio-focus-visible-outline-style'\n | '--crm-ui-kit-radio-focus-visible-outline-offset'\n | '--crm-ui-kit-radio-focus-visible-border-radius'\n\nexport type RadioThemeType = {\n [K in RadioThemeKey]: string\n}\n\nexport const RadioPrimaryTheme: RadioThemeType = {\n '--crm-ui-kit-radio-size': '20px',\n '--crm-ui-kit-radio-z-index': '3',\n '--crm-ui-kit-radio-checked-circle-size': '8px',\n '--crm-ui-kit-radio-checked-circle-color':\n 'var(--crm-ui-kit-color-blueberry)',\n\n '--crm-ui-kit-radio-border-width': '1px',\n '--crm-ui-kit-radio-border-radius': '50%',\n '--crm-ui-kit-radio-border-style': 'solid',\n '--crm-ui-kit-radio-border-color': 'var(--crm-ui-kit-palette-border-primary)',\n '--crm-ui-kit-radio-background-color':\n 'var(--crm-ui-kit-palette-background-primary)',\n\n '--crm-ui-kit-radio-focus-visible-outline-color':\n 'var(--crm-ui-kit-palette-focus-visible-color)',\n '--crm-ui-kit-radio-focus-visible-outline-width':\n 'var(--crm-ui-kit-palette-focus-visible-outline-width)',\n '--crm-ui-kit-radio-focus-visible-outline-style':\n 'var(--crm-ui-kit-palette-focus-visible-outline-style)',\n '--crm-ui-kit-radio-focus-visible-outline-offset':\n 'var(--crm-ui-kit-palette-focus-visible-outline-offset)',\n '--crm-ui-kit-radio-focus-visible-border-radius': '50%',\n}\n","<template>\n <div\n v-bind=\"$attrs\"\n ref=\"radiogroupRef\"\n role=\"radiogroup\"\n :class=\"[\n styles.radiogroup,\n {\n [styles.horizontal]: orientation === 'horizontal'\n }\n ]\"\n :style=\"theme\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue'\nimport { provideRadioGroupContext, DISPLAY_NAME } from './RadioGroup.context'\nimport type { RadioGroupProps } from './RadioGroup.types'\nimport styles from './RadioGroup.module.scss'\n\ntype Props = RadioGroupProps\n\nconst props = withDefaults(defineProps<Props>(), {\n isDisabled: false,\n orientation: 'vertical',\n})\n\nconst emit = defineEmits<{\n (e: 'change', value: string): void\n}>()\n\nconst radiogroupRef = ref<HTMLDivElement | null>(null)\n\nconst handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n emit('change', target.value)\n}\n\n// Use reactive getters for proper reactivity propagation\nconst context = reactive({\n get name() { return props.name },\n get value() { return props.value },\n get defaultValue() { return props.defaultValue },\n get isDisabled() { return props.isDisabled },\n onChange: handleChange,\n})\n\nprovideRadioGroupContext(context as any)\n\ndefineExpose({\n radiogroupRef,\n})\n</script>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport Label from '@/components/Label/Label.vue'\nimport { ItemRoot } from './components/ItemRoot'\nimport { Radio } from './components/Radio'\n\nexport default defineComponent({\n name: DISPLAY_NAME,\n})\n</script>\n","type RadioGroupThemeKey = '--crm-ui-kit-radio-group-spacing'\n\nexport type RadioGroupThemeType = {\n [K in RadioGroupThemeKey]: string\n}\n\nexport const RadioGroupTheme: RadioGroupThemeType = {\n '--crm-ui-kit-radio-group-spacing': '8px',\n}\n","// Главный файл экспорта библиотеки @flysk-tech/amocrm-kommo-vue-ui-kit\n\n// Стили\nimport './styles/index.scss'\n\n// Типы\nexport * from './types'\n\n// Композиционные функции\nexport * from './composables'\n\n// Утилиты\nexport * from './utils'\n\n// Компоненты\nexport * from './components'\n\n// Версия библиотеки\nexport const version = '0.0.1'\n\n// Функция для установки библиотеки как плагина Vue\nimport type { App } from 'vue'\n\nexport interface AmoCrmUiKitOptions {\n // Опции конфигурации будут добавлены позже\n}\n\nexport function install(app: App, options?: AmoCrmUiKitOptions) {\n // Регистрация компонентов будет добавлена по мере их создания\n // Plugin installation — component registration will be added as components are completed\n}\n\n// Экспорт по умолчанию для использования как плагин\nexport default {\n install,\n version\n}"],"names":["Appearance","APPEARANCE_ATTRIBUTE_NAME","DEFAULT_APPEARANCE","THEME_PROVIDER_KEY","provideTheme","initialConfig","themeConfig","ref","appearance","computed","setTheme","config","updateDocumentTheme","setAppearance","newAppearance","mode","toggleTheme","newMode","context","readonly","provide","useTheme","inject","property","value","useThemeMode","useThemeVariables","useComponentTheme","componentName","theme","themeRef","cssVariables","vars","key","cssVarName","styleVars","styles","createComponentTheme","defaultTheme","customTheme","usePortal","targetSelector","portalTarget","isReady","createPortalTarget","selector","target","onMounted","onUnmounted","createPortalId","prefix","PORTAL_TARGETS","useModalPortal","useTooltipPortal","useDropdownPortal","useFieldValidation","initialValue","rules","error","isDirty","isValid","validate","rule","result","clearError","touch","useFormValidation","initialValues","fields","errors","fieldRules","isFormValid","field","hasErrors","validateField","fieldName","validateForm","newErrors","clearErrors","clearFieldError","_a","setFieldError","getFieldValue","setFieldValue","ValidationRules","message","min","max","emailRegex","regex","DEFAULT_PREFIX","counter","stylesMap","createClass","newTheme","className","styleElement","stylesString","useThemeClassName","currentTheme","currentEntry","updateClassName","existedEntry","themeClassName","entry","watch","onBeforeUnmount","noop","generateId","cn","classes","debounce","func","wait","timeout","args","later","throttle","limit","inThrottle","isObject","deepMerge","source","sourceValue","targetValue","isSupported","feature","inputRef","__expose","_createElementBlock","_mergeProps","_ctx","_unref","__props","props","inputProps","isChecked","isDefaultChecked","rest","getInputElement","el","val","_openBlock","_createBlock","BaseInput","$attrs","useShowInvalidAnimation","shouldShowInvalidAnimation","onAnimationEnd","useShowSuccessfulState","shouldShowSuccessfulState","emit","__emit","showInvalidAnimation","showSuccessfulState","spinnerThemes","_b","_c","_d","disabledTheme","_e","handleClick","event","_createElementVNode","_normalizeClass","_hoisted_2","_createTextVNode","_toDisplayString","_renderSlot","_createVNode","Spinner","_Fragment","ButtonBaseThemeValues","ButtonNeutralTheme","ButtonPrimaryTheme","ButtonSecondaryTheme","TextBaseSizesTheme","TextPrimaryTheme","TextSecondaryLightTheme","TextSecondaryDarkTheme","TextErrorTheme","InputBaseValues","InputLightTheme","InputDarkTheme","InputInvalidTextTheme","InputPrimaryTheme","InputSecondaryTheme","attrs","useAttrs","inputAttrs","_","__","effectiveTheme","invalidTextTheme","handleInput","handleChange","handleFocus","handleBlur","$slots","textareaRef","autoResize","nextTick","newValue","TextAreaBaseValues","TextareaLightTheme","TextareaDarkTheme","isLineClampAllowed","InlineInputBaseValues","InlineInputPrimaryTheme","InlineInputPrimaryFocusedTheme","InlineInputInvalidTextTheme","Text","VisuallyHiddenInput","labelRef","textPlacementMap","textPlacementClass","_hoisted_1","SwitcherPrimaryTheme","ENTER","SPACEBAR","buttonRef","handleKeyDown","e","SelectButtonBaseValues","SelectButtonLightTheme","SelectButtonDarkTheme","createComponentContext","rootComponentName","defaultContext","consumerName","DISPLAY_NAME","provideSelectContext","useSelectContext","__default__","defineComponent","selectRef","internalIsOpened","internalHoveredIndex","internalDefaultValue","isControlled","instance","getCurrentInstance","isOpenControlled","vnode","selected","currentIsOpen","reactive","v","index","item","open","SelectRootTheme","OptionTextTheme","optionRef","selectContext","itemRef","isSelected","isHovered","Option","SelectItemTheme","BASE_WIDTH","BASE_HEIGHT","arrowRef","SelectArrowTheme","iconRef","SelectIconTheme","listRef","slots","_useSlots","itemsLength","hoveredIndex","ListTheme","handleToggle","newVal","oldVal","SelectButton","useOnOutsideClick","handler","useSlots","items","child","itemsMap","map","effectiveHoveredIndex","idx","handleHoveredIndexChange","handleListToggle","toggle","handleItemSelect","listElRef","opened","_Teleport","BaseList","shouldShowPlaceholder","provideMultiSelectContext","useMultiSelectContext","multiSelectRef","internalHoveredValue","searchQuery","internalValues","currentValues","allItems","selectedItems","vals","handleOpen","handleToggleItem","newValues","i","handleToggleGroup","groupId","groupItems","allSelected","handleToggleAll","getGroupItems","isGroupAllSelected","isGroupPartiallySelected","selectedCount","isAllSelected","isPartiallySelected","handleHoveredItemChange","handleSearchChange","query","isItemMatchingSearch","q","isGroupMatchingSearch","newItems","validValues","currentVals","staleValues","MultiSelectRootTheme","isTouchableDevice","isTouchable","groupRef","childrenArray","_renderList","_resolveDynamicComponent","LabelGroupTheme","LabelTheme","CheckboxBaseValues","CheckboxLightTheme","CheckboxSmallLightTheme","CheckboxDarkTheme","CheckboxSmallDarkTheme","CheckboxLabelTheme","multiSelectContext","checkboxTheme","isVisible","Checkbox","MultiSelectItemTheme","COLOR_PATTERN","hasNoChildren","checkedStyle","isValidColor","color","headerStyle","base","handleHeaderClick","MultiSelectGroupTheme","containerRef","groupsMap","g","displayText","groupIds","fullySelectedGroups","id","label","firstLabel","handleContainerClick","MultiSelectComboboxTheme","MultiSelectComboboxInlineTheme","MultiSelectSearchTheme","extractItems","vnodes","slotFn","slotChildren","children","itemsCount","localHoveredIndex","currentHoveredIndex","total","visible","names","portalRef","container","blockRef","ContentBlockTheme","linkRef","LinkPrimaryTheme","SpinnerTheme","calloutRef","themeStyles","Icon","cssVars","render","_cache","_createStaticVNode","WarningIcon","ErrorIcon","SuccessIcon","InfoIcon","CalloutBaseValues","CalloutWarningTheme","CalloutErrorTheme","CalloutSuccessTheme","CalloutInfoTheme","provideAccordionContext","useAccordionContext","accordionRef","internalValue","currentValue","getCorrectValue","correctValue","toRef","current","AccordionMultiple","$props","AccordionSingle","ChevronDownIcon","onChange","isActive","unref","AccordionTheme","AccordionItemTheme","Accordion","AccordionComponent","Item","provideFilterTabsContext","useFilterTabsContext","filterTabsRef","state","handleManageState","name","prev","updatedState","registerActiveName","watchEffect","FilterTabsTheme","provideTabItemRootContext","useTabItemRootContext","filterTabsContext","groupIsDisabled","contextValue","_class","isDefaultActive","FilterTabsItemRootTheme","restProps","isItemRootDisabled","isDisabled","TabPrimaryTheme","provideCheckboxGroupContext","useCheckboxGroupContext","useCheckboxGroupState","registeredComponents","queueComponents","changeEvent","copyState","isSomeChecked","checkbox","currentCheckbox","queue","options","checkboxGroupRef","register","CheckboxGroupTheme","provideCheckboxItemRootContext","groupContext","checkboxProps","CheckboxGroupItemRootTheme","provideCheckboxItemRootSelectAllContext","useCheckboxItemRootSelectAllContext","SELECT_ALL","className_","_checkedStyle","checkboxRef","selectAllContext","propsBasedOnInternalState","CheckboxCore","provideRadioGroupContext","useRadioGroupContext","provideRadioItemRootContext","useRadioItemRootContext","radioGroupContext","RadioGroupItemRootTheme","itemRootIsDisabled","itemRootClass","restItemRoot","propsBasedOnType","baseProps","RadioPrimaryTheme","radiogroupRef","RadioGroupTheme","version","install","app"],"mappings":"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"}