@hexclave/tanstack-start 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -23
- package/dist/components/api-key-dialogs.js +18 -18
- package/dist/components/api-key-dialogs.js.map +1 -1
- package/dist/components/api-key-table.js +19 -19
- package/dist/components/api-key-table.js.map +1 -1
- package/dist/components/credential-sign-in.js +12 -12
- package/dist/components/credential-sign-in.js.map +1 -1
- package/dist/components/credential-sign-up.js +19 -19
- package/dist/components/credential-sign-up.js.map +1 -1
- package/dist/components/elements/separator-with-text.js +3 -3
- package/dist/components/elements/separator-with-text.js.map +1 -1
- package/dist/components/elements/sidebar-layout.js +15 -15
- package/dist/components/elements/sidebar-layout.js.map +1 -1
- package/dist/components/elements/user-avatar.js +3 -3
- package/dist/components/elements/user-avatar.js.map +1 -1
- package/dist/components/link.js +2 -2
- package/dist/components/link.js.map +1 -1
- package/dist/components/magic-link-sign-in.js +17 -17
- package/dist/components/magic-link-sign-in.js.map +1 -1
- package/dist/components/message-cards/known-error-message-card.js +2 -2
- package/dist/components/message-cards/known-error-message-card.js.map +1 -1
- package/dist/components/message-cards/message-card.js +4 -4
- package/dist/components/message-cards/message-card.js.map +1 -1
- package/dist/components/message-cards/predefined-message-card.js +2 -2
- package/dist/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/components/oauth-button.d.ts.map +1 -1
- package/dist/components/oauth-button.js +15 -15
- package/dist/components/oauth-button.js.map +1 -1
- package/dist/components/passkey-button.js +2 -2
- package/dist/components/passkey-button.js.map +1 -1
- package/dist/components/profile-image-editor.js +9 -9
- package/dist/components/profile-image-editor.js.map +1 -1
- package/dist/components/selected-team-switcher.js +4 -4
- package/dist/components/selected-team-switcher.js.map +1 -1
- package/dist/components/team-icon.js +4 -4
- package/dist/components/team-icon.js.map +1 -1
- package/dist/components/team-switcher.js +21 -21
- package/dist/components/team-switcher.js.map +1 -1
- package/dist/components/user-button.js +13 -13
- package/dist/components/user-button.js.map +1 -1
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +32 -32
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
- package/dist/components-page/account-settings/api-keys/api-keys-page.js +2 -2
- package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
- package/dist/components-page/account-settings/editable-text.js +5 -5
- package/dist/components-page/account-settings/editable-text.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/emails-section.js +22 -22
- package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/mfa-section.js +17 -17
- package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/otp-section.js +9 -9
- package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/passkey-section.js +9 -9
- package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/password-section.js +23 -23
- package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
- package/dist/components-page/account-settings/notifications/notifications-page.js +6 -6
- package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
- package/dist/components-page/account-settings/payments/payments-panel.js +52 -52
- package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -1
- package/dist/components-page/account-settings/profile-page/profile-page.js +1 -1
- package/dist/components-page/account-settings/section.js +4 -4
- package/dist/components-page/account-settings/section.js.map +1 -1
- package/dist/components-page/account-settings/settings/delete-account-section.js +7 -7
- package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/components-page/account-settings/settings/sign-out-section.js +2 -2
- package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/leave-team-section.js +5 -5
- package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-api-keys-section.js +4 -4
- package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-creation-page.js +7 -7
- package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js +20 -20
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-list-section.js +5 -5
- package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
- package/dist/components-page/account-settings.js +22 -22
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.js +23 -23
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.js +9 -9
- package/dist/components-page/cli-auth-confirm.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.test.js +4 -4
- package/dist/components-page/cli-auth-confirm.test.js.map +1 -1
- package/dist/components-page/email-verification.js +6 -6
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/error-page.js +11 -11
- package/dist/components-page/error-page.js.map +1 -1
- package/dist/components-page/forgot-password.js +11 -11
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/magic-link-callback.js +8 -8
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/mfa.js +13 -13
- package/dist/components-page/mfa.js.map +1 -1
- package/dist/components-page/oauth-callback.js +9 -9
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/onboarding.js +11 -11
- package/dist/components-page/onboarding.js.map +1 -1
- package/dist/components-page/password-reset.js +27 -27
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/section.js +1 -1
- package/dist/components-page/sign-out.js +4 -4
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/stack-handler-client.js +14 -10
- package/dist/components-page/stack-handler-client.js.map +1 -1
- package/dist/components-page/stack-handler.d.ts +14 -9
- package/dist/components-page/stack-handler.d.ts.map +1 -1
- package/dist/components-page/stack-handler.js +8 -2
- package/dist/components-page/stack-handler.js.map +1 -1
- package/dist/components-page/team-creation.js +9 -9
- package/dist/components-page/team-creation.js.map +1 -1
- package/dist/components-page/team-invitation.js +20 -20
- package/dist/components-page/team-invitation.js.map +1 -1
- package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-core.js +25 -25
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.test.js +1 -1
- package/dist/dev-tool/index.js +6 -6
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/esm/components/api-key-dialogs.js.map +1 -1
- package/dist/esm/components/api-key-table.js.map +1 -1
- package/dist/esm/components/credential-sign-in.js.map +1 -1
- package/dist/esm/components/credential-sign-up.js.map +1 -1
- package/dist/esm/components/elements/separator-with-text.js.map +1 -1
- package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
- package/dist/esm/components/elements/user-avatar.js.map +1 -1
- package/dist/esm/components/link.js.map +1 -1
- package/dist/esm/components/magic-link-sign-in.js.map +1 -1
- package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
- package/dist/esm/components/message-cards/message-card.js.map +1 -1
- package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/esm/components/oauth-button.d.ts.map +1 -1
- package/dist/esm/components/oauth-button.js.map +1 -1
- package/dist/esm/components/passkey-button.js.map +1 -1
- package/dist/esm/components/profile-image-editor.js.map +1 -1
- package/dist/esm/components/selected-team-switcher.js.map +1 -1
- package/dist/esm/components/team-icon.js.map +1 -1
- package/dist/esm/components/team-switcher.js.map +1 -1
- package/dist/esm/components/user-button.js.map +1 -1
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -1
- package/dist/esm/components-page/account-settings/profile-page/profile-page.js +1 -1
- package/dist/esm/components-page/account-settings/section.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.test.js +2 -2
- package/dist/esm/components-page/cli-auth-confirm.test.js.map +1 -1
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/error-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/mfa.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/onboarding.js.map +1 -1
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/stack-handler-client.js +8 -4
- package/dist/esm/components-page/stack-handler-client.js.map +1 -1
- package/dist/esm/components-page/stack-handler.d.ts +13 -9
- package/dist/esm/components-page/stack-handler.d.ts.map +1 -1
- package/dist/esm/components-page/stack-handler.js +5 -2
- package/dist/esm/components-page/stack-handler.js.map +1 -1
- package/dist/esm/components-page/team-creation.js.map +1 -1
- package/dist/esm/components-page/team-invitation.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +4 -4
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +1 -1
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/generated/global-css.d.ts +1 -1
- package/dist/esm/generated/global-css.js +1 -1
- package/dist/esm/generated/global-css.js.map +1 -1
- package/dist/esm/generated/quetzal-translations.js.map +1 -1
- package/dist/esm/index.d.ts +5 -5
- package/dist/esm/index.js +5 -6
- package/dist/esm/integrations/convex.js.map +1 -1
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/auth.test.js.map +1 -1
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/hooks.d.ts +11 -1
- package/dist/esm/lib/hooks.d.ts.map +1 -1
- package/dist/esm/lib/hooks.js +19 -9
- package/dist/esm/lib/hooks.js.map +1 -1
- package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +3 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +67 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +19 -3
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js +2 -2
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js +3 -2
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/esm/lib/stack-app/common.js.map +1 -1
- package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
- package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
- package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
- package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
- package/dist/esm/lib/stack-app/url-targets.js.map +1 -1
- package/dist/esm/lib/stack-app/url-targets.test.js +1 -1
- package/dist/esm/lib/stack-app/url-targets.test.js.map +1 -1
- package/dist/esm/lib/stack-app/users/index.js.map +1 -1
- package/dist/esm/providers/stack-context.d.ts +3 -2
- package/dist/esm/providers/stack-context.d.ts.map +1 -1
- package/dist/esm/providers/stack-context.js +3 -1
- package/dist/esm/providers/stack-context.js.map +1 -1
- package/dist/esm/providers/stack-provider-client.js.map +1 -1
- package/dist/esm/providers/stack-provider.d.ts +5 -1
- package/dist/esm/providers/stack-provider.d.ts.map +1 -1
- package/dist/esm/providers/stack-provider.js +5 -1
- package/dist/esm/providers/stack-provider.js.map +1 -1
- package/dist/esm/providers/theme-provider.d.ts +6 -2
- package/dist/esm/providers/theme-provider.d.ts.map +1 -1
- package/dist/esm/providers/theme-provider.js +6 -2
- package/dist/esm/providers/theme-provider.js.map +1 -1
- package/dist/esm/providers/translation-provider-client.d.ts +4 -3
- package/dist/esm/providers/translation-provider-client.d.ts.map +1 -1
- package/dist/esm/providers/translation-provider-client.js +4 -2
- package/dist/esm/providers/translation-provider-client.js.map +1 -1
- package/dist/esm/providers/translation-provider.js.map +1 -1
- package/dist/esm/utils/url.js.map +1 -1
- package/dist/generated/global-css.d.ts +1 -1
- package/dist/generated/global-css.js +1 -1
- package/dist/generated/global-css.js.map +1 -1
- package/dist/generated/quetzal-translations.js +16 -16
- package/dist/generated/quetzal-translations.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +9 -12
- package/dist/integrations/convex/component/convex.config.d.ts +1 -1
- package/dist/integrations/convex.js +5 -5
- package/dist/integrations/convex.js.map +1 -1
- package/dist/lib/auth.js +12 -12
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/auth.test.js +2 -2
- package/dist/lib/auth.test.js.map +1 -1
- package/dist/lib/cookie.js +13 -13
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/hooks.d.ts +11 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +19 -8
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/stack-app/api-keys/index.js +2 -2
- package/dist/lib/stack-app/api-keys/index.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +39 -37
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +66 -0
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js +232 -216
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js +31 -31
- package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.js +7 -7
- package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js +3 -3
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/index.js +4 -4
- package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js +8 -8
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js +70 -70
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.js +13 -12
- package/dist/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +5 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/lib/stack-app/common.d.ts +1 -1
- package/dist/lib/stack-app/common.js.map +1 -1
- package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/lib/stack-app/email-templates/index.js.map +1 -1
- package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/lib/stack-app/permissions/index.js.map +1 -1
- package/dist/lib/stack-app/projects/index.js.map +1 -1
- package/dist/lib/stack-app/teams/index.js.map +1 -1
- package/dist/lib/stack-app/url-targets.js +6 -6
- package/dist/lib/stack-app/url-targets.js.map +1 -1
- package/dist/lib/stack-app/url-targets.test.js +1 -1
- package/dist/lib/stack-app/url-targets.test.js.map +1 -1
- package/dist/lib/stack-app/users/index.js +3 -3
- package/dist/lib/stack-app/users/index.js.map +1 -1
- package/dist/providers/stack-context.d.ts +3 -2
- package/dist/providers/stack-context.d.ts.map +1 -1
- package/dist/providers/stack-context.js +3 -1
- package/dist/providers/stack-context.js.map +1 -1
- package/dist/providers/stack-provider-client.js +2 -2
- package/dist/providers/stack-provider-client.js.map +1 -1
- package/dist/providers/stack-provider.d.ts +6 -1
- package/dist/providers/stack-provider.d.ts.map +1 -1
- package/dist/providers/stack-provider.js +8 -1
- package/dist/providers/stack-provider.js.map +1 -1
- package/dist/providers/theme-provider.d.ts +6 -2
- package/dist/providers/theme-provider.d.ts.map +1 -1
- package/dist/providers/theme-provider.js +10 -5
- package/dist/providers/theme-provider.js.map +1 -1
- package/dist/providers/translation-provider-client.d.ts +4 -3
- package/dist/providers/translation-provider-client.d.ts.map +1 -1
- package/dist/providers/translation-provider-client.js +4 -1
- package/dist/providers/translation-provider-client.js.map +1 -1
- package/dist/providers/translation-provider.js +2 -2
- package/dist/providers/translation-provider.js.map +1 -1
- package/dist/{storage-CPqRDIqg.d.ts → storage-CKzvsBxG.d.ts} +1 -1
- package/dist/{storage-CPqRDIqg.d.ts.map → storage-CKzvsBxG.d.ts.map} +1 -1
- package/dist/utils/url.js +2 -2
- package/dist/utils/url.js.map +1 -1
- package/package.json +6 -6
- package/dist/esm/internal/deprecation-warning.d.ts +0 -1
- package/dist/esm/internal/deprecation-warning.js +0 -24
- package/dist/esm/internal/deprecation-warning.js.map +0 -1
- package/dist/internal/deprecation-warning.d.ts +0 -1
- package/dist/internal/deprecation-warning.js +0 -24
- package/dist/internal/deprecation-warning.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../../../chunk-BE-pF4vm.js');
|
|
3
3
|
let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
|
|
4
|
-
let
|
|
5
|
-
let
|
|
6
|
-
let
|
|
4
|
+
let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
|
|
5
|
+
let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
|
|
6
|
+
let _hexclave_ui = require("@hexclave/ui");
|
|
7
7
|
let react = require("react");
|
|
8
8
|
let react_hook_form = require("react-hook-form");
|
|
9
9
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
|
-
let
|
|
10
|
+
let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
|
|
11
11
|
let yup = require("yup");
|
|
12
12
|
yup = require_chunk.__toESM(yup);
|
|
13
13
|
let _________lib_hooks_js = require("../../../lib/hooks.js");
|
|
@@ -23,7 +23,7 @@ function PasswordSection(props) {
|
|
|
23
23
|
if (props?.mockMode && !user) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___section_js.Section, {
|
|
24
24
|
title: t("Password"),
|
|
25
25
|
description: t("Password management is not available in demo mode."),
|
|
26
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
26
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
27
27
|
variant: "secondary",
|
|
28
28
|
children: t("Password management is not available in demo mode.")
|
|
29
29
|
})
|
|
@@ -33,17 +33,17 @@ function PasswordSection(props) {
|
|
|
33
33
|
const [changingPassword, setChangingPassword] = (0, react.useState)(false);
|
|
34
34
|
const [loading, setLoading] = (0, react.useState)(false);
|
|
35
35
|
const project = (0, _________index_js.useStackApp)().useProject();
|
|
36
|
-
const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = (0, react_hook_form.useForm)({ resolver: (0, _hookform_resolvers_yup.yupResolver)((0,
|
|
37
|
-
oldPassword: user.hasPassword ?
|
|
38
|
-
newPassword:
|
|
36
|
+
const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = (0, react_hook_form.useForm)({ resolver: (0, _hookform_resolvers_yup.yupResolver)((0, _hexclave_shared_dist_schema_fields.yupObject)({
|
|
37
|
+
oldPassword: user.hasPassword ? _hexclave_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your old password")) : (0, _hexclave_shared_dist_schema_fields.yupString)(),
|
|
38
|
+
newPassword: _hexclave_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your password")).test({
|
|
39
39
|
name: "is-valid-password",
|
|
40
40
|
test: (value, ctx) => {
|
|
41
|
-
const error = (0,
|
|
41
|
+
const error = (0, _hexclave_shared_dist_helpers_password.getPasswordError)(value);
|
|
42
42
|
if (error) return ctx.createError({ message: error.message });
|
|
43
43
|
else return true;
|
|
44
44
|
}
|
|
45
45
|
}),
|
|
46
|
-
newPasswordRepeat: (0,
|
|
46
|
+
newPasswordRepeat: (0, _hexclave_shared_dist_schema_fields.yupString)().nullable().oneOf([
|
|
47
47
|
yup.ref("newPassword"),
|
|
48
48
|
"",
|
|
49
49
|
null
|
|
@@ -77,25 +77,25 @@ function PasswordSection(props) {
|
|
|
77
77
|
description: user.hasPassword ? t("Update your password") : t("Set a password for your account"),
|
|
78
78
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
79
79
|
className: "flex flex-col gap-4",
|
|
80
|
-
children: !changingPassword ? hasValidEmail ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
80
|
+
children: !changingPassword ? hasValidEmail ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
81
81
|
variant: "secondary",
|
|
82
82
|
onClick: () => setChangingPassword(true),
|
|
83
83
|
children: user.hasPassword ? t("Update password") : t("Set password")
|
|
84
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
84
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
85
85
|
variant: "secondary",
|
|
86
86
|
type: "label",
|
|
87
87
|
children: t("To set a password, please add a sign-in email.")
|
|
88
88
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
89
|
-
onSubmit: (e) => (0,
|
|
89
|
+
onSubmit: (e) => (0, _hexclave_shared_dist_utils_promises.runAsynchronouslyWithAlert)(handleSubmit(onSubmit)(e)),
|
|
90
90
|
noValidate: true,
|
|
91
91
|
children: [
|
|
92
92
|
user.hasPassword && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
93
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
93
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
|
|
94
94
|
htmlFor: "old-password",
|
|
95
95
|
className: "mb-1",
|
|
96
96
|
children: t("Old password")
|
|
97
97
|
}),
|
|
98
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
98
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Input, {
|
|
99
99
|
id: "old-password",
|
|
100
100
|
type: "password",
|
|
101
101
|
autoComplete: "current-password",
|
|
@@ -103,45 +103,45 @@ function PasswordSection(props) {
|
|
|
103
103
|
}),
|
|
104
104
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.oldPassword?.message?.toString() })
|
|
105
105
|
] }),
|
|
106
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
106
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
|
|
107
107
|
htmlFor: "new-password",
|
|
108
108
|
className: "mt-4 mb-1",
|
|
109
109
|
children: t("New password")
|
|
110
110
|
}),
|
|
111
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
111
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
|
|
112
112
|
id: "new-password",
|
|
113
113
|
autoComplete: "new-password",
|
|
114
114
|
...registerPassword,
|
|
115
115
|
onChange: (e) => {
|
|
116
116
|
clearErrors("newPassword");
|
|
117
117
|
clearErrors("newPasswordRepeat");
|
|
118
|
-
(0,
|
|
118
|
+
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(registerPassword.onChange(e));
|
|
119
119
|
}
|
|
120
120
|
}),
|
|
121
121
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.newPassword?.message?.toString() }),
|
|
122
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
122
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
|
|
123
123
|
htmlFor: "repeat-password",
|
|
124
124
|
className: "mt-4 mb-1",
|
|
125
125
|
children: t("Repeat new password")
|
|
126
126
|
}),
|
|
127
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
127
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
|
|
128
128
|
id: "repeat-password",
|
|
129
129
|
autoComplete: "new-password",
|
|
130
130
|
...registerPasswordRepeat,
|
|
131
131
|
onChange: (e) => {
|
|
132
132
|
clearErrors("newPassword");
|
|
133
133
|
clearErrors("newPasswordRepeat");
|
|
134
|
-
(0,
|
|
134
|
+
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(registerPasswordRepeat.onChange(e));
|
|
135
135
|
}
|
|
136
136
|
}),
|
|
137
137
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.newPasswordRepeat?.message?.toString() }),
|
|
138
138
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
139
139
|
className: "mt-6 flex gap-4",
|
|
140
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
140
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
141
141
|
type: "submit",
|
|
142
142
|
loading,
|
|
143
143
|
children: user.hasPassword ? t("Update Password") : t("Set Password")
|
|
144
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
144
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
145
145
|
variant: "secondary",
|
|
146
146
|
onClick: () => {
|
|
147
147
|
setChangingPassword(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-section.js","names":["Section","Typography","schemaFieldsPasswordSchema","Button","Label","Input","FormWarningText","PasswordInput"],"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@
|
|
1
|
+
{"version":3,"file":"password-section.js","names":["Section","Typography","schemaFieldsPasswordSchema","Button","Label","Input","FormWarningText","PasswordInput"],"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@hexclave/shared/dist/helpers/password';\nimport { passwordSchema as schemaFieldsPasswordSchema, yupObject, yupString } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronously, runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, PasswordInput, Typography } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp } from '../../..';\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\n\nexport function PasswordSection(props?: {\n mockMode?: boolean,\n}) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? 'return-null' : \"throw\" });\n\n // In mock mode, show a placeholder message\n if (props?.mockMode && !user) {\n return (\n <Section\n title={t(\"Password\")}\n description={t(\"Password management is not available in demo mode.\")}\n >\n <Typography variant='secondary'>{t(\"Password management is not available in demo mode.\")}</Typography>\n </Section>\n );\n }\n\n if (!user) {\n return null; // This shouldn't happen in non-mock mode due to throw\n }\n const contactChannels = user.useContactChannels();\n const [changingPassword, setChangingPassword] = useState(false);\n const [loading, setLoading] = useState(false);\n const project = useStackApp().useProject();\n\n const passwordSchema = yupObject({\n oldPassword: user.hasPassword ? schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your old password')) : yupString(),\n newPassword: schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your password')).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n newPasswordRepeat: yupString().nullable().oneOf([yup.ref('newPassword'), \"\", null], t('Passwords do not match')).defined().nonEmpty(t('Please repeat your password'))\n });\n\n const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = useForm({\n resolver: yupResolver(passwordSchema)\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasValidEmail = contactChannels.filter(x => x.type === 'email' && x.usedForAuth).length > 0;\n\n const onSubmit = async (data: yup.InferType<typeof passwordSchema>) => {\n setLoading(true);\n try {\n const { oldPassword, newPassword } = data;\n const error = user.hasPassword\n ? await user.updatePassword({ oldPassword: oldPassword!, newPassword })\n : await user.setPassword({ password: newPassword! });\n if (error) {\n setError('oldPassword', { type: 'manual', message: t('Incorrect password') });\n } else {\n reset();\n setChangingPassword(false);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const registerPassword = register('newPassword');\n const registerPasswordRepeat = register('newPasswordRepeat');\n\n if (!project.config.credentialEnabled) {\n return null;\n }\n\n return (\n <Section\n title={t(\"Password\")}\n description={user.hasPassword ? t(\"Update your password\") : t(\"Set a password for your account\")}\n >\n <div className='flex flex-col gap-4'>\n {!changingPassword ? (\n hasValidEmail ? (\n <Button\n variant='secondary'\n onClick={() => setChangingPassword(true)}\n >\n {user.hasPassword ? t(\"Update password\") : t(\"Set password\")}\n </Button>\n ) : (\n <Typography variant='secondary' type='label'>{t(\"To set a password, please add a sign-in email.\")}</Typography>\n )\n ) : (\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n {user.hasPassword && (\n <>\n <Label htmlFor=\"old-password\" className=\"mb-1\">{t(\"Old password\")}</Label>\n <Input\n id=\"old-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n {...register(\"oldPassword\")}\n />\n <FormWarningText text={errors.oldPassword?.message?.toString()} />\n </>\n )}\n\n <Label htmlFor=\"new-password\" className=\"mt-4 mb-1\">{t(\"New password\")}</Label>\n <PasswordInput\n id=\"new-password\"\n autoComplete=\"new-password\"\n {...registerPassword}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPassword.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPassword?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat new password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...registerPasswordRepeat}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPasswordRepeat.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPasswordRepeat?.message?.toString()} />\n\n <div className=\"mt-6 flex gap-4\">\n <Button type=\"submit\" loading={loading}>\n {user.hasPassword ? t(\"Update Password\") : t(\"Set Password\")}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setChangingPassword(false);\n reset();\n }}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,gBAAgB,OAE7B;CACD,MAAM,EAAE,wDAAsB;CAC9B,MAAM,0CAAe,EAAE,IAAI,OAAO,WAAW,gBAAgB,SAAS,CAAC;AAGvE,KAAI,OAAO,YAAY,CAAC,KACtB,QACE,2CAACA;EACC,OAAO,EAAE,WAAW;EACpB,aAAa,EAAE,qDAAqD;YAEpE,2CAACC;GAAW,SAAQ;aAAa,EAAE,qDAAqD;IAAc;GAC9F;AAId,KAAI,CAAC,KACH,QAAO;CAET,MAAM,kBAAkB,KAAK,oBAAoB;CACjD,MAAM,CAAC,kBAAkB,2CAAgC,MAAM;CAC/D,MAAM,CAAC,SAAS,kCAAuB,MAAM;CAC7C,MAAM,8CAAuB,CAAC,YAAY;CAkB1C,MAAM,EAAE,UAAU,cAAc,UAAU,WAAW,EAAE,UAAU,aAAa,uCAAkB,EAC9F,sGAjB+B;EAC/B,aAAa,KAAK,cAAcC,mDAA2B,SAAS,CAAC,SAAS,EAAE,iCAAiC,CAAC,uDAAc;EAChI,aAAaA,mDAA2B,SAAS,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,KAAK;GAC/F,MAAM;GACN,OAAO,OAAO,QAAQ;IACpB,MAAM,qEAAyB,MAAM;AACrC,QAAI,MACF,QAAO,IAAI,YAAY,EAAE,SAAS,MAAM,SAAS,CAAC;QAElD,QAAO;;GAGZ,CAAC;EACF,uEAA8B,CAAC,UAAU,CAAC,MAAM;GAAC,IAAI,IAAI,cAAc;GAAE;GAAI;GAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,8BAA8B,CAAC;EACtK,CAAC,CAGqC,EACtC,CAAC;CAGF,MAAM,gBAAgB,gBAAgB,QAAO,MAAK,EAAE,SAAS,WAAW,EAAE,YAAY,CAAC,SAAS;CAEhG,MAAM,WAAW,OAAO,SAA+C;AACrE,aAAW,KAAK;AAChB,MAAI;GACF,MAAM,EAAE,aAAa,gBAAgB;AAIrC,OAHc,KAAK,cACf,MAAM,KAAK,eAAe;IAAe;IAAc;IAAa,CAAC,GACrE,MAAM,KAAK,YAAY,EAAE,UAAU,aAAc,CAAC,CAEpD,UAAS,eAAe;IAAE,MAAM;IAAU,SAAS,EAAE,qBAAqB;IAAE,CAAC;QACxE;AACL,WAAO;AACP,wBAAoB,MAAM;;YAEpB;AACR,cAAW,MAAM;;;CAIrB,MAAM,mBAAmB,SAAS,cAAc;CAChD,MAAM,yBAAyB,SAAS,oBAAoB;AAE5D,KAAI,CAAC,QAAQ,OAAO,kBAClB,QAAO;AAGT,QACE,2CAACF;EACC,OAAO,EAAE,WAAW;EACpB,aAAa,KAAK,cAAc,EAAE,uBAAuB,GAAG,EAAE,kCAAkC;YAEhG,2CAAC;GAAI,WAAU;aACZ,CAAC,mBACA,gBACE,2CAACG;IACC,SAAQ;IACR,eAAe,oBAAoB,KAAK;cAEvC,KAAK,cAAc,EAAE,kBAAkB,GAAG,EAAE,eAAe;KACrD,GAET,2CAACF;IAAW,SAAQ;IAAY,MAAK;cAAS,EAAE,iDAAiD;KAAc,GAGjH,4CAAC;IACC,WAAU,2EAAgC,aAAa,SAAS,CAAC,EAAE,CAAC;IACpE;;KAEC,KAAK,eACJ;MACE,2CAACG;OAAM,SAAQ;OAAe,WAAU;iBAAQ,EAAE,eAAe;QAAS;MAC1E,2CAACC;OACC,IAAG;OACH,MAAK;OACL,cAAa;OACb,GAAI,SAAS,cAAc;QAC3B;MACF,2CAACC,gEAAgB,MAAM,OAAO,aAAa,SAAS,UAAU,GAAI;SACjE;KAGL,2CAACF;MAAM,SAAQ;MAAe,WAAU;gBAAa,EAAE,eAAe;OAAS;KAC/E,2CAACG;MACC,IAAG;MACH,cAAa;MACb,GAAI;MACJ,WAAW,MAAM;AACf,mBAAY,cAAc;AAC1B,mBAAY,oBAAoB;AAChC,mEAAkB,iBAAiB,SAAS,EAAE,CAAC;;OAEjD;KACF,2CAACD,gEAAgB,MAAM,OAAO,aAAa,SAAS,UAAU,GAAI;KAElE,2CAACF;MAAM,SAAQ;MAAkB,WAAU;gBAAa,EAAE,sBAAsB;OAAS;KACzF,2CAACG;MACC,IAAG;MACH,cAAa;MACb,GAAI;MACJ,WAAW,MAAM;AACf,mBAAY,cAAc;AAC1B,mBAAY,oBAAoB;AAChC,mEAAkB,uBAAuB,SAAS,EAAE,CAAC;;OAEvD;KACF,2CAACD,gEAAgB,MAAM,OAAO,mBAAmB,SAAS,UAAU,GAAI;KAExE,4CAAC;MAAI,WAAU;iBACb,2CAACH;OAAO,MAAK;OAAkB;iBAC5B,KAAK,cAAc,EAAE,kBAAkB,GAAG,EAAE,eAAe;QACrD,EACT,2CAACA;OACC,SAAQ;OACR,eAAe;AACb,4BAAoB,MAAM;AAC1B,eAAO;;iBAGR,EAAE,SAAS;QACL;OACL;;KACD;IAEL;GACE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../../../chunk-BE-pF4vm.js');
|
|
3
|
-
let
|
|
3
|
+
let _hexclave_ui = require("@hexclave/ui");
|
|
4
4
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
5
|
let _________lib_hooks_js = require("../../../lib/hooks.js");
|
|
6
6
|
let _________lib_translations_js = require("../../../lib/translations.js");
|
|
@@ -10,24 +10,24 @@ let ___page_layout_js = require("../page-layout.js");
|
|
|
10
10
|
function NotificationsPage() {
|
|
11
11
|
const { t } = (0, _________lib_translations_js.useTranslation)();
|
|
12
12
|
const notificationCategories = (0, _________lib_hooks_js.useUser)({ or: "redirect" }).useNotificationCategories();
|
|
13
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___page_layout_js.PageLayout, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
13
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___page_layout_js.PageLayout, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
14
14
|
className: "flex flex-col gap-2",
|
|
15
15
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
16
16
|
className: "sm:flex-1 flex flex-col justify-center pb-2",
|
|
17
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
17
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
18
18
|
className: "font-medium",
|
|
19
19
|
children: t("Choose which emails you want to receive")
|
|
20
20
|
})
|
|
21
21
|
}), notificationCategories.map((category) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22
22
|
className: "flex justify-start gap-4 items-center",
|
|
23
23
|
children: [
|
|
24
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
24
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Switch, {
|
|
25
25
|
checked: category.enabled,
|
|
26
26
|
onCheckedChange: (value) => void category.setEnabled(value),
|
|
27
27
|
disabled: !category.canDisable
|
|
28
28
|
}),
|
|
29
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
30
|
-
!category.canDisable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
29
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: category.name }),
|
|
30
|
+
!category.canDisable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
31
31
|
variant: "secondary",
|
|
32
32
|
type: "footnote",
|
|
33
33
|
children: "(cannot be disabled)"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications-page.js","names":["PageLayout","Separator","Typography","Switch"],"sources":["../../../../src/components-page/account-settings/notifications/notifications-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Switch } from \"@
|
|
1
|
+
{"version":3,"file":"notifications-page.js","names":["PageLayout","Separator","Typography","Switch"],"sources":["../../../../src/components-page/account-settings/notifications/notifications-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Switch } from \"@hexclave/ui\";\nimport { Separator, Typography } from \"@hexclave/ui\";\n\n\nexport function NotificationsPage() {\n const { t } = useTranslation();\n const user = useUser({ or: 'redirect' });\n const notificationCategories = user.useNotificationCategories();\n\n return (\n <PageLayout>\n <Separator />\n <div className='flex flex-col gap-2'>\n <div className='sm:flex-1 flex flex-col justify-center pb-2'>\n <Typography className=\"font-medium\">\n {t('Choose which emails you want to receive')}\n </Typography>\n </div>\n {notificationCategories.map((category) => (\n <div key={category.id} className=\"flex justify-start gap-4 items-center\">\n <Switch\n checked={category.enabled}\n onCheckedChange={(value) => void category.setEnabled(value)}\n disabled={!category.canDisable}\n />\n <Typography>{category.name}</Typography>\n {!category.canDisable && (\n <Typography variant='secondary' type='footnote'>\n (cannot be disabled)\n </Typography>\n )}\n </div>\n ))}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AAWA,SAAgB,oBAAoB;CAClC,MAAM,EAAE,wDAAsB;CAE9B,MAAM,4DADe,EAAE,IAAI,YAAY,CAAC,CACJ,2BAA2B;AAE/D,QACE,4CAACA,2CACC,2CAACC,2BAAY,EACb,4CAAC;EAAI,WAAU;aACb,2CAAC;GAAI,WAAU;aACb,2CAACC;IAAW,WAAU;cACnB,EAAE,0CAA0C;KAClC;IACT,EACL,uBAAuB,KAAK,aAC3B,4CAAC;GAAsB,WAAU;;IAC/B,2CAACC;KACC,SAAS,SAAS;KAClB,kBAAkB,UAAU,KAAK,SAAS,WAAW,MAAM;KAC3D,UAAU,CAAC,SAAS;MACpB;IACF,2CAACD,qCAAY,SAAS,OAAkB;IACvC,CAAC,SAAS,cACT,2CAACA;KAAW,SAAQ;KAAY,MAAK;eAAW;MAEnC;;KAVP,SAAS,GAYb,CACN;GACE,IACK"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_chunk = require('../../../chunk-BE-pF4vm.js');
|
|
5
|
-
let
|
|
6
|
-
let
|
|
5
|
+
let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
|
|
6
|
+
let _hexclave_ui = require("@hexclave/ui");
|
|
7
7
|
let react = require("react");
|
|
8
8
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
-
let
|
|
10
|
-
let
|
|
9
|
+
let _hexclave_shared = require("@hexclave/shared");
|
|
10
|
+
let _hexclave_shared_dist_utils_results = require("@hexclave/shared/dist/utils/results");
|
|
11
11
|
let _________lib_translations_js = require("../../../lib/translations.js");
|
|
12
12
|
let ___section_js = require("../section.js");
|
|
13
13
|
let _________index_js = require("../../../index.js");
|
|
@@ -60,7 +60,7 @@ function SetDefaultPaymentMethodForm(props) {
|
|
|
60
60
|
children: [
|
|
61
61
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
62
62
|
className: "space-y-2",
|
|
63
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
63
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
64
64
|
className: "font-medium",
|
|
65
65
|
children: "Card details"
|
|
66
66
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -71,12 +71,12 @@ function SetDefaultPaymentMethodForm(props) {
|
|
|
71
71
|
} })
|
|
72
72
|
})]
|
|
73
73
|
}),
|
|
74
|
-
errorMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
74
|
+
errorMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
75
75
|
variant: "secondary",
|
|
76
76
|
type: "footnote",
|
|
77
77
|
children: errorMessage
|
|
78
78
|
}),
|
|
79
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
79
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
80
80
|
onClick: async () => {
|
|
81
81
|
if (!stripe || !elements) {
|
|
82
82
|
setErrorMessage("Stripe is still loading. Please try again.");
|
|
@@ -117,20 +117,20 @@ function MockPaymentsPanel(props) {
|
|
|
117
117
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
118
118
|
className: "space-y-4",
|
|
119
119
|
children: [
|
|
120
|
-
props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
120
|
+
props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
121
121
|
className: "font-medium",
|
|
122
122
|
children: props.title
|
|
123
123
|
}),
|
|
124
124
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___section_js.Section, {
|
|
125
125
|
title: t("Payment method"),
|
|
126
126
|
description: t("Manage the default payment method used for subscriptions and invoices."),
|
|
127
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
127
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatPaymentMethod({
|
|
128
128
|
id: "pm_mock",
|
|
129
129
|
brand: "visa",
|
|
130
130
|
last4: "4242",
|
|
131
131
|
exp_month: 12,
|
|
132
132
|
exp_year: 2030
|
|
133
|
-
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
133
|
+
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
134
134
|
disabled: true,
|
|
135
135
|
children: t("Update payment method")
|
|
136
136
|
})]
|
|
@@ -144,15 +144,15 @@ function MockPaymentsPanel(props) {
|
|
|
144
144
|
className: "flex items-start justify-between gap-4",
|
|
145
145
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
146
146
|
className: "min-w-0",
|
|
147
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
147
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
148
148
|
className: "truncate",
|
|
149
149
|
children: t("Pro")
|
|
150
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
150
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Typography, {
|
|
151
151
|
variant: "secondary",
|
|
152
152
|
type: "footnote",
|
|
153
153
|
children: [t("Renews on"), " Jan 1, 2030"]
|
|
154
154
|
})]
|
|
155
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
155
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
156
156
|
disabled: true,
|
|
157
157
|
variant: "secondary",
|
|
158
158
|
color: "neutral",
|
|
@@ -162,10 +162,10 @@ function MockPaymentsPanel(props) {
|
|
|
162
162
|
className: "flex items-start justify-between gap-4",
|
|
163
163
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
164
164
|
className: "min-w-0",
|
|
165
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
165
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
166
166
|
className: "truncate",
|
|
167
167
|
children: t("Credits pack")
|
|
168
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
168
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
169
169
|
variant: "secondary",
|
|
170
170
|
type: "footnote",
|
|
171
171
|
children: t("One-time purchase")
|
|
@@ -197,8 +197,8 @@ function RealPaymentsPanel(props) {
|
|
|
197
197
|
return (0, _stripe_stripe_js.loadStripe)(publishableKey, { stripeAccount: setupIntentStripeAccountId });
|
|
198
198
|
}, [setupIntentStripeAccountId]);
|
|
199
199
|
const handleAsyncError = (error) => {
|
|
200
|
-
if (error instanceof
|
|
201
|
-
(0,
|
|
200
|
+
if (error instanceof _hexclave_shared.KnownErrors.DefaultPaymentMethodRequired) {
|
|
201
|
+
(0, _hexclave_ui.toast)({
|
|
202
202
|
title: t("No default payment method"),
|
|
203
203
|
description: t("Add a payment method before switching plans."),
|
|
204
204
|
variant: "destructive"
|
|
@@ -208,7 +208,7 @@ function RealPaymentsPanel(props) {
|
|
|
208
208
|
alert(`An unhandled error occurred. Please ${_________lib_env_js.envVars.NODE_ENV === "development" ? "check the browser console for the full error." : "report this to the developer."}\n\n${error}`);
|
|
209
209
|
};
|
|
210
210
|
const openPaymentDialog = () => {
|
|
211
|
-
(0,
|
|
211
|
+
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
|
|
212
212
|
setPaymentDialogOpen(true);
|
|
213
213
|
const res = await props.customer.createPaymentMethodSetupIntent();
|
|
214
214
|
setSetupIntentClientSecret(res.clientSecret);
|
|
@@ -234,7 +234,7 @@ function RealPaymentsPanel(props) {
|
|
|
234
234
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
235
235
|
className: "space-y-4",
|
|
236
236
|
children: [
|
|
237
|
-
props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
237
|
+
props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
238
238
|
className: "font-medium",
|
|
239
239
|
children: props.title
|
|
240
240
|
}),
|
|
@@ -242,19 +242,19 @@ function RealPaymentsPanel(props) {
|
|
|
242
242
|
title: t("Payment method"),
|
|
243
243
|
description: t("Manage the default payment method used for subscriptions and invoices."),
|
|
244
244
|
children: [
|
|
245
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
246
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
245
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatPaymentMethod(defaultPaymentMethod) }),
|
|
246
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
247
247
|
onClick: openPaymentDialog,
|
|
248
248
|
children: t("Update payment method")
|
|
249
249
|
}),
|
|
250
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
250
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
|
|
251
251
|
open: paymentDialogOpen,
|
|
252
252
|
onOpenChange: (open) => {
|
|
253
253
|
if (!open) closePaymentDialog();
|
|
254
254
|
else setPaymentDialogOpen(true);
|
|
255
255
|
},
|
|
256
256
|
title: t("Update payment method"),
|
|
257
|
-
children: !setupIntentClientSecret || !setupIntentStripeAccountId || !stripePromise ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
257
|
+
children: !setupIntentClientSecret || !setupIntentStripeAccountId || !stripePromise ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Skeleton, { className: "h-10 w-full" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stripe_react_stripe_js.Elements, {
|
|
258
258
|
stripe: stripePromise,
|
|
259
259
|
options: { clientSecret: setupIntentClientSecret },
|
|
260
260
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SetDefaultPaymentMethodForm, {
|
|
@@ -289,22 +289,22 @@ function RealPaymentsPanel(props) {
|
|
|
289
289
|
className: "flex items-start justify-between gap-4",
|
|
290
290
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
291
291
|
className: "min-w-0",
|
|
292
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
292
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Typography, {
|
|
293
293
|
className: "truncate",
|
|
294
294
|
children: [product.displayName, quantitySuffix]
|
|
295
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
295
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
296
296
|
variant: "secondary",
|
|
297
297
|
type: "footnote",
|
|
298
298
|
children: subtitle
|
|
299
299
|
})]
|
|
300
300
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
301
301
|
className: "flex flex-col items-end gap-2",
|
|
302
|
-
children: [canSwitchPlans && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
302
|
+
children: [canSwitchPlans && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
303
303
|
variant: "secondary",
|
|
304
304
|
color: "neutral",
|
|
305
305
|
onClick: () => openSwitchDialog(product.id, product.switchOptions?.[0]?.productId ?? null),
|
|
306
306
|
children: t("Change plan")
|
|
307
|
-
}), isCancelable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
307
|
+
}), isCancelable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
308
308
|
variant: "secondary",
|
|
309
309
|
color: "neutral",
|
|
310
310
|
onClick: () => setCancelTarget({
|
|
@@ -317,7 +317,7 @@ function RealPaymentsPanel(props) {
|
|
|
317
317
|
}, product.id ?? `${product.displayName}-${index}`);
|
|
318
318
|
})
|
|
319
319
|
}),
|
|
320
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
320
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
|
|
321
321
|
open: cancelTarget !== null,
|
|
322
322
|
onOpenChange: (open) => {
|
|
323
323
|
if (!open) setCancelTarget(null);
|
|
@@ -344,7 +344,7 @@ function RealPaymentsPanel(props) {
|
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
346
|
}),
|
|
347
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
347
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
|
|
348
348
|
open: switchFromProductId !== null,
|
|
349
349
|
onOpenChange: (open) => {
|
|
350
350
|
if (!open) closeSwitchDialog();
|
|
@@ -359,7 +359,7 @@ function RealPaymentsPanel(props) {
|
|
|
359
359
|
const toProductId = switchToProductId;
|
|
360
360
|
if (!fromProductId || !toProductId) return;
|
|
361
361
|
if (!selectedPriceId) return;
|
|
362
|
-
const result = await
|
|
362
|
+
const result = await _hexclave_shared_dist_utils_results.Result.fromThrowingAsync(() => props.customer.switchSubscription({
|
|
363
363
|
fromProductId,
|
|
364
364
|
toProductId,
|
|
365
365
|
priceId: selectedPriceId
|
|
@@ -374,20 +374,20 @@ function RealPaymentsPanel(props) {
|
|
|
374
374
|
},
|
|
375
375
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
376
376
|
className: "space-y-2",
|
|
377
|
-
children: switchOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
377
|
+
children: switchOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
378
378
|
variant: "secondary",
|
|
379
379
|
type: "footnote",
|
|
380
380
|
children: t("No other plans available for this subscription.")
|
|
381
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
381
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
382
382
|
type: "footnote",
|
|
383
383
|
children: t("Choose a plan")
|
|
384
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
384
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Select, {
|
|
385
385
|
value: switchToProductId ?? void 0,
|
|
386
386
|
onValueChange: (value) => setSwitchToProductId(value || null),
|
|
387
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
387
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectTrigger, {
|
|
388
388
|
className: "w-full",
|
|
389
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
390
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
389
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectValue, { placeholder: t("Choose a plan") })
|
|
390
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectContent, { children: switchOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectItem, {
|
|
391
391
|
value: option.productId,
|
|
392
392
|
children: option.displayName
|
|
393
393
|
}, option.productId)) })]
|
|
@@ -396,47 +396,47 @@ function RealPaymentsPanel(props) {
|
|
|
396
396
|
})
|
|
397
397
|
]
|
|
398
398
|
}),
|
|
399
|
-
invoices.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
399
|
+
invoices.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
400
400
|
className: "space-y-2",
|
|
401
401
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
402
402
|
className: "space-y-1",
|
|
403
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
403
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
404
404
|
className: "font-medium",
|
|
405
405
|
children: t("Invoices")
|
|
406
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
406
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
407
407
|
variant: "secondary",
|
|
408
408
|
type: "footnote",
|
|
409
409
|
children: t("Review past invoices and receipts.")
|
|
410
410
|
})]
|
|
411
411
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
412
412
|
className: "border rounded-md",
|
|
413
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
414
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
413
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Table, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.TableRow, { children: [
|
|
414
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
|
|
415
415
|
className: "w-[140px]",
|
|
416
416
|
children: t("Date")
|
|
417
417
|
}),
|
|
418
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
418
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
|
|
419
419
|
className: "w-[120px]",
|
|
420
420
|
children: t("Status")
|
|
421
421
|
}),
|
|
422
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
422
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
|
|
423
423
|
className: "w-[120px]",
|
|
424
424
|
children: t("Amount")
|
|
425
425
|
}),
|
|
426
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
426
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
|
|
427
427
|
className: "w-[120px] text-right",
|
|
428
428
|
children: t("Invoice")
|
|
429
429
|
})
|
|
430
|
-
] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
430
|
+
] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableBody, { children: invoices.map((invoice, index) => {
|
|
431
431
|
const createdAtTime = invoice.createdAt.getTime();
|
|
432
432
|
const invoiceKey = Number.isNaN(createdAtTime) ? `invoice-${index}` : `invoice-${createdAtTime}-${index}`;
|
|
433
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
434
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
435
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
436
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
437
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
433
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.TableRow, { children: [
|
|
434
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceDate(invoice.createdAt, t) }) }),
|
|
435
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceStatus(invoice.status, t) }) }),
|
|
436
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceAmount(invoice.amountTotal, t) }) }),
|
|
437
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, {
|
|
438
438
|
align: "right",
|
|
439
|
-
children: invoice.hostedInvoiceUrl ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
439
|
+
children: invoice.hostedInvoiceUrl ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
|
|
440
440
|
asChild: true,
|
|
441
441
|
variant: "secondary",
|
|
442
442
|
color: "neutral",
|
|
@@ -447,7 +447,7 @@ function RealPaymentsPanel(props) {
|
|
|
447
447
|
rel: "noreferrer",
|
|
448
448
|
children: t("View")
|
|
449
449
|
})
|
|
450
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
450
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
|
|
451
451
|
variant: "secondary",
|
|
452
452
|
type: "footnote",
|
|
453
453
|
children: t("Unavailable")
|