import { AddressFieldClass as AddressFieldClass$1, AlertClass as AlertClass$1, AppsListClass as AppsListClass$1, AttachmentClass as AttachmentClass$1, AvatarClass as AvatarClass$1, BadgeClass as BadgeClass$1, ButtonClass as ButtonClass$1, ButtonMultiSelectionGroupClass as ButtonMultiSelectionGroupClass$1, ButtonSelectionGroupClass as ButtonSelectionGroupClass$1, CalendarClass as CalendarClass$1, CheckboxClass as CheckboxClass$1, CodeSnippetClass as CodeSnippetClass$1, CollapsibleContainerClass as CollapsibleContainerClass$1, ComboBoxClass as ComboBoxClass$1, ContainerClass as ContainerClass$1, CountrySubdivisionCityFieldClass as CountrySubdivisionCityFieldClass$1, DateFieldClass as DateFieldClass$1, DividerClass as DividerClass$1, EmailFieldClass as EmailFieldClass$1, EnrichedTextClass as EnrichedTextClass$1, GridClass as GridClass$1, HcaptchaClass as HcaptchaClass$1, HoneypotClass as HoneypotClass$1, HybridFieldClass as HybridFieldClass$1, IconClass as IconClass$1, ImageClass as ImageClass$1, LinkClass as LinkClass$1, ListClass as ListClass$1, LoaderLinearClass as LoaderLinearClass$1, LoaderRadialClass as LoaderRadialClass$1, LogoClass as LogoClass$1, MappingsFieldClass as MappingsFieldClass$1, ModalClass as ModalClass$1, MultiLineMappingsClass as MultiLineMappingsClass$1, MultiSelectComboBoxClass as MultiSelectComboBoxClass$1, NewPasswordClass as NewPasswordClass$1, NotificationClass as NotificationClass$1, NotpImageClass as NotpImageClass$1, NumberFieldClass as NumberFieldClass$1, OutboundAppButtonClass as OutboundAppButtonClass$1, OutboundAppsClass as OutboundAppsClass$1, PasscodeClass as PasscodeClass$1, PasswordClass as PasswordClass$1, PhoneFieldClass as PhoneFieldClass$1, PhoneFieldInputBoxClass as PhoneFieldInputBoxClass$1, PolicyValidationClass as PolicyValidationClass$1, RadioGroupClass as RadioGroupClass$1, RecaptchaClass as RecaptchaClass$1, RecoveryCodesClass as RecoveryCodesClass$1, SamlGroupMappingsClass as SamlGroupMappingsClass$1, ScopesListClass as ScopesListClass$1, SecurityQuestionsSetupClass as SecurityQuestionsSetupClass$1, SecurityQuestionsVerifyClass as SecurityQuestionsVerifyClass$1, SwitchToggleClass as SwitchToggleClass$1, TextAreaClass as TextAreaClass$1, TextClass as TextClass$1, TextFieldClass as TextFieldClass$1, ThirdPartyAppLogoClass as ThirdPartyAppLogoClass$1, TimerButtonClass as TimerButtonClass$1, TooltipClass as TooltipClass$1, TotpImageClass as TotpImageClass$1, TrustedDevicesClass as TrustedDevicesClass$1, UploadFileClass as UploadFileClass$1, UserAttributeClass as UserAttributeClass$1, UserAuthMethodClass as UserAuthMethodClass$1, UserPasskeysClass as UserPasskeysClass$1, componentsThemeManager as componentsThemeManager$1, createComponentsTheme as createComponentsTheme$1, darkTheme as darkTheme$1, defaultTheme as defaultTheme$1, genColor as genColor$1, globalsThemeToStyle as globalsThemeToStyle$1, themeToStyle as themeToStyle$1, themeVars as themeVars$1 } from '@descope/web-components-ui';
import React, { useMemo } from 'react';

// component classes
const IconClass = IconClass$1;
const CheckboxClass = CheckboxClass$1;
const SwitchToggleClass = SwitchToggleClass$1;
const ButtonClass = ButtonClass$1;
const LoaderLinearClass = LoaderLinearClass$1;
const LoaderRadialClass = LoaderRadialClass$1;
const ContainerClass = ContainerClass$1;
const DividerClass = DividerClass$1;
const EmailFieldClass = EmailFieldClass$1;
const LinkClass = LinkClass$1;
const LogoClass = LogoClass$1;
const TotpImageClass = TotpImageClass$1;
const NotpImageClass = NotpImageClass$1;
const NumberFieldClass = NumberFieldClass$1;
const PasscodeClass = PasscodeClass$1;
const PasswordClass = PasswordClass$1;
const TextClass = TextClass$1;
const EnrichedTextClass = EnrichedTextClass$1;
const TextAreaClass = TextAreaClass$1;
const TextFieldClass = TextFieldClass$1;
const ImageClass = ImageClass$1;
const PhoneFieldClass = PhoneFieldClass$1;
const PhoneFieldInputBoxClass = PhoneFieldInputBoxClass$1;
const NewPasswordClass = NewPasswordClass$1;
const RecaptchaClass = RecaptchaClass$1;
const UploadFileClass = UploadFileClass$1;
const ButtonSelectionGroupClass = ButtonSelectionGroupClass$1;
const ButtonMultiSelectionGroupClass = ButtonMultiSelectionGroupClass$1;
const ModalClass = ModalClass$1;
const NotificationClass = NotificationClass$1;
const GridClass = GridClass$1;
const BadgeClass = BadgeClass$1;
const MultiSelectComboBoxClass = MultiSelectComboBoxClass$1;
const MultiLineMappingsClass = MultiLineMappingsClass$1;
const AvatarClass = AvatarClass$1;
const UserAttributeClass = UserAttributeClass$1;
const UserAuthMethodClass = UserAuthMethodClass$1;
const MappingsFieldClass = MappingsFieldClass$1;
const SamlGroupMappingsClass = SamlGroupMappingsClass$1;
const PolicyValidationClass = PolicyValidationClass$1;
const CodeSnippetClass = CodeSnippetClass$1;
const ComboBoxClass = ComboBoxClass$1;
const RadioGroupClass = RadioGroupClass$1;
const DateFieldClass = DateFieldClass$1;
const CalendarClass = CalendarClass$1;
const ListClass = ListClass$1;
const AppsListClass = AppsListClass$1;
const ScopesListClass = ScopesListClass$1;
const ThirdPartyAppLogoClass = ThirdPartyAppLogoClass$1;
const SecurityQuestionsSetupClass = SecurityQuestionsSetupClass$1;
const SecurityQuestionsVerifyClass = SecurityQuestionsVerifyClass$1;
const HybridFieldClass = HybridFieldClass$1;
const AlertClass = AlertClass$1;
const AddressFieldClass = AddressFieldClass$1;
const CountrySubdivisionCityFieldClass = CountrySubdivisionCityFieldClass$1;
const TimerButtonClass = TimerButtonClass$1;
const CollapsibleContainerClass = CollapsibleContainerClass$1;
const RecoveryCodesClass = RecoveryCodesClass$1;
const HcaptchaClass = HcaptchaClass$1;
const OutboundAppsClass = OutboundAppsClass$1;
const OutboundAppButtonClass = OutboundAppButtonClass$1;
const TrustedDevicesClass = TrustedDevicesClass$1;
const TooltipClass = TooltipClass$1;
const HoneypotClass = HoneypotClass$1;
const AttachmentClass = AttachmentClass$1;
const UserPasskeysClass = UserPasskeysClass$1;

const Checkbox = React.forwardRef((props, ref) => React.createElement("descope-checkbox", { ...props, ref: ref }));

const Switch = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-switch-toggle", { size: size, ...props, ref: ref })));

const Boolean = React.forwardRef(({ type, ...props }, ref) => {
    switch (type) {
        case 'checkbox':
            return React.createElement(Checkbox, { ...props, ref: ref });
        case 'switch':
            return React.createElement(Switch, { ...props, ref: ref });
        default:
            return null;
    }
});

var apple = "data:image/svg+xml;base64,CTxzdmcKCQl3aWR0aD0iMS41ZW0iCgkJaGVpZ2h0PSIxLjVlbSIKCQl2aWV3Qm94PSIwIDAgODAwIDEwMDAiCgkJeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgoJCWZpbGw9IiMwMDAwMDAiCgkJZGF0YS1pY29uPSJhcHBsZSIKCT4KCQk8cGF0aCBkPSJNNzg4LjEgMzQwLjljLTUuOCA0LjUtMTA4LjIgNjIuMi0xMDguMiAxOTAuNSAwIDE0OC40IDEzMC4zIDIwMC45IDEzNC4yIDIwMi4yLS42IDMuMi0yMC43IDcxLjktNjguNyAxNDEuOS00Mi44IDYxLjYtODcuNSAxMjMuMS0xNTUuNSAxMjMuMXMtODUuNS0zOS41LTE2NC0zOS41Yy03Ni41IDAtMTAzLjcgNDAuOC0xNjUuOSA0MC44cy0xMDUuNi01Ny0xNTUuNS0xMjdDNDYuNyA3OTAuNyAwIDY2MyAwIDU0MS44YzAtMTk0LjQgMTI2LjQtMjk3LjUgMjUwLjgtMjk3LjUgNjYuMSAwIDEyMS4yIDQzLjQgMTYyLjcgNDMuNCAzOS41IDAgMTAxLjEtNDYgMTc2LjMtNDYgMjguNSAwIDEzMC45IDIuNiAxOTguMyA5OS4yem0tMjM0LTE4MS41YzMxLjEtMzYuOSA1My4xLTg4LjEgNTMuMS0xMzkuMyAwLTcuMS0uNi0xNC4zLTEuOS0yMC4xLTUwLjYgMS45LTExMC44IDMzLjctMTQ3LjEgNzUuOC0yOC41IDMyLjQtNTUuMSA4My42LTU1LjEgMTM1LjUgMCA3LjggMS4zIDE1LjYgMS45IDE4LjEgMy4yLjYgOC40IDEuMyAxMy42IDEuMyA0NS40IDAgMTAyLjUtMzAuNCAxMzUuNS03MS4zeiIgLz4KCTwvc3ZnPgo=";

var facebook = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSI1IDUgMjAgMjAiCiAgZmlsbD0iIzE4NzdGMiIKICBkYXRhLWljb249ImZhY2Vib29rIgogIAo+CiAgPHBhdGggZD0iTTI1IDE1LjA2MDlDMjUgOS41MDM4NSAyMC41MjM0IDUgMTUgNUM5LjQ3NjU4IDUgNSA5LjUwMzg1IDUgMTUuMDYwOUM1IDIwLjA4MzUgOC42NTYyNSAyNC4yNDU0IDEzLjQzNzUgMjVWMTcuOTY5MUgxMC44OTg0VjE1LjA2MDlIMTMuNDM3NVYxMi44NDQ0QzEzLjQzNzUgMTAuMzIzMiAxNC45Mjk3IDguOTMwMDQgMTcuMjE0OCA4LjkzMDA0QzE4LjMwODYgOC45MzAwNCAxOS40NTMxIDkuMTI2NTUgMTkuNDUzMSA5LjEyNjU1VjExLjYwMjVIMTguMTkxNEMxNi45NDkyIDExLjYwMjUgMTYuNTYyNSAxMi4zNzg3IDE2LjU2MjUgMTMuMTc0NVYxNS4wNjA5SDE5LjMzNTlMMTguODkyNiAxNy45NjkxSDE2LjU2MjVWMjVDMjEuMzQzNyAyNC4yNDU0IDI1IDIwLjA4MzUgMjUgMTUuMDYwOVoiIC8+Cjwvc3ZnPg==";

