{"version":3,"sources":["jsdelivr-header.js","/npm/@descope/web-components-ui@2.2.11/src/constants.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/index.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/componentHelpers.js","/npm/libs/common/src/constants.js","/npm/libs/common/src/utils/index.js","/npm/libs/common/src/componentsHelpers/index.js","/npm/libs/common/src/themeHelpers/componentsThemeManager.js","/npm/libs/common/src/themeHelpers/colorsHelpers.js","/npm/libs/common/src/themeHelpers/resetHelpers.js","/npm/libs/common/src/themeHelpers/index.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/themeHelpers/colorsHelpers.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/themeHelpers/resetHelpers.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/themeHelpers/index.js","/npm/@descope/web-components-ui@2.2.11/src/theme/globals.js","/npm/libs/theme-globals/src/index.js","/npm/libs/common/src/componentsMixins/mixins/createStyleMixin/helpers.js","/npm/libs/common/src/componentsMixins/mixins/createStyleMixin/index.js","/npm/libs/common/src/componentsMixins/mixins/draggableMixin.js","/npm/libs/common/src/componentsMixins/mixins/componentNameValidationMixin.js","/npm/libs/common/src/componentsMixins/mixins/componentsContextMixin.js","/npm/libs/common/src/componentsMixins/mixins/hoverableMixin.js","/npm/libs/common/src/componentsMixins/mixins/normalizeBooleanAttributesMixin.js","/npm/libs/common/src/baseClasses/baseClasses/createBaseClass.js","/npm/libs/common/src/componentsMixins/helpers/mixinsHelpers.js","/npm/libs/common/src/componentsMixins/mixins/changeMixin.js","/npm/libs/common/src/componentsMixins/mixins/inputEventsDispatchingMixin.js","/npm/libs/common/src/componentsMixins/mixins/inputValidationMixin.js","/npm/libs/common/src/baseClasses/baseClasses/createBaseInputClass.js","/npm/libs/common/src/baseClasses/baseClasses/createBaseConnectorClass.js","/npm/libs/common/src/componentsMixins/mixins/createProxy.js","/npm/libs/common/src/componentsMixins/mixins/proxyInputMixin.js","/npm/libs/common/src/componentsMixins/mixins/portalMixin.js","/npm/libs/common/src/componentsMixins/mixins/connectorMixin.js","/npm/libs/common/src/componentsMixins/mixins/createDynamicDataMixin.js","/npm/libs/common/src/componentsMixins/mixins/activeableMixin.js","/npm/@descope/components/descope-image/src/component/helpers.js","/npm/@descope/components/descope-image/src/component/ImageClass.js","/npm/@descope/components/descope-icon/src/component/IconClass.js","/npm/@descope/components/descope-button/src/component/clickableMixin.js","/npm/@descope/components/descope-button/src/component/ButtonClass.js","/npm/@descope/components/descope-button/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/createStyleMixin/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/createStyleMixin/index.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/draggableMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/componentNameValidationMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/componentsContextMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/hoverableMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/normalizeBooleanAttributesMixin.js","/npm/@descope/web-components-ui@2.2.11/src/baseClasses/createBaseClass.js","/npm/@descope/web-components-ui@2.2.11/src/helpers/mixinsHelpers.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/createProxy.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/inputValidationMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/proxyInputMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/portalMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/changeMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/inputEventsDispatchingMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/externalInputHelpers.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/externalInputMixin.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/inputOverrideValidConstraints.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-text-field/textFieldMappings.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-text-field/TextFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/inputWrapper.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/textField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-password/passwordDraggableMixin.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-password/PasswordClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/password.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-number-field/NumberFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/numberField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-email-field/EmailFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/emailField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-text-area/TextAreaClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/textArea.js","/npm/@descope/components/descope-enriched-text/src/component/consts.js","/npm/@descope/components/descope-enriched-text/src/component/helpers.js","/npm/@descope/components/descope-enriched-text/src/component/EnrichedTextClass.js","/npm/@descope/web-components-ui@2.2.11/src/baseClasses/createBaseInputClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/boolean-fields/descope-boolean-field-internal/BooleanFieldInternal.js","/npm/@descope/web-components-ui@2.2.11/src/components/boolean-fields/booleanFieldMixin.js","/npm/@descope/web-components-ui@2.2.11/src/components/boolean-fields/commonStyles.js","/npm/@descope/web-components-ui@2.2.11/src/components/boolean-fields/descope-checkbox/CheckboxClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/checkbox.js","/npm/@descope/web-components-ui@2.2.11/src/components/boolean-fields/descope-switch-toggle/SwitchToggleClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/switchToggle.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-container/ContainerClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/container.js","/npm/@descope/web-components-ui@2.2.11/src/baseClasses/createCssVarImageClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-logo/LogoClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/logo.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-totp-image/TotpImageClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/totpImage.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-notp-image/NotpImageClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/notpImage.js","/npm/@descope/components/descope-text/src/component/TextClass.js","/npm/@descope/components/descope-text/src/theme.js","/npm/@descope/components/descope-link/src/component/LinkClass.js","/npm/@descope/components/descope-link/src/theme.js","/npm/@descope/components/descope-enriched-text/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-divider/DividerClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/divider.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-passcode/descope-passcode-internal/PasscodeInternal.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-loader-radial/LoaderRadialClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-passcode/PasscodeClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/passcode.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-loader-linear/LoaderLinearClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/loader/loaderLinear.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/loader/loaderRadial.js","/npm/@descope/components/descope-combo-box/src/component/ComboBoxClass.js","/npm/libs/theme-input-wrapper/src/index.js","/npm/@descope/components/descope-combo-box/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/components/phone-fields/CountryCodes.js","/npm/@descope/web-components-ui@2.2.11/src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js","/npm/@descope/web-components-ui@2.2.11/src/components/phone-fields/descope-phone-field/PhoneFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/phoneField.js","/npm/@descope/web-components-ui@2.2.11/src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js","/npm/@descope/web-components-ui@2.2.11/src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/phoneInputBoxField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-new-password/descope-new-password-internal/componentName.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-policy-validation/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-policy-validation/PolicyValidationClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-new-password/NewPasswordClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/newPassword.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-upload-file/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-upload-file/UploadFileClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/uploadFile.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/buttonSelectionGroup/buttonSelectionGroupItem.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/createBaseButtonSelectionGroupInternalClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/descope-button-selection-group-internal/ButtonSelectionGroupInternalClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/baseButtonSelectionGroup.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/buttonSelectionGroup/baseButtonSelectionGroup.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/buttonSelectionGroup/buttonSelectionGroup.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/buttonSelectionGroup/buttonMultiSelectionGroup.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-modal/ModalClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/modal.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-grid/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-grid/GridClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/grid.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-notification/descope-notification-card/NotificationCardClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/notificationCard.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-multi-select-combo-box/MultiSelectComboBoxClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/multiSelectComboBox.js","/npm/@descope/components/descope-badge/src/component/BadgeClass.js","/npm/@descope/components/descope-badge/src/theme.js","/npm/@descope/components/descope-avatar/src/component/AvatarClass.js","/npm/@descope/components/descope-avatar/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/MappingsFieldInternal.js","/npm/@descope/web-components-ui@2.2.11/src/components/mapping-fields/descope-mappings-field/MappingsFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/mappingsField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-user-attribute/delete.svg","/npm/@descope/web-components-ui@2.2.11/src/components/descope-user-attribute/edit.svg","/npm/@descope/web-components-ui@2.2.11/src/components/descope-user-attribute/UserAttributeClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/userAttribute.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-user-auth-method/green-v.svg","/npm/@descope/web-components-ui@2.2.11/src/components/descope-user-auth-method/UserAuthMethodClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/userAuthMethod.js","/npm/@descope/web-components-ui@2.2.11/src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/SamlGroupMappingsInternal.js","/npm/@descope/web-components-ui@2.2.11/src/components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/samlGroupMappings.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/policyValidation.js","/npm/@descope/components/descope-icon/src/theme.js","/npm/@descope/components/descope-image/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-code-snippet/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-code-snippet/CodeSnippetClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/codeSnippet.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-radio-group/RadioButtonClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-radio-group/RadioGroupClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/radioGroup/radioGroup.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/radioGroup/radioButton.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/consts.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/date-utils.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/formats.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/icons.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/descope-calendar/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/descope-calendar/CalendarClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/calendar.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/DateCounterClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-date-field/DateFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/dateField.js","/npm/@descope/components/descope-list-item/src/component/ListItemClass.js","/npm/@descope/components/descope-list/src/component/ListClass.js","/npm/@descope/components/descope-apps-list/src/component/AppsListClass.js","/npm/@descope/components/descope-apps-list/src/theme.js","/npm/@descope/components/descope-list/src/theme.js","/npm/@descope/components/descope-list-item/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/mixins/createDynamicDataMixin.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-scopes-list/ScopesListClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/scopesList.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-third-party-app-logo/arrows.svg","/npm/@descope/web-components-ui@2.2.11/src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/thirdPartyAppLogo.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-security-questions-setup/SecurityQuestionsSetupClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/securityQuestionsSetup.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-security-questions-verify/SecurityQuestionsVerifyClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/securityQuestionsVerify.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-hybrid-field/helpers.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-hybrid-field/HybridFieldClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/hybridField.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-alert/AlertClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/alert.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-hcaptcha/HcaptchaClass.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/hcaptcha.js","/npm/@descope/components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","/npm/@descope/components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","/npm/@descope/components/descope-autocomplete-field/src/theme.js","/npm/@descope/components/descope-address-field/src/connectors/googleScriptInit.js","/npm/@descope/components/descope-address-field/src/connectors/google.js","/npm/@descope/components/descope-address-field/src/connectors/radar.js","/npm/@descope/components/descope-address-field/src/component/descope-address-field-internal/AddressFieldInternal.js","/npm/@descope/components/descope-address-field/src/component/AddressFieldClass.js","/npm/@descope/components/descope-address-field/src/theme.js","/npm/@descope/components/descope-timer/src/component/clock.svg","/npm/@descope/components/descope-timer/src/component/helpers.js","/npm/@descope/components/descope-timer/src/component/TimerClass.js","/npm/@descope/components/descope-timer/src/theme.js","/npm/@descope/components/descope-timer-button/src/component/TimerButtonClass.js","/npm/@descope/components/descope-timer-button/src/theme.js","/npm/@descope/components/descope-password-strength/src/component/PasswordStrengthClass.js","/npm/@descope/components/descope-password-strength/src/theme.js","/npm/@descope/components/descope-collapsible-container/src/component/chevron.svg","/npm/@descope/components/descope-collapsible-container/src/component/CollapsibleContainerClass.js","/npm/@descope/components/descope-collapsible-container/src/theme.js","/npm/@descope/components/descope-recovery-codes/src/component/RecoveryCodesClass.js","/npm/@descope/components/descope-recovery-codes/src/theme.js","/npm/@descope/components/descope-outbound-apps/src/component/OutboundAppsClass.js","/npm/@descope/components/descope-outbound-apps/src/theme.js","/npm/@descope/components/descope-outbound-app-button/src/component/OutboundAppButtonClass.js","/npm/@descope/components/descope-outbound-app-button/src/theme.js","/npm/@descope/components/descope-trusted-devices/src/component/icons/desktop-device-light.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/mobile-device-light.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/tablet-device-light.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/unknown-device-light.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/desktop-device-dark.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/mobile-device-dark.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/tablet-device-dark.svg","/npm/@descope/components/descope-trusted-devices/src/component/icons/unknown-device-dark.svg","/npm/@descope/components/descope-trusted-devices/src/component/helpers.js","/npm/@descope/components/descope-trusted-devices/src/component/TrustedDevicesClass.js","/npm/@descope/components/descope-trusted-devices/src/theme.js","/npm/@descope/web-components-ui@2.2.11/src/theme/components/index.js","/npm/@descope/web-components-ui@2.2.11/src/theme/index.js","/npm/@descope/web-components-ui@2.2.11/src/darkTheme.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-recaptcha/RecaptchaClass.js","/npm/@descope/web-components-ui@2.2.11/src/components/descope-notification/NotificationClass.js","/npm/@descope/components/descope-password-strength/src/component/calcScore.js"],"names":[],"mappings":"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E,KAAM,WACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,sBACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,kCACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,yBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,iCACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,oBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,KACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,iBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,2BACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,mBACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,0BACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,8CACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,iBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,qBACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,oBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,8BACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,mBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gCACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,yCACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,+CACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,iCACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,yBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,mBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,6CACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,uBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,gBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,iBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,2BACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,kCACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,mBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,KACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,mBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,+CACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,wBACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,4BACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,mCACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,wBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,kBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,+CACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,yBACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,YACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,uBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,wCACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,cACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,OACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,sBACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,eACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,2BACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,uBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,iBACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,aACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,8CACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,UACN,SAAU,MACV,KAAM,MAER,CACE,KAAM,0BACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,uBACN,SAAU,QACV,KAAM,MAER,CACE,KAAM,oBACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,QACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,SACN,SAAU,OACV,KAAM,MAER,CACE,KAAM,WACN,SAAU,OACV,KAAM,OAER,MAAK,CAAC,EAAG,IAAO,EAAE,KAAO,EAAE,MAAO,EAAK,KClrCpC,MAAM,gBAAgB,mBAAiB,wBAcvB,qBAAqB,CAAA,cAAE,gBAAe,aAAc,QCC3E,MAAM,WAAW,eAAe,WAC1B,UAAY,cAAc,WAEnB,gBAAgB,mBAAiB,eAExC,cAAe,GACnB,cAAmC,EACjC,uBA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","file":"/npm/@descope/web-components-ui@2.2.11/dist/cjs/index.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@descope/web-components-ui@2.2.11/dist/cjs/index.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export const DESCOPE_PREFIX = 'descope';\nexport const CSS_SELECTOR_SPECIFIER_MULTIPLY = 5;\nexport const BASE_THEME_SECTION = 'host';\nexport const PORTAL_THEME_PREFIX = '@';\n","export const kebabCase = (str) =>\n  str\n    .replace(/([a-z])([A-Z])/g, '$1-$2')\n    .replace(/[\\s_.]+/g, '-')\n    .toLowerCase();\n\nexport const kebabCaseJoin = (...args) => kebabCase(args.filter((arg) => !!arg).join('-'));\n\nexport const upperFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const camelCaseJoin = (...args) =>\n  args\n    .filter(Boolean)\n    .map((arg, index) => (index === 0 ? arg : upperFirst(arg)))\n    .join('');\n\nexport const compose =\n  (...fns) =>\n  (val) =>\n    fns.reduceRight((res, fn) => fn(res), val);\n\nexport const isFunction = (maybeFunc) => typeof maybeFunc === 'function';\n\nexport const isUrl = (maybeUrl) => {\n  try {\n    // eslint-disable-next-line no-new\n    new URL(maybeUrl);\n\n    return true;\n  } catch (e) {\n    return false;\n  }\n};\n\n/**\n * Compares two arrays unorderedly.\n * @param {Array} arr1 - The first array to compare.\n * @param {Array} arr2 - The second array to compare.\n * @returns {boolean} - Returns true if the arrays are equal unorderedly, false otherwise.\n */\nexport const compareArraysUnordered = (arr1, arr2) => {\n  if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n    return false;\n  }\n\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n\n  const sortedArr1 = arr1.slice().sort();\n  const sortedArr2 = arr2.slice().sort();\n\n  for (let i = 0; i < sortedArr1.length; i++) {\n    if (sortedArr1[i] !== sortedArr2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nexport const toTitle = (str) =>\n  str\n    .replace(/([A-Z])/g, ' $1')\n    .trim()\n    .split(' ')\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(' ');\n","import { kebabCaseJoin } from '.';\nimport { DESCOPE_PREFIX } from '../constants';\n\nexport const observeAttributes = (ele, callback, { excludeAttrs = [], includeAttrs = [] }) => {\n  // sync all attrs on init\n  const filteredAttrs = Array.from(ele.attributes)\n    .filter(\n      (attr) =>\n        !excludeAttrs.includes(attr.name) &&\n        (!includeAttrs.length || includeAttrs.includes(attr.name))\n    )\n    .map((attr) => attr.name);\n\n  callback(filteredAttrs);\n\n  const observer = new MutationObserver((mutationsList) => {\n    mutationsList.forEach((mutation) => {\n      if (\n        mutation.type === 'attributes' &&\n        !excludeAttrs.includes(mutation.attributeName) &&\n        (!includeAttrs.length || includeAttrs.includes(mutation.attributeName))\n      ) {\n        callback([mutation.attributeName]);\n      }\n    });\n  });\n\n  observer.observe(ele, { attributes: true });\n};\n\n// calling the callback with this object: { addedNodes, removedNodes }\nexport const observeChildren = (ele, callback) => {\n  callback({ addedNodes: Array.from(ele.children), removedNodes: [] });\n\n  const observer = new MutationObserver((mutationsList) => {\n    mutationsList.forEach((mutation) => {\n      if (mutation.type === 'childList' || mutation.type === 'characterData') {\n        callback(mutation);\n      }\n    });\n  });\n\n  observer.observe(ele, { childList: true, characterData: true, subtree: true });\n};\n\nconst createSyncAttrsCb =\n  (srcEle, targetEle, mapAttrs = {}) =>\n  (attrNames) => {\n    attrNames.forEach((attrName) => {\n      const targetAttrName = mapAttrs[attrName] || attrName;\n      const srcAttrVal = srcEle.getAttribute(attrName);\n      if (srcAttrVal !== null) {\n        if (targetEle.getAttribute(targetAttrName) !== srcAttrVal) {\n          targetEle.setAttribute(targetAttrName, srcAttrVal);\n        }\n      } else {\n        targetEle.removeAttribute(targetAttrName);\n      }\n    });\n  };\n\nexport const syncAttrs = (ele1, ele2, options) => {\n  observeAttributes(ele1, createSyncAttrsCb(ele1, ele2), options);\n  observeAttributes(ele2, createSyncAttrsCb(ele2, ele1), options);\n};\n\nexport const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);\n\nexport const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;\n\nexport const forwardAttrs = (source, dest, options = {}) => {\n  observeAttributes(source, createSyncAttrsCb(source, dest, options.mapAttrs), options);\n};\n\nexport const forwardProps = (src, target, props = []) => {\n  if (!props.length) return;\n\n  const config = props.reduce(\n    (acc, prop) =>\n      Object.assign(acc, {\n        [prop]: {\n          get() {\n            return src[prop];\n          },\n          set(v) {\n            // eslint-disable-next-line no-param-reassign\n            src[prop] = v;\n          },\n        },\n      }),\n    {}\n  );\n\n  Object.defineProperties(target, config);\n};\n","export const DESCOPE_PREFIX = 'descope';\nexport const CSS_SELECTOR_SPECIFIER_MULTIPLY = 5;\nexport const BASE_THEME_SECTION = 'host';\nexport const PORTAL_THEME_PREFIX = '@';\n","export { asyncDebounce } from './asyncDebounce';\n\nexport const kebabCase = (str) =>\n  str\n    .replace(/([a-z])([A-Z])/g, '$1-$2')\n    .replace(/[\\s_.]+/g, '-')\n    .toLowerCase();\n\nexport const kebabCaseJoin = (...args) =>\n  kebabCase(args.filter((arg) => !!arg).join('-'));\n\nexport const upperFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const camelCaseJoin = (...args) =>\n  args\n    .filter(Boolean)\n    .map((arg, index) => (index === 0 ? arg : upperFirst(arg)))\n    .join('');\n\nexport const compose =\n  (...fns) =>\n  (val) =>\n    fns.reduceRight((res, fn) => fn(res), val);\n\nexport const isFunction = (maybeFunc) => typeof maybeFunc === 'function';\n\nexport const isUrl = (maybeUrl) => {\n  try {\n    // eslint-disable-next-line no-new\n    new URL(maybeUrl);\n\n    return true;\n  } catch (e) {\n    return false;\n  }\n};\n\n/**\n * Compares two arrays unorderedly.\n * @param {Array} arr1 - The first array to compare.\n * @param {Array} arr2 - The second array to compare.\n * @returns {boolean} - Returns true if the arrays are equal unorderedly, false otherwise.\n */\nexport const compareArraysUnordered = (arr1, arr2) => {\n  if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n    return false;\n  }\n\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n\n  const sortedArr1 = arr1.slice().sort();\n  const sortedArr2 = arr2.slice().sort();\n\n  for (let i = 0; i < sortedArr1.length; i++) {\n    if (sortedArr1[i] !== sortedArr2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nexport const toTitle = (str) =>\n  str\n    .replace(/([A-Z])/g, ' $1')\n    .trim()\n    .split(' ')\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(' ');\n","import { kebabCaseJoin } from '../utils';\nimport { DESCOPE_PREFIX } from '../constants';\n\nexport const observeAttributes = (\n  ele,\n  callback,\n  { excludeAttrs = [], includeAttrs = [] },\n) => {\n  // sync all attrs on init\n  const filteredAttrs = Array.from(ele.attributes)\n    .filter(\n      (attr) =>\n        !excludeAttrs.includes(attr.name) &&\n        (!includeAttrs.length || includeAttrs.includes(attr.name)),\n    )\n    .map((attr) => attr.name);\n\n  callback(filteredAttrs);\n\n  const observer = new MutationObserver((mutationsList) => {\n    mutationsList.forEach((mutation) => {\n      if (\n        mutation.type === 'attributes' &&\n        !excludeAttrs.includes(mutation.attributeName) &&\n        (!includeAttrs.length || includeAttrs.includes(mutation.attributeName))\n      ) {\n        callback([mutation.attributeName]);\n      }\n    });\n  });\n\n  observer.observe(ele, { attributes: true });\n};\n\n// calling the callback with this object: { addedNodes, removedNodes }\nexport const observeChildren = (ele, callback) => {\n  callback({ addedNodes: Array.from(ele.children), removedNodes: [] });\n\n  const observer = new MutationObserver((mutationsList) => {\n    mutationsList.forEach((mutation) => {\n      if (mutation.type === 'childList' || mutation.type === 'characterData') {\n        callback(mutation);\n      }\n    });\n  });\n\n  observer.observe(ele, {\n    childList: true,\n    characterData: true,\n    subtree: true,\n  });\n};\n\nconst createSyncAttrsCb =\n  (srcEle, targetEle, mapAttrs = {}) =>\n  (attrNames) => {\n    attrNames.forEach((attrName) => {\n      const targetAttrName = mapAttrs[attrName] || attrName;\n      const srcAttrVal = srcEle.getAttribute(attrName);\n      if (srcAttrVal !== null) {\n        if (targetEle.getAttribute(targetAttrName) !== srcAttrVal) {\n          targetEle.setAttribute(targetAttrName, srcAttrVal);\n        }\n      } else {\n        targetEle.removeAttribute(targetAttrName);\n      }\n    });\n  };\n\nexport const syncAttrs = (ele1, ele2, options) => {\n  observeAttributes(ele1, createSyncAttrsCb(ele1, ele2), options);\n  observeAttributes(ele2, createSyncAttrsCb(ele2, ele1), options);\n};\n\nexport const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);\n\nexport const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;\n\nexport const forwardAttrs = (source, dest, options = {}) => {\n  observeAttributes(\n    source,\n    createSyncAttrsCb(source, dest, options.mapAttrs),\n    options,\n  );\n};\n\nexport const forwardProps = (src, target, props = []) => {\n  if (!props.length) return;\n\n  const config = props.reduce(\n    (acc, prop) =>\n      Object.assign(acc, {\n        [prop]: {\n          get() {\n            return src[prop];\n          },\n          set(v) {\n            // eslint-disable-next-line no-param-reassign\n            src[prop] = v;\n          },\n        },\n      }),\n    {},\n  );\n\n  Object.defineProperties(target, config);\n};\n\nexport const injectStyle = (cssString, ref, { prepend = false } = {}) => {\n  let style;\n  try {\n    style = new CSSStyleSheet();\n  } catch (e) {\n    // fallback for browsers that don't support CSSStyleSheet\n    return generateStyleTagFallback(cssString, ref, { prepend });\n  }\n\n  const _ref = ref?.shadowRoot || ref;\n  if (cssString) {\n    style.replaceSync(cssString);\n  }\n  if (_ref) {\n    const adoptedStyleSheets = [...(_ref.adoptedStyleSheets || [])];\n    adoptedStyleSheets[prepend ? 'unshift' : 'push'](style);\n\n    _ref.adoptedStyleSheets = adoptedStyleSheets;\n  }\n\n  if(cssString && !style.cssRules[0]?.style){\n    console.warn(`No style rules were created, make sure the CSS is valid:\\n \"${cssString}\"`)\n  }\n\n  return style;\n};\n\n// we should mimic the CSSStyleSheet API for the fns we are using\nclass CSSStyleSheetMock {\n  constructor(cssString, ref, { prepend = false } = {}) {\n    this.styleEle = document.createElement('style');\n    this.styleEle.textContent = cssString;\n    this.styleEle.setAttribute('nonce', window.DESCOPE_NONCE);\n    this.ref = ref?.shadowRoot || ref;\n\n    if (!this.ref) {\n      return;\n    }\n\n    if (prepend) {\n      this.ref.prepend(this.styleEle);\n    } else {\n      this.ref.append(this.styleEle);\n    }\n  }\n\n  replaceSync(cssString) {\n    this.styleEle.textContent = cssString;\n  }\n\n  get cssRules() {\n    return this.styleEle.sheet?.cssRules;\n  }\n}\n\nconst generateStyleTagFallback = (cssString, ref, { prepend = false } = {}) =>\n  new CSSStyleSheetMock(cssString, ref, { prepend });\n\nexport const limitAbbreviation = (str, limit = 2) =>\n  str\n    .trim()\n    .split(' ')\n    .splice(0, limit)\n    .map((s) => s[0]?.toUpperCase())\n    .join('');\n","class ComponentsThemeManager {\n  static mountOnPropName = 'DescopeThemeManager';\n\n  #themes = {};\n\n  #currentThemeName = 'light';\n\n  #callbacks = new Set();\n\n  #notify() {\n    this.#callbacks.forEach((cb) => cb?.());\n  }\n\n  get currentThemeName() {\n    return this.#currentThemeName;\n  }\n\n  set currentThemeName(themeName) {\n    this.#currentThemeName = themeName;\n    this.#notify();\n  }\n\n  get currentTheme() {\n    return this.#themes[this.currentThemeName];\n  }\n\n  onCurrentThemeChange(cb) {\n    this.#callbacks.add(cb);\n\n    return () => {\n      this.#callbacks.delete(cb);\n    };\n  }\n\n  set themes(themes) {\n    this.#themes = themes;\n    this.#notify();\n  }\n\n  get hasThemes() {\n    return !!Object.keys(this.#themes).length;\n  }\n}\n\nexport const componentsThemeManager = new ComponentsThemeManager();\n","import Color from 'color';\n\nconst colorGaps = {\n  darkLight: 0.4,\n  highlight: 0.8,\n  contrast: 1,\n  edgeColor: {\n    darkLight: 0.25,\n    highlight: 0.1,\n  },\n};\n\nconst darken = (c, percentage) => c.darken(percentage).hex();\n\nconst contrast = (c) => {\n  const isDark = c.isDark();\n  return c\n    .mix(Color(isDark ? 'white' : 'black'), colorGaps.contrast)\n    .saturate(1)\n    .hex();\n};\n\nconst lighten = (c, percentage) => {\n  const isDark = c.lightness() < 0.5;\n\n  if (isDark) {\n    return c.lightness(percentage * 100).hex();\n  }\n\n  return c.lighten(percentage).hex();\n};\n\nconst isNearBlack = (color) => color.luminosity() < 0.01;\nconst isNearWhite = (color) => color.luminosity() > 0.99;\n\nconst generateDarkColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearWhite(color)\n      ? darken(color, colorGaps.edgeColor.darkLight)\n      : lighten(color, colorGaps.darkLight);\n  }\n\n  return isNearBlack(color)\n    ? lighten(color, colorGaps.edgeColor.darkLight)\n    : darken(color, colorGaps.darkLight);\n};\n\nconst generateLightColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearBlack(color)\n      ? lighten(color, colorGaps.edgeColor.darkLight)\n      : darken(color, colorGaps.darkLight);\n  }\n\n  return isNearWhite(color)\n    ? darken(color, colorGaps.edgeColor.darkLight)\n    : lighten(color, colorGaps.darkLight);\n};\n\nconst generateHighlightColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearBlack(color)\n      ? lighten(color, colorGaps.edgeColor.highlight)\n      : darken(color, colorGaps.highlight);\n  }\n\n  return isNearWhite(color)\n    ? darken(color, colorGaps.edgeColor.highlight)\n    : lighten(color, colorGaps.highlight);\n};\n\nexport const genColor = (color, theme) => {\n  const mainColor = new Color(color.main || color);\n\n  const res = {\n    main: mainColor.hex(),\n    dark: color.dark || generateDarkColor(mainColor, theme),\n    light: color.light || generateLightColor(mainColor, theme),\n    highlight: color.highlight || generateHighlightColor(mainColor, theme),\n    contrast: color.contrast || contrast(mainColor),\n  };\n\n  return res;\n};\n\nexport const genColors = (colors) => {\n  return Object.keys(colors).reduce((acc, colorName) => {\n    const currentColor = colors[colorName];\n\n    return Object.assign(acc, {\n      [colorName]: genColor(currentColor),\n    });\n  }, {});\n};\n","export const useHostExternalPadding = (cssVarList) => `\n    :host {\n        padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n    }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n    ${name}::part(input-field)::after {\n        border: none;\n    }\n`;\n\nexport const resetInitialHeight = (name) => `\n    ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n    ${name} > input {\n        -webkit-mask-image: none;\n        min-height: 0;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputContainer = (name) => `\n    ${name} {\n        margin: 0;\n        padding: 0;\n        width: 100%;\n        height: 100%;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputField = (name) => `\n    ${name}::part(input-field) {\n        overflow: hidden;\n        padding: 0;\n        box-shadow: none;\n    }\n`;\n\nexport const resetInputCursor = (name) => `\n    ${name} > label,\n    ${name}::part(label),\n    ${name}::part(required-indicator) {\n        cursor: pointer;\n    }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n    ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n    ${name} input:-webkit-autofill,\n    ${name} input:-webkit-autofill::first-line,\n    ${name} input:-webkit-autofill:hover,\n    ${name} input:-webkit-autofill:active,\n    ${name} input:-webkit-autofill:focus {\n        -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n        box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n    }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n    :host {\n        --vaadin-field-default-width: auto;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n    ${name}::part(input-field)::after {\n        opacity: 0;\n    }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n    ${name}::part(input-field)::after {\n        background: none;\n    }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n    ${resetInputContainer(name)}\n    ${resetInputCursor(name)}\n    ${resetInputPlaceholder(name)}\n    ${resetInputField(name)}\n    ${resetInputAutoFill(name, cssVarList)}\n    ${resetInputFieldInvalidBackgroundColor(name)}\n    ${resetInitialHeight(name)}\n    ${resetInputElement(name)}\n    ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n    :host ::part(error-message) {\n      direction: ltr;\n    }\n    :host([required]) ::part(required-indicator) {\n      width: 1em;\n      display: inline-flex;\n    }\n    :host([required]) ::part(required-indicator)::after {\n      position: static;\n    }\n    :host([has-label]) ::part(label) {\n      padding-right: 0;\n      padding-bottom: 0;\n      display: flex;\n      width: 100%;\n    }\n    ${name} [slot=\"label\"] {\n      max-width: calc(100% - 1em);\n      overflow: hidden;\n      text-overflow: ellipsis;\n      padding-bottom: 0.5em;\n    }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n  return `\n  :host([label-type=\"floating\"]) {\n    position: relative;\n  }\n  :host([label-type=\"floating\"][has-label]) > ::part(label) {\n    z-index: 1;\n    padding: 0;\n    width: auto;\n  }\n  `;\n};\n","import merge from 'lodash.merge';\nimport {\n  BASE_THEME_SECTION,\n  DESCOPE_PREFIX,\n  PORTAL_THEME_PREFIX,\n} from '../constants';\nimport { isUrl, kebabCase } from '../utils';\nimport { getComponentName, getCssVarName } from '../componentsHelpers';\n\nconst getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);\n\n// lodash.set alternative\nconst set = (obj, path, value) => {\n  const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g);\n\n  pathArray.reduce((acc, key, i) => {\n    if (acc[key] === undefined) acc[key] = {};\n    if (i === pathArray.length - 1) acc[key] = value;\n    return acc[key];\n  }, obj);\n\n  return obj;\n};\n\nconst transformTheme = (theme, path, getTransformation) => {\n  return Object.entries(theme).reduce((acc, [key, val]) => {\n    if (val?.constructor !== Object) {\n      return merge(acc, getTransformation(path.concat(key), val));\n    }\n    return merge(acc, transformTheme(val, [...path, key], getTransformation));\n  }, {});\n};\n\nconst stringifyArray = (strArr) =>\n  strArr.map((str) => (str.includes(' ') ? `\"${str}\"` : str)).join(', ');\n\nconst getCssVarValue = (val) => {\n  switch (true) {\n    case Array.isArray(val):\n      return stringifyArray(val);\n    case isUrl(val):\n      return `url(${val})`;\n    default:\n      return val;\n  }\n};\n\nexport const themeToCSSVarsObj = (theme) =>\n  transformTheme(theme, [], (path, val) => ({\n    [getVarName(path)]: getCssVarValue(val),\n  }));\n\nexport const getThemeRefs = (theme, prefix) =>\n  transformTheme(theme, [], (path) =>\n    set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`),\n  );\n\nexport const getThemeVars = (theme, prefix) =>\n  transformTheme(theme, [], (path) =>\n    set({}, path, getVarName(prefix ? [prefix, ...path] : path)),\n  );\n\nexport const globalsThemeToStyle = (theme, themeName = '') => {\n  const style = Object.entries(themeToCSSVarsObj(theme)).reduce(\n    (acc, entry) => `${acc}${entry.join(':')};\\n`,\n    '',\n  );\n\n  if (!themeName) return style;\n\n  return `*[data-theme=\"${themeName}\"] {${style}}`;\n};\n\nfunction splitAmpersands(str) {\n  const match = str.match(/^(&+)?(.*)$/);\n  return [match[1] || \"\", (match[2] || \"\")];\n}\n\n// st attributes are also using selector multiplication\n// so we need to limit the multiplication\nconst MAX_SELECTOR_MULTIPLY = 3;\n\nconst componentsThemeToStyleObj = (componentsTheme) =>\n  transformTheme(componentsTheme, [], (path, val) => {\n    const [component, ...restPath] = path;\n    const property = restPath.pop();\n    const componentName = getComponentName(component);\n\n    if (property === 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(componentName, `theme value: \"${val}\" is mapped to an invalid property`);\n    }\n\n    // we need a support for portal components theme (e.g. overlay)\n    // this allows us to generate those themes under different sections\n    // if the theme has root level attribute that starts with #\n    // we are generating a new theme\n    let themeName = BASE_THEME_SECTION;\n\n    if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {\n      themeName = restPath.shift();\n    }\n\n    // do not start with underscore -> key:value, must have 2 no underscore attrs in a row\n    // starts with underscore -> attribute selector\n    const attrsSelector = restPath.reduce((acc, section, idx) => {\n      const [ampersands, content] = splitAmpersands(section);\n      const selectorMultiplier = Math.min(\n        ampersands.length + 1,  // if there are no & we need to multiply by 1\n        MAX_SELECTOR_MULTIPLY\n      );\n\n      if (content.startsWith('_')) return acc + `[${kebabCase(content.replace(/^_/, ''))}=\"true\"]`.repeat(selectorMultiplier);\n\n      const nextSection = restPath[idx + 1];\n\n      if (typeof nextSection !== 'string' || nextSection.startsWith('_') || nextSection.startsWith('&')) {\n        // eslint-disable-next-line no-console\n        console.error(\n          'theme generator',\n          `your theme structure is invalid, attribute \"${section}\" is followed by \"${nextSection}\" which is not allowed`\n        );\n        return acc;\n      }\n\n      return acc + `[${kebabCase(content)}=\"${restPath.splice(idx + 1, 1).join('')}\"]`.repeat(selectorMultiplier);\n    }, '');\n\n    const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;\n\n    return {\n      [componentName]: {\n        [themeName]: {\n          [selector]: {\n            [property]: getCssVarValue(val),\n          },\n        },\n      },\n    };\n  });\n\nconst componentsThemeToStyle = (componentsTheme) =>\n  Object.entries(componentsTheme).reduce(\n    (acc, [selector, vars]) =>\n      `${acc}${selector} { \\n${Object.entries(vars)\n        .map(([key, val]) => `${key}: ${val}`)\n        .join(';\\n')} \\n}\\n\\n`,\n    '',\n  );\n\nexport const createComponentsTheme = (componentsTheme) => {\n  const styleObj = componentsThemeToStyleObj(componentsTheme);\n\n  return Object.keys(styleObj).reduce((acc, componentName) => {\n    const componentThemes = styleObj[componentName];\n\n    return Object.assign(acc, {\n      [componentName]: Object.keys(componentThemes).reduce(\n        (res, theme) =>\n          Object.assign(res, {\n            [theme]: componentsThemeToStyle(componentThemes[theme]),\n          }),\n        {},\n      ),\n    });\n  }, {});\n};\n\nexport const themeToStyle = ({ globals, components }, themeName) => ({\n  globals: globalsThemeToStyle(globals, themeName),\n  components: createComponentsTheme(components),\n});\n\n// allows to generate css variables with nested fallbacks\nexport const useVar = (...varNames) => {\n  return varNames.reduceRight((acc, value) => {\n    if (value.startsWith('--')) return `var(${value}${acc ? `, ${acc}` : acc})`;\n\n    return `${value}${acc ? `, ${acc}` : acc}`;\n  }, '');\n};\n\nexport const createHelperVars = (theme, prefix) => {\n  const res = transformTheme(theme, [], (path, value) => {\n    const modifiedPath = [...path];\n    const property = modifiedPath.splice(-1);\n    const varName = getCssVarName(prefix, property);\n\n    const vars = { [property]: varName };\n    const useVars = { [property]: useVar(varName) };\n\n    return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };\n  });\n\n  return [res.theme, res.useVars, res.vars];\n};\n\nexport { componentsThemeManager } from './componentsThemeManager';\nexport * from './colorsHelpers';\nexport * from './resetHelpers';\n","import Color from 'color';\n\nconst colorGaps = {\n  darkLight: 0.4,\n  highlight: 0.8,\n  contrast: 1,\n  edgeColor: {\n    darkLight: 0.25,\n    highlight: 0.1,\n  },\n};\n\nconst darken = (c, percentage) => c.darken(percentage).hex();\n\nconst contrast = (c) => {\n  const isDark = c.isDark();\n  return c\n    .mix(Color(isDark ? 'white' : 'black'), colorGaps.contrast)\n    .saturate(1)\n    .hex();\n};\n\nconst lighten = (c, percentage) => {\n  const isDark = c.lightness() < 0.5;\n\n  if (isDark) {\n    return c.lightness(percentage * 100).hex();\n  }\n\n  return c.lighten(percentage).hex();\n};\n\nconst isNearBlack = (color) => color.luminosity() < 0.01;\nconst isNearWhite = (color) => color.luminosity() > 0.99;\n\nconst generateDarkColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearWhite(color)\n      ? darken(color, colorGaps.edgeColor.darkLight)\n      : lighten(color, colorGaps.darkLight);\n  }\n\n  return isNearBlack(color)\n    ? lighten(color, colorGaps.edgeColor.darkLight)\n    : darken(color, colorGaps.darkLight);\n};\n\nconst generateLightColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearBlack(color)\n      ? lighten(color, colorGaps.edgeColor.darkLight)\n      : darken(color, colorGaps.darkLight);\n  }\n\n  return isNearWhite(color)\n    ? darken(color, colorGaps.edgeColor.darkLight)\n    : lighten(color, colorGaps.darkLight);\n};\n\nconst generateHighlightColor = (color, theme) => {\n  if (theme === 'dark') {\n    return isNearBlack(color)\n      ? lighten(color, colorGaps.edgeColor.highlight)\n      : darken(color, colorGaps.highlight);\n  }\n\n  return isNearWhite(color)\n    ? darken(color, colorGaps.edgeColor.highlight)\n    : lighten(color, colorGaps.highlight);\n};\n\nexport const genColor = (color, theme) => {\n  const mainColor = new Color(color.main || color);\n\n  const res = {\n    main: mainColor.hex(),\n    dark: color.dark || generateDarkColor(mainColor, theme),\n    light: color.light || generateLightColor(mainColor, theme),\n    highlight: color.highlight || generateHighlightColor(mainColor, theme),\n    contrast: color.contrast || contrast(mainColor),\n  };\n\n  return res;\n};\n\nexport const genColors = (colors) => {\n  return Object.keys(colors).reduce((acc, colorName) => {\n    const currentColor = colors[colorName];\n\n    return Object.assign(acc, {\n      [colorName]: genColor(currentColor),\n    });\n  }, {});\n};\n","export const useHostExternalPadding = (cssVarList) => `\n    :host {\n        padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n    }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n    ${name}::part(input-field)::after {\n        border: none;\n    }\n`;\n\nexport const resetInitialHeight = (name) => `\n    ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n    ${name} > input {\n        -webkit-mask-image: none;\n        min-height: 0;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputContainer = (name) => `\n    ${name} {\n        margin: 0;\n        padding: 0;\n        width: 100%;\n        height: 100%;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputField = (name) => `\n    ${name}::part(input-field) {\n        overflow: hidden;\n        padding: 0;\n        box-shadow: none;\n    }\n`;\n\nexport const resetInputCursor = (name) => `\n    ${name} > label,\n    ${name}::part(label),\n    ${name}::part(required-indicator) {\n        cursor: pointer;\n    }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n    ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n    ${name} input:-webkit-autofill,\n    ${name} input:-webkit-autofill::first-line,\n    ${name} input:-webkit-autofill:hover,\n    ${name} input:-webkit-autofill:active,\n    ${name} input:-webkit-autofill:focus {\n        -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n        box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n    }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n    :host {\n        --vaadin-field-default-width: auto;\n        box-sizing: border-box;\n    }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n    ${name}::part(input-field)::after {\n        opacity: 0;\n    }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n    ${name}::part(input-field)::after {\n        background: none;\n    }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n    ${resetInputContainer(name)}\n    ${resetInputCursor(name)}\n    ${resetInputPlaceholder(name)}\n    ${resetInputField(name)}\n    ${resetInputAutoFill(name, cssVarList)}\n    ${resetInputFieldInvalidBackgroundColor(name)}\n    ${resetInitialHeight(name)}\n    ${resetInputElement(name)}\n    ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n    :host ::part(error-message) {\n      direction: ltr;\n    }\n    :host([required]) ::part(required-indicator) {\n      width: 1em;\n      display: inline-flex;\n    }\n    :host([required]) ::part(required-indicator)::after {\n      position: static;\n    }\n    :host([has-label]) ::part(label) {\n      padding-right: 0;\n      padding-bottom: 0;\n      display: flex;\n      width: 100%;\n    }\n    ${name} [slot=\"label\"] {\n      max-width: calc(100% - 1em);\n      overflow: hidden;\n      text-overflow: ellipsis;\n      padding-bottom: 0.5em;\n    }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n  return `\n  :host([label-type=\"floating\"]) {\n    position: relative;\n  }\n  :host([label-type=\"floating\"][has-label]) > ::part(label) {\n    z-index: 1;\n    padding: 0;\n    width: auto;\n  }\n  `;\n};\n","import merge from 'lodash.merge';\nimport { BASE_THEME_SECTION, DESCOPE_PREFIX, PORTAL_THEME_PREFIX } from '../../constants';\nimport { isUrl, kebabCase } from '..';\nimport { getComponentName, getCssVarName } from '../componentHelpers';\n\nconst getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);\n\n// lodash.set alternative\nconst set = (obj, path, value) => {\n  const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g);\n\n  pathArray.reduce((acc, key, i) => {\n    if (acc[key] === undefined) acc[key] = {};\n    if (i === pathArray.length - 1) acc[key] = value;\n    return acc[key];\n  }, obj);\n\n  return obj;\n};\n\nconst transformTheme = (theme, path, getTransformation) => {\n  return Object.entries(theme).reduce((acc, [key, val]) => {\n    if (val?.constructor !== Object) {\n      return merge(acc, getTransformation(path.concat(key), val));\n    }\n    return merge(acc, transformTheme(val, [...path, key], getTransformation));\n  }, {});\n};\n\nconst stringifyArray = (strArr) =>\n  strArr.map((str) => (str.includes(' ') ? `\"${str}\"` : str)).join(', ');\n\nconst getCssVarValue = (val) => {\n  switch (true) {\n    case Array.isArray(val):\n      return stringifyArray(val);\n    case isUrl(val):\n      return `url(${val})`;\n    default:\n      return val;\n  }\n};\n\nexport const themeToCSSVarsObj = (theme) =>\n  transformTheme(theme, [], (path, val) => ({\n    [getVarName(path)]: getCssVarValue(val),\n  }));\n\nexport const getThemeRefs = (theme, prefix) =>\n  transformTheme(theme, [], (path) =>\n    set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`)\n  );\n\nexport const getThemeVars = (theme, prefix) =>\n  transformTheme(theme, [], (path) => set({}, path, getVarName(prefix ? [prefix, ...path] : path)));\n\nexport const globalsThemeToStyle = (theme, themeName = '') => {\n  const style = Object.entries(themeToCSSVarsObj(theme)).reduce(\n    (acc, entry) => `${acc}${entry.join(':')};\\n`,\n    ''\n  );\n\n  if (!themeName) return style;\n\n  return `*[data-theme=\"${themeName}\"] {${style}}`;\n};\n\nfunction splitAmpersands(str) {\n  const match = str.match(/^(&+)?(.*)$/);\n  return [match[1] || '', match[2] || ''];\n}\n\n// st attributes are also using selector multiplication\n// so we need to limit the multiplication\nconst MAX_SELECTOR_MULTIPLY = 3;\n\nconst componentsThemeToStyleObj = (componentsTheme) =>\n  transformTheme(componentsTheme, [], (path, val) => {\n    const [component, ...restPath] = path;\n    const property = restPath.pop();\n    const componentName = getComponentName(component);\n\n    if (property === 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(componentName, `theme value: \"${val}\" is mapped to an invalid property`);\n    }\n\n    // we need a support for portal components theme (e.g. overlay)\n    // this allows us to generate those themes under different sections\n    // if the theme has root level attribute that starts with #\n    // we are generating a new theme\n    let themeName = BASE_THEME_SECTION;\n\n    if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {\n      themeName = restPath.shift();\n    }\n\n    // do not start with underscore -> key:value, must have 2 no underscore attrs in a row\n    // starts with underscore -> attribute selector\n    const attrsSelector = restPath.reduce((acc, section, idx) => {\n      const [ampersands, content] = splitAmpersands(section);\n      const selectorMultiplier = Math.min(\n        ampersands.length + 1, // if there are no & we need to multiply by 1\n        MAX_SELECTOR_MULTIPLY\n      );\n\n      if (content.startsWith('_'))\n        return acc + `[${kebabCase(content.replace(/^_/, ''))}=\"true\"]`.repeat(selectorMultiplier);\n\n      const nextSection = restPath[idx + 1];\n\n      if (\n        typeof nextSection !== 'string' ||\n        nextSection.startsWith('_') ||\n        nextSection.startsWith('&')\n      ) {\n        // eslint-disable-next-line no-console\n        console.error(\n          'theme generator',\n          `your theme structure is invalid, attribute \"${section}\" is followed by \"${nextSection}\" which is not allowed`\n        );\n        return acc;\n      }\n\n      return (\n        acc +\n        `[${kebabCase(content)}=\"${restPath.splice(idx + 1, 1).join('')}\"]`.repeat(\n          selectorMultiplier\n        )\n      );\n    }, '');\n\n    const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;\n\n    return {\n      [componentName]: {\n        [themeName]: {\n          [selector]: {\n            [property]: getCssVarValue(val),\n          },\n        },\n      },\n    };\n  });\n\nconst componentsThemeToStyle = (componentsTheme) =>\n  Object.entries(componentsTheme).reduce(\n    (acc, [selector, vars]) =>\n      `${acc}${selector} { \\n${Object.entries(vars)\n        .map(([key, val]) => `${key}: ${val}`)\n        .join(';\\n')} \\n}\\n\\n`,\n    ''\n  );\n\nexport const createComponentsTheme = (componentsTheme) => {\n  const styleObj = componentsThemeToStyleObj(componentsTheme);\n\n  return Object.keys(styleObj).reduce((acc, componentName) => {\n    const componentThemes = styleObj[componentName];\n\n    return Object.assign(acc, {\n      [componentName]: Object.keys(componentThemes).reduce(\n        (res, theme) =>\n          Object.assign(res, {\n            [theme]: componentsThemeToStyle(componentThemes[theme]),\n          }),\n        {}\n      ),\n    });\n  }, {});\n};\n\nexport const themeToStyle = ({ globals, components }, themeName) => ({\n  globals: globalsThemeToStyle(globals, themeName),\n  components: createComponentsTheme(components),\n});\n\n// allows to generate css variables with nested fallbacks\nexport const useVar = (...varNames) => {\n  return varNames.reduceRight((acc, value) => {\n    if (value.startsWith('--')) return `var(${value}${acc ? `, ${acc}` : acc})`;\n\n    return `${value}${acc ? `, ${acc}` : acc}`;\n  }, '');\n};\n\nexport const createHelperVars = (theme, prefix) => {\n  const res = transformTheme(theme, [], (path, value) => {\n    const modifiedPath = [...path];\n    const property = modifiedPath.splice(-1);\n    const varName = getCssVarName(prefix, property);\n\n    const vars = { [property]: varName };\n    const useVars = { [property]: useVar(varName) };\n\n    return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };\n  });\n\n  return [res.theme, res.useVars, res.vars];\n};\n\nexport { componentsThemeManager } from '@descope-ui/common/theme-helpers';\nexport * from './colorsHelpers';\nexport * from './resetHelpers';\n","import { getThemeRefs, getThemeVars } from '../helpers/themeHelpers';\nimport { genColors } from '../helpers/themeHelpers/colorsHelpers';\n\nconst direction = 'ltr';\n\nexport const colors = genColors({\n  surface: {\n    main: '#ffffff',\n    dark: '#636c74',\n    light: '#cfd3d7',\n    highlight: '#f4f5f6',\n    contrast: '#181a1c',\n  },\n  primary: {\n    main: '#006af5',\n    dark: '#004094',\n    light: '#71aeff',\n    highlight: '#f0f6ff',\n    contrast: '#ffffff',\n  },\n  secondary: {\n    main: '#802ed6',\n    dark: '#6410bc',\n    light: '#be89f5',\n    highlight: '#ede7f6',\n    contrast: '#ffffff',\n  },\n  success: {\n    main: '#008000',\n    dark: '#005700',\n    light: '#8bc38b',\n    highlight: '#f5faf5',\n    contrast: '#ffffff',\n  },\n  error: {\n    main: '#e21d12',\n    dark: '#b3170f',\n    light: '#f4807a',\n    highlight: '#fef1f1',\n    contrast: '#ffffff',\n  },\n  warning: {\n    main: '#c45512',\n    dark: '#a24309',\n    light: '#ff985a',\n    highlight: '#fdf0e5',\n    contrast: '#ffffff',\n  },\n});\n\nconst fonts = {\n  font1: {\n    family: [\n      'Roboto',\n      'ui-sans-serif',\n      'system-ui',\n      '-apple-system',\n      'BlinkMacSystemFont',\n      'Segoe UI',\n      'Helvetica Neue',\n      'Arial',\n      'Noto Sans',\n      'sans-serif',\n      'Apple Color Emoji',\n      'Segoe UI Emoji',\n      'Segoe UI Symbol',\n      'Noto Color Emoji',\n    ],\n    label: 'Roboto',\n    url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',\n  },\n  font2: {\n    family: [\n      'ui-sans-serif',\n      'system-ui',\n      '-apple-system',\n      'BlinkMacSystemFont',\n      'Segoe UI',\n      'Roboto',\n      'Helvetica Neue',\n      'Arial',\n      'Noto Sans',\n      'sans-serif',\n      'Apple Color Emoji',\n      'Segoe UI Emoji',\n      'Segoe UI Symbol',\n      'Noto Color Emoji',\n    ],\n    label: 'Sans Serif',\n  },\n};\n\nconst fontsRef = getThemeRefs({ fonts }).fonts;\n\nconst typography = {\n  h1: {\n    font: fontsRef.font1.family,\n    weight: '900',\n    size: '48px',\n  },\n  h2: {\n    font: fontsRef.font1.family,\n    weight: '800',\n    size: '38px',\n  },\n  h3: {\n    font: fontsRef.font1.family,\n    weight: '600',\n    size: '28px',\n  },\n  subtitle1: {\n    font: fontsRef.font2.family,\n    weight: '500',\n    size: '22px',\n  },\n  subtitle2: {\n    font: fontsRef.font2.family,\n    weight: '400',\n    size: '20px',\n  },\n  body1: {\n    font: fontsRef.font1.family,\n    weight: '400',\n    size: '16px',\n  },\n  body2: {\n    font: fontsRef.font1.family,\n    weight: '400',\n    size: '14px',\n  },\n};\n\nconst spacing = {\n  xs: '2px',\n  sm: '4px',\n  md: '8px',\n  lg: '16px',\n  xl: '32px',\n};\n\nconst border = {\n  xs: '1px',\n  sm: '2px',\n  md: '3px',\n  lg: '4px',\n  xl: '5px',\n};\n\nconst radius = {\n  xs: '5px',\n  sm: '10px',\n  md: '15px',\n  lg: '20px',\n  xl: '25px',\n  '2xl': '30px',\n  '3xl': '35px',\n};\n\nconst shadow = {\n  wide: {\n    sm: '0 2px 3px -0.5px',\n    md: '0 4px 6px -1px',\n    lg: '0 10px 15px -3px',\n    xl: '0 20px 25px -5px',\n    '2xl': '0 25px 50px -12px',\n  },\n  narrow: {\n    sm: '0 1px 2px -1px',\n    md: '0 2px 4px -2px',\n    lg: '0 4px 6px -4px',\n    xl: '0 8px 10px -6px',\n    '2xl': '0 16px 16px -8px',\n  },\n};\n\nconst globals = {\n  colors,\n  typography,\n  spacing,\n  border,\n  radius,\n  shadow,\n  fonts,\n  direction,\n};\n\nexport default globals;\nexport const vars = getThemeVars(globals);\n","import {\n  getThemeRefs,\n  getThemeVars,\n  genColors,\n} from '@descope-ui/common/theme-helpers';\n\nconst direction = 'ltr';\n\nexport const colors = genColors({\n  surface: {\n    main: '#ffffff',\n    dark: '#636c74',\n    light: '#cfd3d7',\n    highlight: '#f4f5f6',\n    contrast: '#181a1c',\n  },\n  primary: {\n    main: '#006af5',\n    dark: '#004094',\n    light: '#71aeff',\n    highlight: '#f0f6ff',\n    contrast: '#ffffff',\n  },\n  secondary: {\n    main: '#802ed6',\n    dark: '#6410bc',\n    light: '#be89f5',\n    highlight: '#ede7f6',\n    contrast: '#ffffff',\n  },\n  success: {\n    main: '#008000',\n    dark: '#005700',\n    light: '#8bc38b',\n    highlight: '#f5faf5',\n    contrast: '#ffffff',\n  },\n  error: {\n    main: '#e21d12',\n    dark: '#b3170f',\n    light: '#f4807a',\n    highlight: '#fef1f1',\n    contrast: '#ffffff',\n  },\n  warning: {\n    main: '#c45512',\n    dark: '#a24309',\n    light: '#ff985a',\n    highlight: '#fdf0e5',\n    contrast: '#ffffff',\n  },\n});\n\nconst fonts = {\n  font1: {\n    family: [\n      'Roboto',\n      'ui-sans-serif',\n      'system-ui',\n      '-apple-system',\n      'BlinkMacSystemFont',\n      'Segoe UI',\n      'Helvetica Neue',\n      'Arial',\n      'Noto Sans',\n      'sans-serif',\n      'Apple Color Emoji',\n      'Segoe UI Emoji',\n      'Segoe UI Symbol',\n      'Noto Color Emoji',\n    ],\n    label: 'Roboto',\n    url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',\n  },\n  font2: {\n    family: [\n      'ui-sans-serif',\n      'system-ui',\n      '-apple-system',\n      'BlinkMacSystemFont',\n      'Segoe UI',\n      'Roboto',\n      'Helvetica Neue',\n      'Arial',\n      'Noto Sans',\n      'sans-serif',\n      'Apple Color Emoji',\n      'Segoe UI Emoji',\n      'Segoe UI Symbol',\n      'Noto Color Emoji',\n    ],\n    label: 'Sans Serif',\n  },\n};\n\nconst fontsRef = getThemeRefs({ fonts }).fonts;\n\nconst typography = {\n  h1: {\n    font: fontsRef.font1.family,\n    weight: '900',\n    size: '48px',\n  },\n  h2: {\n    font: fontsRef.font1.family,\n    weight: '800',\n    size: '38px',\n  },\n  h3: {\n    font: fontsRef.font1.family,\n    weight: '600',\n    size: '28px',\n  },\n  subtitle1: {\n    font: fontsRef.font2.family,\n    weight: '500',\n    size: '22px',\n  },\n  subtitle2: {\n    font: fontsRef.font2.family,\n    weight: '400',\n    size: '20px',\n  },\n  body1: {\n    font: fontsRef.font1.family,\n    weight: '400',\n    size: '16px',\n  },\n  body2: {\n    font: fontsRef.font1.family,\n    weight: '400',\n    size: '14px',\n  },\n};\n\nconst spacing = {\n  xs: '2px',\n  sm: '4px',\n  md: '8px',\n  lg: '16px',\n  xl: '32px',\n};\n\nconst border = {\n  xs: '1px',\n  sm: '2px',\n  md: '3px',\n  lg: '4px',\n  xl: '5px',\n};\n\nconst radius = {\n  xs: '5px',\n  sm: '10px',\n  md: '15px',\n  lg: '20px',\n  xl: '25px',\n  '2xl': '30px',\n  '3xl': '35px',\n};\n\nconst shadow = {\n  wide: {\n    sm: '0 2px 3px -0.5px',\n    md: '0 4px 6px -1px',\n    lg: '0 10px 15px -3px',\n    xl: '0 20px 25px -5px',\n    '2xl': '0 25px 50px -12px',\n  },\n  narrow: {\n    sm: '0 1px 2px -1px',\n    md: '0 2px 4px -2px',\n    lg: '0 4px 6px -4px',\n    xl: '0 8px 10px -6px',\n    '2xl': '0 16px 16px -8px',\n  },\n};\n\nconst globals = {\n  colors,\n  typography,\n  spacing,\n  border,\n  radius,\n  shadow,\n  fonts,\n  direction,\n};\n\nexport default globals;\nexport const vars = getThemeVars(globals);\n","import { camelCaseJoin, isFunction, kebabCase, kebabCaseJoin } from '../../../utils';\nimport { getCssVarName } from '../../../componentsHelpers';\n\nconst getOverrideCssVarName = (origVarName) => `${origVarName}__override`;\n\nconst createCssVar = (varName, fallback, createOverride = false) => {\n  const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;\n\n  if (!createOverride) return ret;\n\n  // we are generating an override css var to allow override with fallback to the default var\n  const overrideVarName = getOverrideCssVarName(varName);\n  return `var(${overrideVarName}, ${ret})`;\n};\n\nconst createCssSelector = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>\n  isFunction(relativeSelectorOrSelectorFn)\n    ? relativeSelectorOrSelectorFn(baseSelector)\n    : `${baseSelector}${/^[A-Za-z]/.test(relativeSelectorOrSelectorFn)\n      ? ` ${relativeSelectorOrSelectorFn}`\n      : relativeSelectorOrSelectorFn\n    }`;\n\nclass StyleBuilder {\n  constructor() {\n    this.styleMap = new Map();\n  }\n\n  add(selector, property, value) {\n    if (!this.styleMap.has(selector)) {\n      this.styleMap.set(selector, []);\n    }\n\n    this.styleMap.set(selector, [...this.styleMap.get(selector), { property, value }]);\n  }\n\n  toString() {\n    return Array.from(this.styleMap.entries()).reduce((acc, [selector, propValArr]) => {\n      const properties = propValArr\n        .map(({ property, value }) => `${property}: ${value}`)\n        .join(';\\n');\n\n      return `${acc}${selector} { \\n${properties} \\n}\\n\\n`;\n    }, '');\n  }\n}\n\nconst normalizeConfig = (attr, config) => {\n  const defaultMapping = { selector: '', property: kebabCase(attr) };\n\n  if (!config || !Object.keys(config).length) return [defaultMapping];\n\n  if (Array.isArray(config)) return config.map((entry) => ({ ...defaultMapping, ...entry }));\n\n  return [{ ...defaultMapping, ...config }];\n};\n\nconst getFallbackVarName = (origVarName, suffix = 'fallback') => kebabCaseJoin(origVarName, suffix);\n\nexport const createStyle = (componentName, baseSelector, mappings) => {\n  const style = new StyleBuilder();\n  // we generate all the fallback vars recursively\n  const createFallbackVar = (fallback, origVarName) => {\n    if (!fallback) return '';\n    if (typeof fallback === 'string') return fallback;\n\n    const fallbackVarName = getFallbackVarName(origVarName, fallback?.suffix);\n    return createCssVar(fallbackVarName, createFallbackVar(fallback.fallback, fallbackVarName));\n  };\n\n  Object.keys(mappings).forEach((attr) => {\n    const attrConfig = normalizeConfig(attr, mappings[attr]);\n\n    const cssVarName = getCssVarName(componentName, attr);\n\n    attrConfig.forEach(\n      ({ selector: relativeSelectorOrSelectorFn, property, important, fallback }) => {\n        const fallbackValue = createFallbackVar(fallback, cssVarName);\n        style.add(\n          createCssSelector(baseSelector, relativeSelectorOrSelectorFn),\n          isFunction(property) ? property() : property,\n          createCssVar(cssVarName, fallbackValue, true) + (important ? '!important' : '')\n        );\n      }\n    );\n  });\n\n  return style.toString();\n};\n\nconst getFallbackVarsNames = (attr, origVarName, { fallback }) => {\n  if (!fallback) return {};\n\n  const fallbackVarName = getFallbackVarName(origVarName, fallback.suffix);\n  const fallbackAttrName = camelCaseJoin(attr, fallback.suffix || 'fallback');\n  return {\n    [fallbackAttrName]: fallbackVarName,\n    ...getFallbackVarsNames(fallbackAttrName, fallbackVarName, fallback),\n  };\n};\n\nexport const createCssVarsList = (componentName, mappings) =>\n  Object.keys(mappings).reduce((acc, attr) => {\n    const varName = getCssVarName(componentName, attr);\n\n    return Object.assign(\n      acc,\n      { [attr]: varName },\n      // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name\n      { [attr + 'Override']: getOverrideCssVarName(varName) },\n      getFallbackVarsNames(attr, varName, mappings[attr])\n    );\n  }, {});\n\n// on some cases we need a selector to be more specific than another\n// for this we have this fn that generate a class selector multiple times\nexport const createClassSelectorSpecifier = (className, numOfRepeats) => `.${className}`.repeat(numOfRepeats);\n","import {\n  BASE_THEME_SECTION,\n  CSS_SELECTOR_SPECIFIER_MULTIPLY,\n} from '../../../constants';\nimport { kebabCaseJoin } from '../../../utils';\nimport {\n  getCssVarName,\n  injectStyle,\n  observeAttributes,\n} from '../../../componentsHelpers';\nimport { componentsThemeManager } from '../../../themeHelpers';\nimport {\n  createStyle,\n  createCssVarsList,\n  createClassSelectorSpecifier,\n} from './helpers';\n\nconst STYLE_OVERRIDE_ATTR_PREFIX = 'st';\n\nexport const createStyleMixin =\n  ({ mappings = {}, componentNameOverride = '' }) =>\n  (superclass) => {\n    const componentName = componentNameOverride || superclass.componentName;\n\n    return class CustomStyleMixinClass extends superclass {\n      static get cssVarList() {\n        return {\n          ...superclass.cssVarList,\n          ...createCssVarsList(componentName, {\n            ...mappings,\n          }),\n        };\n      }\n\n      #overrideStyleEle;\n\n      #themeStyleEle;\n\n      #disconnectThemeManager;\n\n      #componentNameSuffix;\n\n      #themeSection;\n\n      #rootElement;\n\n      #baseSelector;\n\n      #styleAttributes;\n\n      #getRootElement;\n\n      // we are using this mixin also for portalMixin\n      // so we should be able to inject styles to other DOM elements\n      // this is why we need to support these overrides\n      constructor({\n        getRootElement,\n        componentNameSuffix = '',\n        themeSection = BASE_THEME_SECTION,\n        baseSelector,\n      } = {}) {\n        super();\n        this.#componentNameSuffix = componentNameSuffix;\n        this.#themeSection = themeSection;\n        this.#baseSelector = baseSelector ?? this.baseSelector;\n        this.#getRootElement = getRootElement;\n\n        this.#styleAttributes = Object.keys(\n          CustomStyleMixinClass.cssVarList,\n        ).map((key) =>\n          kebabCaseJoin(STYLE_OVERRIDE_ATTR_PREFIX, componentNameSuffix, key),\n        );\n      }\n\n      // eslint-disable-next-line class-methods-use-this\n      get #componentTheme() {\n        return componentsThemeManager.currentTheme?.[componentName] || '';\n      }\n\n      #onComponentThemeChange() {\n        this.#themeStyleEle.replaceSync(\n          this.#componentTheme[this.#themeSection],\n        );\n        this.currentThemeName = componentsThemeManager.currentThemeName;\n        // `onThemeChange` - This function is a hook for the component, so it can be implemented in the component\n        // and is executed once theme is change.\n        this.onThemeChange?.(componentsThemeManager.currentThemeName);\n      }\n\n      #createComponentTheme() {\n        this.#themeStyleEle = injectStyle('', this.#rootElement, {\n          prepend: true,\n        });\n        this.#disconnectThemeManager =\n          componentsThemeManager.onCurrentThemeChange(\n            this.#onComponentThemeChange.bind(this),\n          );\n        this.#onComponentThemeChange();\n      }\n\n      #createOverridesStyle() {\n        if (this.#styleAttributes.length) {\n          let classSpecifier = createClassSelectorSpecifier(\n            componentName,\n            CSS_SELECTOR_SPECIFIER_MULTIPLY\n          );\n          const elementId = this.getAttribute('id');\n          if (elementId) {\n            // basically this is enough to make the selector more specific\n            // but just in case there is no id, we will also add the class multiple times\n            classSpecifier += `#${CSS.escape(elementId)}`;\n          }\n\n          this.#overrideStyleEle = injectStyle(`:host(${classSpecifier}) {}`, this.#rootElement);\n        }\n      }\n\n\n      #setAttrOverride(attrName, value) {\n        const style = this.#overrideStyleEle.cssRules[0].style;\n\n        if (!style) return;\n\n        const varName = getCssVarName(\n          componentName,\n          attrName.replace(new RegExp(`^${STYLE_OVERRIDE_ATTR_PREFIX}-`), ''),\n        );\n\n        if (value) style?.setProperty(varName, value);\n        else {\n          style?.removeProperty(varName);\n          this.removeAttribute(attrName);\n        }\n      }\n\n      #updateOverridesStyle(attrs = []) {\n        attrs.forEach((attr) => {\n          if (this.#styleAttributes.includes(attr)) {\n            this.#setAttrOverride(attr, this.getAttribute(attr));\n          }\n        });\n      }\n\n      #createMappingStyle() {\n        if (Object.keys(mappings).length) {\n          const style = createStyle(\n            kebabCaseJoin(componentName, this.#componentNameSuffix),\n            this.#baseSelector,\n            mappings,\n          );\n\n          injectStyle(style, this.#rootElement, { prepend: true });\n        }\n      }\n\n      #addClassName(className) {\n        (this.#rootElement.classList || this.#rootElement.host.classList).add(\n          className,\n        );\n      }\n\n      async init() {\n        super.init?.();\n        if (this.shadowRoot.isConnected) {\n          this.#rootElement =\n            (await this.#getRootElement?.(this)) || this.shadowRoot;\n\n          this.#addClassName(componentName);\n\n          this.#createMappingStyle();\n          this.#createComponentTheme();\n          this.#createOverridesStyle();\n\n          // this is instead attributeChangedCallback because we cannot use static methods in this case\n          observeAttributes(this, this.#updateOverridesStyle.bind(this), {});\n        }\n      }\n\n      disconnectedCallback() {\n        super.disconnectedCallback?.();\n\n        this.#disconnectThemeManager?.();\n      }\n    };\n  };\n","import { injectStyle } from '../../componentsHelpers'\nexport const draggableMixin = (superclass) =>\n  class DraggableMixinClass extends superclass {\n    constructor() {\n      super();\n\n      injectStyle(`:host([draggable=\"true\"]) * { cursor: inherit!important }`, this);\n    }\n\n    get isDraggable() {\n      return this.hasAttribute('draggable') && this.getAttribute('draggable') !== 'false';\n    }\n\n    init() {\n      // because we are delegating the focus from the outer component,\n      // the D&D is not working well in the page editor\n      // in order to solve it we are making the inner component focusable on mouse down\n      // and removing it on complete\n      this.addEventListener('mousedown', (e) => {\n        if (this.isDraggable) {\n          const prevTabIndex = this.baseElement.getAttribute('tabindex');\n          this.baseElement.setAttribute('tabindex', '-1');\n\n          const onComplete = () => {\n            if (prevTabIndex) this.baseElement.setAttribute('tabindex', prevTabIndex)\n            else this.baseElement.removeAttribute('tabindex');\n\n            e.target.removeEventListener('mouseup', onComplete);\n            e.target.removeEventListener('dragend', onComplete);\n          };\n\n          e.target.addEventListener('mouseup', onComplete, { once: true });\n          e.target.addEventListener('dragend', onComplete, { once: true });\n        }\n      });\n\n      super.init?.();\n    }\n  };\n","export const componentNameValidationMixin = (superclass) =>\n  class ComponentNameValidationMixinClass extends superclass {\n    #checkComponentName() {\n      const currentComponentName = this.localName;\n\n      if (!superclass.componentName) {\n        throw Error(\n          `component name is not defined on super class, make sure you have a static get for \"componentName\"`\n        );\n      }\n\n      if (currentComponentName !== superclass.componentName) {\n        throw Error(\n          `component name mismatch, expected \"${superclass.componentName}\", current \"${currentComponentName}\"`\n        );\n      }\n    }\n\n    init() {\n      super.init?.();\n      this.#checkComponentName();\n    }\n  };\n","export const componentsContextMixin = (superclass) =>\n  class ComponentsContextMixinClass extends superclass {\n    updateComponentsContext(componentsContext) {\n      this.dispatchEvent(\n        new CustomEvent('components-context', {\n          bubbles: true,\n          composed: true,\n          detail: componentsContext,\n        })\n      );\n    }\n  };\n","export const hoverableMixin = (superclass) =>\n  class HoverableMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      this.baseElement.addEventListener('mouseover', (e) => {\n        this.setAttribute('hover', 'true');\n        e.target.addEventListener('mouseleave', () => this.removeAttribute('hover'), {\n          once: true,\n        });\n      });\n    }\n  };\n","import { observeAttributes } from '../../componentsHelpers';\n\nconst booleanAttributesList = [\n  'readonly',\n  'focused',\n  'invalid',\n  'has-label',\n  'required',\n  'disabled',\n  'checked',\n  'has-helper',\n  'has-value',\n  'step-buttons-visible',\n  'hover',\n  'has-error-message',\n  'focus-ring',\n  'opened',\n  'active',\n  'password-visible',\n  'opening',\n  'closing',\n  'has-no-options',\n  'loading',\n  'allow-custom-value',\n  'collapsed',\n];\n\nconst isBooleanAttribute = (attr) => {\n  return booleanAttributesList.includes(attr);\n};\n// we want all the valueless attributes to have \"true\" value\n// and all the falsy attribute to be removed\nexport const normalizeBooleanAttributesMixin = (superclass) =>\n  class NormalizeBooleanAttributesMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      observeAttributes(\n        this,\n        (attrs) =>\n          attrs.forEach((attr) => {\n            const attrVal = this.getAttribute(attr);\n\n            if (isBooleanAttribute(attr)) {\n              if (attrVal === '') {\n                this.setAttribute(attr, 'true');\n              } else if (attrVal === 'false') {\n                this.removeAttribute(attr);\n              }\n            } else if (!attrVal) {\n              // eslint-disable-next-line no-console\n              console.debug(\n                `attribute \"${attr}\" has no value, should it be added to the boolean attributes list?`\n              );\n            }\n          }),\n        {}\n      );\n    }\n  };\n","import { compose } from '../../utils';\nimport { componentNameValidationMixin } from '../../componentsMixins/mixins/componentNameValidationMixin';\nimport { componentsContextMixin } from '../../componentsMixins/mixins/componentsContextMixin';\nimport { hoverableMixin } from '../../componentsMixins/mixins/hoverableMixin';\nimport { normalizeBooleanAttributesMixin } from '../../componentsMixins/mixins/normalizeBooleanAttributesMixin';\n\nexport const createBaseClass = ({ componentName, baseSelector = '' }) => {\n  class DescopeBaseClass extends HTMLElement {\n    static get componentName() {\n      return componentName;\n    }\n\n    #baseElement;\n\n    #isInit = true;\n\n    // base selector is the selector for the component wrapper,\n    // it's the highest element that is relevant for the layout\n    // eslint-disable-next-line class-methods-use-this\n    get baseSelector() {\n      return baseSelector;\n    }\n\n    // this is the base element, which returned by querying the base selector\n    get baseElement() {\n      this.#baseElement ??= this.baseSelector\n        ? this.rootElement.querySelector(this.baseSelector)\n        : this;\n\n      if (!this.#baseElement) {\n        // eslint-disable-next-line no-console\n        console.warn('missing base element for component', this.localName);\n      }\n      return this.#baseElement;\n    }\n\n    // this is the component root level element,\n    // it can be either a shadow root or the component's node from the light DOM\n    get rootElement() {\n      return this.shadowRoot || this;\n    }\n\n    get name() {\n      return this.getAttribute('name');\n    }\n\n    connectedCallback() {\n      super.connectedCallback?.();\n\n      if (this.rootElement.isConnected) {\n        // the init function is running once, on the first time the component is connected\n        if (this.#isInit) {\n          this.#isInit = false;\n          this.init?.();\n        }\n      }\n    }\n  }\n\n  return compose(\n    componentNameValidationMixin,\n    hoverableMixin,\n    normalizeBooleanAttributesMixin,\n    componentsContextMixin\n  )(DescopeBaseClass);\n};\n","// create a dispatch event function that also calls to the onevent function in case  it's set\n// usage example:\n// #dispatchSomething = createDispatchEvent.bind(this, 'something' { ...options })\n// this will dispatch a new event when called, but also call to \"onsomething\"\nexport function createDispatchEvent(eventName, options = {}) {\n  const event = new Event(eventName, options);\n\n  this[`on${eventName}`]?.(event); // in case we got an event callback as property\n  this.dispatchEvent(event);\n}\n","import { createDispatchEvent } from '../../componentsMixins/helpers/mixinsHelpers';\n\nexport const changeMixin = (superclass) =>\n  class ChangeMixinClass extends superclass {\n    #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n    init() {\n      super.init?.();\n      this.prevValue = this.value;\n\n      this.addEventListener('change', (e) => {\n        e.stopPropagation();\n      });\n\n      this.addEventListener('blur', () => {\n        if (this.value !== this.prevValue) {\n          this.#dispatchChange();\n          this.prevValue = this.value;\n        }\n      });\n    }\n  };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const inputEventsDispatchingMixin = (superclass) =>\n  class InputEventsDispatchingMixinClass extends superclass {\n    init() {\n      this.#blockNativeEvents();\n\n      super.init?.();\n    }\n\n    // we want to block the native (trusted) events and control when these events are being dispatched\n    #blockNativeEvents() {\n      ['blur', 'focus', 'focusin', 'focusout'].forEach((event) => {\n        this.addEventListener(event, (e) => {\n          if (e.isTrusted && e.target === this) {\n            e.stopImmediatePropagation()\n          };\n        });\n      });\n    }\n\n    handleFocusEventsDispatching(inputs) {\n      let timerId;\n\n      // in order to simulate blur & focusout on root input element\n      // we are checking if focus on one of the inner elements happened immediately after blur\n      // if not, the component is no longer focused and we should dispatch blur & focusout\n      inputs?.forEach((input) => {\n        input?.addEventListener('focusout', (e) => {\n          e.stopImmediatePropagation();\n          timerId = setTimeout(() => {\n            timerId = null;\n\n            createDispatchEvent.call(this, 'blur');\n            createDispatchEvent.call(this, 'focusout', { bubbles: true });\n          });\n        });\n\n        // in order to simulate focus & focusin on the root input element\n        // we are holding a timer id and clearing it on focusin\n        // if there is a timer id, it means that the root input is still focused\n        // otherwise, it was not focused before, and we should dispatch focus & focusin\n        const onFocus = (e) => {\n          e.stopImmediatePropagation();\n          clearTimeout(timerId);\n          if (!timerId) {\n            createDispatchEvent.call(this, 'focus');\n            createDispatchEvent.call(this, 'focusin', { bubbles: true });\n          }\n        };\n\n        // some components are not dispatching focusin but only focus\n        input?.addEventListener('focusin', onFocus);\n        input?.addEventListener('focus', onFocus);\n      });\n    }\n\n    // we want to block the input events from propagating in case the value of the root input wasn't change\n    // this can happen if we are sanitizing characters on the internal inputs and do not want it to affect the root input element value\n    // in this case, on each input event, we are comparing the root input value to the previous one, and only if it does not match, we are allowing the input event to propagate\n    handleInputEventDispatching() {\n      let previousRootComponentValue = this.value;\n\n      // we are comparing the previous value to the new one,\n      // and if they have the same value, we are blocking the input event\n      this.addEventListener('input', (e) => {\n        // We don't want to block our own event that we fire from handleInputEventDispatching\n        if (this !== e.target) {\n          e.stopImmediatePropagation();\n\n          if (previousRootComponentValue !== this.value) {\n            previousRootComponentValue = this.value;\n            createDispatchEvent.call(this, 'input', { bubbles: true, composed: true });\n          }\n        }\n      });\n    }\n  };\n","import 'element-internals-polyfill'; // this is needed in order to support older browsers\n\nconst observedAttributes = ['required', 'pattern'];\n\nconst errorAttributes = {\n  valueMissing: 'data-errormessage-value-missing',\n  patternMismatch: 'data-errormessage-pattern-mismatch',\n  tooShort: 'data-errormessage-pattern-mismatch-too-short',\n  tooLong: 'data-errormessage-pattern-mismatch-too-long',\n  rangeUnderflow: 'data-errormessage-pattern-range-underflow',\n  rangeOverflow: 'data-errormessage-pattern-range-overflow',\n  typeMismatch: 'data-errormessage-type-mismatch',\n};\n\nconst validationTargetSymbol = Symbol('validationTarget');\n\nexport const inputValidationMixin = (superclass) =>\n  class InputValidationMixinClass extends superclass {\n    #validationTarget = validationTargetSymbol;\n\n    static get observedAttributes() {\n      return [...(superclass.observedAttributes || []), ...observedAttributes];\n    }\n\n    static get formAssociated() {\n      return true;\n    }\n\n    #internals;\n\n    get internals() {\n      return this.#internals;\n    }\n\n    set internals(value) {\n      this.#internals = value;\n    }\n\n    constructor() {\n      super();\n\n      this.#internals = this.attachInternals();\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgValueMissing() {\n      return 'Please fill out this field.';\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgPatternMismatch() {\n      return 'Please match the requested format.';\n    }\n\n    get defaultErrorMsgTooShort() {\n      return `Minimum length is ${this.getAttribute('minlength')}.`;\n    }\n\n    get defaultErrorMsgTooLong() {\n      return `Maximum length is ${this.getAttribute('maxlength')}.  `;\n    }\n\n    get defaultErrorMsgRangeUnderflow() {\n      return `At least ${this.getAttribute('min-items-selection')} items are required.`;\n    }\n\n    get defaultErrorMsgRangeOverflow() {\n      return `At most ${this.getAttribute('max-items-selection')} items are allowed.`;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgTypeMismatch() {\n      return `Please match the requested type.`;\n    }\n\n    getCustomErrorMessage(attr, defaultMsg) {\n      return this.hasAttribute(attr)\n        ? this.getAttribute(attr) || ' '\n        : defaultMsg;\n    }\n\n    getErrorMessage(flags) {\n      const {\n        valueMissing,\n        patternMismatch,\n        typeMismatch,\n        stepMismatch,\n        tooShort,\n        tooLong,\n        rangeOverflow,\n        rangeUnderflow,\n        badInput,\n        customError,\n      } = flags;\n\n      switch (true) {\n        case valueMissing:\n          return this.getCustomErrorMessage(\n            errorAttributes.valueMissing,\n            this.defaultErrorMsgValueMissing,\n          );\n        case patternMismatch || stepMismatch || badInput:\n          return this.getCustomErrorMessage(\n            errorAttributes.patternMismatch,\n            this.defaultErrorMsgPatternMismatch,\n          );\n        case typeMismatch:\n          return this.getCustomErrorMessage(\n            errorAttributes.typeMismatch,\n            this.defaultErrorMsgTypeMismatch,\n          );\n        case tooShort:\n          return this.getCustomErrorMessage(\n            errorAttributes.tooShort,\n            this.defaultErrorMsgTooShort,\n          );\n        case tooLong:\n          return this.getCustomErrorMessage(\n            errorAttributes.tooLong,\n            this.defaultErrorMsgTooLong,\n          );\n        case rangeUnderflow:\n          return this.getCustomErrorMessage(\n            errorAttributes.rangeUnderflow,\n            this.defaultErrorMsgRangeUnderflow,\n          );\n        case rangeOverflow:\n          return this.getCustomErrorMessage(\n            errorAttributes.rangeOverflow,\n            this.defaultErrorMsgRangeOverflow,\n          );\n        case customError:\n          return this.validationMessage;\n        default:\n          return '';\n      }\n    }\n\n    #setValidity() {\n      const validity = this.isReadOnly ? {} : this.getValidity();\n      this.#internals.setValidity(\n        validity,\n        this.getErrorMessage(validity),\n        this.validationTarget,\n      );\n    }\n\n    get validationMessage() {\n      return this.#internals.validationMessage;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    getValidity() {\n      // eslint-disable-next-line no-console\n      console.warn('getValidity', 'is not implemented');\n    }\n\n    checkValidity() {\n      return this.#internals.validity.valid;\n    }\n\n    reportValidity() {\n      return this.#internals.reportValidity();\n    }\n\n    get validity() {\n      return this.#internals.validity;\n    }\n\n    get validationTarget() {\n      return this.#validationTarget === validationTargetSymbol\n        ? this.inputElement\n        : this.#validationTarget;\n    }\n\n    set validationTarget(val) {\n      this.#validationTarget = val;\n    }\n\n    setCustomValidity(errorMessage) {\n      if (errorMessage) {\n        this.#internals.setValidity(\n          { customError: true },\n          errorMessage,\n          this.validationTarget,\n        );\n      } else {\n        this.#internals.setValidity({});\n        this.#setValidity();\n      }\n    }\n\n    get isRequired() {\n      return (\n        this.hasAttribute('required') &&\n        this.getAttribute('required') !== 'false'\n      );\n    }\n\n    get isReadOnly() {\n      return (\n        this.hasAttribute('readonly') &&\n        this.getAttribute('readonly') !== 'false'\n      );\n    }\n\n    get isDisabled() {\n      return (\n        this.hasAttribute('disabled') &&\n        this.getAttribute('disabled') !== 'false'\n      );\n    }\n\n    get pattern() {\n      return this.getAttribute('pattern');\n    }\n\n    get form() {\n      return this.#internals.form;\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (observedAttributes.includes(attrName)) {\n        this.#setValidity();\n      }\n    }\n\n    init() {\n      super.init?.();\n      this.addEventListener('change', this.#setValidity);\n      this.addEventListener('invalid', (e) => e.stopPropagation());\n      this.addEventListener('input', this.#setValidity);\n\n      // The attribute sync takes time, so getValidity returns valid,\n      // even when it shouldn't. This way allows all attributes to sync\n      // after render, before checking the validity.\n      setTimeout(() => this.#setValidity());\n    }\n  };\n","import { compose } from '../../utils';\nimport { changeMixin } from '../../componentsMixins/mixins/changeMixin';\nimport { inputEventsDispatchingMixin } from '../../componentsMixins/mixins/inputEventsDispatchingMixin';\nimport { inputValidationMixin } from '../../componentsMixins/mixins/inputValidationMixin';\nimport { normalizeBooleanAttributesMixin } from '../../componentsMixins/mixins/normalizeBooleanAttributesMixin';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n  compose(\n    inputValidationMixin,\n    changeMixin,\n    normalizeBooleanAttributesMixin,\n    inputEventsDispatchingMixin\n  )(createBaseClass(...args));\n","export const CONNECTOR_ERRORS = {\n  CONNECTOR_INVALID: 'CONNECTOR_INVALID',\n  FETCH_RESULTS_ERROR: 'FETCH_RESULTS_ERROR',\n};\n\nexport const createBaseConnectorClass = () =>\n  class BaseConnectorClass {\n    constructor(getAttribute) {\n      this.getAttribute = getAttribute;\n      this.isValid = this.#validateConfig();\n    }\n\n    checkConnectorValidity() {\n      this.isValid = this.#validateConfig();\n    }\n\n    #validateConfig() {\n      const missingOrInvalidParams = this.getRequiredParams().filter(\n        (param) => {\n          const value = this.getAttribute(param);\n          return !value || !this.validateParam(param, value);\n        },\n      );\n\n      if (missingOrInvalidParams.length) {\n        return false;\n      }\n      return true;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    validateParam(param, value) {\n      // Base validation - can be overridden by specific connectors\n      return value.trim().length > 0;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    getRequiredParams() {\n      // eslint-disable-next-line no-console\n      console.error('Connector must implement getRequiredParams');\n      return [];\n    }\n\n    async fetch(query) {\n      if (!this.isValid) {\n        // eslint-disable-next-line no-console\n        console.error(\n          `[${this.constructor.name}] Cannot fetch results: connector is not properly configured`,\n        );\n        return { results: [], error: CONNECTOR_ERRORS.CONNECTOR_INVALID };\n      }\n\n      return this._fetchResults(query);\n    }\n\n    // eslint-disable-next-line class-methods-use-this, no-unused-vars\n    _fetchResults(query) {\n      // eslint-disable-next-line no-console\n      console.error('Connector must implement fetchResults');\n      return { results: [], error: undefined };\n    }\n  };\n","import { createBaseClass } from '../../baseClasses';\nimport { isFunction } from '../../utils';\nimport { forwardProps, injectStyle, syncAttrs } from '../../componentsHelpers';\nimport { createDispatchEvent } from '../../componentsMixins/helpers/mixinsHelpers';\n\nexport const createProxy = ({\n  componentName,\n  wrappedEleName,\n  slots = [],\n  style,\n  excludeAttrsSync = [],\n  includeAttrsSync = [],\n  includeForwardProps = [],\n  delegatesFocus = true,\n}) => {\n  class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {\n    #dispatchBlur = createDispatchEvent.bind(this, 'blur');\n\n    #dispatchFocus = createDispatchEvent.bind(this, 'focus');\n\n    constructor() {\n      super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `\n\t\t\t<${wrappedEleName}>\n\t\t\t${slots\n        .map(\n          (\n            slot // when slot is an empty string, we will create the default slot (without a name)\n          ) => `<slot ${slot ? `name=\"${slot}\" slot=\"${slot}\"` : ''}></slot>`\n        )\n        .join('')}\n\t\t\t</${wrappedEleName}>\n\t\t`;\n\n    injectStyle((isFunction(style) ? style() : style) || '', this);\n    }\n\n    init() {\n      super.init?.();\n\n      this.baseElement.addEventListener('blur', (_) => {\n        this.#dispatchBlur();\n      });\n\n      this.baseElement.addEventListener('focus', (_) => {\n        this.#dispatchFocus();\n      });\n\n      // this is needed for components that uses props, such as combo box\n      forwardProps(this.baseElement, this, includeForwardProps);\n\n      syncAttrs(this.baseElement, this, {\n        excludeAttrs: excludeAttrsSync,\n        includeAttrs: includeAttrsSync,\n      });\n    }\n  }\n\n  return ProxyClass;\n};\n","/* eslint-disable no-param-reassign */\nimport { compose } from '../../utils';\nimport { forwardAttrs, getComponentName } from '../../componentsHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\nimport { inputValidationMixin } from '../mixins/inputValidationMixin';\nimport { createStyleMixin } from '../mixins/createStyleMixin';\n\nconst errorAttrs = ['invalid', 'required'];\n\nconst forwardProps = (src, targets, property) => {\n  const targetArr = Array.isArray(targets) ? targets : [targets];\n\n  Object.defineProperty(src, property, {\n    set(v) {\n      targetArr.forEach((target) => {\n        target[property] = v;\n      });\n    },\n    get() {\n      return targets[0][property];\n    },\n    configurable: true,\n  });\n};\n\n// recursively take the first slot child until it finds an element which is not a slot\n// stops after \"nestingLevel\" times\nconst getNestedInput = (ele) => {\n  if (!ele) return undefined;\n\n  const nestingLevel = 10;\n\n  let nonSlotEle = ele;\n  for (let i = 0; i < nestingLevel; i++) {\n    [nonSlotEle] = nonSlotEle.assignedElements();\n    if (nonSlotEle?.localName !== 'slot') return nonSlotEle;\n  }\n  return undefined;\n};\n\nconst proxyInputMixin =\n  ({\n    proxyProps = [],\n    // useProxyTargets flag allows to forwardProps to other targets, other than\n    // `this.inputElement`. It's to be used within `external-input` components,\n    // if needed\n    useProxyTargets = false,\n    // allows us to set the event that should trigger validation\n    // it can be either a string or an array of strings (for multiple events)\n    inputEvent = 'input',\n    triggerValidationEvents = [],\n    // Proxies all validations from the parent component to the input element\n    proxyParentValidation = false,\n  }) =>\n  (superclass) =>\n    class ProxyInputMixinClass extends inputValidationMixin(superclass) {\n      static get observedAttributes() {\n        return [...(superclass.observedAttributes || []), ...errorAttrs];\n      }\n\n      #inputElement;\n\n      #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n      constructor() {\n        super();\n\n        this.#inputElement = super.inputElement;\n      }\n\n      // the web-component does not loaded immediately, so we want to defer the warning\n      // and show it only if the input element was not found after the component is loaded\n      warnIfInputElementIsMissing() {\n        clearTimeout(this.inputElementTimerId);\n\n        this.inputElementTimerId = setTimeout(() => {\n          // eslint-disable-next-line no-console\n          !this.#inputElement && console.warn(this.localName, 'no input was found');\n        }, 0);\n      }\n\n      get inputElement() {\n        if (this.#inputElement) return this.#inputElement;\n\n        this.warnIfInputElementIsMissing();\n\n        const inputSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"input\"]');\n        const textAreaSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"textarea\"]');\n\n        this.#inputElement = getNestedInput(inputSlot) || getNestedInput(textAreaSlot);\n\n        return this.#inputElement;\n      }\n\n      set inputElement(ele) {\n        this.#inputElement = ele;\n      }\n\n      getValidity() {\n        return this.inputElement?.validity || {};\n      }\n\n      #handleErrorMessage() {\n        this.setAttribute('error-message', this.validationMessage);\n      }\n\n      // We do not want to show the default validity report tooltip\n      // So we are overriding the reportValidity fn to show the input's error message\n      reportValidity = () => {\n        // we want to update validity so in case the value was set programmatically, we won't get an error\n        this.inputElement.setCustomValidity('');\n        this.setCustomValidity('');\n        if (!this.checkValidity()) {\n          this.setAttribute('invalid', 'true');\n          this.#handleErrorMessage();\n          this.focus();\n        }\n      };\n\n      // we are keeping also the default reportValidity because there are some components that still using it\n      defaultReportValidity() {\n        return super.reportValidity();\n      }\n\n      init() {\n        super.init?.();\n\n        // vaadin sets invalid indication on blur\n        // we want invalid indication to appear only when calling reportValidity\n        // this is why we are overriding vaadin's setInvalid behavior\n        // to update only when the element is valid (so invalid indication will only be removed)\n        // and we are adding it in reportValidity\n        // eslint-disable-next-line func-names\n        this.baseElement._setInvalid = function (invalid) {\n          if (!invalid && this._shouldSetInvalid(invalid)) {\n            this.invalid = invalid;\n          }\n        };\n\n        // We want to ensure that `input` events properly cross ShadowDOM boundries\n        // e.g. When we autofill a component's input with 1Password, for instance,\n        // the event is fired without `composed: true` and doesn't our component's\n        // ShadowDOM.\n        this.baseElement.addEventListener('input', (e) => {\n          if (!e.composed) {\n            this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n          }\n        });\n\n        triggerValidationEvents.forEach((e) => {\n          this.baseElement?.addEventListener(e, () => {\n            this.inputElement?.setCustomValidity('');\n          });\n        });\n\n        // on some cases the base element is not ready so the inputElement is empty\n        // we are deferring this section to make sure the base element is ready\n        setTimeout(() => {\n          const validationEvents = Array.isArray(inputEvent) ? inputEvent : [inputEvent];\n\n          validationEvents.forEach((e) => {\n            this.baseElement?.addEventListener(e, () => {\n              if (!this.baseElement.checkValidity()) {\n                this.#handleErrorMessage();\n              } else {\n                this.removeAttribute('invalid');\n              }\n            });\n          });\n\n          this.baseElement.addEventListener('change', () => {\n            this.#dispatchChange();\n          });\n\n          this.addEventListener('invalid', () => {\n            if (!this.checkValidity()) {\n              this.setAttribute('invalid', 'true');\n            }\n            this.#handleErrorMessage();\n          });\n\n          // sync properties\n          proxyProps.forEach((prop) => {\n            const externalInput = this.querySelector('input[slot=\"external-input\"]') || null;\n            const proxyTargets = useProxyTargets\n              ? [this.baseElement, externalInput].filter(Boolean)\n              : [];\n            forwardProps(this, [this.inputElement, ...proxyTargets], prop);\n          });\n\n          this.setSelectionRange = this.inputElement.setSelectionRange?.bind(this.inputElement);\n\n          forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });\n        });\n\n        if (proxyParentValidation) {\n          // All functions called on the inputElement internals will be applied to the parent\n          // component internals as well. As a result, there's no need to add outer mechanisms\n          // to update the parent component's validity state based on the input elements validity.\n          const inputElementInternals = this.inputElement.internals;\n          const parentThis = this;\n          this.inputElement.internals = new Proxy(inputElementInternals, {\n            get: (target, prop) => {\n              if (typeof target[prop] === 'function' && prop === 'setValidity') {\n                return (...args) => {\n                  // If we're calling setValidity with 3 args, then the validationTarget\n                  // needs to be swapped to be the inputElement\n                  if (args.length === 3) {\n                    const newArgs = args.slice(0, args.length - 1);\n                    newArgs.push(parentThis.inputElement);\n                    parentThis.internals[prop](...newArgs);\n                  } else {\n                    parentThis.internals[prop](...args);\n                  }\n                  return target[prop](...args);\n                };\n              }\n\n              if (typeof target[prop] === 'function') {\n                return (...args) => {\n                  parentThis.internals[prop](...args);\n                  return target[prop](...args);\n                };\n              }\n\n              return target[prop];\n            },\n          });\n        }\n      }\n    };\n\nconst composedProxyInputMixin = (proxyInputMixinConfig) =>\n  compose(\n    proxyInputMixin(proxyInputMixinConfig),\n    // in order to use input-wrapper across all our input components, we need to inject its theme\n    // to every proxy input mixin, to allow its css vars to be scoped properly and accessible\n    // in the proxy input component\n    createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') })\n  );\n\nexport { composedProxyInputMixin as proxyInputMixin };\n","import { kebabCaseJoin } from '../../utils';\nimport { forwardAttrs } from '../../componentsHelpers';\nimport { createStyleMixin } from '../mixins/createStyleMixin';\nimport { createCssVarsList } from './createStyleMixin/helpers';\n\n// this is needed because we might generate the same css vars names\n// e.g. \"overlayColor\" attribute in style mixin's mapping,\n// will generate the same var as \"color\" attribute in portals's mapping\n// when the portal name is \"overlay\".\n// because of that, we are adding this separator that is also used as a differentiator\nconst DISPLAY_NAME_SEPARATOR = '_';\nconst PORTAL_THEME_PREFIX = '@';\n\n\nconst sanitizeSelector = (selector) => selector.replace(/[^\\w\\s]/gi, '');\n\nconst withWaitForShadowRoot = (getRootElementFn) => async (that) => {\n  const ele = await getRootElementFn(that);\n\n  return new Promise((res) => {\n    const MAX_RETRIES = 20;\n    let counter = 0;\n\n    const check = () => {\n      if (counter > MAX_RETRIES) {\n        // eslint-disable-next-line no-console\n        console.error('could not get shadow root for element', ele);\n        res(ele);\n        return;\n      }\n\n      counter++;\n\n      if (!ele?.shadowRoot) {\n        setTimeout(check);\n      } else {\n        res(ele.shadowRoot);\n      }\n    };\n    check();\n  });\n};\n\nexport const portalMixin =\n  ({ name, selector, mappings = {}, forward: { attributes = [], include = true } = {} }) =>\n  (superclass) => {\n    const eleDisplayName = name || sanitizeSelector(selector);\n\n    const BaseClass = createStyleMixin({\n      mappings,\n    })(superclass);\n\n    return class PortalMixinClass extends BaseClass {\n      static get cssVarList() {\n        return {\n          ...BaseClass.cssVarList,\n          [eleDisplayName]: createCssVarsList(\n            kebabCaseJoin(superclass.componentName, DISPLAY_NAME_SEPARATOR + eleDisplayName),\n            mappings\n          ),\n        };\n      }\n\n      #portalEle;\n\n      constructor() {\n        // we cannot use \"this\" before calling \"super\"\n        const getRootElement = async (that) => {\n          const baseEle = (that.shadowRoot || that).querySelector(that.baseSelector);\n          if (!selector) {\n            return baseEle;\n          }\n\n          // in case we have a selector, we should first wait for the base element shadow root\n          //  and then look for the internal element\n          const baseEleShadowRoot = await withWaitForShadowRoot(() => baseEle)(that);\n          return baseEleShadowRoot.querySelector(selector);\n        };\n\n        const getPortalElement = withWaitForShadowRoot(getRootElement);\n\n        super({\n          getRootElement: getPortalElement,\n          componentNameSuffix: DISPLAY_NAME_SEPARATOR + eleDisplayName,\n          themeSection: PORTAL_THEME_PREFIX + eleDisplayName,\n          baseSelector: ':host',\n        });\n\n        this.#portalEle = getPortalElement(this).then((ele) => ele.host);\n      }\n\n      async #handleHoverAttribute() {\n        const portalEle = await this.#portalEle;\n        portalEle.onmouseenter = (e) => {\n          e.target.setAttribute('hover', 'true');\n        };\n        portalEle.onmouseleave = (e) => {\n          e.target.removeAttribute('hover');\n        };\n      }\n\n      async init() {\n        super.init?.();\n        const portalEle = await this.#portalEle;\n        forwardAttrs(this, portalEle, {\n          [include ? 'includeAttrs' : 'excludeAttrs']: attributes,\n        });\n\n        this.#handleHoverAttribute();\n      }\n    };\n  };\n","export const connectorMixin =\n  ({ connectorClasses }) =>\n  (superclass) =>\n    class ConnectorMixinClass extends superclass {\n      #connectorClasses = connectorClasses;\n\n      static get observedAttributes() {\n        return [...(superclass.observedAttributes || []), 'connector-template'];\n      }\n\n      get connectorClasses() {\n        return this.#connectorClasses;\n      }\n\n      set connectorClasses(value) {\n        this.#connectorClasses = value;\n      }\n\n      get connectorTemplate() {\n        return this.getAttribute('connector-template');\n      }\n\n      initializeConnector() {\n        const template = this.connectorTemplate;\n\n        if (!this.connectorClasses[template]) {\n          return;\n        }\n        const ConnectorClass = this.connectorClasses[template];\n        this.connector = new ConnectorClass(this.getAttribute.bind(this));\n      }\n\n      async fetchConnectorResults(query) {\n        if (!this.connector) {\n          // eslint-disable-next-line no-console\n          console.error(\n            `No connector initialized for the field with template: ${this.connectorTemplate}`,\n          );\n          return { results: [] };\n        }\n\n        const { results, error } = await this.connector.fetch(query);\n        if (error) {\n          return { results: [], error };\n        }\n        return {\n          results: results.map(({ label, value }) => ({\n            label,\n            value,\n          })),\n        };\n      }\n\n      init() {\n        super.init?.();\n        this.initializeConnector();\n      }\n\n      attributeChangedCallback(attrName, oldValue, newValue) {\n        super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n        if (oldValue !== newValue) {\n          if (attrName === 'connector-template') {\n            this.initializeConnector();\n          }\n        }\n      }\n    };\n","import { observeAttributes } from '../../componentsHelpers';\n\nconst defaultValidateSchema = () => true;\nconst defaultItemRenderer = (item) =>\n  `<pre>${JSON.stringify(item, null, 4)}</pre>`;\n\nconst createTemplate = (templateString) => {\n  const template = document.createElement('template');\n  template.innerHTML = templateString;\n\n  return template;\n};\n\nconst getTemplateContent = (templateOrString) => {\n  if (typeof templateOrString === 'string') {\n    return createTemplate(templateOrString).content;\n  }\n\n  if (templateOrString instanceof HTMLTemplateElement) {\n    return templateOrString.content;\n  }\n\n  // eslint-disable-next-line no-console\n  console.error('Invalid template', templateOrString);\n  return null;\n};\n\nexport const createDynamicDataMixin =\n  ({\n    itemRenderer = defaultItemRenderer,\n    validateSchema = defaultValidateSchema,\n    slotName,\n    rerenderAttrsList = [],\n    targetSelector,\n    sortFn = (data) => data,\n  }) =>\n  (superclass) =>\n    class DynamicDataMixinClass extends superclass {\n      #data = [];\n\n      #targetEle;\n\n      // eslint-disable-next-line class-methods-use-this\n      #validateSchema(data) {\n        if (!validateSchema) return true;\n\n        const validation = validateSchema(data);\n        if (validation === true) return true;\n\n        // eslint-disable-next-line no-console\n        console.error('Data schema validation failed', validation || '');\n\n        return false;\n      }\n\n      #removeOldItems() {\n        const selector = slotName ? `*[slot=\"${slotName}\"]` : ':not([slot])';\n        if (!this.#targetEle) return;\n        this.#targetEle\n          .querySelectorAll(selector)\n          .forEach((item) => item.remove());\n      }\n\n      #renderItems() {\n        this.#removeOldItems();\n        const items = sortFn ? this.data.sort(sortFn) : this.data;\n        items.forEach((item, index) => {\n          const content = getTemplateContent(itemRenderer(item, index, this));\n          if (!this.#targetEle) return;\n          this.#targetEle.appendChild(content?.cloneNode(true));\n        });\n      }\n\n      set data(value) {\n        if (this.#validateSchema(value)) {\n          this.#data = value;\n          this.#renderItems();\n        }\n      }\n\n      get data() {\n        return this.#data;\n      }\n\n      init() {\n        super.init?.();\n\n        this.#targetEle = targetSelector\n          ? this.shadowRoot.querySelector(targetSelector)\n          : this.baseElement;\n\n        observeAttributes(\n          this,\n          (attrs) => {\n            if (attrs.includes('data')) this.#handleDataAttr();\n            else this.#renderItems();\n          },\n          { includeAttrs: [...rerenderAttrsList, 'data'] },\n        );\n      }\n\n      #handleDataAttr() {\n        const dataAttr = this.getAttribute('data');\n\n        if (!dataAttr) return;\n\n        try {\n          this.data = JSON.parse(dataAttr);\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.warn('Invalid JSON data', dataAttr);\n        }\n      }\n    };\n","export const activeableMixin = (superclass) =>\n  class ActiveableMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      this.baseElement.addEventListener('mousedown', (e) => {\n        e.preventDefault();\n        this.setAttribute('active', 'true');\n        window.addEventListener('mouseup', () => this.removeAttribute('active'), {\n          once: true,\n        });\n      });\n    }\n  };\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n  const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n  return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src, altText) => {\n  const ele = document.createElement('img');\n  ele.setAttribute('src', src);\n  ele.setAttribute('alt', altText);\n  return ele;\n};\n\nconst createSvgEle = (text) => {\n  // we want to purify the SVG to avoid XSS attacks\n  const clean = DOMPurify.sanitize(text, {\n    USE_PROFILES: { svg: true, svgFilters: true },\n    // allow image to render\n    ADD_TAGS: ['image'],\n    // forbid interactiviy via `use` tags (which are sanitized by default)\n    FORBID_TAGS: ['defs']\n  });\n\n  const parser = new DOMParser();\n  const ele = parser\n    .parseFromString(clean, 'image/svg+xml')\n    .querySelector('svg');\n  return ele;\n};\n\nexport const createImage = async (src, altText) => {\n  try {\n    let ele;\n    if (isBase64Svg(src)) {\n      // handle base64 source\n      const svgXml = atob(src.slice(base64Prefix.length));\n      ele = createSvgEle(svgXml);\n    } else if (getFileExtension(src) === 'svg') {\n      // handle urls\n      const fetchedSrc = await fetch(src);\n      const text = await fetchedSrc.text();\n      ele = createSvgEle(text);\n    } else {\n      // handle binary\n      ele = createImgEle(src, altText);\n    }\n\n    ele.style.setProperty('max-width', '100%');\n    ele.style.setProperty('max-height', '100%');\n\n    return ele;\n  } catch {\n    return null;\n  }\n};\n","/* eslint-disable no-use-before-define */\nimport {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createImage } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('image');\n\nconst srcAttrs = ['src', 'src-dark'];\n\nclass RawImage extends createBaseClass({\n  componentName,\n  baseSelector: 'slot',\n}) {\n  static get observedAttributes() {\n    return srcAttrs;\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n    injectStyle(\n      `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n      :host > slot {\n        width: 100%;\n        height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n      ::slotted(*) {\n        width: 100%;\n\t\t\t}\n\n      .hidden {\n        display: none;\n      }\n      `,\n      this,\n    );\n  }\n\n  init() {\n    super.init?.();\n    this.toggleVisibility(this.src);\n  }\n\n  onThemeChange() {\n    this.renderImage();\n  }\n\n  toggleVisibility(isVisible) {\n    if (isVisible) {\n      this.classList.remove('hidden');\n    } else {\n      this.classList.add('hidden');\n    }\n  }\n\n  get altText() {\n    return this.getAttribute('alt') || '';\n  }\n\n  get legacySrc() {\n    return this.getAttribute('src');\n  }\n\n  get themeSrc() {\n    return this.getAttribute(`src-${this.currentThemeName}`);\n  }\n\n  get src() {\n    return this.themeSrc || this.legacySrc;\n  }\n\n  // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n  // with the value from the `st-fill` attribute\n  // eslint-disable-next-line class-methods-use-this\n  updateFillColor(node) {\n    // set fill to root node and all its relevant selectors\n    const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n    elementsToReplace.forEach((ele) => {\n      ele.setAttribute(\n        'fill',\n        `var(${ImageClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`,\n      );\n    });\n  }\n\n  renderImage() {\n    this.toggleVisibility(this.src);\n\n    createImage(this.src, this.altText).then((res) => {\n      this.innerHTML = '';\n      if (res) {\n        this.updateFillColor(res);\n        this.appendChild(res);\n      }\n    });\n  }\n\n  // render only when src attribute matches current theme\n  shouldRender(src) {\n    const srcVal = this.getAttribute(src);\n    return this.src === srcVal;\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue === newValue) return;\n\n    if (this.shouldRender(attrName)) {\n      this.renderImage();\n    }\n  }\n}\n\nexport const ImageClass = compose(\n  createStyleMixin({\n    mappings: {\n      fill: {},\n      height: { selector: () => ':host' },\n      width: { selector: () => ':host' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawImage);\n","import {\n  componentNameValidationMixin,\n  createProxy,\n  createStyleMixin,\n  draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { ImageClass } from '@descope-ui/descope-image/class';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n  createStyleMixin({\n    mappings: {\n      fill: [{}, { property: ImageClass.cssVarList.fill }],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'descope-image',\n    style: () => `\n      :host {\n        display: inline-flex;\n      }\n      `,\n    excludeAttrsSync: ['tabindex', 'class', 'style'],\n    componentName,\n  }),\n);\n","export const clickableMixin = (superclass) =>\n  class ClickableMixinClass extends superclass {\n    get isLoading() {\n      return this.getAttribute('loading') === 'true';\n    }\n\n    click() {\n      this.isLoading || super.click();\n    }\n  };\n","import { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n    width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { property: 'width' },\n      hostHeight: { property: 'height' },\n      hostDirection: { ...host, property: 'direction' },\n      fontSize: {},\n      fontFamily: {},\n\n      cursor: {},\n      backgroundColor: {},\n\n      outlineOffset: {},\n      outlineColor: {},\n      outlineStyle: {},\n      outlineWidth: {},\n\n      borderRadius: {},\n      borderColor: {},\n      borderStyle: {},\n      borderWidth: {},\n\n      verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n      horizontalPadding: [\n        { property: 'padding-right', fallback: '0.875em' },\n        { property: 'padding-left', fallback: '0.875em' },\n      ],\n\n      labelTextColor: { property: 'color' },\n      iconColor: {\n\t\tselector: () => `::slotted(*)`,\n\t\tproperty: IconClass.cssVarList.fill\n\t  },\n      labelTextDecoration: { ...label, property: 'text-decoration' },\n      labelSpacing: { ...label, property: 'gap' },\n      textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n      iconSize: [\n        { ...slottedIcon, property: 'width' },\n        { ...slottedIcon, property: 'height' },\n      ],\n    },\n  }),\n  clickableMixin,\n  draggableMixin,\n  componentNameValidationMixin\n)(\n  createProxy({\n    slots: ['', 'prefix', 'label', 'suffix'],\n    wrappedEleName: 'vaadin-button',\n    style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n      :host([full-width=\"true\"]) {\n        width: var(${ButtonClass.cssVarList.hostWidth});\n      }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n        padding: 0;\n\t\t\t}\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'class', 'style'],\n    componentName,\n  })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"]) ::part(prefix),\n\t:host([loading=\"true\"]) ::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\nimport { componentName, ButtonClass } from './component/ButtonClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = ButtonClass.cssVarList;\n\nconst mode = {\n  primary: globalRefs.colors.primary,\n  secondary: globalRefs.colors.secondary,\n  success: globalRefs.colors.success,\n  error: globalRefs.colors.error,\n  surface: globalRefs.colors.surface,\n};\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars({ mode }, componentName);\n\nconst button = {\n  ...helperTheme,\n\n  [compVars.fontFamily]: globalRefs.fonts.font1.family,\n\n  [compVars.cursor]: 'pointer',\n  [compVars.hostHeight]: '3em',\n  [compVars.hostWidth]: 'auto',\n  [compVars.hostDirection]: globalRefs.direction,\n\n  [compVars.borderRadius]: globalRefs.radius.sm,\n  [compVars.borderWidth]: globalRefs.border.xs,\n  [compVars.borderStyle]: 'solid',\n  [compVars.borderColor]: 'transparent',\n\n  [compVars.labelSpacing]: '0.25em',\n\n  [compVars.textAlign]: 'center', // default text align center\n  textAlign: {\n    right: { [compVars.textAlign]: 'right' },\n    left: { [compVars.textAlign]: 'left' },\n    center: { [compVars.textAlign]: 'center' },\n  },\n\n  [compVars.verticalPadding]: '1em',\n  [compVars.horizontalPadding]: '0.875em',\n\n  [compVars.outlineWidth]: globals.border.sm,\n  [compVars.outlineOffset]: '0px', // keep `px` unit for external calc\n  [compVars.outlineStyle]: 'solid',\n  [compVars.outlineColor]: 'transparent',\n\n  [compVars.iconSize]: '1.5em',\n\n  size: {\n    xs: { [compVars.fontSize]: '12px' },\n    sm: { [compVars.fontSize]: '14px' },\n    md: { [compVars.fontSize]: '16px' },\n    lg: { [compVars.fontSize]: '18px' },\n  },\n\n  _square: {\n    [compVars.hostHeight]: '3em',\n    [compVars.hostWidth]: '3em',\n    [compVars.verticalPadding]: '0',\n  },\n\n  _fullWidth: {\n    [compVars.hostWidth]: '100%',\n  },\n\n  _loading: {\n    [compVars.cursor]: 'wait',\n    [compVars.labelTextColor]: helperRefs.main,\n  },\n\n  _disabled: {\n    [helperVars.main]: globalRefs.colors.surface.light,\n    [helperVars.dark]: globalRefs.colors.surface.dark,\n    [helperVars.light]: globalRefs.colors.surface.light,\n    [helperVars.contrast]: globalRefs.colors.surface.main,\n    [compVars.iconColor]: globalRefs.colors.surface.main,\n  },\n\n  variant: {\n    contained: {\n      [compVars.labelTextColor]: helperRefs.contrast,\n      [compVars.backgroundColor]: helperRefs.main,\n      _hover: {\n        [compVars.backgroundColor]: helperRefs.dark,\n        _loading: {\n          [compVars.backgroundColor]: helperRefs.main,\n        },\n      },\n      _active: {\n        [compVars.backgroundColor]: helperRefs.main,\n      },\n    },\n\n    outline: {\n      [compVars.labelTextColor]: helperRefs.main,\n      [compVars.borderColor]: helperRefs.main,\n      _hover: {\n        [compVars.labelTextColor]: helperRefs.dark,\n        [compVars.borderColor]: helperRefs.dark,\n      },\n      _active: {\n        [compVars.labelTextColor]: helperRefs.main,\n        [compVars.borderColor]: helperRefs.main,\n      },\n    },\n\n    link: {\n      [compVars.labelTextColor]: helperRefs.main,\n      [compVars.horizontalPadding]: '0.125em',\n      _hover: {\n        [compVars.labelTextColor]: helperRefs.dark,\n        [compVars.labelTextDecoration]: 'underline',\n      },\n      _active: {\n        [compVars.labelTextColor]: helperRefs.main,\n      },\n    },\n  },\n\n  _focused: {\n    [compVars.outlineColor]: helperRefs.light,\n  },\n};\n\nexport default button;\n\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","import { camelCaseJoin, isFunction, kebabCase, kebabCaseJoin } from '../../helpers';\nimport { getCssVarName } from '../../helpers/componentHelpers';\n\nconst getOverrideCssVarName = (origVarName) => `${origVarName}__override`;\n\nconst createCssVar = (varName, fallback, createOverride = false) => {\n  const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;\n\n  if (!createOverride) return ret;\n\n  // we are generating an override css var to allow override with fallback to the default var\n  const overrideVarName = getOverrideCssVarName(varName);\n  return `var(${overrideVarName}, ${ret})`;\n};\n\nconst createCssSelector = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>\n  isFunction(relativeSelectorOrSelectorFn)\n    ? relativeSelectorOrSelectorFn(baseSelector)\n    : `${baseSelector}${\n        /^[A-Za-z]/.test(relativeSelectorOrSelectorFn)\n          ? ` ${relativeSelectorOrSelectorFn}`\n          : relativeSelectorOrSelectorFn\n      }`;\n\nclass StyleBuilder {\n  constructor() {\n    this.styleMap = new Map();\n  }\n\n  add(selector, property, value) {\n    if (!this.styleMap.has(selector)) {\n      this.styleMap.set(selector, []);\n    }\n\n    this.styleMap.set(selector, [...this.styleMap.get(selector), { property, value }]);\n  }\n\n  toString() {\n    return Array.from(this.styleMap.entries()).reduce((acc, [selector, propValArr]) => {\n      const properties = propValArr\n        .map(({ property, value }) => `${property}: ${value}`)\n        .join(';\\n');\n\n      return `${acc}${selector} { \\n${properties} \\n}\\n\\n`;\n    }, '');\n  }\n}\n\nconst normalizeConfig = (attr, config) => {\n  const defaultMapping = { selector: '', property: kebabCase(attr) };\n\n  if (!config || !Object.keys(config).length) return [defaultMapping];\n\n  if (Array.isArray(config)) return config.map((entry) => ({ ...defaultMapping, ...entry }));\n\n  return [{ ...defaultMapping, ...config }];\n};\n\nconst getFallbackVarName = (origVarName, suffix = 'fallback') => kebabCaseJoin(origVarName, suffix);\n\nexport const createStyle = (componentName, baseSelector, mappings) => {\n  const style = new StyleBuilder();\n  // we generate all the fallback vars recursively\n  const createFallbackVar = (fallback, origVarName) => {\n    if (!fallback) return '';\n    if (typeof fallback === 'string') return fallback;\n\n    const fallbackVarName = getFallbackVarName(origVarName, fallback?.suffix);\n    return createCssVar(fallbackVarName, createFallbackVar(fallback.fallback, fallbackVarName));\n  };\n\n  Object.keys(mappings).forEach((attr) => {\n    const attrConfig = normalizeConfig(attr, mappings[attr]);\n\n    const cssVarName = getCssVarName(componentName, attr);\n\n    attrConfig.forEach(\n      ({ selector: relativeSelectorOrSelectorFn, property, important, fallback }) => {\n        const fallbackValue = createFallbackVar(fallback, cssVarName);\n        style.add(\n          createCssSelector(baseSelector, relativeSelectorOrSelectorFn),\n          isFunction(property) ? property() : property,\n          createCssVar(cssVarName, fallbackValue, true) + (important ? '!important' : '')\n        );\n      }\n    );\n  });\n\n  return style.toString();\n};\n\nconst getFallbackVarsNames = (attr, origVarName, { fallback }) => {\n  if (!fallback) return {};\n\n  const fallbackVarName = getFallbackVarName(origVarName, fallback.suffix);\n  const fallbackAttrName = camelCaseJoin(attr, fallback.suffix || 'fallback');\n  return {\n    [fallbackAttrName]: fallbackVarName,\n    ...getFallbackVarsNames(fallbackAttrName, fallbackVarName, fallback),\n  };\n};\n\nexport const createCssVarsList = (componentName, mappings) =>\n  Object.keys(mappings).reduce((acc, attr) => {\n    const varName = getCssVarName(componentName, attr);\n\n    return Object.assign(\n      acc,\n      { [attr]: varName },\n      // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name\n      { [attr + 'Override']: getOverrideCssVarName(varName) },\n      getFallbackVarsNames(attr, varName, mappings[attr])\n    );\n  }, {});\n\n// on some cases we need a selector to be more specific than another\n// for this we have this fn that generate a class selector multiple times\nexport const createClassSelectorSpecifier = (className, numOfRepeats) =>\n  `.${className}`.repeat(numOfRepeats);\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { BASE_THEME_SECTION, CSS_SELECTOR_SPECIFIER_MULTIPLY } from '../../constants';\nimport { kebabCaseJoin } from '../../helpers';\nimport { getCssVarName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentsThemeManager } from '../../helpers/themeHelpers';\nimport { createStyle, createCssVarsList, createClassSelectorSpecifier } from './helpers';\n\nconst STYLE_OVERRIDE_ATTR_PREFIX = 'st';\n\nexport const createStyleMixin =\n  ({ mappings = {}, componentNameOverride = '' }) =>\n  (superclass) => {\n    const componentName = componentNameOverride || superclass.componentName;\n\n    return class CustomStyleMixinClass extends superclass {\n      static get cssVarList() {\n        return {\n          ...superclass.cssVarList,\n          ...createCssVarsList(componentName, {\n            ...mappings,\n          }),\n        };\n      }\n\n      #overrideStyleEle;\n\n      #themeStyleEle;\n\n      #disconnectThemeManager;\n\n      #componentNameSuffix;\n\n      #themeSection;\n\n      #rootElement;\n\n      #baseSelector;\n\n      #styleAttributes;\n\n      #getRootElement;\n\n      // we are using this mixin also for portalMixin\n      // so we should be able to inject styles to other DOM elements\n      // this is why we need to support these overrides\n      constructor({\n        getRootElement,\n        componentNameSuffix = '',\n        themeSection = BASE_THEME_SECTION,\n        baseSelector,\n      } = {}) {\n        super();\n        this.#componentNameSuffix = componentNameSuffix;\n        this.#themeSection = themeSection;\n        this.#baseSelector = baseSelector ?? this.baseSelector;\n        this.#getRootElement = getRootElement;\n\n        this.#styleAttributes = Object.keys(CustomStyleMixinClass.cssVarList).map((key) =>\n          kebabCaseJoin(STYLE_OVERRIDE_ATTR_PREFIX, componentNameSuffix, key)\n        );\n      }\n\n      // eslint-disable-next-line class-methods-use-this\n      get #componentTheme() {\n        return componentsThemeManager.currentTheme?.[componentName] || '';\n      }\n\n      #onComponentThemeChange() {\n        this.#themeStyleEle.replaceSync(this.#componentTheme[this.#themeSection]);\n      }\n\n      #createComponentTheme() {\n        this.#themeStyleEle = injectStyle('', this.#rootElement, { prepend: true });\n        this.#disconnectThemeManager = componentsThemeManager.onCurrentThemeChange(\n          this.#onComponentThemeChange.bind(this)\n        );\n        this.#onComponentThemeChange();\n      }\n\n      #createOverridesStyle() {\n        if (this.#styleAttributes.length) {\n          let classSpecifier = createClassSelectorSpecifier(\n            componentName,\n            CSS_SELECTOR_SPECIFIER_MULTIPLY\n          );\n          const elementId = this.getAttribute('id');\n          if (elementId) {\n            // basically this is enough to make the selector more specific\n            // but just in case there is no id, we will also add the class multiple times\n            classSpecifier += `#${CSS.escape(elementId)}`;\n          }\n\n          this.#overrideStyleEle = injectStyle(`:host(${classSpecifier}) {}`, this.#rootElement);\n        }\n      }\n\n      #setAttrOverride(attrName, value) {\n        const style = this.#overrideStyleEle.cssRules[0].style;\n\n        if (!style) return;\n\n        const varName = getCssVarName(\n          componentName,\n          attrName.replace(new RegExp(`^${STYLE_OVERRIDE_ATTR_PREFIX}-`), '')\n        );\n\n        if (value) style?.setProperty(varName, value);\n        else {\n          style?.removeProperty(varName);\n          this.removeAttribute(attrName);\n        }\n      }\n\n      #updateOverridesStyle(attrs = []) {\n        attrs.forEach((attr) => {\n          if (this.#styleAttributes.includes(attr)) {\n            this.#setAttrOverride(attr, this.getAttribute(attr));\n          }\n        });\n      }\n\n      #createMappingStyle() {\n        if (Object.keys(mappings).length) {\n          const style = createStyle(\n            kebabCaseJoin(componentName, this.#componentNameSuffix),\n            this.#baseSelector,\n            mappings\n          );\n\n          injectStyle(style, this.#rootElement, { prepend: true });\n        }\n      }\n\n      #addClassName(className) {\n        (this.#rootElement.classList || this.#rootElement.host.classList).add(className);\n      }\n\n      async init() {\n        super.init?.();\n        if (this.shadowRoot.isConnected) {\n          this.#rootElement = (await this.#getRootElement?.(this)) || this.shadowRoot;\n\n          this.#addClassName(componentName);\n\n          this.#createMappingStyle();\n          this.#createComponentTheme();\n          this.#createOverridesStyle();\n\n          // this is instead attributeChangedCallback because we cannot use static methods in this case\n          observeAttributes(this, this.#updateOverridesStyle.bind(this), {});\n        }\n      }\n\n      disconnectedCallback() {\n        super.disconnectedCallback?.();\n\n        this.#disconnectThemeManager?.();\n      }\n    };\n  };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const draggableMixin = (superclass) =>\n  class DraggableMixinClass extends superclass {\n    constructor() {\n      super();\n\n      injectStyle(`:host([draggable=\"true\"]) * { cursor: inherit!important }`, this);\n    }\n\n    get isDraggable() {\n      return this.hasAttribute('draggable') && this.getAttribute('draggable') !== 'false';\n    }\n\n    init() {\n      // because we are delegating the focus from the outer component,\n      // the D&D is not working well in the page editor\n      // in order to solve it we are making the inner component focusable on mouse down\n      // and removing it on complete\n      this.addEventListener('mousedown', (e) => {\n        if (this.isDraggable) {\n          const prevTabIndex = this.baseElement.getAttribute('tabindex');\n          this.baseElement.setAttribute('tabindex', '-1');\n\n          const onComplete = () => {\n            prevTabIndex\n              ? this.baseElement.setAttribute('tabindex', prevTabIndex)\n              : this.baseElement.removeAttribute('tabindex');\n\n            e.target.removeEventListener('mouseup', onComplete);\n            e.target.removeEventListener('dragend', onComplete);\n          };\n\n          e.target.addEventListener('mouseup', onComplete, { once: true });\n          e.target.addEventListener('dragend', onComplete, { once: true });\n        }\n      });\n\n      super.init?.();\n    }\n  };\n","export const componentNameValidationMixin = (superclass) =>\n  class ComponentNameValidationMixinClass extends superclass {\n    #checkComponentName() {\n      const currentComponentName = this.localName;\n\n      if (!superclass.componentName) {\n        throw Error(\n          `component name is not defined on super class, make sure you have a static get for \"componentName\"`\n        );\n      }\n\n      if (currentComponentName !== superclass.componentName) {\n        throw Error(\n          `component name mismatch, expected \"${superclass.componentName}\", current \"${currentComponentName}\"`\n        );\n      }\n    }\n\n    init() {\n      super.init?.();\n      this.#checkComponentName();\n    }\n  };\n","export const componentsContextMixin = (superclass) =>\n  class ComponentsContextMixinClass extends superclass {\n    updateComponentsContext(componentsContext) {\n      this.dispatchEvent(\n        new CustomEvent('components-context', {\n          bubbles: true,\n          composed: true,\n          detail: componentsContext,\n        })\n      );\n    }\n  };\n","export const hoverableMixin = (superclass) =>\n  class HoverableMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      this.baseElement.addEventListener('mouseover', (e) => {\n        this.setAttribute('hover', 'true');\n        e.target.addEventListener('mouseleave', () => this.removeAttribute('hover'), {\n          once: true,\n        });\n      });\n    }\n  };\n","import { observeAttributes } from '../helpers/componentHelpers';\n\nconst booleanAttributesList = [\n  'readonly',\n  'focused',\n  'invalid',\n  'has-label',\n  'required',\n  'disabled',\n  'checked',\n  'has-helper',\n  'has-value',\n  'step-buttons-visible',\n  'hover',\n  'has-error-message',\n  'focus-ring',\n  'opened',\n  'active',\n  'password-visible',\n  'opening',\n  'closing',\n  'has-no-options',\n  'loading',\n  'allow-custom-value',\n  'loading',\n];\n\nconst isBooleanAttribute = (attr) => {\n  return booleanAttributesList.includes(attr);\n};\n// we want all the valueless attributes to have \"true\" value\n// and all the falsy attribute to be removed\nexport const normalizeBooleanAttributesMixin = (superclass) =>\n  class NormalizeBooleanAttributesMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      observeAttributes(\n        this,\n        (attrs) =>\n          attrs.forEach((attr) => {\n            const attrVal = this.getAttribute(attr);\n\n            if (isBooleanAttribute(attr)) {\n              if (attrVal === '') {\n                this.setAttribute(attr, 'true');\n              } else if (attrVal === 'false') {\n                this.removeAttribute(attr);\n              }\n            } else if (!attrVal) {\n              // eslint-disable-next-line no-console\n              console.debug(\n                `attribute \"${attr}\" has no value, should it be added to the boolean attributes list?`\n              );\n            }\n          }),\n        {}\n      );\n    }\n  };\n","import { compose } from '../helpers';\nimport { componentNameValidationMixin } from '../mixins/componentNameValidationMixin';\nimport { componentsContextMixin } from '../mixins/componentsContextMixin';\nimport { hoverableMixin } from '../mixins/hoverableMixin';\nimport { normalizeBooleanAttributesMixin } from '../mixins/normalizeBooleanAttributesMixin';\n\nexport const createBaseClass = ({ componentName, baseSelector = '' }) => {\n  class DescopeBaseClass extends HTMLElement {\n    static get componentName() {\n      return componentName;\n    }\n\n    #baseElement;\n\n    #isInit = true;\n\n    // base selector is the selector for the component wrapper,\n    // it's the highest element that is relevant for the layout\n    // eslint-disable-next-line class-methods-use-this\n    get baseSelector() {\n      return baseSelector;\n    }\n\n    // this is the base element, which returned by querying the base selector\n    get baseElement() {\n      this.#baseElement ??= this.baseSelector\n        ? this.rootElement.querySelector(this.baseSelector)\n        : this;\n\n      if (!this.#baseElement) {\n        // eslint-disable-next-line no-console\n        console.warn('missing base element for component', this.localName);\n      }\n      return this.#baseElement;\n    }\n\n    // this is the component root level element,\n    // it can be either a shadow root or the component's node from the light DOM\n    get rootElement() {\n      return this.shadowRoot || this;\n    }\n\n    get name() {\n      return this.getAttribute('name');\n    }\n\n    connectedCallback() {\n      super.connectedCallback?.();\n\n      if (this.rootElement.isConnected) {\n        // the init function is running once, on the first time the component is connected\n        if (this.#isInit) {\n          this.#isInit = false;\n          this.init?.();\n        }\n      }\n    }\n  }\n\n  return compose(\n    componentNameValidationMixin,\n    hoverableMixin,\n    normalizeBooleanAttributesMixin,\n    componentsContextMixin\n  )(DescopeBaseClass);\n};\n","// create a dispatch event function that also calls to the onevent function in case  it's set\n// usage example:\n// #dispatchSomething = createDispatchEvent.bind(this, 'something' { ...options })\n// this will dispatch a new event when called, but also call to \"onsomething\"\nexport function createDispatchEvent(eventName, options = {}) {\n  const event = new Event(eventName, options);\n\n  this[`on${eventName}`]?.(event); // in case we got an event callback as property\n  this.dispatchEvent(event);\n}\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../baseClasses/createBaseClass';\nimport { isFunction } from '../helpers';\nimport { forwardProps, syncAttrs } from '../helpers/componentHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const createProxy = ({\n  componentName,\n  wrappedEleName,\n  slots = [],\n  style,\n  excludeAttrsSync = [],\n  includeAttrsSync = [],\n  includeForwardProps = [],\n  delegatesFocus = true,\n}) => {\n  class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {\n    #dispatchBlur = createDispatchEvent.bind(this, 'blur');\n\n    #dispatchFocus = createDispatchEvent.bind(this, 'focus');\n\n    constructor() {\n      super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `\n\t\t\t<${wrappedEleName}>\n\t\t\t${slots\n        .map(\n          (\n            slot // when slot is an empty string, we will create the default slot (without a name)\n          ) => `<slot ${slot ? `name=\"${slot}\" slot=\"${slot}\"` : ''}></slot>`\n        )\n        .join('')}\n\t\t\t</${wrappedEleName}>\n\t\t`;\n\n      injectStyle((isFunction(style) ? style() : style) || '', this);\n    }\n\n    init() {\n      super.init?.();\n\n      this.baseElement.addEventListener('blur', (_) => {\n        this.#dispatchBlur();\n      });\n\n      this.baseElement.addEventListener('focus', (_) => {\n        this.#dispatchFocus();\n      });\n\n      // this is needed for components that uses props, such as combo box\n      forwardProps(this.baseElement, this, includeForwardProps);\n\n      syncAttrs(this.baseElement, this, {\n        excludeAttrs: excludeAttrsSync,\n        includeAttrs: includeAttrsSync,\n      });\n    }\n  }\n\n  return ProxyClass;\n};\n","import 'element-internals-polyfill'; // this is needed in order to support older browsers\n\nconst observedAttributes = ['required', 'pattern'];\n\nconst errorAttributes = {\n  valueMissing: 'data-errormessage-value-missing',\n  patternMismatch: 'data-errormessage-pattern-mismatch',\n  tooShort: 'data-errormessage-pattern-mismatch-too-short',\n  tooLong: 'data-errormessage-pattern-mismatch-too-long',\n  rangeUnderflow: 'data-errormessage-pattern-range-underflow',\n  rangeOverflow: 'data-errormessage-pattern-range-overflow',\n  typeMismatch: 'data-errormessage-type-mismatch',\n};\n\nconst validationTargetSymbol = Symbol('validationTarget');\n\nexport const inputValidationMixin = (superclass) =>\n  class InputValidationMixinClass extends superclass {\n    #validationTarget = validationTargetSymbol;\n\n    static get observedAttributes() {\n      return [...(superclass.observedAttributes || []), ...observedAttributes];\n    }\n\n    static get formAssociated() {\n      return true;\n    }\n\n    #internals;\n\n    get internals() {\n      return this.#internals;\n    }\n\n    set internals(value) {\n      this.#internals = value;\n    }\n\n    constructor() {\n      super();\n\n      this.#internals = this.attachInternals();\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgValueMissing() {\n      return 'Please fill out this field.';\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgPatternMismatch() {\n      return 'Please match the requested format.';\n    }\n\n    get defaultErrorMsgTooShort() {\n      return `Minimum length is ${this.getAttribute('minlength')}.`;\n    }\n\n    get defaultErrorMsgTooLong() {\n      return `Maximum length is ${this.getAttribute('maxlength')}.  `;\n    }\n\n    get defaultErrorMsgRangeUnderflow() {\n      return `At least ${this.getAttribute('min-items-selection')} items are required.`;\n    }\n\n    get defaultErrorMsgRangeOverflow() {\n      return `At most ${this.getAttribute('max-items-selection')} items are allowed.`;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get defaultErrorMsgTypeMismatch() {\n      return `Please match the requested type.`;\n    }\n\n    getCustomErrorMessage(attr, defaultMsg) {\n      return this.hasAttribute(attr) ? this.getAttribute(attr) || ' ' : defaultMsg;\n    }\n\n    getErrorMessage(flags) {\n      const {\n        valueMissing,\n        patternMismatch,\n        typeMismatch,\n        stepMismatch,\n        tooShort,\n        tooLong,\n        rangeOverflow,\n        rangeUnderflow,\n        badInput,\n        customError,\n      } = flags;\n\n      switch (true) {\n        case valueMissing:\n          return this.getCustomErrorMessage(\n            errorAttributes.valueMissing,\n            this.defaultErrorMsgValueMissing\n          );\n        case patternMismatch || stepMismatch || badInput:\n          return this.getCustomErrorMessage(\n            errorAttributes.patternMismatch,\n            this.defaultErrorMsgPatternMismatch\n          );\n        case typeMismatch:\n          return this.getCustomErrorMessage(\n            errorAttributes.typeMismatch,\n            this.defaultErrorMsgTypeMismatch\n          );\n        case tooShort:\n          return this.getCustomErrorMessage(errorAttributes.tooShort, this.defaultErrorMsgTooShort);\n        case tooLong:\n          return this.getCustomErrorMessage(errorAttributes.tooLong, this.defaultErrorMsgTooLong);\n        case rangeUnderflow:\n          return this.getCustomErrorMessage(\n            errorAttributes.rangeUnderflow,\n            this.defaultErrorMsgRangeUnderflow\n          );\n        case rangeOverflow:\n          return this.getCustomErrorMessage(\n            errorAttributes.rangeOverflow,\n            this.defaultErrorMsgRangeOverflow\n          );\n        case customError:\n          return this.validationMessage;\n        default:\n          return '';\n      }\n    }\n\n    #setValidity() {\n      const validity = this.isReadOnly ? {} : this.getValidity();\n      this.#internals.setValidity(validity, this.getErrorMessage(validity), this.validationTarget);\n    }\n\n    get validationMessage() {\n      return this.#internals.validationMessage;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    getValidity() {\n      // eslint-disable-next-line no-console\n      console.warn('getValidity', 'is not implemented');\n    }\n\n    checkValidity() {\n      return this.#internals.validity.valid;\n    }\n\n    reportValidity() {\n      return this.#internals.reportValidity();\n    }\n\n    get validity() {\n      return this.#internals.validity;\n    }\n\n    get validationTarget() {\n      return this.#validationTarget === validationTargetSymbol\n        ? this.inputElement\n        : this.#validationTarget;\n    }\n\n    set validationTarget(val) {\n      this.#validationTarget = val;\n    }\n\n    setCustomValidity(errorMessage) {\n      if (errorMessage) {\n        this.#internals.setValidity({ customError: true }, errorMessage, this.validationTarget);\n      } else {\n        this.#internals.setValidity({});\n        this.#setValidity();\n      }\n    }\n\n    get isRequired() {\n      return this.hasAttribute('required') && this.getAttribute('required') !== 'false';\n    }\n\n    get isReadOnly() {\n      return this.hasAttribute('readonly') && this.getAttribute('readonly') !== 'false';\n    }\n\n    get isDisabled() {\n      return this.hasAttribute('disabled') && this.getAttribute('disabled') !== 'false';\n    }\n\n    get pattern() {\n      return this.getAttribute('pattern');\n    }\n\n    get form() {\n      return this.#internals.form;\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (observedAttributes.includes(attrName)) {\n        this.#setValidity();\n      }\n    }\n\n    init() {\n      super.init?.();\n      this.addEventListener('change', this.#setValidity);\n      this.addEventListener('invalid', (e) => e.stopPropagation());\n      this.addEventListener('input', this.#setValidity);\n\n      // The attribute sync takes time, so getValidity returns valid,\n      // even when it shouldn't. This way allows all attributes to sync\n      // after render, before checking the validity.\n      setTimeout(() => this.#setValidity());\n    }\n  };\n","/* eslint-disable no-param-reassign */\nimport { compose } from '../helpers';\nimport { forwardAttrs, getComponentName } from '../helpers/componentHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\nimport { createStyleMixin } from './createStyleMixin';\nimport { inputValidationMixin } from './inputValidationMixin';\n\nconst errorAttrs = ['invalid', 'required'];\n\nconst forwardProps = (src, targets, property) => {\n  const targetArr = Array.isArray(targets) ? targets : [targets];\n\n  Object.defineProperty(src, property, {\n    set(v) {\n      targetArr.forEach((target) => {\n        target[property] = v;\n      });\n    },\n    get() {\n      return targets[0][property];\n    },\n    configurable: true,\n  });\n};\n\n// recursively take the first slot child until it finds an element which is not a slot\n// stops after \"nestingLevel\" times\nconst getNestedInput = (ele) => {\n  if (!ele) return undefined;\n\n  const nestingLevel = 10;\n\n  let nonSlotEle = ele;\n  for (let i = 0; i < nestingLevel; i++) {\n    [nonSlotEle] = nonSlotEle.assignedElements();\n    if (nonSlotEle?.localName !== 'slot') return nonSlotEle;\n  }\n  return undefined;\n};\n\nconst proxyInputMixin =\n  ({\n    proxyProps = [],\n    // useProxyTargets flag allows to forwardProps to other targets, other than\n    // `this.inputElement`. It's to be used within `external-input` components,\n    // if needed\n    useProxyTargets = false,\n    // allows us to set the event that should trigger validation\n    // it can be either a string or an array of strings (for multiple events)\n    inputEvent = 'input',\n    triggerValidationEvents = [],\n    // Proxies all validations from the parent component to the input element\n    proxyParentValidation = false,\n  }) =>\n  (superclass) =>\n    class ProxyInputMixinClass extends inputValidationMixin(superclass) {\n      static get observedAttributes() {\n        return [...(superclass.observedAttributes || []), ...errorAttrs];\n      }\n\n      #inputElement;\n\n      #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n      constructor() {\n        super();\n\n        this.#inputElement = super.inputElement;\n      }\n\n      // the web-component does not loaded immediately, so we want to defer the warning\n      // and show it only if the input element was not found after the component is loaded\n      warnIfInputElementIsMissing() {\n        clearTimeout(this.inputElementTimerId);\n\n        this.inputElementTimerId = setTimeout(() => {\n          // eslint-disable-next-line no-console\n          !this.#inputElement && console.warn(this.localName, 'no input was found');\n        }, 0);\n      }\n\n      get inputElement() {\n        if (this.#inputElement) return this.#inputElement;\n\n        this.warnIfInputElementIsMissing();\n\n        const inputSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"input\"]');\n        const textAreaSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"textarea\"]');\n\n        this.#inputElement = getNestedInput(inputSlot) || getNestedInput(textAreaSlot);\n\n        return this.#inputElement;\n      }\n\n      set inputElement(ele) {\n        this.#inputElement = ele;\n      }\n\n      getValidity() {\n        return this.inputElement?.validity || {};\n      }\n\n      #handleErrorMessage() {\n        this.setAttribute('error-message', this.validationMessage);\n      }\n\n      // We do not want to show the default validity report tooltip\n      // So we are overriding the reportValidity fn to show the input's error message\n      reportValidity = () => {\n        // we want to update validity so in case the value was set programmatically, we won't get an error\n        this.inputElement.setCustomValidity('');\n        this.setCustomValidity('');\n        if (!this.checkValidity()) {\n          this.setAttribute('invalid', 'true');\n          this.#handleErrorMessage();\n          this.focus();\n        }\n      };\n\n      // we are keeping also the default reportValidity because there are some components that still using it\n      defaultReportValidity() {\n        return super.reportValidity();\n      }\n\n      init() {\n        super.init?.();\n\n        // vaadin sets invalid indication on blur\n        // we want invalid indication to appear only when calling reportValidity\n        // this is why we are overriding vaadin's setInvalid behavior\n        // to update only when the element is valid (so invalid indication will only be removed)\n        // and we are adding it in reportValidity\n        // eslint-disable-next-line func-names\n        this.baseElement._setInvalid = function (invalid) {\n          if (!invalid && this._shouldSetInvalid(invalid)) {\n            this.invalid = invalid;\n          }\n        };\n\n        // We want to ensure that `input` events properly cross ShadowDOM boundries\n        // e.g. When we autofill a component's input with 1Password, for instance,\n        // the event is fired without `composed: true` and doesn't our component's\n        // ShadowDOM.\n        this.baseElement.addEventListener('input', (e) => {\n          if (!e.composed) {\n            this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n          }\n        });\n\n        triggerValidationEvents.forEach((e) => {\n          this.baseElement?.addEventListener(e, () => {\n            this.inputElement?.setCustomValidity('');\n          });\n        });\n\n        // on some cases the base element is not ready so the inputElement is empty\n        // we are deferring this section to make sure the base element is ready\n        setTimeout(() => {\n          const validationEvents = Array.isArray(inputEvent) ? inputEvent : [inputEvent];\n\n          validationEvents.forEach((e) => {\n            this.baseElement?.addEventListener(e, () => {\n              if (!this.baseElement.checkValidity()) {\n                this.#handleErrorMessage();\n              } else {\n                this.removeAttribute('invalid');\n              }\n            });\n          });\n\n          this.baseElement.addEventListener('change', () => {\n            this.#dispatchChange();\n          });\n\n          this.addEventListener('invalid', () => {\n            if (!this.checkValidity()) {\n              this.setAttribute('invalid', 'true');\n            }\n            this.#handleErrorMessage();\n          });\n\n          // sync properties\n          proxyProps.forEach((prop) => {\n            const externalInput = this.querySelector('input[slot=\"external-input\"]') || null;\n            const proxyTargets = useProxyTargets\n              ? [this.baseElement, externalInput].filter(Boolean)\n              : [];\n            forwardProps(this, [this.inputElement, ...proxyTargets], prop);\n          });\n\n          this.setSelectionRange = this.inputElement?.setSelectionRange?.bind(this.inputElement);\n\n          forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });\n        });\n\n        if (proxyParentValidation) {\n          // All functions called on the inputElement internals will be applied to the parent\n          // component internals as well. As a result, there's no need to add outer mechanisms\n          // to update the parent component's validity state based on the input elements validity.\n          const inputElementInternals = this.inputElement.internals;\n          const parentThis = this;\n          this.inputElement.internals = new Proxy(inputElementInternals, {\n            get: (target, prop) => {\n              if (typeof target[prop] === 'function' && prop === 'setValidity') {\n                return (...args) => {\n                  // If we're calling setValidity with 3 args, then the validationTarget\n                  // needs to be swapped to be the inputElement\n                  if (args.length === 3) {\n                    const newArgs = args.slice(0, args.length - 1);\n                    newArgs.push(parentThis.inputElement);\n                    parentThis.internals[prop](...newArgs);\n                  } else {\n                    parentThis.internals[prop](...args);\n                  }\n                  return target[prop](...args);\n                };\n              }\n\n              if (typeof target[prop] === 'function') {\n                return (...args) => {\n                  parentThis.internals[prop](...args);\n                  return target[prop](...args);\n                };\n              }\n\n              return target[prop];\n            },\n          });\n        }\n      }\n    };\n\nconst composedProxyInputMixin = (proxyInputMixinConfig) =>\n  compose(\n    proxyInputMixin(proxyInputMixinConfig),\n    // in order to use input-wrapper across all our input components, we need to inject its theme\n    // to every proxy input mixin, to allow its css vars to be scoped properly and accessible\n    // in the proxy input component\n    createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') })\n  );\n\nexport { composedProxyInputMixin as proxyInputMixin };\n","import { PORTAL_THEME_PREFIX } from '../constants';\nimport { kebabCaseJoin } from '../helpers';\nimport { forwardAttrs } from '../helpers/componentHelpers';\nimport { createStyleMixin } from './createStyleMixin';\nimport { createCssVarsList } from './createStyleMixin/helpers';\n\n// this is needed because we might generate the same css vars names\n// e.g. \"overlayColor\" attribute in style mixin's mapping,\n// will generate the same var as \"color\" attribute in portals's mapping\n// when the portal name is \"overlay\".\n// because of that, we are adding this separator that is also used as a differentiator\nconst DISPLAY_NAME_SEPARATOR = '_';\n\nconst sanitizeSelector = (selector) => selector.replace(/[^\\w\\s]/gi, '');\n\nconst withWaitForShadowRoot = (getRootElementFn) => async (that) => {\n  const ele = await getRootElementFn(that);\n\n  return new Promise((res) => {\n    const MAX_RETRIES = 20;\n    let counter = 0;\n\n    const check = () => {\n      if (counter > MAX_RETRIES) {\n        // eslint-disable-next-line no-console\n        console.error('could not get shadow root for element', ele);\n        res(ele);\n        return;\n      }\n\n      counter++;\n\n      if (!ele?.shadowRoot) {\n        setTimeout(check);\n      } else {\n        res(ele.shadowRoot);\n      }\n    };\n    check();\n  });\n};\n\nexport const portalMixin =\n  ({ name, selector, mappings = {}, forward: { attributes = [], include = true } = {} }) =>\n  (superclass) => {\n    const eleDisplayName = name || sanitizeSelector(selector);\n\n    const BaseClass = createStyleMixin({\n      mappings,\n    })(superclass);\n\n    return class PortalMixinClass extends BaseClass {\n      static get cssVarList() {\n        return {\n          ...BaseClass.cssVarList,\n          [eleDisplayName]: createCssVarsList(\n            kebabCaseJoin(superclass.componentName, DISPLAY_NAME_SEPARATOR + eleDisplayName),\n            mappings\n          ),\n        };\n      }\n\n      #portalEle;\n\n      constructor() {\n        // we cannot use \"this\" before calling \"super\"\n        const getRootElement = async (that) => {\n          const baseEle = (that.shadowRoot || that).querySelector(that.baseSelector);\n          if (!selector) {\n            return baseEle;\n          }\n\n          // in case we have a selector, we should first wait for the base element shadow root\n          //  and then look for the internal element\n          const baseEleShadowRoot = await withWaitForShadowRoot(() => baseEle)(that);\n          return baseEleShadowRoot.querySelector(selector);\n        };\n\n        const getPortalElement = withWaitForShadowRoot(getRootElement);\n\n        super({\n          getRootElement: getPortalElement,\n          componentNameSuffix: DISPLAY_NAME_SEPARATOR + eleDisplayName,\n          themeSection: PORTAL_THEME_PREFIX + eleDisplayName,\n          baseSelector: ':host',\n        });\n\n        this.#portalEle = getPortalElement(this).then((ele) => ele.host);\n      }\n\n      async #handleHoverAttribute() {\n        const portalEle = await this.#portalEle;\n        portalEle.onmouseenter = (e) => {\n          e.target.setAttribute('hover', 'true');\n        };\n        portalEle.onmouseleave = (e) => {\n          e.target.removeAttribute('hover');\n        };\n      }\n\n      async init() {\n        super.init?.();\n        const portalEle = await this.#portalEle;\n        forwardAttrs(this, portalEle, {\n          [include ? 'includeAttrs' : 'excludeAttrs']: attributes,\n        });\n\n        this.#handleHoverAttribute();\n      }\n    };\n  };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const changeMixin = (superclass) =>\n  class ChangeMixinClass extends superclass {\n    #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n    init() {\n      super.init?.();\n      this.prevValue = this.value;\n\n      this.addEventListener('change', (e) => {\n        e.stopPropagation();\n      });\n\n      this.addEventListener('blur', () => {\n        if (this.value !== this.prevValue) {\n          this.#dispatchChange();\n          this.prevValue = this.value;\n        }\n      });\n    }\n  };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const inputEventsDispatchingMixin = (superclass) =>\n  class InputEventsDispatchingMixinClass extends superclass {\n    init() {\n      this.#blockNativeEvents();\n\n      super.init?.();\n    }\n\n    // we want to block the native (trusted) events and control when these events are being dispatched\n    #blockNativeEvents() {\n      ['blur', 'focus', 'focusin', 'focusout'].forEach((event) => {\n        this.addEventListener(event, (e) => {\n          e.isTrusted && e.target === this && e.stopImmediatePropagation();\n        });\n      });\n    }\n\n    handleFocusEventsDispatching(inputs) {\n      let timerId;\n\n      // in order to simulate blur & focusout on root input element\n      // we are checking if focus on one of the inner elements happened immediately after blur\n      // if not, the component is no longer focused and we should dispatch blur & focusout\n      inputs?.forEach((input) => {\n        input?.addEventListener('focusout', (e) => {\n          e.stopImmediatePropagation();\n          timerId = setTimeout(() => {\n            timerId = null;\n\n            createDispatchEvent.call(this, 'blur');\n            createDispatchEvent.call(this, 'focusout', { bubbles: true });\n          });\n        });\n\n        // in order to simulate focus & focusin on the root input element\n        // we are holding a timer id and clearing it on focusin\n        // if there is a timer id, it means that the root input is still focused\n        // otherwise, it was not focused before, and we should dispatch focus & focusin\n        const onFocus = (e) => {\n          e.stopImmediatePropagation();\n          clearTimeout(timerId);\n          if (!timerId) {\n            createDispatchEvent.call(this, 'focus');\n            createDispatchEvent.call(this, 'focusin', { bubbles: true });\n          }\n        };\n\n        // some components are not dispatching focusin but only focus\n        input?.addEventListener('focusin', onFocus);\n        input?.addEventListener('focus', onFocus);\n      });\n    }\n\n    // we want to block the input events from propagating in case the value of the root input wasn't change\n    // this can happen if we are sanitizing characters on the internal inputs and do not want it to affect the root input element value\n    // in this case, on each input event, we are comparing the root input value to the previous one, and only if it does not match, we are allowing the input event to propagate\n    handleInputEventDispatching() {\n      let previousRootComponentValue = this.value;\n\n      // we are comparing the previous value to the new one,\n      // and if they have the same value, we are blocking the input event\n      this.addEventListener('input', (e) => {\n        // We don't want to block our own event that we fire from handleInputEventDispatching\n        if (this !== e.target) {\n          e.stopImmediatePropagation();\n\n          if (previousRootComponentValue !== this.value) {\n            previousRootComponentValue = this.value;\n            createDispatchEvent.call(this, 'input', { bubbles: true, composed: true });\n          }\n        }\n      });\n    }\n  };\n","// since on load we can only sample the color of the placeholder,\n// we need to temporarily populate the input in order to sample the value color\nconst getValueColor = (ele, computedStyle) => {\n  // to support setting dynamic values, we have to store the existing value\n  // and re-set it if we are returning from this hack\n  const origVal = ele.value;\n\n  // eslint-disable-next-line no-param-reassign\n  ele.value = '_';\n\n  const valueColor = computedStyle.getPropertyValue('color');\n\n  if (ele.value === '_') {\n    // eslint-disable-next-line no-param-reassign\n    ele.value = origVal;\n  }\n\n  return valueColor;\n};\n\nexport const createExternalInputSlot = (slotName, targetSlotName) => {\n  const slotEle = document.createElement('slot');\n\n  slotEle.setAttribute('name', slotName);\n  slotEle.setAttribute('slot', targetSlotName);\n\n  return slotEle;\n};\n\nexport const createExternalInputEle = (targetSlotName, type, autocompleteType, inputName) => {\n  const inputEle = document.createElement('input');\n\n  inputEle.setAttribute('slot', targetSlotName);\n  inputEle.setAttribute('type', type);\n  inputEle.setAttribute('name', inputName);\n  inputEle.setAttribute('data-hidden-input', 'true');\n  inputEle.setAttribute('autocomplete', autocompleteType);\n\n  return inputEle;\n};\n\n// We apply the original input's style to the external-input.\n// Eventually, the user should interact directly with the external input.\n// We keep the original input\nexport const applyExternalInputStyles = (sourceInputEle, targetInputEle, labelType) => {\n  // We set a timeout here to avoid \"Double Print\" cases,\n  // caused by sampling the computed style before it's ready.\n  setTimeout(() => {\n    const computedStyle = getComputedStyle(sourceInputEle);\n    // Get minimal set of computed theme properties to set on external input\n    const height = computedStyle.getPropertyValue('height');\n    const paddingLeft = computedStyle.getPropertyValue('padding-left');\n    const paddingRight = computedStyle.getPropertyValue('padding-right');\n    const fontSize = computedStyle.getPropertyValue('font-size');\n    const fontFamily = computedStyle.getPropertyValue('font-family');\n    const letterSpacing = computedStyle.getPropertyValue('letter-spacing');\n    const caretColor = computedStyle.getPropertyValue('caret-color');\n\n    const valueColor = getValueColor(sourceInputEle, computedStyle);\n\n    const commonThemeStyles = [\n      ['all', 'unset'],\n      ['position', 'absolute'],\n      ['background-color', 'transparent'],\n      ['height', height],\n      ['left', paddingLeft],\n      ['right', paddingRight],\n      ['font-size', fontSize],\n      ['font-family', fontFamily],\n      ['letter-spacing', letterSpacing],\n      ['caret-color', caretColor], // this is for seeing caret when focusing on external input\n      ['color', valueColor],\n    ];\n\n    commonThemeStyles.forEach(([key, val]) =>\n      targetInputEle.style.setProperty(key, val, 'important')\n    );\n\n    // Handle floating label theme properties\n    if (labelType === 'floating') {\n      const marginBottom = computedStyle.getPropertyValue('margin-bottom');\n      targetInputEle.style.setProperty('margin-bottom', marginBottom, 'important');\n    }\n\n    // sample and apply width only after original input is ready and fully rendered\n    const width = computedStyle.getPropertyValue('width');\n    targetInputEle.style.setProperty(\n      'width',\n      `calc(${width} - ${paddingLeft} - ${paddingRight}`,\n      'important'\n    );\n  }, 0);\n};\n","import { syncAttrs } from '../helpers/componentHelpers';\nimport {\n  applyExternalInputStyles,\n  createExternalInputEle,\n  createExternalInputSlot,\n} from './externalInputHelpers';\n\nexport const externalInputMixin =\n  ({ inputType, inputName, autocompleteType, includeAttrs = [], noBlurDispatch = false }) =>\n  (superclass) =>\n    class ExternalInputMixinClass extends superclass {\n      #timers = [];\n\n      get isExternalInput() {\n        return this.getAttribute('external-input') === 'true';\n      }\n\n      createExternalInput() {\n        if (!this.isExternalInput || this.isReadOnly || this.isDisabled) {\n          return null;\n        }\n\n        // use original input element as reference\n        const origInput = this.baseElement.querySelector('input');\n\n        if (!origInput) {\n          return null;\n        }\n\n        // to avoid focus loop between external-input and origInput\n        // we set origInput's tabindex to -1\n        // otherwise, shift-tab will never leave the component focus\n        origInput.setAttribute('tabindex', '-1');\n\n        // create external slot\n        const externalInputSlot = createExternalInputSlot('external-input', 'suffix');\n\n        // append external slot to base element\n        this.baseElement.appendChild(externalInputSlot);\n\n        this.externalInput = createExternalInputEle(\n          'external-input',\n          inputType,\n          this.getAutocompleteType(),\n          inputName\n        );\n\n        // apply original input's styles to external input\n        setTimeout(() => {\n          applyExternalInputStyles(origInput, this.externalInput, this.getAttribute('label-type'));\n        });\n\n        // 1Password catches the internal input, so we forward the value to the external input\n        this.forwardInputValue(origInput, this.externalInput);\n\n        syncAttrs(origInput, this.externalInput, {\n          includeAttrs,\n        });\n\n        // We disable Vaadin's original `_setFocused` function, and use handleFocusEvents\n        // and handleBlurEvents functions\n        this.baseElement\n          .querySelector('input')\n          .addEventListener('focusout', (e) => e.stopImmediatePropagation(), true);\n\n        // In order to manage focus/blur events when moving between parts of the component\n        // we're managing the event dispatching by ourselves, with the following strategy:\n        // - If one of the component parts is focused - it means that the component is still focused - so we stop the blur events.\n        // - When none of the component parts is focused, we dispatch blur event.\n        this.handleFocusEvents();\n        this.handleBlurEvents();\n\n        // sync input value\n        this.handlelInputEvents(this.externalInput);\n\n        // append external input to component's DOM\n        this.appendChild(this.externalInput);\n\n        return this.externalInput;\n      }\n\n      clearBlurTimers() {\n        this.#timers.forEach((timer) => clearTimeout(timer));\n        this.#timers.length = 0;\n      }\n\n      dispatchBlur() {\n        return setTimeout(() => {\n          this.dispatchEvent(new Event('blur', { bubbles: true, composed: true }));\n          this.removeAttribute('focused');\n        });\n      }\n\n      handleFocusEvents() {\n        // on baseElement `focus` we forward the focus to the external input.\n        // also, in order to avoid any blur within the component, we clear the blur timers.\n        this.baseElement.addEventListener('focus', () => {\n          this.externalInput.focus();\n          this.clearBlurTimers();\n        });\n\n        // on `focus` of the external input, we manually set the `focused` attribute\n        this.externalInput.addEventListener('focus', () => {\n          this.clearBlurTimers();\n          setTimeout(() => this.baseElement.setAttribute('focused', 'true'));\n        });\n      }\n\n      handleBlurEvents() {\n        this.baseElement.addEventListener(\n          'blur',\n          (e) => {\n            e.stopImmediatePropagation();\n            // some components do not require this synthetic blur dispatch (e.g. Password)\n            // so we allow them to override this dispatch\n            if (noBlurDispatch) return;\n            this.#timers.push(this.dispatchBlur());\n          },\n          true\n        );\n\n        this.externalInput.addEventListener(\n          'blur',\n          (e) => {\n            e.stopImmediatePropagation();\n            this.#timers.push(this.dispatchBlur());\n          },\n          true\n        );\n      }\n\n      handlelInputEvents(externalInput) {\n        // sync value of insible input back to original input\n        externalInput.addEventListener('input', (e) => {\n          this.value = e.target.value;\n        });\n\n        // handle has-value attr\n        externalInput.addEventListener('input', (e) => {\n          if (!e.target.value) {\n            this.removeAttribute('has-value');\n          } else {\n            this.setAttribute('has-value', 'true');\n          }\n        });\n      }\n\n      getAutocompleteType() {\n        return this.getAttribute('autocomplete') || autocompleteType;\n      }\n\n      forwardInputValue(source, target) {\n        // set internal sync events\n        const valueDescriptor = Object.getOwnPropertyDescriptor(\n          this.inputElement.constructor.prototype,\n          'value'\n        );\n\n        Object.defineProperty(source, 'value', {\n          ...valueDescriptor,\n\n          set(v) {\n            valueDescriptor.set.call(this, v);\n            // eslint-disable-next-line no-param-reassign\n            target.value = v;\n          },\n          configurable: true,\n        });\n      }\n    };\n","export const inputOverrideValidConstraintsMixin = (superclass) =>\n  class InputOverrideValidConstraintsMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      // vaadin uses `validConstraints` (required, pattern, minlength, maxlength) to determine if it should validate\n      // the input or not. We want to override this behavior, so we can enforce validation even if these attributes are not present.\n      if (this.baseElement._hasValidConstraints) {\n        this.baseElement._hasValidConstraints = () => true;\n      }\n    }\n  };\n","const {\n  host,\n  label,\n  placeholder,\n  requiredIndicator,\n  inputField,\n  input,\n  inputMask,\n  helperText,\n  errorMessage,\n  disabledPlaceholder,\n  inputDisabled,\n  inputIcon,\n  externalInput,\n  externalInputDisabled,\n  externalPlaceholder,\n  externalDisabledPlaceholder,\n} = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  placeholder: [\n    { selector: '> input:placeholder-shown' },\n    { selector: () => ':host::slotted(input:placeholder-shown)' },\n  ],\n  disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n  inputField: { selector: '::part(input-field)' },\n  input: { selector: 'input' },\n  inputMask: { selector: '::part(input-field)::before' },\n  inputDisabled: { selector: 'input:disabled' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n  inputIcon: { selector: 'vaadin-icon' },\n  externalInput: { selector: () => '::slotted(input)' },\n  externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n  externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n  externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n  // we apply font-size also on the host so we can set its width with em\n  fontSize: [{}, host],\n  fontFamily: [label, inputField, helperText, errorMessage],\n\n  labelFontSize: { ...label, property: 'font-size' },\n  labelFontWeight: { ...label, property: 'font-weight' },\n\n  labelTextColor: [\n    { ...label, property: 'color' },\n    { ...requiredIndicator, property: 'color' },\n    { ...label, property: '-webkit-text-fill-color' },\n    { ...requiredIndicator, property: '-webkit-text-fill-color' },\n  ],\n\n  hostWidth: { ...host, property: 'width' },\n  hostMinWidth: { ...host, property: 'min-width' },\n  hostDirection: { ...host, property: 'direction' },\n  inputDirection: { ...input, property: 'direction' },\n\n  inputBackgroundColor: [\n    { ...inputField, property: 'background-color' },\n    { ...inputMask, property: 'background-color' },\n  ],\n\n  errorMessageTextColor: { ...errorMessage, property: 'color' },\n  errorMessageIcon: { ...errorMessage, property: 'background-image' },\n  errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n  errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n  errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n  errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n  errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n  helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n  inputValueTextColor: [\n    { ...inputField, property: 'color' },\n    { ...inputDisabled, property: '-webkit-text-fill-color' },\n    { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n  ],\n  inputCaretTextColor: [\n    { ...input, property: 'caret-color' },\n    { ...externalInput, property: 'caret-color' },\n  ],\n\n  labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n  inputBorderColor: { ...inputField, property: 'border-color' },\n  inputBorderWidth: { ...inputField, property: 'border-width' },\n  inputBorderStyle: { ...inputField, property: 'border-style' },\n  inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n  inputHeight: { ...inputField, property: 'height' },\n  inputHorizontalPadding: [\n    { ...input, property: 'padding-left' },\n    { ...input, property: 'padding-right' },\n    { ...externalInput, property: 'padding-left' },\n    { ...externalInput, property: 'padding-right' },\n  ],\n\n  inputOutlineColor: { ...inputField, property: 'outline-color' },\n  inputOutlineStyle: { ...inputField, property: 'outline-style' },\n  inputOutlineWidth: { ...inputField, property: 'outline-width' },\n  inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n  textAlign: {},\n\n  inputTextAlign: [\n    { ...input, property: 'text-align' },\n    { ...externalInput, property: 'text-align' },\n  ],\n\n  inputPlaceholderColor: [\n    { selector: () => ':host input:placeholder-shown', property: 'color' },\n    { ...externalPlaceholder, property: 'color' },\n    { ...placeholder, property: 'color' },\n    { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n    { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n  ],\n\n  labelPosition: { ...label, property: 'position' },\n  labelTopPosition: { ...label, property: 'top' },\n  labelHorizontalPosition: [\n    { ...label, property: 'left' },\n    { ...label, property: 'right' },\n  ],\n  inputTransformY: { ...label, property: 'transform' },\n  inputTransition: { ...label, property: 'transition' },\n  marginInlineStart: { ...label, property: 'margin-inline-start' },\n  placeholderOpacity: [\n    { selector: '> input:placeholder-shown', property: 'opacity' },\n    { ...externalPlaceholder, property: 'opacity' },\n  ],\n  inputVerticalAlignment: [\n    { ...inputField, property: 'align-items' },\n    { ...externalInput, property: 'align-items' },\n  ],\n  valueInputHeight: [\n    { ...input, property: 'height' },\n    { ...externalInput, property: 'height' },\n  ],\n  valueInputMarginBottom: [\n    { ...input, property: 'margin-bottom' },\n    { ...externalInput, property: 'margin-bottom' },\n  ],\n\n  inputIconOffset: [\n    { ...inputIcon, property: 'margin-right' },\n    { ...inputIcon, property: 'margin-left' },\n  ],\n  inputIconSize: { ...inputIcon, property: 'font-size' },\n  inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n  inputFloatingLabelStyle,\n  resetInputLabelPosition,\n  resetInputOverrides,\n  useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n  class TextFieldClass extends superclass {\n    static get observedAttributes() {\n      return observedAttrs.concat(superclass.observedAttributes || []);\n    }\n\n    icon;\n\n    init() {\n      super.init?.();\n    }\n\n    renderCopyToClipboard(shouldRender) {\n      if (!shouldRender) {\n        this.icon?.remove();\n        return;\n      }\n\n      const iconInitConfig = {\n        icon: 'vaadin:copy-o',\n        title: 'Copy',\n        style: 'cursor: pointer',\n      };\n\n      const iconCopiedConfig = {\n        icon: 'vaadin:check-circle-o',\n        title: 'Copied',\n        style: 'cursor: initial',\n      };\n\n      this.icon = Object.assign(document.createElement('vaadin-icon'), {\n        slot: 'suffix',\n        ...iconInitConfig,\n      });\n\n      this.baseElement.appendChild(this.icon);\n      this.icon.addEventListener('click', () => {\n        navigator.clipboard.writeText(this.value);\n        Object.assign(this.icon, iconCopiedConfig);\n\n        // we want the icon to go back to the initial state after 5 seconds\n        setTimeout(() => {\n          Object.assign(this.icon, iconInitConfig);\n        }, 5000);\n      });\n    }\n\n    onLabelClick() {\n      this.focus();\n    }\n\n    attributeChangedCallback(attrName, oldVal, newVal) {\n      super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n      // Vaadin doesn't allow to change the input type attribute.\n      // We need the ability to do that, so we're overriding their\n      // behavior with their private API.\n      // When receiving a `type` attribute, we use their private API\n      // to set it on the input.\n      if (attrName === 'type') {\n        this.baseElement._setType(newVal);\n      }\n\n      if (oldVal !== newVal) {\n        if (attrName === 'label-type') {\n          if (newVal === 'floating') {\n            this.addEventListener('click', this.onLabelClick);\n          } else {\n            this.removeEventListener('click', this.onLabelClick);\n          }\n        } else if (attrName === 'copy-to-clipboard') {\n          this.renderCopyToClipboard(newVal === 'true');\n        }\n      }\n    }\n  };\n\nexport const TextFieldClass = compose(\n  createStyleMixin({\n    mappings: textFieldMappings,\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: ['prefix', 'suffix'],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n          TextFieldClass.cssVarList.inputOutlineOffset\n        }));\n        box-sizing: border-box;\n\t\t\t}\n      :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n        opacity: 1;\n      }\n\n      vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n        opacity: 0;\n      }\n      vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n        opacity: 0;\n      }\n      ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n      ${inputFloatingLabelStyle()}\n\n      vaadin-text-field vaadin-icon {\n        align-self: center;\n      }\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs, createHelperVars } from '../../helpers/themeHelpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\n\nconst componentName = getComponentName('input-wrapper');\nconst globalRefs = getThemeRefs(globals);\n\nconst [theme, refs, vars] = createHelperVars(\n  {\n    labelTextColor: globalRefs.colors.surface.dark,\n    labelFontSize: '14px', // not taken from globals as it is fixed in all inputs\n    labelFontWeight: '500', // not taken from globals as it is fixed in all inputs\n    valueTextColor: globalRefs.colors.surface.contrast,\n    placeholderTextColor: globalRefs.colors.surface.dark,\n    requiredIndicator: \"'*'\",\n    helperTextColor: globalRefs.colors.surface.dark,\n    errorMessageTextColor: globalRefs.colors.error.main,\n    successMessageTextColor: globalRefs.colors.success.main,\n\n    borderWidth: globalRefs.border.xs,\n    borderRadius: globalRefs.radius.xs,\n    borderColor: 'transparent',\n\n    outlineWidth: globalRefs.border.sm,\n    outlineStyle: 'solid',\n    outlineColor: 'transparent',\n    outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes\n\n    minWidth: '10em',\n    toggleButtonSize: '1.5em',\n    inputIconSize: '1em',\n    inputHeight: '3em',\n    horizontalPadding: '0.5em',\n    verticalPadding: '0.5em',\n\n    textAlign: 'start',\n\n    backgroundColor: globalRefs.colors.surface.main,\n\n    fontFamily: globalRefs.fonts.font1.family,\n\n    direction: globalRefs.direction,\n\n    overlayOpacity: '0.3',\n\n    errorMessageIcon: '',\n    errorMessageIconSize: '0',\n    errorMessageIconPadding: '0',\n    errorMessageIconPosition: '0 0.4em',\n    errorMessageFontSize: '0.8125rem',\n    errorMessageIconRepeat: 'no-repeat',\n\n    size: {\n      xs: { fontSize: '12px', chipFontSize: '10px' },\n      sm: { fontSize: '14px', chipFontSize: '12px' },\n      md: { fontSize: '16px', chipFontSize: '14px' },\n      lg: { fontSize: '18px', chipFontSize: '16px' },\n    },\n\n    labelType: {\n      static: {\n        valueInputHeight: '3em',\n        valueInputMarginBottom: 'auto',\n      },\n      floating: {\n        labelPosition: 'absolute',\n        labelTopPosition: '0',\n        labelHorizontalPosition: '0.9em',\n        labelFontSize: '1em',\n        placeholderOpacity: 0,\n        inputHeight: '3.5em',\n        inputVerticalAlignment: 'flex-end',\n        inputTransformY: 'translateY(1.55em)',\n        inputTransition: 'all 75ms ease-in-out',\n        marginInlineStart: '0',\n        valueInputHeight: '1.5702em',\n        valueInputMarginBottom: '0.5em',\n\n        _focused: {\n          labelFontSize: '0.75em',\n          inputTransformY: 'translateY(1.05em)',\n          labelFontWeight: '400',\n          placeholderOpacity: 1,\n        },\n\n        _readOnly: {\n          placeholderOpacity: 0,\n        },\n\n        _hasValue: {\n          inputTransformY: 'translateY(1.05em)',\n          labelFontSize: '0.75em',\n          labelFontWeight: '400',\n        },\n      },\n    },\n\n    _fullWidth: {\n      width: '100%',\n    },\n\n    _bordered: {\n      outlineWidth: globalRefs.border.xs,\n      borderColor: globalRefs.colors.surface.light,\n      borderStyle: 'solid',\n      _invalid: {\n        borderColor: globalRefs.colors.error.main,\n      },\n    },\n\n    _focused: {\n      outlineColor: globalRefs.colors.surface.light,\n      _invalid: {\n        outlineColor: globalRefs.colors.error.main,\n      },\n    },\n\n    _disabled: {\n      labelTextColor: globalRefs.colors.surface.light,\n      borderColor: globalRefs.colors.surface.light,\n      valueTextColor: globalRefs.colors.surface.light,\n      placeholderTextColor: globalRefs.colors.surface.light,\n      helperTextColor: globalRefs.colors.surface.light,\n      backgroundColor: globalRefs.colors.surface.main,\n    },\n  },\n  componentName\n);\n\nexport { refs, vars };\nexport default theme;\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { TextFieldClass } from '../../components/descope-text-field/TextFieldClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TextFieldClass.cssVarList;\n\nexport const textField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.helperTextColor]: refs.helperTextColor,\n  [vars.textAlign]: refs.textAlign,\n  textAlign: {\n    right: { [vars.inputTextAlign]: 'right' },\n    left: { [vars.inputTextAlign]: 'left' },\n    center: { [vars.inputTextAlign]: 'center' },\n  },\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n  [vars.inputIconOffset]: globalRefs.spacing.md,\n  [vars.inputIconSize]: refs.inputIconSize,\n  [vars.inputIconColor]: refs.placeholderTextColor,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default textField;\nexport { vars };\n","const passwordDraggableMixin = (superclass) =>\n  class PasswordDraggableMixinClass extends superclass {\n    get isReadOnly() {\n      return this.hasAttribute('readonly') && this.getAttribute('readonly') !== 'false';\n    }\n\n    init() {\n      // there is an issue in Chrome that input field with type password cannot be D&D\n      // so in case the input is draggable & readonly, we are changing the input type to \"text\" before dragging\n      // and return the original type when done\n      super.init?.();\n\n      const ele = this.querySelector('input');\n\n      ele?.addEventListener('mousedown', (e) => {\n        if (this.isDraggable && this.isReadOnly) {\n          ele.setAttribute('inert', 'true');\n\n          const inputEle = e.target;\n          const prevType = inputEle.getAttribute('type');\n          inputEle.setAttribute('type', 'text');\n          setTimeout(() => {\n            inputEle.focus();\n          });\n\n          const onComplete = (_) => {\n            inputEle.setAttribute('type', prevType);\n            ele.removeAttribute('inert');\n            this.removeEventListener('mouseup', onComplete);\n            this.removeEventListener('dragend', onComplete);\n          };\n\n          this.addEventListener('dragend', onComplete, { once: true });\n          this.addEventListener('mouseup', onComplete, { once: true });\n        }\n      });\n    }\n  };\n\nexport default passwordDraggableMixin;\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n  externalInputMixin,\n} from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport passwordDraggableMixin from './passwordDraggableMixin';\nimport {\n  resetInputLabelPosition,\n  resetInputCursor,\n  useHostExternalPadding,\n  inputFloatingLabelStyle,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('password');\n\nconst customMixin = (superclass) =>\n  class PasswordFieldMixinClass extends superclass {\n    static get observedAttributes() {\n      return ['manual-visibility-toggle'];\n    }\n\n    get manualToggleVisibility() {\n      return this.getAttribute('manual-visibility-toggle') === 'true';\n    }\n\n    init() {\n      super.init?.();\n      this.handleCaretOnVisibilityChange();\n      this.origSetPasswordVisible = this.baseElement._setPasswordVisible;\n      this.origSetFocused = this.baseElement._setFocused;\n      this.baseElement._setFocused = this.setFocus.bind(this);\n\n      this.initExternalInput();\n    }\n\n    initExternalInput() {\n      const externalInput = this.createExternalInput();\n      if (externalInput) {\n        this.handlePasswordVisibility(externalInput);\n      }\n    }\n\n    get caretPosition() {\n      return this.value?.length || 0;\n    }\n\n    handleCaretOnVisibilityChange() {\n      const origTogglePasswordVisibility = this.baseElement._togglePasswordVisibility.bind(\n        this.baseElement\n      );\n      this.baseElement._togglePasswordVisibility = () => {\n        setTimeout(() => {\n          origTogglePasswordVisibility();\n          this.inputElement.setSelectionRange(this.caretPosition, this.caretPosition);\n          return false;\n        });\n      };\n    }\n\n    // We use `manual-visibility-toggle` to to toggle the password's visibility\n    // even if the input field is focused-out. However, on focusout - Vaadin resets\n    // password visibility. Since we don't want to override Vaadin's native setFocus\n    // function (which is part of their FocusMixin).\n    // So, here we override the part of logic that runs within Vaadin's setFocus that reports\n    // the password visibility state. This logic is part of our `manual-visibility-toggle` only.\n    setFocus(focused) {\n      if (this.manualToggleVisibility) {\n        this.baseElement._setPasswordVisible = () => {};\n      }\n      this.origSetFocused.call(this.baseElement, focused);\n      this.baseElement._setPasswordVisible = this.origSetPasswordVisible.bind(this.baseElement);\n    }\n\n    resetPasswordVisibilityToggle() {\n      this.baseElement._setPasswordVisible = this.origSetPasswordVisible;\n      this.baseElement._setFocused = this.origSetFocus;\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    }\n\n    // override vaadin's password visibility toggle.\n    // we need this override in order to to resolve the external input `focus` race condition,\n    // which is caused due to the focus sync between the two inputs.\n    handlePasswordVisibility(externalInput) {\n      // disable vaadin's `__boundRevealButtonMouseDown` mouse-down event lisetener\n      const origBoundRevealButtonMouseDown = this.baseElement.__boundRevealButtonMouseDown;\n      this.baseElement\n        .querySelector('vaadin-password-field-button')\n        .removeEventListener('mousedown', origBoundRevealButtonMouseDown);\n\n      // disable vaadin's `_passwordVisibleChanged` observer\n      this.baseElement._passwordVisibleChanged = () => {};\n\n      // override vaadin's `_togglePasswordVisibility`\n      this.baseElement._togglePasswordVisibility = () => {\n        const currVisibility = externalInput.getAttribute('type');\n        if (currVisibility === 'password') {\n          this.showPasswordVisibility(externalInput);\n        } else {\n          this.hidePasswordVisibility(externalInput);\n        }\n      };\n    }\n\n    showPasswordVisibility(input) {\n      // handle input element's type\n      input.setAttribute('type', 'text');\n      // handle vaadin's `password-visible` attribute\n      this.setAttribute('password-visible', 'true');\n    }\n\n    hidePasswordVisibility(input) {\n      // handle input element's type\n      input.setAttribute('type', 'password');\n      // handle vaadin's `password-visible` attribute\n      this.setAttribute('password-visible', 'false');\n    }\n  };\n\nconst {\n  host,\n  inputField,\n  inputElement,\n  inputElementPlaceholder,\n  revealButtonContainer,\n  revealButtonIcon,\n  label,\n  requiredIndicator,\n  errorMessage,\n  helperText,\n} = {\n  host: { selector: () => ':host' },\n  inputField: { selector: '::part(input-field)' },\n  inputElement: { selector: '> input' },\n  inputElementPlaceholder: { selector: () => ':host input:placeholder-shown' },\n  revealButtonContainer: { selector: '::part(reveal-button)' },\n  revealButtonIcon: { selector: '::part(reveal-button)::before' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PasswordClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostDirection: { ...host, property: 'direction' },\n      fontSize: [{}, host],\n      fontFamily: [label, inputField, errorMessage, helperText],\n      inputHeight: { ...inputField, property: 'height' },\n      inputHorizontalPadding: [\n        { ...inputElement, property: 'padding-left' },\n        { ...inputElement, property: 'padding-right' },\n      ],\n      inputBackgroundColor: { ...inputField, property: 'background-color' },\n\n      inputBorderStyle: { ...inputField, property: 'border-style' },\n      inputBorderWidth: { ...inputField, property: 'border-width' },\n      inputBorderColor: { ...inputField, property: 'border-color' },\n      inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n      inputOutlineColor: { ...inputField, property: 'outline-color' },\n      inputOutlineStyle: { ...inputField, property: 'outline-style' },\n      inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n      inputOutlineWidth: { ...inputField, property: 'outline-width' },\n\n      labelFontSize: { ...label, property: 'font-size' },\n      labelFontWeight: { ...label, property: 'font-weight' },\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n        { ...requiredIndicator, property: '-webkit-text-fill-color' },\n      ],\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n      inputPlaceholderTextColor: [\n        { ...inputElementPlaceholder, property: 'color' },\n        { selector: () => ':host ::slotted(input:placeholder-shown)', property: 'color' },\n      ],\n      inputValueTextColor: [\n        { ...inputElement, property: 'color' },\n        { selector: () => ':host ::slotted(input)', property: 'color' },\n      ],\n\n      revealButtonOffset: [\n        { ...revealButtonContainer, property: 'margin-right' },\n        { ...revealButtonContainer, property: 'margin-left' },\n      ],\n      revealButtonSize: { ...revealButtonContainer, property: 'font-size' },\n      revealButtonColor: { ...revealButtonIcon, property: 'color' },\n\n      labelPosition: { ...label, property: 'position' },\n      labelTopPosition: { ...label, property: 'top' },\n      labelHorizontalPosition: [\n        { ...label, property: 'left' },\n        { ...label, property: 'right' },\n      ],\n      inputTransformY: { ...label, property: 'transform' },\n      inputTransition: { ...label, property: 'transition' },\n      marginInlineStart: { ...label, property: 'margin-inline-start' },\n      placeholderOpacity: [\n        { selector: '> input:placeholder-shown', property: 'opacity' },\n        { ...inputElement, property: 'opacity' },\n      ],\n      inputVerticalAlignment: { ...inputField, property: 'align-items' },\n      valueInputHeight: { ...inputElement, property: 'height' },\n    },\n  }),\n  draggableMixin,\n  externalInputMixin({\n    inputType: 'password',\n    inputName: 'password',\n    includeAttrs: ['disabled', 'readonly', 'pattern', 'type', 'autocomplete'],\n    noBlurDispatch: true,\n  }),\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n  componentNameValidationMixin,\n  passwordDraggableMixin,\n  customMixin\n)(\n  createProxy({\n    slots: ['', 'suffix'],\n    wrappedEleName: 'vaadin-password-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: 10em;\n        box-sizing: border-box;\n        position: relative;\n\t\t\t}\n\t\t\t${useHostExternalPadding(PasswordClass.cssVarList)}\n\t\t\t${resetInputCursor('vaadin-password-field')}\n      ${resetInputLabelPosition('vaadin-password-field')}\n\n\t\t\tvaadin-password-field {\n\t\t\t\twidth: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-password-field > input {\n        -webkit-mask-image: none;\n\t\t\t\tbox-sizing: border-box;\n        opacity: 1;\n\t\t\t}\n\t\t\tvaadin-password-field::part(input-field) {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-password-field[focus-ring]::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n      :host ::slotted(input) {\n\t\t\t\tmin-height: 0;\n      }\n      :host([readonly]) ::slotted(input:placeholder-shown) {\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\tvaadin-password-field::before {\n\t\t\t\theight: initial;\n\t\t\t}\n\t\t\tvaadin-password-field::part(input-field)::after {\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\tvaadin-password-field-button {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t:host([readonly]) vaadin-password-field-button {\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\tvaadin-password-field-button[focus-ring] {\n\t\t\t\tbox-shadow: 0 0 0 2px var(${PasswordClass.cssVarList.inputOutlineColor});\n\t\t\t}\n\n      ${inputFloatingLabelStyle()}\n\n      ::part(reveal-button) {\n        align-self: center;\n      }\n\n      vaadin-password-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n        opacity: 0;\n      }\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { PasswordClass } from '../../components/descope-password/PasswordClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = PasswordClass.cssVarList;\n\nconst password = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.revealButtonOffset]: globalRefs.spacing.md,\n  [vars.revealButtonSize]: refs.toggleButtonSize,\n  [vars.revealButtonColor]: refs.placeholderTextColor,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default password;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n  inputFloatingLabelStyle,\n  resetInputLabelPosition,\n  resetInputOverrides,\n  useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('number-field');\n\nexport const NumberFieldClass = compose(\n  createStyleMixin({\n    mappings: textFieldMappings,\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin\n)(\n  createProxy({\n    slots: ['', 'prefix', 'suffix'],\n    wrappedEleName: 'vaadin-number-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${NumberFieldClass.cssVarList.inputOutlineWidth}) + var(${\n          NumberFieldClass.cssVarList.inputOutlineOffset\n        }));\n\t\t\t}\n      ${resetInputLabelPosition('vaadin-number-field')}\n\t\t\t${useHostExternalPadding(NumberFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-number-field', NumberFieldClass.cssVarList)}\n      ${inputFloatingLabelStyle()}\n\n      vaadin-number-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n        opacity: 0;\n      }\n      vaadin-number-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n        opacity: 0;\n      }\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import { NumberFieldClass } from '../../components/descope-number-field/NumberFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = NumberFieldClass.cssVarList;\n\nconst numberField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default numberField;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n  externalInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n  inputFloatingLabelStyle,\n  resetInputLabelPosition,\n  resetInputOverrides,\n  useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('email-field');\n\nconst defaultPattern = \"^[\\\\w\\\\.\\\\%\\\\+\\\\-']+@[\\\\w\\\\.\\\\-]+\\\\.[A-Za-z]{2,}$\";\nconst defaultAutocomplete = 'username';\n\nconst customMixin = (superclass) =>\n  class EmailFieldMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      // we need to set the pattern on the base element because vaadin-email-field is overriding it\n      this.baseElement.setAttribute('pattern', defaultPattern);\n\n      if (!this.getAttribute('autocomplete')) {\n        this.setAttribute('autocomplete', defaultAutocomplete);\n      }\n\n      this.createExternalInput();\n    }\n  };\n\nexport const EmailFieldClass = compose(\n  createStyleMixin({\n    mappings: textFieldMappings,\n  }),\n  draggableMixin,\n  externalInputMixin({\n    inputType: 'email',\n    inputName: 'email',\n    autocompleteType: 'username',\n    includeAttrs: ['disabled', 'readonly', 'pattern'],\n  }),\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: ['', 'suffix'],\n    wrappedEleName: 'vaadin-email-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${EmailFieldClass.cssVarList.inputOutlineWidth}) + var(${\n          EmailFieldClass.cssVarList.inputOutlineOffset\n        }));\n        box-sizing: border-box;\n\t\t\t}\n      ${resetInputLabelPosition('vaadin-email-field')}\n\t\t\t${useHostExternalPadding(EmailFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-email-field', EmailFieldClass.cssVarList)}\n      ${inputFloatingLabelStyle()}\n\n      vaadin-email-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n        opacity: 0;\n      }\n      vaadin-email-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n        opacity: 0;\n      }\n\n      :host ::slotted(*) {\n        -webkit-mask-image: none;\n      }\n\n      vaadin-email-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n        opacity: 0;\n      }\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import { EmailFieldClass } from '../../components/descope-email-field/EmailFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = EmailFieldClass.cssVarList;\n\nconst emailField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default emailField;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n  resetInputContainer,\n  resetInputCursor,\n  resetInputLabelPosition,\n  resetInputField,\n  resetInputPlaceholder,\n  useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-area');\n\nconst {\n  host,\n  label,\n  placeholder,\n  inputField,\n  textArea,\n  requiredIndicator,\n  helperText,\n  errorMessage,\n} = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  placeholder: { selector: 'textarea:placeholder-shown' },\n  inputField: { selector: '::part(input-field)' },\n  textArea: { selector: '> textarea' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const TextAreaClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostDirection: { ...host, property: 'direction' },\n      fontSize: [host, textArea],\n      fontFamily: [label, inputField, helperText, errorMessage],\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n      ],\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n      inputBackgroundColor: { ...inputField, property: 'background-color' },\n      inputValueTextColor: { ...textArea, property: 'color' },\n      inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n      inputBorderWidth: { ...inputField, property: 'border-width' },\n      inputBorderStyle: { ...inputField, property: 'border-style' },\n      inputBorderColor: { ...inputField, property: 'border-color' },\n      inputBorderRadius: { ...inputField, property: 'border-radius' },\n      inputOutlineStyle: { ...inputField, property: 'outline-Style' },\n      inputOutlineColor: { ...inputField, property: 'outline-color' },\n      inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n      inputOutlineWidth: { ...inputField, property: 'outline-width' },\n      inputResizeType: { ...textArea, property: 'resize' },\n      inputMinHeight: { ...textArea, property: 'min-height' },\n      inputTextAlign: { ...textArea, property: 'text-align' },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-area',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n        box-sizing: border-box;\n\t\t\t}\n\t\t\ttextarea {\n\t\t\t\theight: 100%;\n\t\t\t}\n      ${resetInputLabelPosition('vaadin-text-area')}\n\t\t\t${useHostExternalPadding(TextAreaClass.cssVarList)}\n\t\t\t${resetInputContainer('vaadin-text-area')}\n\t\t\t${resetInputField('vaadin-text-area')}\n\t\t\t${resetInputPlaceholder('vaadin-text-area', 'textarea')}\n\t\t\t${resetInputCursor('vaadin-text-area')}\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import { TextAreaClass } from '../../components/descope-text-area/TextAreaClass';\nimport { refs } from './inputWrapper';\n\nconst vars = TextAreaClass.cssVarList;\n\nconst textArea = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputResizeType]: 'vertical',\n  [vars.inputMinHeight]: '5em',\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  textAlign: {\n    right: { [vars.inputTextAlign]: 'right' },\n    left: { [vars.inputTextAlign]: 'left' },\n    center: { [vars.inputTextAlign]: 'center' },\n  },\n\n  _readonly: {\n    [vars.inputResizeType]: 'none',\n  },\n};\n\nexport default textArea;\nexport { vars };\n","export const disableRules = [\n  'blockquote',\n  'list',\n  'image',\n  'table',\n  'code',\n  'hr',\n  'backticks',\n  'fence',\n  'reference',\n  'heading',\n  'lheading',\n  'html_block',\n];\n","export const decodeHTML = (html) => {\n  const textArea = document.createElement('textarea');\n  textArea.innerHTML = html;\n  return textArea.value;\n};\n","/* eslint-disable no-param-reassign */\n\nimport MarkdownIt from 'markdown-it';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { disableRules } from './consts';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { decodeHTML } from './helpers';\nimport { getComponentName, injectStyle, observeChildren } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('enriched-text');\n\nclass EnrichedText extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  #origLinkRenderer;\n\n  #origEmRenderer;\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"content\"></div>\n    `;\n\n    injectStyle(\n      `\n      :host {\n        line-height: 1em;\n        word-break: break-word;\n      }\n      :host > slot {\n        width: 100%;\n        display: inline-block;\n      }\n      *, *:last-child {\n        margin: 0;\n      }\n      h1,\n      h2,\n      h3,\n      h4,\n      h5,\n      h6,\n      p {\n        margin-bottom: 1em;\n      }\n      a {\n        cursor: pointer;\n      }\n      blockquote {\n        padding: 0 2em;\n      }\n      u {\n        text-decoration: underline\n      }\n      s {\n        color: currentColor;\n      }\n        `,\n      this\n    );\n\n    this.#initProcessor();\n\n    observeChildren(this, this.#parseChildren.bind(this));\n  }\n\n  static get observedAttributes() {\n    return ['readonly', 'link-target-blank'];\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (newValue !== oldValue) {\n      if (attrName === 'readonly') {\n        this.onReadOnlyChange(newValue === 'true');\n      }\n\n      if (attrName === 'link-target-blank') {\n        this.#initProcessor();\n      }\n    }\n  }\n\n  // We're overriding the rule for em with single underscore to perform as underline. (_underline_)\n  customUnderlineRenderer() {\n    this.processor.renderer.rules.em_open = (tokens, idx, options, env, self) => {\n      if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n      return this.#origEmRenderer(tokens, idx, options, env, self);\n    };\n    this.processor.renderer.rules.em_close = (tokens, idx, options, env, self) => {\n      if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n      return this.#origEmRenderer(tokens, idx, options, env, self);\n    };\n  }\n\n  #customizeLinkRenderer() {\n    if (this.linkTargetBlank) {\n      this.processor.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n        // Add a new `target` attribute, or replace the value of the existing one.\n        tokens[idx].attrSet('target', '_blank');\n        // Pass the token to the default renderer.\n        return this.#origLinkRenderer(tokens, idx, options, env, self);\n      };\n    } else {\n      this.processor.renderer.rules.link_open = this.#origLinkRenderer;\n    }\n  }\n\n  #disableCustomRules() {\n    if (!this.processor) {\n      return;\n    }\n    this.processor.disable(disableRules);\n  }\n\n  #updateProcessorRules() {\n    this.#disableCustomRules();\n  }\n\n  #storeOrigRenderers() {\n    const defaultLinkRenderer = (tokens, idx, options, _, self) =>\n      self.renderToken(tokens, idx, options);\n    this.#origLinkRenderer = this.processor.renderer.rules.link_open || defaultLinkRenderer;\n\n    const defaultStrongRenderer = (tokens, idx, options, _, self) =>\n      self.renderToken(tokens, idx, options);\n    this.#origEmRenderer = this.processor.renderer.rules.em_open || defaultStrongRenderer;\n  }\n\n  #initProcessor() {\n    this.processor = new MarkdownIt('commonmark', { html: true });\n    this.#storeOrigRenderers();\n    this.#updateProcessorRules();\n    this.#customizeLinkRenderer();\n    this.customUnderlineRenderer();\n  }\n\n  get linkTargetBlank() {\n    return this.getAttribute('link-target-blank') === 'true';\n  }\n\n  get contentNode() {\n    return this.shadowRoot.querySelector('.content');\n  }\n\n  #parseChildren() {\n    if (!this.processor) {\n      return;\n    }\n\n    let html = decodeHTML(this.innerHTML);\n\n    if (!html?.trim() && this.isConnected) {\n      this.setAttribute('empty', 'true');\n    } else {\n      this.removeAttribute('empty');\n    }\n\n    try {\n      const tokens = this.processor.parse(html, { references: undefined });\n      html = this.processor.renderer.render(tokens, { html: true, breaks: true });\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.warn('Not parsing invalid markdown token');\n    }\n\n    this.contentNode.innerHTML = html;\n    this.contentNode.firstChild?.setAttribute('part', 'content');\n  }\n\n  onReadOnlyChange(isReadOnly) {\n    if (isReadOnly) {\n      this.contentNode.setAttribute('inert', isReadOnly);\n    } else {\n      this.contentNode.removeAttribute('inert');\n    }\n  }\n}\n\nexport const EnrichedTextClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostDisplay: { selector: () => ':host', property: 'display', fallback: 'inline-block' },\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      fontSize: {},\n      fontFamily: {},\n      fontWeight: {},\n      fontWeightBold: [\n        { selector: () => ':host strong', property: 'font-weight' },\n        { selector: () => ':host b', property: 'font-weight' },\n      ],\n      textColor: { property: 'color' },\n      textLineHeight: { property: 'line-height' },\n      textAlign: {},\n      linkColor: { selector: 'a', property: 'color' },\n      linkTextDecoration: { selector: 'a', property: 'text-decoration' },\n      linkHoverTextDecoration: { selector: 'a:hover', property: 'text-decoration' },\n      minHeight: {},\n      minWidth: {},\n    },\n  }),\n  createStyleMixin({ componentNameOverride: getComponentName('link') }),\n  createStyleMixin({ componentNameOverride: getComponentName('text') }),\n  draggableMixin,\n  componentNameValidationMixin\n)(EnrichedText);\n","import { compose } from '../helpers';\nimport {\n  changeMixin,\n  inputEventsDispatchingMixin,\n  inputValidationMixin,\n  normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n  compose(\n    inputValidationMixin,\n    changeMixin,\n    normalizeBooleanAttributesMixin,\n    inputEventsDispatchingMixin\n  )(createBaseClass(...args));\n","import { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('boolean-field-internal');\n\nconst forwardAttributes = ['disabled', 'invalid', 'readonly'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass BooleanInputInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return ['readonly', 'label'];\n  }\n\n  constructor() {\n    super();\n    this.innerHTML = `\n\t\t\t<div class=\"wrapper\">\n\t\t\t\t<vaadin-checkbox>\n\t\t\t\t\t<descope-enriched-text link-target-blank=\"true\" class=\"label-content\" slot=\"label\"></descope-enriched-text>\n\t\t\t\t</vaadin-checkbox>\n\t\t\t</div>\n\t\t`;\n    this.wrapperEle = this.querySelector('div');\n    this.checkbox = this.querySelector('vaadin-checkbox');\n    this.labelContent = this.querySelector('.label-content');\n  }\n\n  get value() {\n    return this.checkbox?.checked;\n  }\n\n  set value(val) {\n    this.checkbox.checked = val;\n  }\n\n  get checked() {\n    return this.value;\n  }\n\n  set checked(val) {\n    this.value = val;\n  }\n\n  init() {\n    this.addEventListener('focus', (e) => {\n      if (e.isTrusted) {\n        this.checkbox.focus();\n      }\n    });\n    super.init?.();\n\n    forwardAttrs(this, this.checkbox, { includeAttrs: forwardAttributes });\n    syncAttrs(this, this.checkbox, { includeAttrs: ['checked'] });\n\n    // Handle label click to toggle checkbox\n    this.labelContent.addEventListener('click', (e) => {\n      if (!this.hasAttribute('disabled') && !this.hasAttribute('readonly')) {\n        this.checkbox.click();\n      }\n    });\n\n    // we need it in order to set the focus ring and trigger validation on descope-checkbox\n    this.handleFocusEventsDispatching([this.checkbox]);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (attrName === 'readonly') {\n      this.onReadOnlyChange(newValue !== null);\n    }\n\n    if (attrName === 'label') {\n      this.onLabelChange();\n    }\n  }\n\n  onLabelChange() {\n    const labelValue = this.getAttribute('label');\n    if (labelValue) {\n      this.labelContent.textContent = labelValue;\n    } else {\n      this.labelContent.textContent = '';\n    }\n  }\n\n  onReadOnlyChange(val) {\n    this.baseElement.setAttribute('inert', val);\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n    return {};\n  }\n}\n\nexport default BooleanInputInternal;\n","import { forwardAttrs, forwardProps, syncAttrs } from '../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-boolean-field-internal/BooleanFieldInternal';\n\nexport const booleanFieldMixin = (superclass) =>\n  class BooleanFieldMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      const template = document.createElement('template');\n      template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n\t\t\t`;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n      this.checkbox = this.inputElement.querySelector('vaadin-checkbox');\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'required',\n          'full-width',\n          'size',\n          'label',\n          'invalid',\n          'disabled',\n          'readonly',\n        ],\n      });\n\n      forwardProps(this.inputElement, this, ['checked']);\n      syncAttrs(this, this.inputElement, { includeAttrs: ['checked'] });\n    }\n  };\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { resetInputFieldDefaultWidth } from '../../helpers/themeHelpers/resetHelpers';\n\nexport default (cssVarList) => `\n:host {\n\tdisplay: inline-flex;\n}\n\n${resetInputFieldDefaultWidth()}\n\n.wrapper {\n\tdisplay: flex;\n\tbox-sizing: border-box;\n}\nvaadin-text-field {\n\tposition: relative;\n\tpadding: 0;\n\tdisplay: inline-flex;\n\talign-items: flex-start;\n}\nvaadin-text-field::before {\n  content: unset;\n}\nvaadin-text-field::part(label) {\n  position: absolute;\n  top: 0;\n}\nvaadin-text-field::part(input-field) {\n\tpadding: 0;\n\tbackground: none;\n\tmin-height: 0;\n}\nvaadin-text-field::part(input-field)::after {\n  background: none;\n}\nvaadin-text-field[focus-ring]::part(input-field) {\n\tbox-shadow: none;\n}\n\nvaadin-checkbox [slot=\"label\"] {\n  align-self: flex-start;\n  padding: 0;\n}\n[required] vaadin-checkbox [slot=\"label\"]:not(:empty) {\n\tpadding-inline-end: 1em;\n}\ndescope-boolean-field-internal {\n  -webkit-mask-image: none;\n  min-height: initial;\n}\n\ndescope-enriched-text[empty] {\n\t${EnrichedTextClass.cssVarList.hostDisplay}: none;\n}\n\ndescope-enriched-text {\n\t${EnrichedTextClass.cssVarList.hostDirection}: var(${cssVarList.hostDirection});\n}\n\n`;\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n  createStyleMixin,\n  proxyInputMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  createProxy,\n} from '../../../mixins';\nimport { booleanFieldMixin } from '../booleanFieldMixin';\nimport commonStyles from '../commonStyles';\nimport { useHostExternalPadding } from '../../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('checkbox');\n\nconst {\n  host,\n  component,\n  checkboxElement,\n  checkboxSurface,\n  checkboxLabel,\n  requiredIndicator,\n  checkboxContainer,\n  helperText,\n  errorMessage,\n} = {\n  host: { selector: () => ':host' },\n  requiredIndicator: {\n    selector: '[required] vaadin-checkbox [slot=\"label\"]:not(:empty)::part(content)::after',\n  },\n  component: { selector: 'vaadin-checkbox' },\n  checkboxElement: { selector: 'vaadin-checkbox::part(checkbox)' },\n  checkboxSurface: { selector: 'vaadin-checkbox::part(checkbox)::after' },\n  checkboxLabel: { selector: 'vaadin-checkbox [slot=\"label\"]:not(:empty)' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const CheckboxClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n\n      fontSize: [host, checkboxElement, checkboxLabel],\n      fontFamily: [checkboxLabel, helperText, errorMessage],\n\n      labelTextColor: { ...checkboxLabel, property: 'color' },\n      labelSpacing: { ...checkboxLabel, property: 'padding-inline-start' },\n      labelLineHeight: { ...checkboxLabel, property: 'line-height' },\n      labelFontWeight: { ...checkboxLabel, property: 'font-weight' },\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n      inputValueTextColor: { ...checkboxSurface, property: 'color' },\n      inputBackgroundColor: { ...checkboxElement, property: 'background-color' },\n\n      inputBorderRadius: { ...checkboxElement, property: 'border-radius' },\n      inputBorderWidth: { ...checkboxElement, property: 'border-width' },\n      inputBorderOffset: { ...checkboxElement, property: 'border-offset' },\n      inputBorderColor: { ...checkboxElement, property: 'border-color' },\n      inputBorderStyle: { ...checkboxElement, property: 'border-style' },\n\n      inputOutlineWidth: { ...checkboxElement, property: 'outline-width' },\n      inputOutlineOffset: { ...checkboxElement, property: 'outline-offset' },\n      inputOutlineColor: { ...checkboxElement, property: 'outline-color' },\n      inputOutlineStyle: { ...checkboxElement, property: 'outline-style' },\n      inputAlign: { ...checkboxElement, property: 'align-self' },\n\n      inputContainerPadding: { ...component, property: 'padding' },\n      inputContainerBackgroundColor: { ...component, property: 'background-color' },\n      inputContainerBorderRadius: { ...component, property: 'border-radius' },\n      inputContainerBorderWidth: { ...component, property: 'border-width' },\n      inputContainerBorderColor: { ...component, property: 'border-color' },\n      inputContainerBorderStyle: { ...component, property: 'border-style' },\n      inputContainerOutlineWidth: { ...component, property: 'outline-width' },\n      inputContainerOutlineOffset: { ...component, property: 'outline-offset' },\n      inputContainerOutlineColor: { ...component, property: 'outline-color' },\n      inputContainerOutlineStyle: { ...component, property: 'outline-style' },\n\n      inputSize: [\n        { ...checkboxElement, property: 'width' },\n        { ...checkboxElement, property: 'height' },\n        { ...checkboxSurface, property: 'font-size' },\n        { ...component, property: 'font-size' },\n      ],\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin,\n  booleanFieldMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t\t${commonStyles(CheckboxClass.cssVarList)}\n      ${useHostExternalPadding(CheckboxClass.cssVarList)}\n\n      :host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n        margin: 1px;\n      }\n\n      :host ::part(error-message) {\n        direction: ltr;\n      }\n\n      vaadin-text-field {\n        width: 100%;\n      }\n\n      descope-boolean-field-internal {\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n        height: 100%;\n      }\n\n      :host([full-width]) vaadin-checkbox {\n        flex-grow: 1;\n      }\n\n      vaadin-checkbox::part(checkbox) {\n        margin: 0;\n      }\n\n      vaadin-checkbox::part(checkbox)::after {\n        top: 0;\n        left: 0;\n        -webkit-text-fill-color: initial;\n      }\n\n       vaadin-checkbox label {\n        -webkit-text-fill-color: initial;\n      }\n\n      vaadin-text-field::part(input-field)::after {\n        content: none;\n      }\n    `,\n    excludeAttrsSync: ['label', 'tabindex', 'style'],\n    componentName,\n  })\n);\n","import { CheckboxClass } from '../../components/boolean-fields/descope-checkbox/CheckboxClass';\nimport { refs } from './inputWrapper';\n\nconst vars = CheckboxClass.cssVarList;\nconst checkboxSize = '1.35em';\n\nconst checkbox = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.labelFontWeight]: '400',\n  [vars.labelLineHeight]: checkboxSize,\n  [vars.labelSpacing]: '1em',\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputSize]: checkboxSize,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default checkbox;\nexport { vars };\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n  createStyleMixin,\n  proxyInputMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  createProxy,\n} from '../../../mixins';\nimport { booleanFieldMixin } from '../booleanFieldMixin';\nimport commonStyles from '../commonStyles';\nimport { useHostExternalPadding } from '../../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('switch-toggle');\n\nconst {\n  host,\n  component,\n  checkboxElement: track,\n  checkboxSurface: knob,\n  checkboxLabel,\n  requiredIndicator,\n  helperText,\n  errorMessage,\n} = {\n  host: { selector: () => ':host' },\n  requiredIndicator: {\n    selector: '[required] vaadin-checkbox [slot=\"label\"]:not(:empty)::part(content)::after',\n  },\n  component: { selector: 'vaadin-checkbox' },\n  checkboxElement: { selector: 'vaadin-checkbox::part(checkbox)' },\n  checkboxSurface: { selector: 'vaadin-checkbox::part(checkbox)::after' },\n  checkboxLabel: { selector: 'vaadin-checkbox [slot=\"label\"]:not(:empty)' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SwitchToggleClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n\n      fontSize: [component, checkboxLabel, checkboxLabel],\n      fontFamily: [checkboxLabel, helperText, errorMessage],\n\n      labelTextColor: [\n        { ...checkboxLabel, property: 'color' },\n        { ...checkboxLabel, property: '-webkit-text-fill-color' },\n      ],\n      labelSpacing: { ...checkboxLabel, property: 'padding-inline-start' },\n      labelLineHeight: { ...checkboxLabel, property: 'line-height' },\n      labelFontWeight: { ...checkboxLabel, property: 'font-weight' },\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n      trackBorderWidth: { ...track, property: 'border-width' },\n      trackBorderStyle: { ...track, property: 'border-style' },\n      trackBorderColor: { ...track, property: 'border-color' },\n      trackBackgroundColor: { ...track, property: 'background-color' },\n      trackBorderRadius: { ...track, property: 'border-radius' },\n      trackWidth: [{ ...track, property: 'width' }],\n      trackHeight: [\n        { ...knob, property: 'font-size' },\n        { ...track, property: 'height' },\n      ],\n\n      knobSize: [\n        { ...knob, property: 'width' },\n        { ...knob, property: 'height' },\n      ],\n      knobTextColor: { ...knob, property: 'color' },\n      knobRadius: { ...knob, property: 'border-radius' },\n      knobTransitionDuration: { ...knob, property: 'transition' },\n      knobColor: { ...knob, property: 'background-color' },\n      knobTopOffset: { ...knob, property: 'top' },\n      knobLeftOffset: { ...knob, property: 'left' },\n\n      inputOutlineWidth: { ...track, property: 'outline-width' },\n      inputOutlineOffset: { ...track, property: 'outline-offset' },\n      inputOutlineColor: { ...track, property: 'outline-color' },\n      inputOutlineStyle: { ...track, property: 'outline-style' },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin,\n  booleanFieldMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t\t${commonStyles(SwitchToggleClass.cssVarList)}\n\t\t\t${useHostExternalPadding(SwitchToggleClass.cssVarList)}\n\n      :host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n      }\n\n      :host ::part(error-message) {\n        direction: ltr;\n      }\n\n      vaadin-text-field {\n        width: 100%;\n      }\n\n      vaadin-text-field::part(input-field)::after {\n        content: none;\n      }\n\n      descope-boolean-field-internal {\n\t\t\t\tpadding: 0;\n        width: 100%;\n      }\n\n      vaadin-text-field::part(input-field) {\n        cursor: pointer;\n      }\n\n      vaadin-checkbox {\n        cursor: pointer;\n      }\n\n      vaadin-checkbox [slot=\"label\"]:not(:empty) {\n        cursor: pointer;\n\t\t\t}\n\n      vaadin-checkbox::part(checkbox) {\n        margin: 0;\n\t\t\t}\n\n      vaadin-checkbox::part(checkbox)::before {\n        content: '';\n\t\t\t}\n\n      vaadin-checkbox[active]::part(checkbox) {\n\t\t\t\ttransform: none;\n\t\t\t}\n\n      vaadin-checkbox::part(checkbox)::after {\n\t\t\t\tposition: absolute;\n\t\t\t\topacity: 1;\n\t\t\t\tcontent: '';\n\t\t\t}\n\t\t`,\n    excludeAttrsSync: ['label', 'tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { SwitchToggleClass } from '../../components/boolean-fields/descope-switch-toggle/SwitchToggleClass';\nimport { refs } from './inputWrapper';\n\nconst knobMargin = '2px';\nconst checkboxHeight = '1.25em';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = SwitchToggleClass.cssVarList;\n\nconst switchToggle = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n\n  [vars.trackBorderStyle]: refs.borderStyle,\n  [vars.trackBorderWidth]: refs.borderWidth, // var `trackBorderWidth` used outside the theme for `left` margin calculation\n  [vars.trackBorderColor]: refs.borderColor,\n  [vars.trackBackgroundColor]: refs.backgroundColor,\n  [vars.trackBorderRadius]: globalRefs.radius.md,\n  [vars.trackWidth]: '2.5em', // var `trackWidth` used outside the theme for `left` margin calculation\n  [vars.trackHeight]: checkboxHeight,\n\n  [vars.knobSize]: `calc(1em - ${knobMargin})`,\n  [vars.knobRadius]: '50%',\n  [vars.knobTopOffset]: '1px',\n  [vars.knobLeftOffset]: knobMargin,\n  [vars.knobColor]: refs.labelTextColor,\n  [vars.knobTransitionDuration]: '0.3s',\n\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelFontWeight]: '400',\n  [vars.labelLineHeight]: '1.35em',\n  [vars.labelSpacing]: '1em',\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  _checked: {\n    [vars.trackBorderColor]: refs.borderColor,\n    [vars.knobLeftOffset]: `calc(100% - var(${vars.knobSize}) - ${knobMargin})`,\n    [vars.knobColor]: refs.valueTextColor,\n    [vars.knobTextColor]: refs.valueTextColor,\n  },\n\n  _disabled: {\n    [vars.knobColor]: globalRefs.colors.surface.light,\n    [vars.trackBorderColor]: globalRefs.colors.surface.light,\n    [vars.trackBackgroundColor]: globalRefs.colors.surface.main,\n    [vars.labelTextColor]: refs.labelTextColor,\n    _checked: {\n      [vars.knobColor]: globalRefs.colors.surface.light,\n      [vars.trackBackgroundColor]: globalRefs.colors.surface.main,\n    },\n  },\n\n  _invalid: {\n    [vars.trackBorderColor]: globalRefs.colors.error.main,\n    [vars.knobColor]: globalRefs.colors.error.main,\n  },\n};\n\nexport default switchToggle;\nexport { vars };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('container');\n\nclass RawContainer extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n    injectStyle(\n      `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n  `,\n      this\n    );\n  }\n}\n\nexport const ContainerClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostHeight: { selector: () => ':host', property: 'height' },\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      itemsGrow: { selector: () => '::slotted(*)', property: 'flex-grow', fallback: '0' },\n      verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n      horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],\n\n      flexDirection: {},\n      justifyContent: {},\n      alignItems: {},\n      gap: {},\n      flexWrap: {},\n\n      backgroundColor: {},\n      backgroundImage: {},\n      backgroundPositionX: {},\n      backgroundPositionY: {},\n      backgroundSize: {},\n      backgroundRepeat: {},\n\n      color: {},\n      borderRadius: {},\n\n      borderColor: {},\n      borderStyle: {},\n      borderWidth: {},\n\n      boxShadow: {},\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawContainer);\n","import { ContainerClass, componentName } from '../../components/descope-container/ContainerClass';\nimport { createHelperVars, getThemeRefs } from '../../helpers/themeHelpers';\nimport globals from '../globals';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ContainerClass.cssVarList;\n\nconst verticalAlignment = {\n  start: { verticalAlignment: 'start' },\n  center: { verticalAlignment: 'safe center' },\n  end: { verticalAlignment: 'end' },\n};\n\nconst horizontalAlignment = {\n  start: { horizontalAlignment: 'start' },\n  center: { horizontalAlignment: 'safe center' },\n  end: { horizontalAlignment: 'end' },\n};\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n  {\n    verticalAlignment,\n    horizontalAlignment,\n    shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format\n  },\n  componentName\n);\n\nconst { shadowColor } = helperRefs;\n\nconst container = {\n  ...helperTheme,\n\n  [compVars.itemsGrow]: '0',\n  [compVars.hostWidth]: '100%',\n  [compVars.boxShadow]: 'none',\n\n  [compVars.backgroundColor]: globalRefs.colors.surface.main,\n\n  [compVars.backgroundImage]: '', // we need to set a value to avoid inner containers from inheriting the parent's background image\n  [compVars.backgroundPositionX]: 'center',\n  [compVars.backgroundPositionY]: 'center',\n  [compVars.backgroundSize]: 'cover',\n  [compVars.backgroundRepeat]: 'no-repeat',\n\n  [compVars.color]: globalRefs.colors.surface.contrast,\n  [compVars.borderRadius]: '0px',\n  [compVars.hostDirection]: globalRefs.direction,\n\n  [compVars.borderStyle]: 'none',\n  [compVars.borderWidth]: 'unset',\n  [compVars.borderColor]: 'unset',\n\n  verticalPadding: {\n    sm: { [compVars.verticalPadding]: '5px' },\n    md: { [compVars.verticalPadding]: '10px' },\n    lg: { [compVars.verticalPadding]: '20px' },\n  },\n\n  horizontalPadding: {\n    sm: { [compVars.horizontalPadding]: '5px' },\n    md: { [compVars.horizontalPadding]: '10px' },\n    lg: { [compVars.horizontalPadding]: '20px' },\n  },\n\n  direction: {\n    row: {\n      [compVars.flexDirection]: 'row',\n      [compVars.alignItems]: helperRefs.verticalAlignment,\n      [compVars.justifyContent]: helperRefs.horizontalAlignment,\n      [compVars.flexWrap]: 'wrap',\n      horizontalAlignment: {\n        spaceBetween: {\n          [helperVars.horizontalAlignment]: 'space-between',\n        },\n      },\n    },\n    column: {\n      [compVars.flexDirection]: 'column',\n      [compVars.alignItems]: helperRefs.horizontalAlignment,\n      [compVars.justifyContent]: helperRefs.verticalAlignment,\n      verticalAlignment: {\n        spaceBetween: {\n          [helperVars.verticalAlignment]: 'space-between',\n        },\n      },\n    },\n  },\n\n  spaceBetween: {\n    sm: { [compVars.gap]: '10px' },\n    md: { [compVars.gap]: '20px' },\n    lg: { [compVars.gap]: '30px' },\n  },\n\n  shadow: {\n    sm: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n    },\n    md: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.md} ${shadowColor}, ${globalRefs.shadow.narrow.md} ${shadowColor}`,\n    },\n    lg: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.lg} ${shadowColor}, ${globalRefs.shadow.narrow.lg} ${shadowColor}`,\n    },\n    xl: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n    },\n    '2xl': {\n      [helperVars.shadowColor]: '#00000050', // mimic daisyUI shadow settings\n      [compVars.boxShadow]: `${globalRefs.shadow.wide['2xl']} ${shadowColor}`,\n    },\n  },\n\n  // we must add & to override the root container style (applied via the styles page)\n  '&borderRadius': {\n    sm: { [compVars.borderRadius]: globalRefs.radius.sm },\n    md: { [compVars.borderRadius]: globalRefs.radius.md },\n    lg: { [compVars.borderRadius]: globalRefs.radius.lg },\n    xl: { [compVars.borderRadius]: globalRefs.radius.xl },\n    '2xl': { [compVars.borderRadius]: globalRefs.radius['2xl'] },\n    '3xl': { [compVars.borderRadius]: globalRefs.radius['3xl'] },\n  },\n};\n\nexport default container;\n\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../helpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {\n  let style;\n  const getContent = () => style;\n\n  class RawCssVarImageClass extends createBaseClass({\n    componentName,\n    baseSelector: ':host > div',\n  }) {\n    constructor() {\n      super();\n      this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div></div>\n\t\t\t`;\n\n      injectStyle(\n        `\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${getContent()}\n\t\t\t\t}\n        `,\n        this\n      );\n    }\n  }\n\n  const CssVarImageClass = compose(\n    createStyleMixin({\n      mappings: {\n        height: { selector: () => ':host > div' },\n        width: { selector: () => ':host > div' },\n        [varName]: { property: 'content' },\n        [fallbackVarName]: { property: 'content' },\n      },\n    }),\n    draggableMixin,\n    componentNameValidationMixin\n  )(RawCssVarImageClass);\n\n  style = `content: var(${CssVarImageClass.cssVarList[varName]}, var(${CssVarImageClass.cssVarList[fallbackVarName]}));`;\n\n  return CssVarImageClass;\n};\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('logo');\n\nexport const LogoClass = createCssVarImageClass({\n  componentName,\n  varName: 'url',\n  fallbackVarName: 'fallbackUrl',\n});\n","import { LogoClass } from '../../components/descope-logo/LogoClass';\n\nconst vars = LogoClass.cssVarList;\n\nconst logo = {\n  [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/no-logo-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('totp-image');\n\nexport const TotpImageClass = createCssVarImageClass({\n  componentName,\n  varName: 'url',\n  fallbackVarName: 'fallbackUrl',\n});\n","import { TotpImageClass } from '../../components/descope-totp-image/TotpImageClass';\n\nconst vars = TotpImageClass.cssVarList;\n\nconst logo = {\n  [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/totp-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('notp-image');\n\nexport const NotpImageClass = createCssVarImageClass({\n  componentName,\n  varName: 'url',\n  fallbackVarName: 'fallbackUrl',\n});\n","import { NotpImageClass } from '../../components/descope-notp-image/NotpImageClass';\n\nconst vars = NotpImageClass.cssVarList;\n\nconst logo = {\n  [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/notp-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  injectStyle,\n  observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n  componentName,\n  baseSelector: ':host > slot',\n}) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <slot part=\"text-wrapper\"></slot>\n    `;\n\n    injectStyle(`\n      :host {\n        display: inline-block;\n        line-height: 1em;\n      }\n      :host > slot {\n        width: 100%;\n        display: inline-block;\n      }\n    `, this);\n  }\n\n  get hideWhenEmpty() {\n    return this.getAttribute('hide-when-empty') === 'true';\n  }\n\n  init() {\n    super.init();\n\n    observeChildren(this, () => {\n      const hasChildren = !!this.childNodes.length;\n      this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n    });\n  }\n}\n\nconst { host } = {\n  host: { selector: () => ':host' }\n}\n\nexport const TextClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      fontSize: {},\n      textColor: [\n        { property: 'color' }\n      ],\n      textLineHeight: { property: 'line-height' },\n      textLetterSpacing: { property: 'letter-spacing' },\n      textShadow: {},\n      textAlign: {},\n      textTransform: {},\n      fontFamily: {},\n      fontStyle: {},\n      fontWeight: {},\n      borderWidth: {},\n      borderStyle: {},\n      borderColor: {},\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawText);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { TextClass } from './component/TextClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TextClass.cssVarList;\n\nconst text = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.textLineHeight]: '1.35em',\n  [vars.textAlign]: 'start',\n  [vars.textColor]: globalRefs.colors.surface.dark,\n\n  variant: {\n    h1: {\n      [vars.fontSize]: globalRefs.typography.h1.size,\n      [vars.fontWeight]: globalRefs.typography.h1.weight,\n      [vars.fontFamily]: globalRefs.typography.h1.font,\n    },\n    h2: {\n      [vars.fontSize]: globalRefs.typography.h2.size,\n      [vars.fontWeight]: globalRefs.typography.h2.weight,\n      [vars.fontFamily]: globalRefs.typography.h2.font,\n    },\n    h3: {\n      [vars.fontSize]: globalRefs.typography.h3.size,\n      [vars.fontWeight]: globalRefs.typography.h3.weight,\n      [vars.fontFamily]: globalRefs.typography.h3.font,\n    },\n    subtitle1: {\n      [vars.fontSize]: globalRefs.typography.subtitle1.size,\n      [vars.fontWeight]: globalRefs.typography.subtitle1.weight,\n      [vars.fontFamily]: globalRefs.typography.subtitle1.font,\n    },\n    subtitle2: {\n      [vars.fontSize]: globalRefs.typography.subtitle2.size,\n      [vars.fontWeight]: globalRefs.typography.subtitle2.weight,\n      [vars.fontFamily]: globalRefs.typography.subtitle2.font,\n    },\n    body1: {\n      [vars.fontSize]: globalRefs.typography.body1.size,\n      [vars.fontWeight]: globalRefs.typography.body1.weight,\n      [vars.fontFamily]: globalRefs.typography.body1.font,\n    },\n    body2: {\n      [vars.fontSize]: globalRefs.typography.body2.size,\n      [vars.fontWeight]: globalRefs.typography.body2.weight,\n      [vars.fontFamily]: globalRefs.typography.body2.font,\n    },\n  },\n\n  mode: {\n    primary: {\n      [vars.textColor]: globalRefs.colors.surface.contrast,\n    },\n    secondary: {\n      [vars.textColor]: globalRefs.colors.surface.dark,\n    },\n    error: {\n      [vars.textColor]: globalRefs.colors.error.main,\n    },\n    'error-dark': {\n      [vars.textColor]: globalRefs.colors.error.dark,\n    },\n    success: {\n      [vars.textColor]: globalRefs.colors.success.main,\n    },\n    'success-dark': {\n      [vars.textColor]: globalRefs.colors.success.dark,\n    },\n    warning: {\n      [vars.textColor]: globalRefs.colors.warning.main,\n    },\n    'warning-dark': {\n      [vars.textColor]: globalRefs.colors.warning.dark,\n    },\n  },\n\n  textAlign: {\n    right: { [vars.textAlign]: 'right' },\n    left: { [vars.textAlign]: 'left' },\n    center: { [vars.textAlign]: 'center' },\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n\n  _italic: {\n    [vars.fontStyle]: 'italic',\n  },\n\n  _uppercase: {\n    [vars.textTransform]: 'uppercase',\n  },\n\n  _lowercase: {\n    [vars.textTransform]: 'lowercase',\n  },\n};\n\nexport default text;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  forwardAttrs,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('link');\n\nclass RawLink extends createBaseClass({ componentName, baseSelector: ':host a' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n\t\t\t<descope-text part=\"wrapper\">\n\t\t\t\t<a>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</a>\n\t\t\t</descope-text>\n\t\t</div>\n\t\t`;\n\n    injectStyle(\n      `\n    :host {\n\t\t\tdisplay: inline-block;\n      line-height: 1em;\n\t\t}\n\t\t:host a {\n\t\t\tdisplay: inline;\n\t\t}\n\n    :host([ellipsis=\"true\"]) descope-text {\n      display: inline-flex;\n    }\n    :host([ellipsis=\"true\"]) descope-text::part(text-wrapper) {\n      text-overflow: ellipsis;\n      overflow: hidden;\n      white-space: nowrap;\n    }\n      `,\n      this\n    );\n\n    forwardAttrs(this, this.shadowRoot.querySelector('a'), {\n      includeAttrs: ['href', 'target', 'tooltip'],\n      mapAttrs: {\n        tooltip: 'title',\n      },\n    });\n\n    forwardAttrs(this, this.shadowRoot.querySelector('descope-text'), {\n      includeAttrs: ['mode', 'variant'],\n    });\n  }\n}\n\nconst selectors = {\n  host: { selector: () => ':host' },\n  link: { selector: () => ':host a' },\n  anchor: {},\n  wrapper: { selector: () => ':host > div' },\n  text: { selector: () => TextClass.componentName },\n};\n\nconst { anchor, text, host, wrapper, link } = selectors;\n\nexport const LinkClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...text, property: 'direction' },\n      textAlign: wrapper,\n      textDecoration: { ...link, property: 'text-decoration', fallback: 'none' },\n      textColor: [\n        { ...anchor, property: 'color' },\n        { ...text, property: TextClass.cssVarList.textColor },\n      ],\n      cursor: anchor,\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawLink);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { LinkClass } from './component/LinkClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = LinkClass.cssVarList;\n\nconst link = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.cursor]: 'pointer',\n\n  [vars.textColor]: globalRefs.colors.primary.main,\n\n  textAlign: {\n    right: { [vars.textAlign]: 'right' },\n    left: { [vars.textAlign]: 'left' },\n    center: { [vars.textAlign]: 'center' },\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n\n  _hover: {\n    [vars.textDecoration]: 'underline',\n  },\n\n  mode: {\n    secondary: {\n      [vars.textColor]: globalRefs.colors.secondary.main,\n    },\n  },\n};\n\nexport default link;\nexport { vars };\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, useVar } from '@descope-ui/common/theme-helpers';\nimport { EnrichedTextClass } from './component/EnrichedTextClass';\nimport { vars as textCompVars } from '@descope-ui/descope-text/theme';\nimport { vars as linkCompVars } from '@descope-ui/descope-link/theme';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = EnrichedTextClass.cssVarList;\n\nconst enrichedText = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.hostWidth]: useVar(textCompVars.hostWidth),\n\n  [vars.textLineHeight]: useVar(textCompVars.textLineHeight),\n  [vars.textColor]: useVar(textCompVars.textColor),\n  [vars.textAlign]: useVar(textCompVars.textAlign),\n\n  [vars.fontSize]: useVar(textCompVars.fontSize),\n  [vars.fontWeight]: useVar(textCompVars.fontWeight),\n  [vars.fontFamily]: useVar(textCompVars.fontFamily),\n\n  [vars.linkColor]: useVar(linkCompVars.textColor),\n  [vars.linkTextDecoration]: 'none',\n  [vars.linkHoverTextDecoration]: 'underline',\n\n  [vars.fontWeightBold]: '900',\n  [vars.minWidth]: '0.25em',\n  [vars.minHeight]: '1.35em',\n\n  [vars.hostDisplay]: 'inline-block',\n\n  _empty: {\n    _hideWhenEmpty: {\n      [vars.hostDisplay]: 'none',\n    },\n  },\n};\n\nexport default enrichedText;\nexport { vars };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('divider');\nclass RawDivider extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div>\n\t\t\t\t<descope-text>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</descope-text>\n\t\t\t</div>\n\t\t`;\n\n    injectStyle(\n      `\n      \t:host {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t\t:host > div::before,\n\t\t\t\t:host > div::after {\n\t\t\t\t\tcontent: '';\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t\tdescope-text {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t}\n\t\t\t\t:host(:empty) descope-text {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t:host([vertical=\"true\"]) div {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t}\n          `,\n      this\n    );\n\n    this.textComponent = this.shadowRoot.querySelector('descope-text');\n\n    forwardAttrs(this, this.textComponent, {\n      includeAttrs: ['mode', 'variant', 'italic'],\n    });\n  }\n}\n\nconst textVars = TextClass.cssVarList;\nconst { host, before, after, text } = {\n  host: { selector: () => ':host' },\n  before: { selector: '::before' },\n  after: { selector: '::after' },\n  text: { selector: 'descope-text' },\n};\n\nexport const DividerClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostPadding: { ...host, property: 'padding' },\n      hostDirection: { ...text, property: 'direction' },\n\n      minHeight: {},\n      alignItems: {},\n      alignSelf: {},\n      flexDirection: {},\n      textAlign: { ...text, property: textVars.textAlign },\n\n      labelTextWidth: { ...text, property: 'width' },\n      labelTextMaxWidth: { ...text, property: 'max-width' },\n      labelTextVerticalSpacing: [\n        { ...text, property: 'padding-top' },\n        { ...text, property: 'padding-bottom' },\n      ],\n      labelTextHorizontalSpacing: [\n        { ...text, property: 'padding-right' },\n        { ...text, property: 'padding-left' },\n      ],\n\n      stripeColor: [\n        { ...before, property: 'background-color' },\n        { ...after, property: 'background-color' },\n      ],\n      stripeHorizontalThickness: [\n        { ...before, property: 'height' },\n        { ...after, property: 'height' },\n      ],\n      stripeVerticalThickness: [\n        { ...before, property: 'width' },\n        { ...after, property: 'width' },\n      ],\n      stripeColorOpacity: [\n        { ...before, property: 'opacity' },\n        { ...after, property: 'opacity' },\n      ],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawDivider);\n","import globals from '../globals';\nimport { componentName, DividerClass } from '../../components/descope-divider/DividerClass';\nimport { createHelperVars, getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = DividerClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n  {\n    thickness: '2px',\n    spacing: '10px',\n  },\n  componentName\n);\n\nconst divider = {\n  ...helperTheme,\n\n  [compVars.hostDirection]: globalRefs.direction,\n  [compVars.alignItems]: 'center',\n  [compVars.flexDirection]: 'row',\n  [compVars.alignSelf]: 'stretch',\n  [compVars.hostWidth]: '100%',\n  [compVars.stripeColor]: globalRefs.colors.surface.light,\n  [compVars.stripeColorOpacity]: '0.5',\n  [compVars.stripeHorizontalThickness]: helperRefs.thickness,\n  [compVars.labelTextWidth]: 'fit-content',\n  [compVars.labelTextMaxWidth]: 'calc(100% - 100px)',\n  [compVars.labelTextHorizontalSpacing]: helperRefs.spacing,\n  [compVars.textAlign]: 'center',\n\n  _vertical: {\n    [compVars.minHeight]: '200px',\n    [compVars.flexDirection]: 'column',\n    [compVars.hostWidth]: 'fit-content',\n    [compVars.hostPadding]: `0 calc(${helperRefs.thickness} * 3)`,\n    [compVars.stripeVerticalThickness]: helperRefs.thickness,\n    [compVars.labelTextWidth]: 'fit-content',\n    [compVars.labelTextMaxWidth]: '100%',\n    [compVars.labelTextVerticalSpacing]: helperRefs.spacing,\n  },\n};\n\nexport default divider;\n\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","/* eslint-disable no-param-reassign */\nimport debounce from 'lodash.debounce';\nimport { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n  sanitizeStr,\n  focusElement,\n  toggleMaskVisibility,\n  INPUT_MASK_FALLBACK_PROP,\n  INPUT_MASK_TEXT_PROP,\n  INPUT_MASK_DISPLAY_PROP,\n} from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('passcode-internal');\n\nconst observedAttributes = ['digits', 'loading'];\n\nconst forwardAttributes = [\n  'disabled',\n  'bordered',\n  'size',\n  'invalid',\n  'readonly',\n  'aria-labelledby',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PasscodeInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n  }\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n\t\t<div class=\"wrapper\"></div>\n\t\t<div class=\"loader-container\">\n      <descope-loader-radial size=\"xs\" mode=\"primary\"></descope-loader-radial>\n    </div>\n\t\t`;\n\n    this.wrapperEle = this.querySelector('.wrapper');\n    this.loaderContainer = this.querySelector('.loader-container');\n  }\n\n  renderInputs() {\n    const inputs = [...Array(this.digits).keys()].map(\n      (idx) => `\n\t\t<descope-text-field\n\t\t\tdata-id=${idx}\n\t\t\ttype=\"tel\"\n\t\t\tautocomplete=\"one-time-code\"\n\t\t\tinputMode=\"numeric\"\n\t\t></descope-text-field>\n\t`\n    );\n\n    this.wrapperEle.innerHTML = inputs.join('');\n\n    this.inputs = Array.from(this.querySelectorAll('descope-text-field'));\n\n    this.initInputs();\n  }\n\n  handleLoadingState(isLoading) {\n    if (isLoading) {\n      this.setAttribute('inert', 'true');\n    } else {\n      this.removeAttribute('inert');\n    }\n  }\n\n  get digits() {\n    return Number.parseInt(this.getAttribute('digits'), 10) || 6;\n  }\n\n  get value() {\n    return this.inputs?.map(({ value }) => value).join('') || '';\n  }\n\n  set value(val) {\n    if (val === this.value) return;\n\n    this.parseInputValue(this.inputs[0], sanitizeStr(val));\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n    if (this.pattern && !new RegExp(this.pattern).test(this.value)) {\n      return { patternMismatch: true };\n    }\n\n    return {};\n  }\n\n  init() {\n    // we are adding listeners before calling to super because it's stopping the events\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) this.inputs[0].focus();\n    });\n\n    super.init?.();\n\n    this.renderInputs();\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getInputIdx(inputEle) {\n    return Number.parseInt(inputEle.getAttribute('data-id'), 10);\n  }\n\n  getNextInput(currInput) {\n    const currentIdx = this.getInputIdx(currInput);\n    const newIdx = Math.min(currentIdx + 1, this.inputs.length - 1);\n    return this.inputs[newIdx];\n  }\n\n  getPrevInput(currInput) {\n    const currentIdx = this.getInputIdx(currInput);\n    const newIdx = Math.max(currentIdx - 1, 0);\n    return this.inputs[newIdx];\n  }\n\n  fillDigits(charArr, currentInput) {\n    for (let i = 0; i < charArr.length; i += 1) {\n      currentInput.value = charArr[i] ?? '';\n\n      const nextInput = this.getNextInput(currentInput);\n\n      if (nextInput === currentInput) break;\n      currentInput = nextInput;\n    }\n\n    focusElement(currentInput);\n  }\n\n  parseInputValue(input, value = '') {\n    const charArr = value.split('');\n\n    if (!charArr.length) {\n      // if we got an invalid value we want to clear the input\n      input.value = '';\n    } else this.fillDigits(charArr, input);\n  }\n\n  initInputs() {\n    this.inputs.forEach((input) => {\n      // During debounced input we hide the value with a mask.\n      // This allows us to hide the multiple population of the first input\n      // in case of an automated input (e.g. Safari OTP Autofill or paste).\n      injectStyle(\n        `\n        vaadin-text-field::part(input-field)::before {\n          ${INPUT_MASK_FALLBACK_PROP}: '';\n          content: var(${INPUT_MASK_TEXT_PROP}, var(${INPUT_MASK_FALLBACK_PROP}));\n          position: absolute;\n          width: 100%;\n          height: 100%;\n          display: var(${INPUT_MASK_DISPLAY_PROP}, none);\n          align-items: center;\n          justify-content: center;\n        }`,\n        input\n      );\n\n      const handleParseInput = (val) => {\n        this.parseInputValue(input, val);\n        toggleMaskVisibility(input);\n      };\n\n      const debouncedHandleParseInput = debounce(handleParseInput, 0, { trailing: true });\n\n      // sanitize the input\n      input.addEventListener('input', (e) => {\n        input.value = sanitizeStr(input.value);\n\n        if (input.value) {\n          toggleMaskVisibility(input, input.value[0]);\n        }\n\n        setTimeout(() => {\n          if (e?.inputType === 'deleteContentBackward') {\n            focusElement(this.getPrevInput(input));\n          }\n        });\n        debouncedHandleParseInput(input.value);\n      });\n\n      // we want backspace to focus on the previous digit\n      input.onkeydown = ({ key }) => {\n        // when user deletes a digit, we want to focus the previous digit\n        if (key === 'Backspace') {\n          // if value is empty then the input element does not fire `input` event\n          // if this is the case, we focus the element here.\n          // otherwise, the focusElement occurs as part of the `input` event listener\n          if (!input.value) {\n            setTimeout(() => focusElement(this.getPrevInput(input)), 0);\n          } else {\n            input.setSelectionRange(1, 1);\n          }\n        } else if (key.length === 1) {\n          // we want only characters and not command keys\n          input.value = ''; // we are clearing the previous value so we can override it with the new value\n        }\n      };\n\n      forwardAttrs(this, input, { includeAttrs: forwardAttributes });\n      input.shadowRoot.querySelector('input').setAttribute('aria-label', 'passcode digit');\n    });\n\n    this.handleFocusEventsDispatching(this.inputs);\n    this.handleInputEventDispatching();\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    // sync attributes to inputs\n    if (oldValue !== newValue) {\n      if (observedAttributes.includes(attrName)) {\n        if (attrName === 'digits') {\n          this.renderInputs();\n        }\n        if (attrName === 'loading') {\n          this.handleLoadingState(newValue === 'true');\n        }\n      }\n    }\n  }\n\n  get pattern() {\n    return `^$|^\\\\d{${this.digits},}$`;\n  }\n}\n\nexport default PasscodeInternal;\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('loader-radial');\n\nclass RawLoaderRadial extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div></div>\n\t`;\n\n    injectStyle(\n      `\n    @keyframes spin {\n\t\t\t\t0% { transform: rotate(0deg); }\n\t\t\t\t100% { transform: rotate(360deg); }\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\tanimation-name: spin;\n\t\t\t}\n        `,\n      this\n    );\n  }\n}\n\nexport const LoaderRadialClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostDisplay: { property: 'display' },\n      spinnerSize: [{ property: 'width' }, { property: 'height' }],\n      spinnerBorderWidth: { property: 'border-width' },\n      spinnerBorderStyle: { property: 'border-style' },\n      spinnerBorderRadius: { property: 'border-radius' },\n      spinnerQuadrant1Color: { property: 'border-top-color' },\n      spinnerQuadrant2Color: { property: 'border-bottom-color' },\n      spinnerQuadrant3Color: { property: 'border-right-color' },\n      spinnerQuadrant4Color: { property: 'border-left-color' },\n      animationDuration: {},\n      animationTimingFunction: {},\n      animationIterationCount: {},\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawLoaderRadial);\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n  inputOverrideValidConstraintsMixin,\n} from '../../mixins';\nimport { componentName as descopeInternalComponentName } from './descope-passcode-internal/PasscodeInternal';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { LoaderRadialClass } from '../descope-loader-radial/LoaderRadialClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport {\n  resetInputCursor,\n  resetInputLabelPosition,\n  resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('passcode');\n\nconst observedAttributes = ['digits'];\n\nconst customMixin = (superclass) =>\n  class PasscodeMixinClass extends superclass {\n    static get observedAttributes() {\n      return observedAttributes.concat(superclass.observedAttributes || []);\n    }\n\n    get digits() {\n      return Number.parseInt(this.getAttribute('digits'), 10) || 6;\n    }\n\n    init() {\n      super.init?.();\n\n      injectStyle(\n        `\n        .wrapper {\n          display: flex;\n          width: 100%;\n          justify-content: space-between;\n          direction: ltr;\n          position: relative;\n        }\n\n        descope-text-field {\n          direction: ltr;\n        }\n\n        .loader-container {\n          display: none;\n          position: absolute;\n          top: 50%;\n          left: 50%;\n          transform: translate(-50%, -50%);\n        }\n          `,\n        this\n      );\n\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n        bordered=\"true\"\n        name=\"code\"\n        tabindex=\"-1\"\n        slot=\"input\"\n        role=\"textbox\"\n      ><slot></slot></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: ['digits', 'size', 'loading', 'disabled'],\n      });\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (attrName === 'digits') {\n        this.style['--passcode-digits-count'] = newValue;\n      }\n    }\n  };\n\nconst {\n  host,\n  digitField,\n  label,\n  requiredIndicator,\n  internalWrapper,\n  focusedDigitField,\n  errorMessage,\n} = {\n  host: { selector: () => ':host' },\n  focusedDigitField: { selector: () => `${TextFieldClass.componentName}[focused=\"true\"]` },\n  digitField: { selector: () => TextFieldClass.componentName },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  internalWrapper: { selector: 'descope-passcode-internal .wrapper' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nconst textVars = TextFieldClass.cssVarList;\nconst loaderVars = LoaderRadialClass.cssVarList;\n\nexport const PasscodeClass = compose(\n  createStyleMixin({\n    mappings: {\n      fontSize: [{ ...digitField, property: textVars.fontSize }, host],\n      hostWidth: { property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      fontFamily: [host, { ...label }],\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n        { ...requiredIndicator, property: '-webkit-text-fill-color' },\n      ],\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n      digitValueTextColor: {\n        selector: TextFieldClass.componentName,\n        property: textVars.inputValueTextColor,\n      },\n      digitSize: [\n        { ...digitField, property: 'height' },\n        { ...digitField, property: 'width' },\n      ],\n      digitPadding: { ...digitField, property: textVars.inputHorizontalPadding },\n      digitTextAlign: { ...digitField, property: textVars.inputTextAlign },\n      digitCaretTextColor: { ...digitField, property: textVars.inputCaretTextColor },\n      digitSpacing: { ...internalWrapper, property: 'gap' },\n      digitOutlineColor: { ...digitField, property: textVars.inputOutlineColor },\n      digitOutlineWidth: { ...digitField, property: textVars.inputOutlineWidth },\n\n      focusedDigitFieldOutlineColor: { ...focusedDigitField, property: textVars.inputOutlineColor },\n      overlayOpacity: { ...internalWrapper, property: 'opacity' },\n      spinnerSize: { selector: LoaderRadialClass.componentName, property: loaderVars.spinnerSize },\n    },\n  }),\n  draggableMixin,\n  inputOverrideValidConstraintsMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: calc(var(--passcode-digits-count) * 2em);\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n      :host([loading=\"true\"]) descope-passcode-internal .loader-container {\n        display: block;\n      }\n\n\t\t\tdescope-passcode-internal {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n\t\t\tdescope-passcode-internal .wrapper {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tmin-height: initial;\n\t\t\t\theight: 100%;\n\t\t\t\tjustify-content: space-between;\n\t\t\t}\n\n\t\t\tdescope-passcode-internal descope-text-field {\n\t\t\t\tmin-width: 2em;\n\t\t\t\tmax-width: var(${textVars.inputHeight});\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n      /* safari */\n\t\t\tvaadin-text-field::part(input-field)::after {\n        opacity: 0;\n      }\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n      ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n    \t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n\nexport default PasscodeClass;\n","import { PasscodeClass } from '../../components/descope-passcode/PasscodeClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PasscodeClass.cssVarList;\n\nconst passcode = {\n  [vars.hostDirection]: refs.direction,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.fontSize]: refs.fontSize,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.digitValueTextColor]: refs.valueTextColor,\n  [vars.digitPadding]: '0',\n  [vars.digitTextAlign]: 'center',\n  [vars.digitSpacing]: '4px',\n  [vars.hostWidth]: refs.width,\n  [vars.digitOutlineColor]: 'transparent',\n  [vars.digitOutlineWidth]: refs.outlineWidth,\n  [vars.focusedDigitFieldOutlineColor]: refs.outlineColor,\n  [vars.digitSize]: refs.inputHeight,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  size: {\n    xs: { [vars.spinnerSize]: '15px' },\n    sm: { [vars.spinnerSize]: '20px' },\n    md: { [vars.spinnerSize]: '20px' },\n    lg: { [vars.spinnerSize]: '20px' },\n  },\n\n  _hideCursor: {\n    [vars.digitCaretTextColor]: 'transparent',\n  },\n\n  _loading: {\n    [vars.overlayOpacity]: refs.overlayOpacity,\n  },\n};\n\nexport default passcode;\nexport { vars };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('loader-linear');\n\nclass RawLoaderLinear extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  static get componentName() {\n    return componentName;\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div></div>\n\t`;\n\n    injectStyle(\n      `\n    @keyframes tilt {\n\t\t\t\t0% { transform: translateX(0); }\n\t\t\t\t50% { transform: translateX(400%); }\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t\tdiv::after {\n\t\t\t\tcontent: '';\n\t\t\t\tanimation-name: tilt;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 0;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\twidth: 100%;\n\t\t\t}\n        `,\n      this\n    );\n  }\n}\n\nconst selectors = {\n  after: { selector: '::after' },\n  host: { selector: () => ':host' },\n};\n\nconst { after, host } = selectors;\n\nexport const LoaderLinearClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostDisplay: {},\n      hostWidth: { ...host, property: 'width' },\n      barHeight: [{ property: 'height' }, { ...after, property: 'height' }],\n      barBorderRadius: [{ property: 'border-radius' }, { ...after, property: 'border-radius' }],\n      verticalPadding: [\n        { ...host, property: 'padding-top' },\n        { ...host, property: 'padding-bottom' },\n      ],\n      barBackgroundColor: { property: 'background-color' },\n      barColor: { ...after, property: 'background-color' },\n      barWidth: { ...after, property: 'width' },\n      animationDuration: [{}, after],\n      animationTimingFunction: [{}, after],\n      animationIterationCount: [{}, after],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawLoaderLinear);\n","import globals from '../../globals';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport { LoaderLinearClass } from '../../../components/descope-loader-linear/LoaderLinearClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = LoaderLinearClass.cssVarList;\n\nconst loaderLinear = {\n  [vars.hostDisplay]: 'inline-block',\n  [vars.hostWidth]: '100%',\n\n  [vars.barColor]: globalRefs.colors.surface.contrast,\n  [vars.barWidth]: '20%',\n\n  [vars.barBackgroundColor]: globalRefs.colors.surface.light,\n  [vars.barBorderRadius]: '4px',\n\n  [vars.animationDuration]: '2s',\n  [vars.animationTimingFunction]: 'linear',\n  [vars.animationIterationCount]: 'infinite',\n  [vars.verticalPadding]: '0.25em',\n\n  size: {\n    xs: { [vars.barHeight]: '2px' },\n    sm: { [vars.barHeight]: '4px' },\n    md: { [vars.barHeight]: '6px' },\n    lg: { [vars.barHeight]: '8px' },\n  },\n\n  mode: {\n    primary: {\n      [vars.barColor]: globalRefs.colors.primary.main,\n    },\n    secondary: {\n      [vars.barColor]: globalRefs.colors.secondary.main,\n    },\n  },\n\n  _hidden: {\n    [vars.hostDisplay]: 'none',\n  },\n};\n\nexport default loaderLinear;\nexport { vars };\n","import globals from '../../globals';\nimport {\n  LoaderRadialClass,\n  componentName,\n} from '../../../components/descope-loader-radial/LoaderRadialClass';\nimport { createHelperVars, getThemeRefs } from '../../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = LoaderRadialClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n  {\n    spinnerColor: globalRefs.colors.surface.contrast,\n    mode: {\n      primary: {\n        spinnerColor: globalRefs.colors.primary.main,\n      },\n      secondary: {\n        spinnerColor: globalRefs.colors.secondary.main,\n      },\n    },\n  },\n  componentName\n);\n\nconst loaderRadial = {\n  ...helperTheme,\n\n  [compVars.animationDuration]: '2s',\n  [compVars.animationTimingFunction]: 'linear',\n  [compVars.animationIterationCount]: 'infinite',\n  [compVars.spinnerBorderStyle]: 'solid',\n  [compVars.spinnerBorderWidth]: '0.2em',\n  [compVars.spinnerBorderRadius]: '50%',\n  [compVars.spinnerQuadrant1Color]: helperRefs.spinnerColor,\n  [compVars.spinnerQuadrant2Color]: 'transparent',\n  [compVars.spinnerQuadrant3Color]: helperRefs.spinnerColor,\n  [compVars.spinnerQuadrant4Color]: 'transparent',\n\n  size: {\n    xs: { [compVars.spinnerSize]: '20px' },\n    sm: { [compVars.spinnerSize]: '30px' },\n    md: { [compVars.spinnerSize]: '40px' },\n    lg: { [compVars.spinnerSize]: '60px' },\n    xl: { [compVars.spinnerSize]: '80px' },\n  },\n\n  _hidden: {\n    [compVars.hostDisplay]: 'none',\n  },\n};\n\nexport default loaderRadial;\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","import { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  observeAttributes,\n  observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport {\n  resetInputLabelPosition,\n  resetInputCursor,\n  resetInputPlaceholder,\n  resetInputReadonlyStyle,\n  useHostExternalPadding,\n  inputFloatingLabelStyle,\n} from '@descope-ui/common/theme-helpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n  portalMixin,\n  proxyInputMixin,\n} from '@descope-ui/common/components-mixins';\n\nexport const componentName = getComponentName('combo-box');\n\nconst ComboBoxMixin = (superclass) =>\n  class ComboBoxMixinClass extends superclass {\n    static get observedAttributes() {\n      return ['label-type'];\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    #renderItem = ({ displayName, value, label }) => {\n      return `<span data-name=\"${label}\" data-id=\"${value}\">${\n        displayName || label\n      }</span>`;\n    };\n\n    #data;\n\n    get defaultValue() {\n      return this.getAttribute('default-value');\n    }\n\n    get renderItem() {\n      return this.#renderItem;\n    }\n\n    set renderItem(renderFn) {\n      this.#renderItem = renderFn;\n      this.renderItems();\n    }\n\n    set renderer(fn) {\n      // fn takes (root, comboBox, model) as arguments\n      this.baseElement.renderer = fn;\n    }\n\n    get loading() {\n      return this.getAttribute('loading') === 'true';\n    }\n\n    set loading(val) {\n      if (val) {\n        this.setAttribute('loading', 'true');\n      } else {\n        this.removeAttribute('loading');\n      }\n    }\n\n    get data() {\n      if (this.#data) return this.#data;\n\n      const dataAttr = this.getAttribute('data');\n\n      if (dataAttr) {\n        try {\n          const data = JSON.parse(dataAttr);\n          if (this.isValidDataType(data)) {\n            return data;\n          }\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error(\n            'could not parse data string from attribute \"data\" -',\n            e.message,\n          );\n        }\n      }\n\n      return [];\n    }\n\n    set data(data) {\n      if (this.isValidDataType(data)) {\n        this.#data = data;\n        this.renderItems();\n      }\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    isValidDataType(data) {\n      const isValid = Array.isArray(data);\n      if (!isValid) {\n        // eslint-disable-next-line no-console\n        console.error('data must be an array, received:', data);\n      }\n\n      return isValid;\n    }\n\n    getItemsTemplate() {\n      return this.data?.reduce?.(\n        (acc, item) => acc + (this.renderItem?.(item || {}) || ''),\n        '',\n      );\n    }\n\n    renderItems() {\n      if (this.#data || this.getAttribute('data')) {\n        const template = this.getItemsTemplate();\n        this.innerHTML = template;\n      }\n    }\n\n    get hasDynamicData() {\n      return this.getAttribute('has-dynamic-data') === 'true';\n    }\n\n    get shouldSelectItemOnItemsChange() {\n      return !this.hasDynamicData || this.allowCustomValue;\n    }\n\n    handleSelectedItem() {\n      const { selectedItem } = this.baseElement;\n      const currentSelected = selectedItem?.['data-id'];\n\n      // If the selected item is still a child, there's no need to update the value\n      if (selectedItem && Array.from(this.children).includes(selectedItem)) {\n        return;\n      }\n\n      // if previously selected item ID exists in current children, set it as selected\n      if (currentSelected && this.shouldSelectItemOnItemsChange) {\n        this.value = currentSelected;\n      }\n\n      // otherwise, if default value is specified, set default value as selected item\n      if (!this.value) {\n        this.setDefaultValue();\n      }\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    customValueTransformFn(val) {\n      return val;\n    }\n\n    // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the\n    // field that it searches the value, and the finaly display value of the input.\n    // We provide a custom transform function to override that behavior.\n    setComboBoxDescriptor() {\n      const valueDescriptor = Object.getOwnPropertyDescriptor(\n        this.inputElement.constructor.prototype,\n        'value',\n      );\n\n      const comboBox = this;\n\n      Object.defineProperties(this.inputElement, {\n        value: {\n          ...valueDescriptor,\n          set(val) {\n            if (\n              !comboBox.baseElement.items?.length &&\n              !comboBox.allowCustomValue\n            ) {\n              return;\n            }\n\n            const transformedValue = comboBox.customValueTransformFn(val) || '';\n\n            if (transformedValue === this.value) {\n              return;\n            }\n\n            valueDescriptor.set.call(this, transformedValue);\n          },\n        },\n      });\n    }\n\n    // vaadin api is to set props on their combo box node,\n    // in order to avoid it, we are passing the children of this component\n    // to the items & renderer props, so it will be used as the combo box items\n    #onChildrenChange() {\n      const items = Array.from(this.children);\n\n      // we want the data-name attribute to be accessible as an object attribute\n      items.forEach((node) => {\n        Object.defineProperty(node, 'data-name', {\n          value: node.getAttribute('data-name'),\n          configurable: true,\n          writable: true,\n        });\n        Object.defineProperty(node, 'data-id', {\n          value: node.getAttribute('data-id'),\n          configurable: true,\n          writable: true,\n        });\n      });\n\n      this.baseElement.items = items;\n      setTimeout(() => {\n        // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden\n        this.handleSelectedItem();\n      }, 0);\n    }\n\n    // the default vaadin behavior is to attach the overlay to the body when opened\n    // we do not want that because it's difficult to style the overlay in this way\n    // so we override it to open inside the shadow DOM\n    #overrideOverlaySettings() {\n      const overlay = this.baseElement.shadowRoot.querySelector(\n        'vaadin-combo-box-overlay',\n      );\n      overlay._attachOverlay = () => {\n        overlay.bringToFront();\n      };\n      overlay._detachOverlay = () => {};\n      overlay._enterModalState = () => {};\n    }\n\n    #overrideRenderer() {\n      // use vaadin combobox custom renderer to render options as HTML\n      // and not via default renderer, which renders only the data-name's value\n      // in its own HTML template\n      this.baseElement.renderer = (root, combo, model) => {\n        // eslint-disable-next-line no-param-reassign\n        root.innerHTML = model.item.outerHTML;\n      };\n    }\n\n    #disableDataProviderFilterEventIfNeeded() {\n      if (this.hasDynamicData) {\n        // For the autocomplete field, we don't want to trigger the data provider filter changed event\n        // because it changes the loading state on every keystroke, making the overlay open and close\n        // on every keystroke, causing a flickering effect in the loading state.\n        this.baseElement._dataProviderFilterChanged = () => {};\n      }\n    }\n\n    init() {\n      super.init?.();\n\n      // eslint-disable-next-line func-names\n      this.getValidity = function () {\n        if (!this.value && this.isRequired) {\n          return {\n            valueMissing: true,\n          };\n        }\n        return {};\n      };\n\n      this.#overrideRenderer();\n      this.#disableDataProviderFilterEventIfNeeded();\n\n      // This is a workaround for a problem we have in Console App, where in ScreenBuilder - the inputElement is not ready when trying to\n      // set the component's descriptor and override the overlay settings.\n      // THIS IS A PROBLEM WITH THE CONSOLE APP THAT NEEDS TO BE RESOLVED. Until then, we use this workaround.\n      setTimeout(() => {\n        this.setComboBoxDescriptor();\n        this.#overrideOverlaySettings();\n      });\n\n      // Set up observers - order matters here since renderItems can clear innerHTML\n      observeAttributes(this, this.renderItems.bind(this), {\n        includeAttrs: ['data'],\n      });\n      observeChildren(this, this.#onChildrenChange.bind(this));\n\n      this.setDefaultValue();\n\n      // Using \"value-changed\" event instead of \"selected-item-changed\" event to avoid\n      // the issue of the value not being updated in the input field when the user enter a custom value\n      this.baseElement.addEventListener('value-changed', () => {\n        this.dispatchEvent(\n          new Event('input', { bubbles: true, composed: true }),\n        );\n      });\n\n      this.baseElement.addEventListener('filter-changed', (e) => {\n        this.dispatchEvent(\n          new CustomEvent('filter-changed', {\n            bubbles: true,\n            composed: true,\n            detail: e.detail,\n          }),\n        );\n      });\n    }\n\n    onLabelClick() {\n      if (this.isReadOnly || this.isDisabled) {\n        return;\n      }\n      this.focus();\n      if (!this.autoOpenDisabled) {\n        this.setAttribute('opened', 'true');\n      }\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (oldValue !== newValue) {\n        if (attrName === 'label-type') {\n          if (newValue === 'floating') {\n            this.addEventListener('click', this.onLabelClick);\n          } else {\n            this.removeEventListener('click', this.onLabelClick);\n          }\n        }\n      }\n    }\n\n    setDefaultValue() {\n      if (this.defaultValue) {\n        this.value = this.defaultValue;\n      }\n    }\n\n    #getChildToSelect(val) {\n      return this.baseElement.items?.find((item) => item['data-id'] === val);\n    }\n\n    #preventSelectedItemChangeEventIfNeeded(val, selectedChild) {\n      // If the actual value didn't change, but the selected item did (the element changed),\n      // we want to stop the event propagation since it's not a real change\n      const shouldPreventItemChangeEvent =\n        val === this.value && selectedChild !== this.baseElement.selectedItem;\n      if (shouldPreventItemChangeEvent) {\n        this.baseElement.addEventListener(\n          'selected-item-changed',\n          (e) => {\n            e.stopImmediatePropagation();\n          },\n          { once: true, capture: true },\n        );\n      }\n    }\n\n    set value(val) {\n      const selectedChild = this.#getChildToSelect(val);\n      this.#preventSelectedItemChangeEventIfNeeded(val, selectedChild);\n      if (val && selectedChild) {\n        this.baseElement.selectedItem = selectedChild;\n      } else if (!selectedChild && this.allowCustomValue) {\n        this.baseElement.value = val;\n      } else {\n        this.baseElement.selectedItem = undefined;\n      }\n    }\n\n    get value() {\n      return this.baseElement.selectedItem?.['data-id'] || this.allowCustomValue\n        ? this.baseElement.__data.value || ''\n        : '';\n    }\n\n    get allowCustomValue() {\n      return this.getAttribute('allow-custom-value') === 'true';\n    }\n\n    get autoOpenDisabled() {\n      return this.getAttribute('auto-open-disabled') === 'true';\n    }\n  };\n\nconst {\n  host,\n  inputField,\n  inputElement,\n  placeholder,\n  toggle,\n  clearButton,\n  label,\n  requiredIndicator,\n  helperText,\n  errorMessage,\n  loader,\n  overlayContent,\n} = {\n  host: { selector: () => ':host' },\n  inputField: { selector: '::part(input-field)' },\n  inputElement: { selector: 'input' },\n  placeholder: { selector: '> input:placeholder-shown' },\n  toggle: { selector: '::part(toggle-button)' },\n  clearButton: { selector: '::part(clear-button)' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: {\n    selector: '[required]::part(required-indicator)::after',\n  },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n  loader: { selector: 'vaadin-combo-box-overlay::part(loader)' },\n  overlayContent: { selector: 'vaadin-combo-box-overlay::part(content)' },\n};\n\nexport const ComboBoxClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      // we apply font-size also on the host so we can set its width with em\n      fontSize: [{}, host],\n      fontFamily: [label, placeholder, inputField, helperText, errorMessage],\n      labelFontSize: { ...label, property: 'font-size' },\n      labelFontWeight: { ...label, property: 'font-weight' },\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n      ],\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: {\n        ...errorMessage,\n        property: 'padding-inline-start',\n      },\n      errorMessageIconRepeat: {\n        ...errorMessage,\n        property: 'background-repeat',\n      },\n      errorMessageIconPosition: {\n        ...errorMessage,\n        property: 'background-position',\n      },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n      inputHeight: { ...inputField, property: 'height' },\n      inputBackgroundColor: { ...inputField, property: 'background-color' },\n      inputBorderColor: { ...inputField, property: 'border-color' },\n      inputBorderWidth: { ...inputField, property: 'border-width' },\n      inputBorderStyle: { ...inputField, property: 'border-style' },\n      inputBorderRadius: { ...inputField, property: 'border-radius' },\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      inputValueTextColor: { ...inputField, property: 'color' },\n      inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n      inputDropdownButtonCursor: [\n        { ...toggle, property: 'cursor' },\n        { ...clearButton, property: 'cursor' },\n      ],\n      inputDropdownButtonColor: [\n        { ...toggle, property: 'color' },\n        { ...clearButton, property: 'color' },\n      ],\n      inputDropdownButtonSize: [\n        { ...toggle, property: 'font-size' },\n        { ...clearButton, property: 'font-size' },\n      ],\n      inputDropdownButtonOffset: [\n        { ...toggle, property: 'margin-right' },\n        { ...toggle, property: 'margin-left' },\n      ],\n      inputOutlineColor: { ...inputField, property: 'outline-color' },\n      inputOutlineWidth: { ...inputField, property: 'outline-width' },\n      inputOutlineStyle: { ...inputField, property: 'outline-style' },\n      inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n      inputHorizontalPadding: [\n        { ...inputElement, property: 'padding-left' },\n        { ...inputElement, property: 'padding-right' },\n      ],\n\n      labelPosition: { ...label, property: 'position' },\n      labelTopPosition: { ...label, property: 'top' },\n      labelHorizontalPosition: [\n        { ...label, property: 'left' },\n        { ...label, property: 'right' },\n      ],\n      inputTransformY: { ...label, property: 'transform' },\n      inputTransition: { ...label, property: 'transition' },\n      marginInlineStart: { ...label, property: 'margin-inline-start' },\n      placeholderOpacity: { ...placeholder, property: 'opacity' },\n      inputVerticalAlignment: { ...inputField, property: 'align-items' },\n      valueInputHeight: { ...inputElement, property: 'height' },\n      valueInputMarginBottom: { ...inputElement, property: 'margin-bottom' },\n\n      // we need to use the variables from the portal mixin\n      // so we need to use an arrow function on the selector\n      // for that to work, because ComboBox is not available\n      // at this time.\n      overlayBackground: {\n        property: () => ComboBoxClass.cssVarList.overlay.backgroundColor,\n      },\n      overlayTextColor: {\n        property: () => ComboBoxClass.cssVarList.overlay.textColor,\n      },\n      overlayBorder: {\n        property: () => ComboBoxClass.cssVarList.overlay.border,\n      },\n      overlayFontSize: {\n        property: () => ComboBoxClass.cssVarList.overlay.fontSize,\n      },\n      overlayFontFamily: {\n        property: () => ComboBoxClass.cssVarList.overlay.fontFamily,\n      },\n      overlayCursor: {\n        property: () => ComboBoxClass.cssVarList.overlay.cursor,\n      },\n      overlayItemBoxShadow: {\n        property: () => ComboBoxClass.cssVarList.overlay.itemBoxShadow,\n      },\n      overlayItemPaddingInlineStart: {\n        property: () => ComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,\n      },\n      overlayItemPaddingInlineEnd: {\n        property: () => ComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,\n      },\n      overlayCheckmarkDisplay: {\n        property: () => ComboBoxClass.cssVarList.overlay.checkmarkDisplay,\n      },\n      overlaySelectedItemBackground: {\n        property: () => ComboBoxClass.cssVarList.overlay.selectedItemBackground,\n      },\n      overlaySelectedItemHoverBackground: {\n        property: () =>\n          ComboBoxClass.cssVarList.overlay.selectedItemHoverBackground,\n      },\n      overlaySelectedItemFocusBackground: {\n        property: () =>\n          ComboBoxClass.cssVarList.overlay.selectedItemFocusBackground,\n      },\n      overlayItemHoverBackground: {\n        property: () => ComboBoxClass.cssVarList.overlay.itemHoverBackground,\n      },\n      overlayItemFocusBackground: {\n        property: () => ComboBoxClass.cssVarList.overlay.itemFocusBackground,\n      },\n    },\n  }),\n  draggableMixin,\n  portalMixin({\n    name: 'overlay',\n    selector: '',\n    mappings: {\n      backgroundColor: [\n        { selector: 'vaadin-combo-box-scroller' },\n        { selector: 'vaadin-combo-box-overlay::part(overlay)' },\n      ],\n      minHeight: { selector: 'vaadin-combo-box-overlay' },\n      margin: { selector: 'vaadin-combo-box-overlay' },\n      cursor: { selector: 'vaadin-combo-box-item' },\n      fontFamily: { selector: 'vaadin-combo-box-item' },\n      textColor: { selector: 'vaadin-combo-box-item', property: 'color' },\n      fontSize: { selector: 'vaadin-combo-box-item' },\n      itemBoxShadow: {\n        selector: 'vaadin-combo-box-item',\n        property: 'box-shadow',\n      },\n      itemPaddingInlineStart: {\n        selector: 'vaadin-combo-box-item',\n        property: 'padding-inline-start',\n      },\n      itemPaddingInlineEnd: {\n        selector: 'vaadin-combo-box-item',\n        property: 'padding-inline-end',\n      },\n      checkmarkDisplay: {\n        selector: 'vaadin-combo-box-item::part(checkmark)',\n        property: 'display',\n      },\n      selectedItemBackground: {\n        selector: 'vaadin-combo-box-item[selected]',\n        property: 'background-color',\n      },\n      selectedItemHoverBackground: {\n        selector: 'vaadin-combo-box-item[selected]:hover:not([disabled])',\n        property: 'background-color',\n      },\n      selectedItemFocusBackground: {\n        selector: 'vaadin-combo-box-item[selected][focused]:not([disabled])',\n        property: 'background-color',\n      },\n      itemHoverBackground: {\n        selector: 'vaadin-combo-box-item:hover:not([selected]):not([disabled])',\n        property: 'background-color',\n      },\n      itemFocusBackground: {\n        selector:\n          'vaadin-combo-box-item[focused]:not([selected]):not([disabled])',\n        property: 'background-color',\n      },\n\n      loaderTop: { ...loader, property: 'top' },\n      loaderLeft: { ...loader, property: 'left' },\n      loaderRight: { ...loader, property: 'right' },\n      loaderMargin: { ...loader, property: 'margin' },\n      loaderWidth: { ...loader, property: 'width' },\n      loaderHeight: { ...loader, property: 'height' },\n      loaderBorder: { ...loader, property: 'border' },\n      loaderBorderColor: { ...loader, property: 'border-color' },\n      loaderBorderRadius: { ...loader, property: 'border-radius' },\n      contentHeight: { ...overlayContent, property: 'height' },\n      contentOpacity: { ...overlayContent, property: 'opacity' },\n      scrollerMinHeight: {\n        selector: 'vaadin-combo-box-scroller',\n        property: 'min-height',\n      },\n    },\n    forward: {\n      include: false,\n      attributes: ['size'],\n    },\n  }),\n  proxyInputMixin({\n    proxyProps: ['selectionStart'],\n    inputEvent: 'value-changed',\n  }),\n  componentNameValidationMixin,\n  ComboBoxMixin,\n)(\n  createProxy({\n    slots: ['', 'prefix'],\n    wrappedEleName: 'vaadin-combo-box',\n    style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\tbox-sizing: border-box;\n\t\t\t-webkit-mask-image: none;\n\t\t}\n\t\t${useHostExternalPadding(ComboBoxClass.cssVarList)}\n\t\t${resetInputReadonlyStyle('vaadin-combo-box')}\n\t\t${resetInputPlaceholder('vaadin-combo-box')}\n\t\t${resetInputCursor('vaadin-combo-box')}\n\n\t\tvaadin-combo-box {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tvaadin-combo-box::before {\n\t\t\theight: initial;\n\t\t}\n\t\tvaadin-combo-box [slot=\"input\"] {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tvaadin-combo-box::part(input-field) {\n\t\t\tpadding: 0;\n\t\t\tbox-shadow: none;\n\t\t}\n\n    vaadin-combo-box::part(toggle-button),\n    vaadin-combo-box::part(clear-button) {\n      align-self: center;\n    }\n\n    vaadin-combo-box[hide-toggle-button=\"true\"]::part(toggle-button) {\n      display: none;\n    }\n\n    vaadin-combo-box[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n      opacity: 0;\n    }\n    vaadin-combo-box[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n      opacity: 0;\n    }\n\n    ${resetInputLabelPosition('vaadin-combo-box')}\n    ${inputFloatingLabelStyle()}\n\t\t`,\n    // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property\n    // with the same name. Including it will cause Vaadin to calculate NaN size,\n    // and reset items to an empty array, and opening the list box with no items\n    // to display.\n    excludeAttrsSync: ['tabindex', 'size', 'data', 'loading', 'style'],\n    componentName,\n    includeForwardProps: ['items', 'renderer', 'selectedItem'],\n  }),\n);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\n\nconst componentName = getComponentName('input-wrapper');\nconst globalRefs = getThemeRefs(globals);\n\nconst [theme, refs, vars] = createHelperVars(\n  {\n    labelTextColor: globalRefs.colors.surface.dark,\n    labelFontSize: '14px', // not taken from globals as it is fixed in all inputs\n    labelFontWeight: '500', // not taken from globals as it is fixed in all inputs\n    valueTextColor: globalRefs.colors.surface.contrast,\n    placeholderTextColor: globalRefs.colors.surface.dark,\n    requiredIndicator: \"'*'\",\n    helperTextColor: globalRefs.colors.surface.dark,\n    errorMessageTextColor: globalRefs.colors.error.main,\n    successMessageTextColor: globalRefs.colors.success.main,\n\n    borderWidth: globalRefs.border.xs,\n    borderRadius: globalRefs.radius.xs,\n    borderColor: 'transparent',\n\n    outlineWidth: globalRefs.border.sm,\n    outlineStyle: 'solid',\n    outlineColor: 'transparent',\n    outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes\n\n    minWidth: '10em',\n    toggleButtonSize: '1.5em',\n    inputIconSize: '1em',\n    inputHeight: '3em',\n    horizontalPadding: '0.5em',\n    verticalPadding: '0.5em',\n\n    textAlign: 'start',\n\n    backgroundColor: globalRefs.colors.surface.main,\n\n    fontFamily: globalRefs.fonts.font1.family,\n\n    direction: globalRefs.direction,\n\n    overlayOpacity: '0.3',\n\n    errorMessageIcon: '',\n    errorMessageIconSize: '0',\n    errorMessageIconPadding: '0',\n    errorMessageIconPosition: '0 0.4em',\n    errorMessageFontSize: '0.8125rem',\n    errorMessageIconRepeat: 'no-repeat',\n    errorMessageIconRepeat: 'no-repeat',\n\n    size: {\n      xs: { fontSize: '12px', chipFontSize: '10px' },\n      sm: { fontSize: '14px', chipFontSize: '12px' },\n      md: { fontSize: '16px', chipFontSize: '14px' },\n      lg: { fontSize: '18px', chipFontSize: '16px' },\n    },\n\n    labelType: {\n      static: {\n        valueInputHeight: '3em',\n        valueInputMarginBottom: 'auto',\n      },\n      floating: {\n        labelPosition: 'absolute',\n        labelTopPosition: '0',\n        labelHorizontalPosition: '0.9em',\n        labelFontSize: '1em',\n        placeholderOpacity: 0,\n        inputHeight: '3.5em',\n        inputVerticalAlignment: 'flex-end',\n        inputTransformY: 'translateY(1.55em)',\n        inputTransition: 'all 75ms ease-in-out',\n        marginInlineStart: '0',\n        valueInputHeight: '1.5702em',\n        valueInputMarginBottom: '0.5em',\n\n        _focused: {\n          labelFontSize: '0.75em',\n          inputTransformY: 'translateY(1.05em)',\n          labelFontWeight: '400',\n          placeholderOpacity: 1,\n        },\n\n        _readOnly: {\n          placeholderOpacity: 0,\n        },\n\n        _hasValue: {\n          inputTransformY: 'translateY(1.05em)',\n          labelFontSize: '0.75em',\n          labelFontWeight: '400',\n        },\n      },\n    },\n\n    _fullWidth: {\n      width: '100%',\n    },\n\n    _focused: {\n      outlineColor: globalRefs.colors.surface.light,\n      _invalid: {\n        outlineColor: globalRefs.colors.error.main,\n      },\n    },\n\n    _bordered: {\n      outlineWidth: globalRefs.border.xs,\n      borderColor: globalRefs.colors.surface.light,\n      borderStyle: 'solid',\n      _invalid: {\n        borderColor: globalRefs.colors.error.main,\n      },\n    },\n\n    _disabled: {\n      labelTextColor: globalRefs.colors.surface.light,\n      borderColor: globalRefs.colors.surface.light,\n      valueTextColor: globalRefs.colors.surface.light,\n      placeholderTextColor: globalRefs.colors.surface.light,\n      helperTextColor: globalRefs.colors.surface.light,\n      backgroundColor: globalRefs.colors.surface.main,\n    },\n  },\n  componentName,\n);\n\nexport { refs, vars };\nexport default theme;\n","import globals from '@descope-ui/theme-globals';\nimport { ComboBoxClass } from './component/ComboBoxClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = ComboBoxClass.cssVarList;\n\nexport const comboBox = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.inputDropdownButtonColor]: globalRefs.colors.surface.dark,\n  [vars.inputDropdownButtonCursor]: 'pointer',\n  [vars.inputDropdownButtonSize]: refs.toggleButtonSize,\n  [vars.inputDropdownButtonOffset]: globalRefs.spacing.xs,\n  [vars.overlayItemPaddingInlineStart]: globalRefs.spacing.xs,\n  [vars.overlayItemPaddingInlineEnd]: globalRefs.spacing.lg,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  _readonly: {\n    [vars.inputDropdownButtonCursor]: 'default',\n  },\n\n  // Overlay theme exposed via the component:\n  [vars.overlayFontSize]: refs.fontSize,\n  [vars.overlayFontFamily]: refs.fontFamily,\n  [vars.overlayCursor]: 'pointer',\n  [vars.overlayItemBoxShadow]: 'none',\n  [vars.overlayBackground]: refs.backgroundColor,\n  [vars.overlayTextColor]: refs.valueTextColor,\n  [vars.overlayCheckmarkDisplay]: 'initial',\n  [vars.overlaySelectedItemBackground]: 'initial',\n  [vars.overlaySelectedItemHoverBackground]:\n    globalRefs.colors.primary.highlight,\n  [vars.overlaySelectedItemFocusBackground]:\n    globalRefs.colors.primary.highlight,\n  [vars.overlayItemHoverBackground]: globalRefs.colors.primary.highlight,\n  [vars.overlayItemFocusBackground]: globalRefs.colors.primary.highlight,\n\n  // Overlay direct theme:\n  [vars.overlay.minHeight]: '400px',\n  [vars.overlay.margin]: '0',\n\n  [vars.overlay.contentHeight]: '100%',\n  [vars.overlay.contentOpacity]: '1',\n  [vars.overlay.scrollerMinHeight]: '1px',\n  _loading: {\n    [vars.overlay.loaderTop]: '50%',\n    [vars.overlay.loaderLeft]: '50%',\n    [vars.overlay.loaderRight]: 'auto',\n    // Margin has to be negative to center the loader, \"transform\" can't be used because the animation uses it\n    // Margin has to be half of the width/height of the loader to center it\n    [vars.overlay.loaderMargin]: '-15px 0 0 -15px',\n    [vars.overlay.loaderWidth]: '30px',\n    [vars.overlay.loaderHeight]: '30px',\n    [vars.overlay.loaderBorder]: '2px solid transparent',\n    [vars.overlay.loaderBorderColor]:\n      `${globalRefs.colors.primary.highlight} ${globalRefs.colors.primary.highlight} ${globalRefs.colors.primary.main} ${globalRefs.colors.primary.main}`,\n    [vars.overlay.loaderBorderRadius]: '50%',\n    [vars.overlay.contentHeight]: '100px',\n    [vars.overlay.scrollerMinHeight]: '100px',\n    [vars.overlay.contentOpacity]: '0',\n  },\n};\n\nexport default comboBox;\nexport { vars };\n","export default [\n  // United States should be the first option\n  {\n    name: 'United States',\n    dialCode: '+1',\n    code: 'US',\n  },\n  ...[\n    {\n      name: 'Afghanistan',\n      dialCode: '+93',\n      code: 'AF',\n    },\n    {\n      name: 'Aland Islands',\n      dialCode: '+358',\n      code: 'AX',\n    },\n    {\n      name: 'Albania',\n      dialCode: '+355',\n      code: 'AL',\n    },\n    {\n      name: 'Algeria',\n      dialCode: '+213',\n      code: 'DZ',\n    },\n    {\n      name: 'AmericanSamoa',\n      dialCode: '+1684',\n      code: 'AS',\n    },\n    {\n      name: 'Andorra',\n      dialCode: '+376',\n      code: 'AD',\n    },\n    {\n      name: 'Angola',\n      dialCode: '+244',\n      code: 'AO',\n    },\n    {\n      name: 'Anguilla',\n      dialCode: '+1264',\n      code: 'AI',\n    },\n    {\n      name: 'Antarctica',\n      dialCode: '+672',\n      code: 'AQ',\n    },\n    {\n      name: 'Antigua and Barbuda',\n      dialCode: '+1268',\n      code: 'AG',\n    },\n    {\n      name: 'Argentina',\n      dialCode: '+54',\n      code: 'AR',\n    },\n    {\n      name: 'Armenia',\n      dialCode: '+374',\n      code: 'AM',\n    },\n    {\n      name: 'Aruba',\n      dialCode: '+297',\n      code: 'AW',\n    },\n    {\n      name: 'Australia',\n      dialCode: '+61',\n      code: 'AU',\n    },\n    {\n      name: 'Austria',\n      dialCode: '+43',\n      code: 'AT',\n    },\n    {\n      name: 'Azerbaijan',\n      dialCode: '+994',\n      code: 'AZ',\n    },\n    {\n      name: 'Bahamas',\n      dialCode: '+1242',\n      code: 'BS',\n    },\n    {\n      name: 'Bahrain',\n      dialCode: '+973',\n      code: 'BH',\n    },\n    {\n      name: 'Bangladesh',\n      dialCode: '+880',\n      code: 'BD',\n    },\n    {\n      name: 'Barbados',\n      dialCode: '+1246',\n      code: 'BB',\n    },\n    {\n      name: 'Belarus',\n      dialCode: '+375',\n      code: 'BY',\n    },\n    {\n      name: 'Belgium',\n      dialCode: '+32',\n      code: 'BE',\n    },\n    {\n      name: 'Belize',\n      dialCode: '+501',\n      code: 'BZ',\n    },\n    {\n      name: 'Benin',\n      dialCode: '+229',\n      code: 'BJ',\n    },\n    {\n      name: 'Bermuda',\n      dialCode: '+1441',\n      code: 'BM',\n    },\n    {\n      name: 'Bhutan',\n      dialCode: '+975',\n      code: 'BT',\n    },\n    {\n      name: 'Bolivia, Plurinational State of',\n      dialCode: '+591',\n      code: 'BO',\n    },\n    {\n      name: 'Bosnia and Herzegovina',\n      dialCode: '+387',\n      code: 'BA',\n    },\n    {\n      name: 'Botswana',\n      dialCode: '+267',\n      code: 'BW',\n    },\n    {\n      name: 'Brazil',\n      dialCode: '+55',\n      code: 'BR',\n    },\n    {\n      name: 'British Indian Ocean Territory',\n      dialCode: '+246',\n      code: 'IO',\n    },\n    {\n      name: 'Brunei Darussalam',\n      dialCode: '+673',\n      code: 'BN',\n    },\n    {\n      name: 'Bulgaria',\n      dialCode: '+359',\n      code: 'BG',\n    },\n    {\n      name: 'Burkina Faso',\n      dialCode: '+226',\n      code: 'BF',\n    },\n    {\n      name: 'Burundi',\n      dialCode: '+257',\n      code: 'BI',\n    },\n    {\n      name: 'Cambodia',\n      dialCode: '+855',\n      code: 'KH',\n    },\n    {\n      name: 'Cameroon',\n      dialCode: '+237',\n      code: 'CM',\n    },\n    {\n      name: 'Canada',\n      dialCode: '+1',\n      code: 'CA',\n    },\n    {\n      name: 'Cape Verde',\n      dialCode: '+238',\n      code: 'CV',\n    },\n    {\n      name: 'Cayman Islands',\n      dialCode: '+345',\n      code: 'KY',\n    },\n    {\n      name: 'Central African Republic',\n      dialCode: '+236',\n      code: 'CF',\n    },\n    {\n      name: 'Chad',\n      dialCode: '+235',\n      code: 'TD',\n    },\n    {\n      name: 'Chile',\n      dialCode: '+56',\n      code: 'CL',\n    },\n    {\n      name: 'China',\n      dialCode: '+86',\n      code: 'CN',\n    },\n    {\n      name: 'Christmas Island',\n      dialCode: '+61',\n      code: 'CX',\n    },\n    {\n      name: 'Cocos (Keeling) Islands',\n      dialCode: '+61',\n      code: 'CC',\n    },\n    {\n      name: 'Colombia',\n      dialCode: '+57',\n      code: 'CO',\n    },\n    {\n      name: 'Comoros',\n      dialCode: '+269',\n      code: 'KM',\n    },\n    {\n      name: 'Congo',\n      dialCode: '+242',\n      code: 'CG',\n    },\n    {\n      name: 'Congo, The Democratic Republic of the Congo',\n      dialCode: '+243',\n      code: 'CD',\n    },\n    {\n      name: 'Cook Islands',\n      dialCode: '+682',\n      code: 'CK',\n    },\n    {\n      name: 'Costa Rica',\n      dialCode: '+506',\n      code: 'CR',\n    },\n    {\n      name: \"Cote d'Ivoire\",\n      dialCode: '+225',\n      code: 'CI',\n    },\n    {\n      name: 'Croatia',\n      dialCode: '+385',\n      code: 'HR',\n    },\n    {\n      name: 'Cuba',\n      dialCode: '+53',\n      code: 'CU',\n    },\n    {\n      name: 'Cyprus',\n      dialCode: '+357',\n      code: 'CY',\n    },\n    {\n      name: 'Czech Republic',\n      dialCode: '+420',\n      code: 'CZ',\n    },\n    {\n      name: 'Denmark',\n      dialCode: '+45',\n      code: 'DK',\n    },\n    {\n      name: 'Djibouti',\n      dialCode: '+253',\n      code: 'DJ',\n    },\n    {\n      name: 'Dominica',\n      dialCode: '+1767',\n      code: 'DM',\n    },\n    {\n      name: 'Dominican Republic',\n      dialCode: '+1849',\n      code: 'DO',\n    },\n    {\n      name: 'Ecuador',\n      dialCode: '+593',\n      code: 'EC',\n    },\n    {\n      name: 'Egypt',\n      dialCode: '+20',\n      code: 'EG',\n    },\n    {\n      name: 'El Salvador',\n      dialCode: '+503',\n      code: 'SV',\n    },\n    {\n      name: 'Equatorial Guinea',\n      dialCode: '+240',\n      code: 'GQ',\n    },\n    {\n      name: 'Eritrea',\n      dialCode: '+291',\n      code: 'ER',\n    },\n    {\n      name: 'Estonia',\n      dialCode: '+372',\n      code: 'EE',\n    },\n    {\n      name: 'Ethiopia',\n      dialCode: '+251',\n      code: 'ET',\n    },\n    {\n      name: 'Falkland Islands (Malvinas)',\n      dialCode: '+500',\n      code: 'FK',\n    },\n    {\n      name: 'Faroe Islands',\n      dialCode: '+298',\n      code: 'FO',\n    },\n    {\n      name: 'Fiji',\n      dialCode: '+679',\n      code: 'FJ',\n    },\n    {\n      name: 'Finland',\n      dialCode: '+358',\n      code: 'FI',\n    },\n    {\n      name: 'France',\n      dialCode: '+33',\n      code: 'FR',\n    },\n    {\n      name: 'French Guiana',\n      dialCode: '+594',\n      code: 'GF',\n    },\n    {\n      name: 'French Polynesia',\n      dialCode: '+689',\n      code: 'PF',\n    },\n    {\n      name: 'Gabon',\n      dialCode: '+241',\n      code: 'GA',\n    },\n    {\n      name: 'Gambia',\n      dialCode: '+220',\n      code: 'GM',\n    },\n    {\n      name: 'Georgia',\n      dialCode: '+995',\n      code: 'GE',\n    },\n    {\n      name: 'Germany',\n      dialCode: '+49',\n      code: 'DE',\n    },\n    {\n      name: 'Ghana',\n      dialCode: '+233',\n      code: 'GH',\n    },\n    {\n      name: 'Gibraltar',\n      dialCode: '+350',\n      code: 'GI',\n    },\n    {\n      name: 'Greece',\n      dialCode: '+30',\n      code: 'GR',\n    },\n    {\n      name: 'Greenland',\n      dialCode: '+299',\n      code: 'GL',\n    },\n    {\n      name: 'Grenada',\n      dialCode: '+1473',\n      code: 'GD',\n    },\n    {\n      name: 'Guadeloupe',\n      dialCode: '+590',\n      code: 'GP',\n    },\n    {\n      name: 'Guam',\n      dialCode: '+1671',\n      code: 'GU',\n    },\n    {\n      name: 'Guatemala',\n      dialCode: '+502',\n      code: 'GT',\n    },\n    {\n      name: 'Guernsey',\n      dialCode: '+44',\n      code: 'GG',\n    },\n    {\n      name: 'Guinea',\n      dialCode: '+224',\n      code: 'GN',\n    },\n    {\n      name: 'Guinea-Bissau',\n      dialCode: '+245',\n      code: 'GW',\n    },\n    {\n      name: 'Guyana',\n      dialCode: '+595',\n      code: 'GY',\n    },\n    {\n      name: 'Haiti',\n      dialCode: '+509',\n      code: 'HT',\n    },\n    {\n      name: 'Holy See (Vatican City State)',\n      dialCode: '+379',\n      code: 'VA',\n    },\n    {\n      name: 'Honduras',\n      dialCode: '+504',\n      code: 'HN',\n    },\n    {\n      name: 'Hong Kong',\n      dialCode: '+852',\n      code: 'HK',\n    },\n    {\n      name: 'Hungary',\n      dialCode: '+36',\n      code: 'HU',\n    },\n    {\n      name: 'Iceland',\n      dialCode: '+354',\n      code: 'IS',\n    },\n    {\n      name: 'India',\n      dialCode: '+91',\n      code: 'IN',\n    },\n    {\n      name: 'Indonesia',\n      dialCode: '+62',\n      code: 'ID',\n    },\n    {\n      name: 'Iran, Islamic Republic of Persian Gulf',\n      dialCode: '+98',\n      code: 'IR',\n    },\n    {\n      name: 'Iraq',\n      dialCode: '+964',\n      code: 'IQ',\n    },\n    {\n      name: 'Ireland',\n      dialCode: '+353',\n      code: 'IE',\n    },\n    {\n      name: 'Isle of Man',\n      dialCode: '+44',\n      code: 'IM',\n    },\n    {\n      name: 'Israel',\n      dialCode: '+972',\n      code: 'IL',\n    },\n    {\n      name: 'Italy',\n      dialCode: '+39',\n      code: 'IT',\n    },\n    {\n      name: 'Jamaica',\n      dialCode: '+1876',\n      code: 'JM',\n    },\n    {\n      name: 'Japan',\n      dialCode: '+81',\n      code: 'JP',\n    },\n    {\n      name: 'Jersey',\n      dialCode: '+44',\n      code: 'JE',\n    },\n    {\n      name: 'Jordan',\n      dialCode: '+962',\n      code: 'JO',\n    },\n    {\n      name: 'Kazakhstan',\n      dialCode: '+77',\n      code: 'KZ',\n    },\n    {\n      name: 'Kenya',\n      dialCode: '+254',\n      code: 'KE',\n    },\n    {\n      name: 'Kiribati',\n      dialCode: '+686',\n      code: 'KI',\n    },\n    {\n      name: \"Korea, Democratic People's Republic of Korea\",\n      dialCode: '+850',\n      code: 'KP',\n    },\n    {\n      name: 'Korea, Republic of South Korea',\n      dialCode: '+82',\n      code: 'KR',\n    },\n    {\n      name: 'Kuwait',\n      dialCode: '+965',\n      code: 'KW',\n    },\n    {\n      name: 'Kyrgyzstan',\n      dialCode: '+996',\n      code: 'KG',\n    },\n    {\n      name: 'Laos',\n      dialCode: '+856',\n      code: 'LA',\n    },\n    {\n      name: 'Latvia',\n      dialCode: '+371',\n      code: 'LV',\n    },\n    {\n      name: 'Lebanon',\n      dialCode: '+961',\n      code: 'LB',\n    },\n    {\n      name: 'Lesotho',\n      dialCode: '+266',\n      code: 'LS',\n    },\n    {\n      name: 'Liberia',\n      dialCode: '+231',\n      code: 'LR',\n    },\n    {\n      name: 'Libyan Arab Jamahiriya',\n      dialCode: '+218',\n      code: 'LY',\n    },\n    {\n      name: 'Liechtenstein',\n      dialCode: '+423',\n      code: 'LI',\n    },\n    {\n      name: 'Lithuania',\n      dialCode: '+370',\n      code: 'LT',\n    },\n    {\n      name: 'Luxembourg',\n      dialCode: '+352',\n      code: 'LU',\n    },\n    {\n      name: 'Macao',\n      dialCode: '+853',\n      code: 'MO',\n    },\n    {\n      name: 'Macedonia',\n      dialCode: '+389',\n      code: 'MK',\n    },\n    {\n      name: 'Madagascar',\n      dialCode: '+261',\n      code: 'MG',\n    },\n    {\n      name: 'Malawi',\n      dialCode: '+265',\n      code: 'MW',\n    },\n    {\n      name: 'Malaysia',\n      dialCode: '+60',\n      code: 'MY',\n    },\n    {\n      name: 'Maldives',\n      dialCode: '+960',\n      code: 'MV',\n    },\n    {\n      name: 'Mali',\n      dialCode: '+223',\n      code: 'ML',\n    },\n    {\n      name: 'Malta',\n      dialCode: '+356',\n      code: 'MT',\n    },\n    {\n      name: 'Marshall Islands',\n      dialCode: '+692',\n      code: 'MH',\n    },\n    {\n      name: 'Martinique',\n      dialCode: '+596',\n      code: 'MQ',\n    },\n    {\n      name: 'Mauritania',\n      dialCode: '+222',\n      code: 'MR',\n    },\n    {\n      name: 'Mauritius',\n      dialCode: '+230',\n      code: 'MU',\n    },\n    {\n      name: 'Mayotte',\n      dialCode: '+262',\n      code: 'YT',\n    },\n    {\n      name: 'Mexico',\n      dialCode: '+52',\n      code: 'MX',\n    },\n    {\n      name: 'Micronesia, Federated States of Micronesia',\n      dialCode: '+691',\n      code: 'FM',\n    },\n    {\n      name: 'Moldova',\n      dialCode: '+373',\n      code: 'MD',\n    },\n    {\n      name: 'Monaco',\n      dialCode: '+377',\n      code: 'MC',\n    },\n    {\n      name: 'Mongolia',\n      dialCode: '+976',\n      code: 'MN',\n    },\n    {\n      name: 'Montenegro',\n      dialCode: '+382',\n      code: 'ME',\n    },\n    {\n      name: 'Montserrat',\n      dialCode: '+1664',\n      code: 'MS',\n    },\n    {\n      name: 'Morocco',\n      dialCode: '+212',\n      code: 'MA',\n    },\n    {\n      name: 'Mozambique',\n      dialCode: '+258',\n      code: 'MZ',\n    },\n    {\n      name: 'Myanmar',\n      dialCode: '+95',\n      code: 'MM',\n    },\n    {\n      name: 'Namibia',\n      dialCode: '+264',\n      code: 'NA',\n    },\n    {\n      name: 'Nauru',\n      dialCode: '+674',\n      code: 'NR',\n    },\n    {\n      name: 'Nepal',\n      dialCode: '+977',\n      code: 'NP',\n    },\n    {\n      name: 'Netherlands',\n      dialCode: '+31',\n      code: 'NL',\n    },\n    {\n      name: 'Netherlands Antilles',\n      dialCode: '+599',\n      code: 'AN',\n    },\n    {\n      name: 'New Caledonia',\n      dialCode: '+687',\n      code: 'NC',\n    },\n    {\n      name: 'New Zealand',\n      dialCode: '+64',\n      code: 'NZ',\n    },\n    {\n      name: 'Nicaragua',\n      dialCode: '+505',\n      code: 'NI',\n    },\n    {\n      name: 'Niger',\n      dialCode: '+227',\n      code: 'NE',\n    },\n    {\n      name: 'Nigeria',\n      dialCode: '+234',\n      code: 'NG',\n    },\n    {\n      name: 'Niue',\n      dialCode: '+683',\n      code: 'NU',\n    },\n    {\n      name: 'Norfolk Island',\n      dialCode: '+672',\n      code: 'NF',\n    },\n    {\n      name: 'Northern Mariana Islands',\n      dialCode: '+1670',\n      code: 'MP',\n    },\n    {\n      name: 'Norway',\n      dialCode: '+47',\n      code: 'NO',\n    },\n    {\n      name: 'Oman',\n      dialCode: '+968',\n      code: 'OM',\n    },\n    {\n      name: 'Pakistan',\n      dialCode: '+92',\n      code: 'PK',\n    },\n    {\n      name: 'Palau',\n      dialCode: '+680',\n      code: 'PW',\n    },\n    {\n      name: 'Palestinian Territory, Occupied',\n      dialCode: '+970',\n      code: 'PS',\n    },\n    {\n      name: 'Panama',\n      dialCode: '+507',\n      code: 'PA',\n    },\n    {\n      name: 'Papua New Guinea',\n      dialCode: '+675',\n      code: 'PG',\n    },\n    {\n      name: 'Paraguay',\n      dialCode: '+595',\n      code: 'PY',\n    },\n    {\n      name: 'Peru',\n      dialCode: '+51',\n      code: 'PE',\n    },\n    {\n      name: 'Philippines',\n      dialCode: '+63',\n      code: 'PH',\n    },\n    {\n      name: 'Pitcairn',\n      dialCode: '+872',\n      code: 'PN',\n    },\n    {\n      name: 'Poland',\n      dialCode: '+48',\n      code: 'PL',\n    },\n    {\n      name: 'Portugal',\n      dialCode: '+351',\n      code: 'PT',\n    },\n    {\n      name: 'Qatar',\n      dialCode: '+974',\n      code: 'QA',\n    },\n    {\n      name: 'Romania',\n      dialCode: '+40',\n      code: 'RO',\n    },\n    {\n      name: 'Russia',\n      dialCode: '+7',\n      code: 'RU',\n    },\n    {\n      name: 'Rwanda',\n      dialCode: '+250',\n      code: 'RW',\n    },\n    {\n      name: 'Reunion',\n      dialCode: '+262',\n      code: 'RE',\n    },\n    {\n      name: 'Saint Barthelemy',\n      dialCode: '+590',\n      code: 'BL',\n    },\n    {\n      name: 'Saint Helena, Ascension and Tristan Da Cunha',\n      dialCode: '+290',\n      code: 'SH',\n    },\n    {\n      name: 'Saint Kitts and Nevis',\n      dialCode: '+1869',\n      code: 'KN',\n    },\n    {\n      name: 'Saint Lucia',\n      dialCode: '+1758',\n      code: 'LC',\n    },\n    {\n      name: 'Saint Martin',\n      dialCode: '+590',\n      code: 'MF',\n    },\n    {\n      name: 'Saint Pierre and Miquelon',\n      dialCode: '+508',\n      code: 'PM',\n    },\n    {\n      name: 'Saint Vincent and the Grenadines',\n      dialCode: '+1784',\n      code: 'VC',\n    },\n    {\n      name: 'Samoa',\n      dialCode: '+685',\n      code: 'WS',\n    },\n    {\n      name: 'San Marino',\n      dialCode: '+378',\n      code: 'SM',\n    },\n    {\n      name: 'Sao Tome and Principe',\n      dialCode: '+239',\n      code: 'ST',\n    },\n    {\n      name: 'Saudi Arabia',\n      dialCode: '+966',\n      code: 'SA',\n    },\n    {\n      name: 'Senegal',\n      dialCode: '+221',\n      code: 'SN',\n    },\n    {\n      name: 'Serbia',\n      dialCode: '+381',\n      code: 'RS',\n    },\n    {\n      name: 'Seychelles',\n      dialCode: '+248',\n      code: 'SC',\n    },\n    {\n      name: 'Sierra Leone',\n      dialCode: '+232',\n      code: 'SL',\n    },\n    {\n      name: 'Singapore',\n      dialCode: '+65',\n      code: 'SG',\n    },\n    {\n      name: 'Slovakia',\n      dialCode: '+421',\n      code: 'SK',\n    },\n    {\n      name: 'Slovenia',\n      dialCode: '+386',\n      code: 'SI',\n    },\n    {\n      name: 'Solomon Islands',\n      dialCode: '+677',\n      code: 'SB',\n    },\n    {\n      name: 'Somalia',\n      dialCode: '+252',\n      code: 'SO',\n    },\n    {\n      name: 'South Africa',\n      dialCode: '+27',\n      code: 'ZA',\n    },\n    {\n      name: 'South Sudan',\n      dialCode: '+211',\n      code: 'SS',\n    },\n    {\n      name: 'South Georgia and the South Sandwich Islands',\n      dialCode: '+500',\n      code: 'GS',\n    },\n    {\n      name: 'Spain',\n      dialCode: '+34',\n      code: 'ES',\n    },\n    {\n      name: 'Sri Lanka',\n      dialCode: '+94',\n      code: 'LK',\n    },\n    {\n      name: 'Sudan',\n      dialCode: '+249',\n      code: 'SD',\n    },\n    {\n      name: 'Suriname',\n      dialCode: '+597',\n      code: 'SR',\n    },\n    {\n      name: 'Svalbard and Jan Mayen',\n      dialCode: '+47',\n      code: 'SJ',\n    },\n    {\n      name: 'Swaziland',\n      dialCode: '+268',\n      code: 'SZ',\n    },\n    {\n      name: 'Sweden',\n      dialCode: '+46',\n      code: 'SE',\n    },\n    {\n      name: 'Switzerland',\n      dialCode: '+41',\n      code: 'CH',\n    },\n    {\n      name: 'Syrian Arab Republic',\n      dialCode: '+963',\n      code: 'SY',\n    },\n    {\n      name: 'Taiwan',\n      dialCode: '+886',\n      code: 'TW',\n    },\n    {\n      name: 'Tajikistan',\n      dialCode: '+992',\n      code: 'TJ',\n    },\n    {\n      name: 'Tanzania, United Republic of Tanzania',\n      dialCode: '+255',\n      code: 'TZ',\n    },\n    {\n      name: 'Thailand',\n      dialCode: '+66',\n      code: 'TH',\n    },\n    {\n      name: 'Timor-Leste',\n      dialCode: '+670',\n      code: 'TL',\n    },\n    {\n      name: 'Togo',\n      dialCode: '+228',\n      code: 'TG',\n    },\n    {\n      name: 'Tokelau',\n      dialCode: '+690',\n      code: 'TK',\n    },\n    {\n      name: 'Tonga',\n      dialCode: '+676',\n      code: 'TO',\n    },\n    {\n      name: 'Trinidad and Tobago',\n      dialCode: '+1868',\n      code: 'TT',\n    },\n    {\n      name: 'Tunisia',\n      dialCode: '+216',\n      code: 'TN',\n    },\n    {\n      name: 'Turkey',\n      dialCode: '+90',\n      code: 'TR',\n    },\n    {\n      name: 'Turkmenistan',\n      dialCode: '+993',\n      code: 'TM',\n    },\n    {\n      name: 'Turks and Caicos Islands',\n      dialCode: '+1649',\n      code: 'TC',\n    },\n    {\n      name: 'Tuvalu',\n      dialCode: '+688',\n      code: 'TV',\n    },\n    {\n      name: 'Uganda',\n      dialCode: '+256',\n      code: 'UG',\n    },\n    {\n      name: 'Ukraine',\n      dialCode: '+380',\n      code: 'UA',\n    },\n    {\n      name: 'United Arab Emirates',\n      dialCode: '+971',\n      code: 'AE',\n    },\n    {\n      name: 'United Kingdom',\n      dialCode: '+44',\n      code: 'GB',\n    },\n    {\n      name: 'Uruguay',\n      dialCode: '+598',\n      code: 'UY',\n    },\n    {\n      name: 'Uzbekistan',\n      dialCode: '+998',\n      code: 'UZ',\n    },\n    {\n      name: 'Vanuatu',\n      dialCode: '+678',\n      code: 'VU',\n    },\n    {\n      name: 'Venezuela, Bolivarian Republic of Venezuela',\n      dialCode: '+58',\n      code: 'VE',\n    },\n    {\n      name: 'Vietnam',\n      dialCode: '+84',\n      code: 'VN',\n    },\n    {\n      name: 'Virgin Islands, British',\n      dialCode: '+1284',\n      code: 'VG',\n    },\n    {\n      name: 'Virgin Islands, U.S.',\n      dialCode: '+1340',\n      code: 'VI',\n    },\n    {\n      name: 'Wallis and Futuna',\n      dialCode: '+681',\n      code: 'WF',\n    },\n    {\n      name: 'Yemen',\n      dialCode: '+967',\n      code: 'YE',\n    },\n    {\n      name: 'Zambia',\n      dialCode: '+260',\n      code: 'ZM',\n    },\n    {\n      name: 'Zimbabwe',\n      dialCode: '+263',\n      code: 'ZW',\n    },\n  ].sort((a, b) => (a.name < b.name ? -1 : 1)),\n];\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../../helpers/componentHelpers';\nimport CountryCodes from '../../CountryCodes';\nimport { comboBoxItem, parsePhoneNumber } from '../helpers';\nimport { AsYouType, parsePhoneNumberFromString } from 'libphonenumber-js/min';\n\nexport const componentName = getComponentName('phone-field-internal');\n\nconst commonAttrs = ['disabled', 'size', 'bordered', 'readonly'];\nconst countryAttrs = ['country-input-placeholder', 'default-code', 'restrict-countries'];\nconst phoneAttrs = ['phone-input-placeholder', 'maxlength', 'autocomplete', 'name'];\nconst labelTypeAttrs = ['label-type', 'country-input-label', 'label'];\nconst mapAttrs = {\n  'country-input-label': 'label',\n  'country-input-placeholder': 'placeholder',\n  'phone-input-placeholder': 'placeholder',\n};\n\nconst inputRelatedAttrs = [].concat(commonAttrs, countryAttrs, phoneAttrs, labelTypeAttrs);\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], inputRelatedAttrs);\n  }\n\n  #ayt;\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n    <div class=\"wrapper\">\n      <descope-combo-box\n        item-label-path=\"data-name\"\n        item-value-path=\"data-id\"\n      >\n      ${CountryCodes.map((item) => comboBoxItem(item)).join('')}\n      </descope-combo-box>\n      <div class=\"separator\"></div>\n      <descope-text-field type=\"tel\"></descope-text-field>\n    </div>\n    `;\n\n    this.comboBox = this.querySelector('descope-combo-box');\n    this.textField = this.querySelector('descope-text-field');\n\n    this.inputs = [this.comboBox, this.textField];\n\n    forwardAttrs(this, this.comboBox, { includeAttrs: ['label-type'] });\n    forwardAttrs(this, this.textField, { includeAttrs: ['label-type', 'required'] });\n\n    // override combo box setter to display dialCode value in input\n    this.comboBox.customValueTransformFn = (val) => {\n      const [, dialCode] = val?.split?.(' ') || [];\n      return dialCode;\n    };\n  }\n\n  // exposed from main component\n  get countryCodeInputData() {\n    return this.comboBox.items;\n  }\n\n  // exposed from main component\n  get countryCodeValue() {\n    return this.comboBox.shadowRoot.querySelector('input').value;\n  }\n\n  // exposed from main component\n  get phoneNumberInputEle() {\n    return this.textField.shadowRoot.querySelector('input');\n  }\n\n  get allowAlphanumericInput() {\n    return this.getAttribute('allow-alphanumeric-input') === 'true';\n  }\n\n  get defaultCode() {\n    return this.getAttribute('default-code');\n  }\n\n  get selectionStart() {\n    return this.textField.selectionStart;\n  }\n\n  get minLength() {\n    return parseInt(this.getAttribute('minlength'), 10) || 0;\n  }\n\n  get selectedCountryCode() {\n    return this.comboBox?.selectedItem?.getAttribute('data-country-code');\n  }\n\n  get restrictCountries() {\n    const attr = this.getAttribute('restrict-countries');\n    return attr?.split(',').filter(Boolean) || [];\n  }\n\n  get isFormatValue() {\n    return this.getAttribute('format-value') === 'true';\n  }\n\n  // `strict validation` enforces value parsing with libphonenumber-js\n  get isStrictValidation() {\n    return this.getAttribute('strict-validation') === 'true';\n  }\n\n  get value() {\n    if (!this.comboBox.value || !this.textField.value) {\n      return '';\n    }\n\n    const [countryCode, phoneNumber] = parsePhoneNumber(\n      `${this.comboBox.value}-${this.textField.value}`\n    );\n\n    return `${countryCode || this.comboBox.value}-${phoneNumber || this.textField.value}`;\n  }\n\n  set value(val) {\n    const [countryCode, nationalNumber] = parsePhoneNumber(val);\n\n    this.#setCountryCode(countryCode);\n    this.#setNationalNumber(nationalNumber);\n  }\n\n  init() {\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) this.inputs[1].focus();\n    });\n\n    super.init?.();\n\n    this.#initInputs();\n  }\n\n  getValidity() {\n    const countryCode = this.comboBox.value;\n    const nationalNumer = this.textField.value;\n\n    const isEmpty = !countryCode || !nationalNumer;\n    const isValidLength = nationalNumer && nationalNumer.length >= this.minLength;\n\n    if (this.isRequired && isEmpty) {\n      return { valueMissing: true };\n    }\n\n    if (this.value) {\n      if (!isValidLength) {\n        return { tooShort: true };\n      }\n\n      if (this.isStrictValidation && !this.#isValidParsedValue()) {\n        return { patternMismatch: true };\n      }\n    }\n\n    return {};\n  }\n\n  setSelectionRange(...args) {\n    this.textField.setSelectionRange(...args);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (attrName === 'default-code' && newValue) {\n        this.#handleDefaultCountryCode(newValue);\n      } else if (inputRelatedAttrs.includes(attrName)) {\n        const attr = mapAttrs[attrName] || attrName;\n\n        if (commonAttrs.includes(attrName)) {\n          if (!newValue) {\n            this.inputs.forEach((input) => input.removeAttribute(attr));\n          } else {\n            this.inputs.forEach((input) => input.setAttribute(attr, newValue));\n          }\n        } else if (countryAttrs.includes(attrName)) {\n          this.comboBox.setAttribute(attr, newValue);\n        } else if (phoneAttrs.includes(attrName)) {\n          this.textField.setAttribute(attr, newValue);\n        }\n      }\n\n      if (labelTypeAttrs.includes(attrName)) {\n        this.#handleLabelTypeAttrs(attrName, newValue);\n      }\n\n      if (attrName === 'restrict-countries') {\n        this.#updateComboBoxItems(this.restrictCountries);\n      }\n    }\n  }\n\n  #initInputs() {\n    // Sanitize phone input value to filter everything but digits\n    this.textField.addEventListener('input', (e) => {\n      if (!this.allowAlphanumericInput) {\n        const telDigitsRegExp = /^\\d$/;\n        const sanitizedInput = e.target.value\n          .split('')\n          .filter((char) => telDigitsRegExp.test(char))\n          .join('');\n        e.target.value = sanitizedInput;\n      }\n    });\n\n    this.handleFocusEventsDispatching(this.inputs);\n    this.handleInputEventDispatching();\n\n    // verify country code item against phone number pattern and replace if needed and country is allowed\n    // (e.g. +1 can be US or CA, depending on the pattern)\n    this.addEventListener('input', this.#handleSameCountryCodes.bind(this));\n  }\n\n  #setCountryCode(val) {\n    if (!val || val === this.selectedCountryCode) return;\n\n    let countryCodeItem = undefined;\n\n    if (this.value) {\n      // try to parse the phone number, and set country code item according to actual dial code (e.g. `+1` can be `US` or `CA`)\n      const code = this.#getCountryCodeByPhoneNumber(`${val}-${this.textField.value}`);\n      countryCodeItem = this.#getCountryByCodeId(code);\n    }\n\n    // in case country code item does not exist (for example: Parsed code is CA for +1 - but Canada is not allowed)\n    // then use the first option with same dial code (e.g. in that case - `US` for +1)\n    if (!countryCodeItem) {\n      countryCodeItem = this.#getCountryByDialCode(val);\n    }\n\n    // set country code item; in it doesn't exist in list - set `undefined`\n    this.comboBox.selectedItem = countryCodeItem;\n  }\n\n  #setNationalNumber(val) {\n    if (this.isFormatValue) {\n      val = this.#formatNationalNumber(val);\n    }\n\n    if (this.textField.value !== val) {\n      this.textField.value = val;\n    }\n  }\n\n  #formatNationalNumber(nationalNumber = '') {\n    // re-initialize AsYouType if country code is outdated\n    if (!this.#ayt || this.#ayt.country !== this.selectedCountryCode) {\n      this.#ayt = new AsYouType(this.selectedCountryCode);\n    }\n\n    // reset previous AsYouType input\n    this.#ayt.reset();\n\n    const formattedVal = this.#ayt.input(nationalNumber);\n\n    return formattedVal || nationalNumber;\n  }\n\n  #isValidParsedValue() {\n    const parsed = parsePhoneNumberFromString(this.value);\n\n    return (\n      !!parsed && // Parsed successfully (not undefined)\n      !!parsed.isValid?.() && // Parsed object is valid\n      !!parsed.country && // Parsed object with a country code\n      !!this.#isAllowedCountry(parsed.country) // Parsed with allowed country code\n    );\n  }\n\n  #isAllowedCountry(countryCode) {\n    if (!this.restrictCountries.length) {\n      return true;\n    }\n\n    return this.restrictCountries.includes(countryCode);\n  }\n\n  // return country item by dial code `data-id` (e.g. `+1`)\n  #getCountryByDialCode(dialCode) {\n    return this.comboBox.items?.find((c) => c.getAttribute('data-id') === dialCode) || undefined;\n  }\n\n  // return country item by country code `data-country-code` (e.g. `US`)\n  #getCountryByCodeId(countryCode) {\n    return this.comboBox.items?.find((c) => c.getAttribute('data-country-code') === countryCode);\n  }\n\n  #getCountryCodeByPhoneNumber(val) {\n    if (!val) return undefined;\n    const parsed = parsePhoneNumberFromString(val);\n    if (!parsed?.country) return undefined;\n    const foundCountryItem = this.#getCountryByCodeId(parsed.country);\n    return foundCountryItem?.getAttribute('data-country-code');\n  }\n\n  #updateComboBoxItems(restrictCountries) {\n    const items = restrictCountries.length\n      ? CountryCodes.filter((c) => restrictCountries.includes(c.code))\n      : CountryCodes;\n\n    this.querySelector('descope-combo-box').innerHTML = items\n      .map((item) => comboBoxItem(item))\n      .join('');\n  }\n\n  #handleDefaultCountryCode(countryCode) {\n    if (!this.comboBox.value) {\n      const countryCodeItem = this.#getCountryByCodeId(countryCode);\n      // When replacing the input component (inserting internal component into text-field) -\n      // Vaadin resets the input's value. We use setTimeout in order to make sure this happens\n      // after the reset.\n      if (countryCodeItem) {\n        setTimeout(() => {\n          this.comboBox.selectedItem = countryCodeItem;\n        });\n      }\n    }\n  }\n\n  #handleSameCountryCodes() {\n    if (!this.value) return;\n\n    const country = this.#getCountryCodeByPhoneNumber(this.value);\n\n    if (!country) return;\n\n    // re-set country code if needed (same coutnry code for different countries, e.g. +1 for US or CA)\n    if (this.selectedCountryCode !== country) {\n      const foundCountryItem = this.#getCountryByCodeId(country);\n      // if found country is defined in country list then set it, otherwise - clear phone number\n      if (foundCountryItem) {\n        this.comboBox.selectedItem = foundCountryItem;\n      }\n    }\n  }\n\n  #handleLabelTypeAttrs(attrName, newValue) {\n    // set or remove label attributes from inner text/combo components on `label-type` change\n    const attr = mapAttrs[attrName] || attrName;\n\n    if (attrName === 'label-type') {\n      this.#handleLabelTypeChange(newValue);\n    }\n    // on inner components label attr change - set label attributes for text/combo components\n    // only if label-type is `floating`\n    else if (this.getAttribute('label-type') === 'floating') {\n      if (attrName === 'country-input-label') {\n        this.comboBox.setAttribute(attr, newValue);\n      } else if (attrName === 'label') {\n        this.textField.setAttribute(attr, newValue);\n      }\n    }\n  }\n\n  #handleLabelTypeChange(newValue) {\n    if (newValue === 'floating') {\n      // on change to `floating` label - set inner components `label` and `placeholder`\n      this.comboBox.setAttribute('label', this.getAttribute('country-input-label') || '');\n      this.comboBox.setAttribute(\n        'placeholder',\n        this.getAttribute('country-input-placeholder') || ''\n      );\n      this.textField.setAttribute('label', this.getAttribute('label') || '');\n      this.textField.setAttribute(\n        'placeholder',\n        this.getAttribute('phone-input-placeholder') || ''\n      );\n    } else {\n      // for other cases - reset inner components label-type and labels\n      this.inputs.forEach((input) => input.removeAttribute('label'));\n    }\n  }\n}\n\nexport default PhoneFieldInternal;\n","import { componentName as descopeInternalComponentName } from './descope-phone-field-internal/PhoneFieldInternal';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n  createProxy,\n  createStyleMixin,\n  draggableMixin,\n  inputOverrideValidConstraintsMixin,\n  proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport CountryCodes from '../CountryCodes';\nimport {\n  resetInputCursor,\n  resetInputLabelPosition,\n  resetInputFieldDefaultWidth,\n  resetInputFieldInvalidBackgroundColor,\n  useHostExternalPadding,\n} from '../../../helpers/themeHelpers/resetHelpers';\n\nconst textVars = TextFieldClass.cssVarList;\nconst comboVars = ComboBoxClass.cssVarList;\n\nexport const componentName = getComponentName('phone-field');\n\nconst customMixin = (superclass) =>\n  class PhoneFieldMixinClass extends superclass {\n    static get CountryCodes() {\n      return CountryCodes;\n    }\n\n    init() {\n      super.init?.();\n\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n      \t\t`;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this.shadowRoot.host, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'bordered',\n          'minlength',\n          'maxlength',\n          'default-code',\n          'country-input-placeholder',\n          'phone-input-placeholder',\n          'disabled',\n          'restrict-countries',\n          'country-input-label',\n          'readonly',\n          'label',\n          'label-type',\n          'allow-alphanumeric-input',\n          'format-value',\n          'strict-validation',\n        ],\n      });\n    }\n\n    get countryCodeItems() {\n      return this.inputElement?.countryCodeValue;\n    }\n\n    get phoneNumberInputEle() {\n      return this.inputElement?.phoneNumberInputEle;\n    }\n\n    get countryCodeInputData() {\n      return this.inputElement?.countryCodeInputData;\n    }\n\n    get countryCodes() {\n      return Array.from(this.inputElement.countryCodeInputData).map((ele) =>\n        ele.getAttribute('data-country-code')\n      );\n    }\n  };\n\nconst {\n  host,\n  label,\n  requiredIndicator,\n  inputField,\n  internalAfter,\n  countryCodeInput,\n  phoneInput,\n  separator,\n  errorMessage,\n  helperText,\n} = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  inputField: { selector: '::part(input-field)' },\n  internalAfter: { selector: 'descope-phone-field-internal::after' },\n  phoneInput: { selector: () => 'descope-text-field' },\n  countryCodeInput: { selector: () => 'descope-combo-box' },\n  separator: { selector: 'descope-phone-field-internal .separator' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldClass = compose(\n  createStyleMixin({\n    mappings: {\n      fontSize: [\n        host,\n        inputField,\n        {\n          selector: TextFieldClass.componentName,\n          property: TextFieldClass.cssVarList.fontSize,\n        },\n        {\n          selector: ComboBoxClass.componentName,\n          property: ComboBoxClass.cssVarList.fontSize,\n        },\n      ],\n      fontFamily: [\n        label,\n        errorMessage,\n        helperText,\n        {\n          ...countryCodeInput,\n          property: ComboBoxClass.cssVarList.overlay.fontFamily,\n        },\n      ],\n      hostWidth: [\n        { ...host, property: 'width' },\n        { ...phoneInput, property: 'width' },\n        { ...countryCodeInput, property: '--vaadin-combo-box-overlay-width' },\n      ],\n      hostDirection: { ...host, property: 'direction' },\n\n      inputBorderStyle: [\n        { ...internalAfter, property: 'border-style' },\n        { ...separator, property: 'border-left-style' },\n      ],\n      inputBorderWidth: [\n        { ...internalAfter, property: 'border-width' },\n        { ...separator, property: 'border-left-width' },\n      ],\n      inputBorderColor: [\n        { ...internalAfter, property: 'border-color' },\n        { ...separator, property: 'border-left-color' },\n      ],\n      inputBorderRadius: [\n        { ...inputField, property: 'border-radius' },\n        { ...internalAfter, property: 'border-radius' },\n      ],\n\n      countryCodeInputWidth: { ...countryCodeInput, property: comboVars.hostWidth },\n      countryCodeDropdownWidth: {\n        ...countryCodeInput,\n        property: '--vaadin-combo-box-overlay-width',\n      },\n      phoneInputWidth: { ...phoneInput, property: 'width' },\n\n      horizontalPadding: [\n        { ...phoneInput, property: 'padding-left' },\n        { ...phoneInput, property: 'padding-right' },\n        { ...countryCodeInput, property: 'padding-left' },\n        { ...countryCodeInput, property: 'padding-right' },\n      ],\n\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n      ],\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n      inputValueTextColor: [\n        { ...phoneInput, property: textVars.inputValueTextColor },\n        { ...countryCodeInput, property: comboVars.inputValueTextColor },\n      ],\n\n      inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n      overlayItemBackgroundColor: {\n        selector: 'descope-combo-box',\n        property: comboVars.overlayItemBackgroundColor,\n      },\n\n      inputOutlineStyle: { ...inputField, property: 'outline-style' },\n      inputOutlineColor: { ...inputField, property: 'outline-color' },\n      inputOutlineWidth: { ...inputField, property: 'outline-width' },\n      inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n      valueInputHeight: [{ ...countryCodeInput, property: comboVars.valueInputHeight }],\n      valueInputMarginBottom: [{ ...phoneInput, property: textVars.valueInputMarginBottom }],\n      marginInlineStart: [\n        { ...phoneInput, property: textVars.marginInlineStart },\n        { ...countryCodeInput, property: comboVars.marginInlineStart },\n      ],\n    },\n  }),\n  draggableMixin,\n  inputOverrideValidConstraintsMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: 15em;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\t\t\t${useHostExternalPadding(PhoneFieldClass.cssVarList)}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n\t\t\t${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n\t\t\t${resetInputFieldDefaultWidth()}\n\n\t\t\tdiv {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n\t\t\tvaadin-text-field {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-text-field[focus-ring]::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\t\t\tvaadin-text-field::part(label) {\n        margin-left: 0;\n        margin-right: 0;\n      }\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground: transparent;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\tdescope-phone-field-internal {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n        direction: ltr;\n        position: relative;\n\t\t\t}\n      descope-phone-field-internal::after {\n        content: '';\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        top: 0;\n        left: 0;\n        box-sizing: border-box;\n        outline-offset: calc(var(${PhoneFieldClass.cssVarList.inputBorderWidth}) * -1);\n        pointer-events: none;\n      }\n\t\t\tdescope-phone-field-internal > div {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t\tdescope-phone-field-internal .separator {\n\t\t\t\tflex: 0;\n\t\t\t\tborder: none;\n\t\t\t}\n\n\t\t\tdescope-combo-box {\n\t\t\t\tflex-shrink: 0;\n        min-width: 5.75em;\n\t\t\t\t${comboVars.inputOutlineWidth}: 0;\n\t\t\t\t${comboVars.inputOutlineOffset}: 0;\n\t\t\t\t${comboVars.inputBorderWidth}: 0;\n\t\t\t\t${comboVars.inputBorderRadius}: 0;\n\t\t\t}\n\t\t\tdescope-text-field {\n\t\t\t\tflex-grow: 1;\n\t\t\t\t${textVars.inputOutlineWidth}: 0;\n\t\t\t\t${textVars.inputOutlineOffset}: 0;\n\t\t\t\t${textVars.inputBorderWidth}: 0;\n\t\t\t\t${textVars.inputBorderRadius}: 0;\n      }\n\n      :host([label-type=\"floating\"]) vaadin-text-field::part(label) {\n        display: none;\n      }\n      descope-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n        opacity: 0;\n      }\n      descope-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n        opacity: 0;\n      }\n\n\t\t\tvaadin-text-field::part(input-field)::after {\n\t\t\t\tborder: none;\n\t\t\t}\n      ${resetInputLabelPosition('vaadin-text-field')}\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n\nexport default PhoneFieldClass;\n","import { PhoneFieldClass } from '../../components/phone-fields/descope-phone-field/PhoneFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PhoneFieldClass.cssVarList;\n\nconst phoneField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.phoneInputWidth]: refs.minWidth,\n  [vars.countryCodeInputWidth]: '5em',\n  [vars.countryCodeDropdownWidth]: '20em',\n  [vars.marginInlineStart]: '-0.25em',\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  // '@overlay': {\n  // \toverlayItemBackgroundColor: 'red'\n  // }\n};\n\nexport default phoneField;\nexport { vars };\n","import { forwardAttrs } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { getComponentName } from '../../../../helpers/componentHelpers';\nimport { getCountryByCodeId, matchingParenthesis } from '../../helpers';\nimport parsePhoneNumberFromString, { AsYouType } from 'libphonenumber-js/min';\n\nexport const componentName = getComponentName('phone-field-internal-input-box');\n\nconst observedAttributes = [\n  'disabled',\n  'size',\n  'readonly',\n  'phone-input-placeholder',\n  'name',\n  'maxlength',\n  'autocomplete',\n  'label-type',\n];\nconst mapAttrs = {\n  'phone-input-placeholder': 'placeholder',\n};\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], observedAttributes);\n  }\n\n  #ayt;\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n      <div>\n        <descope-text-field tabindex=\"1\" type=\"tel\" bordered=\"false\"></descope-text-field>\n      </div>\n      `;\n\n    this.textField = this.querySelector('descope-text-field');\n  }\n\n  // notice: this function is exposed in parent component\n  get phoneNumberInputEle() {\n    return this.textField.shadowRoot.querySelector('input');\n  }\n\n  get defaultDialCode() {\n    return getCountryByCodeId(this.getAttribute('default-code'));\n  }\n\n  get defaultCode() {\n    return this.getAttribute('default-code');\n  }\n\n  get allowAlphanumericInput() {\n    return this.getAttribute('allow-alphanumeric-input') === 'true';\n  }\n\n  get minLength() {\n    return parseInt(this.getAttribute('minlength'), 10) || 0;\n  }\n\n  get maxLength() {\n    return parseInt(this.getAttribute('maxlength'), 10) || 50;\n  }\n\n  get restrictCountries() {\n    return this.getAttribute('restrict-countries')?.split(',').filter(Boolean) || [];\n  }\n\n  get isFormatValue() {\n    return this.getAttribute('format-value') === 'true';\n  }\n\n  get isStrictValidation() {\n    return this.getAttribute('strict-validation') === 'true';\n  }\n\n  get value() {\n    if (!this.textField.value) return '';\n\n    if (!this.isStrictValidation) {\n      return this.#nonParsedValue();\n    }\n\n    const parsedVal = this.#parseWithCountryCode();\n\n    if (parsedVal?.country && parsedVal?.countryCallingCode && parsedVal?.nationalNumber) {\n      return `+${[parsedVal?.countryCallingCode, parsedVal?.nationalNumber].join('-')}`;\n    }\n\n    // if failed to parse or to find country code return text field value\n    return this.textField.value;\n  }\n\n  set value(val) {\n    this.textField.value = val;\n  }\n\n  init() {\n    this.addEventListener('focus', (e) => {\n      // We want to ignore focus events we are dispatching\n      if (e.isTrusted) this.textField.focus();\n    });\n\n    super.init?.();\n\n    this.textField.addEventListener('input', this.#onInput.bind(this));\n    this.handleFocusEventsDispatching([this.textField]);\n\n    forwardAttrs(this.textField, this, { includeAttrs: ['has-value'] });\n  }\n\n  getValidity() {\n    const validPhonePattern = /^\\+?\\d{1,4}-?(?:\\d-?){1,15}$/;\n    const stripValue = this.#sanitizeVal(this.textField.value || '');\n\n    if (this.isRequired && !this.textField.value) {\n      return { valueMissing: true };\n    }\n\n    if (this.textField.value) {\n      if (stripValue.length < this.minLength) {\n        return { tooShort: true };\n      }\n\n      if (\n        // has `strict-validation` and not properly parsed\n        (this.isStrictValidation && this.textField.value && !this.#isValidParsedValue()) ||\n        // if no `strict-validation` then conform with naive pattern\n        (!this.isStrictValidation && this.textField.value && !validPhonePattern.test(this.value))\n      ) {\n        return { patternMismatch: true };\n      }\n    }\n\n    return {};\n  }\n\n  setSelectionRange(...args) {\n    this.textField.setSelectionRange(...args);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue && observedAttributes.includes(attrName)) {\n      const attr = mapAttrs[attrName] || attrName;\n      this.textField.setAttribute(attr, newValue);\n    }\n  }\n\n  #onInput(e) {\n    let sanitizedInput = this.#sanitizeInput(e.target.value);\n\n    if (this.isFormatValue && this.#canFormat(sanitizedInput)) {\n      sanitizedInput = this.#formatPhoneNumber(sanitizedInput);\n    }\n\n    e.target.value = sanitizedInput;\n  }\n\n  #nonParsedValue() {\n    if (!this.defaultDialCode) {\n      return this.textField.value;\n    }\n\n    const nationalNumber = this.#trimDuplicateCountryCode(this.textField.value);\n    const sanitizedVal = this.#sanitizeVal(nationalNumber);\n\n    return [this.defaultDialCode, sanitizedVal].join('-');\n  }\n\n  #parseWithCountryCode() {\n    if (this.defaultDialCode) {\n      return parsePhoneNumberFromString(\n        [this.defaultDialCode, this.#sanitizeVal(this.textField.value)].filter(Boolean).join('')\n      );\n    }\n\n    // if default-code or not parsed - try to extract country code from value\n    return parsePhoneNumberFromString(this.textField.value);\n  }\n\n  #sanitizeVal(val) {\n    return val.replace(/\\D/g, '');\n  }\n\n  #trimDuplicateCountryCode(val) {\n    if (this.textField.value?.[0] === '+') {\n      const dialCodePrefixPattern = new RegExp(`^\\\\${this.defaultDialCode}`);\n      const trimmed = val.replace(dialCodePrefixPattern, '');\n      return trimmed;\n    }\n    return val;\n  }\n\n  #isValidParsedValue() {\n    const parsed = parsePhoneNumberFromString(this.value);\n    return (\n      !!parsed && // parsed successfully (not undefined)\n      !!parsed.isValid?.() && // Parsed object is valid\n      !!parsed.country && // Parsed object with a country code\n      !!this.#isAllowedCountry(parsed.country) && // Parsed with allowed country code\n      (this.defaultCode ? this.defaultCode === parsed.country : true) // In case default country code is set validate parsed country matches it\n    );\n  }\n\n  #isAllowedCountry(countryCode) {\n    if (!this.restrictCountries.length) {\n      return true;\n    }\n\n    return this.restrictCountries.includes(countryCode);\n  }\n\n  #sanitizeInput(val) {\n    val = val\n      .replace(/^-+/, '') // dash as first char\n      .replace(/(?!^)\\+/g, '') // multiple plus symbols\n      .replace('--', '-') // consecutive dashes\n      .replace('+-', '+'); // dash following plus symbol\n\n    if (!this.allowAlphanumericInput) {\n      const telDigitsRegExp = /^[+\\d-\\(\\)]+$/;\n      val = val\n        .split('')\n        .filter((char) => telDigitsRegExp.test(char))\n        .join('');\n    }\n\n    return val;\n  }\n\n  #formatPhoneNumber(phoneNumber = '') {\n    // Get country code from `default-code or` from phone number\n    const countryCode = this.defaultCode || this.#getCountryCodeFromValue(phoneNumber);\n\n    // Skip formatting if no country code is available\n    if (!countryCode) {\n      return phoneNumber;\n    }\n\n    // Update AsYouType country code if needed\n    if (!this.#ayt || this.#ayt.country !== countryCode) {\n      this.#ayt = new AsYouType(countryCode);\n    }\n\n    // We need to reset AsYouType instance before setting new input\n    this.#ayt.reset();\n\n    // Set AsYouType input\n    const formattedVal = this.#ayt.input(phoneNumber) || phoneNumber;\n\n    return formattedVal;\n  }\n\n  #getCountryCodeFromValue(val) {\n    const parsed = parsePhoneNumberFromString(val);\n    return parsed?.country || '';\n  }\n\n  #canFormat(val) {\n    if (!matchingParenthesis(val)) return false;\n    return true;\n  }\n}\n\nexport default PhoneFieldInternal;\n","import { componentName as descopeInternalComponentName } from './descope-phone-input-box-internal/PhoneFieldInternalInputBox';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n  createProxy,\n  createStyleMixin,\n  draggableMixin,\n  inputOverrideValidConstraintsMixin,\n  proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport CountryCodes from '../CountryCodes';\nimport {\n  resetInputLabelPosition,\n  resetInputCursor,\n  resetInputFieldDefaultWidth,\n  resetInputFieldInvalidBackgroundColor,\n  useHostExternalPadding,\n  inputFloatingLabelStyle,\n} from '../../../helpers/themeHelpers/resetHelpers';\nimport { syncAttrs } from '@descope-ui/common/components-helpers';\n\nconst textVars = TextFieldClass.cssVarList;\n\nexport const componentName = getComponentName('phone-input-box-field');\n\nconst customMixin = (superclass) =>\n  class PhoneFieldInputBoxMixinClass extends superclass {\n    static get CountryCodes() {\n      return CountryCodes;\n    }\n\n    init() {\n      super.init?.();\n\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      syncAttrs(this, this.inputElement, { includeAttrs: ['has-value'] });\n\n      forwardAttrs(this.shadowRoot.host, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'minlength',\n          'maxlength',\n          'default-code',\n          'disabled',\n          'phone-input-placeholder',\n          'label',\n          'label-type',\n          'allow-alphanumeric-input',\n          'restrict-countries',\n          'format-value',\n          'strict-validation',\n          'data-errormessage-type-mismatch',\n        ],\n      });\n    }\n\n    get phoneNumberInputEle() {\n      return this.inputElement?.phoneNumberInputEle;\n    }\n  };\n\nconst {\n  host,\n  label,\n  inputElement,\n  requiredIndicator,\n  inputField,\n  internalComponent,\n  internalComponentAfter,\n  phoneInput,\n  errorMessage,\n  helperText,\n} = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  placeholder: { selector: '> input:placeholder-shown' },\n  inputElement: { selector: 'input' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  inputField: { selector: () => 'vaadin-text-field::part(input-field)' },\n  internalComponent: {\n    selector: 'descope-phone-field-internal-input-box',\n  },\n  internalComponentAfter: {\n    selector: 'descope-phone-field-internal-input-box::after',\n  },\n  phoneInput: { selector: () => 'descope-text-field' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldInputBoxClass = compose(\n  createStyleMixin({\n    mappings: {\n      fontSize: [\n        host,\n        inputField,\n        {\n          selector: TextFieldClass.componentName,\n          property: TextFieldClass.cssVarList.fontSize,\n        },\n      ],\n      fontFamily: [label, errorMessage, helperText],\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostDirection: { ...host, property: 'direction' },\n\n      inputHorizontalPadding: [\n        { ...phoneInput, property: 'padding-left' },\n        { ...phoneInput, property: 'padding-right' },\n      ],\n\n      labelFontSize: { ...label, property: 'font-size' },\n      labelFontWeight: { ...label, property: 'font-weight' },\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...label, property: '-webkit-text-fill-color' },\n        { ...requiredIndicator, property: 'color' },\n      ],\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n      inputValueTextColor: { ...phoneInput, property: textVars.inputValueTextColor },\n\n      inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n      inputBorderStyle: { ...internalComponentAfter, property: 'border-style' },\n      inputBorderWidth: { ...internalComponentAfter, property: 'border-width' },\n      inputBorderColor: { ...internalComponentAfter, property: 'border-color' },\n      inputBorderRadius: [\n        { ...internalComponent, property: 'border-radius' },\n        { ...internalComponentAfter, property: 'border-radius' },\n      ],\n\n      inputOutlineStyle: { ...internalComponent, property: 'outline-style' },\n      inputOutlineColor: { ...internalComponent, property: 'outline-color' },\n      inputOutlineWidth: { ...internalComponent, property: 'outline-width' },\n      inputOutlineOffset: { ...internalComponent, property: 'outline-offset' },\n\n      labelPosition: { ...label, property: 'position' },\n      labelTopPosition: { ...label, property: 'top' },\n      labelHorizontalPosition: [\n        { ...label, property: 'left' },\n        { ...label, property: 'right' },\n      ],\n      inputTransformY: { ...label, property: 'transform' },\n      inputTransition: { ...label, property: 'transition' },\n      marginInlineStart: { ...label, property: 'margin-inline-start' },\n      valueInputHeight: { ...inputElement, property: 'height' },\n      valueInputMarginBottom: {\n        selector: TextFieldClass.componentName,\n        property: textVars.valueInputMarginBottom,\n      },\n    },\n  }),\n  draggableMixin,\n  inputOverrideValidConstraintsMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n    :host {\n      display: inline-flex;\n      max-width: 100%;\n      box-sizing: border-box;\n    }\n    ${useHostExternalPadding(PhoneFieldInputBoxClass.cssVarList)}\n    ${resetInputCursor('vaadin-text-field')}\n    ${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n    ${resetInputFieldDefaultWidth()}\n\n    vaadin-text-field {\n      width: 100%;\n      box-sizing: border-box;\n      padding: 0;\n    }\n    vaadin-text-field[focus-ring]::part(input-field) {\n      box-shadow: none;\n    }\n    vaadin-text-field::before {\n      height: 0;\n    }\n    vaadin-text-field::part(input-field) {\n      padding: 0;\n      background: transparent;\n      -webkit-mask-image: none;\n    }\n    descope-phone-field-internal-input-box {\n      -webkit-mask-image: none;\n      padding: 0;\n      width: 100%;\n    }\n    descope-phone-field-internal-input-box > div {\n      width: 100%;\n    }\n    descope-phone-field-internal-input-box descope-text-field {\n      ${textVars.inputOutlineWidth}: 0;\n      ${textVars.inputOutlineOffset}: 0;\n    }\n    descope-phone-field-internal-input-box::after {\n      content: '';\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      top: 0;\n      left: 0;\n      box-sizing: border-box;\n      pointer-events: none;\n    }\n    descope-text-field {\n      flex-grow: 1;\n      width: 100%;\n      direction: ltr;\n    }\n    vaadin-text-field[readonly] > input:placeholder-shown {\n      opacity: 1;\n    }\n    vaadin-text-field::part(input-field)::after {\n      border: none;\n    }\n\n    vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] input:placeholder-shown {\n      opacity: 0;\n    }\n    vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] input:placeholder-shown {\n      opacity: 0;\n    }\n\n    ${resetInputLabelPosition('vaadin-text-field')}\n    ${inputFloatingLabelStyle()}\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n\nexport default PhoneFieldInputBoxClass;\n","import { PhoneFieldInputBoxClass } from '../../components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PhoneFieldInputBoxClass.cssVarList;\n\nconst phoneInputBoxField = {\n  [vars.hostWidth]: '16em',\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n  [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n  [vars.inputHorizontalPadding]: '0',\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  _fullWidth: {\n    [vars.hostWidth]: refs.width,\n  },\n};\n\nexport default phoneInputBoxField;\nexport { vars };\n","import { getComponentName } from '../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('new-password-internal');\n","export const interpolateString = (template, values) =>\n  template.replace(/{{(\\w+)+}}/g, (match, key) => values?.[key] || match);\n","// eslint-disable-next-line max-classes-per-file\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { interpolateString } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('policy-validation');\n\nconst overrideAttrs = [\n  'data-password-policy-value-minlength',\n  'data-password-policy-value-passwordstrength',\n  'data-password-policy-actual-passwordstrength',\n];\nconst dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];\nconst policyAttrs = ['label', 'value', ...dataAttrs];\n\nclass RawPolicyValidation extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  #availablePolicies;\n\n  #activePolicies = [];\n\n  #overrides;\n\n  static get observedAttributes() {\n    return policyAttrs;\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div>\n      <div class=\"label\"></div>\n      <ul></ul>\n    </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host > div {\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        box-sizing: border-box;\n      }\n      .label {\n        max-width: 100%;\n        text-wrap: wrap;\n        overflow-wrap: break-word;\n      }\n      .hide-label .label {\n        display: none;\n      }\n      ul {\n        display: flex;\n        flex-direction: column;\n        padding: 0;\n        margin: 0;\n      }\n      ul, li {\n        margin: 0;\n        padding: 0;\n        list-style: none;\n      }\n      li::before {\n        display: inline-block;\n        width: 1em;\n        text-align: center;\n      }\n        `,\n      this\n    );\n\n    this.panel = this.shadowRoot.querySelector(':host > div');\n    this.label = this.shadowRoot.querySelector('.label');\n    this.list = this.shadowRoot.querySelector('ul');\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    if (oldValue !== newValue) {\n      if (attrName === 'label') {\n        this.updateLabel(newValue);\n      }\n\n      // we're don't know the order in which the attributes are forwarded, so we're trying to render every time\n      // once `data` and `active-policies` are populated, the render will be executed.\n      // once the `overrides` object is updated, we want to re-render the panel.\n      if (dataAttrs.includes(attrName)) {\n        if (attrName === 'data') {\n          try {\n            this.availablePolicies = JSON.parse(newValue);\n          } catch {\n            // eslint-disable-next-line no-console\n            console.error('Failed to set available policies');\n          }\n        }\n        if (attrName === 'active-policies') {\n          this.#activePolicies = (newValue || '').split(',');\n        }\n\n        if (attrName === 'data-password-policy-value-minlength') {\n          const ln = Number(newValue);\n          if (!Number.isNaN(ln) && ln > 0) {\n            this.#overrides = { ...this.#overrides, minlength: { value: `${ln}` } };\n          }\n        }\n\n        if (attrName === 'data-password-policy-value-passwordstrength') {\n          const passwordStrength = parseInt(newValue);\n          if (!Number.isNaN(passwordStrength) && passwordStrength >= 0) {\n            this.#overrides = {\n              ...this.#overrides,\n              passwordstrength: {\n                ...this.#overrides?.passwordstrength,\n                expected: passwordStrength,\n              },\n            };\n          }\n        }\n\n        if (attrName === 'data-password-policy-actual-passwordstrength') {\n          const ln = Number(newValue);\n          if (!Number.isNaN(ln) && ln >= 0) {\n            this.#overrides = {\n              ...this.#overrides,\n              passwordstrength: { ...this.#overrides?.passwordstrength, actual: ln },\n            };\n          }\n        }\n      }\n\n      this.renderItems(this.#availablePolicies, this.#activePolicies, this.#overrides);\n    }\n  }\n\n  get availablePolicies() {\n    return this.#availablePolicies || [];\n  }\n\n  set availablePolicies(val) {\n    this.#availablePolicies = val;\n  }\n\n  get value() {\n    return this.getAttribute('value') || '';\n  }\n\n  getStrengthScore() {\n    return this.value.length;\n  }\n\n  compareValues(comparison, expected, actual) {\n    switch (comparison.toUpperCase()) {\n      case 'GTE': // Greater than or equal to\n        return actual >= expected;\n      case 'GT': // Greater than\n        return actual > expected;\n      case 'LTE': // Less than or equal to\n        return actual <= expected;\n      case 'LT': // Less than\n        return actual < expected;\n      case 'EQ': // Equal to\n        return actual === expected;\n      case 'NEQ': // Not equal to\n        return actual !== expected;\n      default:\n        throw new Error(`Invalid comparison type: ${comparison}`);\n    }\n  }\n\n  validate() {\n    let policies = this.#availablePolicies;\n\n    if (this.#overrides) {\n      policies = this.#availablePolicies.map((policy) => {\n        const data = this.#overrides[policy.id];\n\n        if (!data) return policy;\n\n        const res = { ...policy, data };\n\n        return res;\n      });\n    }\n\n    return this.#activePolicies.reduce((results, id) => {\n      const policy = policies.find((p) => p.id === id);\n\n      if (!policy) {\n        return results;\n      }\n\n      const { pattern, message, data, compare } = policy;\n\n      if ((!pattern && !compare) || !message) {\n        return results;\n      }\n\n      const validationResult = {\n        message: interpolateString(message, data),\n        id,\n      };\n\n      if (pattern) {\n        const exp = new RegExp(interpolateString(pattern, data));\n        validationResult.valid = exp.test(this.value);\n      } else if (compare) {\n        validationResult.valid = this.compareValues(\n          compare,\n          data?.expected ?? -1,\n          data?.actual ?? -1\n        );\n      }\n\n      results.push(validationResult);\n\n      return results;\n    }, []);\n  }\n\n  get isValid() {\n    return !this.validate().some(({ valid }) => valid === false);\n  }\n\n  getValidationItemTemplate({ valid, message }) {\n    const status = !this.value ? 'none' : valid;\n    return `\n      <li class=\"item\" data-valid=\"${status}\">\n        <span class=\"message\">${message}</span>\n      </li>\n    `;\n  }\n\n  renderItems(availablePolicies, activePolicies) {\n    if (!availablePolicies || !activePolicies.length) {\n      return;\n    }\n\n    this.list.innerHTML = this.validate().map(this.getValidationItemTemplate.bind(this)).join('');\n  }\n\n  updateLabel(val) {\n    if (!val) {\n      this.classList.add('hide-label');\n      this.label.textContent = '';\n    } else {\n      this.label.textContent = val;\n      this.classList.remove('hide-label');\n    }\n  }\n}\n\nconst { host, item, symbolDefault, symbolSuccess, symbolError } = {\n  host: { selector: () => ':host > div' },\n  item: { selector: () => '.item' },\n  symbolDefault: { selector: () => '.item[data-valid=\"none\"]::before' },\n  symbolSuccess: { selector: () => '.item[data-valid=\"true\"]::before' },\n  symbolError: { selector: () => '.item[data-valid=\"false\"]::before' },\n};\n\nexport const PolicyValidationClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      fontSize: {},\n      fontFamily: {},\n      padding: {},\n      borderWidth: { ...host, property: 'border-width' },\n      borderStyle: { ...host, property: 'border-style' },\n      borderColor: { ...host, property: 'border-color' },\n      borderRadius: { ...host, property: 'border-radius' },\n      backgroundColor: { ...host, property: 'background-color' },\n      textColor: { property: 'color' },\n      labelMargin: { ...host, property: 'gap' },\n      itemsSpacing: { ...item, property: 'line-height' },\n      itemSymbolSuccessColor: { ...symbolSuccess, property: 'color' },\n      itemSymbolErrorColor: { ...symbolError, property: 'color' },\n      itemSymbolDefault: { ...symbolDefault, property: 'content' },\n      itemSymbolSuccess: { ...symbolSuccess, property: 'content' },\n      itemSymbolError: { ...symbolError, property: 'content' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawPolicyValidation);\n","import { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport { createStyleMixin, proxyInputMixin, draggableMixin, createProxy } from '../../mixins';\nimport { componentName as descopeInternalComponentName } from './descope-new-password-internal/componentName';\nimport { PasswordClass } from '../descope-password/PasswordClass';\nimport { useHostExternalPadding } from '../../helpers/themeHelpers/resetHelpers';\nimport { PolicyValidationClass } from '../descope-policy-validation/PolicyValidationClass';\n\nexport const componentName = getComponentName('new-password');\n\nconst policyPreviewVars = PolicyValidationClass.cssVarList;\n\nconst customMixin = (superclass) =>\n  class NewPasswordMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      const template = document.createElement('template');\n\n      const externalInputAttr = this.getAttribute('external-input');\n\n      template.innerHTML = `\n\t\t\t<${descopeInternalComponentName}\n\t\t\t\tname=\"new-password\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\tslot=\"input\"\n        external-input=\"${externalInputAttr}\"\n\t\t\t>\n      </${descopeInternalComponentName}>\n\t\t\t`;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      if (this.getAttribute('external-input') === 'true') {\n        this.initExternalInput();\n      }\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'password-label',\n          'password-placeholder',\n          'confirm-label',\n          'confirm-placeholder',\n          'full-width',\n          'size',\n          'bordered',\n          'label',\n          'has-confirm',\n          'invalid',\n          'readonly',\n          'disabled',\n          'draggable',\n          'has-validation',\n          'policy-label',\n          'active-policies',\n          'available-policies',\n          'data-password-policy-value-minlength',\n          'data-password-policy-value-passwordstrength',\n          'label-type',\n          'manual-visibility-toggle',\n        ],\n      });\n    }\n\n    createSlottedExternalInput(node, slotName) {\n      const externalInput = node.querySelector('input');\n      const slotEle = document.createElement('slot');\n\n      const targetSlot = externalInput.getAttribute('slot');\n\n      slotEle.setAttribute('name', slotName);\n      slotEle.setAttribute('slot', targetSlot);\n\n      node.appendChild(slotEle);\n\n      // move external input\n      externalInput.setAttribute('slot', slotName);\n      externalInput.setAttribute('name', this.getAttribute('name'));\n      externalInput.setAttribute('data-hidden-input', 'true');\n\n      this.appendChild(externalInput);\n    }\n\n    initExternalInput() {\n      // get descope input components\n      this.passwordInput = this.inputElement.querySelector('[data-id=\"password\"]');\n      this.confirmInput = this.inputElement.querySelector('[data-id=\"confirm\"]');\n\n      // create slots for external password input\n      this.createSlottedExternalInput(this.passwordInput, 'external-password-input');\n      this.createSlottedExternalInput(this.confirmInput, 'external-confirm-input');\n    }\n  };\n\nconst {\n  host,\n  label,\n  internalInputsWrapper,\n  errorMessage,\n  helperText,\n  passwordInput,\n  policyPreview,\n} = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  internalInputsWrapper: { selector: 'descope-new-password-internal .wrapper' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n  passwordInput: { selector: 'descope-password' },\n  policyPreview: { selector: 'descope-policy-validation' },\n};\n\nexport const NewPasswordClass = compose(\n  createStyleMixin({\n    mappings: {\n      fontSize: [\n        host,\n        {},\n        {\n          selector: PasswordClass.componentName,\n          property: PasswordClass.cssVarList.fontSize,\n        },\n      ],\n      fontFamily: [label, errorMessage, helperText],\n      labelFontSize: { ...label, property: 'font-size' },\n      labelFontWeight: { ...label, property: 'font-weight' },\n      labelTextColor: { ...label, property: 'color' },\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        { ...passwordInput, property: PasswordClass.cssVarList.hostDirection },\n      ],\n      inputsRequiredIndicator: { ...host, property: 'content' },\n      spaceBetweenInputs: { ...internalInputsWrapper, property: 'gap' },\n      policyPreviewBackgroundColor: {\n        ...policyPreview,\n        property: policyPreviewVars.backgroundColor,\n      },\n      policyPreviewPadding: { ...policyPreview, property: policyPreviewVars.padding },\n\n      valueInputHeight: { ...passwordInput, property: PasswordClass.cssVarList.valueInputHeight },\n      valueInputMarginBottom: {\n        ...passwordInput,\n        property: PasswordClass.cssVarList.valueInputMarginBottom,\n      },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-block;\n\t\t\tmax-width: 100%;\n\t\t\tbox-sizing: border-box;\n\t\t}\n    :host ::part(error-message) {\n      direction: ltr;\n    }\n\t\t${useHostExternalPadding(PasswordClass.cssVarList)}\n\t\tvaadin-text-field {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t\tvaadin-text-field::part(input-field) {\n\t\t\tmin-height: 0;\n\t\t\tbackground: transparent;\n\t\t\tbox-shadow: none;\n\t\t\tpadding: 0;\n\t\t}\n\t\tvaadin-text-field::part(input-field)::after {\n\t\t\tbackground: transparent;\n\t\t\topacity: 0;\n\t\t}\n\t\tdescope-new-password-internal {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n\t\t\twidth: 100%;\n\t\t\tpadding: 0;\n\t\t}\n\t\tdescope-new-password-internal > .wrapper {\n      -webkit-mask-image: none;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\t\tdescope-password {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t\tdescope-new-password-internal vaadin-password-field::before {\n\t\t\theight: initial;\n\t\t}\n    descope-policy-validation {\n      margin-top: 8px;\n      display: flex;\n    }\n    .hidden {\n      display: none;\n    }\n\t\t`,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { NewPasswordClass } from '../../components/descope-new-password/NewPasswordClass';\nimport { refs } from './inputWrapper';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = NewPasswordClass.cssVarList;\n\nconst newPassword = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostMinWidth]: refs.minWidth,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.spaceBetweenInputs]: '1em',\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.policyPreviewBackgroundColor]: 'none',\n  [vars.policyPreviewPadding]: globalRefs.spacing.lg,\n  [vars.valueInputHeight]: refs.valueInputHeight,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  _required: {\n    // NewPassword doesn't pass `required` attribute to its Password components.\n    // That's why we fake the required indicator on each input.\n    // We do that by injecting `::after` element, and populating it with requiredIndicator content.\n    [vars.inputsRequiredIndicator]: refs.requiredIndicator, // used to populate required content for NewPassword input fields outside the theme\n  },\n};\n\nexport default newPassword;\nexport { vars };\n","export const getFileBase64 = (fileObj) => {\n  return new Promise((resolve) => {\n    const reader = new FileReader();\n    reader.onload = (e) => resolve(e.target.result);\n    reader.readAsDataURL(fileObj);\n  });\n};\n\nexport const getFilename = (fileObj) => {\n  return fileObj.name.replace(/^.*\\\\/, '');\n};\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { getFileBase64, getFilename } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('upload-file');\n\nconst observedAttributes = [\n  'title',\n  'description',\n  'button-label',\n  'accept',\n  'readonly',\n  'button-mode',\n  'button-variant',\n  'required',\n  'size',\n  'icon',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: ':host > div' });\n\nclass RawUploadFile extends BaseInputClass {\n  static get observedAttributes() {\n    return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div>\n        <slot name=\"icon\"></slot>\n\t\t\t\t<div class=\"title\">\n\t\t\t\t\t<span class=\"title-text\"></span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"description\"></div>\n\t\t\t\t<div class=\"button-wrapper\">\n\t\t\t\t\t<input type=\"file\" tabindex=\"-1\" aria-labelledby=\"button\"/>\n\t\t\t\t\t<descope-button id=\"button\"></descope-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\ttext-align: center;\n\t\t\t\tflex-direction: column;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.button-wrapper {\n\t\t\t\tposition: relative;\n\t\t\t\twidth: fit-content;\n\t\t\t}\n\t\t\tinput {\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\topacity: 0;\n\t\t\t}\n        `,\n      this\n    );\n\n    this.wrapperEle = this.shadowRoot.querySelector('.wrapper');\n    this.inputElement = this.shadowRoot.querySelector('input');\n\n    this.button.onclick = () => this.inputElement.click();\n\n    this.inputElement.onchange = async (e) => {\n      const receivedFileList = e.target.files;\n\n      if (!receivedFileList.length) {\n        return;\n      }\n\n      this.value = await getFileBase64(receivedFileList[0]);\n\n      this.updateDescription(getFilename(receivedFileList[0]));\n    };\n\n    this.oninvalid = () => {\n      this.setAttribute('invalid', 'true');\n    };\n  }\n\n  // this is a temp solution,\n  // we should show the input error message like we have in all other inputs\n  /*\n  reportValidity() {\n    this.defaultReportValidity();\n  }\n  */\n\n  getValidity() {\n    if (this.isRequired && !this.input.value) {\n      return { valueMissing: true };\n    }\n    this.removeAttribute('invalid');\n    return {};\n  }\n\n  initInputs() {\n    const button = this.rootElement.querySelector('descope-button');\n    button.onclick = () => this.inputElement.click();\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (attrName === 'title') {\n        this.updateTitle(newValue);\n      } else if (attrName === 'description') {\n        this.updateDescription(newValue);\n      } else if (attrName === 'button-label') {\n        this.updateButtonLabel(newValue);\n      } else if (attrName === 'button-mode') {\n        this.updateButtonMode(newValue);\n      } else if (attrName === 'button-variant') {\n        this.updateButtonVariant(newValue);\n      } else if (attrName === 'size') {\n        this.updateButtonSize(newValue);\n      } else if (attrName === 'accept') {\n        this.updateInputAccept(newValue);\n      } else if (attrName === 'readonly') {\n        this.updateReadOnly(newValue);\n      }\n    }\n  }\n\n  get button() {\n    return this.shadowRoot.querySelector('descope-button');\n  }\n\n  get input() {\n    return this.shadowRoot.querySelector('input');\n  }\n\n  get title() {\n    return this.shadowRoot.querySelector('.title-text');\n  }\n\n  get description() {\n    return this.shadowRoot.querySelector('.description');\n  }\n\n  get icon() {\n    return this.shadowRoot.querySelector('.icon');\n  }\n\n  updateTitle(val) {\n    this.title.textContent = val;\n  }\n\n  updateDescription(val) {\n    this.description.textContent = val;\n  }\n\n  updateButtonLabel(val) {\n    this.button.textContent = val;\n  }\n\n  updateButtonSize(val) {\n    this.button.setAttribute('size', val);\n  }\n\n  updateButtonMode(val) {\n    this.button.setAttribute('mode', val);\n  }\n\n  updateButtonVariant(val) {\n    this.button.setAttribute('variant', val);\n  }\n\n  updateInputAccept(val) {\n    this.input.setAttribute('accept', val);\n  }\n\n  updateReadOnly(val) {\n    if (val === 'true') {\n      this.input.setAttribute('disabled', 'true');\n    } else {\n      this.input.removeAttribute('disabled');\n    }\n  }\n}\n\nconst buttonVars = ButtonClass.cssVarList;\nconst { host, wrapper, icon, title, description, requiredIndicator } = {\n  host: { selector: () => ':host' },\n  wrapper: { selector: () => ':host > div' },\n  icon: { selector: () => '::slotted(*)' },\n  title: { selector: () => '.title' },\n  description: { selector: () => '.description' },\n  requiredIndicator: { selector: () => '.title::after' },\n};\n\nexport const UploadFileClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      fontSize: {},\n      fontFamily: {},\n      borderColor: {},\n      borderWidth: {},\n      borderStyle: {},\n      borderRadius: {},\n      hostHeight: { ...host, property: 'height' },\n      hostWidth: { ...host, property: 'width' },\n      hostPadding: { property: 'padding' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        { selector: () => ButtonClass.componentName, property: buttonVars.hostDirection },\n      ],\n      gap: { ...wrapper },\n      lineHeight: { ...wrapper, property: 'line-height' },\n      titleFontSize: { ...title, property: 'font-size' },\n      titleFontWeight: { ...title, property: 'font-weight' },\n      descriptionFontSize: { ...description, property: 'font-size' },\n      labelTextColor: [\n        { ...title, property: 'color' },\n        { ...description, property: 'color' },\n      ],\n      iconSize: { ...icon, property: 'width' },\n      requiredIndicator: { ...requiredIndicator, property: 'content' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawUploadFile);\n","import { UploadFileClass } from '../../components/descope-upload-file/UploadFileClass';\nimport { refs } from './inputWrapper';\n\nconst vars = UploadFileClass.cssVarList;\n\nconst uploadFile = {\n  [vars.hostDirection]: refs.direction,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.fontFamily]: refs.fontFamily,\n\n  [vars.iconSize]: '2em',\n\n  [vars.hostPadding]: '0.75em',\n  [vars.gap]: '0.5em',\n\n  [vars.fontSize]: '16px',\n  [vars.titleFontWeight]: '500',\n  [vars.lineHeight]: '1em',\n\n  [vars.borderWidth]: refs.borderWidth,\n  [vars.borderColor]: refs.borderColor,\n  [vars.borderRadius]: refs.borderRadius,\n  [vars.borderStyle]: 'dashed',\n\n  _required: {\n    [vars.requiredIndicator]: refs.requiredIndicator,\n  },\n\n  size: {\n    xs: {\n      [vars.hostHeight]: '196px',\n      [vars.hostWidth]: '200px',\n      [vars.titleFontSize]: '0.875em',\n      [vars.descriptionFontSize]: '0.875em',\n      [vars.lineHeight]: '1.25em',\n    },\n    sm: {\n      [vars.hostHeight]: '216px',\n      [vars.hostWidth]: '230px',\n      [vars.titleFontSize]: '1em',\n      [vars.descriptionFontSize]: '0.875em',\n      [vars.lineHeight]: '1.25em',\n    },\n    md: {\n      [vars.hostHeight]: '256px',\n      [vars.hostWidth]: '312px',\n      [vars.titleFontSize]: '1.125em',\n      [vars.descriptionFontSize]: '1em',\n      [vars.lineHeight]: '1.5em',\n    },\n    lg: {\n      [vars.hostHeight]: '280px',\n      [vars.hostWidth]: '336px',\n      [vars.titleFontSize]: '1.125em',\n      [vars.descriptionFontSize]: '1.125em',\n      [vars.lineHeight]: '1.75em',\n    },\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: refs.width,\n  },\n};\n\nexport default uploadFile;\nexport { vars };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n  componentName,\n  baseSelector: ':host > descope-button',\n}) {\n  get size() {\n    return this.getAttribute('size') || 'md';\n  }\n\n  get variant() {\n    return this.getAttribute('variant') || 'contained';\n  }\n\n  get value() {\n    return this.getAttribute('value') || '';\n  }\n\n  set value(value) {\n    this.setAttribute('value', value);\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n      <slot></slot>\n    </descope-button>\n\t`;\n\n    injectStyle(\n      `\n      descope-button {\n        max-width: 100%;\n      }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n        text-overflow: ellipsis;\n        display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n        max-width: 100%\n\t\t\t}\n  `,\n      this\n    );\n\n    forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n    forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n  }\n\n  handleFocus() {\n    this.shadowRoot.querySelector('descope-button')?.focus();\n  }\n\n  focus() {\n    this.handleFocus();\n  }\n\n  init() {\n    super.init();\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) {\n        this.handleFocus();\n      }\n    });\n  }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostDirection: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.hostDirection,\n      },\n      backgroundColor: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.backgroundColor,\n      },\n      labelTextColor: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.labelTextColor,\n      },\n      borderColor: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.borderColor,\n      },\n      borderWidth: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.borderWidth,\n      },\n      borderStyle: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.borderStyle,\n      },\n      borderRadius: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.borderRadius,\n      },\n      outlineColor: {\n        selector: () => ButtonClass.componentName,\n        property: ButtonClass.cssVarList.outlineColor,\n      },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawSelectItem);\n","import { ButtonSelectionGroupItemClass } from '../../../components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const vars = ButtonSelectionGroupItemClass.cssVarList;\n\nconst buttonSelectionGroupItem = {\n  [vars.hostDirection]: 'inherit',\n  [vars.backgroundColor]: globalRefs.colors.surface.main,\n  [vars.labelTextColor]: globalRefs.colors.surface.contrast,\n  [vars.borderColor]: globalRefs.colors.surface.light,\n  [vars.borderStyle]: 'solid',\n  [vars.borderRadius]: globalRefs.radius.sm,\n  [vars.outlineColor]: 'transparent',\n  [vars.borderWidth]: globalRefs.border.xs,\n\n  _hover: {\n    [vars.backgroundColor]: globalRefs.colors.surface.highlight,\n  },\n\n  _focused: {\n    [vars.outlineColor]: globalRefs.colors.surface.light,\n  },\n\n  _selected: {\n    [vars.borderColor]: globalRefs.colors.surface.contrast,\n    [vars.backgroundColor]: globalRefs.colors.surface.contrast,\n    [vars.labelTextColor]: globalRefs.colors.surface.main,\n  },\n};\n\nexport default buttonSelectionGroupItem;\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { observeAttributes } from '../../helpers/componentHelpers';\nimport { createDispatchEvent } from '../../helpers/mixinsHelpers';\n\nexport const createBaseButtonSelectionGroupInternalClass = (componentName) => {\n  class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({\n    componentName,\n    baseSelector: 'slot',\n  }) {\n    constructor() {\n      super();\n\n      this.innerHTML = `\n    <slot part=\"wrapper\"></slot>\n      `;\n    }\n\n    dispatchChange = createDispatchEvent.bind(this, 'change');\n\n    get items() {\n      return this.querySelector('slot').assignedElements();\n    }\n\n    get isReadonly() {\n      return this.getAttribute('readonly') === 'true';\n    }\n\n    get size() {\n      return this.getAttribute('size') || 'md';\n    }\n\n    // eslint-disable-next-line getter-return, class-methods-use-this\n    get value() {\n      // eslint-disable-next-line no-console\n      console.warn('get value', 'is not implemented');\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    set value(value) {\n      // eslint-disable-next-line no-console\n      console.warn('set value', 'is not implemented');\n    }\n\n    onSizeChange() {\n      this.items.forEach((item) => {\n        item.setAttribute('size', this.size);\n      });\n    }\n\n    onReadOnlyChange() {\n      this.querySelector('slot').toggleAttribute('inert', this.isReadonly);\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    getValidity() {\n      // eslint-disable-next-line no-console\n      console.warn('getValidity', 'is not implemented');\n    }\n\n    onObservedAttributeChange(attrs) {\n      attrs.forEach((attr) => {\n        switch (attr) {\n          case 'size':\n            this.onSizeChange();\n            break;\n          case 'readonly':\n            this.onReadOnlyChange();\n            break;\n          default:\n            break;\n        }\n      });\n    }\n\n    init() {\n      // we are adding listeners before calling to super because it's stopping the events\n      this.addEventListener('focus', (e) => {\n        // we want to ignore focus events we are dispatching\n        if (e.isTrusted) {\n          this.items[0]?.focus();\n        }\n      });\n\n      super.init?.();\n\n      observeAttributes(this, this.onObservedAttributeChange.bind(this), {\n        includeAttrs: ['size', 'readonly'],\n      });\n    }\n  }\n\n  return BaseButtonSelectionGroupInternalClass;\n};\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-selection-group-internal');\n\nexport class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n  componentName\n) {\n  getSelectedNode() {\n    return this.items.find((item) => item.hasAttribute('selected'));\n  }\n\n  get allowDeselect() {\n    return this.getAttribute('allow-deselect') === 'true';\n  }\n\n  removeSelected() {\n    this.getSelectedNode()?.removeAttribute('selected');\n  }\n\n  onClick(e) {\n    if (e.target !== e.currentTarget) {\n      if (e.target === this.getSelectedNode() && this.allowDeselect) {\n        this.removeSelected();\n      } else {\n        this.setSelected(e.target);\n      }\n      this.dispatchChange();\n    }\n  }\n\n  setSelected(node) {\n    if (node !== this.getSelectedNode()) {\n      this.removeSelected();\n      node?.setAttribute('selected', 'true');\n    }\n  }\n\n  get defaultValue() {\n    return this.getAttribute('default-value');\n  }\n\n  setDefaultValue() {\n    // we want to defer this action until all attributes are synched\n    setTimeout(() => {\n      if (this.defaultValue) {\n        this.value = this.defaultValue;\n        this.setCustomValidity();\n      }\n    });\n  }\n\n  get value() {\n    return this.getSelectedNode()?.value || '';\n  }\n\n  set value(value) {\n    const node = this.items.find((child) => child.value === value);\n    this.setSelected(node);\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n\n    return {};\n  }\n\n  init() {\n    super.init();\n\n    this.setDefaultValue();\n\n    this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n  }\n}\n","import { observeAttributes, observeChildren } from '../../helpers/componentHelpers';\nimport {\n  resetInputLabelPosition,\n  resetInputCursor,\n  resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const buttonSelectionGroupBaseMixin = (superclass) =>\n  class ButtonSelectionGroupMixinClass extends superclass {\n    // eslint-disable-next-line class-methods-use-this\n    #renderItem = ({ value, label }) =>\n      `<descope-button-selection-group-item value=\"${value}\">${label}</descope-button-selection-group-item>`;\n\n    #data;\n\n    get renderItem() {\n      return this.#renderItem;\n    }\n\n    set renderItem(renderFn) {\n      this.#renderItem = renderFn;\n      this.renderItems();\n    }\n\n    get size() {\n      return this.inputElement?.size;\n    }\n\n    get data() {\n      if (this.#data) return this.#data;\n\n      const dataAttr = this.getAttribute('data');\n\n      if (dataAttr) {\n        try {\n          const data = JSON.parse(dataAttr);\n          if (this.isValidDataType(data)) {\n            return data;\n          }\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error('could not parse data string from attribute \"data\" - ', e.message);\n        }\n      }\n\n      return [];\n    }\n\n    set data(data) {\n      if (this.isValidDataType(data)) {\n        this.#data = data;\n        this.renderItems();\n      }\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    isValidDataType(data) {\n      const isValid = Array.isArray(data);\n      if (!isValid) {\n        // eslint-disable-next-line no-console\n        console.error('data must be an array, received:', data);\n      }\n\n      return isValid;\n    }\n\n    getItemsTemplate() {\n      return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n    }\n\n    renderItems() {\n      const template = this.getItemsTemplate();\n      if (template) this.innerHTML = template;\n    }\n\n    init() {\n      super.init?.();\n\n      this.renderItems();\n\n      observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n      // we want new items to get the size\n      observeChildren(this, ({ addedNodes }) => {\n        addedNodes.forEach((node) => {\n          node.setAttribute('size', this.size);\n        });\n      });\n    }\n  };\n\nconst { host, label, requiredIndicator, internalWrapper, errorMessage } = {\n  host: { selector: () => ':host' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  internalWrapper: { selector: () => ':host [part=\"internal-component\"] slot' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const buttonSelectionGroupMappings = {\n  hostWidth: { ...host, property: 'width' },\n  hostDirection: { ...host, property: 'direction' },\n  fontFamily: host,\n  labelTextColor: [\n    { ...label, property: 'color' },\n    { ...requiredIndicator, property: 'color' },\n  ],\n  labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n  errorMessageTextColor: { ...errorMessage, property: 'color' },\n  errorMessageIcon: { ...errorMessage, property: 'background-image' },\n  errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n  errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n  errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n  errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n  errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n  itemsSpacing: { ...internalWrapper, property: 'gap' },\n};\n\nexport const buttonSelectionGroupStyles = `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n      [part=\"internal-component\"] {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n        display: inline-block;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n      [part=\"internal-component\"] slot {\n        box-sizing: border-box;\n        width: 100%;\n        display: flex;\n        flex-wrap: wrap;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n      ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n    `;\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-selection-group-internal/ButtonSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n  buttonSelectionGroupBaseMixin,\n  buttonSelectionGroupMappings,\n  buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-selection-group');\n\nconst buttonSelectionGroupMixin = (superclass) =>\n  class ButtonMultiSelectionGroupMixinClass extends superclass {\n    init() {\n      super.init?.();\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n      \tname=\"button-selection-group\"\n      \tslot=\"input\"\n        tabindex=\"-1\"\n        part=\"internal-component\"\n      >\n        <slot></slot>\n      </${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: ['size', 'default-value', 'allow-deselect'],\n      });\n    }\n  };\n\nexport const ButtonSelectionGroupClass = compose(\n  createStyleMixin({\n    mappings: {\n      ...buttonSelectionGroupMappings,\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin,\n  buttonSelectionGroupBaseMixin,\n  buttonSelectionGroupMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => buttonSelectionGroupStyles,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n\nexport default ButtonSelectionGroupClass;\n","import { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const createBaseButtonSelectionGroupMappings = (vars) => ({\n  [vars.hostDirection]: refs.direction,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.itemsSpacing]: globalRefs.spacing.sm,\n  [vars.hostWidth]: refs.width,\n\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n});\n","import { ButtonSelectionGroupClass } from '../../../components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass';\nimport { createBaseButtonSelectionGroupMappings } from './baseButtonSelectionGroup';\n\nconst vars = ButtonSelectionGroupClass.cssVarList;\n\nconst buttonSelectionGroup = {\n  ...createBaseButtonSelectionGroupMappings(vars),\n};\n\nexport default buttonSelectionGroup;\nexport { vars };\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n  componentName\n) {\n  #getSelectedNodes() {\n    return this.items.filter((item) => item.hasAttribute('selected'));\n  }\n\n  onClick(e) {\n    if (e.target !== e.currentTarget) {\n      if (this.#getSelectedNodes().includes(e.target)) {\n        e.target.removeAttribute('selected');\n      } else {\n        e.target.setAttribute('selected', 'true');\n      }\n      this.dispatchChange();\n    }\n  }\n\n  get value() {\n    return this.#getSelectedNodes().map((node) => node.value);\n  }\n\n  set value(values) {\n    this.items.forEach((item) => {\n      if (values.includes(item.value)) {\n        item.setAttribute('selected', 'true');\n      } else {\n        item.removeAttribute('selected');\n      }\n    });\n  }\n\n  get minItemsSelection() {\n    return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n  }\n\n  get maxItemsSelection() {\n    return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #isValidDataType(data) {\n    const isValid = Array.isArray(data);\n    if (!isValid) {\n      // eslint-disable-next-line no-console\n      console.error('default-values must be an array, received:', data);\n    }\n\n    return isValid;\n  }\n\n  get defaultValues() {\n    const defaultValuesAttr = this.getAttribute('default-values');\n    if (defaultValuesAttr) {\n      try {\n        const defaultValues = JSON.parse(defaultValuesAttr);\n        if (this.#isValidDataType(defaultValues)) {\n          return defaultValues;\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error('could not parse data string from attribute \"default-values\" -', e.message);\n      }\n    }\n    return [];\n  }\n\n  setDefaultValues() {\n    // we want to defer this action until all attributes are synced\n    setTimeout(() => {\n      if (this.defaultValues) {\n        this.value = this.defaultValues;\n        this.setCustomValidity();\n      }\n    });\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value.length) {\n      return { valueMissing: true };\n    }\n    // If the field is not required, no minimum selection can be set\n    if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n      return {\n        rangeUnderflow: true,\n      };\n    }\n    if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n      return {\n        rangeOverflow: true,\n      };\n    }\n    return {};\n  }\n\n  init() {\n    super.init();\n\n    this.setDefaultValues();\n\n    this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n  }\n}\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n  buttonSelectionGroupBaseMixin,\n  buttonSelectionGroupMappings,\n  buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-multi-selection-group');\n\nconst buttonMultiSelectionGroupMixin = (superclass) =>\n  class ButtonMultiSelectionGroupMixinClass extends superclass {\n    init() {\n      super.init?.();\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n      \tname=\"button-selection-group\"\n      \tslot=\"input\"\n        tabindex=\"-1\"\n        part=\"internal-component\"\n      >\n        <slot></slot>\n      </${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],\n      });\n    }\n  };\n\nexport const ButtonMultiSelectionGroupClass = compose(\n  createStyleMixin({\n    mappings: {\n      ...buttonSelectionGroupMappings,\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n  componentNameValidationMixin,\n  buttonSelectionGroupBaseMixin,\n  buttonMultiSelectionGroupMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-text-field',\n    style: () => buttonSelectionGroupStyles,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n\nexport default ButtonMultiSelectionGroupClass;\n","import { ButtonMultiSelectionGroupClass } from '../../../components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass';\nimport { createBaseButtonSelectionGroupMappings } from './baseButtonSelectionGroup';\n\nconst vars = ButtonMultiSelectionGroupClass.cssVarList;\n\nconst buttonMultiSelectionGroup = {\n  ...createBaseButtonSelectionGroupMappings(vars),\n};\n\nexport default buttonMultiSelectionGroup;\nexport { vars };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n  portalMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('modal');\n\nconst observedAttrs = ['opened'];\n\nconst customMixin = (superclass) =>\n  class ModalMixinClass extends superclass {\n    static get observedAttributes() {\n      return [].concat(superclass.observedAttributes || [], observedAttrs);\n    }\n\n    get opened() {\n      return this.getAttribute('opened') === 'true';\n    }\n\n    handleOpened() {\n      if (this.opened) {\n        this.style.display = '';\n      } else {\n        this.style.display = 'none';\n      }\n    }\n\n    attributeChangedCallback(name, oldValue, newValue) {\n      super.attributeChangedCallback?.(name, oldValue, newValue);\n\n      if (name === 'opened') {\n        this.handleOpened();\n      }\n    }\n\n    init() {\n      super.init?.();\n      this.style.display = 'none';\n\n      // vaadin-dialog might not be loaded in time\n      // in order to make sure it's loaded before this block is running\n      // we are wrapping it with setTimeout\n      setTimeout(() => {\n        // we want to sync descope-modal content through vaadin-dialog into the overlay\n        // so we are adding a slot to the overlay, which allows us to forward the content from\n        // vaadin-dialog to vaadin-dialog-overlay\n        this.baseElement.shadowRoot\n          .querySelector('vaadin-dialog-overlay')\n          .appendChild(document.createElement('slot'));\n\n        this.#overrideOverlaySettings();\n        forwardAttrs(this, this.baseElement, { includeAttrs: ['opened'] });\n\n        // we need to always open the modal in `opened=false`\n        // to prevent it from rendering outside the dialog\n        // first, we have to run `overrideOverlaySettings` to setup\n        // the component.\n        this.handleOpened();\n      });\n    }\n\n    // the default vaadin behavior is to attach the overlay to the body when opened\n    // we do not want that because it's difficult to style the overlay in this way\n    // so we override it to open inside the shadow DOM\n    #overrideOverlaySettings() {\n      const overlay = this.baseElement.shadowRoot.querySelector('vaadin-dialog-overlay');\n\n      overlay._attachOverlay = () => {\n        overlay.bringToFront();\n        injectStyle(\n          `\n          :host {\n            display: flex!important;\n          }\n          `,\n          this.baseElement\n        );\n      };\n      overlay._detachOverlay = () => {\n        this.baseElement.style.display = 'none';\n      };\n      overlay._enterModalState = () => {};\n\n      overlay.close = () => false;\n    }\n  };\n\nexport const ModalClass = compose(\n  createStyleMixin({\n    mappings: {\n      overlayBackdropColor: { property: () => ModalClass.cssVarList.overlay.backdropColor },\n      overlayBackgroundColor: { property: () => ModalClass.cssVarList.overlay.backgroundColor },\n      overlayShadow: { property: () => ModalClass.cssVarList.overlay.shadow },\n      overlayWidth: { property: () => ModalClass.cssVarList.overlay.width },\n      overlayBorderWidth: { property: () => ModalClass.cssVarList.overlay.borderWidth },\n      overlayBorderStyle: { property: () => ModalClass.cssVarList.overlay.borderStyle },\n      overlayBorderColor: { property: () => ModalClass.cssVarList.overlay.borderColor },\n      overlayBorderRadius: { property: () => ModalClass.cssVarList.overlay.borderRadius },\n    },\n  }),\n  portalMixin({\n    name: 'overlay',\n    selector: '',\n    mappings: {\n      hostDisplay: {\n        selector: () => ':host(.descope-modal)',\n        property: 'display',\n        important: true,\n      },\n      backgroundColor: [\n        { selector: () => '::part(content)', property: 'background-color' },\n        { selector: () => '::part(overlay)', property: 'background-color' },\n      ],\n      backdropColor: {\n        selector: () => '::part(backdrop)',\n        property: 'background-color',\n      },\n      borderStyle: {\n        selector: () => '::part(content)',\n        property: 'border-style',\n      },\n      borderWidth: {\n        selector: () => '::part(content)',\n        property: 'border-width',\n      },\n      borderColor: {\n        selector: () => '::part(content)',\n        property: 'border-color',\n      },\n      borderRadius: {\n        selector: () => '::part(content)',\n        property: 'border-radius  ',\n      },\n      width: { selector: () => '::part(overlay)', property: 'width' },\n      shadow: { selector: () => '::part(overlay)', property: 'box-shadow' },\n    },\n    forward: {\n      include: false,\n      attributes: ['opened', 'style'],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: [''],\n    wrappedEleName: 'vaadin-dialog',\n    style: () => `\n      vaaadin-dialog {\n        display: flex!important;\n      }\n    `,\n    excludeAttrsSync: ['tabindex', 'opened', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { ModalClass } from '../../components/descope-modal/ModalClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ModalClass.cssVarList;\n\nconst modal = {\n  [compVars.overlayBackgroundColor]: globalRefs.colors.surface.main,\n  [compVars.overlayShadow]: globalRefs.shadow.wide['2xl'],\n  [compVars.overlayWidth]: '540px',\n  [compVars.overlayBackdropColor]: 'hsla(214, 53%, 23%, 0.16)',\n};\n\nexport default modal;\n\nexport const vars = {\n  ...compVars,\n};\n","import { toTitle } from '../../helpers';\n\nexport const isValidDataType = (data) => {\n  const isValid = Array.isArray(data);\n  if (!isValid) {\n    // eslint-disable-next-line no-console\n    console.error('data must be an array, received:', data);\n  }\n\n  return isValid;\n};\n\nexport const isPlainObject = (value) => value?.constructor === Object;\n\nconst isXml = (str) => /^\\s*<[\\s\\S]*>/.test(str);\n\nconst escapeXML = (s) => {\n  const dom = document.createElement('div');\n  dom.textContent = s;\n  return dom.innerHTML;\n};\n\nexport const getValueType = (value) => {\n  if (isPlainObject(value)) return 'object';\n  if (Array.isArray(value)) return 'array';\n  if (isXml(value)) return 'xml';\n\n  return 'text';\n};\n\nexport const renderCodeSnippet = (value, lang) =>\n  `<descope-code-snippet lang=\"${lang}\" class=\"row-details__value code\">${escapeXML(value)}</descope-code-snippet>`;\n\nexport const renderText = (text) =>\n  `<div class=\"row-details__value text\" title=\"${text}\">${escapeXML(text)}</div>`;\nconst renderJson = (value) => renderCodeSnippet(JSON.stringify(value, null, 2), 'json');\nconst renderXml = (value) => renderCodeSnippet(value, 'xml');\n\nconst defaultRowDetailsValueRenderer = (value) => {\n  const valueType = getValueType(value);\n\n  if (valueType === 'object') {\n    return renderJson(value);\n  }\n\n  if (valueType === 'xml') {\n    return renderXml(value);\n  }\n\n  if (valueType === 'array') {\n    if (value.some((v) => getValueType(v) === 'object')) {\n      return renderJson(value);\n    }\n    return renderText(value.join(',\\n'));\n  }\n\n  return renderText(value);\n};\n\nexport const defaultRowDetailsRenderer = (item, itemLabelsMapping) => {\n  return `\n  <div class=\"row-details\">\n  ${Object.entries(item)\n    .map(\n      ([key, value]) =>\n        `<div class=\"row-details__item\" >\n          <div class=\"row-details__label\">${itemLabelsMapping[key] || toTitle(key)}</div>\n          ${defaultRowDetailsValueRenderer(value)}\n        </div>`\n    )\n    .join('\\n')}\n</div>\n  `;\n};\n","import { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n  componentNameValidationMixin,\n  createProxy,\n  createStyleMixin,\n  draggableMixin,\n} from '../../mixins';\n\nimport { defaultRowDetailsRenderer, isValidDataType } from './helpers';\n\nexport const componentName = getComponentName('grid');\n\nconst GridMixin = (superclass) =>\n  class GridMixinClass extends superclass {\n    #columns;\n\n    init() {\n      super.init?.();\n      this.handleColumns();\n      this.forwardSelectedItemsChange();\n\n      // disable the grid sort\n      this.baseElement._mapSorters = () => {};\n\n      // there is an issue in vaadin that on some cases when trying to render the details panel, the row is null and this fn throwing\n      // so we override it to prevent the error\n      const origUpdateDetailsCellHeight = this.baseElement._updateDetailsCellHeight;\n      this.baseElement._updateDetailsCellHeight = (row) => {\n        if (!row) return;\n        origUpdateDetailsCellHeight.call(this.baseElement, row);\n      };\n\n      this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);\n    }\n\n    // this renders the details panel content\n    // in order to open it, the descope-grid-item-details-column should be used\n    #rowDetailsRenderer = async (cell, _col, model) => {\n      // prevent details panel from being scrolled into view when clicked\n      cell.addEventListener('mousedown', (e) => e.stopImmediatePropagation(), true);\n\n      const template = this.getRowDetailsTemplate(model.item);\n\n      // eslint-disable-next-line no-param-reassign\n      cell.innerHTML = '';\n      cell.append(template.content.cloneNode(true));\n    };\n\n    getRowDetailsTemplate(item) {\n      const itemLabelsMapping = this.#columns.reduce(\n        (acc, { path, header }) => (!path || !header ? acc : { ...acc, [path]: header }),\n        {}\n      );\n      const template =\n        this.rowDetailsRenderer?.(item, itemLabelsMapping) ??\n        defaultRowDetailsRenderer(item, itemLabelsMapping);\n\n      switch (true) {\n        case template instanceof HTMLTemplateElement:\n          return template;\n        case typeof template === 'string':\n          return Object.assign(document.createElement('template'), { innerHTML: template });\n        default:\n          throw new Error('rowDetailsRenderer should return a string or a template');\n      }\n    }\n\n    forwardSelectedItemsChange() {\n      this.baseElement.addEventListener('selected-items-changed', (e) => {\n        this.dispatchEvent(\n          new CustomEvent('selected-items-changed', {\n            bubbles: true,\n            composed: true,\n            detail: e.detail,\n          })\n        );\n      });\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (attrName === 'columns') {\n        this.setColumnsDataFromAttr();\n      }\n    }\n\n    handleColumns() {\n      if (this.columnsAttr) {\n        this.setColumnsDataFromAttr();\n      } else if (this.children.length) {\n        this.setColumnsFromChildren();\n      }\n    }\n\n    setColumnsFromChildren() {\n      this.#columns = Array.from(this.children).map((child) => {\n        return {\n          path: child.getAttribute('path'),\n          header: child.getAttribute('header'),\n          type: child.localName.match('^descope-grid-(\\\\w+)-column$')?.[1] || 'text',\n\n          attrs: ['frozen', 'resizable', 'auto-width', 'status'].reduce((acc, attrName) => {\n            const attrVal = child.getAttribute(attrName);\n\n            if (attrVal) {\n              acc[attrName] = attrVal;\n            }\n\n            return acc;\n          }, {}),\n        };\n      });\n    }\n\n    get columnsAttr() {\n      return this.getAttribute('columns');\n    }\n\n    setColumnsDataFromAttr() {\n      try {\n        const data = JSON.parse(this.columnsAttr);\n        if (isValidDataType(data)) {\n          this.columns = data;\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error('could not parse data string from attribute \"columns\" -', e.message);\n      }\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    #renderColumn = ({ path, header, type, attrs }) => {\n      const colAttrs = Object.entries(attrs)\n        .map(([key, value]) => `${key}=\"${value}\"`)\n        .join(' ');\n\n      const tagName = `descope-grid-${type}-column`;\n\n      return `<${tagName} header=\"${header}\" path=\"${path}\" ${colAttrs}></${tagName}>`;\n    };\n\n    get renderColumn() {\n      return this.#renderColumn;\n    }\n\n    set renderColumn(renderFn) {\n      this.#renderColumn = renderFn;\n      this.renderColumns();\n    }\n\n    getColumnsTemplate() {\n      return this.#columns?.reduce?.(\n        (acc, item) => acc + (this.renderColumn?.(item || {}) || ''),\n        ''\n      );\n    }\n\n    // there is an issue in vaadin-grid, when rowDetailsRenderer is set, it renders an empty details panel\n    reassignRowDetailsRenderer() {\n      this.baseElement.rowDetailsRenderer = null;\n      setTimeout(() => {\n        this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);\n      }, 0);\n    }\n\n    renderColumns() {\n      const template = this.getColumnsTemplate();\n      if (template) {\n        this.reassignRowDetailsRenderer();\n        this.innerHTML = template;\n      }\n    }\n\n    get grid() {\n      return this.shadowRoot.querySelector('vaadin-grid');\n    }\n\n    get data() {\n      return this.grid.items;\n    }\n\n    set data(data) {\n      if (isValidDataType(data) && this.grid.items !== data) {\n        this.grid.items = data;\n\n        if (this.grid.selectedItems) {\n          const itemsIds = new Set(\n            this.grid.items.map((item) => item[this.uniqueColumnId] ?? item)\n          );\n\n          const newSelectedItems = this.grid.selectedItems.filter((selectedItem) =>\n            itemsIds.has(selectedItem[this.uniqueColumnId] ?? selectedItem)\n          );\n\n          // we want to update the selected items only if there is a reason,\n          // to prevent redundant notifications\n          if (this.grid.selectedItems.length !== newSelectedItems.length) {\n            this.grid.selectedItems = newSelectedItems;\n          }\n        }\n      }\n    }\n\n    get columns() {\n      return this.#columns;\n    }\n\n    set columns(data) {\n      this.#columns = data;\n      this.renderColumns();\n    }\n\n    get paths() {\n      return this.columns.map((col) => col.path);\n    }\n\n    get uniqueColumnId() {\n      return this.getAttribute('unique-column-id');\n    }\n  };\n\nconst {\n  host,\n  headerRow,\n  headerRowCell,\n  contentRow,\n  firstRow,\n  sortIndicators,\n  activeSortIndicator,\n  selectedRow,\n  rowSeparator,\n  resizeHandle,\n  toggleDetailsPanelButton,\n  toggleDetailsPanelButtonOpened,\n  toggleDetailsPanelButtonClosed,\n  detailsPanel,\n  detailsPanelLabels,\n  selectedRowCell,\n  detailsPanelContent,\n} = {\n  host: { selector: () => 'vaadin-grid' },\n  headerRow: { selector: () => '::part(header-cell)' },\n  headerRowCell: { selector: () => 'vaadin-grid::part(header-cell)' },\n  contentRow: { selector: () => '::part(cell)' },\n  firstRow: { selector: () => '::part(first-header-row-cell)' },\n  selectedRow: { selector: () => '::part(selected-row)' },\n  selectedRowCell: { selector: () => '::part(selected-row-cell)' },\n  sortIndicators: { selector: () => 'vaadin-grid-sorter::part(indicators)' },\n  activeSortIndicator: { selector: () => 'vaadin-grid-sorter[direction]' },\n  rowSeparator: { selector: () => 'vaadin-grid::part(body-cell)' },\n  resizeHandle: { selector: () => '::part(resize-handle)' },\n  toggleDetailsPanelButton: { selector: () => 'vaadin-grid vaadin-icon.toggle-details-button' },\n  toggleDetailsPanelButtonOpened: {\n    selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.opened',\n  },\n  toggleDetailsPanelButtonClosed: {\n    selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.closed',\n  },\n  detailsPanel: { selector: () => 'vaadin-grid::part(details-cell)' },\n  detailsPanelLabels: { selector: () => 'vaadin-grid .row-details__label' },\n  detailsPanelContent: { selector: () => 'vaadin-grid .row-details' },\n};\n\nexport const GridClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostHeight: { selector: () => ':host', property: 'height' },\n      hostMinHeight: { selector: () => ':host', property: 'min-height' },\n      fontFamily: [{ ...headerRow }, { ...contentRow }],\n      fontSize: [{ ...headerRow }, { ...contentRow }],\n      fontWeight: { ...contentRow },\n      valueTextColor: { ...contentRow, property: 'color' },\n      backgroundColor: [\n        { ...host, property: 'background-color' },\n        { ...contentRow, property: 'background-color' },\n      ],\n      sortIndicatorsColor: { ...sortIndicators, property: 'color' },\n      activeSortIndicator: { ...activeSortIndicator, property: 'color' },\n      borderColor: { ...host, property: 'border-color' },\n      borderWidth: { ...host, property: 'border-width' },\n      borderStyle: { ...host, property: 'border-style' },\n      borderRadius: { ...host, property: 'border-radius' },\n      selectedBackgroundColor: [\n        { ...selectedRow, property: 'background-color' },\n        { ...selectedRowCell, property: 'background-color' },\n      ],\n      headerRowTextColor: { ...headerRowCell, property: 'color' },\n      separatorColor: [\n        { ...firstRow, property: 'border-bottom-color' },\n        { ...rowSeparator, property: 'border-top-color' },\n      ],\n      resizeHandleColor: { ...resizeHandle, property: 'background-color' },\n      hostDirection: { ...host, property: 'direction', fallback: 'ltr' },\n      toggleDetailsPanelButtonSize: [\n        { ...toggleDetailsPanelButton, property: 'width' },\n        { ...toggleDetailsPanelButton, property: 'height' },\n      ],\n      toggleDetailsPanelButtonOpenedColor: { ...toggleDetailsPanelButtonOpened, property: 'color' },\n      toggleDetailsPanelButtonClosedColor: { ...toggleDetailsPanelButtonClosed, property: 'color' },\n      toggleDetailsPanelButtonCursor: { ...toggleDetailsPanelButton, property: 'cursor' },\n      detailsPanelBackgroundColor: { ...detailsPanel, property: 'background-color' },\n      detailsPanelBorderTopColor: { ...detailsPanel, property: 'border-top-color' },\n      detailsPanelLabelsColor: { ...detailsPanelLabels, property: 'color' },\n      detailsPanelLabelsFontSize: { ...detailsPanelLabels, property: 'font-size' },\n      detailsPanelItemsGap: { ...detailsPanelContent, property: 'grid-gap' },\n      detailsPanelPadding: { ...detailsPanelContent, property: 'padding' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n  GridMixin\n)(\n  createProxy({\n    delegatesFocus: false,\n    slots: [''],\n    wrappedEleName: 'vaadin-grid',\n    style: () => `\n      /*css*/\n      vaadin-grid {\n        overflow: hidden;\n        height: 100%;\n        min-height: 300px;\n      }\n      vaadin-grid-cell-content {\n        display: flex;\n      }\n      vaadin-grid::part(selected-row-cell) {\n        background-image: none;\n        box-shadow: none;\n        background-color: inherit;\n      }\n      vaadin-grid::part(details-cell) {\n        border-top-style: dashed;\n        border-top-width: 1px;\n      }\n      vaadin-grid .row-details {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(max(200px, calc(100%/4 - var(${GridClass.cssVarList.detailsPanelItemsGap}))), 1fr));\n        width: 100%;\n      }\n      vaadin-grid .row-details__item:has(.row-details__value.code) {\n        grid-column: 1 / -1;\n        order: 2;\n      }\n      vaadin-grid .row-details__value.text {\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: pre;\n      }\n      vaadin-grid .row-details__value.code {\n        margin-top: 5px;\n        max-height: 120px;\n        overflow: scroll;\n        font-size: 0.85em;\n      }\n      vaadin-grid vaadin-icon.toggle-details-button {\n        margin: auto;\n      }\n    /*!css*/\n\t\t`,\n    excludeAttrsSync: ['columns', 'tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { GridClass } from '../../components/descope-grid/GridClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = GridClass.cssVarList;\n\nexport const grid = {\n  [vars.hostWidth]: '100%',\n  [vars.hostHeight]: '100%',\n  [vars.hostMinHeight]: '400px',\n  [vars.fontWeight]: '400',\n  [vars.backgroundColor]: globalRefs.colors.surface.main,\n\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n\n  [vars.sortIndicatorsColor]: globalRefs.colors.surface.light,\n  [vars.activeSortIndicator]: globalRefs.colors.surface.dark,\n  [vars.resizeHandleColor]: globalRefs.colors.surface.light,\n\n  [vars.borderWidth]: refs.borderWidth,\n  [vars.borderStyle]: refs.borderStyle,\n  [vars.borderRadius]: refs.borderRadius,\n  [vars.borderColor]: 'transparent',\n\n  [vars.headerRowTextColor]: globalRefs.colors.surface.dark,\n  [vars.separatorColor]: globalRefs.colors.surface.light,\n\n  [vars.valueTextColor]: globalRefs.colors.surface.contrast,\n  [vars.selectedBackgroundColor]: globalRefs.colors.surface.highlight,\n  [vars.hostDirection]: globalRefs.direction,\n\n  [vars.toggleDetailsPanelButtonSize]: '1em',\n  [vars.toggleDetailsPanelButtonOpenedColor]: globalRefs.colors.surface.contrast,\n  [vars.toggleDetailsPanelButtonClosedColor]: globalRefs.colors.surface.light,\n  [vars.toggleDetailsPanelButtonCursor]: 'pointer',\n  [vars.detailsPanelBackgroundColor]: globalRefs.colors.surface.highlight,\n  [vars.detailsPanelBorderTopColor]: globalRefs.colors.surface.light,\n  [vars.detailsPanelLabelsColor]: globalRefs.colors.surface.dark,\n  [vars.detailsPanelLabelsFontSize]: '0.8em',\n  [vars.detailsPanelItemsGap]: '2em',\n  [vars.detailsPanelPadding]: '12px 0',\n\n  _bordered: {\n    [vars.borderColor]: refs.borderColor,\n  },\n};\n\nexport default grid;\nexport { vars };\n","import { compose } from '../../../helpers';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { createStyleMixin, createProxy } from '../../../mixins';\n\nexport const componentName = getComponentName('notification-card');\n\nconst notificationCardMixin = (superclass) =>\n  class NotificationCardMixinClass extends superclass {\n    close() {\n      // if animation is not applied to the element, the node will not be removed\n      // from the DOM. We should avoid that. So, if in any case we allow\n      // customizing the animation - we should check if animation is applied\n      // and if it's not applied - remove the element from the DOM and dispatch\n      // `card-closed` event.\n      this.baseElement.addEventListener('animationend', () => {\n        this.remove();\n        this.dispatchEvent(new Event('card-closed'));\n      });\n\n      this.setAttribute('opened', 'false');\n    }\n\n    constructor() {\n      super();\n\n      this.baseElement.innerHTML = `\n      <div part=\"root\">\n        <div part=\"content\">\n          <slot></slot>\n        </div>\n        <div part=\"close\">\n          <slot name=\"close\"></slot>\n        </div>\n      </div>\n      `;\n\n      this.closeEle = this.shadowRoot.querySelector('[part=\"close\"]');\n    }\n\n    init() {\n      super.init?.();\n\n      this.closeEle.onclick = () => {\n        this.close();\n      };\n    }\n  };\n\nconst selectors = {\n  content: () => 'vaadin-notification-card::part(content)',\n  overlay: () => 'vaadin-notification-card::part(overlay)',\n};\n\nexport const NotificationCardClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostMinWidth: { selector: selectors.content, property: 'min-width' },\n      fontFamily: {},\n      fontSize: {},\n      backgroundColor: { selector: selectors.content },\n      textColor: { property: 'color' },\n      boxShadow: {},\n      borderWidth: { selector: selectors.content, property: 'border-width' },\n      borderColor: { selector: selectors.content, property: 'border-color' },\n      borderStyle: { selector: selectors.content, property: 'border-style' },\n      borderRadius: [\n        { selector: selectors.content, property: 'border-radius' },\n        { selector: selectors.overlay, property: 'border-radius' },\n      ],\n      verticalPadding: [\n        { selector: selectors.content, property: 'padding-top' },\n        { selector: selectors.content, property: 'padding-bottom' },\n      ],\n      horizontalPadding: [\n        { selector: selectors.content, property: 'padding-right' },\n        { selector: selectors.content, property: 'padding-left' },\n      ],\n    },\n  }),\n  notificationCardMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-notification-card',\n    style: () => `\n    vaadin-notification-card {\n      box-shadow: none;\n    }\n    ::part(overlay) {\n      box-shadow: none;\n      background: none;\n    }\n\n    [part=\"close\"] {\n      cursor: pointer;\n      display: flex;\n    }\n\n    [part=\"content\"] {\n      display: flex;\n      align-items: center;\n      flex-grow: 1;\n    }\n\n    [part=\"root\"] {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      width: 100%;\n    }\n    `,\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { NotificationCardClass } from '../../components/descope-notification/descope-notification-card/NotificationCardClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = NotificationCardClass.cssVarList;\n\nconst shadowColor = '#00000020';\n\nconst notification = {\n  [vars.hostMinWidth]: '415px',\n  [vars.fontFamily]: globalRefs.fonts.font1.family,\n  [vars.fontSize]: globalRefs.typography.body1.size,\n  [vars.backgroundColor]: globalRefs.colors.surface.main,\n  [vars.textColor]: globalRefs.colors.surface.contrast,\n  [vars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n  [vars.verticalPadding]: '0.625em',\n  [vars.horizontalPadding]: '1.5em',\n  [vars.borderRadius]: globalRefs.radius.xs,\n\n  _bordered: {\n    [vars.borderWidth]: globalRefs.border.sm,\n    [vars.borderStyle]: 'solid',\n    [vars.borderColor]: 'transparent',\n  },\n\n  size: {\n    xs: { [vars.fontSize]: '12px' },\n    sm: { [vars.fontSize]: '14px' },\n    md: { [vars.fontSize]: '16px' },\n    lg: { [vars.fontSize]: '18px' },\n  },\n\n  mode: {\n    primary: {\n      [vars.backgroundColor]: globalRefs.colors.primary.main,\n      [vars.textColor]: globalRefs.colors.primary.contrast,\n      [vars.borderColor]: globalRefs.colors.primary.light,\n    },\n    success: {\n      [vars.backgroundColor]: globalRefs.colors.success.main,\n      [vars.textColor]: globalRefs.colors.success.contrast,\n      [vars.borderColor]: globalRefs.colors.success.light,\n    },\n    error: {\n      [vars.backgroundColor]: globalRefs.colors.error.main,\n      [vars.textColor]: globalRefs.colors.error.contrast,\n      [vars.borderColor]: globalRefs.colors.error.light,\n    },\n  },\n};\n\nexport default notification;\nexport { vars };\n","import { compose, compareArraysUnordered } from '../../helpers';\nimport {\n  forwardAttrs,\n  getComponentName,\n  observeAttributes,\n  observeChildren,\n} from '../../helpers/componentHelpers';\nimport {\n  resetInputLabelPosition,\n  resetInputCursor,\n  resetInputPlaceholder,\n  resetInputReadonlyStyle,\n  useHostExternalPadding,\n  inputFloatingLabelStyle,\n} from '../../helpers/themeHelpers/resetHelpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n  portalMixin,\n  proxyInputMixin,\n  changeMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('multi-select-combo-box');\n\nconst multiSelectComboBoxMixin = (superclass) =>\n  class MultiSelectComboBoxMixinClass extends superclass {\n    static get observedAttributes() {\n      return ['readonly'];\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    #renderItem = ({ displayName, value, label }) => {\n      const ele = document.createElement('span');\n      ele.setAttribute('data-name', label);\n      ele.setAttribute('data-id', value);\n      ele.textContent = displayName || label;\n\n      return ele.outerHTML;\n    };\n\n    #data;\n\n    #value = [];\n\n    get defaultValues() {\n      const defaultValuesAttr = this.getAttribute('default-values');\n      if (defaultValuesAttr) {\n        try {\n          const defaultValues = JSON.parse(defaultValuesAttr);\n          if (this.isValidDataType(defaultValues)) {\n            return defaultValues;\n          }\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error('could not parse data string from attribute \"default-values\" -', e.message);\n        }\n      }\n      return [];\n    }\n\n    get renderItem() {\n      return this.#renderItem;\n    }\n\n    set renderItem(renderFn) {\n      this.#renderItem = renderFn;\n      this.renderItems();\n    }\n\n    get data() {\n      if (this.#data) return this.#data;\n\n      const dataAttr = this.getAttribute('data');\n\n      if (dataAttr) {\n        try {\n          const data = JSON.parse(dataAttr);\n          if (this.isValidDataType(data)) {\n            return data;\n          }\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error('could not parse data string from attribute \"data\" -', e.message);\n        }\n      }\n\n      return [];\n    }\n\n    set data(data) {\n      if (this.isValidDataType(data)) {\n        this.#data = data;\n        this.renderItems();\n      }\n    }\n\n    get allowCustomValues() {\n      return this.getAttribute('allow-custom-value') === 'true';\n    }\n\n    get minItemsSelection() {\n      return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n    }\n\n    get maxItemsSelection() {\n      return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    isValidDataType(data) {\n      const isValid = Array.isArray(data);\n      if (!isValid) {\n        // eslint-disable-next-line no-console\n        console.error('data and default-values must be an array, received:', data);\n      }\n\n      return isValid;\n    }\n\n    getItemsTemplate() {\n      return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n    }\n\n    renderItems() {\n      const template = this.getItemsTemplate();\n      if (template) this.innerHTML = template;\n    }\n\n    updateSelectedItems() {\n      // This is a list of all the selected items, including ones that may have been removed from the DOM\n      const currentSelected =\n        this.baseElement.selectedItems?.map((item) => item.getAttribute('data-id')) || [];\n\n      // if there are selected items, we want to trigger a potential update to the value if some child elements were removed\n      if (currentSelected.length > 0) {\n        // setting the value checks that the selected items are still in the DOM and will not set the value if they are not\n        this.value = currentSelected;\n      }\n\n      // otherwise, if default value is specified, set default value as selected item\n      if (this.value.length === 0) {\n        this.setDefaultValues();\n      }\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    customValueTransformFn(val) {\n      return val;\n    }\n\n    // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the\n    // field that it searches the value, and the finaly display value of the input.\n    // We provide a custom transform function to override that behavior.\n    setComboBoxDescriptor() {\n      const valueDescriptor = Object.getOwnPropertyDescriptor(\n        this.inputElement.constructor.prototype,\n        'value'\n      );\n\n      const comboBox = this;\n\n      Object.defineProperties(this.inputElement, {\n        value: {\n          ...valueDescriptor,\n          set(val) {\n            const transformedValue = comboBox.customValueTransformFn(val) || '';\n\n            if (transformedValue === this.value) {\n              return;\n            }\n\n            valueDescriptor.set.call(this, transformedValue);\n          },\n        },\n      });\n    }\n\n    // To prevent duplicate items for the multi select options, we dedup them based on the \"data-id\" attribute\n    // eslint-disable-next-line class-methods-use-this\n    #dedupItems(items) {\n      return Array.from(\n        new Map(items.map((item) => [item.getAttribute('data-id'), item])).values()\n      );\n    }\n\n    // vaadin api is to set props on their combo box node,\n    // in order to avoid it, we are passing the children of this component\n    // to the items & renderer props, so it will be used as the combo box items\n    #onChildrenChange() {\n      const items = Array.from(this.children);\n      const dedupItems = this.#dedupItems(items);\n\n      // we want the data-name attribute to be accessible as an object attribute\n      if (items.length) {\n        this.removeAttribute('has-no-options');\n\n        dedupItems.forEach((node) => {\n          Object.defineProperty(node, 'data-name', {\n            value: node.getAttribute('data-name'),\n            configurable: true,\n            writable: true,\n          });\n          Object.defineProperty(node, 'data-id', {\n            value: node.getAttribute('data-id'),\n            configurable: true,\n            writable: true,\n          });\n        });\n\n        this.baseElement.items = dedupItems;\n\n        setTimeout(() => {\n          // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden\n          this.updateSelectedItems();\n        }, 0);\n      } else {\n        this.baseElement.items = [];\n        this.setAttribute('has-no-options', '');\n      }\n\n      // use vaadin combobox custom renderer to render options as HTML\n      // and not via default renderer, which renders only the data-name's value\n      // in its own HTML template\n      this.baseElement.renderer = (root, combo, model) => {\n        // eslint-disable-next-line no-param-reassign\n        root.innerHTML = model.item.outerHTML;\n      };\n    }\n\n    // the default vaadin behavior is to attach the overlay to the body when opened\n    // we do not want that because it's difficult to style the overlay in this way\n    // so we override it to open inside the shadow DOM\n    #overrideOverlaySettings() {\n      const overlay = this.baseElement.shadowRoot\n        .querySelector('vaadin-multi-select-combo-box-internal')\n        .shadowRoot.querySelector('vaadin-multi-select-combo-box-overlay');\n      overlay._attachOverlay = () => {\n        overlay.bringToFront();\n      };\n      overlay._detachOverlay = () => {};\n      overlay._enterModalState = () => {};\n    }\n\n    #handleCustomValues() {\n      if (this.allowCustomValues) {\n        this.baseElement.addEventListener('custom-value-set', (e) => {\n          const newItemHtml = this.#renderItem({\n            label: e.detail,\n            displayName: e.detail,\n            value: e.detail,\n          });\n          this.innerHTML += newItemHtml;\n          // The internal filter needs to be removed, otherwise there's a bug where a new custom item\n          // added can't be removed from the dropdown because of how the vaadin component is implemented\n          this.baseElement._lastFilter = '';\n          // The value needs to be set with a timeout because it needs to execute after\n          // the custom value is added to items by the children change observer\n          setTimeout(() => {\n            this.value = [...this.value, e.detail];\n          }, 0);\n        });\n      }\n    }\n\n    setGetValidity() {\n      // eslint-disable-next-line func-names\n      this.getValidity = function () {\n        if (this.pattern) {\n          const patternRegex = new RegExp(this.pattern);\n          if (this.value.some((val) => !patternRegex.test(val)))\n            return {\n              patternMismatch: true,\n            };\n        }\n\n        if (this.isRequired && !this.value.length) {\n          return {\n            valueMissing: true,\n          };\n        }\n        // If the field is not required, no minimum selection can be set\n        if (\n          this.isRequired &&\n          this.minItemsSelection &&\n          this.value.length < this.minItemsSelection\n        ) {\n          return {\n            rangeUnderflow: true,\n          };\n        }\n        if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n          return {\n            rangeOverflow: true,\n          };\n        }\n        return {};\n      };\n\n      // This is required to override the default validity check of the vaadin component\n      // which is triggered when the component is checked for validity after blur\n      // Without this, our minItemsSelection and maxItemsSelection constraints will not be checked\n      const that = this;\n      // eslint-disable-next-line func-names\n      this.baseElement.checkValidity = () => {\n        return that.validity.valid;\n      };\n    }\n\n    init() {\n      super.init?.();\n\n      this.setGetValidity();\n\n      this.#handleCustomValues();\n\n      this.renderItems();\n\n      observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n      observeChildren(this, this.#onChildrenChange.bind(this));\n\n      // Note: we need to forward the `placeholder` because the vaadin component observes it and\n      // tries to override it, causing us to lose the user set placeholder.\n      forwardAttrs(this, this.baseElement, { includeAttrs: ['placeholder'] });\n\n      // This is a workaround for a problem we have in Console App, where in ScreenBuilder - the inputElement is not ready when trying to\n      // set the component's descriptor and override the overlay settings.\n      // THIS IS A PROBLEM WITH THE CONSOLE APP THAT NEEDS TO BE RESOLVED. Until then, we use this workaround.\n      setTimeout(() => {\n        this.setComboBoxDescriptor();\n        this.#overrideOverlaySettings();\n      });\n\n      this.setDefaultValues();\n\n      this.baseElement.addEventListener('selected-items-changed', () => {\n        this.#updateInternalValue();\n        this.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n      });\n    }\n\n    setDefaultValues() {\n      const initialDefaultValues = this.defaultValues;\n      if (initialDefaultValues.length > 0) {\n        this.value = this.defaultValues;\n      }\n    }\n\n    #updateInternalValue() {\n      // This is done here because we don't want to return a different copy of the same array\n      // every time get value is called if a new value wasn't set\n      this.#value =\n        this.baseElement.selectedItems?.map((elem) => elem.getAttribute('data-id')) || [];\n    }\n\n    // Updating the value will update the selectedItems, which will trigger an event 'selected-items-changed'\n    // which we listen to in the init function to update the internal value\n    set value(vals) {\n      if (vals && vals.length > 0) {\n        // Filters the children of the component to find the ones that match the values,\n        // since it's possible that some values that are trying to set are not in the children\n        const selectedChildren = this.baseElement.items?.filter((item) =>\n          vals.includes(item['data-id'])\n        );\n\n        // If the component allows custom values, we need to add the values that are not present in the children\n        if (this.allowCustomValues) {\n          const existingValues =\n            selectedChildren?.map((child) => child.getAttribute('data-id')) || [];\n          const missingValues = vals.filter((val) => !existingValues.includes(val));\n\n          if (missingValues.length) {\n            const newItemsHtml = missingValues.reduce((acc, val) => {\n              const newItemHtml = this.#renderItem({\n                label: val,\n                displayName: val,\n                value: val,\n              });\n              return acc + newItemHtml;\n            }, '');\n            this.innerHTML += newItemsHtml;\n\n            // The value needs to be set with a timeout because it needs to execute after\n            // the custom values are added to the items by the children change observer\n            setTimeout(() => {\n              this.value = vals;\n            }, 0);\n            return;\n          }\n        }\n\n        const newSelectedValues =\n          selectedChildren?.map((child) => child.getAttribute('data-id')) || [];\n        if (!compareArraysUnordered(this.#value, newSelectedValues)) {\n          this.baseElement.selectedItems = selectedChildren;\n        }\n      } else {\n        this.baseElement.selectedItems = [];\n      }\n    }\n\n    get value() {\n      return this.#value;\n    }\n\n    attributeChangedCallback(attrName, oldValue, newValue) {\n      super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n      if (attrName === 'readonly') {\n        this.onReadOnlyChange(newValue !== null && newValue === 'true');\n      }\n    }\n\n    onReadOnlyChange(val) {\n      if (val) {\n        this.baseElement?.shadowRoot\n          ?.querySelector('vaadin-multi-select-combo-box-internal')\n          ?.setAttribute('inert', val);\n      } else {\n        this.baseElement?.shadowRoot\n          ?.querySelector('vaadin-multi-select-combo-box-internal')\n          ?.removeAttribute('inert');\n      }\n    }\n  };\n\nconst {\n  host,\n  inputField,\n  inputElement,\n  placeholder,\n  toggle,\n  clearButton,\n  label,\n  requiredIndicator,\n  helperText,\n  errorMessage,\n  chip,\n  chipLabel,\n  overflowChipFirstBorder,\n  overflowChipSecondBorder,\n} = {\n  host: { selector: () => ':host' },\n  inputField: { selector: '::part(input-field)' },\n  inputElement: { selector: 'input' },\n  placeholder: { selector: '> input:placeholder-shown' },\n  toggle: { selector: '::part(toggle-button)' },\n  clearButton: { selector: '::part(clear-button)' },\n  label: { selector: '::part(label)' },\n  requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n  chip: { selector: 'vaadin-multi-select-combo-box-chip' },\n  chipLabel: { selector: 'vaadin-multi-select-combo-box-chip::part(label)' },\n  overflowChipFirstBorder: {\n    selector: \"vaadin-multi-select-combo-box-chip[slot='overflow']::before\",\n  },\n  overflowChipSecondBorder: {\n    selector: \"vaadin-multi-select-combo-box-chip[slot='overflow']::after\",\n  },\n};\n\nexport const MultiSelectComboBoxClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      // we apply font-size also on the host so we can set its width with em\n      fontSize: [{}, host],\n      chipFontSize: { ...chipLabel, property: 'font-size' },\n      fontFamily: [label, placeholder, inputField, helperText, errorMessage, chipLabel],\n      labelFontSize: { ...label, property: 'font-size' },\n      labelFontWeight: { ...label, property: 'font-weight' },\n      labelTextColor: [\n        { ...label, property: 'color' },\n        { ...requiredIndicator, property: 'color' },\n      ],\n      errorMessageTextColor: { ...errorMessage, property: 'color' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n      inputHeight: { ...inputField, property: 'min-height' },\n      inputBackgroundColor: { ...inputField, property: 'background-color' },\n      inputBorderColor: { ...inputField, property: 'border-color' },\n      inputBorderWidth: { ...inputField, property: 'border-width' },\n      inputBorderStyle: { ...inputField, property: 'border-style' },\n      inputBorderRadius: { ...inputField, property: 'border-radius' },\n      labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n      inputValueTextColor: { ...inputField, property: 'color' },\n      inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n      inputDropdownButtonCursor: [\n        { ...toggle, property: 'cursor' },\n        { ...clearButton, property: 'cursor' },\n      ],\n      inputDropdownButtonColor: [\n        { ...toggle, property: 'color' },\n        { ...clearButton, property: 'color' },\n      ],\n      inputDropdownButtonSize: [\n        { ...toggle, property: 'font-size' },\n        { ...clearButton, property: 'font-size' },\n      ],\n      inputDropdownButtonOffset: [\n        { ...toggle, property: 'margin-right' },\n        { ...toggle, property: 'margin-left' },\n      ],\n      inputOutlineColor: { ...inputField, property: 'outline-color' },\n      inputOutlineWidth: { ...inputField, property: 'outline-width' },\n      inputOutlineStyle: { ...inputField, property: 'outline-style' },\n      inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n      inputHorizontalPadding: [\n        { ...inputElement, property: 'padding-left' },\n        { ...inputElement, property: 'padding-right' },\n        { ...inputField, property: 'padding-inline-start' },\n      ],\n      inputVerticalPadding: [\n        { ...inputField, property: 'padding-top' },\n        { ...inputField, property: 'padding-bottom' },\n      ],\n      chipTextColor: { ...chipLabel, property: 'color' },\n      chipBackgroundColor: [\n        { ...chip, property: 'background-color' },\n        { ...overflowChipFirstBorder, property: 'border-color' },\n        { ...overflowChipSecondBorder, property: 'border-color' },\n      ],\n\n      labelPosition: { ...label, property: 'position' },\n      labelTopPosition: { ...label, property: 'top' },\n      labelLeftPosition: { ...label, property: 'left' },\n      labelHorizontalPosition: [\n        { ...label, property: 'left' },\n        { ...label, property: 'right' },\n      ],\n      inputTransformY: { ...label, property: 'transform' },\n      inputTransition: { ...label, property: 'transition' },\n      marginInlineStart: { ...label, property: 'margin-inline-start' },\n      placeholderOpacity: { ...placeholder, property: 'opacity' },\n      inputVerticalAlignment: { ...inputField, property: 'align-items' },\n\n      // we need to use the variables from the portal mixin\n      // so we need to use an arrow function on the selector\n      // for that to work, because ComboBox is not available\n      // at this time.\n      overlayBackground: {\n        property: () => MultiSelectComboBoxClass.cssVarList.overlay.backgroundColor,\n      },\n      overlayTextColor: {\n        property: () => MultiSelectComboBoxClass.cssVarList.overlay.textColor,\n      },\n      overlayBorder: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.border },\n      overlayFontSize: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontSize },\n      overlayFontFamily: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontFamily },\n      overlayCursor: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.cursor },\n      overlayItemBoxShadow: {\n        property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemBoxShadow,\n      },\n      overlayItemPaddingInlineStart: {\n        property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,\n      },\n      overlayItemPaddingInlineEnd: {\n        property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,\n      },\n    },\n  }),\n  draggableMixin,\n  portalMixin({\n    name: 'overlay',\n    selector: 'vaadin-multi-select-combo-box-internal',\n    mappings: {\n      backgroundColor: { selector: 'vaadin-multi-select-combo-box-scroller' },\n      minHeight: { selector: 'vaadin-multi-select-combo-box-overlay' },\n      margin: { selector: 'vaadin-multi-select-combo-box-overlay' },\n      cursor: { selector: 'vaadin-multi-select-combo-box-item' },\n      fontFamily: { selector: 'vaadin-multi-select-combo-box-item' },\n      textColor: { selector: 'vaadin-multi-select-combo-box-item', property: 'color' },\n      fontSize: { selector: 'vaadin-multi-select-combo-box-item' },\n      itemBoxShadow: { selector: 'vaadin-multi-select-combo-box-item', property: 'box-shadow' },\n      itemPaddingInlineStart: {\n        selector: 'vaadin-multi-select-combo-box-item',\n        property: 'padding-inline-start',\n      },\n      itemPaddingInlineEnd: {\n        selector: 'vaadin-multi-select-combo-box-item',\n        property: 'padding-inline-end',\n      },\n    },\n    forward: {\n      include: false,\n      attributes: ['size'],\n    },\n  }),\n  proxyInputMixin({ proxyProps: ['selectionStart'], inputEvent: 'selected-items-changed' }),\n  changeMixin,\n  componentNameValidationMixin,\n  multiSelectComboBoxMixin\n)(\n  createProxy({\n    slots: ['', 'prefix'],\n    wrappedEleName: 'vaadin-multi-select-combo-box',\n    style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\tbox-sizing: border-box;\n\t\t\t-webkit-mask-image: none;\n\t\t}\n\t\t${useHostExternalPadding(MultiSelectComboBoxClass.cssVarList)}\n\t\t${resetInputReadonlyStyle('vaadin-multi-select-combo-box')}\n\t\t${resetInputPlaceholder('vaadin-multi-select-combo-box')}\n\t\t${resetInputCursor('vaadin-multi-select-combo-box')}\n\n\t\tvaadin-multi-select-combo-box {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tvaadin-multi-select-combo-box::before {\n\t\t\theight: initial;\n\t\t}\n\t\tvaadin-multi-select-combo-box [slot=\"input\"] {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n      align-self: center;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\tvaadin-multi-select-combo-box[readonly] [slot=\"input\"] {\n      flex-grow: 1;\n      flex-basis: 4em;\n\t\t}\n\n\t\t::part(input-field) {\n      padding: 0;\n\t\t\tbox-shadow: none;\n\t\t}\n    ${resetInputLabelPosition('vaadin-multi-select-combo-box')}\n    :host([has-label]) vaadin-multi-select-combo-box-chip::part(label) {\n      display: block;\n    }\n\n    vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::before,\n    vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {\n      left: -4px;\n      right: -4px;\n      border-left-width: 0;\n      border-inline-start-style: solid;\n      border-inline-start-width: 2px;\n    }\n    vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {\n      left: -8px;\n      right: -8px;\n    }\n\n    :host([has-no-options][allow-custom-value='true']) ::part(toggle-button) {\n      display: none;\n    }\n\n    ${inputFloatingLabelStyle()}\n\n    vaadin-multi-select-combo-box::part(toggle-button),\n    vaadin-multi-select-combo-box::part(clear-button) {\n      align-self: center;\n    }\n\n    vaadin-multi-select-combo-box[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n      opacity: 0;\n    }\n    vaadin-multi-select-combo-box[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n      opacity: 0;\n    }\n\n\t\t`,\n    // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property\n    // with the same name. Including it will cause Vaadin to calculate NaN size,\n    // and reset items to an empty array, and opening the list box with no items\n    // to display.\n    // Note: we exclude `placeholder` because the vaadin component observes it and\n    // tries to override it, causing us to lose the user set placeholder.\n    excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],\n    componentName,\n    includeForwardProps: ['items', 'renderer', 'selectedItems'],\n  })\n);\n","import globals from '../globals';\nimport { MultiSelectComboBoxClass } from '../../components/descope-multi-select-combo-box/MultiSelectComboBoxClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = MultiSelectComboBoxClass.cssVarList;\n\nexport const multiSelectComboBox = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelFontSize]: refs.labelFontSize,\n  [vars.labelFontWeight]: refs.labelFontWeight,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.inputBorderColor]: refs.borderColor,\n  [vars.inputBorderWidth]: refs.borderWidth,\n  [vars.inputBorderStyle]: refs.borderStyle,\n  [vars.inputBorderRadius]: refs.borderRadius,\n  [vars.inputOutlineColor]: refs.outlineColor,\n  [vars.inputOutlineOffset]: refs.outlineOffset,\n  [vars.inputOutlineWidth]: refs.outlineWidth,\n  [vars.inputOutlineStyle]: refs.outlineStyle,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.inputValueTextColor]: refs.valueTextColor,\n  [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n  [vars.inputBackgroundColor]: refs.backgroundColor,\n  [vars.inputHorizontalPadding]: refs.horizontalPadding,\n  [vars.inputVerticalPadding]: refs.verticalPadding,\n  [vars.inputHeight]: refs.inputHeight,\n  [vars.inputDropdownButtonColor]: globalRefs.colors.surface.dark,\n  [vars.inputDropdownButtonCursor]: 'pointer',\n  [vars.inputDropdownButtonSize]: refs.toggleButtonSize,\n  [vars.inputDropdownButtonOffset]: globalRefs.spacing.xs,\n  [vars.overlayItemPaddingInlineStart]: globalRefs.spacing.xs,\n  [vars.overlayItemPaddingInlineEnd]: globalRefs.spacing.lg,\n  [vars.chipFontSize]: refs.chipFontSize,\n  [vars.chipTextColor]: globalRefs.colors.surface.contrast,\n  [vars.chipBackgroundColor]: globalRefs.colors.surface.light,\n  [vars.labelPosition]: refs.labelPosition,\n  [vars.labelTopPosition]: refs.labelTopPosition,\n  [vars.labelLeftPosition]: refs.labelLeftPosition,\n  [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n  [vars.inputTransformY]: refs.inputTransformY,\n  [vars.inputTransition]: refs.inputTransition,\n  [vars.marginInlineStart]: refs.marginInlineStart,\n  [vars.placeholderOpacity]: refs.placeholderOpacity,\n  [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  labelType: {\n    floating: {\n      [vars.inputHorizontalPadding]: '0.25em',\n      _hasValue: {\n        [vars.inputHorizontalPadding]: '0.45em',\n      },\n    },\n  },\n\n  _readonly: {\n    [vars.inputDropdownButtonCursor]: 'default',\n  },\n\n  // Overlay theme exposed via the component:\n  [vars.overlayFontSize]: refs.fontSize,\n  [vars.overlayFontFamily]: refs.fontFamily,\n  [vars.overlayCursor]: 'pointer',\n  [vars.overlayItemBoxShadow]: 'none',\n  [vars.overlayBackground]: refs.backgroundColor,\n  [vars.overlayTextColor]: refs.valueTextColor,\n\n  // Overlay direct theme:\n  [vars.overlay.minHeight]: '400px',\n  [vars.overlay.margin]: '0',\n};\n\nexport default multiSelectComboBox;\nexport { vars };\n","import {\n  componentNameValidationMixin,\n  createStyleMixin,\n  draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('badge');\n\nclass RawBadge extends createBaseClass({\n  componentName,\n  baseSelector: ':host > div',\n}) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n      <slot></slot>\n\t\t</div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n      :host > div {\n        width: 100%;\n        text-overflow: ellipsis;\n        overflow: hidden;\n        white-space: nowrap;\n      }\n      `,\n      this,\n    );\n  }\n}\n\nexport const BadgeClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: [{ selector: () => ':host', property: 'width' }],\n      hostDirection: { property: 'direction' },\n\n      fontFamily: {},\n      fontSize: {},\n      fontWeight: {},\n      textTransform: {},\n      verticalPadding: [\n        { property: 'padding-top' },\n        { property: 'padding-bottom' },\n      ],\n      horizontalPadding: [\n        { property: 'padding-left' },\n        { property: 'padding-right' },\n      ],\n\n      borderWidth: {},\n      borderStyle: {},\n      borderColor: {},\n      borderRadius: {},\n\n      backgroundColor: {},\n\n      textColor: { property: 'color' },\n      textAlign: {},\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawBadge);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { BadgeClass } from './component/BadgeClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = BadgeClass.cssVarList;\n\nconst badge = {\n  [vars.hostWidth]: 'fit-content',\n  [vars.hostDirection]: globalRefs.direction,\n\n  [vars.textAlign]: 'center',\n\n  [vars.fontFamily]: globalRefs.fonts.font1.family,\n  [vars.fontWeight]: '400',\n\n  [vars.verticalPadding]: '0.25em',\n  [vars.horizontalPadding]: '0.5em',\n\n  [vars.borderWidth]: globalRefs.border.xs,\n  [vars.borderRadius]: globalRefs.radius.xs,\n  [vars.borderColor]: 'transparent',\n  [vars.borderStyle]: 'solid',\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n\n  size: {\n    xs: { [vars.fontSize]: '12px' },\n    sm: { [vars.fontSize]: '14px' },\n    md: { [vars.fontSize]: '16px' },\n    lg: { [vars.fontSize]: '18px' },\n  },\n\n  mode: {\n    default: {\n      [vars.textColor]: globalRefs.colors.surface.dark,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.surface.light,\n      },\n    },\n    primary: {\n      [vars.textColor]: globalRefs.colors.primary.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.primary.light,\n      },\n    },\n    secondary: {\n      [vars.textColor]: globalRefs.colors.secondary.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.secondary.light,\n      },\n    },\n    error: {\n      [vars.textColor]: globalRefs.colors.error.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.error.light,\n      },\n    },\n    success: {\n      [vars.textColor]: globalRefs.colors.success.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.success.light,\n      },\n    },\n  },\n};\n\nexport default badge;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  forwardAttrs,\n  getComponentName,\n  injectStyle,\n  observeAttributes,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('avatar');\nclass RawAvatar extends createBaseClass({\n  componentName,\n  baseSelector: ':host > .wrapper',\n}) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"wrapper\">\n        <vaadin-avatar></vaadin-avatar>\n        <div class=\"editableBadge\">\n          <vaadin-icon icon=\"vaadin:pencil\"></vaadin-icon>\n        </div>\n      </div>\n\t\t`;\n\n    injectStyle(`\n        :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n        .editableBadge {\n          border: 1px solid;\n          border-radius: 100%;\n          height: fit-content;\n          width: 25%;\n          height: 25%;\n          display: flex;\n          justify-content: center;\n          align-items: center;\n          padding: 5%;\n          box-sizing: border-box;\n          position: absolute;\n          bottom: 0;\n          inset-inline-end: 0;\n        }\n\n        vaadin-icon {\n          color: currentcolor;\n        }\n\n        vaadin-avatar {\n          width: 100%;\n          height: 100%;\n          margin: 0;\n          border: none\n        }\n\n        .wrapper {\n          display: inline-flex;\n          position: relative;\n          width: 100%;\n          height: 100%;\n        }\n    `, this);\n\n    this.avatarComponent = this.shadowRoot.querySelector('vaadin-avatar');\n\n    forwardAttrs(this, this.avatarComponent, {\n      includeAttrs: ['display-name', 'img', 'abbr'],\n      mapAttrs: { 'display-name': 'name' },\n    });\n\n    const editableIcon = this.shadowRoot.querySelector('.editableBadge');\n\n    observeAttributes(\n      this,\n      () => {\n        editableIcon.style.display = this.isEditable ? '' : 'none';\n      },\n      { includeAttrs: ['editable'] },\n    );\n  }\n\n  get isEditable() {\n    return this.getAttribute('editable') === 'true';\n  }\n}\n\nconst { host, editableBadge, avatar } = {\n  host: { selector: () => ':host' },\n  editableBadge: { selector: '> .editableBadge' },\n  avatar: { selector: 'vaadin-avatar' },\n};\n\nexport const AvatarClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: [\n        { ...host, property: 'width' },\n        { ...host, property: 'min-width' },\n      ],\n      hostHeight: { ...host, property: 'height' },\n      cursor: [avatar, host],\n      hostDirection: { ...host, property: 'direction' },\n      avatarTextColor: { ...avatar, property: 'color' },\n      avatarBackgroundColor: { ...avatar, property: 'background-color' },\n      editableIconColor: { ...editableBadge, property: 'color' },\n      editableBorderColor: { ...editableBadge, property: 'border-color' },\n      editableBackgroundColor: {\n        ...editableBadge,\n        property: 'background-color',\n      },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawAvatar);\n","import globals from '@descope-ui/theme-globals';\nimport { AvatarClass } from './component/AvatarClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = AvatarClass.cssVarList;\n\nconst avatar = {\n  [compVars.hostDirection]: globalRefs.direction,\n  [compVars.editableIconColor]: globalRefs.colors.surface.dark,\n  [compVars.editableBorderColor]: globalRefs.colors.surface.dark,\n  [compVars.editableBackgroundColor]: globalRefs.colors.surface.main,\n  [compVars.avatarTextColor]: globalRefs.colors.surface.main,\n  [compVars.avatarBackgroundColor]: globalRefs.colors.surface.dark,\n\n  _editable: {\n    [compVars.cursor]: 'pointer',\n  },\n\n  size: {\n    xs: {\n      [compVars.hostWidth]: '30px',\n      [compVars.hostHeight]: '30px',\n    },\n    sm: {\n      [compVars.hostWidth]: '40px',\n      [compVars.hostHeight]: '40px',\n    },\n    md: {\n      [compVars.hostWidth]: '60px',\n      [compVars.hostHeight]: '60px',\n    },\n    lg: {\n      [compVars.hostWidth]: '98px',\n      [compVars.hostHeight]: '98px',\n    },\n  },\n};\n\nexport default avatar;\n\nexport const vars = {\n  ...compVars,\n};\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n  getComponentName,\n  forwardAttrs,\n  observeChildren,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mappings-field-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingsFieldInternal extends BaseInputClass {\n  #errorItem;\n\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], [\n      'label-value',\n      'label-attr',\n      'button-label',\n      'invalid',\n      'readonly',\n      'disabled',\n      'st-error-message-icon',\n      'st-error-message-icon-size',\n      'st-error-message-icon-padding',\n    ]);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  isValidDataType(data) {\n    try {\n      return data.every(\n        (obj) =>\n          typeof obj === 'object' &&\n          !Array.isArray(obj) &&\n          Object.getOwnPropertyNames(obj).length === 1 &&\n          typeof obj[Object.keys(obj)[0]] === 'string' &&\n          obj[Object.keys(obj)[0]].trim() !== ''\n      );\n    } catch (e) {\n      return false;\n    }\n  }\n\n  get labelValue() {\n    return this.getAttribute('label-value') || 'Value';\n  }\n\n  get labelAttr() {\n    return this.getAttribute('label-attr') || 'Attribute';\n  }\n\n  get buttonLabel() {\n    return this.getAttribute('button-label') || 'Add mapping';\n  }\n\n  get options() {\n    return this.getAttribute('options') || [];\n  }\n\n  addNewMappingItem(focusNewItem) {\n    const newMappingItem = document.createElement('descope-mapping-item');\n    newMappingItem.setAttribute('bordered', 'true');\n    this.mappingsContainerEle.appendChild(newMappingItem);\n    forwardAttrs(this, newMappingItem, {\n      includeAttrs: [\n        'size',\n        'full-width',\n        'separator',\n        'options',\n        'disabled',\n        'st-error-message-icon',\n        'st-error-message-icon-size',\n        'st-error-message-icon-padding',\n      ],\n    });\n    // This needs to be done with the timeout, otherwise the validation is performed\n    // before the new item is added and thus returns a wrong result\n    setTimeout(() => {\n      this.setCustomValidity('');\n      newMappingItem.addEventListener('mapping-item-removed', () => {\n        // If the removed item was the one that was invalid, we need to reset the invalid indication for the internal\n        if (newMappingItem === this.#errorItem) {\n          this.resetInvalidIndication();\n          this.#errorItem = undefined;\n        }\n        newMappingItem.remove();\n        this.setCustomValidity('');\n      });\n      this.dispatchEvent(new CustomEvent('mapping-item-added', { bubbles: true, composed: true }));\n      if (focusNewItem) {\n        newMappingItem.focus();\n      }\n    }, 0);\n    return newMappingItem;\n  }\n\n  get items() {\n    return Array.from(this.mappingsContainerEle.querySelectorAll('descope-mapping-item'));\n  }\n\n  get value() {\n    return this.items.reduce((acc, item) => {\n      if (!item.value) {\n        return acc;\n      }\n\n      return [...acc, item.value];\n    }, []);\n  }\n\n  set value(mappings) {\n    if (!this.isValidDataType(mappings)) {\n      // eslint-disable-next-line no-console\n      console.error(\n        'received invalid value to set - should be an array of objects with one key-value pair'\n      );\n      return;\n    }\n\n    const currentItems = this.items;\n\n    // Remove extra mapping items we don't need\n    if (currentItems.length > mappings.length) {\n      for (let i = mappings.length; i < currentItems.length; i++) {\n        this.mappingsContainerEle.removeChild(currentItems[i]);\n      }\n    }\n\n    // Add or update items\n    mappings.forEach((mapping, index) => {\n      const mappingItem = currentItems[index];\n      if (mappingItem) {\n        // Set existing item value\n        mappingItem.value = mapping;\n      } else {\n        // Add new item\n        const newMappingItem = this.addNewMappingItem(false);\n        // Setting the new item value needs to be done with the timeout,\n        // otherwise the value is not set correctly\n        setTimeout(() => {\n          newMappingItem.value = mapping;\n        }, 0);\n      }\n    });\n  }\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n      <div class=\"labels-container\" part=\"labels\"></div>\n      <div class=\"mappings-container\"></div>\n      <div class=\"button-container\"></div>\n    `;\n\n    this.labelsEle = this.querySelector('.labels-container');\n    this.mappingsContainerEle = this.querySelector('.mappings-container');\n    this.buttonContainer = this.querySelector('.button-container');\n  }\n\n  initLabels() {\n    this.labelsEle.innerHTML = `\n      <descope-text variant=\"body2\" part=\"value-label\">${this.labelValue}</descope-text>\n      <descope-text variant=\"body2\" part=\"attr-label\">${this.labelAttr}</descope-text>\n    `;\n  }\n\n  initAddButton() {\n    this.buttonContainer.innerHTML = `\n      <descope-button variant=\"link\" mode=\"primary\" disabled=\"${this.isDisabled}\">\n        <vaadin-icon icon=\"vaadin:plus\"></vaadin-icon>\n        ${this.buttonLabel}\n      </descope-button>\n    `;\n    const button = this.querySelector('descope-button');\n    button.onclick = () => {\n      this.addNewMappingItem(true);\n    };\n    forwardAttrs(this, button, {\n      includeAttrs: ['disabled'],\n    });\n  }\n\n  #onMappingsContainerChildrenChange() {\n    this.labelsEle.style.display = this.items.length ? 'grid' : 'none';\n  }\n\n  init() {\n    // This event listener needs to be placed before the super.init() call\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) {\n        const focusedElement =\n          this.#errorItem || this.items[0] || this.querySelector('descope-button');\n        focusedElement.focus();\n      }\n    });\n\n    super.init?.();\n    this.initLabels();\n    this.initAddButton();\n\n    // This event listener is responsible for removing the invalid attribute\n    // from the internal once the invalid item turns valid\n    this.addEventListener('input', () => {\n      const isErrorItemMounted = this.mappingsContainerEle.contains(this.#errorItem);\n      if (isErrorItemMounted && this.#errorItem?.checkValidity()) {\n        // Item has changed, it was invalid before and now it's valid\n        this.resetInvalidIndication();\n        this.#errorItem.removeAttribute('invalid');\n        this.#errorItem = undefined;\n      }\n    });\n\n    observeChildren(this.mappingsContainerEle, this.#onMappingsContainerChildrenChange.bind(this));\n  }\n\n  resetInvalidIndication() {\n    this.removeAttribute('invalid');\n  }\n\n  getValidity() {\n    const errorItem = this.items.find((item) => !item.checkValidity());\n    if (errorItem) {\n      return errorItem.validity;\n    }\n\n    return {};\n  }\n\n  #handleInvalidMappings(isInvalid) {\n    if (isInvalid) {\n      this.#errorItem = this.items.find((item) => !item.checkValidity());\n      this.#errorItem?.reportValidity();\n      this.#errorItem?.setAttribute('invalid', 'true');\n    }\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    if (attrName === 'label-value' || attrName === 'label-attr') {\n      this.initLabels();\n    }\n    if (attrName === 'button-label') {\n      this.initAddButton();\n    }\n    if (attrName === 'invalid') {\n      this.#handleInvalidMappings(newValue === 'true');\n    }\n    if (attrName === 'readonly') {\n      this.toggleAttribute('inert', newValue === 'true');\n    }\n  }\n}\n\nexport default MappingsFieldInternal;\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-mappings-field-internal/MappingsFieldInternal';\n\nexport const componentName = getComponentName('mappings-field');\n\nconst customMixin = (superclass) =>\n  class MappingsFieldMixinClass extends superclass {\n    get defaultValues() {\n      const defaultValuesAttr = this.getAttribute('default-values');\n      if (defaultValuesAttr) {\n        try {\n          return JSON.parse(defaultValuesAttr);\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error('could not parse data string from attribute \"default-values\" -', e.message);\n        }\n      }\n      return [];\n    }\n\n    setDefaultValues() {\n      const initialDefaultValues = this.defaultValues;\n      if (Object.keys(initialDefaultValues).length > 0) {\n        this.inputElement.value = initialDefaultValues;\n      }\n    }\n\n    init() {\n      super.init?.();\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n        tabindex=\"-1\"\n      ></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'full-width',\n          'label-value',\n          'label-attr',\n          'button-label',\n          'separator',\n          'options',\n          'default-values',\n          'invalid',\n          'readonly',\n          'disabled',\n          'st-error-message-icon',\n          'st-error-message-icon-size',\n          'st-error-message-icon-padding',\n        ],\n      });\n\n      // This is required since when we remove the invalid attribute from the internal mappings field,\n      // we want to reflect the change in the parent component\n      syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n\n      this.setDefaultValues();\n    }\n  };\n\nconst {\n  host,\n  helperText,\n  errorMessage,\n  mappingItem,\n  labels,\n  labelsText,\n  valueLabel,\n  attrLabel,\n  separator,\n  labelsContainer,\n} = {\n  host: { selector: () => ':host' },\n  helperText: { selector: '::part(helper-text)' },\n  errorMessage: { selector: '::part(error-message)' },\n  mappingItem: { selector: 'descope-mapping-item::part(wrapper)' },\n  labels: { selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text' },\n  labelsText: {\n    selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text::part(text-wrapper)',\n  },\n  valueLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"]' },\n  attrLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"]' },\n  separator: { selector: 'descope-mapping-item::part(separator)' },\n  labelsContainer: { selector: 'descope-mappings-field-internal [part=\"labels\"]' },\n};\n\nexport const MappingsFieldClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      // we apply font-size also on the host so we can set its width with em\n      fontSize: [{}, host, { ...separator, property: 'margin-top' }],\n      fontFamily: [helperText, errorMessage, labels],\n      separatorFontSize: { ...separator, property: 'font-size' },\n      labelsFontSize: { ...labelsText, property: 'font-size' },\n      labelsLineHeight: [\n        { ...labelsText, property: 'line-height' },\n        { ...labels, property: 'line-height' },\n      ],\n      labelTextColor: [\n        { ...labels, property: TextClass.cssVarList.textColor },\n        { ...separator, property: 'color' },\n      ],\n      itemMarginBottom: { ...mappingItem, property: 'margin-bottom' },\n      valueLabelMinWidth: { ...valueLabel, property: 'min-width' },\n      attrLabelMinWidth: { ...attrLabel, property: 'min-width' },\n      labelsMarginBottom: { ...labelsContainer, property: 'margin-bottom' },\n      separatorWidth: {},\n      removeButtonWidth: {},\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({\n    proxyProps: ['value', 'selectionStart'],\n    inputEvent: 'input',\n    proxyParentValidation: true,\n  }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-custom-field',\n    style: () => `\n      :host {\n        display: inline-flex;\n        max-width: 100%;\n        direction: ltr;\n      }\n      vaadin-custom-field {\n        line-height: unset;\n        width: 100%;\n      }\n\n      descope-mappings-field-internal [part=\"labels\"] {\n        display: none;\n        grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n      }\n\n      descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"],\n      descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n        ${TextClass.cssVarList.fontWeight}: 500;\n      }\n\n      descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"] {\n        grid-column: 1 / span 1;\n      }\n\n      descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n        grid-column: 3 / span 1;\n      }\n\n      descope-mapping-item::part(wrapper) {\n        display: grid;\n        grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n      }\n    `,\n    excludeAttrsSync: [\n      'tabindex',\n      'label-value',\n      'label-attr',\n      'button-label',\n      'options',\n      'error-message',\n      'style',\n    ],\n    componentName,\n  })\n);\n\nexport default MappingsFieldClass;\n","import globals from '../globals';\nimport { MappingsFieldClass } from '../../components/mapping-fields/descope-mappings-field/MappingsFieldClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = MappingsFieldClass.cssVarList;\n\nexport const mappingsField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.separatorFontSize]: '14px',\n  [vars.labelsFontSize]: '14px',\n  [vars.labelsLineHeight]: '1',\n  [vars.labelsMarginBottom]: '6px',\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.itemMarginBottom]: '1em',\n  // To be positioned correctly, the min width has to match the text field min width\n  [vars.valueLabelMinWidth]: refs.minWidth,\n  // To be positioned correctly, the min width has to match the combo box field min width\n  [vars.attrLabelMinWidth]: `calc(12em + 2 * ${globalRefs.border.xs})`,\n  [vars.separatorWidth]: '70px',\n  [vars.removeButtonWidth]: '60px',\n};\n\nexport default mappingsField;\nexport { vars };\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxNCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEgMTZDMSAxNy4xIDEuOSAxOCAzIDE4SDExQzEyLjEgMTggMTMgMTcuMSAxMyAxNlY0SDFWMTZaTTMgNkgxMVYxNkgzVjZaTTEwLjUgMUw5LjUgMEg0LjVMMy41IDFIMFYzSDE0VjFIMTAuNVoiIGZpbGw9ImN1cnJlbnRjb2xvciIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjAwMDIgMC45OTIxNDlDMTAuMDAwMiAxLjAxNjE1IDEwLjAwMDIgMS4wMTYxNSAxMC4wMDAyIDEuMDE2MTVMOC4yMjQxOSAzLjAwODE1SDIuOTkyMTlDMi40NjQxOSAzLjAwODE1IDIuMDA4MTkgMy40NDAxNSAyLjAwODE5IDMuOTkyMTVWMTIuMDA4MkMyLjAwODE5IDEyLjUzNjIgMi40NDAxOSAxMi45OTIyIDIuOTkyMTkgMTIuOTkyMkg1LjUzNjE5QzUuODQ4MTkgMTMuMDQwMiA2LjE2MDE5IDEzLjA0MDIgNi40NzIxOSAxMi45OTIySDExLjAwODJDMTEuNTM2MiAxMi45OTIyIDExLjk5MjIgMTIuNTYwMiAxMS45OTIyIDEyLjAwODJWNy43ODQxNkwxMy45MzYyIDUuNjI0MTVMMTQuMDA4MiA1LjY3MjE1VjExLjk4NDJDMTQuMDA4MiAxMy42NjQyIDEyLjY2NDIgMTUuMDA4MiAxMS4wMDgyIDE1LjAwODJIMy4wMTYxOUMxLjMzNjE5IDE1LjAwODIgLTAuMDA3ODEyNSAxMy42NjQyIC0wLjAwNzgxMjUgMTEuOTg0MlYzLjk5MjE1Qy0wLjAwNzgxMjUgMi4zMzYxNSAxLjMzNjE5IDAuOTkyMTQ5IDMuMDE2MTkgMC45OTIxNDlIMTAuMDAwMlpNMTEuMjcyMiAyLjYyNDE1TDEyLjYxNjIgNC4xMTIxNUw3LjcyMDE5IDkuNjgwMTZDNy41MDQxOSA5LjkyMDE2IDYuODMyMTkgMTAuMjMyMiA1LjY4MDE5IDEwLjYxNjJDNS42NTYxOSAxMC42NDAyIDUuNjA4MTkgMTAuNjQwMiA1LjU2MDE5IDEwLjYxNjJDNS40NjQxOSAxMC41OTIyIDUuMzkyMTkgMTAuNDcyMiA1LjQ0MDE5IDEwLjM3NjJDNS43NTIxOSA5LjI0ODE2IDYuMDQwMTkgOC41NTIxNiA2LjI1NjE5IDguMzEyMTZMMTEuMjcyMiAyLjYyNDE1Wk0xMS45MjAyIDEuODU2MTVMMTMuMjg4MiAwLjMyMDE0OUMxMy42NDgyIC0wLjA4Nzg1MTYgMTQuMjcyMiAtMC4xMTE4NTIgMTQuNjgwMiAwLjI3MjE0OUMxNS4wODgyIDAuNjMyMTQ5IDE1LjExMjIgMS4yODAxNSAxNC43NTIyIDEuNjg4MTVMMTMuMjY0MiAzLjM2ODE1TDExLjkyMDIgMS44NTYxNVoiIGZpbGw9ImN1cnJlbnRjb2xvciIvPgo8L3N2Zz4K\"","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport deleteIcon from './delete.svg';\nimport editIcon from './edit.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('user-attribute');\nclass RawUserAttribute extends createBaseClass({\n  componentName,\n  baseSelector: ':host > .root',\n}) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"root\">\n        <descope-text st-text-align=\"auto\" data-id=\"label-text\" variant=\"body1\" mode=\"secondary\" class=\"label\"></descope-text>\n        <div class=\"content-wrapper\">\n          <descope-text st-text-align=\"auto\" data-id=\"value-text\" variant=\"body1\" mode=\"primary\" class=\"value\"></descope-text>\n          <div class=\"btn-wrapper\">\n            <descope-badge mode=\"default\" bordered=\"true\" size=\"xs\"></descope-badge>\n            <descope-button size=\"xs\" data-id=\"edit-btn\" square=\"true\" variant=\"link\" mode=\"primary\">\n              <vaadin-icon src=${editIcon}></vaadin-icon>\n            </descope-button>\n            <descope-button size=\"xs\" data-id=\"delete-btn\" square=\"true\" variant=\"link\" mode=\"primary\">\n              <vaadin-icon src=${deleteIcon}></vaadin-icon>\n            </descope-button>\n          </div>\n        </div>\n      </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n\t\t\t\t\tdisplay: inline-flex;\n          container-type: inline-size;\n\t\t\t\t}\n\n        vaadin-icon {\n          color: currentcolor;\n        }\n\n        .root {\n          display: flex;\n          width: 100%;\n          height: 100%;\n          align-items: center;\n        }\n\n        @container (max-width: 529px) {\n          .root {\n            flex-wrap: wrap;\n          }\n        }\n\n        .btn-wrapper {\n          display: flex;\n          justify-content: space-between;\n          align-items: center;\n          flex-grow: 0;\n        }\n\n        .content-wrapper {\n          display: flex;\n          flex-grow: 1;\n          align-items: center;\n        }\n\n        descope-text::part(text-wrapper) {\n          text-overflow: ellipsis;\n          overflow: hidden;\n          white-space: nowrap;\n          width: initial;\n        }\n\n        descope-text {\n          display: inline-flex;\n          max-width: 100%;\n          min-width: 0;\n        }\n\n        .label {\n          flex-grow: 1;\n          width: 100%;\n        }\n\n        .value {\n          flex-grow: 1;\n        }\n\n        descope-badge {\n          margin-inline-end: 10px;\n        }\n\n        .hidden {\n          visibility: hidden;\n        }\n\n        descope-text[data-id=\"label-text\"].required:after {\n          content: '*';\n          color: var(${TextClass.cssVarList.textColor});\n        }\n\n        :host([readonly=\"true\"]) descope-button {\n          visibility: hidden;\n        }\n          `,\n      this\n    );\n\n    this.deleteButton = this.shadowRoot.querySelector('descope-button[data-id=\"delete-btn\"]');\n    this.editButton = this.shadowRoot.querySelector('descope-button[data-id=\"edit-btn\"]');\n    this.badge = this.shadowRoot.querySelector('descope-badge');\n    this.labelText = this.shadowRoot.querySelector('descope-text[data-id=\"label-text\"]');\n    this.valueText = this.shadowRoot.querySelector('descope-text[data-id=\"value-text\"]');\n  }\n\n  onLabelChange() {\n    this.labelText.innerText = this.label;\n    this.labelText.setAttribute('title', this.label);\n  }\n\n  onValueOrPlaceholderChange() {\n    const text = this.value || this.placeholder;\n    const mode = this.value ? 'primary' : 'secondary';\n\n    this.valueText.innerText = text;\n    this.valueText.setAttribute('title', text);\n    this.valueText.setAttribute('mode', mode);\n  }\n\n  onBadgeLabelChange() {\n    if (!this.badgeLabel) {\n      this.badge.style.display = 'none';\n    } else {\n      this.badge.innerText = this.badgeLabel;\n      this.badge.style.display = '';\n    }\n  }\n\n  onBadgeTooltipTextChange() {\n    this.badge.setAttribute('title', this.badgeTooltipText || this.badgeLabel);\n  }\n\n  onIsRequiredChange() {\n    this.labelText.classList.toggle('required', this.isRequired);\n  }\n\n  get label() {\n    return this.getAttribute('label') || '';\n  }\n\n  get value() {\n    return this.getAttribute('value') || '';\n  }\n\n  get placeholder() {\n    return this.getAttribute('placeholder') || '';\n  }\n\n  get isRequired() {\n    return this.getAttribute('required') === 'true';\n  }\n\n  get badgeLabel() {\n    return this.getAttribute('badge-label') || '';\n  }\n\n  get badgeTooltipText() {\n    return this.getAttribute('badge-tooltip-text') || '';\n  }\n\n  init() {\n    this.onLabelChange();\n    this.onValueOrPlaceholderChange();\n    this.onIsRequiredChange();\n    this.onBadgeLabelChange();\n    this.onBadgeTooltipTextChange();\n    this.handleDeleteButtonVisibility();\n\n    this.deleteButton.addEventListener('click', () =>\n      this.dispatchEvent(new CustomEvent('delete-clicked', { bubbles: true, composed: true }))\n    );\n\n    this.editButton.addEventListener('click', () =>\n      this.dispatchEvent(new CustomEvent('edit-clicked', { bubbles: true, composed: true }))\n    );\n  }\n\n  static get observedAttributes() {\n    return [\n      'label',\n      'value',\n      'placeholder',\n      'required',\n      'badge-label',\n      'badge-tooltip-text',\n    ].concat(super.observedAttributes);\n  }\n\n  handleDeleteButtonVisibility() {\n    this.deleteButton.classList.toggle('hidden', this.isRequired || !this.value);\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    super.attributeChangedCallback?.(name, oldValue, newValue);\n\n    if (oldValue === newValue) {\n      return;\n    }\n\n    if (name === 'label') {\n      this.onLabelChange();\n    } else if (name === 'value' || name === 'placeholder') {\n      this.onValueOrPlaceholderChange();\n    } else if (name === 'required') {\n      this.onIsRequiredChange();\n    } else if (name === 'badge-label') {\n      this.onBadgeLabelChange();\n    } else if (name === 'badge-tooltip-text') {\n      this.onBadgeTooltipTextChange();\n    }\n\n    if (name === 'value' || name === 'required') {\n      this.handleDeleteButtonVisibility();\n    }\n  }\n}\n\nconst { host, textFields, buttons, badge, labelText, contentWrapper } = {\n  host: { selector: () => ':host' },\n  textFields: { selector: 'descope-text' },\n  labelText: { selector: 'descope-text[data-id=\"label-text\"]' },\n  buttons: { selector: 'descope-button' },\n  badge: { selector: 'descope-badge' },\n  contentWrapper: { selector: ' .content-wrapper' },\n};\n\nexport const UserAttributeClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostMaxWidth: { ...host, property: 'max-width' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        { ...textFields, property: TextClass.cssVarList.hostDirection },\n        { ...buttons, property: ButtonClass.cssVarList.hostDirection },\n        { ...badge, property: BadgeClass.cssVarList.hostDirection },\n      ],\n      labelMinWidth: { ...labelText, property: 'min-width' },\n      contentMinWidth: { ...contentWrapper, property: 'min-width' },\n      badgeMaxWidth: { ...badge, property: 'max-width' },\n      itemsGap: [{ property: 'gap' }, { ...contentWrapper, property: 'gap' }],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawUserAttribute);\n","import globals from '../globals';\nimport {\n  UserAttributeClass,\n  componentName,\n} from '../../components/descope-user-attribute/UserAttributeClass';\nimport { createHelperVars, getThemeRefs, useVar } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nexport const vars = UserAttributeClass.cssVarList;\n\nconst userAttribute = {\n  [vars.labelMinWidth]: '150px',\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.contentMinWidth]: `calc(100% - ${useVar(vars.labelMinWidth)} - ${useVar(vars.itemsGap)})`,\n  [vars.badgeMaxWidth]: '85px',\n  [vars.itemsGap]: '4px',\n  [vars.hostMinWidth]: '310px',\n  [vars.hostWidth]: '530px',\n  [vars.hostMaxWidth]: '100%',\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default userAttribute;\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhDMCAxMi40IDMuNiAxNiA4IDE2QzEyLjQgMTYgMTYgMTIuNCAxNiA4QzE2IDMuNiAxMi40IDAgOCAwWk03LjEgMTEuN0wyLjkgNy42TDQuMyA2LjJMNyA4LjlMMTIgNEwxMy40IDUuNEw3LjEgMTEuN1oiIGZpbGw9IiM0Q0FGNTAiLz4KPC9zdmc+Cg==\"","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport greenVIcon from './green-v.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('user-auth-method');\nclass RawUserAuthMethod extends createBaseClass({\n  componentName,\n  baseSelector: ':host > .root',\n}) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"root\">\n        <div class=\"text-wrapper\">\n          <slot name=\"method-icon\"></slot>\n          <descope-text st-text-align=\"auto\" data-id=\"label-text\" variant=\"body1\" mode=\"primary\"></descope-text>\n        </div>\n\n        <div class=\"btn-wrapper\">\n          <descope-button class=\"btn unfulfilled hidden\" size=\"sm\" variant=\"link\" mode=\"primary\">\n            <slot name=\"button-icon\"></slot>\n          </descope-button>\n          <descope-button class=\"btn fulfilled hidden\" size=\"sm\" variant=\"link\" mode=\"primary\">\n            <slot name=\"fulfilled-button-icon\"></slot>\n          </descope-button>\n          <div class=\"status-indicator hidden\">\n            <vaadin-icon src=${greenVIcon}></vaadin-icon>\n          </div>\n          <descope-button class=\"hidden-btn\" size=\"sm\" variant=\"link\" mode=\"primary\"></descope-button>\n        </div>\n      </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n        vaadin-icon {\n          color: currentcolor;\n        }\n\n        .root {\n          display: flex;\n          width: 100%;\n          height: 100%;\n          align-items: center;\n        }\n\n        .btn-wrapper {\n          display: flex;\n          justify-content: space-between;\n          align-items: center;\n          flex-grow: 0;\n        }\n\n        .text-wrapper {\n          display: flex;\n          align-items: center;\n          flex-grow: 1;\n          min-width: 0;\n        }\n\n        descope-text::part(text-wrapper) {\n          text-overflow: ellipsis;\n          overflow: hidden;\n          white-space: nowrap;\n          width: initial;\n        }\n\n        descope-text {\n          display: inline-flex;\n          min-width: 0;\n        }\n\n        .status-indicator {\n          width: 1em;\n          height: 1em;\n          display: flex;\n          align-items: center;\n          padding-inline-end: 1em;\n        }\n\n        .hidden {\n          display: none;\n        }\n\n        .hidden-btn {\n          width: 0;\n          overflow: hidden;\n          opacity: 0;\n          pointer-events: none;\n        }\n\n        slot[name=\"method-icon\"]{\n          display: inline-flex;\n          align-items: center;\n        }\n          `,\n      this\n    );\n\n    this.unfulfilledButton = this.shadowRoot.querySelector('.btn.unfulfilled');\n    this.fulfilledButton = this.shadowRoot.querySelector('.btn.fulfilled');\n    this.statusIndicator = this.shadowRoot.querySelector('.status-indicator');\n    this.labelText = this.shadowRoot.querySelector('descope-text[data-id=\"label-text\"]');\n  }\n\n  onLabelChange() {\n    this.labelText.innerText = this.label;\n    this.labelText.setAttribute('title', this.label);\n  }\n\n  updateButtonLabel(btnRef, label) {\n    let textSpanEle = btnRef.querySelector('span');\n\n    if (label) {\n      if (!textSpanEle) {\n        textSpanEle = document.createElement('span');\n        btnRef.appendChild(textSpanEle);\n      }\n      textSpanEle.innerText = label;\n    } else if (textSpanEle) {\n      btnRef.removeChild(textSpanEle);\n    }\n  }\n\n  onFulfilledChange() {\n    if (this.isFulfilled) {\n      this.unfulfilledButton.classList.add('hidden');\n      this.handleFulfilled();\n    } else {\n      this.fulfilledButton.classList.add('hidden');\n      this.handleUnfulfilled();\n    }\n  }\n\n  handleFulfilled() {\n    this.fulfilledButton.classList.toggle('hidden', !this.isFulfilledEditable);\n    this.statusIndicator.classList.toggle('hidden', this.isFulfilledEditable);\n  }\n\n  handleUnfulfilled() {\n    this.unfulfilledButton.classList.toggle('hidden', !this.isUnfulfilledEditable);\n    this.statusIndicator.classList.toggle('hidden', this.isUnfulfilledEditable);\n  }\n\n  get label() {\n    return this.getAttribute('label') || '';\n  }\n\n  get unfulfilledButtonLabel() {\n    return this.getAttribute('button-label') || '';\n  }\n\n  get fulfilledButtonLabel() {\n    return this.getAttribute('fulfilled-button-label') || '';\n  }\n\n  get isFulfilled() {\n    return this.getAttribute('fulfilled') === 'true';\n  }\n\n  get isFulfilledEditable() {\n    return this.getAttribute('fulfilled-editable') === 'true';\n  }\n\n  get isUnfulfilledEditable() {\n    // this is to keep backward compatibility with previous versions\n    return this.getAttribute('unfulfilled-editable') !== 'false';\n  }\n\n  init() {\n    this.onLabelChange();\n    this.updateButtonLabel(this.fulfilledButton, this.fulfilledButtonLabel);\n    this.updateButtonLabel(this.unfulfilledButton, this.unfulfilledButtonLabel);\n    this.onFulfilledChange();\n\n    this.unfulfilledButton.addEventListener('click', () =>\n      this.dispatchEvent(new CustomEvent('button-clicked', { bubbles: true, composed: true }))\n    );\n\n    this.fulfilledButton.addEventListener('click', () => {\n      this.dispatchEvent(\n        new CustomEvent('fulfilled-button-clicked', { bubbles: true, composed: true })\n      );\n    });\n  }\n\n  static get observedAttributes() {\n    return [\n      'label',\n      'fulfilled',\n      'button-label',\n      'fulfilled-button-label',\n      'fulfilled-editable',\n      'unfulfilled-editable',\n    ].concat(super.observedAttributes);\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    super.attributeChangedCallback?.(name, oldValue, newValue);\n    if (oldValue === newValue) {\n      return;\n    }\n\n    if (name === 'label') {\n      this.onLabelChange();\n    } else if (name === 'fulfilled') {\n      this.onFulfilledChange();\n    } else if (name === 'button-label') {\n      this.updateButtonLabel(this.unfulfilledButton, this.unfulfilledButtonLabel);\n    } else if (name === 'fulfilled-button-label') {\n      this.updateButtonLabel(this.fulfilledButton, this.fulfilledButtonLabel);\n    } else if (name === 'fulfilled-editable' && this.isFulfilled) {\n      this.handleFulfilled();\n    } else if (name === 'unfulfilled-editable' && !this.isFulfilled) {\n      this.handleUnfulfilled();\n    }\n  }\n}\n\nconst { host, textField, buttons, badge, textWrapper, methodIconSlot } = {\n  host: { selector: () => ':host' },\n  textField: { selector: 'descope-text' },\n  buttons: { selector: 'descope-button' },\n  badge: { selector: 'descope-badge' },\n  textWrapper: { selector: ' .text-wrapper' },\n  methodIconSlot: { selector: 'slot[name=\"method-icon\"]' },\n};\n\nexport const UserAuthMethodClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostMaxWidth: { ...host, property: 'max-width' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        { ...textField, property: TextClass.cssVarList.hostDirection },\n        { ...buttons, property: ButtonClass.cssVarList.hostDirection },\n        { ...badge, property: BadgeClass.cssVarList.hostDirection },\n      ],\n      itemsGap: [{ property: 'gap' }, { ...textWrapper, property: 'gap' }],\n      iconSize: [\n        { ...methodIconSlot, property: 'width' },\n        { ...methodIconSlot, property: 'height' },\n      ],\n      iconColor: [{ selector: () => '::slotted(*)', property: IconClass.cssVarList.fill }],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawUserAuthMethod);\n","import globals from '../globals';\nimport { UserAuthMethodClass } from '../../components/descope-user-auth-method/UserAuthMethodClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nexport const vars = UserAuthMethodClass.cssVarList;\n\nconst userAuthMethod = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.itemsGap]: '16px',\n  [vars.hostMinWidth]: '310px',\n  [vars.hostWidth]: '530px',\n  [vars.hostMaxWidth]: '100%',\n  [vars.iconSize]: '24px',\n  [vars.iconColor]: 'currentcolor',\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default userAuthMethod;\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n  getComponentName,\n  forwardAttrs,\n  observeAttributes,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('saml-group-mappings-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: '' });\n\nclass SamlGroupMappingsInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return ['invalid'].concat(BaseInputClass.observedAttributes || []);\n  }\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n      <descope-text-field variant=\"body2\" bordered=\"true\"></descope-text-field>\n      <descope-mappings-field></descope-mappings-field>\n    `;\n\n    this.groupInputElement = this.querySelector('descope-text-field');\n    this.mappingsElement = this.querySelector('descope-mappings-field');\n  }\n\n  resetInvalidIndication() {\n    this.removeAttribute('invalid');\n  }\n\n  handleMappingsInvalidChange(changedAttributes) {\n    if (changedAttributes.includes('invalid')) {\n      if (!this.mappingsElement.hasAttribute('invalid')) {\n        this.resetInvalidIndication();\n      }\n    }\n  }\n\n  initFocusHandler() {\n    // This event listener needs to be placed before the super.init() call\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) {\n        const focusedElement = this.mappingsElement.checkValidity()\n          ? this.groupInputElement\n          : this.mappingsElement;\n        focusedElement.focus();\n      }\n    });\n  }\n\n  init() {\n    // This needs to be placed before the super.init() call to work\n    this.initFocusHandler();\n\n    super.init?.();\n\n    forwardAttrs(this, this.groupInputElement, {\n      mapAttrs: { 'label-group': 'label' },\n      includeAttrs: ['size', 'label-group', 'readonly', 'disabled'],\n    });\n\n    forwardAttrs(this, this.mappingsElement, {\n      includeAttrs: [\n        'size',\n        'full-width',\n        'label-value',\n        'label-attr',\n        'button-label',\n        'separator',\n        'options',\n        'readonly',\n        'disabled',\n        'data-errormessage-pattern-mismatch',\n      ],\n    });\n\n    // Observing the invalid attribute of the mappings field to reset the invalid state for this component.\n    // When an invalid item turns valid, the mappings field will remove the invalid attribute, and at this component\n    // level, we need to remove the invalid attribute as well to be able to mark the component as invalid the next time\n    observeAttributes(this.mappingsElement, this.handleMappingsInvalidChange.bind(this), {\n      includeAttrs: ['invalid'],\n    });\n  }\n\n  get value() {\n    return {\n      group: this.groupInputElement.value,\n      mappings: this.mappingsElement.value,\n    };\n  }\n\n  set value(value) {\n    if (value?.group && typeof value.group === 'string') {\n      this.groupInputElement.value = value.group;\n    }\n    if (Array.isArray(value?.mappings)) {\n      this.mappingsElement.value = value.mappings;\n    }\n  }\n\n  getValidity() {\n    if (!this.groupInputElement.checkValidity()) {\n      return this.groupInputElement.validity;\n    }\n    if (!this.mappingsElement.checkValidity()) {\n      return this.mappingsElement.validity;\n    }\n\n    return {};\n  }\n\n  #handleInvalidState(isInvalid) {\n    if (isInvalid) {\n      if (!this.groupInputElement.checkValidity()) {\n        this.groupInputElement.setAttribute('invalid', 'true');\n        return;\n      }\n\n      if (!this.mappingsElement.checkValidity()) {\n        this.mappingsElement.setAttribute('invalid', 'true');\n      }\n    }\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    if (attrName === 'invalid') {\n      this.#handleInvalidState(newValue === 'true');\n    }\n  }\n}\n\nexport default SamlGroupMappingsInternal;\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '../../../mixins';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-saml-group-mappings-internal/SamlGroupMappingsInternal';\n\nexport const componentName = getComponentName('saml-group-mappings');\n\nconst customMixin = (superclass) =>\n  class SamlGroupMappingsMixinClass extends superclass {\n    init() {\n      super.init?.();\n\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n        tabindex=\"-1\"\n      ></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'full-width',\n          'label-group',\n          'label-value',\n          'label-attr',\n          'button-label',\n          'separator',\n          'options',\n          'readonly',\n          'disabled',\n        ],\n      });\n\n      syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n    }\n  };\n\nconst { host, groupInput, errorMessage } = {\n  host: { selector: () => ':host' },\n  groupInput: { selector: 'descope-text-field' },\n  errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SamlGroupMappingsClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      groupNameInputMarginBottom: { ...groupInput, property: 'margin-bottom' },\n      errorMessageIcon: { ...errorMessage, property: 'background-image' },\n      errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n      errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n      errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n      errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n      errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({\n    proxyProps: ['value', 'selectionStart'],\n    inputEvent: 'input',\n    triggerValidationEvents: ['mapping-item-added', 'mapping-item-removed'],\n    proxyParentValidation: true,\n  }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-custom-field',\n    style: () => `\n      :host {\n        display: inline-flex;\n        max-width: 100%;\n        direction: ltr;\n      }\n\n      vaadin-custom-field {\n        line-height: unset;\n        width: 100%;\n      }\n\n      descope-text-field {\n        width: auto;\n      }\n\n      descope-mappings-field {\n        display: block;\n      }\n    `,\n    excludeAttrsSync: [\n      'tabindex',\n      'label-group',\n      'label-value',\n      'label-attr',\n      'button-label',\n      'separator',\n      'options',\n      'error-message',\n      'style',\n    ],\n    componentName,\n  })\n);\n\nexport default SamlGroupMappingsClass;\n","import { SamlGroupMappingsClass } from '../../components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass';\nimport { refs } from './inputWrapper';\n\nconst vars = SamlGroupMappingsClass.cssVarList;\n\nexport const samlGroupMappings = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.groupNameInputMarginBottom]: '1em',\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default samlGroupMappings;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { PolicyValidationClass } from '../../components/descope-policy-validation/PolicyValidationClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = PolicyValidationClass.cssVarList;\n\nconst policyValidation = {\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.fontSize]: refs.labelFontSize,\n  [vars.textColor]: refs.labelTextColor,\n  [vars.borderWidth]: refs.borderWidth,\n  [vars.borderStyle]: refs.borderStyle,\n  [vars.borderColor]: refs.borderColor,\n  [vars.borderRadius]: globalRefs.radius.sm,\n  [vars.backgroundColor]: 'none',\n  [vars.padding]: '0px',\n  [vars.labelMargin]: globalRefs.spacing.sm,\n  [vars.itemsSpacing]: globalRefs.spacing.lg,\n  [vars.itemSymbolDefault]: \"'\\\\2022'\", // \"•\"\n  [vars.itemSymbolSuccess]: \"'\\\\2713'\", // \"✓\"\n  [vars.itemSymbolError]: \"'\\\\2A09'\", // \"⨉\"\n  [vars.itemSymbolSuccessColor]: globalRefs.colors.success.main,\n  [vars.itemSymbolErrorColor]: globalRefs.colors.error.main,\n};\n\nexport default policyValidation;\nexport { vars };\n","import { IconClass } from './component/IconClass';\n\nexport const vars = IconClass.cssVarList;\n\nconst icon = {};\n\nexport default icon;\n\n","import { ImageClass } from './component/ImageClass';\n\nexport const vars = ImageClass.cssVarList;\n\nconst image = {};\n\nexport default image;\n","export const decode = (input) => {\n  const txt = document.createElement('textarea');\n  txt.innerHTML = input;\n  return txt.value;\n};\n\nexport const tpl = (input, inline) => {\n  return inline ? input : `<pre>${input}</pre>`;\n};\n","import hljs from 'highlight.js';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { decode, tpl } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('code-snippet');\n\nclass CodeSnippet extends createBaseClass({ componentName, baseSelector: ':host > code' }) {\n  static get observedAttributes() {\n    return ['lang', 'inline'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <code class=\"hljs\"></code>\n    `;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-block;\n        width: 100%;\n      }\n      code {\n        display: block;\n        width: 100%;\n        min-height: 1em;\n        overflow-x: scroll;\n        overflow-y: scroll;\n      }\n      pre {\n        margin: 0;\n      }\n      `,\n      this\n    );\n  }\n\n  init() {\n    super.init?.();\n\n    this.lang = this.getAttribute('lang');\n    this.isInline = this.getAttribute('inline') === 'true';\n\n    observeChildren(this, this.#renderSnippet.bind(this));\n  }\n\n  get contentNode() {\n    return this.shadowRoot.querySelector(this.baseSelector);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (attrName === 'inline') {\n        this.isInline = newValue;\n      }\n\n      if (attrName === 'lang') {\n        this.lang = newValue;\n      }\n\n      this.#renderSnippet();\n    }\n  }\n\n  #renderSnippet() {\n    const sanitized = decode(this.textContent);\n    const language = this.lang;\n\n    if (!language) {\n      this.contentNode.textContent = sanitized;\n      return;\n    }\n\n    const { value: highlighted } = hljs.highlight(sanitized, { language });\n\n    this.contentNode.innerHTML = tpl(highlighted, this.isInline);\n  }\n}\n\nconst {\n  root,\n  docTag,\n  keyword,\n  metaKeyword,\n  templateTag,\n  templateVariable,\n  type,\n  variableLanguage,\n  title,\n  titleClass,\n  titleClassInherited,\n  titleFunction,\n  attr,\n  attribute,\n  literal,\n  meta,\n  number,\n  operator,\n  variable,\n  selectorAttr,\n  selectorClass,\n  selectorId,\n  regexp,\n  string,\n  metaString,\n  builtIn,\n  symbol,\n  comment,\n  code,\n  formula,\n  name,\n  quote,\n  selectorTag,\n  selectorPseudo,\n  subst,\n  section,\n  bullet,\n  emphasis,\n  strong,\n  addition,\n  deletion,\n  charEscape,\n  link,\n  params,\n  property,\n  punctuation,\n  tag,\n} = {\n  root: { selector: () => '.hljs' },\n  docTag: { selector: () => '.hljs-doctag' },\n  keyword: { selector: () => '.hljs-keyword' },\n  metaKeyword: { selector: () => '.hljs-meta .hljs-keyword' },\n  templateTag: { selector: () => '.hljs-template-tag' },\n  templateVariable: { selector: () => '.hljs-template-variable' },\n  type: { selector: () => '.hljs-type' },\n  variableLanguage: { selector: () => '.hljs-variable.language' },\n  title: { selector: () => '.hljs-title' },\n  titleClass: { selector: () => '.hljs-title.class_' },\n  titleClassInherited: { selector: () => '.hljs-title.class_.inherited__' },\n  titleFunction: { selector: () => '.hljs-title.function_' },\n  attr: { selector: () => '.hljs-attr' },\n  attribute: { selector: () => '.hljs-attribute' },\n  literal: { selector: () => '.hljs-literal' },\n  meta: { selector: () => '.hljs-meta' },\n  number: { selector: () => '.hljs-number' },\n  operator: { selector: () => '.hljs-operator' },\n  variable: { selector: () => '.hljs-variable' },\n  selectorAttr: { selector: () => '.hljs-selector-attr' },\n  selectorClass: { selector: () => '.hljs-selector-class' },\n  selectorId: { selector: () => '.hljs-selector-id' },\n  regexp: { selector: () => '.hljs-regexp' },\n  string: { selector: () => '.hljs-string' },\n  metaString: { selector: () => '.hljs-meta .hljs-string' },\n  builtIn: { selector: () => '.hljs-built_in' },\n  symbol: { selector: () => '.hljs-symbol' },\n  comment: { selector: () => '.hljs-comment' },\n  code: { selector: () => '.hljs-code' },\n  formula: { selector: () => '.hljs-formula' },\n  name: { selector: () => '.hljs-name' },\n  quote: { selector: () => '.hljs-quote' },\n  selectorTag: { selector: () => '.hljs-selector-tag' },\n  selectorPseudo: { selector: () => '.hljs-selector-pseudo' },\n  subst: { selector: () => '.hljs-subst' },\n  section: { selector: () => '.hljs-section' },\n  bullet: { selector: () => '.hljs-bullet' },\n  emphasis: { selector: () => '.hljs-emphasis' },\n  strong: { selector: () => '.hljs-strong' },\n  addition: { selector: () => '.hljs-addition' },\n  deletion: { selector: () => '.hljs-deletion' },\n  charEscape: { selector: () => '.hljs-char.escape' },\n  link: { selector: () => '.hljs-link' },\n  params: { selector: () => '.hljs-params' },\n  property: { selector: () => '.hljs-property' },\n  punctuation: { selector: () => '.hljs-punctuation' },\n  tag: { selector: () => '.hljs-tag' },\n};\n\nexport const CodeSnippetClass = compose(\n  createStyleMixin({\n    mappings: {\n      rootBgColor: { ...root, property: 'background-color' },\n      rootTextColor: { ...root, property: 'color' },\n      docTagTextColor: { ...docTag, property: 'color' },\n      keywordTextColor: { ...keyword, property: 'color' },\n      metaKeywordTextColor: { ...metaKeyword, property: 'color' },\n      templateTagTextColor: { ...templateTag, property: 'color' },\n      templateVariableTextColor: { ...templateVariable, property: 'color' },\n      typeTextColor: { ...type, property: 'color' },\n      variableLanguageTextColor: { ...variableLanguage, property: 'color' },\n      titleTextColor: { ...title, property: 'color' },\n      titleClassTextColor: { ...titleClass, property: 'color' },\n      titleClassInheritedTextColor: { ...titleClassInherited, property: 'color' },\n      titleFunctionTextColor: { ...titleFunction, property: 'color' },\n      attrTextColor: { ...attr, property: 'color' },\n      attributeTextColor: { ...attribute, property: 'color' },\n      literalTextColor: { ...literal, property: 'color' },\n      metaTextColor: { ...meta, property: 'color' },\n      numberTextColor: { ...number, property: 'color' },\n      operatorTextColor: { ...operator, property: 'color' },\n      variableTextColor: { ...variable, property: 'color' },\n      selectorAttrTextColor: { ...selectorAttr, property: 'color' },\n      selectorClassTextColor: { ...selectorClass, property: 'color' },\n      selectorIdTextColor: { ...selectorId, property: 'color' },\n      regexpTextColor: { ...regexp, property: 'color' },\n      stringTextColor: { ...string, property: 'color' },\n      metaStringTextColor: { ...metaString, property: 'color' },\n      builtInTextColor: { ...builtIn, property: 'color' },\n      symbolTextColor: { ...symbol, property: 'color' },\n      commentTextColor: { ...comment, property: 'color' },\n      codeTextColor: { ...code, property: 'color' },\n      formulaTextColor: { ...formula, property: 'color' },\n      nameTextColor: { ...name, property: 'color' },\n      quoteTextColor: { ...quote, property: 'color' },\n      selectorTagTextColor: { ...selectorTag, property: 'color' },\n      selectorPseudoTextColor: { ...selectorPseudo, property: 'color' },\n      substTextColor: { ...subst, property: 'color' },\n      sectionTextColor: { ...section, property: 'color' },\n      bulletTextColor: { ...bullet, property: 'color' },\n      emphasisTextColor: { ...emphasis, property: 'color' },\n      strongTextColor: { ...strong, property: 'color' },\n      additionTextColor: { ...addition, property: 'color' },\n      additionBgColor: { ...addition, property: 'background-color' },\n      deletionTextColor: { ...deletion, property: 'color' },\n      deletionBgColor: { ...deletion, property: 'background-color' },\n      charEscapeTextColor: { ...charEscape, property: 'color' },\n      linkTextColor: { ...link, property: 'color' },\n      paramsTextColor: { ...params, property: 'color' },\n      propertyTextColor: { ...property, property: 'color' },\n      punctuationTextColor: { ...punctuation, property: 'color' },\n      tagTextColor: { ...tag, property: 'color' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(CodeSnippet);\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { CodeSnippetClass } from '../../components/descope-code-snippet/CodeSnippetClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = CodeSnippetClass.cssVarList;\n\nconst light = {\n  color1: '#fa0',\n  color2: '#d73a49',\n  color3: '#6f42c1',\n  color4: '#005cc5',\n  color5: '#e36209',\n  color6: '#6a737d',\n  color7: '#22863a',\n  color8: '#24292e',\n  color9: '#735c0f',\n  color10: '#f0fff4',\n  color11: '#b31d28',\n  color12: '#ffeef0',\n  color13: '#032f62',\n};\n\nconst dark = {\n  color1: '#c9d1d9',\n  color2: '#ff7b72',\n  color3: '#d2a8ff',\n  color4: '#79c0ff',\n  color5: '#ffa657',\n  color6: '#8b949e',\n  color7: '#7ee787',\n  color8: '#c9d1d9',\n  color9: '#735c0f',\n  color10: '#f0fff4',\n  color11: '#67060c',\n  color12: '#ffeef0',\n  color13: '#a5d6ff',\n};\n\nconst CodeSnippet = {\n  [vars.rootBgColor]: globalRefs.colors.surface.main,\n  [vars.rootTextColor]: globalRefs.colors.surface.contrast,\n  [vars.docTagTextColor]: light.color2,\n  [vars.keywordTextColor]: light.color2,\n  [vars.metaKeywordTextColor]: light.color2,\n  [vars.templateTagTextColor]: light.color2,\n  [vars.templateVariableTextColor]: light.color2,\n  [vars.typeTextColor]: light.color2,\n  [vars.variableLanguageTextColor]: light.color2,\n  [vars.titleTextColor]: light.color3,\n  [vars.titleClassTextColor]: light.color3,\n  [vars.titleClassInheritedTextColor]: light.color3,\n  [vars.titleFunctionTextColor]: light.color3,\n  [vars.attrTextColor]: light.color4,\n  [vars.attributeTextColor]: light.color4,\n  [vars.literalTextColor]: light.color4,\n  [vars.metaTextColor]: light.color4,\n  [vars.numberTextColor]: light.color4,\n  [vars.operatorTextColor]: light.color4,\n  [vars.variableTextColor]: light.color4,\n  [vars.selectorAttrTextColor]: light.color4,\n  [vars.selectorClassTextColor]: light.color4,\n  [vars.selectorIdTextColor]: light.color4,\n  [vars.regexpTextColor]: light.color13,\n  [vars.stringTextColor]: light.color13,\n  [vars.metaStringTextColor]: light.color13,\n  [vars.builtInTextColor]: light.color5,\n  [vars.symbolTextColor]: light.color5,\n  [vars.commentTextColor]: light.color6,\n  [vars.codeTextColor]: light.color6,\n  [vars.formulaTextColor]: light.color6,\n  [vars.nameTextColor]: light.color7,\n  [vars.quoteTextColor]: light.color7,\n  [vars.selectorTagTextColor]: light.color7,\n  [vars.selectorPseudoTextColor]: light.color7,\n  [vars.substTextColor]: light.color8,\n  [vars.sectionTextColor]: light.color4,\n  [vars.bulletTextColor]: light.color9,\n  [vars.emphasisTextColor]: light.color8,\n  [vars.strongTextColor]: light.color8,\n  [vars.additionTextColor]: light.color7,\n  [vars.additionBgColor]: light.color10,\n  [vars.deletionTextColor]: light.color2,\n  [vars.deletionBgColor]: light.color10,\n  /* purposely ignored */\n  // [vars.charEscapeTextColor]: '',\n  // [vars.linkTextColor]: '',\n  // [vars.paramsTextColor]: '',\n  // [vars.propertyTextColor]: '',\n  // [vars.punctuationTextColor]: '',\n  // [vars.tagTextColor  ]: '',\n};\n\nexport const codeSnippetDarkThemeOverrides = {\n  codeSnippet: {\n    [vars.rootBgColor]: globalRefs.colors.surface.main,\n    [vars.rootTextColor]: globalRefs.colors.surface.contrast,\n    [vars.docTagTextColor]: dark.color2,\n    [vars.keywordTextColor]: dark.color2,\n    [vars.metaKeywordTextColor]: dark.color2,\n    [vars.templateTagTextColor]: dark.color2,\n    [vars.templateVariableTextColor]: dark.color2,\n    [vars.typeTextColor]: dark.color2,\n    [vars.variableLanguageTextColor]: dark.color2,\n    [vars.titleTextColor]: dark.color3,\n    [vars.titleClassTextColor]: dark.color3,\n    [vars.titleClassInheritedTextColor]: dark.color3,\n    [vars.titleFunctionTextColor]: dark.color3,\n    [vars.attrTextColor]: dark.color4,\n    [vars.attributeTextColor]: dark.color4,\n    [vars.literalTextColor]: dark.color4,\n    [vars.metaTextColor]: dark.color4,\n    [vars.numberTextColor]: dark.color4,\n    [vars.operatorTextColor]: dark.color4,\n    [vars.variableTextColor]: dark.color4,\n    [vars.selectorAttrTextColor]: dark.color4,\n    [vars.selectorClassTextColor]: dark.color4,\n    [vars.selectorIdTextColor]: dark.color4,\n    [vars.regexpTextColor]: dark.color13,\n    [vars.stringTextColor]: dark.color13,\n    [vars.metaStringTextColor]: dark.color13,\n    [vars.builtInTextColor]: dark.color5,\n    [vars.symbolTextColor]: dark.color5,\n    [vars.commentTextColor]: dark.color6,\n    [vars.codeTextColor]: dark.color6,\n    [vars.formulaTextColor]: dark.color6,\n    [vars.nameTextColor]: dark.color7,\n    [vars.quoteTextColor]: dark.color7,\n    [vars.selectorTagTextColor]: dark.color7,\n    [vars.selectorPseudoTextColor]: dark.color7,\n    [vars.substTextColor]: dark.color8,\n    [vars.sectionTextColor]: dark.color4,\n    [vars.bulletTextColor]: dark.color9,\n    [vars.emphasisTextColor]: dark.color8,\n    [vars.strongTextColor]: dark.color8,\n    [vars.additionTextColor]: dark.color7,\n    [vars.additionBgColor]: dark.color10,\n    [vars.deletionTextColor]: dark.color2,\n    [vars.deletionBgColor]: dark.color10,\n  },\n};\n\nexport default CodeSnippet;\nexport { vars };\n","import { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport {\n  componentNameValidationMixin,\n  createProxy,\n  createStyleMixin,\n  proxyInputMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('radio-button');\n\nconst customMixin = (superclass) =>\n  class CustomMixin extends superclass {\n    constructor() {\n      super();\n\n      this.baseElement.checkValidity = () => {};\n    }\n\n    init() {\n      // we are forwarding vaadin checked-changed event\n      this.baseElement.addEventListener('checked-changed', (e) => {\n        this.dispatchEvent(\n          new CustomEvent(\n            'checked-changed',\n            { detail: e.detail },\n            { bubbles: true, composed: true }\n          )\n        );\n      });\n\n      super.init?.();\n\n      observeChildren(this, this.renderLabel.bind(this));\n    }\n\n    renderLabel() {\n      this.baseElement.setAttribute('label', this.textContent);\n    }\n\n    get value() {\n      return this.getAttribute('value');\n    }\n  };\n\nexport const RadioButtonClass = compose(\n  createStyleMixin({\n    mappings: {\n      cursor: [{}, { selector: 'label' }],\n      fontSize: [{ selector: 'label' }, {}],\n      labelTextColor: { selector: 'label', property: 'color' },\n      fontFamily: { selector: 'label' },\n      radioSize: [\n        { selector: '::part(radio)', property: 'height' },\n        { selector: '::part(radio)', property: 'width' },\n      ],\n      radioBackgroundColor: { selector: '::part(radio)', property: 'background-color' },\n      radioMargin: { selector: '::part(radio)', property: 'margin' },\n      radioCheckedSize: { selector: '::part(radio)::after', property: 'border-width' },\n      radioCheckedColor: { selector: '::part(radio)::after', property: 'border-color' },\n      radioBorderColor: { selector: '::part(radio)', property: 'border-color', fallback: 'none' },\n      radioBorderWidth: { selector: '::part(radio)', property: 'border-width', fallback: 0 },\n      radioBorderStyle: { selector: '::part(radio)', property: 'border-style', fallback: 'solid' },\n    },\n  }),\n  proxyInputMixin({ proxyProps: ['setSelectionRange'] }),\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: [''],\n    wrappedEleName: 'vaadin-radio-button',\n    excludeAttrsSync: ['tabindex', 'data', 'style'],\n    includeForwardProps: ['checked', 'name', 'disabled'],\n    componentName,\n  })\n);\n","import { compose } from '../../helpers';\nimport {\n  forwardAttrs,\n  getComponentName,\n  observeAttributes,\n  observeChildren,\n} from '../../helpers/componentHelpers';\nimport { resetInputLabelPosition } from '../../helpers/themeHelpers/resetHelpers';\nimport {\n  componentNameValidationMixin,\n  createProxy,\n  createStyleMixin,\n  draggableMixin,\n  proxyInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { componentName as childNodeName, RadioButtonClass } from './RadioButtonClass';\n\nexport const componentName = getComponentName('radio-group');\n\nconst RadioGroupMixin = (superclass) =>\n  class RadioGroupMixinClass extends superclass {\n    // eslint-disable-next-line class-methods-use-this\n    #renderItem = ({ value, label }) =>\n      `<descope-radio-button value=\"${value}\">${label}</descope-radio-button>`;\n\n    #data;\n\n    constructor() {\n      super();\n\n      // we are overriding vaadin children getter so it will run on our custom elements\n      Object.defineProperty(this.baseElement, 'children', {\n        get: () => this.querySelectorAll(childNodeName),\n      });\n\n      // we are overriding vaadin __filterRadioButtons so it will run on our custom elements\n      this.baseElement.__filterRadioButtons = (nodes) => {\n        return nodes.filter((node) => node.localName === childNodeName);\n      };\n\n      // vaadin radio group missing some input properties\n      this.baseElement.setCustomValidity = () => {};\n    }\n\n    get items() {\n      return this.shadowRoot.querySelector('slot').assignedElements();\n    }\n\n    get size() {\n      return this.getAttribute('size');\n    }\n\n    get data() {\n      if (this.#data) return this.#data;\n\n      const dataAttr = this.getAttribute('data');\n\n      if (dataAttr) {\n        try {\n          const data = JSON.parse(dataAttr);\n          if (this.isValidDataType(data)) {\n            return data;\n          }\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.error('could not parse data string from attribute \"data\" - ', e.message);\n        }\n      }\n\n      return [];\n    }\n\n    set data(data) {\n      if (this.isValidDataType(data)) {\n        this.#data = data;\n        this.renderItems();\n      }\n    }\n\n    get defaultValue() {\n      return this.getAttribute('default-value');\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    isValidDataType(data) {\n      const isValid = Array.isArray(data);\n      if (!isValid) {\n        // eslint-disable-next-line no-console\n        console.error('data must be an array, received:', data);\n      }\n\n      return isValid;\n    }\n\n    getItemsTemplate() {\n      return this.data?.reduce?.((acc, item) => acc + (this.#renderItem?.(item || {}) || ''), '');\n    }\n\n    renderItems() {\n      const template = this.getItemsTemplate();\n      if (template) this.innerHTML = template;\n    }\n\n    init() {\n      super.init?.();\n\n      this.inputElement = this.baseElement;\n\n      this.renderItems();\n\n      observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n      Object.defineProperty(this.baseElement, 'validity', {\n        get: () => {\n          return { valueMissing: !this.baseElement.checkValidity() };\n        },\n      });\n\n      forwardAttrs(this, this.baseElement, {\n        includeAttrs: ['layout'],\n        mapAttrs: { layout: 'theme' },\n      });\n\n      setTimeout(() => {\n        if (this.defaultValue) {\n          this.value = this.defaultValue;\n        }\n      });\n\n      // we want new items to get the size\n      observeChildren(this, ({ addedNodes }) => {\n        addedNodes.forEach((node) => {\n          node.setAttribute('size', this.size);\n        });\n      });\n\n      observeAttributes(\n        this,\n        () => {\n          this.items.forEach((item) => {\n            item.setAttribute('size', this.size);\n          });\n        },\n        {\n          includeAttrs: ['size'],\n        }\n      );\n    }\n  };\n\nexport const RadioGroupClass = compose(\n  createStyleMixin({\n    mappings: {\n      ...textFieldMappings,\n      buttonsSpacing: { selector: '::part(group-field)', property: 'justify-content' },\n      buttonsRowGap: { selector: '::part(group-field)', property: 'row-gap' },\n      buttonsColumnGap: { selector: '::part(group-field)', property: 'column-gap' },\n      itemsLabelColor: {\n        selector: () => `::slotted(${RadioButtonClass.componentName})`,\n        property: RadioButtonClass.cssVarList.labelTextColor,\n      },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({ proxyProps: ['setSelectionRange'] }),\n  componentNameValidationMixin,\n  RadioGroupMixin\n)(\n  createProxy({\n    slots: ['', 'prefix'],\n    wrappedEleName: 'vaadin-radio-group',\n    style: () => `\n    :host {\n      display: inline-block;\n      max-width: 100%;\n      box-sizing: border-box;\n    }\n\n    vaadin-radio-group {\n      padding: 0;\n      width: 100%;\n    }\n\n    ${resetInputLabelPosition('vaadin-radio-group')}\n    `,\n\n    excludeAttrsSync: ['tabindex', 'size', 'data', 'direction', 'style'],\n    componentName,\n    includeForwardProps: ['value'],\n  })\n);\n","import { RadioGroupClass } from '../../../components/descope-radio-group/RadioGroupClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst vars = RadioGroupClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nexport const radioGroup = {\n  [vars.buttonsRowGap]: '9px',\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.labelTextColor]: refs.labelTextColor,\n  [vars.labelRequiredIndicator]: refs.requiredIndicator,\n  [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n  [vars.helperTextColor]: refs.helperTextColor,\n  [vars.itemsLabelColor]: globalRefs.colors.surface.contrast,\n\n  textAlign: {\n    right: { [vars.inputTextAlign]: 'right' },\n    left: { [vars.inputTextAlign]: 'left' },\n    center: { [vars.inputTextAlign]: 'center' },\n  },\n\n  _fullWidth: {\n    [vars.buttonsSpacing]: 'space-between',\n  },\n\n  _disabled: {\n    [vars.itemsLabelColor]: globalRefs.colors.surface.light,\n  },\n};\n\nexport default radioGroup;\nexport { vars };\n","import { RadioButtonClass } from '../../../components/descope-radio-group/RadioButtonClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst vars = RadioButtonClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nexport const radioButton = {\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.radioSize]: 'calc(1em + 6px)',\n  [vars.radioMargin]: 'auto 4px',\n  [vars.radioCheckedSize]: `calc(var(${vars.radioSize})/5)`,\n  [vars.radioCheckedColor]: globalRefs.colors.surface.light,\n  [vars.radioBackgroundColor]: globalRefs.colors.surface.light,\n  [vars.radioBorderColor]: 'none',\n  [vars.radioBorderWidth]: 0,\n\n  _checked: {\n    [vars.radioBackgroundColor]: globalRefs.colors.surface.contrast,\n  },\n\n  _hover: {\n    cursor: 'pointer',\n  },\n\n  size: {\n    xs: {\n      [vars.fontSize]: '12px',\n    },\n    sm: {\n      [vars.fontSize]: '14px',\n    },\n    md: {\n      [vars.fontSize]: '16px',\n    },\n    lg: {\n      [vars.fontSize]: '18px',\n    },\n  },\n};\n\nexport default radioButton;\nexport { vars };\n","export const SUPPORTED_FORMATS = ['MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY/MM/DD'];\n\nexport const DEFAULT_FORMAT = SUPPORTED_FORMATS[0];\n\nexport const NATIVE_FORMAT = 'YYYY-MM-DD';\n\nexport const YEARS_RANGE = 100;\n\nexport const DIVIDER = '/';\n\nexport const months = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December',\n];\n\nexport const weekdays = [\n  'Sunday',\n  'Monday',\n  'Tuesday',\n  'Wednesday',\n  'Thursday',\n  'Friday',\n  'Saturday',\n];\n\nexport const counterConfig = {\n  MONTH: { id: 'month', min: 1, max: 12, placeholder: 'MM' },\n  DAY: { id: 'day', min: 1, max: 31, placeholder: 'DD' },\n  YEAR: { id: 'year', min: 0, max: 9999, placeholder: 'YYYY' },\n};\n\nexport const valRange = {\n  year: { min: 1900, max: 2099 },\n};\n\nexport const BUTTON_LABEL_DONE = 'Done';\nexport const BUTTON_LABEL_CANCEL = 'Cancel';\nexport const CALENDAR_LABEL_TODAY = 'Today';\n\nexport const MOBILE_DEVICE_INTERACTION_TIMEOUT_MS = 150;\n","// polyfill for safari Date API (which doesn't accept \"YYYY-MM-DD\" string as value)\nexport const newDate = (date, isUtcTime) => {\n  if (typeof date === 'number') {\n    return new Date(date);\n  }\n  if (typeof date === 'string') {\n    const d = new Date(date.replace(/-/g, '/'));\n    if (isUtcTime) {\n      return new Date(\n        Date.UTC(\n          d.getFullYear(),\n          d.getMonth(),\n          d.getDate(),\n          d.getHours(),\n          d.getMinutes(),\n          d.getSeconds(),\n          d.getMilliseconds()\n        )\n      );\n    }\n    return new Date(d);\n  }\n  return new Date();\n};\n","import { DIVIDER, SUPPORTED_FORMATS } from './consts';\nimport { newDate } from './date-utils';\n\nconst patterns = {\n  MM: '(0?[1-9]|1[0-2])',\n  DD: '(0?[1-9]|[12][0-9]|3[01])',\n  YYYY: '([0-9]{4})',\n};\n\nconst createPattern = (format) => {\n  const pattern = format\n    .split(DIVIDER)\n    .map((part) => patterns[part])\n    .join('\\\\D');\n\n  return `^${pattern}$`;\n};\n\nconst createToValuesFn = (format) => {\n  const order = format.split(DIVIDER);\n  return (match) => {\n    const values = {};\n    order.forEach((part, index) => {\n      values[part] = match[index + 1];\n    });\n    return [values.YYYY, values.MM, values.DD];\n  };\n};\n\nconst createDate = (val, regexp, toValuesFn) => {\n  const match = regexp.exec(val);\n  if (!match) return null;\n  const [year, month, day] = toValuesFn(match);\n  return newDate([year, month, day].join(DIVIDER));\n};\n\nconst createFormat = (format) => {\n  const pattern = createPattern(format);\n  const toValuesFn = createToValuesFn(format);\n  const regexp = new RegExp(pattern);\n\n  return {\n    pattern,\n    validate: (val) => regexp.test(val),\n    getDate: (val) => createDate(val, regexp, toValuesFn),\n  };\n};\n\nexport const formats = Object.fromEntries(SUPPORTED_FORMATS.map((f) => [f, createFormat(f)]));\n","import { formats } from './formats';\nimport { newDate } from './date-utils';\n\nexport const isValidEpoch = (val) => !Number.isNaN(Number(val));\n\nexport const isNumber = (val) => !!String(val || '').trim() && !Number.isNaN(Number(val));\n\nexport const getPartsFromEpoch = (epoch) => {\n  const date = newDate(epoch);\n  const year = date.getFullYear();\n  const month = date.getMonth() + 1;\n  const day = date.getDate();\n  return [year, month, day];\n};\n\nexport const formatEpoch = (epoch, format) => {\n  const [year, month, day] = getPartsFromEpoch(epoch);\n\n  const parts = {\n    DD: String(day).padStart(2, '0'),\n    MM: String(month).padStart(2, '0'),\n    YYYY: String(year),\n  };\n\n  return format.replace(/DD|MM|YYYY/g, (match) => parts[match]);\n};\n\nexport const getCurrentTime = () => newDate().getTime();\nexport const getFullYear = (epoch) => newDate(epoch).getFullYear().toString();\nexport const getMonth = (epoch) => (newDate(epoch).getMonth() + 1).toString();\nexport const getCurrentDay = () => newDate().getDate();\nexport const getCurrentYear = () => newDate().getFullYear().toString();\n\n// Vaadin uses \"constructed stylesheet\" to hide the host in dialog components.\n// To override it, we need to push an overriding constructed stylesheet to the shadow DOM\n// opened issue in vaadin: https://github.com/vaadin/web-components/issues/7979\nexport const overrideConstructedStylesheet = (ele) => {\n  const cs = new CSSStyleSheet();\n  cs.insertRule(':host{display:block!important;}');\n  ele?.shadowRoot?.adoptedStyleSheets?.push(cs);\n};\n\nexport const parseDateString = (val, format) => {\n  const trimmed = val.trim?.();\n  if (!trimmed) return null;\n  return formats[format].getDate(trimmed);\n};\n\nexport const dateToEpoch = (date, isUtc) => {\n  // If it's already a number (epoch), return it directly - no conversion needed\n  if (typeof date === 'number') {\n    return date;\n  }\n\n  if (isUtc) {\n    return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  // Default: return epoch in local timezone\n  return date.getTime();\n};\n","export const calendarIcon = `\n<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 5H15V4.50468C15 4.21404 15.226 4 15.5047 4H16.4953C16.786 4 17 4.22595 17 4.50468V5H18.7568C19.3028 5 19.75 5.44725 19.75 5.99896V7.00104C19.75 7.55734 19.3053 8 18.7568 8H5.24317C4.69717 8 4.25 7.55275 4.25 7.00104V5.99896C4.25 5.44266 4.69466 5 5.24317 5H7V4.50468C7 4.21404 7.22596 4 7.50468 4H8.49532C8.78596 4 9 4.22595 9 4.50468V5ZM5.50468 9H6.49532C6.78596 9 7 9.22596 7 9.50468V10.4953C7 10.786 6.77404 11 6.49532 11H5.50468C5.21404 11 5 10.774 5 10.4953V9.50468C5 9.21404 5.22595 9 5.50468 9ZM8.50468 9H9.49532C9.78596 9 10 9.22596 10 9.50468V10.4953C10 10.786 9.77404 11 9.49532 11H8.50468C8.21404 11 8 10.774 8 10.4953V9.50468C8 9.21404 8.22596 9 8.50468 9ZM11.5047 9H12.4953C12.786 9 13 9.22596 13 9.50468V10.4953C13 10.786 12.774 11 12.4953 11H11.5047C11.214 11 11 10.774 11 10.4953V9.50468C11 9.21404 11.226 9 11.5047 9ZM5.50468 12H6.49532C6.78596 12 7 12.226 7 12.5047V13.4953C7 13.786 6.77404 14 6.49532 14H5.50468C5.21404 14 5 13.774 5 13.4953V12.5047C5 12.214 5.22595 12 5.50468 12ZM8.50468 12H9.49532C9.78596 12 10 12.226 10 12.5047V13.4953C10 13.786 9.77404 14 9.49532 14H8.50468C8.21404 14 8 13.774 8 13.4953V12.5047C8 12.214 8.22596 12 8.50468 12ZM11.5047 12H12.4953C12.786 12 13 12.226 13 12.5047V13.4953C13 13.786 12.774 14 12.4953 14H11.5047C11.214 14 11 13.774 11 13.4953V12.5047C11 12.214 11.226 12 11.5047 12ZM5.50468 15H6.49532C6.78596 15 7 15.226 7 15.5047V16.4953C7 16.786 6.77404 17 6.49532 17H5.50468C5.21404 17 5 16.774 5 16.4953V15.5047C5 15.214 5.22595 15 5.50468 15ZM8.50468 15H9.49532C9.78596 15 10 15.226 10 15.5047V16.4953C10 16.786 9.77404 17 9.49532 17H8.50468C8.21404 17 8 16.774 8 16.4953V15.5047C8 15.214 8.22596 15 8.50468 15ZM11.5047 15H12.4953C12.786 15 13 15.226 13 15.5047V16.4953C13 16.786 12.774 17 12.4953 17H11.5047C11.214 17 11 16.774 11 16.4953V15.5047C11 15.214 11.226 15 11.5047 15ZM14.5047 9H15.4953C15.786 9 16 9.22596 16 9.50468V10.4953C16 10.786 15.774 11 15.4953 11H14.5047C14.214 11 14 10.774 14 10.4953V9.50468C14 9.21404 14.226 9 14.5047 9ZM14.5047 12H15.4953C15.786 12 16 12.226 16 12.5047V13.4953C16 13.786 15.774 14 15.4953 14H14.5047C14.214 14 14 13.774 14 13.4953V12.5047C14 12.214 14.226 12 14.5047 12ZM14.5047 15H15.4953C15.786 15 16 15.226 16 15.5047V16.4953C16 16.786 15.774 17 15.4953 17H14.5047C14.214 17 14 16.774 14 16.4953V15.5047C14 15.214 14.226 15 14.5047 15ZM17.5047 15H18.4953C18.786 15 19 15.226 19 15.5047V16.4953C19 16.786 18.774 17 18.4953 17H17.5047C17.214 17 17 16.774 17 16.4953V15.5047C17 15.214 17.226 15 17.5047 15ZM5.50468 18H6.49532C6.78596 18 7 18.226 7 18.5047V19.4953C7 19.786 6.77404 20 6.49532 20H5.50468C5.21404 20 5 19.774 5 19.4953V18.5047C5 18.214 5.22595 18 5.50468 18ZM8.50468 18H9.49532C9.78596 18 10 18.226 10 18.5047V19.4953C10 19.786 9.77404 20 9.49532 20H8.50468C8.21404 20 8 19.774 8 19.4953V18.5047C8 18.214 8.22596 18 8.50468 18ZM11.5047 18H12.4953C12.786 18 13 18.226 13 18.5047V19.4953C13 19.786 12.774 20 12.4953 20H11.5047C11.214 20 11 19.774 11 19.4953V18.5047C11 18.214 11.226 18 11.5047 18ZM14.5047 18H15.4953C15.786 18 16 18.226 16 18.5047V19.4953C16 19.786 15.774 20 15.4953 20H14.5047C14.214 20 14 19.774 14 19.4953V18.5047C14 18.214 14.226 18 14.5047 18ZM17.5047 18H18.4953C18.786 18 19 18.226 19 18.5047V19.4953C19 19.786 18.774 20 18.4953 20H17.5047C17.214 20 17 19.774 17 19.4953V18.5047C17 18.214 17.226 18 17.5047 18ZM17.5047 12H18.4953C18.786 12 19 12.226 19 12.5047V13.4953C19 13.786 18.774 14 18.4953 14H17.5047C17.214 14 17 13.774 17 13.4953V12.5047C17 12.214 17.226 12 17.5047 12ZM17.5047 9H18.4953C18.786 9 19 9.22596 19 9.50468V10.4953C19 10.786 18.774 11 18.4953 11H17.5047C17.214 11 17 10.774 17 10.4953V9.50468C17 9.21404 17.226 9 17.5047 9Z\" fill=\"#808080\"/>\n</svg>\n`;\n\nexport const arrowRightIcon = `\n<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.27283 6.78069C8.87912 6.34164 8.91587 5.66655 9.35492 5.27283C9.79397 4.87912 10.4691 4.91587 10.8628 5.35492C10.8628 5.35492 16.0022 10.9543 16.366 11.36C16.7298 11.7657 16.7298 12.2392 16.366 12.6448L10.8628 18.6451C10.4691 19.0841 9.79397 19.1209 9.35492 18.7272C8.91587 18.3334 8.87912 17.6584 9.27283 17.2193L14.1368 12L9.27283 6.78069Z\" fill=\"#808080\"/>\n</svg>`;\n\nexport const arrowLeftIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M14.7272 17.2193C15.1209 17.6584 15.0841 18.3334 14.6451 18.7272C14.206 19.1209 13.5309 19.0841 13.1372 18.6451C13.1372 18.6451 7.99776 13.0457 7.63399 12.64C7.27023 12.2343 7.27023 11.7608 7.63399 11.3552L13.1372 5.35492C13.5309 4.91587 14.206 4.87912 14.6451 5.27283C15.0841 5.66655 15.1209 6.34164 14.7272 6.78069L9.86322 12L14.7272 17.2193Z\" fill=\"#808080\"/>\n</svg>`;\n","import { months, weekdays } from '../consts';\nimport { getPartsFromEpoch } from '../helpers';\nimport { newDate } from '../date-utils';\n\nconst isValidAttrArr = (arr, count) =>\n  Array.isArray(arr) && arr.length === count && arr.filter(Boolean).length === count;\n\nconst generateYearList = (range) => {\n  const [start, end] = range;\n  const years = [];\n\n  for (let year = start; year <= end; year++) {\n    years.push(year);\n  }\n\n  return years;\n};\n\nconst getMaxDaysInMonth = (year, month) => {\n  return new Date(year, month, 0).getDate();\n};\n\nconst comboBoxItemTpl = ({ label, dataId, dataName }) => `\n\t<div class=\"combo-box-item\"\n\t\tdata-id=\"${dataId}\"\n\t\tdata-name=\"${dataName}\"\n\t>\n\t\t\t${label}\n\t</div>\n`;\n\nexport const createMonthView = (year, month, shortWeekdays) => {\n  const daysInMonth = getMaxDaysInMonth(year, month);\n\n  // Get day of the week (0 = Sunday, 1 = Monday, etc.)\n  const firstDayOfMonth = new Date(year, month - 1, 1).getDay();\n\n  let monthView = '<table>';\n\n  // Add the table headers (days of the week)\n  monthView += `<thead><tr>${shortWeekdays.reduce(\n    (acc, d) => `${acc}<th><span class=\"weekday\">${d}</span></th>`,\n    ''\n  )}</tr></thead>`;\n\n  monthView += '<tbody>';\n\n  // Add empty cells for the days before the start of the month\n  monthView += '<tr>';\n  for (let i = 0; i < firstDayOfMonth; i++) {\n    monthView += '<td></td>';\n  }\n\n  // Add days of the month\n  let dayOfWeek = firstDayOfMonth;\n  for (let i = 1; i <= daysInMonth; i++) {\n    if (dayOfWeek === 7) {\n      dayOfWeek = 0;\n      monthView += '</tr><tr>';\n    }\n\n    monthView += `\n      <td\n        data-date-day=\"${i}\"\n        class=\"day-entry\">\n        <span class=\"day\" data-date-day=${i}>\n          ${i}\n        </span>\n      </td>\n    `;\n    dayOfWeek++;\n  }\n\n  // Add empty cells for the days after the end of the month\n  while (dayOfWeek < 7) {\n    monthView += '<td></td>';\n    dayOfWeek++;\n  }\n\n  monthView += '</tr></tbody></table>';\n\n  return monthView;\n};\n\nexport const getYearOptions = (range) =>\n  generateYearList(range)\n    .map((item) => comboBoxItemTpl({ label: item, dataId: item, dataName: item }))\n    .join('');\n\nexport const getMonthsOptions = (customMonths = months) =>\n  customMonths\n    .map((item, index) => comboBoxItemTpl({ label: item, dataId: index + 1, dataName: item }))\n    .join('');\n\nexport const isViewVisible = (selectionEpoch, previewEpoch) => {\n  const [previewYear, previewMonth] = getPartsFromEpoch(previewEpoch);\n  const [selectedYear, selectedMonth] = getPartsFromEpoch(selectionEpoch);\n  return selectedYear === previewYear && selectedMonth === previewMonth;\n};\n\nexport const createInputs = () => {\n  const ele = document.createElement('span');\n\n  ele.innerHTML = `\n    <descope-combo-box\n      label-type=\"static\"\n      bordered=\"true\"\n      item-label-path=\"data-name\"\n      item-value-path=\"data-id\"\n      class=\"month-input\"\n    >\n    ${getMonthsOptions()}\n    </descope-combo-box>\n    <descope-combo-box\n      allow-custom-value=\"true\"\n      label-type=\"static\"\n      bordered=\"true\"\n      item-label-path=\"data-name\"\n      item-value-path=\"data-id\"\n      class=\"year-input\"\n      no-empty-value=\"true\"\n    >\n    </descope-combo-box>\n  `;\n\n  return ele;\n};\n\nexport const initComboBox = (input, onChange, onBlur) => {\n  input.addEventListener('input', onChange);\n  input.addEventListener('focusout', onBlur);\n  return input;\n};\n\nexport const ensureMonthNamesArr = (attrVal) => {\n  const monthArr = attrVal?.split(',');\n  return isValidAttrArr(monthArr, 12) ? monthArr : months;\n};\n\nexport const ensureWeekdayNamesArr = (attrVal) => {\n  const customWeekdayArr = attrVal?.split?.(',');\n  const isCustomValid = isValidAttrArr(customWeekdayArr, 7);\n  return isCustomValid ? customWeekdayArr : weekdays;\n};\n\nexport const ensureShortWeekdayNamesArr = (attrVal) => {\n  const customShortWeekdays = attrVal;\n\n  if (!attrVal || !isValidAttrArr(customShortWeekdays, 7)) {\n    return weekdays.map((d) => d.substring(0, 3));\n  }\n\n  return customShortWeekdays.map((d) => d.substring(0, 3));\n};\n\nexport const truncateWeekdays = (arr) => arr.map((d) => d.substring(0, 3));\n\nexport const prevMonth = (epoch) => {\n  const date = newDate(epoch);\n  const month = date.getMonth();\n\n  if (month === 0) {\n    const year = date.getFullYear();\n    date.setFullYear(year - 1);\n    date.setMonth(11);\n  } else {\n    date.setMonth(month - 1);\n  }\n\n  return date;\n};\n\nexport const nextMonth = (epoch) => {\n  const date = newDate(epoch);\n  const month = date.getMonth();\n\n  if (month === 11) {\n    const year = date.getFullYear();\n    date.setFullYear(year + 1);\n    date.setMonth(0);\n  } else {\n    date.setMonth(month + 1);\n  }\n\n  return date;\n};\n","import { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { inputFloatingLabelStyle } from '../../../helpers/themeHelpers/resetHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../../mixins';\nimport {\n  getCurrentDay,\n  getPartsFromEpoch,\n  isValidEpoch,\n  formatEpoch,\n  getCurrentTime,\n  getFullYear,\n  getMonth,\n} from '../helpers';\nimport { arrowLeftIcon, arrowRightIcon } from '../icons';\nimport {\n  BUTTON_LABEL_CANCEL,\n  BUTTON_LABEL_DONE,\n  CALENDAR_LABEL_TODAY,\n  NATIVE_FORMAT,\n  YEARS_RANGE,\n} from '../consts';\nimport {\n  createMonthView,\n  createInputs,\n  getMonthsOptions,\n  getYearOptions,\n  initComboBox,\n  ensureMonthNamesArr,\n  isViewVisible,\n  ensureWeekdayNamesArr,\n  truncateWeekdays,\n  prevMonth,\n  nextMonth,\n} from './helpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { newDate } from '../date-utils';\n\nexport const componentName = getComponentName('calendar');\n\nconst observedAttrs = [\n  'initial-value',\n  'initial-year',\n  'initial-month',\n  'years-range',\n  'calendar-months',\n  'calendar-weekdays',\n  'calendar-label-today',\n  'st-host-direction',\n  'disabled',\n  'full-width',\n];\n\nconst calendarUiAttrs = ['calendar-label-submit', 'calendar-label-cancel'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass RawCalendar extends BaseInputClass {\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], observedAttrs, calendarUiAttrs);\n  }\n\n  // preview state epoch\n  preview;\n\n  // value epoch\n  epoch;\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div>\n      <nav class=\"nav top-nav\">\n        <div class=\"nav-prev\">\n        </div>\n        <div class=\"selectors\"></div>\n        <div class=\"nav-next\">\n        </div>\n      </nav>\n      <div class=\"calendar\"></div>\n      <nav class=\"nav bottom-nav\">\n        <descope-button class=\"cancel-button\" variant=\"link\" mode=\"primary\">Cancel</descope-button>\n        <descope-button class=\"submit-button\" variant=\"link\" mode=\"primary\" disabled=\"true\">Done</descope-button>\n      </nav>\n    </div>\n  `;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-block;\n        box-sizing: border-box;\n        max-width: 100%;\n        user-select: none;\n        -webkit-user-select: none;\n      }\n\n      :host ::slotted {\n        padding: 0;\n      }\n\n      [data-toggle-calendar] {\n        cursor: pointer;\n        display: flex;\n        align-self: center;\n        z-index: 1;\n      }\n\n      [data-disabled=\"true\"] {\n        pointer-events: none;\n      }\n\n      .calendar .day {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      .nav {\n        display: flex;\n        align-items: center;\n        box-sizing: border-box;\n      }\n\n      .selectors,\n      .selectors span {\n        display: flex;\n        justify-content: center;\n      }\n\n      descope-button {\n        padding: 0;\n        ${ButtonClass.cssVarList.horizontalPadding}: 0;\n        ${ButtonClass.cssVarList.verticalPadding}: 0;\n        ${ButtonClass.cssVarList.outlineWidth}: 0;\n      }\n\n      .combo-box-item {\n        display:flex;\n        flex-direction: column;\n      }\n\n      ${inputFloatingLabelStyle()}\n      `,\n      this\n    );\n  }\n\n  set value(val) {\n    if (!val) return;\n\n    const epoch = newDate(val).getTime();\n\n    if (!isValidEpoch(epoch) || epoch === this.epoch) {\n      return;\n    }\n\n    this.epoch = epoch;\n\n    this.renderCalendar();\n  }\n\n  get value() {\n    return this.epoch ? formatEpoch(this.epoch, NATIVE_FORMAT) : '';\n  }\n\n  get isSelectedView() {\n    return isViewVisible(this.preview, this.epoch);\n  }\n\n  get isTodayView() {\n    return isViewVisible(getCurrentTime(), this.preview);\n  }\n\n  get monthNames() {\n    return ensureMonthNamesArr(this.getAttribute('calendar-months'));\n  }\n\n  get weekdayNames() {\n    return ensureWeekdayNamesArr(this.getAttribute('calendar-weekdays'));\n  }\n\n  get hasYearValue() {\n    return !!this.yearInput.value;\n  }\n\n  get hasMonthValue() {\n    return !!this.monthInput.value;\n  }\n\n  get yearsRange() {\n    const range = this.getAttribute('years-range')?.split('-');\n\n    if (range?.length === 2) {\n      const [start, end] = range.map(Number);\n      if (start <= end) return [start, end];\n    }\n\n    const currentYear = newDate().getFullYear();\n\n    return [currentYear, currentYear + YEARS_RANGE];\n  }\n\n  init() {\n    super.init?.();\n    this.initCalendar();\n    this.renderCalendar();\n  }\n\n  initCalendar() {\n    this.calendar = this.shadowRoot.querySelector('.calendar');\n\n    this.navPrevEle = this.shadowRoot.querySelector('.nav-prev');\n    this.navNextEle = this.shadowRoot.querySelector('.nav-next');\n    this.submitButton = this.shadowRoot.querySelector('.submit-button');\n    this.cancelButton = this.shadowRoot.querySelector('.cancel-button');\n\n    this.initInputs();\n    this.initNav();\n\n    this.addEventListener('day-changed', () => this.submitButton.removeAttribute('disabled'));\n    // This is a workaround for descope-components inside Vaadin's Popover component.\n    // When we sync attributes, the `disabled` attribute is being compared to the attribute\n    // on Vaadin component; since the Vaadin component has no `disabled` attribute, we sync\n    // that back to our component. This happens when using Popover, and for specific attributes,\n    // namely `disabled`. This is pending a more generic fix in the way we sync attibutes.\n    this.submitButton.shadowRoot.querySelector('vaadin-button').setAttribute('disabled', 'true');\n  }\n\n  initInputs() {\n    const ele = createInputs(this.monthNames, this.yearsRange);\n    this.shadowRoot.querySelector('.selectors').appendChild(ele);\n\n    this.monthInput = initComboBox(\n      this.shadowRoot.querySelector('.month-input'),\n      this.onMonthChange.bind(this),\n      this.onMonthInputBlur.bind(this)\n    );\n\n    this.yearInput = initComboBox(\n      this.shadowRoot.querySelector('.year-input'),\n      this.onYearChange.bind(this),\n      this.onYearInputBlur.bind(this)\n    );\n\n    [this.monthInput, this.yearInput].forEach((selector) =>\n      forwardAttrs(this, selector, {\n        includeAttrs: ['disabled', 'size', 'st-host-direction'],\n      })\n    );\n  }\n\n  initNav() {\n    this.navPrevEle.addEventListener('click', this.navPrevMonth.bind(this));\n    this.navNextEle.addEventListener('click', this.navNextMonth.bind(this));\n    this.cancelButton.addEventListener('click', this.onCancel.bind(this));\n    this.submitButton.addEventListener('click', this.onSubmit.bind(this));\n\n    [this.navPrevEle, this.navNextEle].forEach((btn) =>\n      forwardAttrs(this, btn, {\n        includeAttrs: ['size'],\n      })\n    );\n\n    this.shadowRoot.querySelector('.nav-next').innerHTML = arrowRightIcon;\n    this.shadowRoot.querySelector('.nav-prev').innerHTML = arrowLeftIcon;\n  }\n\n  onSubmit() {\n    if (this.isDisabled) return;\n    if (!this.value) return;\n    this.dispatchEvent(new CustomEvent('date-submit', { detail: newDate(this.preview) }));\n  }\n\n  onCancel() {\n    if (this.isDisabled) return;\n    this.dispatchEvent(new CustomEvent('cancel'));\n    this.dispatchEvent(new CustomEvent('date-cancel'));\n    this.clearSelectedDay();\n  }\n\n  clearSelectedDay() {\n    this.getSelectedDayEle()?.removeAttribute('data-selected');\n    this.submitButton.setAttribute('disabled', 'true');\n    this.epoch = '';\n  }\n\n  updateInputs() {\n    if (this.yearInput && this.monthInput) {\n      const epoch = this.preview || getCurrentTime();\n      const year = getFullYear(epoch);\n      const month = getMonth(epoch);\n      this.monthInput.value = month;\n      // For the yearInput we update the base element directly to properly trigger the change event\n      // since this can be a custom value\n      setTimeout(() => {\n        this.yearInput.baseElement.value = year;\n      });\n    }\n  }\n\n  renderCalendar() {\n    const date = newDate(this.preview || getCurrentTime());\n    const epoch = date.getTime();\n\n    const [year, month] = getPartsFromEpoch(epoch);\n\n    if (this.calendar) {\n      this.calendar.innerHTML = createMonthView(year, month, truncateWeekdays(this.weekdayNames));\n    }\n\n    Array.from(this.calendar?.querySelectorAll('.day-entry .day') || []).forEach((ele) =>\n      ele.addEventListener('click', this.onDayChange.bind(this))\n    );\n\n    this.updateInputs();\n    this.setSelectedDay();\n    this.setCurrentDay();\n  }\n\n  onDayChange(e) {\n    if (this.isDisabled) return;\n    const date = newDate(this.preview);\n    date.setDate(Number(e.target.getAttribute('data-date-day')));\n    this.value = formatEpoch(date.getTime(), NATIVE_FORMAT);\n    this.dispatchEvent(new CustomEvent('day-changed', { detail: date }));\n  }\n\n  onYearChange(e) {\n    if (!e.target.value) return;\n    const date = newDate(this.preview);\n    date.setFullYear(Number(e.target.value.trim()));\n    this.preview = date.getTime();\n    this.renderCalendar();\n    this.dispatchEvent(new CustomEvent('year-changed', { detail: date }));\n  }\n\n  onMonthChange(e) {\n    if (!e.target.value) return;\n    const date = newDate(this.preview);\n    date.setMonth(Number(e.target.value) - 1);\n    this.preview = date.getTime();\n    this.renderCalendar();\n    this.dispatchEvent(new CustomEvent('month-changed', { detail: date }));\n  }\n\n  onYearInputBlur(e) {\n    this.yearInput.baseElement.value = e.target.value || getFullYear(this.preview);\n  }\n\n  onMonthInputBlur(e) {\n    this.monthInput.baseElement.value = e.target.value || getMonth(this.preview);\n  }\n\n  getSelectedDayEle() {\n    const day = newDate(this.epoch).getDate();\n    return this.calendar?.querySelector(`[data-date-day=\"${day}\"]`);\n  }\n\n  getCurrentDayEle() {\n    return this.calendar?.querySelector(`[data-date-day=\"${getCurrentDay()}\"]`);\n  }\n\n  clearSelectedDays() {\n    const cells = this.calendar?.querySelectorAll(`[data-selected]`);\n    if (!cells) return;\n    cells.forEach((c) => c.removeAttribute('data-selected'));\n  }\n\n  setSelectedDay() {\n    this.clearSelectedDays();\n    if (this.value && this.isSelectedView) {\n      this.getSelectedDayEle().setAttribute('data-selected', 'true');\n    }\n  }\n\n  setCurrentDay() {\n    if (this.isTodayView) {\n      const ele = this.getCurrentDayEle();\n      const title = this.getAttribute('calendar-label-today') || CALENDAR_LABEL_TODAY;\n      ele?.setAttribute('data-current-day', 'true');\n      ele?.setAttribute('title', title);\n    }\n  }\n\n  navPrevMonth() {\n    if (this.isDisabled) {\n      return;\n    }\n    const date = prevMonth(this.preview);\n    this.preview = date.getTime();\n    this.renderCalendar();\n  }\n\n  navNextMonth() {\n    if (this.isDisabled) {\n      return;\n    }\n    const date = nextMonth(this.preview);\n    this.preview = date.getTime();\n    this.renderCalendar();\n  }\n\n  clearValue() {\n    this.epoch = '';\n    this.value = '';\n    this.removeAttribute('preview');\n    this.submitButton.setAttribute('disabled', 'true');\n  }\n\n  onInitialValueChange(newValue) {\n    // if component already has a value don't re-set value\n    if (this.value) {\n      return;\n    }\n\n    const date = newDate(newValue);\n    const epoch = date.getTime();\n\n    if (isValidEpoch(epoch)) {\n      this.epoch = epoch;\n      this.preview = epoch;\n    } else {\n      this.clearValue();\n    }\n  }\n\n  onYearsRangeChange() {\n    setTimeout(() => {\n      if (this.yearInput) {\n        this.yearInput.innerHTML = getYearOptions(this.yearsRange);\n      }\n    });\n  }\n\n  onMonthNamesChange() {\n    setTimeout(() => {\n      if (this.monthInput) {\n        this.monthInput.innerHTML = getMonthsOptions(this.monthNames);\n      }\n    });\n  }\n\n  onSubmitLabelChange(newValue) {\n    if (this.submitButton) {\n      this.submitButton.textContent = newValue || BUTTON_LABEL_DONE;\n    }\n  }\n\n  onCancelLabelChange(newValue) {\n    if (this.cancelButton) {\n      this.cancelButton.textContent = newValue || BUTTON_LABEL_CANCEL;\n    }\n  }\n\n  onInitialMonthChange(val) {\n    const currYear = getFullYear(this.preview);\n    this.preview = newDate(`${currYear}/${val}/1`).getTime();\n  }\n\n  onInitialYearChange(val) {\n    const currMonth = getMonth(this.preview);\n    this.preview = newDate(`${val}/${currMonth}/1`).getTime();\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (oldValue !== newValue) {\n      // attrs for which affect static ui parts doesn't require calendar re-render\n      if (calendarUiAttrs.includes(attrName)) {\n        if (attrName === 'calendar-label-submit') {\n          this.onSubmitLabelChange(newValue);\n        }\n        if (attrName === 'calendar-label-cancel') {\n          this.onCancelLabelChange(newValue);\n        }\n      } else {\n        // we want to render the calendar for each of these attr change\n\n        if (newValue && attrName === 'initial-value') {\n          this.onInitialValueChange(newValue);\n        }\n        if (newValue && attrName === 'initial-month') {\n          this.onInitialMonthChange(newValue);\n        }\n        if (newValue && attrName === 'initial-year') {\n          this.onInitialYearChange(newValue);\n        }\n        if (attrName === 'years-range') {\n          this.onYearsRangeChange(Number(newValue));\n        }\n        if (attrName === 'calendar-months') {\n          this.onMonthNamesChange();\n        }\n        if (attrName === 'calendar-label-today') {\n          this.setCurrentDay(newValue);\n        }\n        if (attrName === 'disabled') {\n          setTimeout(() => {\n            this.cancelButton?.setAttribute('disabled', newValue === 'true');\n          });\n        }\n\n        this.renderCalendar();\n      }\n    }\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n    return {};\n  }\n}\n\nconst {\n  calendar,\n  day,\n  dayEntry,\n  currentDay,\n  selectedDay,\n  disabledDay,\n  weekday,\n  topNav,\n  topNavSelectors,\n  bottomNav,\n  navPrev,\n  navNext,\n  navPrevRTL,\n  navNextRTL,\n  yearInput,\n  monthInput,\n} = {\n  calendar: { selector: () => '.calendar' },\n  topNav: { selector: () => '.nav.top-nav' },\n  topNavSelectors: { selector: () => '.nav.top-nav .selectors > span' },\n  bottomNav: { selector: () => '.nav.bottom-nav' },\n  day: { selector: () => '.day' },\n  dayEntry: { selector: () => '.day-entry' },\n  currentDay: { selector: () => '.day-entry[data-current-day] .day' },\n  selectedDay: { selector: () => '.day-entry[data-selected] .day' },\n  disabledDay: { selector: () => '.day-entry[data-disabled=\"true\"] .day' },\n  weekday: { selector: () => '.weekday' },\n  navPrev: { selector: () => '.nav-prev' },\n  navNext: { selector: () => '.nav-next' },\n  navPrevRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) .nav-prev' },\n  navNextRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) .nav-next' },\n  yearInput: { selector: () => '.year-input' },\n  monthInput: { selector: () => '.month-input' },\n};\n\nexport const CalendarClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      fontSize: {},\n      fontFamily: {},\n      hostWidth: [\n        { selector: () => ':host', property: 'width' },\n        { selector: 'table', property: 'width' },\n      ],\n      hostDirection: { property: 'direction' },\n\n      topNavVerticalPadding: [\n        { ...topNav, property: 'padding-top' },\n        { ...topNav, property: 'padding-bottom' },\n      ],\n      topNavHorizointalPadding: [\n        { ...topNav, property: 'padding-right' },\n        { ...topNav, property: 'padding-left' },\n      ],\n      topNavAlignment: { ...topNav, property: 'justify-content' },\n      topNavGap: { ...topNav, property: 'gap' },\n      topNavSelectorsGap: { ...topNavSelectors, property: 'gap' },\n\n      bottomNavVerticalPadding: [\n        { ...bottomNav, property: 'padding-top' },\n        { ...bottomNav, property: 'padding-bottom' },\n      ],\n      bottomNavHorizontalPadding: [\n        { ...bottomNav, property: 'padding-right' },\n        { ...bottomNav, property: 'padding-left' },\n      ],\n      bottomNavAlignment: { ...bottomNav, property: 'justify-content' },\n      bottomNavGap: { ...bottomNav, property: 'gap' },\n\n      navMarginBottom: { ...topNav, property: 'margin-bottom' },\n\n      calendarPadding: [\n        { ...calendar, property: 'padding-bottom' },\n        { ...calendar, property: 'padding-right' },\n        { ...calendar, property: 'padding-left' },\n      ],\n\n      navBorderBottomWidth: { ...topNav, property: 'border-bottom-width' },\n      navBorderBottomColor: { ...topNav, property: 'border-bottom-color' },\n      navBorderBottomStyle: { ...topNav, property: 'border-bottom-style' },\n\n      weekdayFontSize: { ...weekday, property: 'font-size' },\n      weekdayFontWeight: { ...weekday, property: 'font-weight' },\n\n      currentDayBorderColor: {\n        ...currentDay,\n        property: 'border-color',\n      },\n      currentDayBorderWidth: {\n        ...currentDay,\n        property: 'border-width',\n      },\n      currentDayBorderStyle: {\n        ...currentDay,\n        property: 'border-style',\n      },\n\n      dayHeight: { ...dayEntry, property: 'height' },\n      daySize: [\n        { ...day, property: 'height' },\n        { ...day, property: 'width' },\n      ],\n      dayPadding: { ...day, property: 'padding' },\n      dayRadius: { ...day, property: 'border-radius' },\n      dayTextAlign: { ...day, property: 'text-align' },\n      dayBlockAlign: { ...day, property: 'margin' },\n      dayTextColor: { ...day, property: 'color' },\n      dayFontWeight: { ...day, property: 'font-weight' },\n      dayBackgroundColor: { ...day, property: 'background-color' },\n      dayCursor: { ...day, property: 'cursor' },\n      dayFontSize: { ...day, property: 'font-size' },\n\n      dayBackgroundColorHover: {\n        selector: () => '.day:hover',\n        property: 'background-color',\n      },\n\n      daySelectedTextdColor: {\n        ...selectedDay,\n        property: 'color',\n      },\n      daySelectedBackgroundColor: {\n        ...selectedDay,\n        property: 'background-color',\n      },\n      dayDisabledTextdColor: {\n        ...disabledDay,\n        property: 'color',\n      },\n\n      yearInputWidth: { ...yearInput, property: 'width' },\n      monthInputWidth: { ...monthInput, property: 'width' },\n\n      navButtonSize: [\n        { ...navPrev, property: 'width' },\n        { ...navPrev, property: 'height' },\n        { ...navNext, property: 'width' },\n        { ...navNext, property: 'height' },\n      ],\n      navButtonCursor: [\n        { ...navPrev, property: 'cursor' },\n        { ...navNext, property: 'cursor' },\n      ],\n      navButtonRotation: [\n        { ...navPrevRTL, property: 'transform' },\n        { ...navNextRTL, property: 'transform' },\n      ],\n      navButtonOpacity: [\n        { ...navPrev, property: 'opacity' },\n        { ...navNext, property: 'opacity' },\n      ],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawCalendar);\n","import globals from '../globals';\nimport { CalendarClass } from '../../components/descope-date-field/descope-calendar/CalendarClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = CalendarClass.cssVarList;\n\nconst calendar = {\n  [vars.fontFamily]: refs.fontFamily,\n  [vars.fontSize]: refs.fontSize,\n  [vars.hostDirection]: refs.direction,\n\n  [vars.calendarPadding]: '1em',\n\n  [vars.topNavVerticalPadding]: '1em',\n  [vars.topNavAlignment]: 'space-between',\n  [vars.topNavGap]: '0',\n  [vars.topNavSelectorsGap]: '0.5em',\n\n  [vars.bottomNavVerticalPadding]: '0.75em',\n  [vars.bottomNavHorizontalPadding]: '1.5em',\n  [vars.bottomNavAlignment]: 'space-between',\n  [vars.bottomNavGap]: '0.5em',\n\n  [vars.navMarginBottom]: '0.75em',\n  [vars.navBorderBottomWidth]: '1px',\n  [vars.navBorderBottomColor]: globalRefs.colors.surface.highlight,\n  [vars.navBorderBottomStyle]: 'solid',\n\n  [vars.yearInputWidth]: '6em',\n  [vars.monthInputWidth]: '8em',\n\n  [vars.navButtonSize]: '24px',\n  [vars.navButtonCursor]: 'pointer',\n\n  [vars.weekdayFontSize]: '0.875em',\n  [vars.weekdayFontWeight]: '500',\n\n  // day table cell\n  [vars.dayHeight]: '3.125em',\n\n  // day value\n  [vars.daySize]: '2.125em',\n  [vars.dayFontSize]: '1em',\n  [vars.dayRadius]: '50%',\n  [vars.dayTextAlign]: 'center',\n  [vars.dayPadding]: '0',\n  [vars.dayTextColor]: globalRefs.colors.surface.contrast,\n  [vars.dayFontWeight]: '500',\n  [vars.dayBackgroundColor]: 'transparent',\n  [vars.dayCursor]: 'pointer',\n  [vars.dayBackgroundColorHover]: globalRefs.colors.primary.highlight,\n\n  // selected day\n  [vars.daySelectedBackgroundColor]: globalRefs.colors.primary.main,\n  [vars.daySelectedTextdColor]: globalRefs.colors.primary.contrast,\n\n  // disabled day (out of min/max range)\n  [vars.dayDisabledTextdColor]: globalRefs.colors.surface.light,\n\n  // today\n  [vars.currentDayBorderColor]: globalRefs.colors.surface.light,\n  [vars.currentDayBorderWidth]: '1px',\n  [vars.currentDayBorderStyle]: 'solid',\n\n  size: {\n    xs: { [vars.fontSize]: '12px' },\n    sm: { [vars.fontSize]: '14px' },\n    md: { [vars.fontSize]: '16px' },\n    lg: { [vars.fontSize]: '18px' },\n  },\n\n  [vars.navButtonRotation]: 'rotate(180deg)',\n\n  _disabled: {\n    [vars.navButtonOpacity]: '0.5',\n    [vars.dayBackgroundColorHover]: 'none',\n    [vars.navButtonCursor]: 'default',\n    [vars.dayCursor]: 'default',\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n    [vars.dayBlockAlign]: '0 auto',\n  },\n};\n\nexport default calendar;\nexport { vars };\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n  #data = Object.freeze([]);\n\n  constructor({ id, min, max, placeholder }, onChange) {\n    this.id = id;\n    this.min = min;\n    this.max = max;\n    this.placeholder = placeholder;\n    this.onChange = onChange;\n  }\n\n  get data() {\n    return this.#data;\n  }\n\n  set data(val) {\n    this.#data = Object.freeze(val);\n    this.onChange?.();\n  }\n\n  get #initialNumValue() {\n    return this.data.length ? this.numberValue : 0;\n  }\n\n  get numberValue() {\n    return Number(this.stringValue);\n  }\n\n  get stringValue() {\n    return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n  }\n\n  get isFull() {\n    return this.numberValue * 10 > this.max || this.data.length === this.length;\n  }\n\n  get isEmpty() {\n    return this.stringValue === this.placeholder;\n  }\n\n  get length() {\n    return this.max.toString().length;\n  }\n\n  set(val) {\n    this.data = val.toString().split('');\n  }\n\n  add(num) {\n    // use local var to avoid triggering onChange\n    let data = this.data;\n\n    data = [...data, num];\n\n    // we need to re-evaluate the number value\n    const numVal = Number(data.join(''));\n\n    if (numVal > this.max) {\n      data = [num];\n    } else if (this.length < data.length) {\n      data = data.slice(1, data.length);\n    }\n\n    this.data = data;\n\n    return num;\n  }\n\n  del() {\n    if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n      this.data = [];\n    } else {\n      this.data = this.data.slice(0, this.data.length - 1);\n    }\n  }\n\n  clear() {\n    this.data = [];\n  }\n\n  inc(gap) {\n    this.replaceValue(\n      this.#initialNumValue < this.max\n        ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n        : this.min\n    );\n  }\n\n  dec(gap) {\n    this.replaceValue(\n      this.#initialNumValue > this.min\n        ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n        : this.max\n    );\n  }\n\n  isInRange(val) {\n    return val >= this.min && val <= this.max;\n  }\n\n  replaceValue(val) {\n    if (this.isInRange(val)) {\n      this.data = val.toString().padStart(this.length, 0).split('');\n    }\n  }\n\n  setMin(val) {\n    this.min = Number(val);\n  }\n\n  setMax(val) {\n    this.max = Number(val);\n  }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n  isValidEpoch,\n  formatEpoch,\n  isNumber,\n  getCurrentTime,\n  overrideConstructedStylesheet,\n  dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n  counterConfig,\n  DEFAULT_FORMAT,\n  DIVIDER,\n  MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n  NATIVE_FORMAT,\n  valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\nimport { newDate } from './date-utils';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n  'format',\n  'opened',\n  'initial-value',\n  'readonly',\n  'disable-calendar',\n  'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n  epoch = '';\n\n  format = DEFAULT_FORMAT;\n\n  selectedCounterIdx = 0;\n\n  updateCountersDisplay() {\n    this.inputElement.value = this.countersValue;\n  }\n\n  updateValue() {\n    if (this.isCountersOutOfRange) {\n      this.resetEpoch();\n    } else {\n      const date = formats[this.format].getDate(this.inputElement.value);\n      this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n    }\n  }\n\n  onDateCounterChange = () => {\n    this.updateCountersDisplay();\n    this.updateValue();\n    // update validity\n    this.#dispatchInput();\n  };\n\n  updateEpoch(epoch) {\n    this.epoch = dateToEpoch(epoch, this.isUtcTime);\n  }\n\n  dateCounters = [\n    new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n    new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n    new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n  ];\n\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div>\n      <descope-text-field inputmode=\"numeric\">\n        <span slot=\"suffix\" class=\"toggle-calendar\">\n          ${calendarIcon}\n        </span>\n      </descope-text-field>\n      <vaadin-popover></vaadin-popover>\n    </div>\n    `;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-block;\n        box-sizing: border-box;\n        user-select: none;\n        max-width: 100%;\n      }\n\n      :host ::slotted {\n        padding: 0;\n      }\n\n      .toggle-calendar {\n        cursor: pointer;\n        display: flex;\n        align-self: center;\n        z-index: 1;\n        height: 100%;\n        align-items: center;\n      }\n\n      :host([readonly=\"true\"]) .toggle-calendar {\n        pointer-events: none;\n      }\n\n      .hidden {\n        display: none;\n      }\n        `,\n      this\n    );\n\n    this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n    this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n  }\n\n  get validationTarget() {\n    return this.inputElement;\n  }\n\n  get opened() {\n    return this.getAttribute('opened') === 'true';\n  }\n\n  // returns the input's value as a epoch\n  get displayValueEpoch() {\n    const date = formats[this.format].getDate(this.inputElement.value);\n\n    if (!isValidEpoch(date?.getTime())) {\n      return null;\n    }\n\n    return date.getTime();\n  }\n\n  get sortedCounters() {\n    return this.format\n      .split(DIVIDER)\n      .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n  }\n\n  get activeCounter() {\n    return this.sortedCounters[this.selectedCounterIdx];\n  }\n\n  get countersValue() {\n    return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n  }\n\n  get overlay() {\n    return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n  }\n\n  get backdrop() {\n    return this.overlay.shadowRoot?.querySelector('#backdrop');\n  }\n\n  get calendar() {\n    return this.overlay?.querySelector('descope-calendar');\n  }\n\n  get isRTL() {\n    const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n    if (computedStyleDirection) {\n      return computedStyleDirection === 'rtl';\n    }\n\n    // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n    return this.getAttribute('st-host-direction') === 'rtl';\n  }\n\n  get value() {\n    if (this.isInvalidDate()) {\n      return '';\n    }\n    return this.epoch;\n  }\n\n  set value(val) {\n    let value = parseInt(val, 10);\n    if (!Number.isNaN(value)) {\n      this.updateEpoch(value);\n      this.updateDateCounters(new Date(value));\n    } else {\n      this.resetEpoch();\n      this.resetDateCounters();\n      this.clearInputEle();\n    }\n  }\n\n  resetEpoch() {\n    this.epoch = '';\n  }\n\n  get isCountersEmpty() {\n    return this.dateCounters.every((dc) => dc.isEmpty);\n  }\n\n  get isCountersOutOfRange() {\n    return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n  }\n\n  get disableCalendar() {\n    return this.getAttribute('disable-calendar') === 'true';\n  }\n\n  get isUtcTime() {\n    return this.getAttribute('utc-time') === 'true';\n  }\n\n  get isSelectAll() {\n    const inputEle = this.inputElement.baseElement.inputElement;\n    return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n  }\n\n  reportValidity() {\n    this.inputElement.reportValidity();\n  }\n\n  #dispatchInput() {\n    this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n  }\n\n  updateInputDisplay() {\n    this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n  }\n\n  init() {\n    super.init?.();\n\n    this.updateFormatPattern();\n    this.initPopover();\n    this.onDateCounterChange();\n    this.initInputElement();\n\n    setTimeout(() => {\n      this.#overrideOverlaySettings();\n    }, 0);\n  }\n\n  initInputElement() {\n    this.inputElement.getValidity = this.getValidity.bind(this);\n    this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n    this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n    this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n    this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n    this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n    this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n    this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n    this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n    this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n    forwardAttrs(this, this.inputElement, {\n      includeAttrs: [\n        'label',\n        'label-type',\n        'placeholder',\n        'disabled',\n        'readonly',\n        'bordered',\n        'required',\n        'full-width',\n        'st-host-direction',\n        'pattern',\n        'bordered',\n        'data-errormessage-value-missing',\n        'data-errormessage-pattern-mismatch',\n        'data-errormessage-range-underflow',\n        'data-errormessage-range-overflow',\n        'st-error-message-icon',\n        'st-error-message-icon-size',\n        'st-error-message-icon-padding',\n      ],\n    });\n  }\n\n  handleInput(e) {\n    e.preventDefault();\n\n    this.handleSelectAll();\n\n    if (e.data && isNumber(e.data)) {\n      this.parseDigits(e.data);\n      this.updateCountersDisplay();\n    } else if (e.inputType) {\n      this.handleNavKeys(e);\n    }\n  }\n\n  initPopover() {\n    this.baseElement.trigger = ['click'];\n    this.baseElement.withBackdrop = true;\n    this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n    // block popover events from focusing/blurring the text-field\n    this.baseElement.addEventListener('click', (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n    });\n  }\n\n  handleSelectAll() {\n    if (this.isSelectAll) {\n      this.selectFirstCounter();\n    }\n  }\n\n  #popoverPosStylesheet;\n\n  #popoverRenderer(root) {\n    // popoverRenderer should run only once, when the popover is first rendering.\n    if (!root.firstChild) {\n      this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n      root.appendChild(this.#getPopoverContent());\n\n      // override vaadin's constructed stylesheet which hides the host element\n      overrideConstructedStylesheet(this.baseElement);\n\n      this.backdrop.addEventListener('click', this.closePopover.bind(this));\n    }\n\n    // Hide overlay before adjusting position to prevent flickering\n    root.style.setProperty('visibility', 'hidden');\n\n    // Wait until overlay is ready\n    setTimeout(() => {\n      this.#adjustPopoverPosition(root);\n\n      // Show adjusted overlay\n      root.style.setProperty('visibility', 'visible');\n      this.updateCalendarView(root);\n    }, 100);\n  }\n\n  #adjustPopoverPosition() {\n    const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n    // Remove previously added stylesheets\n    this.#popoverPosStylesheet?.remove();\n\n    const windowRect = document.body.getBoundingClientRect();\n    const inputRect = this.getBoundingClientRect();\n    const calendarRect = this.calendar.getBoundingClientRect();\n\n    const side = this.isRTL ? 'right' : 'left';\n    const offset = inputRect[side] - calendarRect[side];\n    const availableLeft = calendarRect.left;\n    const availableRight = windowRect.width - calendarRect.right;\n\n    let newOffset;\n    if (offset > 0) {\n      newOffset = Math.min(offset, availableRight);\n    } else {\n      newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n    }\n\n    injectStyle(\n      `\n      vaadin-popover-overlay::part(overlay) {\n        transform: translateX(${newOffset}px);\n      }\n    `,\n      popover\n    );\n  }\n\n  #getPopoverContent() {\n    const ele = document.createElement('span');\n\n    ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n    const calendar = ele.querySelector('descope-calendar');\n\n    calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n    calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n    return ele;\n  }\n\n  // the default vaadin behavior is to attach the overlay to the body when opened\n  // we do not want that because it's difficult to style the overlay in this way\n  // so we override it to open inside the shadow DOM\n  #overrideOverlaySettings() {\n    this.overlay._attachOverlay = () => this.overlay.bringToFront();\n    this.overlay._detachOverlay = () => {};\n    this.overlay._enterModalState = () => {};\n  }\n\n  onPopoverToggle() {\n    this.opened ? this.closePopover() : this.openPopover();\n  }\n\n  openPopover() {\n    if (this.disableCalendar) return;\n    this.setAttribute('opened', 'true');\n  }\n\n  closePopover() {\n    this.removeAttribute('opened');\n    this.inputElement.focus();\n  }\n\n  getCounterById(id) {\n    return this.dateCounters.find((dc) => dc.id === id);\n  }\n\n  onCalendarSubmit() {\n    if (!this.isReadOnly) {\n      if (!this.calendar.value) return;\n\n      const calendarDate = newDate(this.calendar.value);\n\n      this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n      this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n      this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n      this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n      this.#dispatchInput();\n    }\n\n    this.closePopover();\n  }\n\n  updateCalendarView() {\n    const validInputVal =\n      isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n      formats[this.format].validate(this.inputElement.value);\n\n    if (this.displayValueEpoch || validInputVal) {\n      this.calendar.setAttribute(\n        'initial-value',\n        formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n      );\n    } else {\n      this.calendar.clearValue();\n      this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n    }\n\n    forwardAttrs(this, this.calendar, {\n      includeAttrs: [\n        'st-host-direction',\n        'readonly',\n        'initial-month',\n        'initial-year',\n        'years-range',\n        'calendar-label-submit',\n        'calendar-label-cancel',\n        'calendar-months',\n        'calendar-weekdays',\n        'calendar-weekdays-short',\n      ],\n    });\n  }\n\n  // In mobile devices, there are cases were `pointerdown` is triggered\n  // instead of `click`.\n  onPointerDown(e) {\n    setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n  }\n\n  onFocus() {\n    if (this.isReadOnly) {\n      return;\n    }\n\n    // We need to wait for focus to end before we set selection\n    setTimeout(() => this.resetDisplay());\n  }\n\n  resetDisplay() {\n    if (!this.inputElement.value) {\n      this.inputElement.value = this.format;\n    }\n\n    // On focus select the first counter\n    this.selectFirstCounter();\n    // set selection on first counter\n    this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n  }\n\n  onBlur() {\n    if (this.opened) {\n      return;\n    }\n\n    if (this.inputElement.value === this.format) {\n      this.clearInputEle();\n    }\n  }\n\n  clearInputEle() {\n    this.inputElement.value = '';\n  }\n\n  onFormatUpdate(format) {\n    if (Object.keys(formats).includes(format)) {\n      this.format = format;\n      this.updateFormatPattern();\n    }\n  }\n\n  updateFormatPattern() {\n    const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n    this.setAttribute('type', 'date');\n    this.setAttribute('pattern', formats[format].pattern);\n  }\n\n  parseDigits(value) {\n    this.activeCounter.add(value);\n\n    if (this.activeCounter.isFull) {\n      this.selectNextCounter();\n    }\n\n    // We wait for the digit to be parsed, and only then set the selection.\n    // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n    this.setInputSelectionRange();\n  }\n\n  getCounterIdx(caretPos) {\n    const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n    const c1 = caretPos <= counter1ln;\n    const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n    const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n    return [c1, c2, c3].indexOf(true);\n  }\n\n  setSelectedCounterByCaretPosition(e) {\n    this.selectedCounterIdx = this.getCounterIdx(\n      // if triggered by touch event, target might not include `selectionStart`\n      // in that case we fall back to the inputElement's `selectionStart` value.\n      // Therefore, it is recommended to run this function with setTimeout,\n      // at least for mobile events.\n      e.target?.selectionStart || this.inputElement.selectionStart\n    );\n  }\n\n  selectFirstCounter() {\n    this.selectedCounterIdx = 0;\n  }\n\n  selectNextCounter() {\n    if (this.selectedCounterIdx < this.dateCounters.length) {\n      this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n    }\n  }\n\n  selectPrevCounter() {\n    if (this.selectedCounterIdx > 0) {\n      this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n    }\n  }\n\n  // Sets the text selection range in the input element based on the selected counter.\n  // The function calculates the starting position of the selection by summing the lengths\n  // of all counters before the currently selected counter (`selectedCounterIdx`).\n  // It then selects the entire length of the current counter in the input element.\n  setInputSelectionRange() {\n    // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n    if (this.selectedCounterIdx < 0) {\n      return;\n    }\n\n    // We wait for before setting the selection, otherwise there's an\n    // unexpected \"jump\" of the screen in mobile devices.\n    setTimeout(() => {\n      const caretStart = this.sortedCounters\n        .slice(0, this.selectedCounterIdx)\n        .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n      this.inputElement.setSelectionRange(\n        caretStart,\n        caretStart + this.sortedCounters[this.selectedCounterIdx].length\n      );\n    });\n  }\n\n  resetDateCounters() {\n    this.dateCounters.forEach((dc) => dc.clear());\n  }\n\n  // in case value is set from external source we need to update date counters\n  updateDateCounters(date) {\n    this.dateCounters.forEach((dc) => {\n      switch (dc.id) {\n        case counterConfig.MONTH.id:\n          dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n          break;\n        case counterConfig.YEAR.id:\n          dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n          break;\n        case counterConfig.DAY.id:\n          dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n          break;\n        default:\n          break;\n      }\n    });\n  }\n\n  handleKeyboard(e) {\n    if (e.metaKey || e.ctrlKey) {\n      if (e.key.toLowerCase() === 'x') {\n        this.onCut(e);\n      }\n\n      return;\n    }\n\n    this.handleSelectAll();\n\n    if (e.key === 'ArrowUp') {\n      this.activeCounter.inc();\n    } else if (e.key === 'ArrowDown') {\n      this.activeCounter.dec();\n    } else if (e.key === 'ArrowRight') {\n      this.selectNextCounter();\n    } else if (e.key === 'ArrowLeft') {\n      this.selectPrevCounter();\n    }\n\n    this.setInputSelectionRange();\n  }\n\n  handleNavKeys(e) {\n    if (this.isReadOnly) {\n      return;\n    }\n\n    if (this.opened) {\n      this.closePopover();\n    }\n\n    if (!this.activeCounter) return;\n\n    if (e.inputType === 'deleteContentBackward') {\n      this.handleBackspace();\n    }\n\n    this.setInputSelectionRange();\n  }\n\n  handleBackspace() {\n    if (this.isSelectAll) {\n      this.resetToInitialState();\n      return;\n    }\n\n    const counter = this.activeCounter;\n\n    if (counter.isEmpty) {\n      this.selectPrevCounter();\n      this.setInputSelectionRange();\n    } else {\n      counter.set('');\n    }\n\n    // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n    // otherwise we get an unexpected behavior, where the format is deleted.\n    setTimeout(() => {\n      this.updateCountersDisplay();\n      this.setInputSelectionRange();\n    });\n  }\n\n  handleMouseCaretPositionChange(e) {\n    if (this.opened) {\n      return;\n    }\n\n    e.preventDefault();\n\n    this.setSelectedCounterByCaretPosition(e);\n    this.setInputSelectionRange();\n  }\n\n  onInitialValueChange(val) {\n    // if component already has a value don't re-set value\n    if (this.value) return;\n\n    // we need to wait for the text-field to init\n    setTimeout(() => {\n      if (Number.isNaN(parseInt(val, 10))) {\n        return;\n      }\n      this.value = Number(val);\n    });\n  }\n\n  togglePopoverAccess(visibility) {\n    if (visibility) {\n      this.popoverToggleButton.classList.remove('hidden');\n    } else {\n      this.popoverToggleButton.classList.add('hidden');\n    }\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (attrName === 'disable-calendar') {\n        this.togglePopoverAccess(newValue !== 'true');\n      }\n      if (dateFieldAttrs.includes(attrName)) {\n        if (newValue && attrName === 'format') {\n          this.onFormatUpdate(newValue);\n        }\n        if (attrName === 'initial-value') {\n          this.onInitialValueChange(newValue);\n        }\n      } else if (calendarAttrs.includes(attrName)) {\n        if (newValue) {\n          this.calendar?.setAttribute(attrName, newValue);\n        } else {\n          this.calendar?.removeAttribute(attrName);\n        }\n      }\n    }\n  }\n\n  // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n  // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n  // To prevent this error from being submitted, we evaluate the\n  // date parts against their generated Date value.\n  isInvalidDate() {\n    const yearCounter = this.getCounterById('year');\n    const isYearOutOfRange =\n      yearCounter.numberValue > valRange['year'].max ||\n      yearCounter.numberValue < valRange['year'].min;\n\n    const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n      const counter = this.getCounterById(key);\n      return !val || counter.numberValue !== val;\n    });\n\n    return isYearOutOfRange || isDateDisplayMismatch;\n  }\n\n  getValidity() {\n    if (this.isRequired && this.isCountersEmpty) {\n      return { valueMissing: true };\n    }\n\n    if (this.isCountersOutOfRange || this.isInvalidDate()) {\n      return { patternMismatch: true };\n    }\n\n    return {};\n  }\n\n  getDateVals() {\n    const ret = {\n      day: '',\n      month: '',\n      year: '',\n    };\n\n    if (Number.isNaN(this.epoch)) {\n      return ret;\n    }\n\n    try {\n      const date = new Date(this.epoch);\n\n      if (this.isUtcTime) {\n        ret.month = date.getUTCMonth() + 1;\n        ret.day = date.getUTCDate();\n        ret.year = date.getUTCFullYear();\n      } else {\n        ret.month = date.getMonth() + 1;\n        ret.day = date.getDate();\n        ret.year = date.getFullYear();\n      }\n    } catch (e) {}\n\n    return ret;\n  }\n\n  resetToInitialState() {\n    this.resetDateCounters();\n    this.selectFirstCounter();\n    this.resetDisplay();\n  }\n\n  onCut(e) {\n    e.preventDefault();\n\n    if (this.isSelectAll) {\n      this.#copyToClipboard(this.countersValue);\n      this.resetToInitialState();\n    } else {\n      this.#copyToClipboard(this.activeCounter.stringValue);\n      this.activeCounter.set('');\n    }\n\n    this.setInputSelectionRange();\n  }\n\n  #copyToClipboard(value) {\n    try {\n      navigator.clipboard.writeText(value);\n    } catch (err) {\n      console.error('Failed to copy date value:', err);\n    }\n  }\n\n  onPaste(e) {\n    e.preventDefault();\n\n    const clipboardData = e.clipboardData || window.clipboardData;\n    const pastedData = clipboardData.getData('Text');\n\n    // try paste entire date if valid\n    const validDate = parseDateString(pastedData, this.format);\n\n    if (validDate) {\n      this.value = dateToEpoch(validDate, this.isUtcTime);\n      this.onDateCounterChange();\n\n      // select all\n      setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n    } else {\n      const value = Number(pastedData);\n\n      // try paste in counter if possible\n      if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n        // use String to get rid of any zero padding\n        this.activeCounter.set(String(value));\n\n        setTimeout(() => this.setInputSelectionRange());\n      }\n    }\n  }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n  host: { selector: () => ':host' },\n  input: { selector: () => 'descope-text-field' },\n  inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n  toggleButton: { selector: () => '.toggle-calendar' },\n  overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n  backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      textAlign: { ...input, property: 'text-align' },\n      rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n      rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n      overlayGap: {\n        property: () => DateFieldClass.cssVarList.overlayGap,\n      },\n      overlayBackgroundColor: {\n        property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n      },\n      overlayPadding: {\n        property: () => DateFieldClass.cssVarList.overlayPadding,\n      },\n      overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n      overlayOutlineWidth: {\n        property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n      },\n      overlayOutlineColor: {\n        property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n      },\n      overlayOutlineStyle: {\n        property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n      },\n      errorMessageIcon: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageIcon,\n      },\n      errorMessageIconSize: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageIconSize,\n      },\n      errorMessageIconPadding: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageIconPadding,\n      },\n      errorMessageIconRepeat: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n      },\n      errorMessageIconPosition: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageIconPosition,\n      },\n      errorMessageFontSize: {\n        selector: TextFieldClass.componentName,\n        property: TextFieldClass.cssVarList.errorMessageFontSize,\n      },\n    },\n  }),\n  portalMixin({\n    name: 'overlay',\n    selector: '',\n    mappings: {\n      marginTop: { ...overlay, property: 'margin-top' },\n      backgroundColor: { ...overlay },\n      backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n      backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n      padding: { ...overlay },\n      boxShadow: { ...overlay },\n      outlineWidth: { ...overlay },\n      outlineColor: { ...overlay },\n      outlineStyle: { ...overlay },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawDateFieldClass);\n","import { DateFieldClass } from '../../components/descope-date-field/DateFieldClass';\nimport { refs } from './inputWrapper';\nimport globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst shadowColor = '#00000020';\nconst { shadow } = globalRefs;\n\nconst vars = DateFieldClass.cssVarList;\n\nconst dateField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.iconMargin]: '0.375em',\n\n  [vars.overlay.marginTop]: `calc(${refs.outlineWidth} + 1px)`,\n  [vars.overlay.backgroundColor]: refs.backgroundColor,\n  [vars.overlay.backdropBackgroundColor]: 'transparent',\n  [vars.overlay.backdropPointerEvents]: 'all',\n  [vars.overlay.boxShadow]: `${shadow.wide.xl} ${shadowColor}, ${shadow.narrow.xl} ${shadowColor}`,\n  [vars.overlay.outlineWidth]: '0',\n  [vars.overlay.outlineColor]: 'transparent',\n  [vars.overlay.outlineStyle]: 'none',\n  [vars.overlay.padding]: '0',\n\n  [vars.rtlInputDirection]: 'ltr',\n  [vars.rtlInputAlignment]: 'right',\n\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default dateField;\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  activeableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list-item');\n\nconst customMixin = (superclass) =>\n  class ListItemMixinClass extends superclass {\n    constructor() {\n      super();\n\n      this.attachShadow({ mode: 'open' }).innerHTML = `\n      <slot></slot>\n    `;\n\n      injectStyle(\n        `\n      slot {\n          width: 100%;\n          display: flex;\n          overflow: hidden;\n          box-sizing: border-box;\n      }\n      :host {\n        display: block;\n      }\n        `,\n        this,\n      );\n    }\n  };\n\nexport const ListItemClass = compose(\n  createStyleMixin({\n    mappings: {\n      verticalPadding: [\n        { property: 'padding-top' },\n        { property: 'padding-bottom' },\n      ],\n      horizontalPadding: [\n        { property: 'padding-left' },\n        { property: 'padding-right' },\n      ],\n      backgroundColor: {},\n      borderColor: {},\n      borderStyle: {},\n      borderWidth: {},\n      borderRadius: {},\n      outline: {},\n      cursor: {},\n      gap: {},\n      maxWidth: { selector: () => ':host' },\n      alignItems: {},\n      flexDirection: {},\n      transition: {},\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n  customMixin,\n  activeableMixin,\n)(createBaseClass({ componentName, baseSelector: 'slot' }));\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list');\n\nclass RawList extends createBaseClass({\n  componentName,\n  baseSelector: '.wrapper',\n}) {\n  static get observedAttributes() {\n    return ['variant', 'readonly'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"wrapper\">\n    <slot></slot>\n    <slot name=\"empty-state\">\n      No item...\n    </slot>\n    </div>\n\t`;\n\n    injectStyle(\n      `\n    .wrapper {\n        overflow: auto;\n        display: grid;\n        max-height: 100%;\n        width: 100%;\n      }\n\n      :host {\n        display: inline-flex;\n        width: 100%;\n      }\n      slot[name=\"empty-state\"] {\n        justify-content: center;\n        align-items: center;\n        display: flex;\n        flex-grow: 1;\n      }\n\n      :host slot[name=\"empty-state\"] {\n        display: none;\n      }\n      :host([empty]) slot[name=\"empty-state\"] {\n        display: flex;\n      }\n      ::slotted(:not([slot])) {\n        width: 100%;\n      }\n        `,\n      this,\n    );\n  }\n\n  get items() {\n    return this.shadowRoot.querySelector('slot').assignedElements();\n  }\n\n  #handleEmptyState() {\n    if (this.items.length === 0) {\n      this.setAttribute('empty', 'true');\n    } else {\n      this.removeAttribute('empty');\n    }\n  }\n\n  get variant() {\n    return this.getAttribute('variant') || 'list';\n  }\n\n  #handleItemsVariant() {\n    this.items.forEach((item) => {\n      let listItem = item;\n      if (listItem.localName !== ListItemClass.componentName) {\n        listItem = item.querySelector(ListItemClass.componentName);\n      }\n\n      const listItemVariant = this.variant === 'tiles' ? 'tile' : 'row';\n      listItem?.setAttribute('variant', listItemVariant);\n    });\n  }\n\n  init() {\n    super.init?.();\n\n    // we want new items to get the size\n    observeChildren(this, () => {\n      this.#handleEmptyState();\n      this.#handleItemsVariant();\n      this.#handleReadOnly();\n    });\n  }\n\n  get isReadOnly() {\n    return this.getAttribute('readonly') === 'true';\n  }\n\n  #handleReadOnly() {\n    this.items.forEach((item) => {\n      if (this.isReadOnly) item.setAttribute('inert', '');\n      else item.removeAttribute('inert');\n    });\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    super.attributeChangedCallback?.(name, oldValue, newValue);\n\n    if (newValue === oldValue) return;\n\n    if (name === 'variant') {\n      this.#handleItemsVariant();\n    } else if (name === 'readonly') {\n      this.#handleReadOnly();\n    }\n  }\n}\n\nexport const ListClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      maxHeight: { selector: () => ':host' },\n      minHeight: {},\n      verticalPadding: [\n        { property: 'padding-top' },\n        { property: 'padding-bottom' },\n      ],\n      horizontalPadding: [\n        { property: 'padding-left' },\n        { property: 'padding-right' },\n      ],\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      fontFamily: {},\n      gap: {},\n\n      backgroundColor: {},\n      borderRadius: {},\n      borderColor: {},\n      borderStyle: {},\n      borderWidth: {},\n\n      boxShadow: {},\n      gridTemplateColumns: {},\n      maxItemsWidth: {\n        selector: () => '::slotted(:not([slot]))',\n        property: 'max-width',\n      },\n      minItemsWidth: {\n        selector: () => '::slotted(:not([slot]))',\n        property: 'min-width',\n      },\n      itemsHorizontalAlign: {\n        selector: () => '::slotted(*)',\n        property: 'justify-self',\n      },\n      emptyStateTextColor: {\n        selector: () => 'slot[name=\"empty-state\"]',\n        property: 'color',\n      },\n      emptyStateTextFontFamily: {\n        selector: () => 'slot[name=\"empty-state\"]',\n        property: 'font-family',\n      },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawList);\n","import { compose } from '@descope-ui/common/utils';\nimport { getComponentName, limitAbbreviation } from '@descope-ui/common/components-helpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n  createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('apps-list');\n\nconst itemRenderer = ({ name, icon, url }, _, ref) => `\n  <a ${url ? `href=\"${url}\" title=\"${url}\"` : ''} target=\"_blank\">\n    <descope-list-item>\n    <div class=\"avatar-wrapper\">\n      <descope-avatar\n        ${icon ? `img=\"${icon}\"` : ''}\n        ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n        size=\"${ref.logoSize || ref.size}\"\n      ></descope-avatar>\n    </div>\n    <descope-text\n      variant=\"${ref.itemTextVariant}\"\n      mode=\"primary\"\n    >${name}</descope-text>\n    </descope-list-item>\n  </a>\n`;\n\nconst customMixin = (superclass) =>\n  class AppsListMixinClass extends superclass {\n    // size controls both item logo size and font size\n    get size() {\n      return this.getAttribute('size') || 'sm';\n    }\n\n    get itemTextVariant() {\n      return this.getAttribute('item-text-variant') || 'body1';\n    }\n\n    get logoSize() {\n      return this.getAttribute('logo-size');\n    }\n  };\n\nexport const AppsListClass = compose(\n  createStyleMixin({\n    mappings: {\n      maxHeight: { selector: () => ':host' },\n      minHeight: { selector: () => ':host' },\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      itemsFontWeight: {\n        selector: TextClass.componentName,\n        property: TextClass.cssVarList.fontWeightOverride,\n      },\n      itemsFontSize: {\n        selector: TextClass.componentName,\n        property: TextClass.cssVarList.fontSizeOverride,\n      },\n      itemsTextAlign: {\n        selector: TextClass.componentName,\n        property: TextClass.cssVarList.textAlign,\n      },\n      itemBackgroundColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.backgroundColor,\n      },\n      backgroundColor: {\n        selector: ListClass.componentName,\n        property: ListClass.cssVarList.backgroundColorOverride,\n      },\n      itemBorderStyle: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderStyleOverride,\n      },\n      itemBorderColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderColorOverride,\n      },\n      itemBorderWidth: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderWidthOverride,\n      },\n      itemVerticalPadding: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.verticalPaddingOverride,\n      },\n      itemHorizontalPadding: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.horizontalPaddingOverride,\n      },\n      itemAlignment: [\n        { selector: () => '.avatar-wrapper', property: 'text-align' },\n        { selector: TextClass.componentName, property: TextClass.cssVarList.textAlign },\n      ]\n    },\n  }),\n  createDynamicDataMixin({ itemRenderer, rerenderAttrsList: ['size', 'item-text-variant', 'logo-size'] }),\n  draggableMixin,\n  componentNameValidationMixin,\n  customMixin\n)(\n  createProxy({\n    slots: ['empty-state'],\n    wrappedEleName: 'descope-list',\n    excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],\n    componentName,\n    style: () => `\n      :host {\n        width: 100%;\n        display: inline-flex;\n      }\n\n      descope-text::part(text-wrapper) {\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n      }\n\n      descope-list-item[variant=\"tile\"] .avatar-wrapper {\n        width: 100%;\n      }\n\n      .avatar-wrapper {\n        line-height: 0;\n      }\n\n      a {\n        text-decoration: none;\n      }\n\n      descope-text {\n        ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});\n        max-width: 100%;\n        width: 100%;\n      }\n    `,\n  })\n);\n","import { AppsListClass } from './component/AppsListClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = AppsListClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nconst defaultHeight = '400px';\n\nconst appsList = {\n  [vars.itemsTextAlign]: 'start',\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.maxHeight]: defaultHeight,\n\n  _empty: {\n    [vars.minHeight]: defaultHeight,\n  },\n\n  size: {\n    xs: {\n      [vars.itemsFontSize]: '14px',\n      [vars.itemsFontWeight]: 'normal',\n    },\n    sm: {\n      [vars.itemsFontSize]: '14px',\n      [vars.itemsFontWeight]: 'normal',\n    },\n    md: {\n      [vars.itemsFontSize]: '16px',\n      [vars.itemsFontWeight]: 'normal',\n    },\n    lg: {\n      [vars.itemsFontSize]: '20px',\n      [vars.itemsFontWeight]: 'normal',\n    },\n  },\n\n  itemPadding: {\n    xs: {\n      [vars.itemVerticalPadding]: globalRefs.spacing.xs,\n      [vars.itemHorizontalPadding]: globalRefs.spacing.xs,\n    },\n    sm: {\n      [vars.itemVerticalPadding]: globalRefs.spacing.sm,\n      [vars.itemHorizontalPadding]: globalRefs.spacing.sm,\n    },\n    md: {\n      [vars.itemVerticalPadding]: globalRefs.spacing.md,\n      [vars.itemHorizontalPadding]: globalRefs.spacing.md,\n    },\n    lg: {\n      [vars.itemVerticalPadding]: globalRefs.spacing.lg,\n      [vars.itemHorizontalPadding]: globalRefs.spacing.lg,\n    },\n    xl: {\n      [vars.itemVerticalPadding]: globalRefs.spacing.xl,\n      [vars.itemHorizontalPadding]: globalRefs.spacing.xl,\n    },\n  },\n};\n\nexport default appsList;\n","import globals from '@descope-ui/theme-globals';\nimport {\n  getThemeRefs,\n  createHelperVars,\n  useVar,\n} from '@descope-ui/common/theme-helpers';\nimport { ListClass, componentName } from './component/ListClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ListClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n  { shadowColor: '#00000020' },\n  componentName\n);\n\nconst { shadowColor } = helperRefs;\n\nconst list = {\n  ...helperTheme,\n\n  [compVars.hostWidth]: '100%',\n  [compVars.backgroundColor]: globalRefs.colors.surface.main,\n  [compVars.fontFamily]: globalRefs.fonts.font1.family,\n  [compVars.borderColor]: globalRefs.colors.surface.light,\n  [compVars.borderStyle]: 'solid',\n  [compVars.borderWidth]: globalRefs.border.xs,\n  [compVars.borderRadius]: globalRefs.radius.sm,\n  [compVars.gap]: globalRefs.spacing.md,\n  [compVars.verticalPadding]: globalRefs.spacing.lg,\n  [compVars.horizontalPadding]: globalRefs.spacing.lg,\n  [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n  [compVars.maxHeight]: '100%',\n  [compVars.hostDirection]: globalRefs.direction,\n  [compVars.minItemsWidth]: '150px',\n\n  _empty: {\n    [compVars.minHeight]: '150px',\n    [compVars.emptyStateTextColor]: globalRefs.colors.surface.dark,\n    [compVars.emptyStateTextFontFamily]: globalRefs.fonts.font1.family,\n  },\n\n  variant: {\n    tiles: {\n      [compVars.gridTemplateColumns]: `repeat(auto-fit, minmax(min(${useVar(\n        compVars.minItemsWidth\n      )}, 100%), 1fr))`,\n      [compVars.maxItemsWidth]: '200px',\n      [compVars.itemsHorizontalAlign]: 'center',\n    },\n  },\n};\n\nexport default list;\n\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { ListItemClass } from './component/ListItemClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const vars = ListItemClass.cssVarList;\n\nconst listItem = {\n  [vars.backgroundColor]: globalRefs.colors.surface.main,\n  [vars.verticalPadding]: globalRefs.spacing.lg,\n  [vars.horizontalPadding]: globalRefs.spacing.lg,\n  [vars.gap]: globalRefs.spacing.md,\n  [vars.borderStyle]: 'solid',\n  [vars.borderWidth]: globalRefs.border.xs,\n  [vars.borderColor]: globalRefs.colors.surface.main,\n  [vars.borderRadius]: globalRefs.radius.sm,\n  [vars.cursor]: 'pointer',\n  [vars.alignItems]: 'center',\n  [vars.flexDirection]: 'row',\n  [vars.transition]: 'border-color 0.2s, background-color 0.2s',\n\n  variant: {\n    tile: {\n      [vars.alignItems]: 'flex-start',\n      [vars.flexDirection]: 'column',\n      [vars.borderColor]: globalRefs.colors.surface.light,\n    },\n  },\n\n  _hover: {\n    [vars.backgroundColor]: globalRefs.colors.surface.highlight,\n  },\n\n  _active: {\n    [vars.backgroundColor]: globalRefs.colors.surface.main,\n    [vars.borderColor]: globalRefs.colors.primary.light,\n    [vars.outline]: `1px solid ${globalRefs.colors.primary.light}`,\n  },\n};\n\nexport default listItem;\n","import { observeAttributes } from '../helpers/componentHelpers';\n\nconst defaultValidateSchema = () => true;\nconst defaultItemRenderer = (item) => `<pre>${JSON.stringify(item, null, 4)}</pre>`;\n\nconst createTemplate = (templateString) => {\n  const template = document.createElement('template');\n  template.innerHTML = templateString;\n\n  return template;\n};\n\nconst getTemplateContent = (templateOrString) => {\n  if (typeof templateOrString === 'string') {\n    return createTemplate(templateOrString).content;\n  }\n\n  if (templateOrString instanceof HTMLTemplateElement) {\n    return templateOrString.content;\n  }\n\n  // eslint-disable-next-line no-console\n  console.error('Invalid template', templateOrString);\n  return null;\n};\n\nexport const createDynamicDataMixin =\n  ({\n    itemRenderer = defaultItemRenderer,\n    validateSchema = defaultValidateSchema,\n    slotName,\n    rerenderAttrsList = [],\n  }) =>\n  (superclass) =>\n    class DynamicDataMixinClass extends superclass {\n      #data = [];\n\n      // eslint-disable-next-line class-methods-use-this\n      #validateSchema(data) {\n        if (!validateSchema) return true;\n\n        const validation = validateSchema(data);\n        if (validation === true) return true;\n\n        // eslint-disable-next-line no-console\n        console.error('Data schema validation failed', validation || '');\n\n        return false;\n      }\n\n      #removeOldItems() {\n        const selector = slotName ? `*[slot=\"${slotName}\"]` : ':not([slot])';\n        this.baseElement.querySelectorAll(selector).forEach((item) => item.remove());\n      }\n\n      #renderItems() {\n        this.#removeOldItems();\n        this.data.forEach((item, index) => {\n          const content = getTemplateContent(itemRenderer(item, index, this));\n          this.baseElement.appendChild(content?.cloneNode(true));\n        });\n      }\n\n      set data(value) {\n        if (this.#validateSchema(value)) {\n          this.#data = value;\n          this.#renderItems();\n        }\n      }\n\n      get data() {\n        return this.#data;\n      }\n\n      init() {\n        super.init?.();\n\n        observeAttributes(\n          this,\n          (attrs) => {\n            if (attrs.includes('data')) this.#handleDataAttr();\n            else this.#renderItems();\n          },\n          { includeAttrs: [...rerenderAttrsList, 'data'] }\n        );\n      }\n\n      #handleDataAttr() {\n        const dataAttr = this.getAttribute('data');\n\n        if (!dataAttr) return;\n\n        try {\n          this.data = JSON.parse(dataAttr);\n        } catch (e) {\n          // eslint-disable-next-line no-console\n          console.warn('Invalid JSON data', dataAttr);\n        }\n      }\n    };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { createDynamicDataMixin } from '../../mixins/createDynamicDataMixin';\nimport { CheckboxClass } from '../boolean-fields/descope-checkbox/CheckboxClass';\nimport { SwitchToggleClass } from '../boolean-fields/descope-switch-toggle/SwitchToggleClass';\n\nexport const componentName = getComponentName('scopes-list');\nconst variants = ['checkbox', 'switch'];\n\nconst itemRenderer = ({ id, desc, required = false }, _, ref) => {\n  const ComponentClass = ref.variant === 'checkbox' ? CheckboxClass : SwitchToggleClass;\n\n  return `\n    <${ComponentClass.componentName}\n      bordered=\"true\"\n      size=${ref.size}\n      label=\"${desc}\"\n      data-id=\"${id}\"\n      readonly=\"${required || ref.isReadOnly}\"\n      required=\"${required}\"\n      checked=\"true\"\n    ></${ComponentClass.componentName}>\n`;\n};\n\nclass RawScopesList extends createBaseClass({ componentName, baseSelector: 'div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div></div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n\n      div {\n        display: flex;\n        flex-direction: column;\n      }\n        `,\n      this\n    );\n  }\n\n  get isReadOnly() {\n    return this.getAttribute('readonly') === 'true';\n  }\n\n  get size() {\n    return this.getAttribute('size') || 'sm';\n  }\n\n  #getChildNodes() {\n    return Array.from(this.shadowRoot.querySelector('div').children);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  reportValidity() {\n    this.checkValidity();\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  checkValidity() {\n    return this.data.every((item) => !item.required || this.value.includes(item.id));\n  }\n\n  get value() {\n    return this.#getChildNodes()\n      .filter((node) => node.checked)\n      .map((node) => node.getAttribute('data-id'));\n  }\n\n  set value(val = []) {\n    this.#getChildNodes().forEach((node) => {\n      // eslint-disable-next-line no-param-reassign\n      node.checked = val.includes(node.getAttribute('data-id'));\n    });\n  }\n\n  get variant() {\n    const variant = this.getAttribute('variant');\n\n    return variants.includes(variant) ? variant : variants[0];\n  }\n}\n\nexport const ScopesListClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostDirection: [\n        { selector: () => ':host', property: 'direction' },\n        {\n          selector: () => CheckboxClass.componentName,\n          property: CheckboxClass.cssVarList.hostDirection,\n        },\n        {\n          selector: () => SwitchToggleClass.componentName,\n          property: SwitchToggleClass.cssVarList.hostDirection,\n        },\n      ],\n      gap: { selector: () => 'div', property: 'gap' },\n      requiredInputBorderColor: [\n        {\n          selector: `${CheckboxClass.componentName}[required=\"true\"]`,\n          property: CheckboxClass.cssVarList.inputBorderColor,\n        },\n        {\n          selector: `${SwitchToggleClass.componentName}[required=\"true\"]`,\n          property: SwitchToggleClass.cssVarList.inputBorderColor,\n        },\n      ],\n      requiredInputValueTextColor: [\n        {\n          selector: `${CheckboxClass.componentName}[required=\"true\"]`,\n          property: CheckboxClass.cssVarList.inputValueTextColor,\n        },\n        {\n          selector: `${SwitchToggleClass.componentName}[required=\"true\"]`,\n          property: SwitchToggleClass.cssVarList.knobColor,\n        },\n      ],\n    },\n  }),\n  createDynamicDataMixin({ itemRenderer, rerenderAttrsList: ['size', 'variant'] }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawScopesList);\n","import { ScopesListClass } from '../../components/descope-scopes-list/ScopesListClass';\nimport theme, { vars as inputVars } from './inputWrapper';\n\nexport const vars = ScopesListClass.cssVarList;\n\nconst scopesList = {\n  [vars.requiredInputBorderColor]: theme._disabled[inputVars.borderColor],\n  [vars.requiredInputValueTextColor]: theme._disabled[inputVars.valueTextColor],\n  [vars.hostWidth]: '280px',\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default scopesList;\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPgo8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K\"","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { LogoClass } from '../descope-logo/LogoClass';\nimport arrowsImg from './arrows.svg';\n\nexport const componentName = getComponentName('third-party-app-logo');\nclass RawThirdPartyAppLogoClass extends createBaseClass({\n  componentName,\n  baseSelector: '.wrapper',\n}) {\n  constructor() {\n    super();\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div class=\"wrapper\">\n        <div class=\"third-party-app-logo-wrapper\">\n          <div class=\"third-party-app-logo\"></div>\n        </div>\n        <div class=\"arrows\">\n          <descope-icon src=\"${arrowsImg}\"></descope-icon>\n        </div>\n        <div class=\"company-logo-wrapper\">\n            <descope-logo st-height=\"100%\"></descope-logo>\n        </div>\n      </div>\n\t\t\t`;\n\n    injectStyle(\n      `\n        :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n        .wrapper {\n          display: flex;\n          justify-content: center;\n          align-items: center;\n          min-width: max-content;\n        }\n\n\t\t\t\t.third-party-app-logo {\n          flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n        .company-logo-wrapper, .third-party-app-logo-wrapper {\n          flex-shrink: 0;\n          display: inline-flex;\n        }\n\n        .company-logo-wrapper {\n          justify-content: flex-end;\n        }\n\n        .third-party-app-logo-wrapper {\n          justify-content: flex-start;\n        }\n\n        .arrows {\n          flex-shrink: 0;\n          display: flex;\n        }\n          `,\n      this\n    );\n  }\n}\n\nconst companyLogoWrapper = '>.company-logo-wrapper';\nconst thirdPartyAppLogoWrapper = '>.third-party-app-logo-wrapper';\n\nexport const ThirdPartyAppLogoClass = compose(\n  createStyleMixin({\n    mappings: {\n      logoMaxHeight: [\n        { selector: companyLogoWrapper, property: 'height' },\n        { selector: thirdPartyAppLogoWrapper, property: 'height' },\n      ],\n      logoMaxWidth: [\n        { selector: companyLogoWrapper, property: 'max-width' },\n        { selector: thirdPartyAppLogoWrapper, property: 'max-width' },\n      ],\n      thirdPartyAppLogo: {\n        selector: () => '.third-party-app-logo',\n        property: 'content',\n        fallback: {},\n      },\n      companyLogoFallback: {\n        selector: LogoClass.componentName,\n        property: LogoClass.cssVarList.fallbackUrl,\n      },\n      gap: {},\n      arrowsColor: { selector: IconClass.componentName, property: IconClass.cssVarList.fill },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawThirdPartyAppLogoClass);\n","import { ThirdPartyAppLogoClass } from '../../components/descope-third-party-app-logo/ThirdPartyAppLogoClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport globals from '../globals';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = ThirdPartyAppLogoClass.cssVarList;\n\nconst thirdPartyAppLogo = {\n  [vars.gap]: globalRefs.spacing.lg,\n  [vars.arrowsColor]: globalRefs.colors.surface.dark,\n  [vars.thirdPartyAppLogoFallback]:\n    'url(https://imgs.descope.com/components/third-party-app-logo-placeholder.svg)',\n  [vars.companyLogoFallback]:\n    'url(https://imgs.descope.com/components/project-logo-placeholder.svg)',\n  size: {\n    xs: {\n      [vars.logoMaxHeight]: '30px',\n      [vars.logoMaxWidth]: '120px',\n    },\n    sm: {\n      [vars.logoMaxHeight]: '40px',\n      [vars.logoMaxWidth]: '160px',\n    },\n    md: {\n      [vars.logoMaxHeight]: '48px',\n      [vars.logoMaxWidth]: '200px',\n    },\n    lg: {\n      [vars.logoMaxHeight]: '60px',\n      [vars.logoMaxWidth]: '240px',\n    },\n  },\n};\n\nexport default thirdPartyAppLogo;\nexport { vars };\n","import { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('security-questions-setup');\n\nconst attrsToSync = [\n  'full-width',\n  'readonly',\n  'size',\n  'label-type',\n  'question-label',\n  'question-placeholder',\n  'question-data-errormessage-value-missing',\n  'answer-label',\n  'answer-placeholder',\n  'answer-data-errormessage-value-missing',\n  'st-error-message-icon',\n  'st-error-message-icon-size',\n  'st-error-message-icon-padding',\n];\n\nconst attrsToReRender = ['count', 'questions'];\nclass RawSecurityQuestionsSetup extends createBaseClass({ componentName, baseSelector: 'div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div></div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n\n      div {\n        display: flex;\n        flex-direction: column;\n      }\n    `,\n      this\n    );\n  }\n\n  get count() {\n    return Number(this.getAttribute('count')) || 0;\n  }\n\n  #renderQuestions() {\n    const res = Array.from({ length: this.count }).map(\n      (_, index) =>\n        // <!--html-->\n        `\n      <div class=\"question-wrapper\">\n      <descope-combo-box\n        data-id=\"${index}\"\n        item-label-path=\"data-name\"\n        item-value-path=\"data-id\"\n        bordered=\"true\"\n        required=\"true\"\n        clear-button-visible=\"true\"\n      ></descope-combo-box>\n\n      <descope-text-field\n        data-id=\"${index}\"\n        required=\"true\"\n        bordered=\"true\"\n        minlength=\"2\"\n      ></descope-text-field>\n    </div>\n      `\n      // <!--!html-->\n    );\n\n    this.baseElement.innerHTML = res.join(\n      '<spacer></spacer><descope-divider></descope-divider><spacer></spacer>'\n    );\n\n    this.comboBoxes.forEach((el) => {\n      el.addEventListener('change', (e) => {\n        this.updateRemainingCombosData(e.target);\n        const AttachedTextField = this.getAttachedTextField(e.target);\n\n        AttachedTextField.value = '';\n      });\n\n      // eslint-disable-next-line no-param-reassign\n      el.data = this.data;\n    });\n\n    this.#syncAttrs(attrsToSync);\n  }\n\n  getAttachedTextField(combo) {\n    const selector = `descope-text-field[data-id=\"${combo.getAttribute('data-id')}\"]`;\n\n    return this.baseElement.querySelector(selector);\n  }\n\n  filterData(comboValue) {\n    const res = this.data.filter((item) => {\n      return item.value === comboValue || !this.selectedQuestionIds.includes(item.value);\n    });\n\n    return res;\n  }\n\n  reportValidity() {\n    this.inputs.reverse().forEach((el) => el.reportValidity());\n\n    return this.checkValidity();\n  }\n\n  checkValidity() {\n    return [...this.comboBoxes, ...this.textFields].every((el) => el.checkValidity());\n  }\n\n  updateRemainingCombosData(sourceCombo) {\n    this.comboBoxes\n      .filter((combo) => combo !== sourceCombo)\n      .forEach((combo) => {\n        // eslint-disable-next-line no-param-reassign\n        combo.data = this.filterData(combo.value);\n      });\n  }\n\n  get questions() {\n    try {\n      return JSON.parse(this.getAttribute('questions')) || [];\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(componentName, 'Error parsing questions attribute', e);\n      return [];\n    }\n  }\n\n  // this returns the structure expected by the combo box\n  get data() {\n    return this.questions.map(({ id, text }) => ({ value: id, label: text }));\n  }\n\n  get comboBoxes() {\n    return Array.from(this.baseElement.querySelectorAll('descope-combo-box'));\n  }\n\n  get textFields() {\n    return Array.from(this.baseElement.querySelectorAll('descope-text-field'));\n  }\n\n  get inputs() {\n    return Array.from(this.baseElement.querySelectorAll('descope-combo-box, descope-text-field'));\n  }\n\n  get selectedQuestionIds() {\n    return this.comboBoxes.map((el) => el.value);\n  }\n\n  get value() {\n    return this.comboBoxes.map((combo) => {\n      const id = combo.value;\n      const answer = this.getAttachedTextField(combo).value;\n\n      return { id, answer };\n    });\n  }\n\n  set value(val = []) {\n    val.forEach((item, index) => {\n      const combo = this.comboBoxes[index];\n      const textField = this.getAttachedTextField(combo);\n\n      combo.value = item.id;\n      textField.value = item.answer;\n    });\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #updateAttribute(ele, attrName, value) {\n    if (value === null) ele.removeAttribute(attrName);\n    else ele.setAttribute(attrName, value);\n  }\n\n  #syncAttrs(attrs) {\n    const componentMap = {\n      question: this.comboBoxes,\n      answer: this.textFields,\n    };\n\n    attrs.forEach((attr) => {\n      const [maybeComponentType, ...rest] = attr.split('-');\n      const elements = componentMap[maybeComponentType] || this.inputs;\n      const attrName = componentMap[maybeComponentType] ? rest.join('-') : attr;\n\n      elements.forEach((el) => {\n        this.#updateAttribute(el, attrName, this.getAttribute(attr));\n      });\n    });\n  }\n\n  init() {\n    super.init?.();\n    // render new components\n    observeAttributes(\n      this,\n      () => {\n        this.#renderQuestions();\n      },\n      { includeAttrs: attrsToReRender }\n    );\n\n    // update existing components\n    observeAttributes(this, this.#syncAttrs.bind(this), {\n      includeAttrs: attrsToSync,\n    });\n  }\n}\n\nexport const SecurityQuestionsSetupClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: [{ selector: () => ':host', property: 'width' }, { property: 'width' }],\n      hostDirection: [\n        { selector: () => ':host', property: 'direction' },\n        {\n          selector: () => ComboBoxClass.componentName,\n          property: ComboBoxClass.cssVarList.hostDirection,\n        },\n        {\n          selector: () => TextFieldClass.componentName,\n          property: TextFieldClass.cssVarList.hostDirection,\n        },\n      ],\n      gap: { selector: () => 'div', property: 'gap' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawSecurityQuestionsSetup);\n","import { SecurityQuestionsSetupClass } from '../../components/descope-security-questions-setup/SecurityQuestionsSetupClass';\n\nexport const vars = SecurityQuestionsSetupClass.cssVarList;\n\nconst securityQuestionsSetup = {\n  [vars.hostWidth]: 'fit-content',\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default securityQuestionsSetup;\n","import { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('security-questions-verify');\n\nconst textFieldsAttrs = [\n  'full-width',\n  'readonly',\n  'size',\n  'answer-placeholder',\n  'answer-data-errormessage-value-missing',\n  'st-error-message-icon',\n  'st-error-message-icon-size',\n  'st-error-message-icon-padding',\n];\n\nconst textsAttrs = ['question-mode'];\n\nconst attrMappings = {\n  'answer-placeholder': 'placeholder',\n  'answer-data-errormessage-value-missing': 'data-errormessage-value-missing',\n  'question-mode': 'mode',\n};\n\nconst attrsToSync = [...textFieldsAttrs, ...textsAttrs];\n\nconst attrsToReRender = ['questions'];\nclass RawSecurityQuestionsVerify extends createBaseClass({ componentName, baseSelector: 'div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div></div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n\n      div {\n        display: flex;\n        flex-direction: column;\n      }\n        `,\n      this\n    );\n  }\n\n  #renderQuestions() {\n    const res = this.questions.map(\n      ({ id, text }) =>\n        // <!--html-->\n        `\n      <div class=\"question-wrapper\">\n      <descope-text\n        data-id=\"${id}\"\n      >${text}</descope-text>\n\n      <descope-text-field\n        data-id=\"${id}\"\n        required=\"true\"\n        bordered=\"true\"\n      ></descope-text-field>\n    </div>\n      `\n      // <!--!html-->\n    );\n\n    this.baseElement.innerHTML = res.join(\n      '<spacer></spacer><descope-divider></descope-divider><spacer></spacer>'\n    );\n\n    this.#syncAttrs(attrsToSync);\n\n    // focus input when text is clicked\n    this.texts.forEach((el) => {\n      const input = this.textFields.find(\n        (field) => field.getAttribute('data-id') === el.getAttribute('data-id')\n      );\n      // eslint-disable-next-line no-param-reassign\n      if (input) el.onclick = input.focus.bind(input);\n    });\n  }\n\n  reportValidity() {\n    this.textFields.reverse().forEach((el) => el.reportValidity());\n\n    return this.checkValidity();\n  }\n\n  checkValidity() {\n    return this.textFields.every((el) => el.checkValidity());\n  }\n\n  get questions() {\n    try {\n      return JSON.parse(this.getAttribute('questions')) || [];\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(componentName, 'Error parsing questions attribute', e);\n      return [];\n    }\n  }\n\n  get texts() {\n    return Array.from(this.baseElement.querySelectorAll('descope-text'));\n  }\n\n  get textFields() {\n    return Array.from(this.baseElement.querySelectorAll('descope-text-field'));\n  }\n\n  get elements() {\n    return Array.from(this.baseElement.querySelectorAll('descope-text, descope-text-field'));\n  }\n\n  get value() {\n    return this.textFields.map((el) => ({ id: el.getAttribute('data-id'), answer: el.value }));\n  }\n\n  set value(val = []) {\n    val.forEach(({ id, answer }) => {\n      const textField = this.textFields.find((el) => el.getAttribute('data-id') === id);\n      if (textField) textField.value = answer;\n    });\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #updateAttribute(ele, attrName, value) {\n    if (value === null) ele.removeAttribute(attrName);\n    else ele.setAttribute(attrName, value);\n  }\n\n  #getElementsToUpdate(attr) {\n    switch (true) {\n      case textFieldsAttrs.includes(attr):\n        return this.textFields;\n      case textsAttrs.includes(attr):\n        return this.texts;\n      default:\n        return [];\n    }\n  }\n\n  #syncAttrs(attrs) {\n    attrs.forEach((attr) => {\n      this.#getElementsToUpdate(attr).forEach((el) => {\n        this.#updateAttribute(el, attrMappings[attr] || attr, this.getAttribute(attr));\n      });\n    });\n  }\n\n  init() {\n    super.init?.();\n    // render new components\n    observeAttributes(\n      this,\n      () => {\n        this.#renderQuestions();\n      },\n      { includeAttrs: attrsToReRender }\n    );\n\n    // update existing components\n    observeAttributes(this, this.#syncAttrs.bind(this), {\n      includeAttrs: attrsToSync,\n    });\n  }\n}\n\nexport const SecurityQuestionsVerifyClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: [{ selector: () => ':host', property: 'width' }, { property: 'width' }],\n      hostDirection: [\n        { selector: () => ':host', property: 'direction' },\n        {\n          selector: () => TextClass.componentName,\n          property: TextClass.cssVarList.hostDirection,\n        },\n        {\n          selector: () => TextFieldClass.componentName,\n          property: TextFieldClass.cssVarList.hostDirection,\n        },\n      ],\n      gap: { selector: () => 'div', property: 'gap' },\n      questionTextAlign: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.textAlign,\n      },\n      questionFontSize: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.fontSize,\n      },\n      questionFontFamily: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.fontFamily,\n      },\n      questionCursor: {\n        selector: () => TextClass.componentName,\n        property: 'cursor',\n      },\n\n      errorMessageIcon: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessageIcon,\n      },\n      errorMessageIconSize: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessageSize,\n      },\n      errorMessageIconPadding: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessagePadding,\n      },\n      errorMessageIconRepeat: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessageRepeat,\n      },\n      errorMessageIconPosition: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessagePosition,\n      },\n      errorMessageFontSize: {\n        selector: () => TextClass.componentName,\n        property: TextClass.cssVarList.errorMessageFontSize,\n      },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawSecurityQuestionsVerify);\n","import { SecurityQuestionsVerifyClass } from '../../components/descope-security-questions-verify/SecurityQuestionsVerifyClass';\nimport { refs } from './inputWrapper';\n\nexport const vars = SecurityQuestionsVerifyClass.cssVarList;\n\nconst securityQuestionsVerify = {\n  [vars.hostWidth]: 'min-content',\n  [vars.questionCursor]: 'pointer',\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n  [vars.questionFontSize]: refs.fontSize,\n  [vars.questionFontFamily]: refs.fontFamily,\n};\n\nexport default securityQuestionsVerify;\n","const NUMERIC_RE = /^\\d+$/;\n\nexport const isNumericValue = (val) => NUMERIC_RE.test(val.replaceAll('+', '').replaceAll('-', ''));\n\nexport const sanitizeCountryCodePrefix = (val) => val.replace(/\\+\\d+-/, '');\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { isNumericValue, sanitizeCountryCodePrefix as sanitizeValue } from './helpers';\nimport { PhoneFieldClass } from '../phone-fields/descope-phone-field/PhoneFieldClass';\nimport { PhoneFieldInputBoxClass } from '../phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('hybrid-field');\n\nconst attrs = {\n  shared: [\n    'label',\n    'bordered',\n    'full-width',\n    'label-type',\n    'size',\n    'disabled',\n    'readonly',\n    'required',\n    'st-host-direction',\n    'st-error-message-icon',\n    'st-error-message-icon-size',\n    'st-error-message-icon-padding',\n  ],\n  email: [\n    'placeholder',\n    'data-errormessage-value-missing-email',\n    'data-errormessage-pattern-mismatch-email',\n    'external-input',\n  ],\n  phone: {\n    countryCode: [\n      'phone-input-label',\n      'country-input-label',\n      'country-input-placeholder',\n      'restrict-countries',\n      'default-code',\n      'phone-minlength',\n      'phone-format-value',\n      'phone-strict-validation',\n      'data-errormessage-value-missing-phone',\n    ],\n    inputBox: [\n      'restrict-countries',\n      'default-code',\n      'phone-minlength',\n      'phone-format-value',\n      'phone-strict-validation',\n      'data-errormessage-value-missing-phone',\n    ],\n  },\n};\n\nconst attrMap = {\n  email: {\n    'data-errormessage-value-missing-email': 'data-errormessage-value-missing',\n    'data-errormessage-pattern-mismatch-email': 'data-errormessage-pattern-mismatch',\n  },\n  phone: {\n    'phone-input-label': 'label',\n    'phone-minlength': 'minlength',\n    'phone-format-value': 'format-value',\n    'phone-strict-validation': 'strict-validation',\n    'data-errormessage-value-missing-phone': 'data-errormessage-value-missing',\n  },\n};\n\nconst EMAIL_FIELD = 'descope-email-field';\nconst PHONE_FIELD = 'descope-phone-field';\nconst PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: 'div',\n});\n\nclass RawHybridField extends BaseClass {\n  #isReportedValidity = false;\n\n  #selectionStart;\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"wrapper\">\n      <descope-email-field external-input=\"${this.isExternalInput}\"></descope-email-field>\n      <descope-phone-field allow-alphanumeric-input=\"true\"></descope-phone-field>\n      <descope-phone-input-box-field allow-alphanumeric-input=\"true\"></descope-phone-input-box-field>\n    </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n        box-sizing: border-box;\n        padding: 0;\n        gap: 0;\n      }\n      .wrapper {\n        display: grid;\n        width: 100%;\n      }\n      descope-email-field,\n      descope-phone-field,\n      descope-phone-input-box-field {\n        grid-area: 1/1;\n        width: 100%;\n        height: 100%;\n      }\n      .hidden {\n        visibility: hidden;\n      }\n      `,\n      this\n    );\n  }\n\n  get isExternalInput() {\n    return this.getAttribute('external-input') === 'true';\n  }\n\n  get emailInputEle() {\n    return this.isExternalInput ? this.emailInput.externalInput : this.emailInput.inputElement;\n  }\n\n  get phoneVariant() {\n    const isInputBox = this.getAttribute('phone-variant') === 'inputBox';\n    return isInputBox ? this.phoneInputBoxInput : this.phoneCountryCodeInput;\n  }\n\n  get defaultCode() {\n    const firstItem = this.phoneCountryCodeInput.countryCodes?.[0] || '';\n    return this.getAttribute('default-code') || firstItem;\n  }\n\n  get activeInputEle() {\n    if (this.activeInput === this.emailInput) {\n      return this.emailInputEle;\n    }\n    return this.phoneVariant.phoneNumberInputEle;\n  }\n\n  get value() {\n    return this.activeInput?.value || '';\n  }\n\n  set value(val) {\n    this.handleActiveInput(val);\n    this.activeInput.value = val;\n  }\n\n  async init() {\n    super.init?.();\n\n    this.initInputs();\n    this.updateAttrs();\n    this.toggleInputVisibility();\n\n    await this.waitForInputs();\n\n    this.initInputEles();\n    this.overrideEmailInputType();\n    this.overrideEmailSetAttribute();\n  }\n\n  waitForInputs() {\n    return new Promise((resolve) => {\n      const check = setInterval(() => {\n        if (this.emailInputEle) {\n          clearInterval(check);\n          resolve();\n        }\n      });\n    });\n  }\n\n  initInputs() {\n    this.emailInput = this.shadowRoot.querySelector(EMAIL_FIELD);\n    this.phoneCountryCodeInput = this.shadowRoot.querySelector(PHONE_FIELD);\n    this.phoneInputBoxInput = this.shadowRoot.querySelector(PHONE_INPUT_BOX_FIELD);\n\n    this.inputs = [this.emailInput, this.phoneCountryCodeInput, this.phoneInputBoxInput];\n\n    this.activeInput = this.emailInput;\n  }\n\n  // we need to listen on the inner `input` element itself, otherwise we don't always get an `input` event\n  initInputEles() {\n    const inputEles = [\n      this.emailInputEle,\n      this.phoneCountryCodeInput.phoneNumberInputEle,\n      this.phoneInputBoxInput.phoneNumberInputEle,\n    ];\n\n    inputEles.forEach((ele) => {\n      ele.addEventListener('input', this.onValueChange.bind(this));\n    });\n  }\n\n  overrideEmailInputType() {\n    this.emailInputEle.addEventListener('focus', () => {\n      this.emailInputEle.setAttribute('type', 'text');\n    });\n    this.emailInputEle.addEventListener('blur', () => {\n      setTimeout(() => {\n        this.emailInputEle.setAttribute('type', 'email');\n      });\n    });\n  }\n\n  // We want to prevent Vaadin from changing the input type to `email`\n  // otherwise, we cannot get the selectionStart from the input.\n  overrideEmailSetAttribute() {\n    const origEmailSetAttr = this.emailInput.setAttribute.bind(this.emailInputEle);\n    this.emailInputEle.setAttribute = (name, value) => {\n      if (name !== 'type' || value !== 'email' || !this.emailInput.hasAttribute('focused')) {\n        return origEmailSetAttr(name, value);\n      }\n      return false;\n    };\n  }\n\n  updateAttrs() {\n    forwardAttrs(this, this.emailInput, { includeAttrs: attrs.email, mapAttrs: attrMap.email });\n\n    forwardAttrs(this, this.phoneCountryCodeInput, {\n      includeAttrs: attrs.phone.countryCode,\n      mapAttrs: attrMap.phone,\n    });\n\n    forwardAttrs(this, this.phoneInputBoxInput, {\n      includeAttrs: attrs.phone.inputBox,\n      mapAttrs: attrMap.phone,\n    });\n\n    this.inputs.forEach((input) => forwardAttrs(this, input, { includeAttrs: attrs.shared }));\n\n    setTimeout(() => this.phoneCountryCodeInput.setAttribute('default-code', this.defaultCode));\n  }\n\n  onValueChange() {\n    this.#selectionStart = this.activeInputEle.selectionStart;\n    this.handleActiveInput(this.activeInput.value);\n  }\n\n  handleActiveInput(val) {\n    const expectedActiveInput = isNumericValue(val) ? this.phoneVariant : this.emailInput;\n\n    if (this.activeInput !== expectedActiveInput) {\n      this.setActiveInput(expectedActiveInput);\n    }\n  }\n\n  setActiveInput(expectedActiveInput) {\n    const val = this.activeInput.value;\n    this.activeInput = expectedActiveInput;\n    this.setActiveInputValue(val);\n    if (this.#isReportedValidity) this.activeInput.reportValidity();\n    this.setActiveInputSelectionStart();\n    this.toggleInputVisibility();\n  }\n\n  setActiveInputSelectionStart() {\n    setTimeout(() => {\n      this.activeInputEle.focus();\n      this.activeInputEle.setSelectionRange?.(this.#selectionStart, this.#selectionStart);\n    });\n  }\n\n  setActiveInputValue(val) {\n    const sanitizedVal = sanitizeValue(val);\n    const isPhoneField = this.activeInput.localName === PHONE_FIELD;\n    const value = isPhoneField\n      ? `${this.phoneCountryCodeInput.countryCodeItems}-${sanitizedVal}`\n      : sanitizedVal;\n    this.activeInput.value = value;\n  }\n\n  toggleInputVisibility() {\n    this.inputs.forEach((input) => {\n      input !== this.activeInput ? input.classList.add('hidden') : input.classList.remove('hidden');\n    });\n  }\n\n  reportValidity() {\n    this.#isReportedValidity = true;\n\n    const ele = this.activeInputEle;\n\n    // On reportValidity we want to set the caret at the end of the input value.\n    // Since checkValidity triggers `focus` on the input, it sets the caret at the start of the input,\n    // regardless the existing value.\n    const origInputType = ele.type;\n    ele.setAttribute('type', 'text');\n    setTimeout(() => {\n      ele.setSelectionRange?.(ele.value.length, ele.value.length);\n      ele.setAttribute('type', origInputType);\n    });\n\n    return this.activeInput.reportValidity();\n  }\n\n  checkValidity() {\n    return this.activeInput.checkValidity();\n  }\n}\n\nexport const HybridFieldClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostDirection: [\n        { selector: () => 'descope-email-field', property: 'direction' },\n        { selector: () => 'descope-phone-field', property: 'direction' },\n        { selector: () => 'descope-phone-input-box-field', property: 'direction' },\n      ],\n      errorMessageIcon: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageIcon,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageIcon,\n        },\n      ],\n      errorMessageIconSize: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageIconSize,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconSize,\n        },\n      ],\n      errorMessageIconPadding: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageIconPadding,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPadding,\n        },\n      ],\n      errorMessageIconRepeat: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageIconRepeat,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconRepeat,\n        },\n      ],\n      errorMessageIconPosition: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageIconPosition,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPosition,\n        },\n      ],\n      errorMessageFontSize: [\n        {\n          selector: () => PhoneFieldClass.componentName,\n          property: PhoneFieldClass.cssVarList.errorMessageFontSize,\n        },\n        {\n          selector: () => PhoneFieldInputBoxClass.componentName,\n          property: PhoneFieldInputBoxClass.cssVarList.errorMessageFontSize,\n        },\n      ],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawHybridField);\n","import { HybridFieldClass } from '../../components/descope-hybrid-field/HybridFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = HybridFieldClass.cssVarList;\n\nconst hybridField = {\n  [vars.hostDirection]: refs.direction,\n\n  // error message icon\n  [vars.errorMessageIcon]: refs.errorMessageIcon,\n  [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n  [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n  [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n  [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n  [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default hybridField;\nexport { vars };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { injectStyle, observeChildren, syncAttrs } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('alert');\n\nclass RawAlert extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div>\n      <div class=\"icon\"></div>\n      <div class=\"content\">\n        <descope-enriched-text>\n          <slot></slot>\n        </descope-enriched-text>\n      </div>\n    </div>\n    `;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n      :host > div {\n        display: flex;\n        width: 100%;\n      }\n      :host([empty=\"true\"]) {\n        display: none;\n      }\n      .icon {\n        flex-shrink: 0;\n      }\n      .content {\n        display: flex;\n        flex-wrap: wrap;\n        white-space: normal;\n        overflow-wrap: break-word;\n      }\n      `,\n      this\n    );\n  }\n\n  init() {\n    super.init?.();\n\n    this.slotEle = this.shadowRoot.querySelector('slot');\n    this.textComp = this.shadowRoot.querySelector('descope-enriched-text');\n\n    this.slotEle.addEventListener('slotchange', this.handleSlotChange.bind(this));\n\n    syncAttrs(this.textComp, this, { includeAttrs: ['empty'] });\n\n    observeChildren(this, this.handleChildrenChange.bind(this));\n\n    forwardAttrs(this, this.textComp, {\n      includeAttrs: ['variant', 'full-width', 'link-target-blank'],\n    });\n  }\n\n  handleChildrenChange() {\n    this.textComp.textContent = this.textContent;\n  }\n\n  handleSlotChange() {\n    const assignedNodes = this.slotEle.assignedNodes({ flatten: true });\n    if (!assignedNodes.length) return;\n    this.textComp.textContent = assignedNodes[0]?.textContent || '';\n  }\n}\n\nconst { icon } = {\n  icon: { selector: () => '.icon' },\n};\n\nexport const AlertClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostDirection: { selector: () => ':host', property: 'direction' },\n      textColor: {\n        selector: EnrichedTextClass.componentName,\n        property: EnrichedTextClass.cssVarList.textColor,\n      },\n      backgroundColor: {},\n      borderColor: {},\n      borderWidth: {},\n      borderStyle: {},\n      borderRadius: {},\n      fontSize: [\n        {},\n        {\n          selector: EnrichedTextClass.componentName,\n          property: EnrichedTextClass.cssVarList.fontSize,\n        },\n      ],\n      gap: {},\n      horizontalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n      verticalPadding: [{ property: 'padding-right' }, { property: 'padding-left' }],\n      alignItems: {},\n      justifyContent: [\n        {},\n        {\n          selector: EnrichedTextClass.componentName,\n          property: EnrichedTextClass.cssVarList.textAlign,\n        },\n      ],\n      icon: [\n        { ...icon, property: 'content' },\n        { ...icon, property: 'display', fallback: 'none' },\n      ],\n      iconSize: [\n        { ...icon, property: 'width' },\n        { ...icon, property: 'height' },\n      ],\n    },\n  }),\n  createStyleMixin({ componentNameOverride: getComponentName('enriched-text') }),\n  createStyleMixin({ componentNameOverride: getComponentName('text') }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawAlert);\n","import globals from '../globals';\nimport { getThemeRefs, useVar } from '../../helpers/themeHelpers';\nimport { AlertClass } from '../../components/descope-alert/AlertClass';\nimport { vars as textCompVars } from '@descope-ui/descope-text/theme';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = AlertClass.cssVarList;\n\nconst alert = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.backgroundColor]: 'transparent',\n  [vars.iconSize]: '1.35em',\n  [vars.alignItems]: 'center',\n  [vars.borderRadius]: globalRefs.radius.md,\n  [vars.horizontalPadding]: '0',\n  [vars.verticalPadding]: '0',\n  [vars.gap]: `0.5em`,\n  [vars.fontSize]: useVar(textCompVars.fontSize),\n\n  mode: {\n    error: {\n      // Notice: If icon is empty, we need to remove it from the theme, to prevent it from rendering minimal layout\n      // [vars.icon]: `url(${icon})`,\n      [vars.textColor]: globalRefs.colors.error.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.error.main,\n      },\n    },\n    success: {\n      // Notice: If icon is empty, we need to remove it from the theme, to prevent it from rendering minimal layout\n      // [vars.icon]: '',\n      [vars.textColor]: globalRefs.colors.success.main,\n      _bordered: {\n        [vars.borderColor]: globalRefs.colors.success.main,\n      },\n    },\n  },\n\n  spacing: {\n    xs: {\n      [vars.horizontalPadding]: globalRefs.spacing.xs,\n      [vars.verticalPadding]: globalRefs.spacing.xs,\n    },\n    sm: {\n      [vars.horizontalPadding]: globalRefs.spacing.sm,\n      [vars.verticalPadding]: globalRefs.spacing.sm,\n    },\n    md: {\n      [vars.horizontalPadding]: globalRefs.spacing.md,\n      [vars.verticalPadding]: globalRefs.spacing.md,\n    },\n    lg: {\n      [vars.horizontalPadding]: globalRefs.spacing.lg,\n      [vars.verticalPadding]: globalRefs.spacing.lg,\n    },\n    xl: {\n      [vars.horizontalPadding]: globalRefs.spacing.xl,\n      [vars.verticalPadding]: globalRefs.spacing.xl,\n    },\n  },\n\n  textAlign: {\n    left: {\n      [vars.justifyContent]: 'left',\n    },\n    center: {\n      [vars.justifyContent]: 'center',\n    },\n    right: {\n      [vars.justifyContent]: 'right',\n    },\n  },\n\n  _bordered: {\n    [vars.borderWidth]: globalRefs.border.xs,\n    [vars.borderColor]: 'transparent',\n    [vars.borderStyle]: 'solid',\n    [vars.borderWidth]: globalRefs.border.xs,\n    [vars.borderRadius]: globalRefs.radius.sm,\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default alert;\nexport { vars };\n","import { injectStyle, observeChildren } from '@descope-ui/common/components-helpers';\nimport { draggableMixin, createStyleMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('hcaptcha');\n\nconst observedAttributes = ['enabled', 'site-key'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: ':host > div' });\nclass RawHcaptcha extends BaseInputClass {\n  static get observedAttributes() {\n    return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    if (oldValue !== newValue) {\n      if (attrName === 'enabled') {\n        this.toggleCaptchaEles(newValue === 'true');\n      }\n    }\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"badge\">\n      <span id=\"hcaptcha\"></span>\n      <input id=\"hcaptcha-input\" type=\"hidden\" name=\"hcaptcha\" required />\n      <img src=\"https://imgs.descope.com/connectors/templates/hcaptcha/hcaptcha-big.png\" alt=\"hcaptcha\"/>\n    </div>\n    <slot></slot>\n\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n      :host > div:not(.hidden) {\n        display: flex;\n      }\n      :host #hcaptcha-input {\n        display: none;\n      }\n      :host #hcaptcha .hcaptcha-logo {\n        height: 100%;\n      }\n      :host #hcaptcha {\n\t\t\t\twidth: 100%;\n        height: 100%;\n\t\t\t}\n      :host img {\n        max-width: 100%;\n        max-height: 100%;\n        object-fit: contain;\n      }\n      .hidden {\n        display: none;\n      }\n        `,\n      this\n    );\n\n    this.captchaEle = this.shadowRoot.querySelector('#hcaptcha');\n    this.mockCaptchaEle = this.shadowRoot.querySelector('img');\n    this.badge = this.shadowRoot.querySelector('.badge');\n    this.inputElement = this.shadowRoot.querySelector('input');\n  }\n\n  init() {\n    super.init?.();\n\n    observeChildren(this, this.updatePreview.bind(this));\n    // avoid any possible conflicts with the inner input elements\n    this.inputElement.getValidity = null;\n    this.inputElement.checkValidity = null;\n  }\n\n  toggleCaptchaEles(enabled) {\n    if (enabled) {\n      this.captchaEle.style.display = '';\n      this.mockCaptchaEle.style.display = 'none';\n    } else {\n      this.captchaEle.style.display = 'none';\n      this.mockCaptchaEle.style.display = '';\n    }\n  }\n\n  updatePreview() {\n    this.toggleCaptchaEles(this.enabled);\n  }\n\n  getValidity() {\n    if (!this.inputElement.value) {\n      return { valueMissing: true };\n    }\n\n    return {};\n  }\n\n  checkValidity() {\n    return !!this.inputElement.value;\n  }\n\n  get siteKey() {\n    return this.getAttribute('site-key');\n  }\n\n  get enabled() {\n    return this.getAttribute('enabled') === 'true';\n  }\n}\n\nexport const HcaptchaClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: [{ selector: () => ':host', property: 'width' }],\n      hostDirection: { property: 'direction' },\n      verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n      horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],\n      maxHeight: [\n        { selector: '>img', property: 'height' },\n        { selector: '>#hcaptcha', property: 'height' },\n      ],\n      maxWidth: [\n        { selector: '>img', property: 'max-width' },\n        { selector: '>hcaptcha', property: 'max-width' },\n      ],\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin\n)(RawHcaptcha);\n","import { HcaptchaClass } from '../../components/descope-hcaptcha/HcaptchaClass';\n\nconst vars = HcaptchaClass.cssVarList;\n\nconst hcaptcha = {\n  enabled: {\n    false: {\n      [vars.maxHeight]: '70px',\n    },\n  },\n};\n\nexport default hcaptcha;\nexport { vars };\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n  forwardAttrs,\n  getComponentName,\n  syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n  componentName,\n  baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n  }\n\n  get allowCustomValue() {\n    return this.getAttribute('allow-custom-value') === 'true';\n  }\n\n  get minSearchLength() {\n    return this.getAttribute('min-search-length') || 3;\n  }\n\n  get noResultsFoundMessage() {\n    return this.getAttribute('no-results-message') || 'No results found';\n  }\n\n  get errorFetchingResultsMessage() {\n    return (\n      this.getAttribute('error-fetching-results-message') ||\n      'An error occurred fetching results'\n    );\n  }\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n    <div class=\"autocomplete-field\">\n      <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n    </div>\n    `;\n\n    this.comboBox = this.querySelector('descope-combo-box');\n  }\n\n  get value() {\n    return this.comboBox.value;\n  }\n\n  set value(val) {\n    if (!this.allowCustomValue) {\n      this.comboBox.data = [{ label: val, value: val }];\n      setTimeout(() => {\n        this.comboBox.value = val;\n      });\n    } else {\n      this.comboBox.value = val;\n    }\n  }\n\n  get defaultValue() {\n    return this.getAttribute('default-value');\n  }\n\n  async #autoCompleteSearch(value) {\n    const { results, error } = await this.fetchResults(value);\n    if (error) {\n      return { error };\n    }\n    return {\n      results,\n    };\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #itemRenderer(displayName, value, label, disabled) {\n    return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n      displayName || label\n    }</span>`;\n  }\n\n  #overrideComboBoxRenderers() {\n    this.comboBox.renderer = (root, _, model) => {\n      if (model.item.getAttribute('disabled') === 'true') {\n        root.setAttribute('disabled', 'true');\n      } else {\n        root.removeAttribute('disabled');\n      }\n      // eslint-disable-next-line no-param-reassign\n      root.innerHTML = model.item.outerHTML;\n    };\n\n    this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n      this.#itemRenderer(displayName, value, label, disabled);\n  }\n\n  focus() {\n    this.comboBox.focus();\n  }\n\n  init() {\n    // This event listener needs to be placed before the super.init() call\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) this.comboBox.focus();\n    });\n\n    super.init?.();\n    this.#initComboBox();\n    // This is required since when we remove the invalid attribute from the internal mappings field,\n    // we want to reflect the change in the parent component\n    syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n  }\n\n  #initComboBox() {\n    this.debouncedSearch = asyncDebounce(async (value) => {\n      try {\n        const { results, error } = await this.#autoCompleteSearch(value);\n        return { results, error, value };\n      } catch (error) {\n        return { error, value };\n      }\n    }, DEBOUNCE_SEARCH_DELAY);\n\n    forwardAttrs(this, this.comboBox, {\n      includeAttrs: [\n        'size',\n        'bordered',\n        'label',\n        'label-type',\n        'placeholder',\n        'disabled',\n        'readonly',\n        'required',\n        'full-width',\n        'helper-text',\n        'invalid',\n        'error-message',\n        'data-errormessage-value-missing',\n        'st-host-direction',\n        'allow-custom-value',\n        'st-error-message-icon',\n        'st-error-message-icon-size',\n        'st-error-message-icon-padding',\n      ],\n    });\n\n    this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n    this.#overrideComboBoxRenderers();\n  }\n\n  #getEmptyResultsData() {\n    return [\n      {\n        label: this.noResultsFoundMessage,\n        value: INVALID_OPTION_VALUE,\n        disabled: true,\n      },\n    ];\n  }\n\n  #getErrorResultsData() {\n    return [\n      {\n        label: this.errorFetchingResultsMessage,\n        value: INVALID_OPTION_VALUE,\n        disabled: true,\n      },\n    ];\n  }\n\n  async onSearch(e) {\n    const searchValue = e.detail.value;\n    if (!searchValue || searchValue.length < this.minSearchLength) {\n      return;\n    }\n    this.comboBox.loading = true;\n    this.comboBox.setAttribute('opened', 'true');\n    const response = await this.debouncedSearch(searchValue);\n    if (response && response.value === searchValue) {\n      this.comboBox.loading = false;\n      if (response.error) {\n        this.comboBox.data = this.#getErrorResultsData();\n      } else if (response.results?.length === 0) {\n        this.comboBox.data = this.#getEmptyResultsData();\n      } else {\n        this.comboBox.data = response.results || [];\n      }\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this,no-unused-vars\n  fetchResults(value) {\n    // eslint-disable-next-line no-console\n    console.warn('fetchResults', 'needs to be implemented');\n    return { results: [], error: undefined };\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n    return { valid: true };\n  }\n}\n\nexport default AutocompleteFieldInternal;\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n  forwardAttrs,\n  getComponentName,\n  syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n  class AutocompleteFieldMixinClass extends superclass {\n    get defaultValue() {\n      return this.getAttribute('default-value');\n    }\n\n    setDefaultValue() {\n      if (this.defaultValue) {\n        setTimeout(() => {\n          this.inputElement.value = this.defaultValue;\n        });\n      }\n    }\n\n    init() {\n      super.init?.();\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n        tabindex=\"-1\"\n      ></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(\n        descopeInternalComponentName,\n      );\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'bordered',\n          'label',\n          'required',\n          'label-type',\n          'placeholder',\n          'full-width',\n          'allow-custom-value',\n          'min-search-length',\n          'no-results-message',\n          'error-fetching-results-message',\n          'data-errormessage-value-missing',\n          'invalid',\n          'error-message',\n          'readonly',\n          'disabled',\n          'st-host-direction',\n          'st-error-message-icon',\n          'st-error-message-icon-size',\n          'st-error-message-icon-padding',\n        ],\n      });\n\n      // This is required since when we remove the invalid attribute from the internal mappings field,\n      // we want to reflect the change in the parent component\n      syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n      this.inputElement.fetchResults = this.fetchResults;\n      this.setDefaultValue();\n    }\n\n    set fetchResults(fetchResults) {\n      this.inputElement.fetchResults = fetchResults;\n    }\n  };\n\nconst { host } = {\n  host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n  createStyleMixin({\n    componentNameOverride: getComponentName('input-wrapper'),\n  }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      fontSize: { ...host },\n      checkmarkDisplay: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n      },\n      itemPaddingInlineStart: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n      },\n      itemPaddingInlineEnd: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n      },\n      selectedItemBackground: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n      },\n      selectedItemHoverBackground: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n      },\n      selectedItemFocusBackground: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n      },\n      itemHoverBackground: {\n        selector: ComboBoxClass.componentName,\n        property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n      },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({\n    proxyProps: ['value', 'selectionStart'],\n    inputEvent: 'input',\n    proxyParentValidation: true,\n  }),\n  componentNameValidationMixin,\n  customMixin,\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-custom-field',\n    style: () => `\n    :host {\n      display: inline-flex;\n      max-width: 100%;\n      direction: ltr;\n    }\n    vaadin-custom-field {\n      line-height: unset;\n      width: 100%;\n    }\n\n    descope-autocomplete-field-internal {\n      display: inline-block;\n      box-sizing: border-box;\n      user-select: none;\n      width: 100%;\n      max-width: 100%;\n    }\n\n    descope-autocomplete-field-internal ::slotted {\n      padding: 0;\n    }\n  `,\n    excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],\n    componentName,\n  }),\n);\n","import globals from '@descope-ui/theme-globals';\nimport { AutocompleteFieldClass } from './component/AutocompleteFieldClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst vars = AutocompleteFieldClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nconst autocompleteField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n  [vars.fontSize]: refs.fontSize,\n  [vars.checkmarkDisplay]: 'none',\n  [vars.itemPaddingInlineStart]: globalRefs.spacing.lg,\n  [vars.itemPaddingInlineEnd]: globalRefs.spacing.lg,\n  [vars.selectedItemBackground]: globalRefs.colors.primary.light,\n  [vars.selectedItemHoverBackground]: globalRefs.colors.primary.light,\n  [vars.selectedItemFocusBackground]: globalRefs.colors.primary.light,\n  [vars.itemHoverBackground]: globalRefs.colors.primary.highlight,\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default autocompleteField;\nexport { vars };\n","export const initGoogleMapsLoader = (apiKey) => {\n  if (window.google?.maps) {\n    return;\n  }\n\n  /* eslint-disable */\n  // prettier-ignore\n  (g=>{var h,a,k,p=\"The Google Maps JavaScript API\",c=\"google\",l=\"importLibrary\",q=\"__ib__\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\"script\"));e.set(\"libraries\",[...r]+\"\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\"_\"+t[0].toLowerCase()),g[k]);e.set(\"callback\",c+\".maps.\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\" could not load.\"));a.nonce=m.querySelector(\"script[nonce]\")?.nonce||\"\";m.head.append(a)}));d[l]?console.warn(p+\" only loads once. Ignoring:\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n    key: apiKey,\n  });\n  /* eslint-enable */\n};\n","/* global google */\n\nimport {\n  createBaseConnectorClass,\n  CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\nimport { initGoogleMapsLoader } from './googleScriptInit';\n\nexport class GoogleMapsConnector extends createBaseConnectorClass() {\n  #autocompleteService = null;\n\n  #initializationPromise = null;\n\n  constructor(getAttribute) {\n    super(getAttribute);\n    // Start initialization but don't block constructor\n    this.#initializationPromise = this.#initializeAutocompleteService();\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getRequiredParams() {\n    return ['public-api-key'];\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getOptionalParams() {\n    return [\n      {\n        key: 'includedPrimaryTypes',\n        attribute: 'address-types',\n      },\n      {\n        key: 'language',\n        attribute: 'address-language',\n      },\n      {\n        key: 'region',\n        attribute: 'address-region',\n      },\n    ];\n  }\n\n  async #initializeAutocompleteService() {\n    const apiKey = this.getAttribute('public-api-key');\n    if (this.#autocompleteService || !apiKey) {\n      return;\n    }\n\n    try {\n      initGoogleMapsLoader(apiKey);\n\n      const { AutocompleteSuggestion } =\n        await google.maps.importLibrary('places');\n      this.#autocompleteService = AutocompleteSuggestion;\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error(\n        'Failed to initialize Google Maps Autocomplete service:',\n        error,\n      );\n      throw error;\n    }\n  }\n\n  async _fetchResults(query) {\n    if (!query?.trim()) {\n      return { results: [] };\n    }\n\n    try {\n      await this.#initializationPromise;\n\n      const request = {\n        input: query,\n      };\n\n      // Add optional parameters\n      this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n        const value = this.getAttribute(attribute) || defaultValue;\n        if (value) {\n          if (key === 'includedPrimaryTypes') {\n            request[key] = value\n              .split(',')\n              .map((type) => type.trim())\n              .filter(Boolean);\n          } else {\n            request[key] = value;\n          }\n        }\n      });\n\n      const { suggestions } =\n        await this.#autocompleteService.fetchAutocompleteSuggestions(request);\n      return this.#parseResponse(suggestions);\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error('Google Maps Places Autocomplete failed:', error);\n      return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #parseResponse(suggestions) {\n    if (!suggestions?.length) {\n      return { results: [] };\n    }\n\n    return {\n      results: suggestions.map((suggestion) => {\n        const prediction = suggestion.placePrediction;\n        return {\n          id: prediction.placeId,\n          label: prediction.text.text,\n          value: prediction.text.text,\n        };\n      }),\n    };\n  }\n}\n","import {\n  createBaseConnectorClass,\n  CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\n\nconst RADAR_AUTOCOMPLETE_URL = 'https://api.radar.io/v1/search/autocomplete';\n\nexport class RadarConnector extends createBaseConnectorClass() {\n  // eslint-disable-next-line class-methods-use-this\n  getRequiredParams() {\n    return ['public-api-key'];\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getOptionalParams() {\n    return [\n      {\n        key: 'layers',\n        attribute: 'address-types',\n      },\n      {\n        key: 'limit',\n        attribute: 'address-limit',\n      },\n      {\n        key: 'lang',\n        attribute: 'address-language',\n      },\n      {\n        key: 'countryCode',\n        attribute: 'address-region',\n      },\n    ];\n  }\n\n  async _fetchResults(query) {\n    if (!query?.trim()) {\n      return { results: [] };\n    }\n\n    const apiKey = this.getAttribute('public-api-key');\n    const params = new URLSearchParams({\n      query: query.trim(),\n    });\n\n    // Add optional parameters\n    this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n      const value = this.getAttribute(attribute) || defaultValue;\n      if (value) {\n        if (key === 'layers' || key === 'countryCode') {\n          params.append(\n            key,\n            value\n              .split(',')\n              .map((type) => type.trim())\n              .filter(Boolean)\n              .join(','),\n          );\n        } else {\n          params.append(key, value);\n        }\n      }\n    });\n\n    try {\n      const response = await fetch(\n        `${RADAR_AUTOCOMPLETE_URL}?${params.toString()}`,\n        {\n          headers: {\n            Authorization: apiKey,\n          },\n        },\n      );\n\n      if (!response.ok) {\n        throw new Error(`Radar API returned ${response.status}`);\n      }\n\n      const data = await response.json();\n      return this.#parseResponse(data);\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error('Radar Places Autocomplete failed:', error);\n      return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  #parseResponse(data) {\n    if (!data?.addresses?.length) {\n      return { results: [] };\n    }\n    return {\n      results: data.addresses.map((address) => ({\n        label: address.formattedAddress,\n        value: address.formattedAddress,\n      })),\n    };\n  }\n}\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n  getComponentName,\n  forwardAttrs,\n  syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { connectorMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { GoogleMapsConnector, RadarConnector } from '../../connectors';\n\nexport const componentName = getComponentName('address-field-internal');\n\nconst GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';\nconst RADAR_CONNECTOR_TEMPLATE = 'radar';\n\nconst CONNECTOR_CLASSES = {\n  [GOOGLE_MAPS_CONNECTOR_TEMPLATE]: GoogleMapsConnector,\n  [RADAR_CONNECTOR_TEMPLATE]: RadarConnector,\n};\n\nconst BaseInputClass = createBaseInputClass({\n  componentName,\n  baseSelector: '',\n});\nconst initConnectorAttrs = ['public-api-key'];\nconst observedAttrs = [...initConnectorAttrs];\n\nclass RawAddressFieldInternal extends BaseInputClass {\n  static get observedAttributes() {\n    return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n  }\n\n  get errorMsgValueMissing() {\n    return (\n      this.getAttribute('data-errormessage-value-missing') ||\n      this.defaultErrorMsgValueMissing\n    );\n  }\n\n  constructor() {\n    super();\n\n    this.innerHTML = `\n    <div>\n      <descope-autocomplete-field></descope-autocomplete-field>\n    </div>\n    `;\n\n    this.autocompleteField = this.querySelector('descope-autocomplete-field');\n  }\n\n  get value() {\n    return this.autocompleteField.value;\n  }\n\n  set value(val) {\n    this.autocompleteField.value = val;\n  }\n\n  focus() {\n    this.autocompleteField.focus();\n  }\n\n  init() {\n    // This event listener needs to be placed before the super.init() call\n    this.addEventListener('focus', (e) => {\n      // we want to ignore focus events we are dispatching\n      if (e.isTrusted) this.autocompleteField.focus();\n    });\n\n    super.init?.();\n    this.initAutocomplete();\n  }\n\n  initAutocomplete() {\n    forwardAttrs(this, this.autocompleteField, {\n      includeAttrs: [\n        'size',\n        'bordered',\n        'label',\n        'label-type',\n        'placeholder',\n        'disabled',\n        'readonly',\n        'required',\n        'full-width',\n        'helper-text',\n        'error-message',\n        'default-value',\n        'data-errormessage-value-missing',\n        'st-host-direction',\n        'allow-custom-value',\n        'min-search-length',\n        'st-error-message-icon',\n        'st-error-message-icon-size',\n        'st-error-message-icon-padding',\n      ],\n    });\n    // This is required since when we remove the invalid attribute from the autocomplete field,\n    // we want to reflect the change in the address field component\n    syncAttrs(this, this.autocompleteField, { includeAttrs: ['invalid'] });\n\n    // Bind the connector fetch results fn to the autocomplete field\n    this.autocompleteField.fetchResults = this.fetchConnectorResults.bind(this);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (initConnectorAttrs.includes(attrName)) {\n        this.initializeConnector();\n      }\n    }\n  }\n\n  getValidity() {\n    if (this.isRequired && !this.value) {\n      return { valueMissing: true };\n    }\n    return { valid: true };\n  }\n}\n\nexport const AddressFieldInternal = compose(\n  connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),\n)(RawAddressFieldInternal);\n","import {\n  createStyleMixin,\n  draggableMixin,\n  createProxy,\n  proxyInputMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n  getComponentName,\n  forwardAttrs,\n  syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { componentName as descopeInternalComponentName } from './descope-address-field-internal/AddressFieldInternal';\n\nexport const componentName = getComponentName('address-field');\n\nconst customMixin = (superclass) =>\n  class AddressFieldMixinClass extends superclass {\n    get defaultValue() {\n      return this.getAttribute('default-value');\n    }\n\n    setDefaultValue() {\n      if (this.defaultValue) {\n        setTimeout(() => {\n          this.inputElement.value = this.defaultValue;\n        });\n      }\n    }\n\n    set connectorClasses(value) {\n      this.inputElement.connectorClasses = value;\n    }\n\n    get connectorClasses() {\n      return this.inputElement.connectorClasses;\n    }\n\n    init() {\n      super.init?.();\n      const template = document.createElement('template');\n\n      template.innerHTML = `\n      <${descopeInternalComponentName}\n        tabindex=\"-1\"\n      ></${descopeInternalComponentName}>\n      `;\n\n      this.baseElement.appendChild(template.content.cloneNode(true));\n\n      this.inputElement = this.shadowRoot.querySelector(\n        descopeInternalComponentName,\n      );\n\n      forwardAttrs(this, this.inputElement, {\n        includeAttrs: [\n          'size',\n          'bordered',\n          'label',\n          'required',\n          'label-type',\n          'placeholder',\n          'full-width',\n          'allow-custom-value',\n          'min-search-length',\n          'no-results-message',\n          'error-fetching-results-message',\n          'data-errormessage-value-missing',\n          'invalid',\n          'error-message',\n          'readonly',\n          'disabled',\n          'st-host-direction',\n          'st-error-message-icon',\n          'st-error-message-icon-size',\n          'st-error-message-icon-padding',\n          'connector-template',\n          'public-api-key',\n          'address-types',\n          'address-language',\n          'address-region',\n          'address-limit',\n        ],\n      });\n\n      // This is required since when we remove the invalid attribute from the internal mappings field,\n      // we want to reflect the change in the parent component\n      syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n      this.setDefaultValue();\n    }\n  };\n\nconst { host } = {\n  host: { selector: () => ':host' },\n};\n\nexport const AddressFieldClass = compose(\n  createStyleMixin({\n    componentNameOverride: getComponentName('input-wrapper'),\n  }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n    },\n  }),\n  draggableMixin,\n  proxyInputMixin({\n    proxyProps: ['value', 'selectionStart'],\n    inputEvent: 'input',\n    proxyParentValidation: true,\n  }),\n  componentNameValidationMixin,\n  customMixin,\n)(\n  createProxy({\n    slots: [],\n    wrappedEleName: 'vaadin-custom-field',\n    style: () => `\n  :host {\n    display: inline-flex;\n    max-width: 100%;\n    direction: ltr;\n  }\n  vaadin-custom-field {\n    line-height: unset;\n    width: 100%;\n  }\n\n  ${descopeInternalComponentName} {\n    display: inline-block;\n    box-sizing: border-box;\n    user-select: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  ${descopeInternalComponentName} ::slotted {\n    padding: 0;\n  }\n`,\n    excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],\n    componentName,\n  }),\n);\n","import { AddressFieldClass } from './component/AddressFieldClass';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst vars = AddressFieldClass.cssVarList;\n\nconst addressField = {\n  [vars.hostWidth]: refs.width,\n  [vars.hostDirection]: refs.direction,\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default addressField;\nexport { vars };\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgdmlld0JveD0iMCAwIDEwNCAxMDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC4zMzM0IDAuMzMzMjUyQzIyLjgzMzQgMC4zMzMyNTIgMC4zMzMzNzQgMjIuODMzMyAwLjMzMzM3NCA1MC4zMzMzQzAuMzMzMzc0IDc3LjgzMzMgMjIuODMzNCAxMDAuMzMzIDUwLjMzMzQgMTAwLjMzM0M3Ny44MzM0IDEwMC4zMzMgMTAwLjMzMyA3Ny44MzMzIDEwMC4zMzMgNTAuMzMzM0MxMDAuMzMzIDIyLjgzMzMgNzcuODMzNCAwLjMzMzI1MiA1MC4zMzM0IDAuMzMzMjUyWk01MC4zMzM0IDg3LjgzMzNDMjkuNzA4NCA4Ny44MzMzIDEyLjgzMzQgNzAuOTU4MyAxMi44MzM0IDUwLjMzMzNDMTIuODMzNCAyOS43MDgzIDI5LjcwODQgMTIuODMzMyA1MC4zMzM0IDEyLjgzMzNDNzAuOTU4NCAxMi44MzMzIDg3LjgzMzQgMjkuNzA4MyA4Ny44MzM0IDUwLjMzMzNDODcuODMzNCA3MC45NTgzIDcwLjk1ODQgODcuODMzMyA1MC4zMzM0IDg3LjgzMzNaIiBmaWxsPSIjMTgxQTFDIi8+CjxwYXRoIGQ9Ik01MC4zMzI4IDE5LjA4MzNINDQuMDgyOFY1Ni41ODMySDc1LjMzMjhWNTAuMzMzMkg1MC4zMzI4VjE5LjA4MzNaIiBmaWxsPSIjMTgxQTFDIi8+Cjwvc3ZnPgo=\"","const fmt = (val, pad = 2) => String(val).padStart(pad, '0');\n\nexport const formatTime = (ms = 0) => {\n  const totalSeconds = Math.floor(ms / 1000);\n\n  const secondsInMinute = 60;\n  const secondsInHour = secondsInMinute * 60;\n\n  const hours = Math.floor(totalSeconds / secondsInHour);\n  const minutes = Math.floor((totalSeconds % secondsInHour) / secondsInMinute);\n  const seconds = totalSeconds % secondsInMinute;\n\n  const timeParts = [...(hours ? [fmt(hours)] : []), fmt(minutes), fmt(seconds)];\n\n  return timeParts.join(':');\n};\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport clockIcon from './clock.svg';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { formatTime } from './helpers';\n\nexport const componentName = getComponentName('timer');\n\nconst observedAttributes = ['seconds', 'hide-icon', 'paused'];\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: ':host > .wrapper',\n});\n\nconst DEFAULT_INTERVAL = 1000;\n\nclass RawTimer extends BaseClass {\n  #timeRemains = 0;\n\n  #intervalId;\n\n  static get observedAttributes() {\n    return observedAttributes.concat(BaseClass.observedAttributes || []);\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"wrapper\">\n        <descope-icon src=\"${clockIcon}\" class=\"icon\"></descope-icon>\n        <div class=\"timer\"></div>\n      </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n        user-select: none;\n        -webkit-user-select: none;\n      }\n      .wrapper {\n        display: flex;\n        align-items: center;\n        flex-direction: row;\n        width: 100%;\n      }\n      .hidden {\n        display: none;\n      }\n    `,\n      this,\n    );\n\n    this.icon = this.shadowRoot.querySelector('.icon');\n    this.timer = this.shadowRoot.querySelector('.timer');\n  }\n\n  get seconds() {\n    const val = this.getAttribute('seconds');\n    const secs = parseInt(val || 0, 10) * 1000;\n    return Math.max(0, secs);\n  }\n\n  // we use `pause` attribute for allowing preview mode by executing `pause`\n  get isPaused() {\n    return this.getAttribute('paused') === 'true';\n  }\n\n  init() {\n    super.init?.();\n\n    this.#timeRemains = this.seconds;\n  }\n\n  startInterval() {\n    const intervalCycle = () => {\n      this.#decreaseInterval();\n      if (!this.#timeRemains) this.stop();\n      this.#updateDisplay(this.#timeRemains);\n    };\n\n    if (this.#timeRemains) {\n      this.#intervalId = setInterval(intervalCycle, DEFAULT_INTERVAL);\n    } else {\n      this.stop();\n    }\n  }\n\n  stopInterval() {\n    clearInterval(this.#intervalId);\n  }\n\n  #decreaseInterval() {\n    this.#timeRemains = this.#timeRemains - DEFAULT_INTERVAL;\n  }\n\n  reset() {\n    this.#timeRemains = this.seconds;\n    this.#updateDisplay(this.#timeRemains);\n\n    if (this.isPaused) return;\n\n    this.dispatchEvent(new CustomEvent('timer-started', { bubbles: true }));\n    this.startInterval();\n  }\n\n  stop() {\n    this.stopInterval();\n    this.#timeRemains = 0;\n    this.#updateDisplay(this.#timeRemains);\n    this.dispatchEvent(new CustomEvent('timer-ended', { bubbles: true }));\n  }\n\n  pause() {\n    this.setAttribute('paused', 'true');\n    this.stopInterval();\n  }\n\n  resume() {\n    this.removeAttribute('paused');\n    this.startInterval();\n  }\n\n  #updateDisplay(val) {\n    this.timer.textContent = formatTime(val);\n  }\n\n  #toggleIcon(val) {\n    this.icon.classList.toggle('hidden', val);\n  }\n\n  #handlePause(paused) {\n    setTimeout(() => {\n      if (paused) {\n        this.pause();\n      } else {\n        // we want to prevent a another interval from starting in case previous interval was not yet cleared\n        if (!this.#intervalId) {\n          this.resume();\n        }\n      }\n    });\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (newValue !== oldValue) {\n      if (attrName === 'seconds') {\n        this.reset();\n      }\n      if (attrName === 'hide-icon') {\n        this.#toggleIcon(newValue === 'true');\n      }\n      if (attrName === 'paused') {\n        this.#handlePause(newValue === 'true');\n      }\n    }\n  }\n}\n\nconst { host, icon, timer } = {\n  host: { selector: () => ':host' },\n  icon: { selector: () => '.icon' },\n  timer: { selector: () => '.timer' },\n};\n\nexport const TimerClass = compose(\n  createStyleMixin({\n    mappings: {\n      fontSize: {},\n      iconSize: [\n        { ...icon, property: 'width' },\n        { ...icon, property: 'height' },\n      ],\n      fontFamily: {},\n      minHeight: {},\n      fontWeight: { ...timer },\n      lineHeight: { ...timer },\n      textColor: { ...timer, property: 'color' },\n      gap: {},\n      textAlign: { property: 'justify-content' },\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n      iconColor: { ...icon, property: IconClass.cssVarList.fill },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawTimer);\n","import globals from '@descope-ui/theme-globals';\nimport { TimerClass } from './component/TimerClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TimerClass.cssVarList;\n\nconst timer = {\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.gap]: '0.25em',\n  [vars.fontFamily]: globalRefs.fonts.font1.family,\n  [vars.minHeight]: '1.5em',\n  [vars.lineHeight]: '1em',\n  [vars.fontWeight]: globalRefs.fonts.font1.fontWeight,\n  [vars.textColor]: globalRefs.colors.surface.contrast,\n  [vars.iconColor]: globalRefs.colors.surface.contrast,\n  [vars.iconSize]: '1em',\n\n  size: {\n    xs: { [vars.fontSize]: '12px' },\n    sm: { [vars.fontSize]: '14px' },\n    md: { [vars.fontSize]: '16px' },\n    lg: { [vars.fontSize]: '18px' },\n  },\n\n  textAlign: {\n    right: { [vars.textAlign]: 'right' },\n    left: { [vars.textAlign]: 'left' },\n    center: { [vars.textAlign]: 'center' },\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default timer;\n\nexport { vars };\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  forwardAttrs,\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('timer-button');\n\nconst buttonAttrs = [\n  'button-variant',\n  'button-mode',\n  'size',\n  'text-align',\n  'full-width',\n];\n\nconst mapButtonAttrs = {\n  'button-variant': 'variant',\n  'button-mode': 'mode',\n};\n\nconst timerAttrs = [\n  'timer-seconds',\n  'timer-hide-icon',\n  'timer-paused',\n  'size',\n  'text-align',\n  'full-width',\n];\n\nconst mapTimerAttrs = {\n  'timer-seconds': 'seconds',\n  'timer-hide-icon': 'hide-icon',\n  'timer-paused': 'paused',\n};\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: ':host > div',\n});\n\nclass RawTimerButton extends BaseClass {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"wrapper\">\n        <descope-timer class=\"timer\"></descope-timer>\n        <descope-button class=\"button\" disabled=\"true\">\n          <slot></slot>\n        </descope-button>\n      </div>\n\t\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n      .wrapper {\n        display: flex;\n        flex-direction: column;\n        gap: 0.5em;\n        align-items: center;\n        width: 100%;\n      }\n      .timer {\n        flex: 1;\n      }\n    `,\n      this,\n    );\n\n    this.timer = this.shadowRoot.querySelector('.timer');\n    this.button = this.shadowRoot.querySelector('.button');\n\n    this.timer.addEventListener('timer-started', () => this.onTimerStarted());\n    this.timer.addEventListener('timer-ended', () => this.onTimerEnded());\n\n    this.button.addEventListener('click', this.onClick.bind(this));\n  }\n\n  set onclick(val) {\n    this.button.onclick = val;\n  }\n\n  init() {\n    super.init?.();\n\n    forwardAttrs(this, this.button, {\n      includeAttrs: buttonAttrs,\n      mapAttrs: mapButtonAttrs,\n    });\n\n    forwardAttrs(this, this.timer, {\n      includeAttrs: timerAttrs,\n      mapAttrs: mapTimerAttrs,\n    });\n\n    // When we sync attributes, the `disabled` attribute is being compared to the attribute\n    // on Vaadin component; since the Vaadin component has no `disabled` attribute, we sync\n    // that back to our component.\n    // This is pending a more generic fix in the way we sync attibutes.\n    this.button.shadowRoot\n      .querySelector('vaadin-button')\n      .setAttribute('disabled', 'true');\n  }\n\n  onTimerStarted() {\n    this.toggleButtonDisable(true);\n  }\n\n  onTimerEnded() {\n    this.toggleButtonDisable(false);\n  }\n\n  onClick() {\n    this.timer.reset();\n  }\n\n  toggleButtonDisable(isDisabled) {\n    setTimeout(() => {\n      isDisabled\n        ? this.button.setAttribute('disabled', 'true')\n        : this.button.removeAttribute('disabled');\n    });\n  }\n}\n\nconst { host } = {\n  host: { selector: () => ':host' },\n  icon: { selector: '.icon' },\n  timer: { selector: '.timer' },\n};\n\nexport const TimerButtonClass = compose(\n  createStyleMixin({\n    mappings: {\n      gap: {},\n      flexDirection: {},\n      hostWidth: { ...host, property: 'width' },\n      hostDirection: { ...host, property: 'direction' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawTimerButton);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { TimerButtonClass } from './component/TimerButtonClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TimerButtonClass.cssVarList;\n\nconst timerButton = {\n  [vars.gap]: globalRefs.spacing.sm,\n  [vars.flexDirection]: 'column',\n\n  _horizontal: {\n    [vars.flexDirection]: 'row',\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default timerButton;\n\nexport { vars };\n","import { createBaseClass } from '@descope-ui/common/base-classes';\nimport {\n  getComponentName,\n  injectStyle\n} from '@descope-ui/common/components-helpers';\nimport {\n  componentNameValidationMixin,\n  createStyleMixin,\n  draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('password-strength');\nclass RawPasswordStrength extends createBaseClass({\n  componentName,\n  baseSelector: ':host > .wrapper',\n}) {\n  static get observedAttributes() {\n    return ['options', 'value'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"wrapper\">\n        <div class=\"bars-container\"></div>\n        <div class=\"text-container\">\n        </div>\n      </div>\n\t\t`;\n\n    injectStyle(`\n        :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n        .wrapper {\n          display: inline-flex;\n          position: relative;\n          flex-direction: column;\n          width: 100%;\n          height: 100%;\n          align-items: flex-start;\n        }\n\n        .bar {\n          flex-grow: 1;\n        }\n\n        .bars-container {\n          display: flex;\n          flex-grow: 1;\n          width: 100%;\n        }\n    `, this);\n\n    this.barsContainer = this.shadowRoot.querySelector('.bars-container');\n    this.textContainer = this.shadowRoot.querySelector('.text-container');\n  }\n\n  get options() {\n    return this.getAttribute('options')?.split(',') || [];\n  }\n\n  // we need to have the option to take the zxcvbn from outside the component\n  getCalcScoreFn = () => import('./calcScore').then(module => module.default);\n\n  #score = -1;\n\n  async calcScore() {\n    const value = this.getAttribute('value') || ''\n    if (!value) return -1;\n\n    const calcScore = await this.getCalcScoreFn();\n\n    return calcScore(value).score;\n  }\n\n  renderBars() {\n    this.barsContainer.innerHTML = '';\n    this.bars = this.options.map((option, index) => {\n      const bar = document.createElement('div');\n      bar.classList.add('bar');\n      bar.classList.toggle('filled', index <= this.#score);\n      this.barsContainer.appendChild(bar);\n\n      return bar;\n    });\n  }\n\n  init() {\n    super.init?.();\n    // we are prefetching the calcScore function\n    this.getCalcScoreFn();\n  }\n\n\n  async onValueChange() {\n    const newScore = await this.calcScore();\n    if (newScore === this.#score) return;\n\n    this.#score = newScore;\n    this.dispatchEvent(new CustomEvent('score-changed', { bubbles: true, composed: true, detail: this.#score }));\n\n    this.bars?.forEach((bar, index) => {\n      bar.classList.toggle('filled', index <= this.#score);\n    });\n\n    this.textContainer.innerHTML = this.options[this.#score] || '';\n\n    if (this.#score === -1) this.removeAttribute('score');\n    else this.setAttribute('score', this.#score);\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (oldValue === newValue) return;\n\n    if (name === 'options') {\n      return this.renderBars();\n    }\n\n    if (name === 'value') {\n      return this.onValueChange();\n    }\n  }\n}\n\nconst { host, bar, filledBar, barsContainer, text } = {\n  host: { selector: () => ':host' },\n  bar: { selector: ' .bar' },\n  barsContainer: { selector: ' .bars-container' },\n  filledBar: { selector: ' .bar.filled' },\n  text: { selector: ' .text-container' },\n};\n\nexport const PasswordStrengthClass = compose(\n  createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n  createStyleMixin({\n    mappings: {\n      hostWidth: [\n        { ...host, property: 'width' },\n        { ...host, property: 'min-width' },\n      ],\n      hostDirection: { ...host, property: 'direction' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      barHeight: { ...bar, property: 'height' },\n      barBorderRadius: { ...bar, property: 'border-radius' },\n      emptyBarColor: { ...bar, property: 'background-color' },\n      filledBarColor: { ...filledBar, property: 'background-color' },\n      textColor: { ...text, property: 'color' },\n      spacing: { property: 'gap' },\n      barSpacing: { ...barsContainer, property: 'gap' },\n      fontSize: {},\n      fontWeight: {},\n      fontFamily: {},\n      barTransition: { ...bar, property: 'transition' },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawPasswordStrength);\n","import globals from '@descope-ui/theme-globals';\nimport { PasswordStrengthClass } from './component/PasswordStrengthClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = PasswordStrengthClass.cssVarList;\n\nconst passwordStrength = {\n  [compVars.hostDirection]: globalRefs.direction,\n  [compVars.barHeight]: '4px',\n  [compVars.barTransition]: 'background-color 0.3s',\n  [compVars.barBorderRadius]: globalRefs.radius.sm,\n  [compVars.hostMinWidth]: refs.minWidth,\n  [compVars.barSpacing]: globalRefs.spacing.sm,\n  [compVars.emptyBarColor]: globalRefs.colors.surface.light,\n  [compVars.fontFamily]: refs.fontFamily,\n  [compVars.fontSize]: refs.labelFontSize,\n  [compVars.fontWeight]: refs.labelFontWeight,\n  [compVars.spacing]: globalRefs.spacing.sm,\n  _fullWidth: {\n    [compVars.hostWidth]: '100%',\n  },\n  score : {\n    0: {\n      [compVars.filledBarColor]: globalRefs.colors.error.light,\n      [compVars.textColor]: globalRefs.colors.error.light,\n    },\n    1: {\n      [compVars.filledBarColor]: globalRefs.colors.error.main,\n      [compVars.textColor]: globalRefs.colors.error.main,\n    },\n    2: {\n      [compVars.filledBarColor]: globalRefs.colors.error.dark,\n      [compVars.textColor]: globalRefs.colors.error.dark,\n    },\n    3: {\n      [compVars.filledBarColor]: globalRefs.colors.success.dark,\n      [compVars.textColor]: globalRefs.colors.success.dark,\n    },\n    4: {\n      [compVars.filledBarColor]: globalRefs.colors.success.main,\n      [compVars.textColor]: globalRefs.colors.success.main,\n    },\n  }\n};\n\nexport default passwordStrength;\n\nexport const vars = {\n  ...compVars,\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+Cjwvc3ZnPgo=\"","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  forwardAttrs,\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport chevronIcon from './chevron.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('collapsible-container');\n\nclass RawCollapsibleContainer extends createBaseClass({\n  componentName,\n  baseSelector: 'slot',\n}) {\n  static get observedAttributes() {\n    return ['collapsed', 'collapsible', 'text'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"wrapper\">\n      <descope-text st-host-direction=\"ltr\">\n        <div class=\"header\">\n          <div class=\"icon\">\n            <descope-icon st-fill=\"currentcolor\" src=${chevronIcon}></descope-icon>\n          </div>\n          <span></span>\n        </div>\n      </descope-text>\n      <div class=\"content\">\n        <slot></slot>\n      </div>\n    </div>\n\t`;\n\n    injectStyle(\n      `\n      div.content {\n        transition-property: max-height;\n        overflow: auto;\n        height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n      slot:focus-visible {\n        outline: none;\n      }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n      .header {\n          user-select: none;\n          display: flex;\n          align-items: baseline;\n      }\n      .icon {\n          flex-shrink: 0;\n          height: var(${TextClass.cssVarList.textLineHeight});\n          min-height: 24px;\n          display: flex;\n          align-items: center;\n      }\n      descope-icon {\n          transition-property: transform;\n      }\n      .rotate {\n          transform: rotate(-180deg);\n      }\n      descope-text {\n        width: 100%;\n        display: flex;\n      }\n      span {\n        align-self: center;\n        word-break: break-word;\n      }\n      span:empty {\n        display: none;\n      }\n      .wrapper {\n        overflow: hidden;\n        display: inline-flex;\n        width: 100%;\n        flex-direction: column;\n      }\n  `,\n      this,\n    );\n\n    this.header = this.shadowRoot.querySelector('.header');\n    this.content = this.shadowRoot.querySelector('div.content');\n    this.icon = this.header.querySelector('descope-icon');\n    this.headerText = this.header.querySelector('span');\n    this.textComponent = this.shadowRoot.querySelector('descope-text');\n  }\n\n  get isCollapsible() {\n    return this.getAttribute('collapsible') === 'true';\n  }\n\n  calcContentHeight() {\n    return this.content.offsetHeight || this.content.scrollHeight;\n  }\n\n  get isCollapsed() {\n    return this.getAttribute('collapsed') === 'true';\n  }\n\n  toggle() {\n    this.setAttribute('collapsed', this.isCollapsed ? 'false' : 'true');\n  }\n\n  collapse(animated = false) {\n    const final = () => {\n      this.content.style.maxHeight = '0px';\n    };\n    this.icon.classList.add('rotate');\n    if (!animated) return final();\n\n    this.content.style.maxHeight = this.calcContentHeight() + 'px';\n    setTimeout(final);\n  }\n\n  expand(animated = false) {\n    const final = () => {\n      this.content.style.maxHeight = '';\n    };\n    this.icon.classList.remove('rotate');\n    if (!animated) return final();\n\n    this.content.addEventListener('transitionend', final, { once: true });\n    this.content.style.maxHeight = this.calcContentHeight() + 'px';\n  }\n\n  #isComponentMounted = false;\n\n  init() {\n    super.init?.();\n    // we want to animate the collapse/expand only after the first time the component is connected\n    // so when setting a default value for the collapsed attribute, it will not animate\n    this.#isComponentMounted = true;\n\n    this.header.addEventListener('click', () => {\n      if (!this.isCollapsible) return;\n      this.toggle();\n    });\n    forwardAttrs(this, this.textComponent, {\n      includeAttrs: ['text-align', 'text-variant', 'text-mode'],\n      mapAttrs: { 'text-mode': 'mode', 'text-variant': 'variant' },\n    });\n  }\n\n  updateHeaderText() {\n    const text = this.getAttribute('text') || '';\n    this.headerText.innerText = text;\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === 'text') {\n      this.updateHeaderText();\n      return;\n    }\n    const collapsed = this.isCollapsed && this.isCollapsible;\n    if (collapsed) {\n      this.collapse(this.#isComponentMounted);\n    } else {\n      this.expand(this.#isComponentMounted);\n    }\n  }\n}\n\nconst selectors = {\n  host: () => ':host',\n  icon: () => 'descope-icon',\n  iconWrapper: () => '.icon',\n  header: () => '.header',\n  text: () => 'span',\n  wrapper: () => '.wrapper',\n  content: () => 'div.content',\n};\n\nexport const CollapsibleContainerClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: selectors.host, property: 'width' },\n      hostDirection: { selector: selectors.host, property: 'direction' },\n      verticalPadding: [\n        { selector: selectors.wrapper, property: 'padding-top' },\n        { selector: selectors.wrapper, property: 'padding-bottom' },\n      ],\n      horizontalPadding: [\n        { selector: selectors.wrapper, property: 'padding-left' },\n        { selector: selectors.wrapper, property: 'padding-right' },\n      ],\n\n      flexDirection: {},\n      justifyContent: {},\n      alignItems: {},\n      gap: [{}, { property: 'margin-top' }],\n\n      backgroundColor: { selector: selectors.wrapper },\n      backgroundImage: { selector: selectors.wrapper },\n      backgroundPositionX: { selector: selectors.wrapper },\n      backgroundPositionY: { selector: selectors.wrapper },\n      backgroundSize: { selector: selectors.wrapper },\n      backgroundRepeat: { selector: selectors.wrapper },\n\n      borderRadius: { selector: selectors.wrapper },\n      borderColor: { selector: selectors.wrapper },\n      borderStyle: { selector: selectors.wrapper },\n      borderWidth: { selector: selectors.wrapper },\n\n      boxShadow: { selector: selectors.wrapper },\n\n      headerIconOrder: { selector: selectors.iconWrapper, property: 'order' },\n      headerCursor: { selector: selectors.header, property: 'cursor' },\n      headerGap: { selector: selectors.header, property: 'gap' },\n      textGrow: { selector: selectors.text, property: 'flex-grow' },\n      textDirection: { selector: selectors.text, property: 'direction' },\n      iconAnimationDuration: {\n        selector: selectors.icon,\n        property: 'transition-duration',\n      },\n      contentAnimationDuration: {\n        selector: selectors.content,\n        property: 'transition-duration',\n      },\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawCollapsibleContainer);\n","import { CollapsibleContainerClass, componentName } from './component/CollapsibleContainerClass';\nimport globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\n\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = CollapsibleContainerClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n  {\n    shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format\n  },\n  componentName\n);\n\nconst { shadowColor } = helperRefs;\n\nconst collapsibleContainer = {\n  ...helperTheme,\n\n  [compVars.hostWidth]: '100%',\n  [compVars.boxShadow]: 'none',\n\n  [compVars.backgroundColor]: globalRefs.colors.surface.main,\n\n  [compVars.backgroundImage]: '', // we need to set a value to avoid inner containers from inheriting the parent's background image\n  [compVars.backgroundPositionX]: 'center',\n  [compVars.backgroundPositionY]: 'center',\n  [compVars.backgroundSize]: 'cover',\n  [compVars.backgroundRepeat]: 'no-repeat',\n\n  [compVars.borderRadius]: '0px',\n  [compVars.hostDirection]: globalRefs.direction,\n\n  [compVars.flexDirection]: 'column',\n  [compVars.alignItems]: 'flex-start',\n  [compVars.justifyContent]: 'flex-start',\n\n  [compVars.headerGap]: globalRefs.spacing.md,\n\n  [compVars.iconAnimationDuration]: '0.1s',\n  [compVars.contentAnimationDuration]: '0.1s',\n\n  [compVars.borderWidth]: '0px',\n  [compVars.textGrow]: '0',\n\n  verticalPadding: {\n    sm: { [compVars.verticalPadding]: '5px' },\n    md: { [compVars.verticalPadding]: '10px' },\n    lg: { [compVars.verticalPadding]: '20px' },\n  },\n\n  horizontalPadding: {\n    sm: { [compVars.horizontalPadding]: '5px' },\n    md: { [compVars.horizontalPadding]: '10px' },\n    lg: { [compVars.horizontalPadding]: '20px' },\n  },\n\n  spaceBetween: {\n    sm: { [compVars.gap]: '10px' },\n    md: { [compVars.gap]: '20px' },\n    lg: { [compVars.gap]: '30px' },\n  },\n\n  shadow: {\n    sm: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n    },\n    md: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.md} ${shadowColor}, ${globalRefs.shadow.narrow.md} ${shadowColor}`,\n    },\n    lg: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.lg} ${shadowColor}, ${globalRefs.shadow.narrow.lg} ${shadowColor}`,\n    },\n    xl: {\n      [compVars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n    },\n    '2xl': {\n      [helperVars.shadowColor]: '#00000050', // mimic daisyUI shadow settings\n      [compVars.boxShadow]: `${globalRefs.shadow.wide['2xl']} ${shadowColor}`,\n    },\n  },\n\n  borderRadius: {\n    sm: { [compVars.borderRadius]: globalRefs.radius.sm },\n    md: { [compVars.borderRadius]: globalRefs.radius.md },\n    lg: { [compVars.borderRadius]: globalRefs.radius.lg },\n    xl: { [compVars.borderRadius]: globalRefs.radius.xl },\n    '2xl': { [compVars.borderRadius]: globalRefs.radius['2xl'] },\n    '3xl': { [compVars.borderRadius]: globalRefs.radius['3xl'] },\n  },\n\n  iconPosition: {\n    'left': { [compVars.headerIconOrder]: '0' },\n    'right': { [compVars.headerIconOrder]: '1' },\n  },\n\n  _fillTitle: {\n    [compVars.textGrow]: '1',\n  },\n\n  _border: {\n    [compVars.borderColor]: globalRefs.colors.surface.light,\n    [compVars.borderWidth]: globalRefs.border.xs,\n    [compVars.borderStyle]: 'solid',\n  },\n\n  _collapsible: {\n    [compVars.headerCursor]: 'pointer',\n  }\n};\n\nexport default collapsibleContainer;\n\nexport const vars = {\n  ...compVars,\n  ...helperVars,\n};\n","import {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n  forwardAttrs,\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('recovery-codes');\n\nconst itemRenderer = ({ value }, _, ref) => {\n  return `\n    <descope-text variant=\"${ref.variant}\" mode=\"${ref.mode}\">\n      <span>${value}</span>\n    </descope-text>\n  `;\n};\n\nclass RawRecoveryCodes extends createBaseClass({\n  componentName,\n  baseSelector: ':host > div',\n}) {\n  static get observedAttributes() {\n    return ['readonly'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <div class=\"wrapper\">\n        <div class=\"list\"></div>\n        <descope-text class=\"icon-wrapper\">\n          <vaadin-icon class=\"icon\" icon=\"vaadin:copy-o\" title=\"Copy\"></vaadin-icon>\n        </descope-text>\n      </div>\n    `;\n\n    this.list = this.shadowRoot.querySelector('.list');\n    this.icon = this.shadowRoot.querySelector('.icon')\n    this.iconWrapper = this.shadowRoot.querySelector('.icon-wrapper')\n\n    injectStyle(\n      `\n      :host {\n        display: inline-block;\n        position: relative;\n      }\n      .wrapper {\n        display: flex;\n        justify-content: space-between;\n      }\n      .list {\n        display: flex;\n        flex-grow: 1;\n        flex-direction: column;\n      }\n      descope-text span {\n        display: inline-flex;\n        align-items: center;\n        width: fit-content;\n      }\n      descope-text span::before {\n        content: '\\\\02022';\n        transform: translateY(-0.06em);\n      }\n      .icon-wrapper {\n        align-self: flex-start;\n      }\n      .icon {\n        cursor: pointer;\n      }\n      .icon.copied {\n        cursor: initial;\n      }\n      .icon.readonly {\n        pointer-events: none;\n      }\n    `,\n      this,\n    );\n  }\n\n  get variant() {\n    return this.getAttribute('variant');\n  }\n\n  get mode() {\n    return this.getAttribute('mode');\n  }\n\n  init() {\n    super.init();\n\n\n    this.icon.addEventListener('click', this.onCopy.bind(this));\n\n    forwardAttrs(this, this.iconWrapper, { includeAttrs: ['variant', 'mode'] });\n  }\n\n  onCopy() {\n    navigator.clipboard.writeText(\n      String(this.data.map((rc) => rc.value).join('\\n')),\n    );\n\n    this.icon.setAttribute('icon', 'vaadin:check-circle-o');\n    this.icon.setAttribute('title', 'Copied');\n    this.icon.classList.add('copied');\n\n    setTimeout(() => {\n      this.icon.setAttribute('icon', 'vaadin:copy-o');\n      this.icon.setAttribute('title', 'Copy');\n      this.icon.classList.remove('copied');\n    }, 5000);\n  }\n\n  onReadOnly(isReadOnly) {\n    this.icon.classList.toggle('readonly', isReadOnly);\n  }\n \n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (newValue !== oldValue) {\n      if (attrName === 'readonly') {\n        this.onReadOnly(newValue === 'true');\n      }\n    }\n  }\n}\n\nexport const RecoveryCodesClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { selector: () => ':host', property: 'width' },\n      hostMinWidth: { selector: () => ':host', property: 'min-width' },\n      hostDirection: [\n        { selector: () => ':host', property: 'direction' },\n        {\n          selector: () => TextClass.componentName,\n          property: TextClass.cssVarList.hostDirection\n        },\n      ],\n      textAlign: { selector: () => '.list', property: 'align-items' },\n      iconColor: { selector: () => 'vaadin-icon', property: 'color' },\n      iconSize: { selector: () => 'vaadin-icon', property: 'font-size' },\n      iconGap: { selector: () => '.wrapper', property: 'gap' },\n      bulletGap: { selector: () => 'descope-text span', property: 'gap' }\n    },\n  }),\n  createDynamicDataMixin({\n    itemRenderer,\n    rerenderAttrsList: ['variant', 'mode'],\n    targetSelector: '.list'\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawRecoveryCodes);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, useVar } from '@descope-ui/common/theme-helpers';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { RecoveryCodesClass } from './component/RecoveryCodesClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = RecoveryCodesClass.cssVarList;\nconst textVars = TextClass.cssVarList;\n\nconst recoveryCodes = {\n  [vars.hostMinWidth]: '190px',\n  [vars.hostDirection]: globalRefs.direction,\n  [vars.iconColor]: useVar(textVars.textColor),\n  [vars.iconSize]: useVar(textVars.fontSize),\n  [vars.iconGap]: '8px',\n  [vars.bulletGap]: '0.35em',\n\n  textAlign: {\n    right: { [vars.textAlign]: 'flex-end' },\n    left: { [vars.textAlign]: 'flex-start' },\n    center: { [vars.textAlign]: 'center' },\n  },\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default recoveryCodes;\nexport { vars };\n","import { compose } from '@descope-ui/common/utils';\nimport {\n  limitAbbreviation,\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('outbound-apps');\n\nconst itemRenderer = (\n  { name, description, logo, appId, isConnected },\n  _,\n  ref,\n) => {\n  const action = isConnected ? 'disconnect' : 'connect';\n  return `\n  <descope-list-item>\n    <descope-avatar\n      ${logo ? `img=\"${logo}\"` : ''}\n      ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n      size=${ref.size}\n      ${logo ? 'st-avatar-background-color=\"none\"' : ''}\n      class=\"app-logo\"\n    ></descope-avatar>\n\n      <div class=\"content\">\n        <descope-text\n          class=\"app-title\"\n          variant=\"subtitle1\"\n          mode=\"primary\"\n        >${name}</descope-text>\n      ${\n        description\n          ? `\n          <descope-text\n            class=\"app-description\"\n            variant=\"body2\"\n            mode=\"primary\"\n          >${description}</descope-text>\n      `\n          : ''\n      }\n    </div>\n    <div class=\"controls\">\n      <descope-button variant=\"link\" mode=\"primary\" size=${ref.size} data-action=\"${action}\" data-outbound-app-id=\"${appId}\" data-id=\"${action}\">\n        ${isConnected ? ref.disconnectButtonLabel : ref.connectButtonLabel}\n      </descope-button>\n    </div>\n  </descope-list-item>\n`;\n};\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: 'descope-list',\n});\n\nclass RawOutboundAppsClass extends BaseClass {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <descope-list>\n        <slot name=\"empty-state\" slot=\"empty-state\"></slot>\n      </descope-list>\n    `;\n\n    this.appsList = this.shadowRoot.querySelector('descope-list');\n\n    injectStyle(\n      `\n      :host {\n        width: 100%;\n      }\n      .controls {\n        display: flex;\n        min-width: 8em;\n        justify-content: end;\n      }\n      .content {\n        flex-grow: 1;\n        display: flex;\n        flex-direction: column;\n      }\n      .app-title,\n      .app-description {\n        display: flex;\n        direction: inherit;\n      }\n      descope-list {\n        display: block;\n      }\n      `,\n      this,\n    );\n  }\n\n  init() {\n    super.init?.();\n\n    this.appsList.itemRenderer = itemRenderer;\n\n    this.appsList.addEventListener('click', this.onAppsListClick.bind(this));\n  }\n\n  get readonly() {\n    return this.getAttribute('readonly') === 'true';\n  }\n\n  onAppsListClick(e) {\n    if (!this.readonly) {\n      const id = e.srcElement.getAttribute('data-outbound-app-id');\n      const action = e.srcElement.getAttribute('data-action');\n      if (id && action) {\n        this.dispatchEvent(\n          new CustomEvent(`${action}-clicked`, {\n            bubbles: true,\n            detail: { id, action },\n          }),\n        );\n      }\n    }\n  }\n\n  get size() {\n    return this.getAttribute('size') || 'sm';\n  }\n\n  get connectButtonLabel() {\n    return this.getAttribute('connect-button-label') || 'Connect';\n  }\n\n  get disconnectButtonLabel() {\n    return this.getAttribute('disconnect-button-label') || 'Disconnect';\n  }\n}\n\nconst { host } = {\n  host: { selector: () => ':host' },\n};\n\nexport const OutboundAppsClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      minHeight: { selector: () => ':host' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        {\n          selector: 'descope-list',\n          property: 'direction',\n        },\n        {\n          selector: 'descope-list-item',\n          property: 'direction',\n        },\n      ],\n      iconColor: {\n        selector: () => ' descope-icon',\n        property: IconClass.cssVarList.fill,\n      },\n      errorIconColor: {\n        selector: () => ' descope-icon.error-icon',\n        property: IconClass.cssVarList.fill,\n      },\n      fontSize: {\n        selector: TextClass.componentName,\n        property: TextClass.cssVarList.fontSize,\n      },\n      appLogoGap: {\n        selector: () => ' .app-logo',\n        property: 'margin-inline-end',\n      },\n      contentGap: {\n        selector: () => ' .content',\n        property: 'gap',\n      },\n      itemsTextAlign: {\n        selector: TextClass.componentName,\n        property: TextClass.cssVarList.textAlign,\n      },\n      itemCursor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.cursor,\n      },\n      itemOutline: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.outline,\n      },\n      itemBorderColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderColor,\n      },\n      itemBackgroundColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.backgroundColor,\n      },\n      listBorderWidth: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.borderWidth,\n      },\n      listBoxShadow: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.boxShadow,\n      },\n      listPadding: [\n        {\n          selector: () => ListClass.componentName,\n          property: ListClass.cssVarList.verticalPadding,\n        },\n        {\n          selector: () => ListClass.componentName,\n          property: ListClass.cssVarList.horizontalPadding,\n        },\n      ],\n    },\n  }),\n  draggableMixin,\n  createDynamicDataMixin({\n    itemRenderer,\n    rerenderAttrsList: [\n      'size',\n      'connect-button-label',\n      'disconnect-button-label',\n    ],\n  }),\n  componentNameValidationMixin,\n)(RawOutboundAppsClass);\n","import { OutboundAppsClass } from './component/OutboundAppsClass';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = OutboundAppsClass.cssVarList;\n\nconst outboundApps = {\n  [vars.iconColor]: globals.colors.primary.main,\n  [vars.errorIconColor]: globals.colors.error.main,\n\n  [vars.appLogoGap]: globals.spacing.md,\n  [vars.contentGap]: globals.spacing.xs,\n\n  // list-item overrides\n  [vars.itemCursor]: 'default',\n  [vars.itemOutline]: 'none',\n  [vars.itemBorderColor]: 'transparent',\n\n  [vars.listPadding]: '0',\n  [vars.listBorderWidth]: '0',\n  [vars.listBoxShadow]: 'none',\n\n  size: {\n    xs: {\n      [vars.fontSize]: '0.6em',\n    },\n    sm: {\n      [vars.fontSize]: '0.8em',\n    },\n    md: {\n      [vars.fontSize]: '1em',\n    },\n    lg: {\n      [vars.fontSize]: '1.5em',\n    },\n  },\n};\n\nexport default outboundApps;\n","import {\n  componentNameValidationMixin,\n  createStyleMixin,\n  draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n  forwardAttrs,\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\n\nexport const componentName = getComponentName('outbound-app-button');\n\nclass RawOutboundAppButton extends createBaseClass({\n  componentName,\n  baseSelector: ':host > descope-button',\n}) {\n  static get observedAttributes() {\n    return ['label', 'icon-src', 'icon-fill-current-color'];\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <descope-button>\n        <descope-icon class=\"icon\"></descope-icon>\n        <span class=\"label\"></span>\n      </descope-button>\n    `;\n\n    injectStyle(`\n      :host {\n        display: inline-block;\n      }\n      .hidden {\n        display: none;\n      }\n    `, this);\n\n    this.button = this.shadowRoot.querySelector('descope-button');\n    this.icon = this.shadowRoot.querySelector('.icon');\n    this.label = this.shadowRoot.querySelector('.label');\n  }\n\n  init() {\n    super.init?.();\n\n    forwardAttrs(this, this.button, {\n      excludeAttrs: [\n        'style',\n        'class',\n        'label',\n        'icon-src',\n        'icon-fill-current-color',\n      ]\n    });\n  }\n\n  updateLabel(val = '') {\n    this.label.textContent = val;\n    this.label.classList.toggle('hidden', !val);\n  }\n\n  updateIcon(val = '') {\n    this.icon.setAttribute('src', val);\n    this.icon.classList.toggle('hidden', !val);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n    if (oldValue !== newValue) {\n      if (attrName === 'label') {\n        this.updateLabel(newValue);\n      } else if (attrName === 'icon-src') {\n        this.updateIcon(newValue);\n      }\n    }\n  }\n}\n\nexport const OutboundAppButtonClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: {\n        selector: () => ':host',\n        property: 'width'\n      },\n      iconFillCurrentColor: {\n        selector: () => 'descope-icon',\n        property: ButtonClass.cssVarList.iconColor\n      }\n    },\n  }),\n  draggableMixin,\n  componentNameValidationMixin,\n)(RawOutboundAppButton);\n","import { OutboundAppButtonClass } from './component/OutboundAppButtonClass';\n\nconst compVars = OutboundAppButtonClass.cssVarList;\n\nconst outboundAppButton = {\n  [compVars.iconFillCurrentColor]: 'inherit',\n\n  _iconFillCurrentColor: {\n    [compVars.iconFillCurrentColor]: 'currentColor',\n  },\n\n  _fullWidth: {\n    [compVars.hostWidth]: '100%',\n  },\n};\n\nexport default outboundAppButton;\n\nexport const vars = compVars;\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4QzIxLjEgMTggMjEuOTkgMTcuMSAyMS45OSAxNkwyMiA2QzIyIDQuOSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxNkMyIDE3LjEgMi45IDE4IDQgMThIMFYyMEgyNFYxOEgyMFpNNCA2SDIwVjE2SDRWNloiIGZpbGw9IiM2MzZDNzQiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDFIOEM2LjM0IDEgNSAyLjM0IDUgNFYyMEM1IDIxLjY2IDYuMzQgMjMgOCAyM0gxNkMxNy42NiAyMyAxOSAyMS42NiAxOSAyMFY0QzE5IDIuMzQgMTcuNjYgMSAxNiAxWk0xNyAxOEg3VjRIMTdWMThaTTE0IDIxSDEwVjIwSDE0VjIxWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUyNTJfNzY4KSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iIzYzNkM3NCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUyNTJfNzY4Ij4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNi41SDIyVjQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTcuNUgwVjIwLjVIMTRWMTcuNUg0VjYuNVpNMjMgOC41SDE3QzE2LjQ1IDguNSAxNiA4Ljk1IDE2IDkuNVYxOS41QzE2IDIwLjA1IDE2LjQ1IDIwLjUgMTcgMjAuNUgyM0MyMy41NSAyMC41IDI0IDIwLjA1IDI0IDE5LjVWOS41QzI0IDguOTUgMjMuNTUgOC41IDIzIDguNVpNMjIgMTcuNUgxOFYxMC41SDIyVjE3LjVaIiBmaWxsPSIjNjM2Qzc0Ii8+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4LjVDMjEuMSAxOC41IDIxLjk5IDE3LjYgMjEuOTkgMTYuNUwyMiA2LjVDMjIgNS40IDIxLjEgNC41IDIwIDQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTYuNUMyIDE3LjYgMi45IDE4LjUgNCAxOC41SDBWMjAuNUgyNFYxOC41SDIwWk00IDYuNUgyMFYxNi41SDRWNi41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDEuNUg4QzYuMzQgMS41IDUgMi44NCA1IDQuNVYyMC41QzUgMjIuMTYgNi4zNCAyMy41IDggMjMuNUgxNkMxNy42NiAyMy41IDE5IDIyLjE2IDE5IDIwLjVWNC41QzE5IDIuODQgMTcuNjYgMS41IDE2IDEuNVpNMTcgMTguNUg3VjQuNUgxN1YxOC41Wk0xNCAyMS41SDEwVjIwLjVIMTRWMjEuNVoiIGZpbGw9IiNGNEY1RjYiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUzMDNfODYzKSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUzMDNfODYzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNkgyMlY0SDRDMi45IDQgMiA0LjkgMiA2VjE3SDBWMjBIMTRWMTdINFY2Wk0yMyA4SDE3QzE2LjQ1IDggMTYgOC40NSAxNiA5VjE5QzE2IDE5LjU1IDE2LjQ1IDIwIDE3IDIwSDIzQzIzLjU1IDIwIDI0IDE5LjU1IDI0IDE5VjlDMjQgOC40NSAyMy41NSA4IDIzIDhaTTIyIDE3SDE4VjEwSDIyVjE3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\"","import desktopDeviceIconLight from './icons/desktop-device-light.svg';\nimport mobileDeviceIconLight from './icons/mobile-device-light.svg';\nimport tabletDeviceIconLight from './icons/tablet-device-light.svg';\nimport unknownDeviceIconLight from './icons/unknown-device-light.svg';\nimport desktopDeviceIconDark from './icons/desktop-device-dark.svg';\nimport mobileDeviceIconDark from './icons/mobile-device-dark.svg';\nimport tabletDeviceIconDark from './icons/tablet-device-dark.svg';\nimport unknownDeviceIconDark from './icons/unknown-device-dark.svg';\n\nconst ensureDate = (loginDate) => {\n  const numVal = parseInt(loginDate, 10);\n  if (Number.isNaN(numVal)) return 0;\n  return numVal;\n}\n\nexport const sortFn = (a, b) =>\n  ensureDate(b.lastLoginDate) - ensureDate(a.lastLoginDate);\n\nexport const parseDate = (epoch, format) => {\n  if (Number.isNaN(parseInt(epoch, 10))) return '';\n\n  const date = new Date(epoch);\n  const year = date.getFullYear();\n  const month = String(date.getMonth() + 1).padStart(2, '0');\n  const day = String(date.getDate()).padStart(2, '0');\n  const time = date.toLocaleTimeString('en-US', {\n    hour12: false,\n    hour: '2-digit',\n    minute: '2-digit',\n  });\n\n  const formatMap = {\n    'DD-MM-YYYY': `${day}/${month}/${year}`,\n    'YYYY-MM-DD': `${year}/${month}/${day}`,\n    'MM-DD-YYYY': `${month}/${day}/${year}`,\n  };\n\n  const dateStr = formatMap[format] || formatMap['MM/DD/YYYY'];\n  return `${dateStr} ${time}`;\n};\n\nexport const deviceIconMap = {\n  desktop: {\n    light: desktopDeviceIconLight,\n    dark: desktopDeviceIconDark,\n  },\n  mobile: {\n    light: mobileDeviceIconLight,\n    dark: mobileDeviceIconDark,\n  },\n  tablet: {\n    light: tabletDeviceIconLight,\n    dark: tabletDeviceIconDark,\n  },\n  unknown: {\n    light: unknownDeviceIconLight,\n    dark: unknownDeviceIconDark,\n  },\n};\n\nexport const getDeviceIcon = (deviceType) => {\n  const icon = deviceIconMap[deviceType] || deviceIconMap.unknown;\n  return {\n    iconSrc: icon.light,\n    iconSrcDark: icon.dark,\n  };\n};\n","import { compose } from '@descope-ui/common/utils';\nimport {\n  getComponentName,\n  injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport {\n  createStyleMixin,\n  draggableMixin,\n  componentNameValidationMixin,\n  createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { getDeviceIcon, parseDate, sortFn } from './helpers';\n\nexport const componentName = getComponentName('trusted-devices');\n\nconst itemRenderer = (\n  { id, name, lastLoginDate, deviceType, isCurrent },\n  _,\n  ref,\n) => {\n  const itemClassName = isCurrent ? 'class=\"current-device\"' : '';\n\n  const { iconSrc, iconSrcDark } = getDeviceIcon(deviceType);\n\n  const loginLabel = ref.lastLoginLabel ? `${ref.lastLoginLabel} ` : '';\n\n  const loginDate = parseDate(lastLoginDate, ref.format);\n\n  const badge = isCurrent\n    ? `<descope-badge\n    bordered=\"true\"\n    size=\"xs\"\n    mode=\"primary\"\n    st-host-direction=\"${ref.direction}\"\n  >\n    ${ref.currentDeviceLabel}\n  </descope-badge>`\n    : '';\n\n  const removeDeviceLink =\n    !ref.hideActions && !isCurrent\n      ? `<descope-link\n      class=\"remove-device\"\n      variant=\"body1\"\n      mode=\"primary\"\n      data-action=\"remove-device\"\n      data-device-id=\"${id}\"\n      st-host-direction=\"${ref.direction}\"\n      ellipsis=\"true\"\n    >\n      ${ref.removeDeviceLabel}\n    </descope-link>`\n      : '';\n\n  const template = document.createElement('template');\n\n  template.innerHTML = `\n    <descope-list-item ${itemClassName}>\n      <div class=\"content\">\n        <div class=\"main\">\n          <span class=\"device\">\n            <descope-icon\n              class=\"device-icon\"\n              src=\"${iconSrc}\"\n              src-dark=\"${iconSrcDark}\">\n            </descope-icon>\n            <descope-text\n              class=\"device-name\"\n              variant=\"body1\"\n              mode=\"primary\">\n            </descope-text>\n          </span>\n          <span class=\"panel\">\n            ${badge}\n            ${removeDeviceLink}\n          </span>\n        </div>\n        <div class=\"meta\">\n          <descope-text\n            variant=\"body2\"\n            mode=\"primary\"\n          >\n            ${loginLabel}\n          </descope-text>\n          <descope-text\n            class=\"login-date\"\n            variant=\"body2\"\n            mode=\"primary\"\n          >\n            ${loginDate}\n          </descope-text>\n        </div>\n      </div>\n    </descope-list-item>\n  `;\n\n  // we return a template instead of returning a string so we can avoid XSS on device name\n  template.content.querySelector('.device-name').textContent = name;\n  return template;\n};\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: ListClass.componentName,\n});\n\nclass RawTrustedDevicesClass extends BaseClass {\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n      <descope-list>\n        <slot name=\"empty-state\" slot=\"empty-state\"></slot>\n      </descope-list>\n    `;\n\n    this.appsList = this.shadowRoot.querySelector('descope-list');\n\n    injectStyle(\n      `\n      :host {\n        display: inline-block;\n      }\n\n      .descope-list-item {\n        min-width: 0;\n      }\n\n      .current-device {\n        order: -1;\n      }\n\n      .content {\n        display: flex;\n        flex-direction: column;\n        width: 100%;\n      }\n\n      .main {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n      }\n\n      .panel {\n        display: flex;\n        flex-shrink: 0;\n        max-width: 75%;\n        overflow: hidden;\n      }\n\n      .device {\n        display: flex;\n        min-width: 0;\n      }\n\n      .device-icon {\n        flex-shrink: 0;\n      }\n\n      .meta {\n        display: flex;\n      }\n\n      .login-date {\n        min-width: fit-content;\n      }\n\n      descope-badge {\n        min-width: 0;\n      }\n\n      descope-text {\n        display: flex;\n        align-items: center;        \n        min-width: 0;\n      }\n      descope-text::part(text-wrapper) {\n        text-overflow: ellipsis;\n        overflow: hidden;\n        white-space: nowrap;\n      }\n\n      descope-link {\n        overflow: hidden;\n      }\n      descope-link.remove-device::part(wrapper) {\n        display: flex;\n        width: 100%;\n      }\n      descope-link.remove-device {\n        width: 100%;\n      }\n      `,\n      this,\n    );\n  }\n\n  init() {\n    super.init?.();\n\n    this.appsList.itemRenderer = itemRenderer;\n\n    this.appsList.addEventListener('click', this.onRemoveClick.bind(this));\n  }\n\n  onRemoveClick(e) {\n    if (this.readOnly) return;\n\n    const target = e.target.closest('[data-device-id]');\n    const deviceId = target?.getAttribute('data-device-id');\n\n    if (deviceId) {\n      this.dispatchEvent(\n        new CustomEvent('remove-device-clicked', {\n          bubbles: true,\n          detail: { id: deviceId, action: 'remove-device' },\n        }),\n      );\n    }\n  }\n\n  get readOnly() {\n    return this.getAttribute('readonly') === 'true';\n  }\n\n  get hideActions() {\n    return this.getAttribute('hide-actions') === 'true';\n  }\n\n  get format() {\n    return this.getAttribute('format')?.toUpperCase() || 'MM-DD-YYYY';\n  }\n\n  get removeDeviceLabel() {\n    return this.getAttribute('remove-device-label') || 'Sign out';\n  }\n\n  get currentDeviceLabel() {\n    return this.getAttribute('current-device-label') || 'Current device';\n  }\n\n  get lastLoginLabel() {\n    return this.getAttribute('last-login-label') || 'Last login:';\n  }\n\n  get direction() {\n    return this.getAttribute('st-host-direction');\n  }\n}\n\nconst { host } = {\n  host: { selector: () => ':host' },\n};\n\nexport const TrustedDevicesClass = compose(\n  createStyleMixin({\n    mappings: {\n      hostWidth: { ...host, property: 'width' },\n      hostMinWidth: { ...host, property: 'min-width' },\n      hostDirection: [\n        { ...host, property: 'direction' },\n        {\n          selector: () => 'descope-list-item',\n          property: 'direction',\n        },\n        {\n          selector: () => 'descope-text',\n          property: 'direction',\n        },\n      ],\n\n      listItemsGap: {\n        property: ListClass.cssVarList.gap,\n      },\n      listBackgroundColor: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.backgroundColor,\n      },\n      listBorderRadius: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.borderRadius,\n      },\n      listBorderWidth: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.borderWidth,\n      },\n      listBoxShadow: {\n        selector: () => ListClass.componentName,\n        property: ListClass.cssVarList.boxShadow,\n      },\n      listPadding: [\n        {\n          selector: () => ListClass.componentName,\n          property: ListClass.cssVarList.verticalPadding,\n        },\n        {\n          selector: () => ListClass.componentName,\n          property: ListClass.cssVarList.horizontalPadding,\n        },\n      ],\n\n      itemVerticalPadding: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.verticalPadding,\n      },\n      itemHorizontalPadding: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.horizontalPadding,\n      },\n      itemCursor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.cursor,\n      },\n      itemOutline: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.outline,\n      },\n      itemBorderColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderColor,\n      },\n      itemBorderRadius: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.borderRadius,\n      },\n      itemBackgroundColor: {\n        selector: ListItemClass.componentName,\n        property: ListItemClass.cssVarList.backgroundColor,\n      },\n      itemContentGap: {\n        selector: () => '.content',\n        property: 'gap',\n      },\n\n      badgeBorderColor: {\n        selector: BadgeClass.componentName,\n        property: BadgeClass.cssVarList.borderColor,\n      },\n      badgeTextColor: {\n        selector: BadgeClass.componentName,\n        property: BadgeClass.cssVarList.textColor,\n      },\n      badgeBackgroundColor: {\n        selector: BadgeClass.componentName,\n        property: BadgeClass.cssVarList.backgroundColor,\n      },\n      badgeBorderRadius: {\n        selector: BadgeClass.componentName,\n        property: BadgeClass.cssVarList.borderRadius,\n      },\n\n      devicePanelGap: {\n        selector: () => '.main',\n        property: 'gap',\n      },\n      deviceIconGap: {\n        selector: () => '.device',\n        property: 'gap',\n      },\n      deviceIconSize: [\n        {\n          selector: () => '.device-icon',\n          property: 'width',\n        },\n        {\n          selector: () => '.device-icon',\n          property: 'height',\n        },\n      ],\n\n      lastLoginLabelGap: {\n        selector: ' .meta',\n        property: 'gap',\n      },\n    },\n  }),\n  draggableMixin,\n  createDynamicDataMixin({\n    itemRenderer,\n    sortFn,\n    rerenderAttrsList: [\n      'remove-device-label',\n      'current-device-label',\n      'last-login-label',\n      'format',\n      'hide-actions',\n    ],\n  }),\n  componentNameValidationMixin,\n)(RawTrustedDevicesClass);\n","import { TrustedDevicesClass } from './component/TrustedDevicesClass';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = TrustedDevicesClass.cssVarList;\n\nconst TrustedDevices = {\n  [vars.hostWidth]: 'auto',\n  [vars.hostWidth]: '300px',\n  [vars.hostMinWidth]: '300px',\n\n  [vars.listBackgroundColor]: 'transparent',\n  [vars.listBorderRadius]: '0',\n  [vars.listBorderWidth]: '0',\n  [vars.listPadding]: '0',\n  [vars.listBoxShadow]: 'none',\n  [vars.listItemsGap]: globals.spacing.lg,\n\n  [vars.itemBorderColor]: globals.colors.surface.light,\n  [vars.itemVerticalPadding]: globals.spacing.lg,\n  [vars.itemHorizontalPadding]: globals.spacing.lg,\n  [vars.itemBorderRadius]: globals.radius.xs,\n  [vars.itemOutline]: 'transparent',\n  [vars.itemBackgroundColor]: 'transparent',\n  [vars.itemCursor]: 'default',\n  [vars.itemContentGap]: globals.spacing.sm,\n\n  [vars.badgeBorderColor]: globals.colors.surface.light,\n  [vars.badgeTextColor]: globals.colors.surface.dark,\n  [vars.badgeBorderRadius]: globals.radius.xs,\n  [vars.badgeBackgroundColor]: globals.colors.surface.main,\n\n  [vars.devicePanelGap]: globals.spacing.md,\n  [vars.deviceIconGap]: globals.spacing.md,\n  [vars.deviceIconSize]: '24px',\n  [vars.lastLoginLabelGap]: globals.spacing.xs,\n\n  _fullWidth: {\n    [vars.hostWidth]: '100%',\n  },\n};\n\nexport default TrustedDevices;\n","import * as button from '@descope-ui/descope-button/theme';\nimport * as textField from './textField';\nimport * as password from './password';\nimport * as numberField from './numberField';\nimport * as emailField from './emailField';\nimport * as textArea from './textArea';\nimport * as checkbox from './checkbox';\nimport * as switchToggle from './switchToggle';\nimport * as container from './container';\nimport * as logo from './logo';\nimport * as totpImage from './totpImage';\nimport * as notpImage from './notpImage';\nimport * as text from '@descope-ui/descope-text/theme';\nimport * as enrichedText from '@descope-ui/descope-enriched-text/theme';\nimport * as link from '@descope-ui/descope-link/theme';\nimport * as divider from './divider';\nimport * as passcode from './passcode';\nimport { loaderRadial, loaderLinear } from './loader';\nimport * as comboBox from '@descope-ui/descope-combo-box/theme';\nimport * as phoneField from './phoneField';\nimport * as phoneInputBoxField from './phoneInputBoxField';\nimport * as newPassword from './newPassword';\nimport * as inputWrapper from './inputWrapper';\nimport * as uploadFile from './uploadFile';\nimport * as buttonSelectionGroupItem from './buttonSelectionGroup/buttonSelectionGroupItem';\nimport * as buttonSelectionGroup from './buttonSelectionGroup/buttonSelectionGroup';\nimport * as buttonMultiSelectionGroup from './buttonSelectionGroup/buttonMultiSelectionGroup';\nimport * as modal from './modal';\nimport * as grid from './grid';\nimport * as notificationCard from './notificationCard';\nimport * as multiSelectComboBox from './multiSelectComboBox';\nimport * as badge from '@descope-ui/descope-badge/theme';\nimport * as avatar from '@descope-ui/descope-avatar/theme';\nimport * as mappingsField from './mappingsField';\nimport * as userAttribute from './userAttribute';\nimport * as userAuthMethod from './userAuthMethod';\nimport * as samlGroupMappings from './samlGroupMappings';\nimport * as policyValidation from './policyValidation';\nimport * as icon from '@descope-ui/descope-icon/theme';\nimport * as image from '@descope-ui/descope-image/theme';\nimport * as codeSnippet from './codeSnippet';\nimport * as radioGroup from './radioGroup/radioGroup';\nimport * as radioButton from './radioGroup/radioButton';\nimport * as calendar from './calendar';\nimport * as dateField from './dateField';\nimport * as appsList from '@descope-ui/descope-apps-list/theme';\nimport * as list from '@descope-ui/descope-list/theme';\nimport * as listItem from '@descope-ui/descope-list-item/theme';\nimport * as scopesList from './scopesList';\nimport * as thirdPartyAppLogo from './thirdPartyAppLogo';\nimport * as securityQuestionsSetup from './securityQuestionsSetup';\nimport * as securityQuestionsVerify from './securityQuestionsVerify';\nimport * as hybridField from './hybridField';\nimport * as alert from './alert';\nimport * as hcaptcha from './hcaptcha';\nimport * as autocompleteField from '@descope-ui/descope-autocomplete-field/theme';\nimport * as addressField from '@descope-ui/descope-address-field/theme';\nimport * as timer from '@descope-ui/descope-timer/theme';\nimport * as timerButton from '@descope-ui/descope-timer-button/theme';\nimport * as passwordStrength from '@descope-ui/descope-password-strength/theme';\nimport * as collapsibleContainer from '@descope-ui/descope-collapsible-container/theme';\nimport * as recoveryCodes from '@descope-ui/descope-recovery-codes/theme';\nimport * as outboundApps from '@descope-ui/descope-outbound-apps/theme';\nimport * as outboundAppButton from '@descope-ui/descope-outbound-app-button/theme';\nimport * as trustedDevices from '@descope-ui/descope-trusted-devices/theme';\n\nconst components = {\n  button,\n  textField,\n  password,\n  numberField,\n  emailField,\n  textArea,\n  checkbox,\n  switchToggle,\n  container,\n  logo,\n  totpImage,\n  notpImage,\n  text,\n  enrichedText,\n  link,\n  divider,\n  passcode,\n  loaderRadial,\n  loaderLinear,\n  comboBox,\n  phoneField,\n  phoneInputBoxField,\n  newPassword,\n  inputWrapper,\n  uploadFile,\n  buttonSelectionGroupItem,\n  buttonSelectionGroup,\n  buttonMultiSelectionGroup,\n  modal,\n  grid,\n  notificationCard,\n  multiSelectComboBox,\n  badge,\n  avatar,\n  mappingsField,\n  userAttribute,\n  userAuthMethod,\n  samlGroupMappings,\n  policyValidation,\n  image,\n  icon,\n  codeSnippet,\n  radioGroup,\n  radioButton,\n  calendar,\n  dateField,\n  list,\n  listItem,\n  appsList,\n  scopesList,\n  thirdPartyAppLogo,\n  securityQuestionsSetup,\n  securityQuestionsVerify,\n  hybridField,\n  alert,\n  autocompleteField,\n  addressField,\n  timer,\n  timerButton,\n  passwordStrength,\n  collapsibleContainer,\n  recoveryCodes,\n  hcaptcha,\n  outboundApps,\n  outboundAppButton,\n  trustedDevices,\n};\n\nconst theme = Object.keys(components).reduce(\n  (acc, comp) => ({ ...acc, [comp]: components[comp].default }),\n  {}\n);\nconst vars = Object.keys(components).reduce(\n  (acc, comp) => ({ ...acc, [comp]: components[comp].vars }),\n  {}\n);\n\nexport default theme;\nexport { vars };\n","import globals, { vars as globalsVars } from './globals';\nimport components, { vars as componentsVars } from './components';\n\nexport const defaultTheme = { globals, components };\nexport const themeVars = { globals: globalsVars, components: componentsVars };\n","import merge from 'lodash.merge';\nimport { defaultTheme } from './theme';\nimport { codeSnippetDarkThemeOverrides } from './theme/components/codeSnippet';\n\nexport const colors = {\n  surface: {\n    main: '#181a1c',\n    dark: '#bec4ca',\n    light: '#555f68',\n    highlight: '#22262a',\n    contrast: '#f5f6f7',\n  },\n  primary: {\n    main: '#1f80ff',\n    dark: '#71aeff',\n    light: '#004094',\n    highlight: '#00214d',\n    contrast: '#000000',\n  },\n  secondary: {\n    main: '#a665eb',\n    dark: '#b9a0f3',\n    light: '#683ae6',\n    highlight: '#361299',\n    contrast: '#000000',\n  },\n  success: {\n    main: '#27963c',\n    dark: '#8bc3a2',\n    light: '#004d0f',\n    highlight: '#001f00',\n    contrast: '#000000',\n  },\n  error: {\n    main: '#f85249',\n    dark: '#fa7c75',\n    light: '#c51107',\n    highlight: '#4a0603',\n    contrast: '#000000',\n  },\n  warning: {\n    main: '#EF7A33',\n    dark: '#FF985A',\n    light: '#FF6304',\n    highlight: '#C45512',\n    contrast: '#000000',\n  },\n};\n\nconst darkTheme = merge({}, defaultTheme, {\n  globals: {\n    colors,\n  },\n  components: {\n    ...codeSnippetDarkThemeOverrides,\n  },\n});\n\nexport default darkTheme;\n","import { draggableMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('recaptcha');\n\nconst observedAttributes = ['enabled', 'site-key', 'action', 'enterprise'];\n\nconst BaseClass = createBaseClass({\n  componentName,\n  baseSelector: ':host > div',\n});\nclass RawRecaptcha extends BaseClass {\n  static get observedAttributes() {\n    return observedAttributes.concat(BaseClass.observedAttributes || []);\n  }\n\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback?.(attrName, oldValue, newValue);\n    if (oldValue !== newValue) {\n      if (attrName === 'enabled') {\n        this.#toggleRecaptcha(newValue === 'true');\n      }\n    }\n  }\n\n  renderRecaptcha(enabled) {\n    if (this.children.length) {\n      this.updatePreview();\n      return;\n    }\n\n    this.toggleRecaptchaEles(enabled);\n  }\n\n  toggleRecaptchaEles(enabled) {\n    if (enabled) {\n      this.recaptchaEle.style.display = '';\n      this.mockRecaptchaEle.style.display = 'none';\n    } else {\n      this.recaptchaEle.style.display = 'none';\n      this.mockRecaptchaEle.style.display = '';\n    }\n  }\n\n  constructor() {\n    super();\n\n    this.attachShadow({ mode: 'open' }).innerHTML = `\n    <div class=\"badge\">\n      <span id=\"recaptcha\"></span>\n      <img src=\"https://imgs.descope.com/connectors/templates/recaptcha/recaptcha-big.png\" alt=\"recaptcha\"/>\n    </div>\n    <slot></slot>\n\t`;\n\n    injectStyle(\n      `\n      :host {\n        display: inline-flex;\n      }\n      :host > div:not(.hidden) {\n        display: flex;\n      }\n      :host #recaptcha .grecaptcha-badge {\n        box-shadow: none !important;\n      }\n      :host #recaptcha .grecaptcha-logo {\n        height: 100%;\n      }\n      :host #recaptcha {\n\t\t\t\twidth: 100%;\n        height: 100%;\n\t\t\t}\n      :host img {\n        width: 256px;\n      }\n      :host([full-width=\"true\"]) {\n        width: 100%;\n      }\n      .hidden {\n        display: none;\n      }\n        `,\n      this\n    );\n\n    this.recaptchaEle = this.baseElement.querySelector('#recaptcha');\n    this.mockRecaptchaEle = this.baseElement.querySelector('img');\n    this.badge = this.shadowRoot.querySelector('.badge');\n  }\n\n  init() {\n    super.init?.();\n\n    observeChildren(this, this.updatePreview.bind(this));\n  }\n\n  updatePreview() {\n    if (this.children.length) {\n      this.recaptchaEle.style.display = 'none';\n      this.mockRecaptchaEle.style.display = 'none';\n      this.badge.classList.add('hidden');\n    } else {\n      this.toggleRecaptchaEles(this.enabled);\n      this.badge.classList.remove('hidden');\n    }\n  }\n\n  get enterprise() {\n    return this.getAttribute('enterprise') === 'true';\n  }\n\n  get siteKey() {\n    return this.getAttribute('site-key');\n  }\n\n  get action() {\n    return this.getAttribute('action') || 'load';\n  }\n\n  get enabled() {\n    return this.getAttribute('enabled') === 'true';\n  }\n\n  get scriptURL() {\n    const url = new URL('https://www.google.com/recaptcha/');\n    url.pathname += `${this.enterprise ? 'enterprise' : 'api'}.js`;\n    url.searchParams.append('onload', 'onRecaptchaLoadCallback');\n    url.searchParams.append('render', 'explicit');\n    return url.toString();\n  }\n\n  #toggleRecaptcha(enabled) {\n    this.renderRecaptcha(enabled);\n    if (enabled) {\n      this.#createOnLoadScript();\n      if (!document.getElementById('recaptcha-script')) {\n        this.#loadRecaptchaScript();\n      } else {\n        window.onRecaptchaLoadCallback();\n      }\n    }\n  }\n\n  #loadRecaptchaScript() {\n    const script = document.createElement('script');\n    script.src = this.scriptURL;\n    script.async = true;\n    script.id = 'recaptcha-script';\n    script.defer = true;\n    document.body.appendChild(script);\n  }\n\n  get grecaptchaInstance() {\n    return this.enterprise ? window.grecaptcha?.enterprise : window.grecaptcha;\n  }\n\n  #getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId) {\n    if (!this.isConnected) {\n      return;\n    }\n\n    grecaptchaInstance.ready(() => {\n      // clone the node and append it to the body so that it can be used by the grepcaptcha script\n      const cloneNode = currentNode\n        .querySelector('textarea[name^=\"g-recaptcha-response\"]')\n        ?.cloneNode();\n      if (cloneNode) {\n        cloneNode.style.display = 'none';\n        document.body.appendChild(cloneNode);\n      }\n\n      // cleaning up the recaptcha element we added to the body\n      const removeCloneNode = () => {\n        cloneNode.remove();\n      };\n\n      if (!this.siteKey) {\n        return;\n      }\n      // we should pass recaptchaWidgetId, but this does not allow us to run execute multiple times\n      // also calling grecaptchaInstance.reset() does not work\n      const exec = grecaptchaInstance?.execute(recaptchaWidgetId, { action: this.action });\n      exec.then((token, e) => {\n        if (e) {\n          // eslint-disable-next-line no-console\n          console.warn('could not execute recaptcha', e);\n        } else {\n          this.updateComponentsContext({\n            risktoken: token,\n            riskaction: this.action,\n          });\n          // if the component is still connected, we should try to get a new token before the token expires (2 minutes)\n          if (this.isConnected) {\n            setTimeout(() => {\n              this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);\n            }, 110000);\n          }\n        }\n        removeCloneNode();\n      });\n    });\n  }\n\n  #createOnLoadScript() {\n    window.onRecaptchaLoadCallback = () => {\n      const currentNode = this.recaptchaEle;\n\n      // if there are child nodes, it means that the recaptcha was already rendered\n      if (currentNode.hasChildNodes()) {\n        return;\n      }\n\n      const { grecaptchaInstance } = this;\n\n      if (!grecaptchaInstance) {\n        return;\n      }\n\n      setTimeout(() => {\n        const recaptchaWidgetId = grecaptchaInstance.render(currentNode, {\n          sitekey: this.siteKey,\n          badge: 'inline',\n          size: 'invisible',\n        });\n        this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);\n      }, 0);\n    };\n  }\n}\n\nexport const RecaptchaClass = compose(draggableMixin)(RawRecaptcha);\n","import { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../helpers/componentHelpers';\nimport {\n  draggableMixin,\n  createProxy,\n  componentNameValidationMixin,\n  hoverableMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('notification');\n\nconst NotificationMixin = (superclass) =>\n  class NotificationMixinClass extends superclass {\n    #card;\n\n    constructor() {\n      super();\n\n      const that = this;\n\n      Object.defineProperty(this.baseElement, '_container', {\n        get() {\n          if (!NotificationMixinClass._container) {\n            NotificationMixinClass._container = document.createElement(\n              'descope-notification-container'\n            );\n\n            // we are overriding the container position to be absolute because we want to keep in inside the flow/widget boundaries\n            NotificationMixinClass._container.style.position = 'absolute';\n\n            // we're adding the container to body to avoid Vaadin's container's `openChanged`\n            // from breaking when trying to remove it directly from the body.\n            document.body.appendChild(NotificationMixinClass._container);\n          }\n\n          if (!NotificationMixinClass._container.isConnected) {\n            // Then, we're adding the container to the parentNode, which is the desired location\n            // for us on the DOM\n            setTimeout(() => that.parentNode.appendChild(NotificationMixinClass._container));\n          }\n\n          return NotificationMixinClass._container;\n        },\n      });\n\n      Object.defineProperty(this.baseElement, '_card', {\n        get() {\n          return that.#card;\n        },\n      });\n\n      // we want to replace the card with vaadin's remove notification so it will not throw\n      this.baseElement._removeNotificationCard = this.close.bind(this);\n    }\n\n    close() {\n      this.#card.close();\n    }\n\n    init() {\n      super.init?.();\n\n      this.createCard();\n\n      forwardAttrs(this, this.#card);\n      syncAttrs(this.#card, this, { includeAttrs: ['opened'] });\n\n      this.baseElement.renderer = (cardRoot) => {\n        Array.from(this.childNodes).forEach((child) => cardRoot.appendChild(child));\n      };\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get isContainerEmpty() {\n      return !NotificationMixinClass._container.children.length;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    removeContainer() {\n      NotificationMixinClass._container.remove();\n    }\n\n    removeNotification() {\n      // remove descope-notification from the DOM\n      this.remove();\n      // if needed, remove descope-notification-container\n      if (this.isContainerEmpty) this.removeContainer();\n    }\n\n    createCard() {\n      this.#card = document.createElement('descope-notification-card');\n      this.#card.addEventListener('card-closed', this.removeNotification.bind(this));\n    }\n  };\n\nexport const NotificationClass = compose(\n  draggableMixin,\n  componentNameValidationMixin,\n  hoverableMixin,\n  NotificationMixin\n)(\n  createProxy({\n    wrappedEleName: 'vaadin-notification',\n    excludeAttrsSync: ['tabindex', 'style'],\n    componentName,\n  })\n);\n","import { zxcvbn, zxcvbnOptions } from \"@zxcvbn-ts/core\";\nimport * as zxcvbnCommonPackage from \"@zxcvbn-ts/language-common\";\nimport * as zxcvbnEnPackage from \"@zxcvbn-ts/language-en\";\n\n\nexport const options = {\n  translations: zxcvbnEnPackage.translations,\n  graphs: zxcvbnCommonPackage.adjacencyGraphs,\n  dictionary: {\n    ...zxcvbnCommonPackage.dictionary,\n    ...zxcvbnEnPackage.dictionary,\n  },\n};\nzxcvbnOptions.setOptions(options);\n\nexport default zxcvbn\n"]}