@unidy.io/sdk 1.1.8 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-Pb3mNuRv.js +10 -0
- package/dist/cjs/app-globals-Pb3mNuRv.js.map +1 -0
- package/dist/cjs/auth-ChsE2RD7.js +614 -0
- package/dist/cjs/auth-ChsE2RD7.js.map +1 -0
- package/dist/cjs/auth-store-BO38Txmj.js +187 -0
- package/dist/cjs/auth-store-BO38Txmj.js.map +1 -0
- package/dist/cjs/component-utils-bu3SY4dE.js +42 -0
- package/dist/cjs/component-utils-bu3SY4dE.js.map +1 -0
- package/dist/cjs/flash-store-D5vGuIFc.js +50 -0
- package/dist/cjs/flash-store-D5vGuIFc.js.map +1 -0
- package/dist/cjs/helpers-BcPlKlBG.js +11 -0
- package/dist/cjs/helpers-BcPlKlBG.js.map +1 -0
- package/dist/cjs/helpers-DJyRa0Qo.js +11 -0
- package/dist/cjs/helpers-DJyRa0Qo.js.map +1 -0
- package/dist/cjs/i18n-B2T1e9Mf.js +3072 -0
- package/dist/cjs/i18n-B2T1e9Mf.js.map +1 -0
- package/dist/cjs/index-BzhKFIXk.js +14706 -0
- package/dist/cjs/index-BzhKFIXk.js.map +1 -0
- package/dist/cjs/index-DmDGhWTM.js +6338 -0
- package/dist/cjs/index-DmDGhWTM.js.map +1 -0
- package/dist/cjs/index-DxENvy7x.js +283 -0
- package/dist/cjs/index-DxENvy7x.js.map +1 -0
- package/dist/cjs/index.cjs.js +64 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +14 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/newsletter-helpers-B5P7q8Xk.js +289 -0
- package/dist/cjs/newsletter-helpers-B5P7q8Xk.js.map +1 -0
- package/dist/cjs/newsletter-store-f5zhJljn.js +38 -0
- package/dist/cjs/newsletter-store-f5zhJljn.js.map +1 -0
- package/dist/cjs/pagination-store-DjGYEIqm.js +16 -0
- package/dist/cjs/pagination-store-DjGYEIqm.js.map +1 -0
- package/dist/cjs/profile-helpers-BcLjojeG.js +39 -0
- package/dist/cjs/profile-helpers-BcLjojeG.js.map +1 -0
- package/dist/cjs/profile-store-BWJ9qAcg.js +22 -0
- package/dist/cjs/profile-store-BWJ9qAcg.js.map +1 -0
- package/dist/cjs/sdk.cjs.js +53 -0
- package/dist/cjs/sdk.cjs.js.map +1 -0
- package/dist/cjs/u-conditional-render.cjs.entry.js +102 -0
- package/dist/cjs/u-conditional-render.entry.cjs.js.map +1 -0
- package/dist/cjs/u-config.cjs.entry.js +91 -0
- package/dist/cjs/u-config.entry.cjs.js.map +1 -0
- package/dist/cjs/u-email-field.cjs.entry.js +77 -0
- package/dist/cjs/u-email-field.entry.cjs.js.map +1 -0
- package/dist/cjs/u-error-message.cjs.entry.js +82 -0
- package/dist/cjs/u-error-message.entry.cjs.js.map +1 -0
- package/dist/cjs/u-field.u-raw-field.entry.cjs.js.map +1 -0
- package/dist/cjs/u-field_2.cjs.entry.js +371 -0
- package/dist/cjs/u-flash-message.cjs.entry.js +37 -0
- package/dist/cjs/u-flash-message.entry.cjs.js.map +1 -0
- package/dist/cjs/u-full-profile.cjs.entry.js +37 -0
- package/dist/cjs/u-full-profile.entry.cjs.js.map +1 -0
- package/dist/cjs/u-logout-button.u-signed-in.entry.cjs.js.map +1 -0
- package/dist/cjs/u-logout-button_2.cjs.entry.js +62 -0
- package/dist/cjs/u-magic-code-field.cjs.entry.js +91 -0
- package/dist/cjs/u-magic-code-field.entry.cjs.js.map +1 -0
- package/dist/cjs/u-missing-field.cjs.entry.js +22 -0
- package/dist/cjs/u-missing-field.entry.cjs.js.map +1 -0
- package/dist/cjs/u-missing-fields-submit-button.cjs.entry.js +46 -0
- package/dist/cjs/u-missing-fields-submit-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-checkbox.cjs.entry.js +77 -0
- package/dist/cjs/u-newsletter-checkbox.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-logout-button.cjs.entry.js +41 -0
- package/dist/cjs/u-newsletter-logout-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-preference-checkbox.cjs.entry.js +120 -0
- package/dist/cjs/u-newsletter-preference-checkbox.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-resend-doi-button.cjs.entry.js +49 -0
- package/dist/cjs/u-newsletter-resend-doi-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-root.cjs.entry.js +72 -0
- package/dist/cjs/u-newsletter-root.entry.cjs.js.map +1 -0
- package/dist/cjs/u-newsletter-toggle-subscription-button.cjs.entry.js +73 -0
- package/dist/cjs/u-newsletter-toggle-subscription-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-pagination-button.cjs.entry.js +63 -0
- package/dist/cjs/u-pagination-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-pagination-page.cjs.entry.js +44 -0
- package/dist/cjs/u-pagination-page.entry.cjs.js.map +1 -0
- package/dist/cjs/u-passkey.cjs.entry.js +47 -0
- package/dist/cjs/u-passkey.entry.cjs.js.map +1 -0
- package/dist/cjs/u-password-field.cjs.entry.js +106 -0
- package/dist/cjs/u-password-field.entry.cjs.js.map +1 -0
- package/dist/cjs/u-profile.u-submit-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-profile_2.cjs.entry.js +329 -0
- package/dist/cjs/u-registration-button.cjs.entry.js +48 -0
- package/dist/cjs/u-registration-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-reset-password-button.cjs.entry.js +56 -0
- package/dist/cjs/u-reset-password-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-send-magic-code-button.cjs.entry.js +68 -0
- package/dist/cjs/u-send-magic-code-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-signin-root.cjs.entry.js +43 -0
- package/dist/cjs/u-signin-root.entry.cjs.js.map +1 -0
- package/dist/cjs/u-signin-step.cjs.entry.js +66 -0
- package/dist/cjs/u-signin-step.entry.cjs.js.map +1 -0
- package/dist/cjs/u-signin-strategy.cjs.entry.js +30 -0
- package/dist/cjs/u-signin-strategy.entry.cjs.js.map +1 -0
- package/dist/cjs/u-social-login-button.cjs.entry.js +100 -0
- package/dist/cjs/u-social-login-button.entry.cjs.js.map +1 -0
- package/dist/cjs/u-spinner.cjs.entry.js +18 -0
- package/dist/cjs/u-spinner.entry.cjs.js.map +1 -0
- package/dist/cjs/u-ticketable-list.cjs.entry.js +6097 -0
- package/dist/cjs/u-ticketable-list.entry.cjs.js.map +1 -0
- package/dist/cjs/unidy-store-zhdhlK0a.js +41 -0
- package/dist/cjs/unidy-store-zhdhlK0a.js.map +1 -0
- package/dist/collection/api/client.js +144 -0
- package/dist/collection/api/client.js.map +1 -0
- package/dist/collection/api/index.js +42 -0
- package/dist/collection/api/index.js.map +1 -0
- package/dist/collection/api/shared.js +18 -0
- package/dist/collection/api/shared.js.map +1 -0
- package/dist/collection/auth/api/auth.js +274 -0
- package/dist/collection/auth/api/auth.js.map +1 -0
- package/dist/collection/auth/auth-helpers.js +314 -0
- package/dist/collection/auth/auth-helpers.js.map +1 -0
- package/dist/collection/auth/auth.js +139 -0
- package/dist/collection/auth/auth.js.map +1 -0
- package/dist/collection/auth/components/helpers.js +5 -0
- package/dist/collection/auth/components/helpers.js.map +1 -0
- package/dist/collection/auth/components/logout-button/logout-button.js +94 -0
- package/dist/collection/auth/components/logout-button/logout-button.js.map +1 -0
- package/dist/collection/auth/components/magic-code-field/magic-code-field.css +1 -0
- package/dist/collection/auth/components/magic-code-field/magic-code-field.js +113 -0
- package/dist/collection/auth/components/magic-code-field/magic-code-field.js.map +1 -0
- package/dist/collection/auth/components/missing-field/missing-field.js +14 -0
- package/dist/collection/auth/components/missing-field/missing-field.js.map +1 -0
- package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js +39 -0
- package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js.map +1 -0
- package/dist/collection/auth/components/passkey/passkey.js +103 -0
- package/dist/collection/auth/components/passkey/passkey.js.map +1 -0
- package/dist/collection/auth/components/password-field/password-field.js +168 -0
- package/dist/collection/auth/components/password-field/password-field.js.map +1 -0
- package/dist/collection/auth/components/registration/registration-button.js +104 -0
- package/dist/collection/auth/components/registration/registration-button.js.map +1 -0
- package/dist/collection/auth/components/reset-pass-button/reset-pass-button.js +68 -0
- package/dist/collection/auth/components/reset-pass-button/reset-pass-button.js.map +1 -0
- package/dist/collection/auth/components/send-magic-code-button/send-magic-code-button.js +104 -0
- package/dist/collection/auth/components/send-magic-code-button/send-magic-code-button.js.map +1 -0
- package/dist/collection/auth/components/signed-in/signed-in.js +59 -0
- package/dist/collection/auth/components/signed-in/signed-in.js.map +1 -0
- package/dist/collection/auth/components/signin-root/signin-root.js +97 -0
- package/dist/collection/auth/components/signin-root/signin-root.js.map +1 -0
- package/dist/collection/auth/components/signin-step/signin-step.js +135 -0
- package/dist/collection/auth/components/signin-step/signin-step.js.map +1 -0
- package/dist/collection/auth/components/signin-strategy/signin-strategy.js +64 -0
- package/dist/collection/auth/components/signin-strategy/signin-strategy.js.map +1 -0
- package/dist/collection/auth/components/social-logins/logos/apple.js +3 -0
- package/dist/collection/auth/components/social-logins/logos/apple.js.map +1 -0
- package/dist/collection/auth/components/social-logins/logos/discord.js +3 -0
- package/dist/collection/auth/components/social-logins/logos/discord.js.map +1 -0
- package/dist/collection/auth/components/social-logins/logos/facebook.js +3 -0
- package/dist/collection/auth/components/social-logins/logos/facebook.js.map +1 -0
- package/dist/collection/auth/components/social-logins/logos/google.js +3 -0
- package/dist/collection/auth/components/social-logins/logos/google.js.map +1 -0
- package/dist/collection/auth/components/social-logins/logos/linkedin.js +3 -0
- package/dist/collection/auth/components/social-logins/logos/linkedin.js.map +1 -0
- package/dist/collection/auth/components/social-logins/social-login-button.css +1 -0
- package/dist/collection/auth/components/social-logins/social-login-button.js +188 -0
- package/dist/collection/auth/components/social-logins/social-login-button.js.map +1 -0
- package/dist/collection/auth/components/submit-button/auth-submit-button.js +62 -0
- package/dist/collection/auth/components/submit-button/auth-submit-button.js.map +1 -0
- package/dist/collection/auth/error-definitions.js +26 -0
- package/dist/collection/auth/error-definitions.js.map +1 -0
- package/dist/collection/auth/index.js +13 -0
- package/dist/collection/auth/index.js.map +1 -0
- package/dist/collection/auth/passkey-auth.js +106 -0
- package/dist/collection/auth/passkey-auth.js.map +1 -0
- package/dist/collection/auth/store/auth-store.js +178 -0
- package/dist/collection/auth/store/auth-store.js.map +1 -0
- package/dist/collection/collection-manifest.json +46 -0
- package/dist/collection/globalScript.js +18 -0
- package/dist/collection/globalScript.js.map +1 -0
- package/dist/collection/i18n.js +31 -0
- package/dist/collection/i18n.js.map +1 -0
- package/dist/collection/index.js +16 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/locales/de.json +133 -0
- package/dist/collection/locales/en.json +133 -0
- package/dist/collection/locales/fr.json +133 -0
- package/dist/collection/locales/it.json +133 -0
- package/dist/collection/locales/nl_be.json +133 -0
- package/dist/collection/locales/ro.json +133 -0
- package/dist/collection/logger.js +106 -0
- package/dist/collection/logger.js.map +1 -0
- package/dist/collection/newsletter/api/newsletters.js +189 -0
- package/dist/collection/newsletter/api/newsletters.js.map +1 -0
- package/dist/collection/newsletter/components/helpers.js +5 -0
- package/dist/collection/newsletter/components/helpers.js.map +1 -0
- package/dist/collection/newsletter/components/logout-button/logout-button.js +53 -0
- package/dist/collection/newsletter/components/logout-button/logout-button.js.map +1 -0
- package/dist/collection/newsletter/components/newsletter-checkbox/newsletter-checkbox.js +165 -0
- package/dist/collection/newsletter/components/newsletter-checkbox/newsletter-checkbox.js.map +1 -0
- package/dist/collection/newsletter/components/newsletter-root/newsletter-root.js +119 -0
- package/dist/collection/newsletter/components/newsletter-root/newsletter-root.js.map +1 -0
- package/dist/collection/newsletter/components/preference-checkbox/preference-checkbox.js +234 -0
- package/dist/collection/newsletter/components/preference-checkbox/preference-checkbox.js.map +1 -0
- package/dist/collection/newsletter/components/resend-doi-button/resend-doi-button.css +1 -0
- package/dist/collection/newsletter/components/resend-doi-button/resend-doi-button.js +89 -0
- package/dist/collection/newsletter/components/resend-doi-button/resend-doi-button.js.map +1 -0
- package/dist/collection/newsletter/components/submit-button/newsletter-submit-button.js +18 -0
- package/dist/collection/newsletter/components/submit-button/newsletter-submit-button.js.map +1 -0
- package/dist/collection/newsletter/components/toggle-subscription-button/toggle-subscription-button.css +1 -0
- package/dist/collection/newsletter/components/toggle-subscription-button/toggle-subscription-button.js +154 -0
- package/dist/collection/newsletter/components/toggle-subscription-button/toggle-subscription-button.js.map +1 -0
- package/dist/collection/newsletter/index.js +11 -0
- package/dist/collection/newsletter/index.js.map +1 -0
- package/dist/collection/newsletter/newsletter-helpers.js +277 -0
- package/dist/collection/newsletter/newsletter-helpers.js.map +1 -0
- package/dist/collection/newsletter/store/newsletter-store.js +34 -0
- package/dist/collection/newsletter/store/newsletter-store.js.map +1 -0
- package/dist/collection/profile/api/profile.js +168 -0
- package/dist/collection/profile/api/profile.js.map +1 -0
- package/dist/collection/profile/components/field/field.css +1 -0
- package/dist/collection/profile/components/field/field.js +355 -0
- package/dist/collection/profile/components/field/field.js.map +1 -0
- package/dist/collection/profile/components/full-profile/full-profile.css +1 -0
- package/dist/collection/profile/components/full-profile/full-profile.js +78 -0
- package/dist/collection/profile/components/full-profile/full-profile.js.map +1 -0
- package/dist/collection/profile/components/profile/profile.js +250 -0
- package/dist/collection/profile/components/profile/profile.js.map +1 -0
- package/dist/collection/profile/components/raw-field/raw-field.js +697 -0
- package/dist/collection/profile/components/raw-field/raw-field.js.map +1 -0
- package/dist/collection/profile/components/raw-input-fields/Input.js +3 -0
- package/dist/collection/profile/components/raw-input-fields/Input.js.map +1 -0
- package/dist/collection/profile/components/raw-input-fields/MultiSelect.js +8 -0
- package/dist/collection/profile/components/raw-input-fields/MultiSelect.js.map +1 -0
- package/dist/collection/profile/components/raw-input-fields/RadioGroup.js +8 -0
- package/dist/collection/profile/components/raw-input-fields/RadioGroup.js.map +1 -0
- package/dist/collection/profile/components/raw-input-fields/Select.js +11 -0
- package/dist/collection/profile/components/raw-input-fields/Select.js.map +1 -0
- package/dist/collection/profile/components/raw-input-fields/Textarea.js +3 -0
- package/dist/collection/profile/components/raw-input-fields/Textarea.js.map +1 -0
- package/dist/collection/profile/components/submit-button/profile-submit-button.js +17 -0
- package/dist/collection/profile/components/submit-button/profile-submit-button.js.map +1 -0
- package/dist/collection/profile/index.js +12 -0
- package/dist/collection/profile/index.js.map +1 -0
- package/dist/collection/profile/profile-helpers.js +31 -0
- package/dist/collection/profile/profile-helpers.js.map +1 -0
- package/dist/collection/profile/store/profile-store.js +15 -0
- package/dist/collection/profile/store/profile-store.js.map +1 -0
- package/dist/collection/sdk.css +39 -0
- package/dist/collection/shared/component-utils.js +35 -0
- package/dist/collection/shared/component-utils.js.map +1 -0
- package/dist/collection/shared/components/conditional-render/conditional-render.js +177 -0
- package/dist/collection/shared/components/conditional-render/conditional-render.js.map +1 -0
- package/dist/collection/shared/components/config/config.js +284 -0
- package/dist/collection/shared/components/config/config.js.map +1 -0
- package/dist/collection/shared/components/email-field/email-field.css +1 -0
- package/dist/collection/shared/components/email-field/email-field.js +145 -0
- package/dist/collection/shared/components/email-field/email-field.js.map +1 -0
- package/dist/collection/shared/components/error-message/error-message.js +141 -0
- package/dist/collection/shared/components/error-message/error-message.js.map +1 -0
- package/dist/collection/shared/components/flash-message/close-icon.js +3 -0
- package/dist/collection/shared/components/flash-message/close-icon.js.map +1 -0
- package/dist/collection/shared/components/flash-message/flash-message.css +1 -0
- package/dist/collection/shared/components/flash-message/flash-message.js +79 -0
- package/dist/collection/shared/components/flash-message/flash-message.js.map +1 -0
- package/dist/collection/shared/components/spinner/spinner.css +1 -0
- package/dist/collection/shared/components/spinner/spinner.js +19 -0
- package/dist/collection/shared/components/spinner/spinner.js.map +1 -0
- package/dist/collection/shared/components/submit-button/context.js +10 -0
- package/dist/collection/shared/components/submit-button/context.js.map +1 -0
- package/dist/collection/shared/components/submit-button/submit-button.css +1 -0
- package/dist/collection/shared/components/submit-button/submit-button.js +198 -0
- package/dist/collection/shared/components/submit-button/submit-button.js.map +1 -0
- package/dist/collection/shared/store/flash-store.js +43 -0
- package/dist/collection/shared/store/flash-store.js.map +1 -0
- package/dist/collection/shared/store/unidy-store.js +33 -0
- package/dist/collection/shared/store/unidy-store.js.map +1 -0
- package/dist/collection/ticketable/api/get-with-schema.js +35 -0
- package/dist/collection/ticketable/api/get-with-schema.js.map +1 -0
- package/dist/collection/ticketable/api/schemas.js +12 -0
- package/dist/collection/ticketable/api/schemas.js.map +1 -0
- package/dist/collection/ticketable/api/subscriptions.js +47 -0
- package/dist/collection/ticketable/api/subscriptions.js.map +1 -0
- package/dist/collection/ticketable/api/tickets.js +48 -0
- package/dist/collection/ticketable/api/tickets.js.map +1 -0
- package/dist/collection/ticketable/components/pagination/pagination-button.js +108 -0
- package/dist/collection/ticketable/components/pagination/pagination-button.js.map +1 -0
- package/dist/collection/ticketable/components/pagination/pagination-page.js +69 -0
- package/dist/collection/ticketable/components/pagination/pagination-page.js.map +1 -0
- package/dist/collection/ticketable/components/ticketable-list/skeleton-helpers.js +54 -0
- package/dist/collection/ticketable/components/ticketable-list/skeleton-helpers.js.map +1 -0
- package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js +505 -0
- package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js.map +1 -0
- package/dist/collection/ticketable/index.js +13 -0
- package/dist/collection/ticketable/index.js.map +1 -0
- package/dist/collection/ticketable/store/pagination-store.js +9 -0
- package/dist/collection/ticketable/store/pagination-store.js.map +1 -0
- package/dist/components/auth-store.js +182 -0
- package/dist/components/auth-store.js.map +1 -0
- package/dist/components/auth.js +613 -0
- package/dist/components/auth.js.map +1 -0
- package/dist/components/component-utils.js +39 -0
- package/dist/components/component-utils.js.map +1 -0
- package/dist/components/exports.js +4262 -0
- package/dist/components/exports.js.map +1 -0
- package/dist/components/field.js +134 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/flash-store.js +47 -0
- package/dist/components/flash-store.js.map +1 -0
- package/dist/components/helpers.js +9 -0
- package/dist/components/helpers.js.map +1 -0
- package/dist/components/helpers2.js +9 -0
- package/dist/components/helpers2.js.map +1 -0
- package/dist/components/i18n.js +3070 -0
- package/dist/components/i18n.js.map +1 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/components/index.js +5929 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index2.js +6327 -0
- package/dist/components/index2.js.map +1 -0
- package/dist/components/index3.js +281 -0
- package/dist/components/index3.js.map +1 -0
- package/dist/components/logger.js +111 -0
- package/dist/components/logger.js.map +1 -0
- package/dist/components/newsletter-helpers.js +278 -0
- package/dist/components/newsletter-helpers.js.map +1 -0
- package/dist/components/newsletter-store.js +34 -0
- package/dist/components/newsletter-store.js.map +1 -0
- package/dist/components/pagination-store.js +14 -0
- package/dist/components/pagination-store.js.map +1 -0
- package/dist/components/profile-helpers.js +36 -0
- package/dist/components/profile-helpers.js.map +1 -0
- package/dist/components/profile-store.js +18 -0
- package/dist/components/profile-store.js.map +1 -0
- package/dist/components/profile.js +151 -0
- package/dist/components/profile.js.map +1 -0
- package/dist/components/raw-field.js +318 -0
- package/dist/components/raw-field.js.map +1 -0
- package/dist/components/spinner.js +35 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/submit-button.js +233 -0
- package/dist/components/submit-button.js.map +1 -0
- package/dist/components/u-conditional-render.d.ts +11 -0
- package/dist/components/u-conditional-render.js +120 -0
- package/dist/components/u-conditional-render.js.map +1 -0
- package/dist/components/u-config.d.ts +11 -0
- package/dist/components/u-config.js +118 -0
- package/dist/components/u-config.js.map +1 -0
- package/dist/components/u-email-field.d.ts +11 -0
- package/dist/components/u-email-field.js +99 -0
- package/dist/components/u-email-field.js.map +1 -0
- package/dist/components/u-error-message.d.ts +11 -0
- package/dist/components/u-error-message.js +105 -0
- package/dist/components/u-error-message.js.map +1 -0
- package/dist/components/u-field.d.ts +11 -0
- package/dist/components/u-field.js +9 -0
- package/dist/components/u-field.js.map +1 -0
- package/dist/components/u-flash-message.d.ts +11 -0
- package/dist/components/u-flash-message.js +58 -0
- package/dist/components/u-flash-message.js.map +1 -0
- package/dist/components/u-full-profile.d.ts +11 -0
- package/dist/components/u-full-profile.js +87 -0
- package/dist/components/u-full-profile.js.map +1 -0
- package/dist/components/u-logout-button.d.ts +11 -0
- package/dist/components/u-logout-button.js +61 -0
- package/dist/components/u-logout-button.js.map +1 -0
- package/dist/components/u-magic-code-field.d.ts +11 -0
- package/dist/components/u-magic-code-field.js +106 -0
- package/dist/components/u-magic-code-field.js.map +1 -0
- package/dist/components/u-missing-field.d.ts +11 -0
- package/dist/components/u-missing-field.js +51 -0
- package/dist/components/u-missing-field.js.map +1 -0
- package/dist/components/u-missing-fields-submit-button.d.ts +11 -0
- package/dist/components/u-missing-fields-submit-button.js +70 -0
- package/dist/components/u-missing-fields-submit-button.js.map +1 -0
- package/dist/components/u-newsletter-checkbox.d.ts +11 -0
- package/dist/components/u-newsletter-checkbox.js +93 -0
- package/dist/components/u-newsletter-checkbox.js.map +1 -0
- package/dist/components/u-newsletter-logout-button.d.ts +11 -0
- package/dist/components/u-newsletter-logout-button.js +56 -0
- package/dist/components/u-newsletter-logout-button.js.map +1 -0
- package/dist/components/u-newsletter-preference-checkbox.d.ts +11 -0
- package/dist/components/u-newsletter-preference-checkbox.js +140 -0
- package/dist/components/u-newsletter-preference-checkbox.js.map +1 -0
- package/dist/components/u-newsletter-resend-doi-button.d.ts +11 -0
- package/dist/components/u-newsletter-resend-doi-button.js +70 -0
- package/dist/components/u-newsletter-resend-doi-button.js.map +1 -0
- package/dist/components/u-newsletter-root.d.ts +11 -0
- package/dist/components/u-newsletter-root.js +90 -0
- package/dist/components/u-newsletter-root.js.map +1 -0
- package/dist/components/u-newsletter-toggle-subscription-button.d.ts +11 -0
- package/dist/components/u-newsletter-toggle-subscription-button.js +97 -0
- package/dist/components/u-newsletter-toggle-subscription-button.js.map +1 -0
- package/dist/components/u-pagination-button.d.ts +11 -0
- package/dist/components/u-pagination-button.js +86 -0
- package/dist/components/u-pagination-button.js.map +1 -0
- package/dist/components/u-pagination-page.d.ts +11 -0
- package/dist/components/u-pagination-page.js +66 -0
- package/dist/components/u-pagination-page.js.map +1 -0
- package/dist/components/u-passkey.d.ts +11 -0
- package/dist/components/u-passkey.js +65 -0
- package/dist/components/u-passkey.js.map +1 -0
- package/dist/components/u-password-field.d.ts +11 -0
- package/dist/components/u-password-field.js +127 -0
- package/dist/components/u-password-field.js.map +1 -0
- package/dist/components/u-profile.d.ts +11 -0
- package/dist/components/u-profile.js +9 -0
- package/dist/components/u-profile.js.map +1 -0
- package/dist/components/u-raw-field.d.ts +11 -0
- package/dist/components/u-raw-field.js +9 -0
- package/dist/components/u-raw-field.js.map +1 -0
- package/dist/components/u-registration-button.d.ts +11 -0
- package/dist/components/u-registration-button.js +70 -0
- package/dist/components/u-registration-button.js.map +1 -0
- package/dist/components/u-reset-password-button.d.ts +11 -0
- package/dist/components/u-reset-password-button.js +72 -0
- package/dist/components/u-reset-password-button.js.map +1 -0
- package/dist/components/u-send-magic-code-button.d.ts +11 -0
- package/dist/components/u-send-magic-code-button.js +85 -0
- package/dist/components/u-send-magic-code-button.js.map +1 -0
- package/dist/components/u-signed-in.d.ts +11 -0
- package/dist/components/u-signed-in.js +44 -0
- package/dist/components/u-signed-in.js.map +1 -0
- package/dist/components/u-signin-root.d.ts +11 -0
- package/dist/components/u-signin-root.js +63 -0
- package/dist/components/u-signin-root.js.map +1 -0
- package/dist/components/u-signin-step.d.ts +11 -0
- package/dist/components/u-signin-step.js +84 -0
- package/dist/components/u-signin-step.js.map +1 -0
- package/dist/components/u-signin-strategy.d.ts +11 -0
- package/dist/components/u-signin-strategy.js +50 -0
- package/dist/components/u-signin-strategy.js.map +1 -0
- package/dist/components/u-social-login-button.d.ts +11 -0
- package/dist/components/u-social-login-button.js +125 -0
- package/dist/components/u-social-login-button.js.map +1 -0
- package/dist/components/u-spinner.d.ts +11 -0
- package/dist/components/u-spinner.js +9 -0
- package/dist/components/u-spinner.js.map +1 -0
- package/dist/components/u-submit-button.d.ts +11 -0
- package/dist/components/u-submit-button.js +9 -0
- package/dist/components/u-submit-button.js.map +1 -0
- package/dist/components/u-ticketable-list.d.ts +11 -0
- package/dist/components/u-ticketable-list.js +6130 -0
- package/dist/components/u-ticketable-list.js.map +1 -0
- package/dist/components/unidy-store.js +37 -0
- package/dist/components/unidy-store.js.map +1 -0
- package/dist/esm/app-globals-BHWOrMsm.js +8 -0
- package/dist/esm/app-globals-BHWOrMsm.js.map +1 -0
- package/dist/esm/auth-CAHM6e4m.js +612 -0
- package/dist/esm/auth-CAHM6e4m.js.map +1 -0
- package/dist/esm/auth-store-ItTnEMlF.js +182 -0
- package/dist/esm/auth-store-ItTnEMlF.js.map +1 -0
- package/dist/esm/component-utils-BGq0leDV.js +39 -0
- package/dist/esm/component-utils-BGq0leDV.js.map +1 -0
- package/dist/esm/flash-store-CMXH65i_.js +47 -0
- package/dist/esm/flash-store-CMXH65i_.js.map +1 -0
- package/dist/esm/helpers-BqFCd65h.js +9 -0
- package/dist/esm/helpers-BqFCd65h.js.map +1 -0
- package/dist/esm/helpers-DUHc_Cx7.js +9 -0
- package/dist/esm/helpers-DUHc_Cx7.js.map +1 -0
- package/dist/esm/i18n-OKf8uE5j.js +3069 -0
- package/dist/esm/i18n-OKf8uE5j.js.map +1 -0
- package/dist/esm/index-COQ27Nb6.js +14684 -0
- package/dist/esm/index-COQ27Nb6.js.map +1 -0
- package/dist/esm/index-DVkRTYPC.js +281 -0
- package/dist/esm/index-DVkRTYPC.js.map +1 -0
- package/dist/esm/index-Du3hUdhU.js +6325 -0
- package/dist/esm/index-Du3hUdhU.js.map +1 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +12 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/newsletter-helpers-ChXON0f4.js +278 -0
- package/dist/esm/newsletter-helpers-ChXON0f4.js.map +1 -0
- package/dist/esm/newsletter-store-CIsyE51r.js +34 -0
- package/dist/esm/newsletter-store-CIsyE51r.js.map +1 -0
- package/dist/esm/pagination-store-B9lk_lqK.js +14 -0
- package/dist/esm/pagination-store-B9lk_lqK.js.map +1 -0
- package/dist/esm/profile-helpers-Beduxnin.js +36 -0
- package/dist/esm/profile-helpers-Beduxnin.js.map +1 -0
- package/dist/esm/profile-store-CsSDT9Tb.js +18 -0
- package/dist/esm/profile-store-CsSDT9Tb.js.map +1 -0
- package/dist/esm/sdk.js +49 -0
- package/dist/esm/sdk.js.map +1 -0
- package/dist/esm/u-conditional-render.entry.js +100 -0
- package/dist/esm/u-conditional-render.entry.js.map +1 -0
- package/dist/esm/u-config.entry.js +89 -0
- package/dist/esm/u-config.entry.js.map +1 -0
- package/dist/esm/u-email-field.entry.js +75 -0
- package/dist/esm/u-email-field.entry.js.map +1 -0
- package/dist/esm/u-error-message.entry.js +80 -0
- package/dist/esm/u-error-message.entry.js.map +1 -0
- package/dist/esm/u-field.u-raw-field.entry.js.map +1 -0
- package/dist/esm/u-field_2.entry.js +368 -0
- package/dist/esm/u-flash-message.entry.js +35 -0
- package/dist/esm/u-flash-message.entry.js.map +1 -0
- package/dist/esm/u-full-profile.entry.js +35 -0
- package/dist/esm/u-full-profile.entry.js.map +1 -0
- package/dist/esm/u-logout-button.u-signed-in.entry.js.map +1 -0
- package/dist/esm/u-logout-button_2.entry.js +59 -0
- package/dist/esm/u-magic-code-field.entry.js +89 -0
- package/dist/esm/u-magic-code-field.entry.js.map +1 -0
- package/dist/esm/u-missing-field.entry.js +20 -0
- package/dist/esm/u-missing-field.entry.js.map +1 -0
- package/dist/esm/u-missing-fields-submit-button.entry.js +44 -0
- package/dist/esm/u-missing-fields-submit-button.entry.js.map +1 -0
- package/dist/esm/u-newsletter-checkbox.entry.js +75 -0
- package/dist/esm/u-newsletter-checkbox.entry.js.map +1 -0
- package/dist/esm/u-newsletter-logout-button.entry.js +39 -0
- package/dist/esm/u-newsletter-logout-button.entry.js.map +1 -0
- package/dist/esm/u-newsletter-preference-checkbox.entry.js +118 -0
- package/dist/esm/u-newsletter-preference-checkbox.entry.js.map +1 -0
- package/dist/esm/u-newsletter-resend-doi-button.entry.js +47 -0
- package/dist/esm/u-newsletter-resend-doi-button.entry.js.map +1 -0
- package/dist/esm/u-newsletter-root.entry.js +70 -0
- package/dist/esm/u-newsletter-root.entry.js.map +1 -0
- package/dist/esm/u-newsletter-toggle-subscription-button.entry.js +71 -0
- package/dist/esm/u-newsletter-toggle-subscription-button.entry.js.map +1 -0
- package/dist/esm/u-pagination-button.entry.js +61 -0
- package/dist/esm/u-pagination-button.entry.js.map +1 -0
- package/dist/esm/u-pagination-page.entry.js +42 -0
- package/dist/esm/u-pagination-page.entry.js.map +1 -0
- package/dist/esm/u-passkey.entry.js +45 -0
- package/dist/esm/u-passkey.entry.js.map +1 -0
- package/dist/esm/u-password-field.entry.js +104 -0
- package/dist/esm/u-password-field.entry.js.map +1 -0
- package/dist/esm/u-profile.u-submit-button.entry.js.map +1 -0
- package/dist/esm/u-profile_2.entry.js +326 -0
- package/dist/esm/u-registration-button.entry.js +46 -0
- package/dist/esm/u-registration-button.entry.js.map +1 -0
- package/dist/esm/u-reset-password-button.entry.js +54 -0
- package/dist/esm/u-reset-password-button.entry.js.map +1 -0
- package/dist/esm/u-send-magic-code-button.entry.js +66 -0
- package/dist/esm/u-send-magic-code-button.entry.js.map +1 -0
- package/dist/esm/u-signin-root.entry.js +41 -0
- package/dist/esm/u-signin-root.entry.js.map +1 -0
- package/dist/esm/u-signin-step.entry.js +64 -0
- package/dist/esm/u-signin-step.entry.js.map +1 -0
- package/dist/esm/u-signin-strategy.entry.js +28 -0
- package/dist/esm/u-signin-strategy.entry.js.map +1 -0
- package/dist/esm/u-social-login-button.entry.js +98 -0
- package/dist/esm/u-social-login-button.entry.js.map +1 -0
- package/dist/esm/u-spinner.entry.js +16 -0
- package/dist/esm/u-spinner.entry.js.map +1 -0
- package/dist/esm/u-ticketable-list.entry.js +6095 -0
- package/dist/esm/u-ticketable-list.entry.js.map +1 -0
- package/dist/esm/unidy-store-CAcMVdD8.js +37 -0
- package/dist/esm/unidy-store-CAcMVdD8.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/sdk/index.esm.js +2 -0
- package/dist/sdk/index.esm.js.map +1 -0
- package/dist/sdk/loader.esm.js.map +1 -0
- package/dist/sdk/locales/de.json +133 -0
- package/dist/sdk/locales/en.json +133 -0
- package/dist/sdk/locales/fr.json +133 -0
- package/dist/sdk/locales/it.json +133 -0
- package/dist/sdk/locales/nl_be.json +133 -0
- package/dist/sdk/locales/ro.json +133 -0
- package/dist/sdk/p-1bad3fd0.entry.js +2 -0
- package/dist/sdk/p-1bad3fd0.entry.js.map +1 -0
- package/dist/sdk/p-1d6982cd.entry.js +2 -0
- package/dist/sdk/p-1d6982cd.entry.js.map +1 -0
- package/dist/sdk/p-23d8e922.entry.js +2 -0
- package/dist/sdk/p-23d8e922.entry.js.map +1 -0
- package/dist/sdk/p-2855d3bb.entry.js +2 -0
- package/dist/sdk/p-2855d3bb.entry.js.map +1 -0
- package/dist/sdk/p-288f37c3.entry.js +2 -0
- package/dist/sdk/p-288f37c3.entry.js.map +1 -0
- package/dist/sdk/p-32842e98.entry.js +2 -0
- package/dist/sdk/p-32842e98.entry.js.map +1 -0
- package/dist/sdk/p-34af7470.entry.js +2 -0
- package/dist/sdk/p-34af7470.entry.js.map +1 -0
- package/dist/sdk/p-39126514.entry.js +2 -0
- package/dist/sdk/p-39126514.entry.js.map +1 -0
- package/dist/sdk/p-438f62e5.entry.js +2 -0
- package/dist/sdk/p-438f62e5.entry.js.map +1 -0
- package/dist/sdk/p-46013b2f.entry.js +2 -0
- package/dist/sdk/p-46013b2f.entry.js.map +1 -0
- package/dist/sdk/p-46cdb255.entry.js +2 -0
- package/dist/sdk/p-46cdb255.entry.js.map +1 -0
- package/dist/sdk/p-4d9bde6e.entry.js +2 -0
- package/dist/sdk/p-4d9bde6e.entry.js.map +1 -0
- package/dist/sdk/p-5c40c6ea.entry.js +2 -0
- package/dist/sdk/p-5c40c6ea.entry.js.map +1 -0
- package/dist/sdk/p-5c8b31bd.entry.js +2 -0
- package/dist/sdk/p-5c8b31bd.entry.js.map +1 -0
- package/dist/sdk/p-69172b22.entry.js +2 -0
- package/dist/sdk/p-69172b22.entry.js.map +1 -0
- package/dist/sdk/p-7381aca7.entry.js +2 -0
- package/dist/sdk/p-7381aca7.entry.js.map +1 -0
- package/dist/sdk/p-BGq0leDV.js +2 -0
- package/dist/sdk/p-BGq0leDV.js.map +1 -0
- package/dist/sdk/p-BR6L248H.js +2 -0
- package/dist/sdk/p-BR6L248H.js.map +1 -0
- package/dist/sdk/p-BhrvnKAS.js +2 -0
- package/dist/sdk/p-BhrvnKAS.js.map +1 -0
- package/dist/sdk/p-BqFCd65h.js +2 -0
- package/dist/sdk/p-BqFCd65h.js.map +1 -0
- package/dist/sdk/p-CMw6v6sC.js +2 -0
- package/dist/sdk/p-CMw6v6sC.js.map +1 -0
- package/dist/sdk/p-COQ27Nb6.js +14 -0
- package/dist/sdk/p-COQ27Nb6.js.map +1 -0
- package/dist/sdk/p-CSLU6kes.js +2 -0
- package/dist/sdk/p-CSLU6kes.js.map +1 -0
- package/dist/sdk/p-Cai8JwlG.js +2 -0
- package/dist/sdk/p-Cai8JwlG.js.map +1 -0
- package/dist/sdk/p-CpJghKnM.js +2 -0
- package/dist/sdk/p-CpJghKnM.js.map +1 -0
- package/dist/sdk/p-DAn4FkxC.js +2 -0
- package/dist/sdk/p-DAn4FkxC.js.map +1 -0
- package/dist/sdk/p-DUHc_Cx7.js +2 -0
- package/dist/sdk/p-DUHc_Cx7.js.map +1 -0
- package/dist/sdk/p-FFRhPCmc.js +2 -0
- package/dist/sdk/p-FFRhPCmc.js.map +1 -0
- package/dist/sdk/p-Jrp0G45B.js +2 -0
- package/dist/sdk/p-Jrp0G45B.js.map +1 -0
- package/dist/sdk/p-MA26cw6g.js +2 -0
- package/dist/sdk/p-MA26cw6g.js.map +1 -0
- package/dist/sdk/p-P0eZf5rH.js +2 -0
- package/dist/sdk/p-P0eZf5rH.js.map +1 -0
- package/dist/sdk/p-PSIHL0wP.js +2 -0
- package/dist/sdk/p-PSIHL0wP.js.map +1 -0
- package/dist/sdk/p-a341c7f6.entry.js +2 -0
- package/dist/sdk/p-a341c7f6.entry.js.map +1 -0
- package/dist/sdk/p-a38cd448.entry.js +2 -0
- package/dist/sdk/p-a38cd448.entry.js.map +1 -0
- package/dist/sdk/p-a45ef398.entry.js +2 -0
- package/dist/sdk/p-a45ef398.entry.js.map +1 -0
- package/dist/sdk/p-b5a6ad01.entry.js +2 -0
- package/dist/sdk/p-b5a6ad01.entry.js.map +1 -0
- package/dist/sdk/p-b93bf91d.entry.js +2 -0
- package/dist/sdk/p-b93bf91d.entry.js.map +1 -0
- package/dist/sdk/p-baf5dcb7.entry.js +2 -0
- package/dist/sdk/p-baf5dcb7.entry.js.map +1 -0
- package/dist/sdk/p-c07a43e2.entry.js +2 -0
- package/dist/sdk/p-c07a43e2.entry.js.map +1 -0
- package/dist/sdk/p-c98ad60d.entry.js +2 -0
- package/dist/sdk/p-c98ad60d.entry.js.map +1 -0
- package/dist/sdk/p-d0c0fb6b.entry.js +2 -0
- package/dist/sdk/p-d0c0fb6b.entry.js.map +1 -0
- package/dist/sdk/p-d47aaf26.entry.js +2 -0
- package/dist/sdk/p-d47aaf26.entry.js.map +1 -0
- package/dist/sdk/p-e5ef30ef.entry.js +2 -0
- package/dist/sdk/p-e5ef30ef.entry.js.map +1 -0
- package/dist/sdk/p-eb348798.entry.js +2 -0
- package/dist/sdk/p-eb348798.entry.js.map +1 -0
- package/dist/sdk/p-f82f500d.entry.js +2 -0
- package/dist/sdk/p-f82f500d.entry.js.map +1 -0
- package/dist/sdk/p-f88ed6e8.entry.js +2 -0
- package/dist/sdk/p-f88ed6e8.entry.js.map +1 -0
- package/dist/sdk/p-f9affafe.entry.js +2 -0
- package/dist/sdk/p-f9affafe.entry.js.map +1 -0
- package/dist/sdk/p-jyF1XwDG.js +2 -0
- package/dist/sdk/p-jyF1XwDG.js.map +1 -0
- package/dist/sdk/sdk.css +39 -0
- package/dist/sdk/sdk.esm.js +2 -0
- package/dist/sdk/sdk.esm.js.map +1 -0
- package/dist/sdk/u-conditional-render.entry.esm.js.map +1 -0
- package/dist/sdk/u-config.entry.esm.js.map +1 -0
- package/dist/sdk/u-email-field.entry.esm.js.map +1 -0
- package/dist/sdk/u-error-message.entry.esm.js.map +1 -0
- package/dist/sdk/u-field.u-raw-field.entry.esm.js.map +1 -0
- package/dist/sdk/u-flash-message.entry.esm.js.map +1 -0
- package/dist/sdk/u-full-profile.entry.esm.js.map +1 -0
- package/dist/sdk/u-logout-button.u-signed-in.entry.esm.js.map +1 -0
- package/dist/sdk/u-magic-code-field.entry.esm.js.map +1 -0
- package/dist/sdk/u-missing-field.entry.esm.js.map +1 -0
- package/dist/sdk/u-missing-fields-submit-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-checkbox.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-logout-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-preference-checkbox.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-resend-doi-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-root.entry.esm.js.map +1 -0
- package/dist/sdk/u-newsletter-toggle-subscription-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-pagination-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-pagination-page.entry.esm.js.map +1 -0
- package/dist/sdk/u-passkey.entry.esm.js.map +1 -0
- package/dist/sdk/u-password-field.entry.esm.js.map +1 -0
- package/dist/sdk/u-profile.u-submit-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-registration-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-reset-password-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-send-magic-code-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-signin-root.entry.esm.js.map +1 -0
- package/dist/sdk/u-signin-step.entry.esm.js.map +1 -0
- package/dist/sdk/u-signin-strategy.entry.esm.js.map +1 -0
- package/dist/sdk/u-social-login-button.entry.esm.js.map +1 -0
- package/dist/sdk/u-spinner.entry.esm.js.map +1 -0
- package/dist/sdk/u-ticketable-list.entry.esm.js.map +1 -0
- package/dist/types/api/client.d.ts +32 -0
- package/dist/types/api/index.d.ts +22 -0
- package/dist/types/api/shared.d.ts +20 -0
- package/dist/types/auth/api/auth.d.ts +302 -0
- package/dist/types/auth/auth-helpers.d.ts +376 -0
- package/dist/types/auth/auth.d.ts +62 -0
- package/dist/types/auth/components/helpers.d.ts +1 -0
- package/dist/types/auth/components/logout-button/logout-button.d.ts +11 -0
- package/dist/types/auth/components/magic-code-field/magic-code-field.d.ts +10 -0
- package/dist/types/auth/components/missing-field/missing-field.d.ts +4 -0
- package/dist/types/auth/components/missing-fields-submit-button/missing-fields-submit-button.d.ts +5 -0
- package/dist/types/auth/components/passkey/passkey.d.ts +9 -0
- package/dist/types/auth/components/password-field/password-field.d.ts +15 -0
- package/dist/types/auth/components/registration/registration-button.d.ts +11 -0
- package/dist/types/auth/components/reset-pass-button/reset-pass-button.d.ts +7 -0
- package/dist/types/auth/components/send-magic-code-button/send-magic-code-button.d.ts +11 -0
- package/dist/types/auth/components/signed-in/signed-in.d.ts +5 -0
- package/dist/types/auth/components/signin-root/signin-root.d.ts +14 -0
- package/dist/types/auth/components/signin-step/signin-step.d.ts +8 -0
- package/dist/types/auth/components/signin-strategy/signin-strategy.d.ts +5 -0
- package/dist/types/auth/components/social-logins/logos/apple.d.ts +4 -0
- package/dist/types/auth/components/social-logins/logos/discord.d.ts +4 -0
- package/dist/types/auth/components/social-logins/logos/facebook.d.ts +4 -0
- package/dist/types/auth/components/social-logins/logos/google.d.ts +4 -0
- package/dist/types/auth/components/social-logins/logos/linkedin.d.ts +4 -0
- package/dist/types/auth/components/social-logins/social-login-button.d.ts +24 -0
- package/dist/types/auth/components/submit-button/auth-submit-button.d.ts +3 -0
- package/dist/types/auth/error-definitions.d.ts +23 -0
- package/dist/types/auth/index.d.ts +15 -0
- package/dist/types/auth/passkey-auth.d.ts +2 -0
- package/dist/types/auth/store/auth-store.d.ts +58 -0
- package/dist/types/components.d.ts +1270 -0
- package/dist/types/globalScript.d.ts +1 -0
- package/dist/types/i18n.d.ts +3 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/logger.d.ts +55 -0
- package/dist/types/newsletter/api/newsletters.d.ts +198 -0
- package/dist/types/newsletter/components/helpers.d.ts +1 -0
- package/dist/types/newsletter/components/logout-button/logout-button.d.ts +8 -0
- package/dist/types/newsletter/components/newsletter-checkbox/newsletter-checkbox.d.ts +15 -0
- package/dist/types/newsletter/components/newsletter-root/newsletter-root.d.ts +11 -0
- package/dist/types/newsletter/components/preference-checkbox/preference-checkbox.d.ts +28 -0
- package/dist/types/newsletter/components/resend-doi-button/resend-doi-button.d.ts +8 -0
- package/dist/types/newsletter/components/submit-button/newsletter-submit-button.d.ts +3 -0
- package/dist/types/newsletter/components/toggle-subscription-button/toggle-subscription-button.d.ts +12 -0
- package/dist/types/newsletter/index.d.ts +10 -0
- package/dist/types/newsletter/newsletter-helpers.d.ts +15 -0
- package/dist/types/newsletter/store/newsletter-store.d.ts +25 -0
- package/dist/types/profile/api/profile.d.ts +238 -0
- package/dist/types/profile/components/field/field.d.ts +39 -0
- package/dist/types/profile/components/full-profile/full-profile.d.ts +6 -0
- package/dist/types/profile/components/profile/profile.d.ts +27 -0
- package/dist/types/profile/components/raw-field/raw-field.d.ts +45 -0
- package/dist/types/profile/components/raw-input-fields/Input.d.ts +17 -0
- package/dist/types/profile/components/raw-input-fields/MultiSelect.d.ts +28 -0
- package/dist/types/profile/components/raw-input-fields/RadioGroup.d.ts +30 -0
- package/dist/types/profile/components/raw-input-fields/Select.d.ts +24 -0
- package/dist/types/profile/components/raw-input-fields/Textarea.d.ts +17 -0
- package/dist/types/profile/components/submit-button/profile-submit-button.d.ts +2 -0
- package/dist/types/profile/index.d.ts +12 -0
- package/dist/types/profile/profile-helpers.d.ts +7 -0
- package/dist/types/profile/store/profile-store.d.ts +39 -0
- package/dist/types/shared/component-utils.d.ts +16 -0
- package/dist/types/shared/components/conditional-render/conditional-render.d.ts +11 -0
- package/dist/types/shared/components/config/config.d.ts +32 -0
- package/dist/types/shared/components/email-field/email-field.d.ts +13 -0
- package/dist/types/shared/components/error-message/error-message.d.ts +15 -0
- package/dist/types/shared/components/flash-message/close-icon.d.ts +1 -0
- package/dist/types/shared/components/flash-message/flash-message.d.ts +6 -0
- package/dist/types/shared/components/spinner/spinner.d.ts +3 -0
- package/dist/types/shared/components/submit-button/context.d.ts +9 -0
- package/dist/types/shared/components/submit-button/submit-button.d.ts +20 -0
- package/dist/types/shared/store/flash-store.d.ts +29 -0
- package/dist/types/shared/store/unidy-store.d.ts +12 -0
- package/dist/types/stencil-public-runtime.d.ts +1756 -0
- package/dist/types/ticketable/api/get-with-schema.d.ts +3 -0
- package/dist/types/ticketable/api/schemas.d.ts +18 -0
- package/dist/types/ticketable/api/subscriptions.d.ts +84 -0
- package/dist/types/ticketable/api/tickets.d.ts +86 -0
- package/dist/types/ticketable/components/pagination/pagination-button.d.ts +14 -0
- package/dist/types/ticketable/components/pagination/pagination-page.d.ts +12 -0
- package/dist/types/ticketable/components/ticketable-list/skeleton-helpers.d.ts +13 -0
- package/dist/types/ticketable/components/ticketable-list/ticketable-list.d.ts +41 -0
- package/dist/types/ticketable/index.d.ts +12 -0
- package/dist/types/ticketable/store/pagination-store.d.ts +10 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +23 -18
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { getUnidyClient } from "../api";
|
|
2
|
+
import { Auth } from "../auth/auth";
|
|
3
|
+
import { t } from "../i18n";
|
|
4
|
+
import { createLogger } from "../logger";
|
|
5
|
+
import { Flash } from "../shared/store/flash-store";
|
|
6
|
+
import { newsletterStore, persist, } from "./store/newsletter-store";
|
|
7
|
+
const logger = createLogger("NewsletterHelpers");
|
|
8
|
+
const PERSIST_KEY_PREFIX = "unidy_newsletter_";
|
|
9
|
+
export function newsletterLogout() {
|
|
10
|
+
newsletterStore.state.preferenceToken = "";
|
|
11
|
+
newsletterStore.state.existingSubscriptions = [];
|
|
12
|
+
sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}preferenceToken`);
|
|
13
|
+
sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}email`);
|
|
14
|
+
}
|
|
15
|
+
export async function resendDoi(internalName) {
|
|
16
|
+
const { preferenceToken } = newsletterStore.state;
|
|
17
|
+
const authInstance = await Auth.getInstance();
|
|
18
|
+
const idToken = await authInstance.getToken();
|
|
19
|
+
const response = await getUnidyClient().newsletters.resendDoi(internalName, { redirect_to_after_confirmation: redirectToAfterConfirmationUrl() }, {
|
|
20
|
+
preferenceToken: typeof preferenceToken === "string" ? preferenceToken : "",
|
|
21
|
+
idToken: typeof idToken === "string" ? idToken : "",
|
|
22
|
+
});
|
|
23
|
+
if (response.status === 204) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
if (response.status === 401) {
|
|
27
|
+
Flash.error.addMessage(t("newsletter.errors.unauthorized"));
|
|
28
|
+
newsletterLogout();
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
export async function sendLoginEmail(email) {
|
|
34
|
+
const response = await getUnidyClient().newsletters.sendLoginEmail({
|
|
35
|
+
email,
|
|
36
|
+
redirect_uri: redirectToAfterConfirmationUrl(),
|
|
37
|
+
});
|
|
38
|
+
if (response.status === 204) {
|
|
39
|
+
Flash.info.addMessage(t("newsletter.success.login_email_sent"));
|
|
40
|
+
}
|
|
41
|
+
else if (response.status === 404) {
|
|
42
|
+
Flash.error.addMessage(t("newsletter.errors.login_email_not_found"));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
Flash.error.addMessage(t("errors.unknown", { defaultValue: "An unknown error occurred" }));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export async function fetchSubscriptions() {
|
|
49
|
+
const { preferenceToken } = newsletterStore.state;
|
|
50
|
+
// either preference token is needed or the user must be authenticated
|
|
51
|
+
if (!preferenceToken && !newsletterStore.state.isAuthenticated) {
|
|
52
|
+
logger.error("Preference token or authentication is required to fetch subscriptions");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const authInstance = await Auth.getInstance();
|
|
56
|
+
const idToken = await authInstance.getToken();
|
|
57
|
+
newsletterStore.state.fetchingSubscriptions = true;
|
|
58
|
+
const response = await getUnidyClient().newsletters.listSubscriptions({
|
|
59
|
+
preferenceToken,
|
|
60
|
+
idToken: typeof idToken === "string" ? idToken : "",
|
|
61
|
+
});
|
|
62
|
+
newsletterStore.state.fetchingSubscriptions = false;
|
|
63
|
+
if (response.status === 401) {
|
|
64
|
+
newsletterLogout();
|
|
65
|
+
Flash.error.addMessage(t("newsletter.errors.unauthorized"));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (response.success && response.data) {
|
|
69
|
+
newsletterStore.state.existingSubscriptions = response.data.map((sub) => ({
|
|
70
|
+
newsletter_internal_name: sub.newsletter_internal_name,
|
|
71
|
+
confirmed: sub.confirmed_at !== null,
|
|
72
|
+
preference_identifiers: sub.preference_identifiers || [],
|
|
73
|
+
}));
|
|
74
|
+
// init checked newsletters and preferences
|
|
75
|
+
const checkedNewsletters = { ...newsletterStore.state.checkedNewsletters };
|
|
76
|
+
for (const sub of response.data) {
|
|
77
|
+
checkedNewsletters[sub.newsletter_internal_name] = [...(sub.preference_identifiers || [])];
|
|
78
|
+
}
|
|
79
|
+
newsletterStore.state.checkedNewsletters = checkedNewsletters;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function handleAlreadySubscribedError(email, errors) {
|
|
83
|
+
if (newsletterStore.state.isAuthenticated || newsletterStore.state.preferenceToken) {
|
|
84
|
+
const existingNames = new Set(newsletterStore.state.existingSubscriptions.map((s) => s.newsletter_internal_name));
|
|
85
|
+
const newSubscriptions = errors
|
|
86
|
+
.filter((err) => err.error_identifier === "already_subscribed" && !existingNames.has(err.meta.newsletter_internal_name))
|
|
87
|
+
.map((err) => ({
|
|
88
|
+
newsletter_internal_name: err.meta.newsletter_internal_name,
|
|
89
|
+
confirmed: null,
|
|
90
|
+
preference_identifiers: [],
|
|
91
|
+
}));
|
|
92
|
+
if (newSubscriptions.length > 0) {
|
|
93
|
+
newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
await sendLoginEmail(email);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function handleCreateSubscriptionRequest(email, internalNames, showSuccessMessage = true) {
|
|
101
|
+
const authInstance = await Auth.getInstance();
|
|
102
|
+
const idToken = await authInstance.getToken();
|
|
103
|
+
const { checkedNewsletters } = newsletterStore.state;
|
|
104
|
+
const [error, response] = await getUnidyClient().newsletters.createSubscriptions({
|
|
105
|
+
email,
|
|
106
|
+
newsletter_subscriptions: internalNames.map((newsletter) => ({
|
|
107
|
+
newsletter_internal_name: newsletter,
|
|
108
|
+
preference_identifiers: checkedNewsletters[newsletter] || [],
|
|
109
|
+
})),
|
|
110
|
+
redirect_to_after_confirmation: redirectToAfterConfirmationUrl(),
|
|
111
|
+
}, {
|
|
112
|
+
idToken: typeof idToken === "string" ? idToken : "",
|
|
113
|
+
});
|
|
114
|
+
if (error === null) {
|
|
115
|
+
if (response.data?.results && response.data.results.length > 0) {
|
|
116
|
+
const newSubscriptions = response.data.results.map((result) => ({
|
|
117
|
+
newsletter_internal_name: result.newsletter_internal_name,
|
|
118
|
+
confirmed: result.confirmed_at !== null,
|
|
119
|
+
preference_identifiers: result.preference_identifiers || [],
|
|
120
|
+
}));
|
|
121
|
+
newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];
|
|
122
|
+
}
|
|
123
|
+
if (showSuccessMessage) {
|
|
124
|
+
Flash.success.addMessage(t("newsletter.success.subscribe"));
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
if (error === "unauthorized") {
|
|
129
|
+
Flash.error.addMessage(t("newsletter.errors.unauthorized"));
|
|
130
|
+
newsletterLogout();
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (error === "newsletter_error") {
|
|
134
|
+
const errors = response.data?.errors || [];
|
|
135
|
+
const errorMap = {};
|
|
136
|
+
// special error case which is handled differently: if user is not authenticated, we send a login email, otherwise we add the
|
|
137
|
+
// already_subscribed subscriptions to the existing subscriptions
|
|
138
|
+
const hasAlreadySubscribedError = errors.some((err) => err.error_identifier === "already_subscribed");
|
|
139
|
+
if (hasAlreadySubscribedError) {
|
|
140
|
+
await handleAlreadySubscribedError(email, errors);
|
|
141
|
+
}
|
|
142
|
+
const newsletterNotFoundError = errors.some((err) => err.error_identifier === "newsletter_not_found");
|
|
143
|
+
if (newsletterNotFoundError) {
|
|
144
|
+
errorMap.general = "newsletter_not_found";
|
|
145
|
+
}
|
|
146
|
+
const hasInvalidEmailError = errors.some((err) => err.error_identifier === "validation_error" && err.error_details && "email" in err.error_details);
|
|
147
|
+
if (hasInvalidEmailError) {
|
|
148
|
+
errorMap.email = "invalid_email";
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
for (const err of errors) {
|
|
152
|
+
errorMap[err.meta.newsletter_internal_name] = err.error_identifier;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
newsletterStore.state.errors = errorMap;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
Flash.error.addMessage(t("errors.unknown", { defaultValue: "An unknown error occurred" }));
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
export async function subscribeToNewsletter(internalName, email) {
|
|
163
|
+
return handleCreateSubscriptionRequest(email, [internalName], false);
|
|
164
|
+
}
|
|
165
|
+
export async function createSubscriptions({ email }) {
|
|
166
|
+
const internalNames = Object.keys(newsletterStore.state.checkedNewsletters);
|
|
167
|
+
await handleCreateSubscriptionRequest(email, internalNames, true);
|
|
168
|
+
}
|
|
169
|
+
export async function deleteSubscription(internalName) {
|
|
170
|
+
const { preferenceToken } = newsletterStore.state;
|
|
171
|
+
// either preference token is needed or the user must be authenticated to delete a subscription
|
|
172
|
+
if (!preferenceToken && !newsletterStore.state.isAuthenticated) {
|
|
173
|
+
logger.error("Preference token or authentication is required to delete a subscription");
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
const authInstance = await Auth.getInstance();
|
|
177
|
+
const idToken = await authInstance.getToken();
|
|
178
|
+
const response = await getUnidyClient().newsletters.deleteSubscription(internalName, {
|
|
179
|
+
preferenceToken,
|
|
180
|
+
idToken: typeof idToken === "string" ? idToken : "",
|
|
181
|
+
});
|
|
182
|
+
if (response.status === 200 && response.data?.new_preference_token) {
|
|
183
|
+
// if user is not authenticated, we need to store the new preference token which is used for the next request
|
|
184
|
+
if (!newsletterStore.state.isAuthenticated) {
|
|
185
|
+
newsletterStore.state.preferenceToken = response.data.new_preference_token;
|
|
186
|
+
persist("preferenceToken");
|
|
187
|
+
}
|
|
188
|
+
newsletterStore.state.existingSubscriptions = newsletterStore.state.existingSubscriptions.filter((sub) => sub.newsletter_internal_name !== internalName);
|
|
189
|
+
// Reset checked preferences to defaults (preferences marked with checked='true')
|
|
190
|
+
const defaultPrefs = newsletterStore.state.defaultPreferences[internalName];
|
|
191
|
+
newsletterStore.state.checkedNewsletters = {
|
|
192
|
+
...newsletterStore.state.checkedNewsletters,
|
|
193
|
+
[internalName]: defaultPrefs ? [...defaultPrefs] : [],
|
|
194
|
+
};
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
if (response.status === 204) {
|
|
198
|
+
newsletterLogout();
|
|
199
|
+
newsletterStore.state.checkedNewsletters = {};
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
if (response.status === 401) {
|
|
203
|
+
Flash.error.addMessage(t("newsletter.errors.unauthorized"));
|
|
204
|
+
newsletterLogout();
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
if (response.status === 422) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
Flash.error.addMessage(t("errors.unknown", { defaultValue: "An unknown error occurred" }));
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
export function getSubscription(internalName) {
|
|
214
|
+
return newsletterStore.state.existingSubscriptions.find((sub) => sub.newsletter_internal_name === internalName);
|
|
215
|
+
}
|
|
216
|
+
export function isSubscribed(internalName) {
|
|
217
|
+
return newsletterStore.state.existingSubscriptions.some((sub) => sub.newsletter_internal_name === internalName);
|
|
218
|
+
}
|
|
219
|
+
export function isConfirmed(internalName) {
|
|
220
|
+
const sub = getSubscription(internalName);
|
|
221
|
+
return sub?.confirmed ?? false;
|
|
222
|
+
}
|
|
223
|
+
function redirectToAfterConfirmationUrl() {
|
|
224
|
+
const baseUrl = `${location.origin}${location.pathname}`;
|
|
225
|
+
const params = new URLSearchParams(location.search);
|
|
226
|
+
for (const key of ["email", "newsletter_error"]) {
|
|
227
|
+
params.delete(key);
|
|
228
|
+
}
|
|
229
|
+
const queryString = params.toString();
|
|
230
|
+
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
|
|
231
|
+
}
|
|
232
|
+
export function getSubscriptionPreferences(internalName) {
|
|
233
|
+
const subscription = getSubscription(internalName);
|
|
234
|
+
return subscription?.preference_identifiers || [];
|
|
235
|
+
}
|
|
236
|
+
export async function updateSubscriptionPreferences(internalName) {
|
|
237
|
+
const { preferenceToken } = newsletterStore.state;
|
|
238
|
+
// Either preference token is needed or the user must be authenticated
|
|
239
|
+
if (!preferenceToken && !newsletterStore.state.isAuthenticated) {
|
|
240
|
+
logger.error("Preference token or authentication is required to update subscription preferences");
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
// Check if the subscription exists
|
|
244
|
+
if (!isSubscribed(internalName)) {
|
|
245
|
+
logger.error(`Cannot update preferences: not subscribed to newsletter '${internalName}'`);
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
const authInstance = await Auth.getInstance();
|
|
249
|
+
const idToken = await authInstance.getToken();
|
|
250
|
+
const preferenceIdentifiers = newsletterStore.state.checkedNewsletters[internalName] || [];
|
|
251
|
+
const response = await getUnidyClient().newsletters.updateSubscription(internalName, { preference_identifiers: preferenceIdentifiers }, {
|
|
252
|
+
preferenceToken,
|
|
253
|
+
idToken: typeof idToken === "string" ? idToken : "",
|
|
254
|
+
});
|
|
255
|
+
if (response.status === 401) {
|
|
256
|
+
Flash.error.addMessage(t("newsletter.errors.unauthorized"));
|
|
257
|
+
newsletterLogout();
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
if (response.success && response.data) {
|
|
261
|
+
// Update the local subscription with the new preferences
|
|
262
|
+
const subscriptionIndex = newsletterStore.state.existingSubscriptions.findIndex((sub) => sub.newsletter_internal_name === internalName);
|
|
263
|
+
if (subscriptionIndex !== -1) {
|
|
264
|
+
const updatedSubscriptions = [...newsletterStore.state.existingSubscriptions];
|
|
265
|
+
updatedSubscriptions[subscriptionIndex] = {
|
|
266
|
+
...updatedSubscriptions[subscriptionIndex],
|
|
267
|
+
preference_identifiers: response.data.preference_identifiers || [],
|
|
268
|
+
};
|
|
269
|
+
newsletterStore.state.existingSubscriptions = updatedSubscriptions;
|
|
270
|
+
}
|
|
271
|
+
Flash.success.addMessage(t("newsletter.success.preferences_updated"));
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
Flash.error.addMessage(t("errors.unknown", { defaultValue: "An unknown error occurred" }));
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=newsletter-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletter-helpers.js","sourceRoot":"","sources":["../../src/newsletter/newsletter-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { getUnidyClient } from \"../api\";\nimport { Auth } from \"../auth/auth\";\nimport { t } from \"../i18n\";\nimport { createLogger } from \"../logger\";\nimport { Flash } from \"../shared/store/flash-store\";\nimport {\n type CheckedNewsletters,\n type ExistingSubscription,\n type NewsletterErrorIdentifier,\n newsletterStore,\n persist,\n} from \"./store/newsletter-store\";\n\nconst logger = createLogger(\"NewsletterHelpers\");\n\nconst PERSIST_KEY_PREFIX = \"unidy_newsletter_\";\n\nexport function newsletterLogout(): void {\n newsletterStore.state.preferenceToken = \"\";\n newsletterStore.state.existingSubscriptions = [];\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}preferenceToken`);\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}email`);\n}\n\nexport async function resendDoi(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const response = await getUnidyClient().newsletters.resendDoi(\n internalName,\n { redirect_to_after_confirmation: redirectToAfterConfirmationUrl() },\n {\n preferenceToken: typeof preferenceToken === \"string\" ? preferenceToken : \"\",\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (response.status === 204) {\n return true;\n }\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n return false;\n}\n\nexport async function sendLoginEmail(email: string): Promise<void> {\n const response = await getUnidyClient().newsletters.sendLoginEmail({\n email,\n redirect_uri: redirectToAfterConfirmationUrl(),\n });\n\n if (response.status === 204) {\n Flash.info.addMessage(t(\"newsletter.success.login_email_sent\"));\n } else if (response.status === 404) {\n Flash.error.addMessage(t(\"newsletter.errors.login_email_not_found\"));\n } else {\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n }\n}\n\nexport async function fetchSubscriptions(): Promise<void> {\n const { preferenceToken } = newsletterStore.state;\n\n // either preference token is needed or the user must be authenticated\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to fetch subscriptions\");\n return;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n newsletterStore.state.fetchingSubscriptions = true;\n\n const response = await getUnidyClient().newsletters.listSubscriptions({\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n });\n\n newsletterStore.state.fetchingSubscriptions = false;\n\n if (response.status === 401) {\n newsletterLogout();\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n return;\n }\n\n if (response.success && response.data) {\n newsletterStore.state.existingSubscriptions = response.data.map(\n (sub): ExistingSubscription => ({\n newsletter_internal_name: sub.newsletter_internal_name,\n confirmed: sub.confirmed_at !== null,\n preference_identifiers: sub.preference_identifiers || [],\n }),\n );\n\n // init checked newsletters and preferences\n const checkedNewsletters: CheckedNewsletters = { ...newsletterStore.state.checkedNewsletters };\n for (const sub of response.data) {\n checkedNewsletters[sub.newsletter_internal_name] = [...(sub.preference_identifiers || [])];\n }\n newsletterStore.state.checkedNewsletters = checkedNewsletters;\n }\n}\n\nasync function handleAlreadySubscribedError(\n email: string,\n errors: Array<{ error_identifier: string; meta: { newsletter_internal_name: string } }>,\n): Promise<void> {\n if (newsletterStore.state.isAuthenticated || newsletterStore.state.preferenceToken) {\n const existingNames = new Set(newsletterStore.state.existingSubscriptions.map((s) => s.newsletter_internal_name));\n\n const newSubscriptions: ExistingSubscription[] = errors\n .filter((err) => err.error_identifier === \"already_subscribed\" && !existingNames.has(err.meta.newsletter_internal_name))\n .map((err) => ({\n newsletter_internal_name: err.meta.newsletter_internal_name,\n confirmed: null,\n preference_identifiers: [],\n }));\n\n if (newSubscriptions.length > 0) {\n newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];\n }\n } else {\n await sendLoginEmail(email);\n }\n}\n\nasync function handleCreateSubscriptionRequest(email: string, internalNames: string[], showSuccessMessage = true): Promise<boolean> {\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n const { checkedNewsletters } = newsletterStore.state;\n\n const [error, response] = await getUnidyClient().newsletters.createSubscriptions(\n {\n email,\n newsletter_subscriptions: internalNames.map((newsletter) => ({\n newsletter_internal_name: newsletter,\n preference_identifiers: checkedNewsletters[newsletter] || [],\n })),\n redirect_to_after_confirmation: redirectToAfterConfirmationUrl(),\n },\n {\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (error === null) {\n if (response.data?.results && response.data.results.length > 0) {\n const newSubscriptions: ExistingSubscription[] = response.data.results.map((result) => ({\n newsletter_internal_name: result.newsletter_internal_name,\n confirmed: result.confirmed_at !== null,\n preference_identifiers: result.preference_identifiers || [],\n }));\n\n newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];\n }\n\n if (showSuccessMessage) {\n Flash.success.addMessage(t(\"newsletter.success.subscribe\"));\n }\n\n return true;\n }\n\n if (error === \"unauthorized\") {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (error === \"newsletter_error\") {\n const errors = response.data?.errors || [];\n const errorMap: Record<string, NewsletterErrorIdentifier> = {};\n\n // special error case which is handled differently: if user is not authenticated, we send a login email, otherwise we add the\n // already_subscribed subscriptions to the existing subscriptions\n const hasAlreadySubscribedError = errors.some((err) => err.error_identifier === \"already_subscribed\");\n if (hasAlreadySubscribedError) {\n await handleAlreadySubscribedError(email, errors);\n }\n\n const newsletterNotFoundError = errors.some((err) => err.error_identifier === \"newsletter_not_found\");\n if (newsletterNotFoundError) {\n errorMap.general = \"newsletter_not_found\";\n }\n\n const hasInvalidEmailError = errors.some(\n (err) => err.error_identifier === \"validation_error\" && err.error_details && \"email\" in err.error_details,\n );\n\n if (hasInvalidEmailError) {\n errorMap.email = \"invalid_email\";\n } else {\n for (const err of errors) {\n errorMap[err.meta.newsletter_internal_name] = err.error_identifier as NewsletterErrorIdentifier;\n }\n }\n\n newsletterStore.state.errors = errorMap;\n } else {\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n }\n\n return false;\n}\n\nexport async function subscribeToNewsletter(internalName: string, email: string): Promise<boolean> {\n return handleCreateSubscriptionRequest(email, [internalName], false);\n}\n\nexport async function createSubscriptions({ email }: { email: string }): Promise<void> {\n const internalNames = Object.keys(newsletterStore.state.checkedNewsletters);\n await handleCreateSubscriptionRequest(email, internalNames, true);\n}\n\nexport async function deleteSubscription(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n // either preference token is needed or the user must be authenticated to delete a subscription\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to delete a subscription\");\n return false;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const response = await getUnidyClient().newsletters.deleteSubscription(internalName, {\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n });\n\n if (response.status === 200 && response.data?.new_preference_token) {\n // if user is not authenticated, we need to store the new preference token which is used for the next request\n if (!newsletterStore.state.isAuthenticated) {\n newsletterStore.state.preferenceToken = response.data.new_preference_token;\n persist(\"preferenceToken\");\n }\n\n newsletterStore.state.existingSubscriptions = newsletterStore.state.existingSubscriptions.filter(\n (sub) => sub.newsletter_internal_name !== internalName,\n );\n\n // Reset checked preferences to defaults (preferences marked with checked='true')\n const defaultPrefs = newsletterStore.state.defaultPreferences[internalName];\n newsletterStore.state.checkedNewsletters = {\n ...newsletterStore.state.checkedNewsletters,\n [internalName]: defaultPrefs ? [...defaultPrefs] : [],\n };\n\n return true;\n }\n\n if (response.status === 204) {\n newsletterLogout();\n\n newsletterStore.state.checkedNewsletters = {};\n return true;\n }\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (response.status === 422) {\n return false;\n }\n\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n return false;\n}\n\nexport function getSubscription(internalName: string): ExistingSubscription | undefined {\n return newsletterStore.state.existingSubscriptions.find((sub) => sub.newsletter_internal_name === internalName);\n}\n\nexport function isSubscribed(internalName: string): boolean {\n return newsletterStore.state.existingSubscriptions.some((sub) => sub.newsletter_internal_name === internalName);\n}\n\nexport function isConfirmed(internalName: string): boolean {\n const sub = getSubscription(internalName);\n return sub?.confirmed ?? false;\n}\n\nfunction redirectToAfterConfirmationUrl(): string {\n const baseUrl = `${location.origin}${location.pathname}`;\n const params = new URLSearchParams(location.search);\n for (const key of [\"email\", \"newsletter_error\"]) {\n params.delete(key);\n }\n const queryString = params.toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n\nexport function getSubscriptionPreferences(internalName: string): string[] {\n const subscription = getSubscription(internalName);\n return subscription?.preference_identifiers || [];\n}\n\nexport async function updateSubscriptionPreferences(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n // Either preference token is needed or the user must be authenticated\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to update subscription preferences\");\n return false;\n }\n\n // Check if the subscription exists\n if (!isSubscribed(internalName)) {\n logger.error(`Cannot update preferences: not subscribed to newsletter '${internalName}'`);\n return false;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const preferenceIdentifiers = newsletterStore.state.checkedNewsletters[internalName] || [];\n\n const response = await getUnidyClient().newsletters.updateSubscription(\n internalName,\n { preference_identifiers: preferenceIdentifiers },\n {\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (response.success && response.data) {\n // Update the local subscription with the new preferences\n const subscriptionIndex = newsletterStore.state.existingSubscriptions.findIndex((sub) => sub.newsletter_internal_name === internalName);\n\n if (subscriptionIndex !== -1) {\n const updatedSubscriptions = [...newsletterStore.state.existingSubscriptions];\n updatedSubscriptions[subscriptionIndex] = {\n ...updatedSubscriptions[subscriptionIndex],\n preference_identifiers: response.data.preference_identifiers || [],\n };\n newsletterStore.state.existingSubscriptions = updatedSubscriptions;\n }\n\n Flash.success.addMessage(t(\"newsletter.success.preferences_updated\"));\n return true;\n }\n\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n return false;\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createStore } from "@stencil/store";
|
|
2
|
+
const PERSIST_KEY_PREFIX = "unidy_newsletter_";
|
|
3
|
+
export const persist = (key) => {
|
|
4
|
+
sessionStorage.setItem(`${PERSIST_KEY_PREFIX}${key}`, newsletterStore.state[key]);
|
|
5
|
+
};
|
|
6
|
+
const getPersistedValue = (key) => {
|
|
7
|
+
return sessionStorage.getItem(`${PERSIST_KEY_PREFIX}${key}`);
|
|
8
|
+
};
|
|
9
|
+
const initialState = {
|
|
10
|
+
email: getPersistedValue("email") ?? "",
|
|
11
|
+
preferenceToken: getPersistedValue("preferenceToken") ?? "",
|
|
12
|
+
checkedNewsletters: {},
|
|
13
|
+
defaultPreferences: {},
|
|
14
|
+
fetchingSubscriptions: false,
|
|
15
|
+
existingSubscriptions: [],
|
|
16
|
+
errors: {},
|
|
17
|
+
isAuthenticated: false,
|
|
18
|
+
};
|
|
19
|
+
export const newsletterStore = createStore(initialState);
|
|
20
|
+
export const storeDefaultPreference = (internalName, preferenceIdentifier) => {
|
|
21
|
+
const current = newsletterStore.state.defaultPreferences[internalName] ?? new Set();
|
|
22
|
+
const updated = new Set(current);
|
|
23
|
+
updated.add(preferenceIdentifier);
|
|
24
|
+
newsletterStore.state.defaultPreferences = {
|
|
25
|
+
...newsletterStore.state.defaultPreferences,
|
|
26
|
+
[internalName]: updated,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export const reset = () => {
|
|
30
|
+
sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}preferenceToken`);
|
|
31
|
+
sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}email`);
|
|
32
|
+
newsletterStore.state = initialState;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=newsletter-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletter-store.js","sourceRoot":"","sources":["../../../src/newsletter/store/newsletter-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAsC7C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAgC,EAAE,EAAE;IAC1D,cAAc,CAAC,OAAO,CAAC,GAAG,kBAAkB,GAAG,GAAG,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,GAAgC,EAAE,EAAE;IAC7D,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,YAAY,GAAoB;IACpC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC3D,kBAAkB,EAAE,EAAE;IACtB,kBAAkB,EAAE,EAAE;IAEtB,qBAAqB,EAAE,KAAK;IAC5B,qBAAqB,EAAE,EAAE;IAEzB,MAAM,EAAE,EAAE;IACV,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAkB,YAAY,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAAoC,EAAE,oBAA0C,EAAE,EAAE;IACzH,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,eAAe,CAAC,KAAK,CAAC,kBAAkB,GAAG;QACzC,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB;QAC3C,CAAC,YAAY,CAAC,EAAE,OAAO;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACxB,cAAc,CAAC,UAAU,CAAC,GAAG,kBAAkB,iBAAiB,CAAC,CAAC;IAClE,cAAc,CAAC,UAAU,CAAC,GAAG,kBAAkB,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC;AACvC,CAAC,CAAC","sourcesContent":["import { createStore } from \"@stencil/store\";\n\nexport type NewsletterErrorIdentifier =\n | \"unconfirmed\"\n | \"already_subscribed\"\n | \"invalid_email\"\n | \"newsletter_not_found\"\n | \"preferences_not_found\"\n | \"invalid_preference_token\"\n | \"unknown\";\n\nexport type NewsletterInternalName = string;\nexport type PreferenceIdentifier = string;\n\nexport interface ExistingSubscription {\n newsletter_internal_name: NewsletterInternalName;\n confirmed: boolean;\n preference_identifiers: PreferenceIdentifier[];\n}\n\nexport type CheckedNewsletters = Record<NewsletterInternalName, PreferenceIdentifier[]>;\n\nexport type DefaultPreferences = Record<NewsletterInternalName, Set<PreferenceIdentifier>>;\n\ninterface NewsletterState {\n email: string;\n preferenceToken: string;\n checkedNewsletters: CheckedNewsletters;\n defaultPreferences: DefaultPreferences;\n\n fetchingSubscriptions: boolean;\n existingSubscriptions: ExistingSubscription[];\n\n errors: Record<string, NewsletterErrorIdentifier>;\n\n isAuthenticated: boolean;\n}\n\nconst PERSIST_KEY_PREFIX = \"unidy_newsletter_\";\n\nexport const persist = (key: \"email\" | \"preferenceToken\") => {\n sessionStorage.setItem(`${PERSIST_KEY_PREFIX}${key}`, newsletterStore.state[key]);\n};\n\nconst getPersistedValue = (key: \"email\" | \"preferenceToken\") => {\n return sessionStorage.getItem(`${PERSIST_KEY_PREFIX}${key}`);\n};\n\nconst initialState: NewsletterState = {\n email: getPersistedValue(\"email\") ?? \"\",\n preferenceToken: getPersistedValue(\"preferenceToken\") ?? \"\",\n checkedNewsletters: {},\n defaultPreferences: {},\n\n fetchingSubscriptions: false,\n existingSubscriptions: [],\n\n errors: {},\n isAuthenticated: false,\n};\n\nexport const newsletterStore = createStore<NewsletterState>(initialState);\n\nexport const storeDefaultPreference = (internalName: NewsletterInternalName, preferenceIdentifier: PreferenceIdentifier) => {\n const current = newsletterStore.state.defaultPreferences[internalName] ?? new Set();\n const updated = new Set(current);\n updated.add(preferenceIdentifier);\n newsletterStore.state.defaultPreferences = {\n ...newsletterStore.state.defaultPreferences,\n [internalName]: updated,\n };\n};\n\nexport const reset = () => {\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}preferenceToken`);\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}email`);\n newsletterStore.state = initialState;\n};\n"]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as Sentry from "@sentry/browser";
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
const FieldType = z.enum(["text", "textarea", "number", "boolean", "select", "radio", "date", "datetime-local", "checkbox", "tel"]);
|
|
4
|
+
const BaseFieldDataSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
required: z.boolean(),
|
|
7
|
+
label: z.string(),
|
|
8
|
+
attr_name: z.string(),
|
|
9
|
+
locked: z.boolean().optional(),
|
|
10
|
+
locked_text: z.string().optional(),
|
|
11
|
+
})
|
|
12
|
+
.strict();
|
|
13
|
+
const SelectOptionSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
value: z.string(),
|
|
16
|
+
label: z.string(),
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
const RadioValue = z.union([z.string(), z.literal("_NOT_SET_"), z.boolean()]).nullable();
|
|
20
|
+
const RadioOptionSchema = z
|
|
21
|
+
.object({
|
|
22
|
+
value: RadioValue,
|
|
23
|
+
label: z.string(),
|
|
24
|
+
checked: z.boolean(),
|
|
25
|
+
})
|
|
26
|
+
.strict();
|
|
27
|
+
const TextFieldSchema = BaseFieldDataSchema.extend({
|
|
28
|
+
value: z.union([z.string(), z.null()]),
|
|
29
|
+
type: z.enum(["text", "textarea"]),
|
|
30
|
+
}).strict();
|
|
31
|
+
const PhoneFieldSchema = BaseFieldDataSchema.extend({
|
|
32
|
+
value: z.union([z.string().nullable()]),
|
|
33
|
+
type: z.enum(["tel"]),
|
|
34
|
+
}).strict();
|
|
35
|
+
const RadioFieldSchema = BaseFieldDataSchema.extend({
|
|
36
|
+
value: RadioValue,
|
|
37
|
+
type: z.enum(["radio"]),
|
|
38
|
+
radio_options: z.array(RadioOptionSchema),
|
|
39
|
+
}).strict();
|
|
40
|
+
const SelectFieldSchema = BaseFieldDataSchema.extend({
|
|
41
|
+
value: z.string().nullable(),
|
|
42
|
+
type: z.enum(["select"]),
|
|
43
|
+
options: z.array(SelectOptionSchema),
|
|
44
|
+
}).strict();
|
|
45
|
+
const DateFieldSchema = BaseFieldDataSchema.extend({
|
|
46
|
+
value: z.union([z.string(), z.null()]),
|
|
47
|
+
type: z.enum(["date", "datetime-local"]),
|
|
48
|
+
}).strict();
|
|
49
|
+
const CustomFieldSchema = BaseFieldDataSchema.extend({
|
|
50
|
+
value: z.union([z.string(), z.null(), z.boolean(), z.number(), z.array(z.string())]),
|
|
51
|
+
type: FieldType,
|
|
52
|
+
readonly: z.boolean(),
|
|
53
|
+
radio_options: z.array(RadioOptionSchema).optional(),
|
|
54
|
+
options: z.array(SelectOptionSchema).optional(),
|
|
55
|
+
}).strict();
|
|
56
|
+
export const UserProfileSchema = z.object({
|
|
57
|
+
salutation: RadioFieldSchema,
|
|
58
|
+
first_name: TextFieldSchema,
|
|
59
|
+
last_name: TextFieldSchema,
|
|
60
|
+
email: TextFieldSchema,
|
|
61
|
+
phone_number: PhoneFieldSchema,
|
|
62
|
+
company_name: TextFieldSchema,
|
|
63
|
+
address_line_1: TextFieldSchema,
|
|
64
|
+
address_line_2: TextFieldSchema,
|
|
65
|
+
city: TextFieldSchema,
|
|
66
|
+
postal_code: TextFieldSchema,
|
|
67
|
+
country_code: SelectFieldSchema,
|
|
68
|
+
date_of_birth: DateFieldSchema,
|
|
69
|
+
preferred_language: TextFieldSchema.optional(),
|
|
70
|
+
custom_attributes: z.record(z.string(), CustomFieldSchema),
|
|
71
|
+
});
|
|
72
|
+
const UserProfileErrorSchema = z
|
|
73
|
+
.object({
|
|
74
|
+
error_identifier: z.string(),
|
|
75
|
+
})
|
|
76
|
+
.strict();
|
|
77
|
+
const FormErrorsValue = z.union([z.array(z.string()), z.array(z.tuple([z.number(), z.array(z.string())]))]);
|
|
78
|
+
const FormErrorsRawSchema = z.record(z.string(), FormErrorsValue);
|
|
79
|
+
const UserProfileFormErrorSchema = z
|
|
80
|
+
.object({
|
|
81
|
+
errors: FormErrorsRawSchema,
|
|
82
|
+
})
|
|
83
|
+
.strict()
|
|
84
|
+
.transform(({ errors }) => {
|
|
85
|
+
const flatErrors = Object.fromEntries(Object.entries(errors).map(([field, value]) => {
|
|
86
|
+
const errorMessages = Array.isArray(value) && value.length > 0 && typeof value[0] === "string"
|
|
87
|
+
? value
|
|
88
|
+
: value.flatMap(([, arr]) => arr);
|
|
89
|
+
return [field, errorMessages.join(" | ")];
|
|
90
|
+
}));
|
|
91
|
+
return { errors, flatErrors };
|
|
92
|
+
});
|
|
93
|
+
const UserProfileRailsFormErrorSchema = z
|
|
94
|
+
.object({
|
|
95
|
+
error_details: FormErrorsRawSchema,
|
|
96
|
+
})
|
|
97
|
+
.loose()
|
|
98
|
+
.transform(({ error_details }) => ({ errors: error_details }))
|
|
99
|
+
.pipe(UserProfileFormErrorSchema);
|
|
100
|
+
const ProfileResultSchema = z.union([
|
|
101
|
+
UserProfileSchema,
|
|
102
|
+
UserProfileErrorSchema,
|
|
103
|
+
UserProfileFormErrorSchema,
|
|
104
|
+
UserProfileRailsFormErrorSchema,
|
|
105
|
+
]);
|
|
106
|
+
export class ProfileService {
|
|
107
|
+
client;
|
|
108
|
+
constructor(client) {
|
|
109
|
+
this.client = client;
|
|
110
|
+
}
|
|
111
|
+
async fetchProfile({ idToken, lang }) {
|
|
112
|
+
if (!idToken) {
|
|
113
|
+
return { status: 401, success: false, headers: new Headers(), error: "missing id_token" };
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const resp = await this.client.get(`/api/sdk/v1/profile${lang ? `?lang=${lang}` : ""}`, { "X-ID-Token": idToken });
|
|
117
|
+
const parsed = ProfileResultSchema.safeParse(resp.data);
|
|
118
|
+
if (!parsed.success) {
|
|
119
|
+
return { status: 400, success: false, headers: new Headers(), error: "invalid profile data" };
|
|
120
|
+
}
|
|
121
|
+
const data = parsed.data;
|
|
122
|
+
if ("error_identifier" in data) {
|
|
123
|
+
return { ...resp, data, error: data.error_identifier };
|
|
124
|
+
}
|
|
125
|
+
return { ...resp, data };
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
Sentry.captureException(error);
|
|
129
|
+
return {
|
|
130
|
+
status: error instanceof TypeError ? 0 : 500,
|
|
131
|
+
success: false,
|
|
132
|
+
headers: new Headers(),
|
|
133
|
+
error: error instanceof Error ? error.message : String(error),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async updateProfile({ idToken, data, lang }) {
|
|
138
|
+
if (!idToken) {
|
|
139
|
+
return { status: 401, success: false, headers: new Headers(), error: "missing id_token" };
|
|
140
|
+
}
|
|
141
|
+
const payload = data;
|
|
142
|
+
try {
|
|
143
|
+
const resp = await this.client.patch(`/api/sdk/v1/profile${lang ? `?lang=${lang}` : ""}`, { ...payload }, { "X-ID-Token": idToken });
|
|
144
|
+
const parsed = ProfileResultSchema.safeParse(resp.data);
|
|
145
|
+
if (!parsed.success) {
|
|
146
|
+
return { status: 400, success: false, headers: new Headers(), error: "invalid profile data" };
|
|
147
|
+
}
|
|
148
|
+
const result = parsed.data;
|
|
149
|
+
if ("errors" in result) {
|
|
150
|
+
return { ...resp, data: result };
|
|
151
|
+
}
|
|
152
|
+
if ("error_identifier" in result) {
|
|
153
|
+
return { ...resp, data: result, error: result.error_identifier };
|
|
154
|
+
}
|
|
155
|
+
return { ...resp, data: result };
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
Sentry.captureException(error);
|
|
159
|
+
return {
|
|
160
|
+
status: error instanceof TypeError ? 0 : 500,
|
|
161
|
+
success: false,
|
|
162
|
+
headers: new Headers(),
|
|
163
|
+
error: error instanceof Error ? error.message : String(error),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/profile/api/profile.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from \"@sentry/browser\";\nimport * as z from \"zod\";\nimport type { ApiClient, ApiResponse } from \"../../api\";\n\nconst FieldType = z.enum([\"text\", \"textarea\", \"number\", \"boolean\", \"select\", \"radio\", \"date\", \"datetime-local\", \"checkbox\", \"tel\"]);\n\nconst BaseFieldDataSchema = z\n .object({\n required: z.boolean(),\n label: z.string(),\n attr_name: z.string(),\n locked: z.boolean().optional(),\n locked_text: z.string().optional(),\n })\n .strict();\n\nconst SelectOptionSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n })\n .strict();\n\nconst RadioValue = z.union([z.string(), z.literal(\"_NOT_SET_\"), z.boolean()]).nullable();\n\nconst RadioOptionSchema = z\n .object({\n value: RadioValue,\n label: z.string(),\n checked: z.boolean(),\n })\n .strict();\n\nconst TextFieldSchema = BaseFieldDataSchema.extend({\n value: z.union([z.string(), z.null()]),\n type: z.enum([\"text\", \"textarea\"]),\n}).strict();\n\nconst PhoneFieldSchema = BaseFieldDataSchema.extend({\n value: z.union([z.string().nullable()]),\n type: z.enum([\"tel\"]),\n}).strict();\n\nconst RadioFieldSchema = BaseFieldDataSchema.extend({\n value: RadioValue,\n type: z.enum([\"radio\"]),\n radio_options: z.array(RadioOptionSchema),\n}).strict();\n\nconst SelectFieldSchema = BaseFieldDataSchema.extend({\n value: z.string().nullable(),\n type: z.enum([\"select\"]),\n options: z.array(SelectOptionSchema),\n}).strict();\n\nconst DateFieldSchema = BaseFieldDataSchema.extend({\n value: z.union([z.string(), z.null()]),\n type: z.enum([\"date\", \"datetime-local\"]),\n}).strict();\n\nconst CustomFieldSchema = BaseFieldDataSchema.extend({\n value: z.union([z.string(), z.null(), z.boolean(), z.number(), z.array(z.string())]),\n type: FieldType,\n readonly: z.boolean(),\n radio_options: z.array(RadioOptionSchema).optional(),\n options: z.array(SelectOptionSchema).optional(),\n}).strict();\n\nexport const UserProfileSchema = z.object({\n salutation: RadioFieldSchema,\n first_name: TextFieldSchema,\n last_name: TextFieldSchema,\n email: TextFieldSchema,\n phone_number: PhoneFieldSchema,\n company_name: TextFieldSchema,\n address_line_1: TextFieldSchema,\n address_line_2: TextFieldSchema,\n city: TextFieldSchema,\n postal_code: TextFieldSchema,\n country_code: SelectFieldSchema,\n date_of_birth: DateFieldSchema,\n preferred_language: TextFieldSchema.optional(),\n custom_attributes: z.record(z.string(), CustomFieldSchema),\n});\n\nconst UserProfileErrorSchema = z\n .object({\n error_identifier: z.string(),\n })\n .strict();\n\nconst FormErrorsValue = z.union([z.array(z.string()), z.array(z.tuple([z.number(), z.array(z.string())]))]);\n\nconst FormErrorsRawSchema = z.record(z.string(), FormErrorsValue);\n\nconst UserProfileFormErrorSchema = z\n .object({\n errors: FormErrorsRawSchema,\n })\n .strict()\n .transform(({ errors }) => {\n const flatErrors = Object.fromEntries(\n Object.entries(errors).map(([field, value]) => {\n const errorMessages =\n Array.isArray(value) && value.length > 0 && typeof value[0] === \"string\"\n ? (value as string[])\n : (value as Array<[number, string[]]>).flatMap(([, arr]) => arr);\n return [field, errorMessages.join(\" | \")];\n }),\n );\n return { errors, flatErrors };\n });\n\nconst UserProfileRailsFormErrorSchema = z\n .object({\n error_details: FormErrorsRawSchema,\n })\n .loose()\n .transform(({ error_details }) => ({ errors: error_details }))\n .pipe(UserProfileFormErrorSchema);\n\nexport type UserProfileData = z.infer<typeof UserProfileSchema>;\nexport type UserProfileError = z.infer<typeof UserProfileErrorSchema>;\nexport type UserProfileFormError = z.infer<typeof UserProfileFormErrorSchema>;\n\nconst ProfileResultSchema = z.union([\n UserProfileSchema,\n UserProfileErrorSchema,\n UserProfileFormErrorSchema,\n UserProfileRailsFormErrorSchema,\n]);\n\nexport type ProfileResult = UserProfileData | UserProfileError | UserProfileFormError | Record<string, string>;\n\ndeclare global {\n interface Window {\n UNIDY?: { auth?: { id_token?: string } };\n }\n}\n\ntype FetchProfileArgs = { idToken: string; lang?: string };\ntype UpdateProfileArgs = { idToken: string; data: unknown; lang?: string };\n\nexport class ProfileService {\n constructor(private client: ApiClient) {}\n\n async fetchProfile({ idToken, lang }: FetchProfileArgs): Promise<ApiResponse<ProfileResult>> {\n if (!idToken) {\n return { status: 401, success: false, headers: new Headers(), error: \"missing id_token\" };\n }\n\n try {\n const resp = await this.client.get<unknown>(`/api/sdk/v1/profile${lang ? `?lang=${lang}` : \"\"}`, { \"X-ID-Token\": idToken });\n\n const parsed = ProfileResultSchema.safeParse(resp.data);\n if (!parsed.success) {\n return { status: 400, success: false, headers: new Headers(), error: \"invalid profile data\" };\n }\n\n const data = parsed.data;\n\n if (\"error_identifier\" in data) {\n return { ...resp, data, error: data.error_identifier };\n }\n\n return { ...resp, data };\n } catch (error) {\n Sentry.captureException(error);\n return {\n status: error instanceof TypeError ? 0 : 500,\n success: false,\n headers: new Headers(),\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n async updateProfile({ idToken, data, lang }: UpdateProfileArgs): Promise<ApiResponse<ProfileResult>> {\n if (!idToken) {\n return { status: 401, success: false, headers: new Headers(), error: \"missing id_token\" };\n }\n\n const payload = data as object;\n\n try {\n const resp = await this.client.patch<unknown>(\n `/api/sdk/v1/profile${lang ? `?lang=${lang}` : \"\"}`,\n { ...payload },\n { \"X-ID-Token\": idToken },\n );\n\n const parsed = ProfileResultSchema.safeParse(resp.data);\n if (!parsed.success) {\n return { status: 400, success: false, headers: new Headers(), error: \"invalid profile data\" };\n }\n\n const result = parsed.data;\n\n if (\"errors\" in result) {\n return { ...resp, data: result };\n }\n\n if (\"error_identifier\" in result) {\n return { ...resp, data: result, error: result.error_identifier };\n }\n\n return { ...resp, data: result };\n } catch (error) {\n Sentry.captureException(error);\n return {\n status: error instanceof TypeError ? 0 : 500,\n success: false,\n headers: new Headers(),\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.block{display:block}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:host{display:block}.field-error:focus{border-color:red;outline-color:red}.multi-select-readonly-container{list-style:none}.multi-select-readonly-container li{display:inline-block}[part=input]:disabled,[part=select]:disabled{cursor:not-allowed}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|