var slack = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSIwIDAgMTI0IDEyNCIKICBkYXRhLWljb249InNsYWNrIgogIAo+CiAgPGc+CiAgICA8cGF0aAogICAgICBkPSJNMjYuMzk5NiA3OC4xOTg4QzI2LjM5OTYgODUuMjk4OCAyMC41OTk2IDkxLjA5ODggMTMuNDk5NiA5MS4wOTg4QzYuMzk5NjEgOTEuMDk4OCAwLjU5OTYwOSA4NS4yOTg4IDAuNTk5NjA5IDc4LjE5ODhDMC41OTk2MDkgNzEuMDk4OCA2LjM5OTYxIDY1LjI5ODggMTMuNDk5NiA2NS4yOTg4SDI2LjM5OTZWNzguMTk4OFoiCiAgICAgIGZpbGw9IiNFMDFFNUEiCiAgICAvPgogICAgPHBhdGgKICAgICAgZD0iTTMyLjg5OTQgNzguMTk4OEMzMi44OTk0IDcxLjA5ODggMzguNjk5NCA2NS4yOTg4IDQ1Ljc5OTQgNjUuMjk4OEM1Mi44OTk0IDY1LjI5ODggNTguNjk5NCA3MS4wOTg4IDU4LjY5OTQgNzguMTk4OFYxMTAuNDk5QzU4LjY5OTQgMTE3LjU5OSA1Mi44OTk0IDEyMy4zOTkgNDUuNzk5NCAxMjMuMzk5QzM4LjY5OTQgMTIzLjM5OSAzMi44OTk0IDExNy41OTkgMzIuODk5NCAxMTAuNDk5Vjc4LjE5ODhaIgogICAgICBmaWxsPSIjRTAxRTVBIgogICAgLz4KICAgIDxwYXRoCiAgICAgIGQ9Ik00NS43OTk0IDI2LjM5OTZDMzguNjk5NCAyNi4zOTk2IDMyLjg5OTQgMjAuNTk5NiAzMi44OTk0IDEzLjQ5OTZDMzIuODk5NCA2LjM5OTYxIDM4LjY5OTQgMC41OTk2MDkgNDUuNzk5NCAwLjU5OTYwOUM1Mi44OTk0IDAuNTk5NjA5IDU4LjY5OTQgNi4zOTk2MSA1OC42OTk0IDEzLjQ5OTZWMjYuMzk5Nkg0NS43OTk0WiIKICAgICAgZmlsbD0iIzM2QzVGMCIKICAgIC8+CiAgICA8cGF0aAogICAgICBkPSJNNDUuNzk5NiAzMi45MDA0QzUyLjg5OTYgMzIuOTAwNCA1OC42OTk2IDM4LjcwMDQgNTguNjk5NiA0NS44MDA0QzU4LjY5OTYgNTIuOTAwNCA1Mi44OTk2IDU4LjcwMDQgNDUuNzk5NiA1OC43MDA0SDEzLjQ5OTZDNi4zOTk2MSA1OC43MDA0IDAuNTk5NjA5IDUyLjkwMDQgMC41OTk2MDkgNDUuODAwNEMwLjU5OTYwOSAzOC43MDA0IDYuMzk5NjEgMzIuOTAwNCAxMy40OTk2IDMyLjkwMDRINDUuNzk5NloiCiAgICAgIGZpbGw9IiMzNkM1RjAiCiAgICAvPgogICAgPHBhdGgKICAgICAgZD0iTTk3LjU5OTYgNDUuODAwNEM5Ny41OTk2IDM4LjcwMDQgMTAzLjQgMzIuOTAwNCAxMTAuNSAzMi45MDA0QzExNy42IDMyLjkwMDQgMTIzLjQgMzguNzAwNCAxMjMuNCA0NS44MDA0QzEyMy40IDUyLjkwMDQgMTE3LjYgNTguNzAwNCAxMTAuNSA1OC43MDA0SDk3LjU5OTZWNDUuODAwNFoiCiAgICAgIGZpbGw9IiMyRUI2N0QiCiAgICAvPgogICAgPHBhdGgKICAgICAgZD0iTTkxLjA5OTggNDUuNzk5NkM5MS4wOTk4IDUyLjg5OTYgODUuMjk5OCA1OC42OTk2IDc4LjE5OTggNTguNjk5NkM3MS4wOTk4IDU4LjY5OTYgNjUuMjk5OCA1Mi44OTk2IDY1LjI5OTggNDUuNzk5NlYxMy40OTk2QzY1LjI5OTggNi4zOTk2MSA3MS4wOTk4IDAuNTk5NjA5IDc4LjE5OTggMC41OTk2MDlDODUuMjk5OCAwLjU5OTYwOSA5MS4wOTk4IDYuMzk5NjEgOTEuMDk5OCAxMy40OTk2VjQ1Ljc5OTZaIgogICAgICBmaWxsPSIjMkVCNjdEIgogICAgLz4KICAgIDxwYXRoCiAgICAgIGQ9Ik03OC4xOTk4IDk3LjU5OTZDODUuMjk5OCA5Ny41OTk2IDkxLjA5OTggMTAzLjQgOTEuMDk5OCAxMTAuNUM5MS4wOTk4IDExNy42IDg1LjI5OTggMTIzLjQgNzguMTk5OCAxMjMuNEM3MS4wOTk4IDEyMy40IDY1LjI5OTggMTE3LjYgNjUuMjk5OCAxMTAuNVY5Ny41OTk2SDc4LjE5OThaIgogICAgICBmaWxsPSIjRUNCMjJFIgogICAgLz4KICAgIDxwYXRoCiAgICAgIGQ9Ik03OC4xOTk4IDkxLjA5ODhDNzEuMDk5OCA5MS4wOTg4IDY1LjI5OTggODUuMjk4OCA2NS4yOTk4IDc4LjE5ODhDNjUuMjk5OCA3MS4wOTg4IDcxLjA5OTggNjUuMjk4OCA3OC4xOTk4IDY1LjI5ODhIMTEwLjVDMTE3LjYgNjUuMjk4OCAxMjMuNCA3MS4wOTg4IDEyMy40IDc4LjE5ODhDMTIzLjQgODUuMjk4OCAxMTcuNiA5MS4wOTg4IDExMC41IDkxLjA5ODhINzguMTk5OFoiCiAgICAgIGZpbGw9IiNFQ0IyMkUiCiAgICAvPgogIDwvZz4KPC9zdmc+Cg==";

var fingerprint = "data:image/svg+xml;base64, ";

var passkey = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgd2lkdGg9IjEuNWVtIgogIGhlaWdodD0iMS41ZW0iCiAgZmlsbD0iIzAwMDAwMCIKICBkYXRhLWljb249InBhc3NrZXkiCiAgCj4KICA8Y2lyY2xlIGN4PSIxMC41IiBjeT0iNiIgcj0iNC41IiAvPgogIDxwYXRoIGQ9Ik0yMi41LDEwLjVhMy41LDMuNSwwLDEsMC01LDMuMTVWMTlMMTksMjAuNSwyMS41LDE4LDIwLDE2LjUsMjEuNSwxNWwtMS4yNC0xLjI0QTMuNSwzLjUsMCwwLDAsMjIuNSwxMC41Wm0tMy41LDBhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsMTksMTAuNVoiIC8+CiAgPHBhdGggZD0iTTE0LjQ0LDEyLjUyQTYsNiwwLDAsMCwxMiwxMkg5YTYsNiwwLDAsMC02LDZ2MkgxNlYxNC40OUE1LjE2LDUuMTYsMCwwLDEsMTQuNDQsMTIuNTJaIiAvPgo8L3N2Zz4K";

var github = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIxLjVlbSIKICBoZWlnaHQ9IjEuNWVtIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICBmaWxsPSIjMDAwMDAwIgogIHZpZXdCb3g9IjIuNSAyLjUgMjUgMjUiCiAgZGF0YS1pY29uPSJnaXRodWIiCiAgCj4KICA8cGF0aCBkPSJNMTUsM0M4LjM3MywzLDMsOC4zNzMsMywxNWMwLDUuNjIzLDMuODcyLDEwLjMyOCw5LjA5MiwxMS42M0MxMi4wMzYsMjYuNDY4LDEyLDI2LjI4LDEyLDI2LjA0N3YtMi4wNTEgYy0wLjQ4NywwLTEuMzAzLDAtMS41MDgsMGMtMC44MjEsMC0xLjU1MS0wLjM1My0xLjkwNS0xLjAwOWMtMC4zOTMtMC43MjktMC40NjEtMS44NDQtMS40MzUtMi41MjYgYy0wLjI4OS0wLjIyNy0wLjA2OS0wLjQ4NiwwLjI2NC0wLjQ1MWMwLjYxNSwwLjE3NCwxLjEyNSwwLjU5NiwxLjYwNSwxLjIyMmMwLjQ3OCwwLjYyNywwLjcwMywwLjc2OSwxLjU5NiwwLjc2OSBjMC40MzMsMCwxLjA4MS0wLjAyNSwxLjY5MS0wLjEyMWMwLjMyOC0wLjgzMywwLjg5NS0xLjYsMS41ODgtMS45NjJjLTMuOTk2LTAuNDExLTUuOTAzLTIuMzk5LTUuOTAzLTUuMDk4IGMwLTEuMTYyLDAuNDk1LTIuMjg2LDEuMzM2LTMuMjMzQzkuMDUzLDEwLjY0Nyw4LjcwNiw4LjczLDkuNDM1LDhjMS43OTgsMCwyLjg4NSwxLjE2NiwzLjE0NiwxLjQ4MUMxMy40NzcsOS4xNzQsMTQuNDYxLDksMTUuNDk1LDkgYzEuMDM2LDAsMi4wMjQsMC4xNzQsMi45MjIsMC40ODNDMTguNjc1LDkuMTcsMTkuNzYzLDgsMjEuNTY1LDhjMC43MzIsMC43MzEsMC4zODEsMi42NTYsMC4xMDIsMy41OTQgYzAuODM2LDAuOTQ1LDEuMzI4LDIuMDY2LDEuMzI4LDMuMjI2YzAsMi42OTctMS45MDQsNC42ODQtNS44OTQsNS4wOTdDMTguMTk5LDIwLjQ5LDE5LDIyLjEsMTksMjMuMzEzdjIuNzM0IGMwLDAuMTA0LTAuMDIzLDAuMTc5LTAuMDM1LDAuMjY4QzIzLjY0MSwyNC42NzYsMjcsMjAuMjM2LDI3LDE1QzI3LDguMzczLDIxLjYyNywzLDE1LDN6IiAvPgo8L3N2Zz4K";

var gitlab = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSIwIDAgMjU2IDIzNiIKICBkYXRhLWljb249ImdpdGxhYiIKICAKPgogIDxwYXRoCiAgICBkPSJNMTI4LjA3NSAyMzYuMDc1bDQ3LjEwNC0xNDQuOTdIODAuOTdsNDcuMTA0IDE0NC45N3oiCiAgICBmaWxsPSIjRTI0MzI5IgogIC8+CiAgPHBhdGgKICAgIGQ9Ik0xMjguMDc1IDIzNi4wNzRMODAuOTcgOTEuMTA0SDE0Ljk1NmwxMTMuMTE5IDE0NC45N3oiCiAgICBmaWxsPSIjRkM2RDI2IgogIC8+CiAgPHBhdGgKICAgIGQ9Ik0xNC45NTYgOTEuMTA0TC42NDIgMTM1LjE2YTkuNzUyIDkuNzUyIDAgMCAwIDMuNTQyIDEwLjkwM2wxMjMuODkxIDkwLjAxMi0xMTMuMTItMTQ0Ljk3eiIKICAgIGZpbGw9IiNGQ0EzMjYiCiAgLz4KICA8cGF0aAogICAgZD0iTTE0Ljk1NiA5MS4xMDVIODAuOTdMNTIuNjAxIDMuNzljLTEuNDYtNC40OTMtNy44MTYtNC40OTItOS4yNzUgMGwtMjguMzcgODcuMzE1eiIKICAgIGZpbGw9IiNFMjQzMjkiCiAgLz4KICA8cGF0aAogICAgZD0iTTEyOC4wNzUgMjM2LjA3NGw0Ny4xMDQtMTQ0Ljk3aDY2LjAxNWwtMTEzLjEyIDE0NC45N3oiCiAgICBmaWxsPSIjRkM2RDI2IgogIC8+CiAgPHBhdGgKICAgIGQ9Ik0yNDEuMTk0IDkxLjEwNGwxNC4zMTQgNDQuMDU2YTkuNzUyIDkuNzUyIDAgMCAxLTMuNTQzIDEwLjkwM2wtMTIzLjg5IDkwLjAxMiAxMTMuMTE5LTE0NC45N3oiCiAgICBmaWxsPSIjRkNBMzI2IgogIC8+CiAgPHBhdGgKICAgIGQ9Ik0yNDEuMTk0IDkxLjEwNWgtNjYuMDE1bDI4LjM3LTg3LjMxNWMxLjQ2LTQuNDkzIDcuODE2LTQuNDkyIDkuMjc1IDBsMjguMzcgODcuMzE1eiIKICAgIGZpbGw9IiNFMjQzMjkiCiAgLz4KPC9zdmc+Cg==";

var google = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIxLjVlbSIKICBoZWlnaHQ9IjEuNWVtIgogIHZpZXdCb3g9IjAgMCAyMCAyMCIKICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgZGF0YS1pY29uPSJnb29nbGUiCj4KICA8cGF0aAogICAgZD0ibTE5LjYgMTAuMjI3NGMwLS43MDkxMi0uMDYzNi0xLjM5MDkyLS4xODE4LTIuMDQ1NTJoLTkuNDE4MnYzLjg2ODIyaDUuMzgxOGMtLjIzMTggMS4yNS0uOTM2MyAyLjMwOTEtMS45OTU0IDMuMDE4MnYyLjUwOTFoMy4yMzE4YzEuODkwOS0xLjc0MDkgMi45ODE4LTQuMzA0NiAyLjk4MTgtNy4zNXoiCiAgICBmaWxsPSIjNDI4NWY0IgogIC8+CiAgPHBhdGgKICAgIGQ9Im0xMCAxOS45OTk5YzIuNyAwIDQuOTYzNi0uODk1NSA2LjYxODEtMi40MjI3bC0zLjIzMTgtMi41MDkxYy0uODk1NC42LTIuMDQwOS45NTQ1LTMuMzg2My45NTQ1LTIuNjA0NiAwLTQuODA5MS0xLjc1OTEtNS41OTU1LTQuMTIyN2gtMy4zNDA5djIuNTkwOWMxLjY0NTUgMy4yNjgyIDUuMDI3MyA1LjUwOTEgOC45MzY0IDUuNTA5MXoiCiAgICBmaWxsPSIjMzRhODUzIgogIC8+CiAgPHBhdGgKICAgIGQ9Im00LjQwNDUgMTEuODk5OWMtLjItLjYtLjMxMzYtMS4yNDA5LS4zMTM2LTEuODk5OTcgMC0uNjU5MS4xMTM2LTEuMy4zMTM2LTEuOXYtMi41OTA5aC0zLjM0MDljLS42NzcyIDEuMzUtMS4wNjM2IDIuODc3My0xLjA2MzYgNC40OTA5IDAgMS42MTM1Ny4zODY0IDMuMTQwODcgMS4wNjM2IDQuNDkwODd6IgogICAgZmlsbD0iI2ZiYmMwNCIKICAvPgogIDxwYXRoCiAgICBkPSJtMTAgMy45NzczYzEuNDY4MSAwIDIuNzg2My41MDQ1IDMuODIyNyAxLjQ5NTRsMi44NjgyLTIuODY4MmMtMS43MzE4LTEuNjEzNi0zLjk5NTUtMi42MDQ1LTYuNjkwOS0yLjYwNDUtMy45MDkxIDAtNy4yOTA5IDIuMjQwOS04LjkzNjQgNS41MDkxbDMuMzQwOSAyLjU5MDljLjc4NjQtMi4zNjM2IDIuOTkwOS00LjEyMjcgNS41OTU1LTQuMTIyN3oiCiAgICBmaWxsPSIjZTk0MjM1IgogIC8+Cjwvc3ZnPgo=";

var microsoft = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIxLjVlbSIKICBoZWlnaHQ9IjEuNWVtIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB2aWV3Qm94PSIzIDMgMjQgMjQiCiAgZGF0YS1pY29uPSJtaWNyb3NvZnQiCiAgCj4KICA8cmVjdAogICAgeD0iNSIKICAgIHk9IjE1LjcxNDMiCiAgICB3aWR0aD0iOS4yODU3MSIKICAgIGhlaWdodD0iOS4yODU3MSIKICAgIGZpbGw9IiMwNUE2RjAiCiAgLz4KICA8cmVjdAogICAgeD0iNSIKICAgIHk9IjUiCiAgICB3aWR0aD0iOS4yODU3MSIKICAgIGhlaWdodD0iOS4yODU3MSIKICAgIGZpbGw9IiNGMzUzMjUiCiAgLz4KICA8cmVjdAogICAgeD0iMTUuNzE0MyIKICAgIHk9IjE1LjcxNDMiCiAgICB3aWR0aD0iOS4yODU3MSIKICAgIGhlaWdodD0iOS4yODU3MSIKICAgIGZpbGw9IiNGRkJBMDgiCiAgLz4KICA8cmVjdAogICAgeD0iMTUuNzE0MyIKICAgIHk9IjUiCiAgICB3aWR0aD0iOS4yODU3MSIKICAgIGhlaWdodD0iOS4yODU3MSIKICAgIGZpbGw9IiM4MUJDMDYiCiAgLz4KPC9zdmc+Cg==";

var discord = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSIwIDAgMjU2IDIwMCIKICBmaWxsPSIjNTU2NmZiIgogIGRhdGEtaWNvbj0iZGlzY29yZCIKPgogIDxwYXRoIGQ9Ik0yMTYuODU2MzM5LDE2LjU5NjYwMzEgQzIwMC4yODUwMDIsOC44NDMyODY2NSAxODIuNTY2MTQ0LDMuMjA4NDk4OCAxNjQuMDQxNTY0LDAgQzE2MS43NjY1MjMsNC4xMTMxODEwNiAxNTkuMTA4NjI0LDkuNjQ1NDk5MDggMTU3LjI3NjA5OSwxNC4wNDY0Mzc5IEMxMzcuNTgzOTk1LDExLjA4NDk4OTYgMTE4LjA3Mjk2NywxMS4wODQ5ODk2IDk4Ljc0MzAxNjMsMTQuMDQ2NDM3OSBDOTYuOTEwODQxNyw5LjY0NTQ5OTA4IDk0LjE5MjU4MzgsNC4xMTMxODEwNiA5MS44OTcxODk1LDAgQzczLjM1MjYwNjgsMy4yMDg0OTg4IDU1LjYxMzM5NDksOC44NjM5OTExNyAzOS4wNDIwNTgzLDE2LjYzNzY2MTIgQzUuNjE3NTIyOTMsNjcuMTQ2NTE0IC0zLjQ0MzMxOTEsMTE2LjQwMDgxMyAxLjA4NzExMDY5LDE2NC45NTU3MjEgQzIzLjI1NjAxOTYsMTgxLjUxMDkxNSA0NC43NDAzNjM0LDE5MS41Njc2OTcgNjUuODYyMTMyNSwxOTguMTQ4NTc2IEM3MS4wNzcyMTUxLDE5MC45NzExMjYgNzUuNzI4MzYyOCwxODMuMzQxMzM1IDc5LjczNTIxMzksMTc1LjMwMDI2MSBDNzIuMTA0MDE5LDE3Mi40MDA1NzUgNjQuNzk0OTcyNCwxNjguODIyMjAyIDU3Ljg4ODc4NjYsMTY0LjY2Nzk2MyBDNTkuNzIwOTYxMiwxNjMuMzEwNTg5IDYxLjUxMzEzMDQsMTYxLjg5MTQ1MiA2My4yNDQ1ODk4LDE2MC40MzEyNTcgQzEwNS4zNjc0MSwxODAuMTMzMTg3IDE1MS4xMzQ5MjgsMTgwLjEzMzE4NyAxOTIuNzU0NTIzLDE2MC40MzEyNTcgQzE5NC41MDYzMzYsMTYxLjg5MTQ1MiAxOTYuMjk4MTU0LDE2My4zMTA1ODkgMTk4LjExMDMyNiwxNjQuNjY3OTYzIEMxOTEuMTgzNzg3LDE2OC44NDI1NTYgMTgzLjg1NDczNywxNzIuNDIwOTI5IDE3Ni4yMjM1NDIsMTc1LjMyMDk2NSBDMTgwLjIzMDM5MywxODMuMzQxMzM1IDE4NC44NjE1MzgsMTkwLjk5MTgzMSAxOTAuMDk2NjI0LDE5OC4xNjg5MyBDMjExLjIzODc0NiwxOTEuNTg4MDUxIDIzMi43NDMwMjMsMTgxLjUzMTYxOSAyNTQuOTExOTQ5LDE2NC45NTU3MjEgQzI2MC4yMjc3NDcsMTA4LjY2ODIwMSAyNDUuODMxMDg3LDU5Ljg2NjI0MzIgMjE2Ljg1NjMzOSwxNi41OTY2MDMxIFogTTg1LjQ3Mzg3NTIsMTM1LjA5NDg5IEM3Mi44MjkwMjgxLDEzNS4wOTQ4OSA2Mi40NTkyMjE3LDEyMy4yOTAxNTUgNjIuNDU5MjIxNywxMDguOTE0OTAxIEM2Mi40NTkyMjE3LDk0LjUzOTY0NzIgNzIuNjA3NTk1LDgyLjcxNDU1ODcgODUuNDczODc1Miw4Mi43MTQ1NTg3IEM5OC4zNDA1MDY0LDgyLjcxNDU1ODcgMTA4LjcwOTk2Miw5NC41MTg5NDI3IDEwOC40ODg1MjksMTA4LjkxNDkwMSBDMTA4LjUwODUzMSwxMjMuMjkwMTU1IDk4LjM0MDUwNjQsMTM1LjA5NDg5IDg1LjQ3Mzg3NTIsMTM1LjA5NDg5IFogTTE3MC41MjUyMzcsMTM1LjA5NDg5IEMxNTcuODgwMzksMTM1LjA5NDg5IDE0Ny41MTA1ODQsMTIzLjI5MDE1NSAxNDcuNTEwNTg0LDEwOC45MTQ5MDEgQzE0Ny41MTA1ODQsOTQuNTM5NjQ3MiAxNTcuNjU4NjA2LDgyLjcxNDU1ODcgMTcwLjUyNTIzNyw4Mi43MTQ1NTg3IEMxODMuMzkxNTE4LDgyLjcxNDU1ODcgMTkzLjc2MTMyNCw5NC41MTg5NDI3IDE5My41Mzk4OTEsMTA4LjkxNDkwMSBDMTkzLjUzOTg5MSwxMjMuMjkwMTU1IDE4My4zOTE1MTgsMTM1LjA5NDg5IDE3MC41MjUyMzcsMTM1LjA5NDg5IFoiIC8+Cjwvc3ZnPgo=";

var linkedin = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSIwIDAgNDAgNDAiCiAgZmlsbD0iIzI4NjdCMiIKICBkYXRhLWljb249ImxpbmtlZGluIgogIAo+CiAgPHBhdGgKICAgIGZpbGxSdWxlPSJldmVub2RkIgogICAgY2xpcFJ1bGU9ImV2ZW5vZGQiCiAgICBkPSJNMzcuMTQyOSAwSDIuODQ4MjFDMS4yNzY3OSAwIDAgMS4yOTQ2NCAwIDIuODgzOTNWMzcuMTE2MUMwIDM4LjcwNTQgMS4yNzY3OSA0MCAyLjg0ODIxIDQwSDM3LjE0MjlDMzguNzE0MyA0MCA0MCAzOC43MDU0IDQwIDM3LjExNjFWMi44ODM5M0M0MCAxLjI5NDY0IDM4LjcxNDMgMCAzNy4xNDI5IDBaTTEyLjA4OTMgMzQuMjg1N0g2LjE2MDcxVjE1LjE5NjRIMTIuMDk4MlYzNC4yODU3SDEyLjA4OTNaTTkuMTI1IDEyLjU4OTNDNy4yMjMyMSAxMi41ODkzIDUuNjg3NSAxMS4wNDQ2IDUuNjg3NSA5LjE1MTc5QzUuNjg3NSA3LjI1ODkzIDcuMjIzMjEgNS43MTQyOSA5LjEyNSA1LjcxNDI5QzExLjAxNzkgNS43MTQyOSAxMi41NjI1IDcuMjU4OTMgMTIuNTYyNSA5LjE1MTc5QzEyLjU2MjUgMTEuMDUzNiAxMS4wMjY4IDEyLjU4OTMgOS4xMjUgMTIuNTg5M1YxMi41ODkzWk0zNC4zMTI1IDM0LjI4NTdIMjguMzgzOVYyNUMyOC4zODM5IDIyLjc4NTcgMjguMzM5MyAxOS45Mzc1IDI1LjMwMzYgMTkuOTM3NUMyMi4yMTQzIDE5LjkzNzUgMjEuNzQxMSAyMi4zNDgyIDIxLjc0MTEgMjQuODM5M1YzNC4yODU3SDE1LjgxMjVWMTUuMTk2NEgyMS41VjE3LjgwMzZIMjEuNTgwNEMyMi4zNzUgMTYuMzAzNiAyNC4zMTI1IDE0LjcyMzIgMjcuMTk2NCAxNC43MjMyQzMzLjE5NjQgMTQuNzIzMiAzNC4zMTI1IDE4LjY3ODYgMzQuMzEyNSAyMy44MjE0VjM0LjI4NTdWMzQuMjg1N1oiCiAgLz4KPC9zdmc+Cg==";

var sso = "data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMS41ZW0iCiAgaGVpZ2h0PSIxLjVlbSIKICB2aWV3Qm94PSI1MCAzMCA0MTAgNDUwIgogIGZpbGw9IiMwMDAwMDAiCiAgZGF0YS1pY29uPSJzc28iCiAgCj4KICA8cGF0aCBkPSJNNTYuNjI5LDM3OS4yYy0xNC4wOSwxNC4wNzEtMTQuMDksMzYuOTc1LDAsNTEuMDU1ICBjMTQuMDgsMTQuMDg3LDM2Ljk4MSwxNC4wODcsNTAuOTY1LDBsMTAuMTc3LTEwLjA4bDQyLjQzOCw0Mi40MjhjNy4yNTcsNy4yNjgsMTguODg4LDcuMjY4LDI2LjE1NSwwbDYzLjI0NC02My4yNDQgIGM3LjI2OC03LjI1NSw3LjI2OC0xOC44OSwwLTI2LjE1N2wtNDIuNDI5LTQyLjQyN2w3NS41ODYtNzUuNjgyYzE2LjE3NCw4LjM1NywzNC42MSwxMy4wNzUsNTQuMDU5LDEzLjA3NSAgYzY1LjIzNCwwLDExOC4xMTEtNTIuODY5LDExOC4xMTEtMTE4LjEwOWMwLTY1LjIzMi01Mi44NzctMTE4LjExMS0xMTguMTExLTExOC4xMTFjLTY1LjIzOCwwLTExOC4xMSw1Mi44NzktMTE4LjExLDExOC4xMTEgIGMwLDE5LjQ0OSw0LjcyMSwzNy44ODYsMTMuMDc3LDU0LjA2TDU2LjYyOSwzNzkuMnogTTI5MS4zOTYsMTUwLjA1OWMwLTI1LjA3NSwyMC4zNTQtNDUuNDI5LDQ1LjQyNy00NS40MjkgIGMyNS4wNzYsMCw0NS40MjYsMjAuMzU0LDQ1LjQyNiw0NS40MjlzLTIwLjM1LDQ1LjQyNi00NS40MjYsNDUuNDI2QzMxMS43NTEsMTk1LjQ4NSwyOTEuMzk2LDE3NS4xMzMsMjkxLjM5NiwxNTAuMDU5eiIgLz4KPC9zdmc+Cg==";

var whatsapp = "data:image/svg+xml;base64,PHN2ZwogIGZpbGw9Im5vbmUiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgd2lkdGg9IjI0IgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAKPgogIDxjbGlwUGF0aCBpZD0iYSI+CiAgICA8cGF0aCBkPSJtMCAwaDI0djI0aC0yNHoiIC8+CiAgPC9jbGlwUGF0aD4KICA8Y2xpcFBhdGggaWQ9ImIiPgogICAgPHBhdGggZD0ibTAgMGgyNHYyNGgtMjR6IiAvPgogIDwvY2xpcFBhdGg+CiAgPGcgY2xpcFBhdGg9InVybCgjYSkiPgogICAgPGcgY2xpcFBhdGg9InVybCgjYikiPgogICAgICA8cGF0aAogICAgICAgIGNsaXBSdWxlPSJldmVub2RkIgogICAgICAgIGQ9Im0yMC41MDMxIDMuNDg1MDFjLTIuMjU1OC0yLjI0NjIzLTUuMjU2LTMuNDgzODcwMzYtOC40NTI3LTMuNDg1MDEtNi41ODcgMC0xMS45NDc4MzYgNS4zMzA2NS0xMS45NTAxMjggMTEuODgzLS4wMDExNDYgMi4wOTQ2LjU0OTQ5MiA0LjEzOTEgMS41OTUxODggNS45NDA5bC0xLjY5NTQ2IDYuMTU4NiA2LjMzNDkxLTEuNjUyNWMxLjc0NTI5Ljk0NzEgMy43MTA1OSAxLjQ0NTYgNS43MTAzOSAxLjQ0NjJoLjAwNTFjNi41ODU5IDAgMTEuOTQ3My01LjMzMTIgMTEuOTQ5Ni0xMS44ODM1LjAwMTEtMy4xNzU2LTEuMjQwNS02LjE2MDktMy40OTY5LTguNDA3MTJ6bS04LjQ1MjcgMTguMjg0MjloLS4wMDRjLTEuNzgyLS4wMDA1LTMuNTMwMTMtLjQ3NjktNS4wNTU0LTEuMzc2N2wtLjM2MjcyLS4yMTQyLTMuNzU5MzUuOTgwNiAxLjAwMzMtMy42NDUxLS4yMzYwOC0uMzczOGMtLjk5NDEyLTEuNTcyNy0xLjUxOTU1LTMuMzkwNC0xLjUxODQtNS4yNTY1LjAwMjI5LTUuNDQ1NzkgNC40NTc4MS05Ljg3NjcgOS45MzY3NS05Ljg3NjcgMi42NTI4LjAwMTE0IDUuMTQ2NSAxLjAyOTY2IDcuMDIxOCAyLjg5Njk2IDEuODc1NCAxLjg2NjczIDIuOTA3NCA0LjM0ODg3IDIuOTA2MiA2Ljk4NzY0LS4wMDIzIDUuNDQ2NC00LjQ1NzggOS44NzczLTkuOTMyMSA5Ljg3NzN6bTUuNDQ3OS03LjM5NzNjLS4yOTg1LS4xNDg4LTEuNzY2NC0uODY2OC0yLjA0MDQtLjk2NTktLjI3MzgtLjA5OTItLjQ3MjYtLjE0ODctLjY3MTUuMTQ4Ny0uMTk4OC4yOTc1LS43NzEyLjk2NjUtLjk0NTQgMS4xNjQyLS4xNzQyLjE5ODMtLjM0ODQuMjIyOC0uNjQ2OS4wNzQtLjI5ODUtLjE0ODctMS4yNjA2LS40NjIxLTIuNDAxNC0xLjQ3MzUtLjg4NzUtLjc4NzUtMS40ODY5LTEuNzU5Ni0xLjY2MTAzLTIuMDU3MS0uMTc0Mi0uMjk3NC0uMDE4MzQtLjQ1ODEuMTMwNi0uNjA1Ny4xMzQwNi0uMTMzMy4yOTg1My0uMzQ3LjQ0ODA2LS41MjAyLjE0OTYtLjE3MzI1LjE5ODg3LS4yOTc0My4yOTg1Ny0uNDk1Mi4wOTk3LS4xOTgyOS4wNDk4LS4zNzE0Ny0uMDI0NjMtLjUyMDI0LS4wNzQ1NC0uMTQ4NzEtLjY3MTU0LTEuNjEwMzItLjkyMDgtMi4yMDQ2Mi0uMjQyNC0uNTc4OTItLjQ4ODc0LS41MDAyOS0uNjcxNTQtLjUwOTk3LS4xNzQyLS4wMDg1NS0uMzczLS4wMTAyNi0uNTcyNC0uMDEwMjZzLS41MjI2LjA3NDA4LS43OTY0Ni4zNzE1MmMtLjI3Mzg3LjI5NzQyLTEuMDQ1MTMgMS4wMTU5Ni0xLjA0NTEzIDIuNDc2OTggMCAxLjQ2MDk5IDEuMDY5NzkgMi44NzM1OSAxLjIxOTMzIDMuMDcxODkuMTQ5NTMuMTk4MyAyLjEwNTY2IDMuMTk3MyA1LjEwMDYzIDQuNDgzOS43MTIzLjMwNiAxLjI2ODYuNDg4OSAxLjcwMjQuNjI1Ny43MTUxLjIyNjIgMS4zNjYuMTk0MyAxLjg4MDUuMTE3OS41NzM2LS4wODU0IDEuNzY2NS0uNzE4NSAyLjAxNTItMS40MTJzLjI0ODctMS4yODg0LjE3NDItMS40MTJjLS4wNzQ1LS4xMjM3LS4yNzM5LS4xOTgzLS41NzI0LS4zNDd6IgogICAgICAgIGZpbGw9IiMyNUQzNjYiCiAgICAgICAgZmlsbFJ1bGU9ImV2ZW5vZGQiCiAgICAgIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";

var plus = "data:image/svg+xml;base64,PHN2ZwogIGhlaWdodD0iMjQiCiAgdmlld0JveD0iMCAwIDEyIDEyIgogIHdpZHRoPSIyNCIKICBmaWxsPSJub25lIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAKPgogIDxwYXRoCiAgICBkPSJNNS4yMTgxIDUuMjE4MUgxLjIyMzA1QzAuNzkxMzU5IDUuMjE4MSAwLjQ0MTQwNiA1LjU2ODA1IDAuNDQxNDA2IDUuOTk5NzRDMC40NDE0MDYgNi40MzE0MyAwLjc5MTM1OSA2Ljc4MTM4IDEuMjIzMDUgNi43ODEzOEg1LjIxODFWMTAuNzc2NEM1LjIxODEgMTEuMjA4MSA1LjU2ODA1IDExLjU1ODEgNS45OTk3NCAxMS41NTgxQzYuNDMxNDMgMTEuNTU4MSA2Ljc4MTM4IDExLjIwODEgNi43ODEzOCAxMC43NzY0VjYuNzgxMzhIMTAuNzc2NEMxMS4yMDgxIDYuNzgxMzggMTEuNTU4MSA2LjQzMTQzIDExLjU1ODEgNS45OTk3NEMxMS41NTgxIDUuNTY4MDUgMTEuMjA4MSA1LjIxODEgMTAuNzc2NCA1LjIxODFINi43ODEzOFYxLjIyMzA1QzYuNzgxMzggMC43OTEzNTkgNi40MzE0MyAwLjQ0MTQwNiA1Ljk5OTc0IDAuNDQxNDA2QzUuNTY4MDUgMC40NDE0MDYgNS4yMTgxIDAuNzkxMzU5IDUuMjE4MSAxLjIyMzA1VjUuMjE4MVoiCiAgICBmaWxsPSIjMDA2QUY1IgogIC8+Cjwvc3ZnPgo=";

var password = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAKPgogIDxwYXRoCiAgICBkPSJNMiAxN0gyMlYxOUgyVjE3Wk0zLjE1IDEyLjk1TDQgMTEuNDdMNC44NSAxMi45NUw2LjE1IDEyLjJMNS4zIDEwLjcySDdWOS4yMkg1LjNMNi4xNSA3Ljc1TDQuODUgN0w0IDguNDdMMy4xNSA3TDEuODUgNy43NUwyLjcgOS4yMkgxVjEwLjcySDIuN0wxLjg1IDEyLjJMMy4xNSAxMi45NVpNOS44NSAxMi4yTDExLjE1IDEyLjk1TDEyIDExLjQ3TDEyLjg1IDEyLjk1TDE0LjE1IDEyLjJMMTMuMyAxMC43MkgxNVY5LjIySDEzLjNMMTQuMTUgNy43NUwxMi44NSA3TDEyIDguNDdMMTEuMTUgN0w5Ljg1IDcuNzVMMTAuNyA5LjIySDlWMTAuNzJIMTAuN0w5Ljg1IDEyLjJaTTIzIDkuMjJIMjEuM0wyMi4xNSA3Ljc1TDIwLjg1IDdMMjAgOC40N0wxOS4xNSA3TDE3Ljg1IDcuNzVMMTguNyA5LjIySDE3VjEwLjcySDE4LjdMMTcuODUgMTIuMkwxOS4xNSAxMi45NUwyMCAxMS40N0wyMC44NSAxMi45NUwyMi4xNSAxMi4yTDIxLjMgMTAuNzJIMjNWOS4yMloiCiAgICBmaWxsPSIjODA4MDgwIgogIC8+Cjwvc3ZnPgo=";

var reload = "data:image/svg+xml;base64,CTxzdmcKCQl3aWR0aD0iMjQiCgkJaGVpZ2h0PSIyNCIKCQl2aWV3Qm94PSIwIDAgMTQgMTYiCgkJZmlsbD0ibm9uZSIKCQl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCgk+CgkJPHBhdGgKCQkJZD0iTTIuMDAwNjUgOC44MzM5OEMyLjAwMDY1IDcuNDU4OTggMi41NTg5OCA2LjIwODk4IDMuNDY3MzIgNS4zMDA2NUwyLjI4Mzk4IDQuMTE3MzJDMS4wODM5OCA1LjMyNTY1IDAuMzMzOTg0IDYuOTkyMzIgMC4zMzM5ODQgOC44MzM5OEMwLjMzMzk4NCAxMi4yMzQgMi44NzU2NSAxNS4wMzQgNi4xNjczMiAxNS40NDIzVjEzLjc1OUMzLjgwODk4IDEzLjM1OSAyLjAwMDY1IDExLjMwOSAyLjAwMDY1IDguODMzOThaTTEzLjY2NzMgOC44MzM5OEMxMy42NjczIDUuMTUwNjUgMTAuNjg0IDIuMTY3MzIgNy4wMDA2NSAyLjE2NzMyQzYuOTUwNjUgMi4xNjczMiA2LjkwMDY1IDIuMTc1NjUgNi44NTA2NSAyLjE3NTY1TDcuNzU4OTggMS4yNjczMkw2LjU4Mzk4IDAuMDgzOTg0NEwzLjY2NzMyIDMuMDAwNjVMNi41ODM5OCA1LjkxNzMyTDcuNzU4OTggNC43NDIzMkw2Ljg1ODk4IDMuODQyMzJDNi45MDg5OCAzLjg0MjMyIDYuOTU4OTggMy44MzM5OCA3LjAwMDY1IDMuODMzOThDOS43NTg5OCAzLjgzMzk4IDEyLjAwMDcgNi4wNzU2NSAxMi4wMDA3IDguODMzOThDMTIuMDAwNyAxMS4zMDkgMTAuMTkyMyAxMy4zNTkgNy44MzM5OCAxMy43NTlWMTUuNDQyM0MxMS4xMjU3IDE1LjAzNCAxMy42NjczIDEyLjIzNCAxMy42NjczIDguODMzOThaIgoJCQlmaWxsPSIjMDA2QUY1IgoJCS8+Cgk8L3N2Zz4K";

var authenticator = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjI0IDUuNzQ5OTlDMTMuMDcgNC41Nzk5OSAxMS41NCAzLjk4OTk5IDEwIDMuOTg5OTlWOS45ODk5OUw1Ljc2IDE0LjIzQzguMSAxNi41NyAxMS45IDE2LjU3IDE0LjI1IDE0LjIzQzE2LjU5IDExLjg5IDE2LjU5IDguMDg5OTkgMTQuMjQgNS43NDk5OVpNMTAgLTAuMDEwMDA5OEM0LjQ4IC0wLjAxMDAwOTggMCA0LjQ2OTk5IDAgOS45ODk5OUMwIDE1LjUxIDQuNDggMTkuOTkgMTAgMTkuOTlDMTUuNTIgMTkuOTkgMjAgMTUuNTEgMjAgOS45ODk5OUMyMCA0LjQ2OTk5IDE1LjUyIC0wLjAxMDAwOTggMTAgLTAuMDEwMDA5OFpNMTAgMTcuOTlDNS41OCAxNy45OSAyIDE0LjQxIDIgOS45ODk5OUMyIDUuNTY5OTkgNS41OCAxLjk4OTk5IDEwIDEuOTg5OTlDMTQuNDIgMS45ODk5OSAxOCA1LjU2OTk5IDE4IDkuOTg5OTlDMTggMTQuNDEgMTQuNDIgMTcuOTkgMTAgMTcuOTlaIiBmaWxsPSIjNjM2Qzc0Ii8+Cjwvc3ZnPgo=";

var edit = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMS41ZW0iIGhlaWdodD0iMS41ZW0iIHZpZXdCb3g9Ii0xIC0xIDE2IDE2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMTAuMDAwMiAwLjk5MjAyN0MxMC4wMDAyIDEuMDE2MDMgMTAuMDAwMiAxLjAxNjAzIDEwLjAwMDIgMS4wMTYwM0w4LjIyNDE5IDMuMDA4MDNIMi45OTIxOUMyLjQ2NDE5IDMuMDA4MDMgMi4wMDgxOSAzLjQ0MDAzIDIuMDA4MTkgMy45OTIwM1YxMi4wMDhDMi4wMDgxOSAxMi41MzYgMi40NDAxOSAxMi45OTIgMi45OTIxOSAxMi45OTJINS41MzYxOUM1Ljg0ODE5IDEzLjA0IDYuMTYwMTkgMTMuMDQgNi40NzIxOSAxMi45OTJIMTEuMDA4MkMxMS41MzYyIDEyLjk5MiAxMS45OTIyIDEyLjU2IDExLjk5MjIgMTIuMDA4VjcuNzg0MDNMMTMuOTM2MiA1LjYyNDAzTDE0LjAwODIgNS42NzIwM1YxMS45ODRDMTQuMDA4MiAxMy42NjQgMTIuNjY0MiAxNS4wMDggMTEuMDA4MiAxNS4wMDhIMy4wMTYxOUMxLjMzNjE5IDE1LjAwOCAtMC4wMDc4MTI1IDEzLjY2NCAtMC4wMDc4MTI1IDExLjk4NFYzLjk5MjAzQy0wLjAwNzgxMjUgMi4zMzYwMyAxLjMzNjE5IDAuOTkyMDI3IDMuMDE2MTkgMC45OTIwMjdIMTAuMDAwMlpNMTEuMjcyMiAyLjYyNDAzTDEyLjYxNjIgNC4xMTIwM0w3LjcyMDE5IDkuNjgwMDRDNy41MDQxOSA5LjkyMDA0IDYuODMyMTkgMTAuMjMyIDUuNjgwMTkgMTAuNjE2QzUuNjU2MTkgMTAuNjQgNS42MDgxOSAxMC42NCA1LjU2MDE5IDEwLjYxNkM1LjQ2NDE5IDEwLjU5MiA1LjM5MjE5IDEwLjQ3MiA1LjQ0MDE5IDEwLjM3NkM1Ljc1MjE5IDkuMjQ4MDMgNi4wNDAxOSA4LjU1MjAzIDYuMjU2MTkgOC4zMTIwM0wxMS4yNzIyIDIuNjI0MDNaTTExLjkyMDIgMS44NTYwM0wxMy4yODgyIDAuMzIwMDI3QzEzLjY0ODIgLTAuMDg3OTczNiAxNC4yNzIyIC0wLjExMTk3NCAxNC42ODAyIDAuMjcyMDI3QzE1LjA4ODIgMC42MzIwMjcgMTUuMTEyMiAxLjI4MDAzIDE0Ljc1MjIgMS42ODgwM0wxMy4yNjQyIDMuMzY4MDNMMTEuOTIwMiAxLjg1NjAzWiIgZmlsbD0iIzAwNkFGNSIvPgo8L3N2Zz4K";

var lock = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMTIuOTk5OCAzQzguMDI5NzcgMyAzLjk5OTc3IDcuMDMgMy45OTk3NyAxMkMzLjk5OTc3IDEyLjA2IDQuMDA5NzcgMTIuMTIgNC4wMDk3NyAxMi4xOUwyLjE2OTc3IDEwLjM1TDAuNzU5NzY2IDExLjc2TDQuOTk5NzcgMTZMOS4yMzk3NyAxMS43Nkw3LjgyOTc3IDEwLjM1TDYuMDA5NzcgMTIuMTdDNi4wMDk3NyAxMi4xMSA1Ljk5OTc3IDEyLjA2IDUuOTk5NzcgMTJDNS45OTk3NyA4LjE0IDkuMTM5NzcgNSAxMi45OTk4IDVDMTYuODU5OCA1IDE5Ljk5OTggOC4xNCAxOS45OTk4IDEyQzE5Ljk5OTggMTUuODYgMTYuODU5OCAxOSAxMi45OTk4IDE5QzExLjA5OTggMTkgOS4zNzk3NyAxOC4yNCA4LjExOTc3IDE3LjAxTDYuNjk5NzcgMTguNDJDOC4zMTk3NyAyMC4wMSAxMC41NDk4IDIxIDEyLjk5OTggMjFDMTcuOTY5OCAyMSAyMS45OTk4IDE2Ljk3IDIxLjk5OTggMTJDMjEuOTk5OCA3LjAzIDE3Ljk2OTggMyAxMi45OTk4IDNaTTE0Ljk5OTggMTFWMTBDMTQuOTk5OCA4LjkgMTQuMDk5OCA4IDEyLjk5OTggOEMxMS44OTk4IDggMTAuOTk5OCA4LjkgMTAuOTk5OCAxMFYxMUMxMC40NDk4IDExIDkuOTk5NzcgMTEuNDUgOS45OTk3NyAxMlYxNUM5Ljk5OTc3IDE1LjU1IDEwLjQ0OTggMTYgMTAuOTk5OCAxNkgxNC45OTk4QzE1LjU0OTggMTYgMTUuOTk5OCAxNS41NSAxNS45OTk4IDE1VjEyQzE1Ljk5OTggMTEuNDUgMTUuNTQ5OCAxMSAxNC45OTk4IDExWk0xMy45OTk4IDExSDExLjk5OThWMTBDMTEuOTk5OCA5LjQ1IDEyLjQ0OTggOSAxMi45OTk4IDlDMTMuNTQ5OCA5IDEzLjk5OTggOS40NSAxMy45OTk4IDEwVjExWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4=";

var sessiontoken = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYgMjBWMTBIMThWMTFDMTguNyAxMSAxOS4zNyAxMS4xIDIwIDExLjI5VjEwQzIwIDguOSAxOS4xIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxQzkuMjQgMSA3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxMi4yNkMxMS44NCAyMS40IDExLjUxIDIwLjcyIDExLjI5IDIwSDZaTTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzQzEzLjY2IDMgMTUgNC4zNCAxNSA2VjhIOVY2WiIgZmlsbD0iIzE4MUExQyIvPgo8cGF0aCBkPSJNMTggMTNDMTUuMjQgMTMgMTMgMTUuMjQgMTMgMThDMTMgMjAuNzYgMTUuMjQgMjMgMTggMjNDMjAuNzYgMjMgMjMgMjAuNzYgMjMgMThDMjMgMTUuMjQgMjAuNzYgMTMgMTggMTNaTTE5LjY1IDIwLjM1TDE3LjUgMTguMlYxNUgxOC41VjE3Ljc5TDIwLjM1IDE5LjY0TDE5LjY1IDIwLjM1WiIgZmlsbD0iIzE4MUExQyIvPgo8L3N2Zz4K";

// @ts-ignore

var icons = /*#__PURE__*/Object.freeze({
    __proto__: null,
    apple: apple,
    authenticator: authenticator,
    discord: discord,
    edit: edit,
    facebook: facebook,
    fingerprint: fingerprint,
    github: github,
    gitlab: gitlab,
    google: google,
    linkedin: linkedin,
    lock: lock,
    microsoft: microsoft,
    passkey: passkey,
    password: password,
    plus: plus,
    reload: reload,
    sessiontoken: sessiontoken,
    slack: slack,
    sso: sso,
    whatsapp: whatsapp
});

function Icon({ icon, noColor, ...props }) {
    if (icons[icon]) {
        return (React.createElement("descope-icon", { src: icons[icon], ...(noColor && { 'st-fill': 'currentColor' }), ...props }));
    }
    return React.createElement("descope-icon", { "fill-color": noColor, src: icon, ...props });
}

const Tooltip = React.forwardRef(({ text, hideDelay = 0, hoverDelay = 0, children, readonly, staticDisplay, ...props }, ref) => (React.createElement("descope-tooltip", { text: text, "hide-delay": hideDelay, "hover-delay": hoverDelay, readonly: readonly, "static-display": staticDisplay, ref: ref, ...props }, children)));

const Button = React.forwardRef(({ 
// Button props
children, startIcon, startIconDark, startIconColorText, color = 'primary', size = 'md', variant = 'contained', 'data-name': dataName, 
// Tooltip props
hasTooltip, tooltipText, tooltipPosition, tooltipHoverDelay, tooltipHideDelay, tooltipOpened, tooltipReadOnly, ...props }, ref) => {
    const isSquare = useMemo(() => !!(startIcon && !children), [startIcon, children]);
    return (React.createElement(Tooltip, { text: hasTooltip ? tooltipText : undefined, position: tooltipPosition, hoverDelay: tooltipHoverDelay, hideDelay: tooltipHideDelay, opened: tooltipOpened, readonly: tooltipReadOnly },
        React.createElement("descope-button", { ...props, size: size, variant: variant, mode: color, ref: ref, square: isSquare, "data-name": dataName },
            startIcon != null && (React.createElement(Icon, { "data-name": `${dataName}-icon`, icon: startIcon, "src-dark": startIconDark, noColor: startIconColorText })),
            children)));
});

const Code = React.forwardRef((props, ref) => React.createElement("descope-passcode", { ref: ref, ...props }));

const isNumeric = (value) => /^\d*\.?\d+$/.test(value);

const justifyContent = {
    start: 'flex-start',
    center: 'safe center',
    end: 'flex-end',
    between: 'space-between',
    around: 'space-around',
    evenly: 'space-evenly'
};
const alignItems = {
    start: 'start',
    end: 'end',
    center: 'safe center',
    baseline: 'baseline',
    stretch: 'stretch'
};
const applyDefaults$1 = ({ paddingX, paddingY, align, justify, background, spaceBetween }) => ({
    'st-horizontal-padding': !paddingX || isNumeric(paddingX)
        ? `${Number.parseInt(paddingX || '0', 10) / 4}rem`
        : paddingX,
    'st-vertical-padding': !paddingY || isNumeric(paddingY)
        ? `${Number.parseInt(paddingY || '0', 10) / 4}rem`
        : paddingY,
    'st-align-items': alignItems[align],
    'st-justify-content': justifyContent[justify],
    'st-background-color': background,
    ...(spaceBetween
        ? {
            'st-gap': isNumeric(spaceBetween)
                ? `${Number.parseFloat(spaceBetween || '0') / 4}rem`
                : spaceBetween
        }
        : {})
});
const Container$1 = React.forwardRef(({ background, justify, paddingX, paddingY, shadow, width, align, spaceBetween, backgroundImageUrl, direction = 'row', variant, borderRadius, ...props }, ref) => {
    const mergedProps = {
        ...props,
        direction,
        shadow,
        variant,
        'border-radius': borderRadius || props['border-radius'],
        'st-host-width': width || '100%',
        'st-background-image': backgroundImageUrl?.trim()
            ? `url('${backgroundImageUrl.trim()}')`
            : undefined,
        ...(variant
            ? {}
            : applyDefaults$1({
                paddingX,
                paddingY,
                align,
                justify,
                background,
                spaceBetween
            }))
    };
    return React.createElement("descope-container", { ...mergedProps, ref: ref });
});

const Divider = React.forwardRef(({ children, ...restProps }, ref) => (React.createElement("descope-divider", { ...restProps, ref: ref }, children)));

const Image = React.forwardRef(({ width, height, 
// Tooltip props
hasTooltip, tooltipText, tooltipPosition, tooltipHoverDelay, tooltipHideDelay, tooltipOpened, tooltipReadOnly, ...restProps }, ref) => (React.createElement(Tooltip, { text: hasTooltip ? tooltipText : undefined, position: tooltipPosition, hoverDelay: tooltipHoverDelay, hideDelay: tooltipHideDelay, opened: tooltipOpened, readonly: tooltipReadOnly },
    React.createElement("descope-image", { ...restProps, ref: ref, "st-width": width, "st-height": height }))));

const NumberField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-number-field", { size: size, ...props, ref: ref })));

const EmailField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-email-field", { size: size, ...props, ref: ref })));

const TextField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-text-field", { size: size, ...props, ref: ref })));

const Password = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-password", { size: size, ...props, ref: ref })));

const DateField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-date-field", { size: size, ...props, ref: ref })));

const Input = React.forwardRef(({ type, size = 'md', ...rest }, ref) => {
    switch (type) {
        case 'email':
            return React.createElement(EmailField, { size: size, ...rest, ref: ref });
        case 'password':
            return React.createElement(Password, { size: size, ...rest, ref: ref });
        case 'number':
            return React.createElement(NumberField, { size: size, ...rest, ref: ref });
        case 'date':
            return React.createElement(DateField, { size: size, ...rest, ref: ref });
        default:
            return React.createElement(TextField, { size: size, ...rest, ref: ref });
    }
});

const Link = React.forwardRef(({ children, 
// Tooltip props
hasTooltip, tooltipText, tooltipPosition, tooltipHoverDelay, tooltipHideDelay, tooltipOpened, tooltipReadOnly, ...restProps }, ref) => (React.createElement(Tooltip, { text: hasTooltip ? tooltipText : undefined, position: tooltipPosition, hoverDelay: tooltipHoverDelay, hideDelay: tooltipHideDelay, opened: tooltipOpened, readonly: tooltipReadOnly },
    React.createElement("descope-link", { ...restProps, ref: ref }, children))));

const Loader = React.forwardRef(({ variant, color, ...restProps }, ref) => {
    const props = { mode: color, ...restProps, ref };
    switch (variant) {
        case 'linear':
            return React.createElement("descope-loader-linear", { ...props });
        case 'radial':
            return React.createElement("descope-loader-radial", { ...props });
        default:
            return null;
    }
});

const Logo = React.forwardRef(({ width, height, ...props }, ref) => (React.createElement("descope-logo", { "st-width": width, "st-height": height, ref: ref, ...props })));

// Escape characters that have a special meaning inside a JS regex character
// class so they appear as literals (used to build the disallowedchars regex
// from a tenant-configured chars list).
const escapeRegexClassChars = (s) => s.replace(/[\\\]\-^]/g, '\\$&');
const buildDisallowedCharsPattern = (chars) => chars ? `^[^${escapeRegexClassChars(chars)}]*$` : '';
const defaultProps = {
    'has-validation': false,
    'policy-label': 'Passwords must have:',
    // in the future, 'active-policies' can be injected in runtime
    'active-policies': [],
    /* these patterns are cloned in the orchestration service (context.go file)
     * make sure to update both places when changing it
     */
    // non-user-editable patterns
    'data-password-policy-pattern-minlength': '^.{{{value}},}$',
    'data-password-policy-pattern-lowercase': '[a-z]',
    'data-password-policy-pattern-uppercase': '[A-Z]',
    'data-password-policy-pattern-anyletter': '[a-zA-Z]',
    'data-password-policy-pattern-number': '\\d',
    'data-password-policy-pattern-nonalphanumeric': '[^a-zA-Z0-9]',
    // non-user-editable comparisons
    'data-password-policy-compare-passwordstrength': 'GTE',
    'data-password-policy-compare-disallowemail': 'STR_NEQ_CI',
    // props to override with data from policy
    'data-password-policy-value-minlength': '8',
    // translatable props
    'data-password-policy-message-minlength': 'At least {{value}} characters',
    'data-password-policy-message-lowercase': '1 lowercase letter',
    'data-password-policy-message-uppercase': '1 uppercase letter',
    'data-password-policy-message-anyletter': '1 letter (any case)',
    'data-password-policy-message-number': '1 number',
    'data-password-policy-message-nonalphanumeric': '1 symbol',
    'data-password-policy-message-passwordstrength': 'Password strength',
    'data-password-policy-message-disallowedchars': 'Does not contain: {{value}}',
    'data-password-policy-message-disallowemail': 'Does not match your email',
    'st-policy-preview-background-color': 'transparent',
    'st-policy-preview-padding': '0'
};
const NewPassword = React.forwardRef((props, ref) => {
    const mergedProps = { ...defaultProps, ...props };
    // Dynamic key lookups (`data-password-policy-${kind}-${id}`) below sit
    // outside the typed Props surface, so we read them through a narrow
    // Record alias rather than widening the whole mergedProps to `any`.
    const mergedPropsByKey = mergedProps;
    /* this logic is cloned in the orchestration service (context.go file)
     * make sure to update both places when changing it
     */
    const availablePolicies = JSON.stringify([
        'minlength',
        'lowercase',
        'uppercase',
        'anyletter',
        'number',
        'nonalphanumeric',
        'passwordstrength',
        'disallowedchars',
        'disallowemail'
    ].map((id) => {
        const entry = {
            id,
            message: mergedPropsByKey[`data-password-policy-message-${id}`],
            pattern: mergedPropsByKey[`data-password-policy-pattern-${id}`],
            compare: mergedPropsByKey[`data-password-policy-compare-${id}`],
            data: mergedPropsByKey[`data-password-policy-data-${id}`]
        };
        // disallowedchars: the pattern is `^[^<escaped chars>]*$`, built from
        // the configured chars list. Done here (rather than as a static
        // pattern with a `{{value}}` placeholder) so chars like `]`, `^`, `-`,
        // `\` are escaped instead of breaking the character class.
        if (id === 'disallowedchars') {
            const chars = mergedPropsByKey['data-password-policy-value-disallowedchars'] || '';
            entry.pattern = buildDisallowedCharsPattern(chars);
            entry.data = { value: chars };
        }
        return entry;
    }));
    return (React.createElement("descope-new-password", { ...mergedProps, ref: ref, "available-policies": availablePolicies }));
});

const PhoneCountrySelection = React.forwardRef((props, ref) => React.createElement("descope-phone-field", { ...props, ref: ref }));

const PhoneInputBox = React.forwardRef((props, ref) => React.createElement("descope-phone-input-box-field", { ...props, ref: ref }));

const Phone = React.forwardRef(({ variant, ...props }, ref) => {
    if (variant === 'inputBox') {
        return React.createElement(PhoneInputBox, { ...props, ref: ref });
    }
    return React.createElement(PhoneCountrySelection, { ...props, ref: ref });
});

const Select = React.forwardRef(({ children, data, size = 'md', ...restProps }, ref) => (React.createElement("descope-combo-box", { size: size, ...restProps, ref: ref, data: 
    // eslint-disable-next-line no-nested-ternary
    data ? (typeof data !== 'string' ? JSON.stringify(data) : data) : '' }, children)));

const Text = React.forwardRef(({ isEnriched, 
// Tooltip props
hasTooltip, tooltipText, tooltipPosition, tooltipHoverDelay, tooltipHideDelay, tooltipOpened, tooltipReadOnly, ...props }, ref) => {
    const Tag = isEnriched ? 'descope-enriched-text' : 'descope-text';
    const component = (React.createElement(Tag, { ...props, ref: ref }, props.children));
    return (React.createElement(Tooltip, { text: hasTooltip ? tooltipText : undefined, position: tooltipPosition, hoverDelay: tooltipHoverDelay, hideDelay: tooltipHideDelay, opened: tooltipOpened, readonly: tooltipReadOnly }, component));
});

const Textarea = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-text-area", { size: size, ...props, ref: ref })));

const TOTPImage = React.forwardRef(({ component, variant, mode, children, width, height, 'text-align': textAlign, 'hide-when-empty': hideWhenEmpty, 
// Tooltip props
hasTooltip, tooltipText, tooltipPosition, tooltipHoverDelay, tooltipHideDelay, tooltipOpened, tooltipReadOnly, ...props }, ref) => {
    if (component === 'text') {
        return (React.createElement(Text, { isEnriched: true, variant: variant, mode: mode, "text-align": textAlign, ref: ref, "hide-when-empty": hideWhenEmpty, hasTooltip: hasTooltip, tooltipText: tooltipText, tooltipPosition: tooltipPosition, tooltipHoverDelay: tooltipHoverDelay, tooltipHideDelay: tooltipHideDelay, tooltipOpened: tooltipOpened, tooltipReadOnly: tooltipReadOnly, ...props }, children));
    }
    return (React.createElement(Tooltip, { text: hasTooltip ? tooltipText : undefined, position: tooltipPosition, hoverDelay: tooltipHoverDelay, hideDelay: tooltipHideDelay, opened: tooltipOpened, readonly: tooltipReadOnly },
        React.createElement("descope-totp-image", { "st-width": width, "st-height": height, ref: ref, ...props })));
});

// The reason we define TOTPLink as a component, and not injecting the style from another place,
// is to restrict the dependency between the code that injects this variable style (web-component) to this place only
// Note: be careful when changing variables here, this can affect other packages implicitly
const TOTPLink = React.forwardRef(({ ...props }, ref) => {
    const readyProps = { ...props, 'data-type': 'totp-link' };
    return React.createElement(Link, { ref: ref, ...readyProps });
});

const NOTPImage = React.forwardRef(({ width, height, ...props }, ref) => (React.createElement("descope-notp-image", { "st-width": width, "st-height": height, ref: ref, ...props })));

// The reason we define NOTPLink as a component, and not injecting the style from another place,
// is to restrict the dependency between the code that injects this variable style (web-component) to this place only
// Note: be careful when changing variables here, this can affect other packages implicitly
const NOTPLink = React.forwardRef(({ ...props }, ref) => {
    const readyProps = { ...props, 'data-type': 'notp-link' };
    return React.createElement(Link, { ref: ref, ...readyProps });
});

const UploadFile = React.forwardRef(({ icon, ...props }, ref) => (React.createElement("descope-upload-file", { ref: ref, ...props }, icon && React.createElement(Icon, { slot: "icon", icon: icon, "src-dark": icon }))));

const defaultText$2 = 'This site is protected by reCAPTCHA and the Google [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms) apply.';
const Recaptcha = React.forwardRef(({ variant = 'text', textLabel = defaultText$2, textVariant = 'body1', textMode = 'primary', textAlign = 'left', 'full-width': fullWidth, readOnly, ...props }, ref) => {
    if (variant === 'hide') {
        return null;
    }
    return (React.createElement("descope-recaptcha", { ref: ref, ...props, variant: variant, "full-width": fullWidth }, variant === 'text' ? (React.createElement("descope-enriched-text", { "full-width": fullWidth, readonly: readOnly, variant: textVariant, mode: textMode, "text-align": textAlign }, textLabel)) : null));
});

const defaultText$1 = 'This site is protected by reCAPTCHA and the Google [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms) apply.';
const RecaptchaV2 = React.forwardRef(({ textLabel = defaultText$1, textVariant = 'body1', textMode = 'primary', textAlign = 'left', 'full-width': fullWidth, readOnly, connector: _connector, enterprise: _enterprise, action: _action, variant = 'text', src, width, height, ...props }, ref) => {
    if (variant === 'hide') {
        return null;
    }
    if (variant === 'image') {
        return (React.createElement("descope-image", { ref: ref, "full-width": fullWidth, "st-width": width, "st-height": height, src: src, ...props }));
    }
    return (React.createElement("descope-enriched-text", { ref: ref, "full-width": fullWidth, readonly: readOnly, variant: textVariant, mode: textMode, "text-align": textAlign, ...props }, textLabel));
});

const ButtonSelectionGroup = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-button-selection-group", { size: size, ...props, ref: ref })));

const ComboBox = React.forwardRef(({ size = 'md', bordered = true, ...props }, ref) => (React.createElement("descope-combo-box", { size: size, bordered: bordered, ...props, ref: ref })));

const RadioGroup = React.forwardRef(({ size = 'md', layout = 'horizontal', ...props }, ref) => (React.createElement("descope-radio-group", { size: size, layout: layout, ...props, ref: ref })));

const SingleSelect = React.forwardRef(({ variant, data, allowClearValue, ...props }, ref) => {
    if (variant === 'buttonSelectionGroup') {
        return (React.createElement(ButtonSelectionGroup, { ...props, "allow-deselect": allowClearValue, ref: ref }, data?.map(({ label, value }) => (React.createElement("descope-button-selection-group-item", { key: value, value: value }, label)))));
    }
    if (variant === 'radioGroup') {
        return (React.createElement(RadioGroup, { ...props, ref: ref }, data?.map(({ label, value }) => (React.createElement("descope-radio-button", { key: value, value: value }, label)))));
    }
    return (React.createElement(ComboBox, { "clear-button-visible": allowClearValue, "item-label-path": "data-name", "item-value-path": "data-id", ...props, ref: ref }, data?.map(({ label, value }) => (React.createElement("span", { "data-name": label, "data-id": value, key: value }, label)))));
});

const Grid = React.forwardRef(({ ...props }, ref) => (React.createElement("descope-grid", { ...props, ref: ref })));

const GridCustomColumn = React.forwardRef((props, ref) => React.createElement("descope-grid-custom-column", { ...props, ref: ref }));

const GridSelectionColumn = React.forwardRef((props, ref) => React.createElement("descope-grid-selection-column", { ...props, ref: ref }));

const GridTextColumn = React.forwardRef((props, ref) => React.createElement("descope-grid-text-column", { ...props, ref: ref }));

const GridItemDetailsColumn = React.forwardRef((props, ref) => React.createElement("descope-grid-item-details-column", { ...props, ref: ref }));

const Badge = React.forwardRef(({ shrinkToIndicator, ...props }, ref) => (React.createElement("descope-badge", { "shrink-to-indicator": shrinkToIndicator, ...props, ref: ref })));

const Modal = React.forwardRef((props, ref) => (React.createElement("descope-modal", { ...props, ref: ref })));

const ButtonMultiSelectionGroup = React.forwardRef(({ 'default-values': defaultValues, size = 'md', ...props }, ref) => {
    const serializedDefaultValues = useMemo(() => {
        if (!defaultValues)
            return undefined;
        try {
            return JSON.stringify(defaultValues);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "default-values" -', e.message);
            return '';
        }
    }, [defaultValues]);
    return (React.createElement("descope-button-multi-selection-group", { size: size, ...props, "default-values": serializedDefaultValues ?? undefined, ref: ref }));
});

const MultiSelectComboBox = React.forwardRef(({ 'default-values': defaultValues, size = 'md', bordered = true, ...props }, ref) => {
    const serializedDefaultValues = useMemo(() => {
        if (!defaultValues)
            return undefined;
        try {
            return JSON.stringify(defaultValues);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "default-values" -', e.message);
            return '';
        }
    }, [defaultValues]);
    return (React.createElement("descope-multi-select-combo-box", { size: size, bordered: bordered, ...props, "clear-button-visible": "true", "item-label-path": "data-name", "item-value-path": "data-id", "default-values": serializedDefaultValues ?? undefined, ref: ref }));
});

const MultiSelect = React.forwardRef(({ variant, data, ...props }, ref) => {
    if (variant === 'dynamicCombobox') {
        return (React.createElement(MultiSelectComboBox, { ...props, "auto-open-disabled": "true", "allow-custom-value": "true", data: "[]", ref: ref }));
    }
    if (variant === 'buttonSelectionGroup') {
        return (React.createElement(ButtonMultiSelectionGroup, { ...props, ref: ref }, data?.map(({ label, value }) => (React.createElement("descope-button-selection-group-item", { key: value, value: value }, label)))));
    }
    return (React.createElement(MultiSelectComboBox, { ...props, "allow-custom-value": "false", ref: ref }, data?.map(({ label, value }) => (React.createElement("span", { "data-name": label, "data-id": value, key: value }, label)))));
});

const MappingsField = React.forwardRef(({ 'default-values': defaultValues, options, size = 'md', ...props }, ref) => {
    const serializedDefaultValues = useMemo(() => {
        if (!defaultValues)
            return undefined;
        try {
            return JSON.stringify(defaultValues);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "default-values" -', e.message);
            return '';
        }
    }, [defaultValues]);
    const serializedOptions = useMemo(() => {
        if (!options)
            return undefined;
        try {
            return JSON.stringify(options);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "options" -', e.message);
            return '';
        }
    }, [options]);
    return (React.createElement("descope-mappings-field", { size: size, ...props, "default-values": serializedDefaultValues ?? undefined, options: serializedOptions ?? undefined, ref: ref }));
});

const SAMLGroupMappings = React.forwardRef(({ options, size = 'md', ...props }, ref) => {
    const serializedOptions = useMemo(() => {
        if (!options)
            return undefined;
        try {
            return JSON.stringify(options);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "options" -', e.message);
            return '';
        }
    }, [options]);
    return (React.createElement("descope-saml-group-mappings", { size: size, ...props, options: serializedOptions ?? undefined, ref: ref }));
});

const MultiLineMappings = React.forwardRef(({ data, ...props }, ref) => {
    const serializedData = useMemo(() => {
        if (!data)
            return undefined;
        try {
            return JSON.stringify(data);
        }
        catch (e) {
            // eslint-disable-next-line no-console
            console.error('could not parse data string from attribute "data" -', e.message);
            return undefined;
        }
    }, [data]);
    return (React.createElement("descope-multi-line-mappings", { data: serializedData, ...props, ref: ref }));
});

const UserAuthMethod = React.forwardRef(({ methodIcon, methodIconDark, buttonIcon, buttonIconDark, fulfilledButtonIcon, fulfilledButtonIconDark, ...props }, ref) => (React.createElement("descope-user-auth-method", { ...props, ref: ref },
    methodIcon && methodIconDark && React.createElement(Icon, { icon: methodIcon, "src-dark": methodIconDark, slot: "method-icon", noColor: true }),
    buttonIcon && buttonIconDark && React.createElement(Icon, { icon: buttonIcon, "src-dark": buttonIconDark, slot: "button-icon", noColor: true, width: "1em", height: "1em" }),
    fulfilledButtonIcon && fulfilledButtonIconDark && React.createElement(Icon, { icon: fulfilledButtonIcon, "src-dark": fulfilledButtonIconDark, slot: "fulfilled-button-icon", noColor: true, width: "1em", height: "1em" }))));

const UserAttribute = React.forwardRef(({ required = false, deleteIconLight, deleteIconDark, editIconLight, editIconDark, ...props }, ref) => (React.createElement("descope-user-attribute", { required: required, ...props, ref: ref },
    deleteIconLight && deleteIconDark && (React.createElement(Icon, { icon: deleteIconLight, "src-dark": deleteIconDark, slot: "delete-icon" })),
    editIconLight && editIconDark && (React.createElement(Icon, { icon: editIconLight, "src-dark": editIconDark, slot: "edit-icon" })))));

const Avatar = React.forwardRef(({ size = 'md', editable = false, ...props }, ref) => (React.createElement("descope-avatar", { size: size, editable: editable, ...props, ref: ref })));

const CodeSnippet = React.forwardRef((props, ref) => React.createElement("descope-code-snippet", { ...props, ref: ref }));

const List = React.forwardRef(({ emptyState, children, ...props }, ref) => (React.createElement("descope-list", { ...props, ref: ref },
    children,
    React.createElement("div", { slot: "empty-state" }, emptyState))));

const ListItem = React.forwardRef((props, ref) => (React.createElement("descope-list-item", { ...props, ref: ref })));

const AppsList = React.forwardRef(({ emptyState, data, variant, ...props }, ref) => (React.createElement("descope-apps-list", { data: data ? JSON.stringify(data) : undefined, variant: variant !== 'list' ? 'tiles' : 'list', ...props, ref: ref },
    React.createElement("div", { slot: "empty-state" }, emptyState))));

const ScopesList = React.forwardRef(({ data, ...props }, ref) => (React.createElement("descope-scopes-list", { data: data ? JSON.stringify(data) : undefined, ...props, ref: ref })));

const SecurityQuestionsSetup = React.forwardRef(({ questions, ...props }, ref) => (React.createElement("descope-security-questions-setup", { questions: questions ? JSON.stringify(questions) : undefined, ...props, ref: ref })));

const SecurityQuestionsVerify = React.forwardRef(({ questions, ...props }, ref) => (React.createElement("descope-security-questions-verify", { questions: questions ? JSON.stringify(questions) : undefined, ...props, ref: ref })));

const ThirdPartyAppLogo = React.forwardRef(({ ...props }, ref) => React.createElement("descope-third-party-app-logo", { ...props, ref: ref }));

const HybridField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-hybrid-field", { size: size, ...props, ref: ref })));

const Alert = React.forwardRef(({ children, ...props }, ref) => (React.createElement("descope-alert", { ...props, ref: ref }, children)));

const AddressField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-address-field", { size: size, ...props, ref: ref })));

const CountrySubdivisionCityField = React.forwardRef(({ size = 'md', ...props }, ref) => (React.createElement("descope-country-subdivision-city-field", { size: size, ...props, ref: ref })));

const TimerButton = React.forwardRef(({ children, color = 'primary', size = 'md', variant = 'contained', horizontal = false, 'text-align': textAlign = 'center', 'timer-seconds': timerSeconds = 0, 'timer-hide-icon': timerHideIcon = false, 'timer-paused': timerPause = false, 'timer-position': timerPosition = 'start', 'timer-inside': timerInside = false, ...props }, ref) => (React.createElement("descope-timer-button", { ...props, size: size, "text-align": textAlign, horizontal: horizontal, "button-variant": variant, "button-mode": color, "timer-hide-icon": timerHideIcon, "timer-seconds": timerSeconds, "timer-paused": timerPause, "timer-position": timerPosition, "timer-inside": timerInside, ref: ref }, children)));

const applyDefaults = ({ paddingX, paddingY, background, spaceBetween }) => ({
    'st-horizontal-padding': !paddingX || isNumeric(paddingX)
        ? `${Number.parseInt(paddingX || '0', 10) / 4}rem`
        : paddingX,
    'st-vertical-padding': !paddingY || isNumeric(paddingY)
        ? `${Number.parseInt(paddingY || '0', 10) / 4}rem`
        : paddingY,
    'st-background-color': background,
    ...(spaceBetween
        ? {
            'st-gap': isNumeric(spaceBetween)
                ? `${Number.parseFloat(spaceBetween || '0') / 4}rem`
                : spaceBetween
        }
        : {})
});
const Container = React.forwardRef(({ background, paddingX, paddingY, shadow, width, spaceBetween, backgroundImageUrl, borderRadius, ...props }, ref) => {
    const mergedProps = {
        ...props,
        shadow,
        'border-radius': borderRadius || props['border-radius'],
        'st-host-width': width || '100%',
        'st-background-image': backgroundImageUrl?.trim()
            ? `url('${backgroundImageUrl.trim()}')`
            : undefined,
        ...applyDefaults({
            paddingX,
            paddingY,
            background,
            spaceBetween
        })
    };
    return React.createElement("descope-collapsible-container", { ...mergedProps, ref: ref });
});

const defaultText = 'This site is protected by turnstile and the Cloudflare [Privacy Policy](https://www.cloudflare.com/privacypolicy/) and [Terms of Service](https://www.cloudflare.com/terms/) apply.';
const Turnstile = React.forwardRef(({ textLabel = defaultText, textVariant = 'body1', textMode = 'primary', textAlign = 'left', 'full-width': fullWidth, connector: _connector, ...props }, ref) => (React.createElement("descope-enriched-text", { ref: ref, "full-width": fullWidth, variant: textVariant, mode: textMode, "text-align": textAlign, ...props }, textLabel)));

const RecoveryCodesList = React.forwardRef(({ data, ...props }, ref) => (React.createElement("descope-recovery-codes", { data: data ? JSON.stringify(data) : undefined, ...props, ref: ref })));

const Hcaptcha = React.forwardRef(({ enabled, ...props }, ref) => (React.createElement("descope-hcaptcha", { ref: ref, enabled: enabled, ...props })));

const OutboundApps = React.forwardRef(({ emptyState, data, ...props }, ref) => (React.createElement("descope-outbound-apps", { data: data ? JSON.stringify(data) : undefined, ...props, ref: ref },
    React.createElement("div", { slot: "empty-state" }, emptyState))));

const OutboundAppButton = React.forwardRef(({ children, label, iconSrc, iconFill, color = 'primary', 'data-name': dataName, ...props }, ref) => {
    const isSquare = useMemo(() => !!(iconSrc && !label), [iconSrc, label]);
    return (React.createElement("descope-outbound-app-button", { ...props, label: label || children, "icon-src": iconSrc, "icon-fill-current-color": iconFill, mode: color, ref: ref, square: isSquare, "data-name": dataName }));
});

const TrustedDevices = React.forwardRef(({ emptyState, data, ...props }, ref) => (React.createElement("descope-trusted-devices", { data: data ? JSON.stringify(data) : undefined, ...props, ref: ref },
    React.createElement("div", { slot: "empty-state" }, emptyState))));

const Honeypot = React.forwardRef((props, ref) => (React.createElement("descope-ponyhot", { ref: ref },
    React.createElement("input", { ...props }))));

const TenantSelector = React.forwardRef((props, ref) => (React.createElement(ComboBox, { "item-label-path": "data-name", "item-value-path": "data-id", ...props, ref: ref })));

const Attachment = React.forwardRef(({ children, attachment, offsetX, offsetY, ...props }, ref) => (React.createElement("descope-attachment", { ...props, ref: ref, "st-offset-x": offsetX, "st-offset-y": offsetY },
    children,
    attachment && React.cloneElement(attachment, { slot: 'attachment' }))));

const LastAuthBadge = React.forwardRef(({ children, offsetX, offsetY, badgeLabel = 'Last Used', ...props }, ref) => {
    const attachment = (React.createElement(Badge, { mode: "primary", variant: "contained", bordered: true, size: "xs", slot: "attachment", shrinkToIndicator: true }, badgeLabel));
    return (React.createElement(Attachment, { ...props, ref: ref, offsetX: offsetX, offsetY: offsetY, attachment: attachment }, children));
});

const UserPasskeys = React.forwardRef(({ allowRemove, createdAtLabel, addButtonLabel, removeButtonLabel, methodIcon, methodIconDark, buttonIcon, buttonIconDark, removeIcon, removeIconDark, ...props }, ref) => (React.createElement("descope-user-passkeys", { "allow-remove": allowRemove, "created-at-label": createdAtLabel, "add-passkey-button-label": addButtonLabel, ...props, ref: ref },
    methodIcon && methodIconDark && (React.createElement(Icon, { icon: methodIcon, "src-dark": methodIconDark, slot: "method-icon" })),
    buttonIcon && buttonIconDark && (React.createElement(Icon, { icon: buttonIcon, "src-dark": buttonIconDark, slot: "button-icon" })),
    allowRemove && removeIcon && removeIconDark && (React.createElement(Icon, { icon: removeIcon, "src-dark": removeIconDark, slot: "remove-button" })),
    allowRemove && React.createElement("span", { slot: "remove-button" }, removeButtonLabel))));

const globalsThemeToStyle = globalsThemeToStyle$1;
const createComponentsTheme = createComponentsTheme$1;
const themeToStyle = themeToStyle$1;
const componentsThemeManager = componentsThemeManager$1;
const genColor = genColor$1;
const themeVars = themeVars$1;
const defaultTheme = defaultTheme$1;
const darkTheme = darkTheme$1;

export { AddressField, AddressFieldClass, Alert, AlertClass, AppsList, AppsListClass, Attachment, AttachmentClass, Avatar, AvatarClass, Badge, BadgeClass, Boolean, Button, ButtonClass, ButtonMultiSelectionGroupClass, ButtonSelectionGroupClass, CalendarClass, Checkbox, CheckboxClass, Code, CodeSnippet, CodeSnippetClass, Container as CollapsibleContainer, CollapsibleContainerClass, ComboBox, ComboBoxClass, Container$1 as Container, ContainerClass, CountrySubdivisionCityField, CountrySubdivisionCityFieldClass, DateField, DateFieldClass, Divider, DividerClass, EmailFieldClass, EnrichedTextClass, Grid, GridClass, GridCustomColumn, GridItemDetailsColumn, GridSelectionColumn, GridTextColumn, Hcaptcha, HcaptchaClass, Honeypot, HoneypotClass, HybridField, HybridFieldClass, IconClass, Image, ImageClass, Input, LastAuthBadge, Link, LinkClass, List, ListClass, ListItem, Loader, LoaderLinearClass, LoaderRadialClass, Logo, LogoClass, MappingsField, MappingsFieldClass, Modal, ModalClass, MultiLineMappings, MultiLineMappingsClass, MultiSelect, MultiSelectComboBoxClass, NOTPImage, NOTPLink, NewPassword, NewPasswordClass, NotificationClass, NotpImageClass, NumberField, NumberFieldClass, OutboundAppButton, OutboundAppButtonClass, OutboundApps, OutboundAppsClass, PasscodeClass, Password, PasswordClass, Phone, PhoneFieldClass, PhoneFieldInputBoxClass, PolicyValidationClass, RadioGroupClass, Recaptcha, RecaptchaClass, RecaptchaV2, RecoveryCodesClass, RecoveryCodesList, SAMLGroupMappings, SamlGroupMappingsClass, ScopesList, ScopesListClass, SecurityQuestionsSetup, SecurityQuestionsSetupClass, SecurityQuestionsVerify, SecurityQuestionsVerifyClass, Select, SingleSelect, Switch, SwitchToggleClass, TOTPImage, TOTPLink, TenantSelector, Text, TextAreaClass, TextClass, TextField, TextFieldClass, Textarea, ThirdPartyAppLogo, ThirdPartyAppLogoClass, TimerButton, TimerButtonClass, Tooltip, TooltipClass, TotpImageClass, TrustedDevices, TrustedDevicesClass, Turnstile, UploadFile, UploadFileClass, UserAttribute, UserAttributeClass, UserAuthMethod, UserAuthMethodClass, UserPasskeys, UserPasskeysClass, apple, authenticator, componentsThemeManager, createComponentsTheme, darkTheme, defaultTheme, discord, edit, facebook, fingerprint, genColor, github, gitlab, globalsThemeToStyle, google, linkedin, lock, microsoft, passkey, password, plus, reload, sessiontoken, slack, sso, themeToStyle, themeVars, whatsapp };
