@hexclave/tanstack-start 1.0.3 → 1.0.6
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/components/api-key-dialogs.d.ts +1 -1
- package/dist/components/api-key-dialogs.js.map +1 -1
- package/dist/components/api-key-table.d.ts +1 -1
- package/dist/components/api-key-table.js.map +1 -1
- package/dist/components/credential-sign-in.js.map +1 -1
- package/dist/components/credential-sign-up.js.map +1 -1
- package/dist/components/elements/form-warning.js.map +1 -1
- package/dist/components/elements/maybe-full-page.js.map +1 -1
- package/dist/components/elements/separator-with-text.js.map +1 -1
- package/dist/components/elements/sidebar-layout.js.map +1 -1
- package/dist/components/elements/ssr-layout-effect.js.map +1 -1
- package/dist/components/elements/user-avatar.js.map +1 -1
- package/dist/components/link.js.map +1 -1
- package/dist/components/magic-link-sign-in.js +2 -2
- 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.map +1 -1
- package/dist/components/message-cards/predefined-message-card.js +9 -9
- package/dist/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/components/oauth-button-group.js +2 -2
- package/dist/components/oauth-button-group.js.map +1 -1
- package/dist/components/oauth-button.js +2 -2
- 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.map +1 -1
- package/dist/components/selected-team-switcher.d.ts +1 -1
- package/dist/components/selected-team-switcher.js.map +1 -1
- package/dist/components/team-icon.d.ts +1 -1
- package/dist/components/team-icon.js.map +1 -1
- package/dist/components/team-switcher.d.ts +1 -1
- package/dist/components/team-switcher.js.map +1 -1
- package/dist/components/use-in-iframe.js.map +1 -1
- package/dist/components/user-button.js.map +1 -1
- 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.map +1 -1
- package/dist/components-page/account-settings/editable-text.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/components-page/account-settings/page-layout.js.map +1 -1
- package/dist/components-page/account-settings/payments/payments-page.d.ts +1 -1
- package/dist/components-page/account-settings/payments/payments-page.js.map +1 -1
- package/dist/components-page/account-settings/payments/payments-panel.d.ts +1 -1
- package/dist/components-page/account-settings/payments/payments-panel.js +6 -6
- package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -1
- package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
- package/dist/components-page/account-settings/section.js.map +1 -1
- package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
- package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/leave-team-section.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-api-keys-section.js +1 -1
- 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.map +1 -1
- package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-page.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-page.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +1 -1
- package/dist/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.d.ts.map +1 -1
- package/dist/components-page/auth-page.js +55 -10
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.js +3 -3
- 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 +4 -4
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/error-page.js +9 -9
- package/dist/components-page/error-page.js.map +1 -1
- package/dist/components-page/forgot-password.js +4 -4
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/{stack-handler-client.d.ts → hexclave-handler-client.d.ts} +16 -4
- package/dist/components-page/hexclave-handler-client.d.ts.map +1 -0
- package/dist/components-page/{stack-handler-client.js → hexclave-handler-client.js} +64 -28
- package/dist/components-page/hexclave-handler-client.js.map +1 -0
- package/dist/components-page/hexclave-handler-client.test.js +51 -0
- package/dist/components-page/hexclave-handler-client.test.js.map +1 -0
- package/dist/components-page/{stack-handler.d.ts → hexclave-handler.d.ts} +5 -5
- package/dist/components-page/hexclave-handler.d.ts.map +1 -0
- package/dist/components-page/{stack-handler.js → hexclave-handler.js} +4 -4
- package/dist/components-page/hexclave-handler.js.map +1 -0
- package/dist/components-page/magic-link-callback.js +7 -7
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/mfa.js +4 -4
- package/dist/components-page/mfa.js.map +1 -1
- package/dist/components-page/oauth-callback.js +3 -3
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/onboarding.js +3 -3
- package/dist/components-page/onboarding.js.map +1 -1
- package/dist/components-page/password-reset.js +8 -8
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/sign-in.js.map +1 -1
- package/dist/components-page/sign-out.d.ts +1 -0
- package/dist/components-page/sign-out.d.ts.map +1 -1
- package/dist/components-page/sign-out.js +11 -5
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/sign-up.js.map +1 -1
- package/dist/components-page/team-creation.js.map +1 -1
- package/dist/components-page/team-invitation.js +16 -16
- package/dist/components-page/team-invitation.js.map +1 -1
- package/dist/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/dev-tool/dev-tool-core.js +13 -13
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/dev-tool/dev-tool-styles.js +371 -371
- package/dist/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/dev-tool/index.d.ts +4 -4
- package/dist/dev-tool/index.js +4 -4
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/esm/components/api-key-dialogs.d.ts +1 -1
- package/dist/esm/components/api-key-dialogs.js.map +1 -1
- package/dist/esm/components/api-key-table.d.ts +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/form-warning.js.map +1 -1
- package/dist/esm/components/elements/maybe-full-page.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/ssr-layout-effect.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 +2 -2
- package/dist/esm/components/magic-link-sign-in.js.map +1 -1
- package/dist/esm/components/message-cards/known-error-message-card.js +2 -2
- 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 +9 -9
- package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/esm/components/oauth-button-group.js +2 -2
- package/dist/esm/components/oauth-button-group.js.map +1 -1
- package/dist/esm/components/oauth-button.js +2 -2
- package/dist/esm/components/oauth-button.js.map +1 -1
- package/dist/esm/components/passkey-button.js +2 -2
- 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/use-in-iframe.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/email-and-auth-page.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/page-layout.js.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-panel.d.ts +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-panel.js +5 -5
- 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.map +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/settings-page.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.d.ts +1 -1
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +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-display-name-section.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/teams/team-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.d.ts.map +1 -1
- package/dist/esm/components-page/auth-page.js +56 -11
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.js +3 -3
- package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.test.js +4 -4
- package/dist/esm/components-page/cli-auth-confirm.test.js.map +1 -1
- package/dist/esm/components-page/email-verification.js +4 -4
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/error-page.js +9 -9
- package/dist/esm/components-page/error-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.js +4 -4
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/{stack-handler-client.d.ts → hexclave-handler-client.d.ts} +15 -4
- package/dist/esm/components-page/hexclave-handler-client.d.ts.map +1 -0
- package/dist/esm/components-page/{stack-handler-client.js → hexclave-handler-client.js} +63 -28
- package/dist/esm/components-page/hexclave-handler-client.js.map +1 -0
- package/dist/esm/components-page/hexclave-handler-client.test.js +51 -0
- package/dist/esm/components-page/hexclave-handler-client.test.js.map +1 -0
- package/dist/esm/components-page/{stack-handler.d.ts → hexclave-handler.d.ts} +5 -5
- package/dist/esm/components-page/hexclave-handler.d.ts.map +1 -0
- package/dist/esm/components-page/{stack-handler.js → hexclave-handler.js} +4 -4
- package/dist/esm/components-page/hexclave-handler.js.map +1 -0
- package/dist/esm/components-page/magic-link-callback.js +7 -7
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/mfa.js +4 -4
- package/dist/esm/components-page/mfa.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +3 -3
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/onboarding.js +3 -3
- package/dist/esm/components-page/onboarding.js.map +1 -1
- package/dist/esm/components-page/password-reset.js +8 -8
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/sign-in.js.map +1 -1
- package/dist/esm/components-page/sign-out.d.ts +1 -0
- package/dist/esm/components-page/sign-out.d.ts.map +1 -1
- package/dist/esm/components-page/sign-out.js +11 -5
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/sign-up.js.map +1 -1
- package/dist/esm/components-page/team-creation.js.map +1 -1
- package/dist/esm/components-page/team-invitation.js +16 -16
- package/dist/esm/components-page/team-invitation.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +12 -12
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.js +371 -371
- package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/esm/dev-tool/index.d.ts +4 -4
- package/dist/esm/dev-tool/index.js +4 -4
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/generated/env.d.ts +26 -0
- package/dist/esm/{lib → generated}/env.d.ts.map +1 -1
- package/dist/esm/generated/env.js +67 -0
- package/dist/esm/generated/env.js.map +1 -0
- package/dist/esm/generated/quetzal-translations.js.map +1 -1
- package/dist/esm/global.d.ts +8 -1
- package/dist/esm/global.d.ts.map +1 -0
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +3 -3
- package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/esm/integrations/convex.js +1 -1
- 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.d.ts +0 -8
- package/dist/esm/lib/cookie.d.ts.map +1 -1
- package/dist/esm/lib/cookie.js +2 -2
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/api-keys/index.d.ts +2 -2
- package/dist/esm/lib/hexclave-app/api-keys/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/api-keys/index.js +1 -1
- package/dist/esm/lib/hexclave-app/api-keys/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.d.ts +6 -6
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.js +7 -7
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +381 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.d.ts +16 -14
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.js +76 -56
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/common.d.ts +11 -11
- package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/common.js +34 -20
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts +9 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js +27 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.d.ts +4 -4
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.js +7 -7
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/session-replay.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.d.ts +4 -4
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/common.d.ts +7 -7
- package/dist/esm/lib/hexclave-app/common.d.ts.map +1 -0
- package/dist/esm/lib/hexclave-app/common.js +7 -0
- package/dist/esm/lib/hexclave-app/common.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/connected-accounts/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/connected-accounts/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/contact-channels/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/contact-channels/index.js +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/customers/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/customers/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/data-vault/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/data-vault/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/email/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/email/index.d.ts.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/email-templates/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/email-templates/index.js +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/index.d.ts +2 -2
- package/dist/esm/lib/{stack-app → hexclave-app}/index.js +2 -2
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/internal-api-keys/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/internal-api-keys/index.js +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/notification-categories/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/notification-categories/index.d.ts.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/permissions/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/permissions/index.js +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/project-configs/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/projects/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/projects/index.js +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/session-replays/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/session-replays/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/teams/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/teams/index.js +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.js +26 -12
- package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.test.js +13 -1
- package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/users/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/users/index.js +1 -1
- package/dist/esm/lib/hexclave-app/users/index.js.map +1 -0
- package/dist/esm/lib/hooks.d.ts +1 -1
- package/dist/esm/lib/hooks.js +9 -9
- package/dist/esm/lib/hooks.js.map +1 -1
- package/dist/esm/lib/translations.js.map +1 -1
- package/dist/esm/providers/hexclave-context.d.ts +11 -0
- package/dist/esm/providers/hexclave-context.d.ts.map +1 -0
- package/dist/esm/providers/hexclave-context.js +12 -0
- package/dist/esm/providers/hexclave-context.js.map +1 -0
- package/dist/esm/providers/{stack-provider-client.d.ts → hexclave-provider-client.d.ts} +5 -5
- package/dist/esm/providers/hexclave-provider-client.d.ts.map +1 -0
- package/dist/esm/providers/hexclave-provider-client.js +30 -0
- package/dist/esm/providers/hexclave-provider-client.js.map +1 -0
- package/dist/esm/providers/{stack-provider.d.ts → hexclave-provider.d.ts} +3 -3
- package/dist/esm/providers/hexclave-provider.d.ts.map +1 -0
- package/dist/esm/providers/{stack-provider.js → hexclave-provider.js} +4 -4
- package/dist/esm/providers/hexclave-provider.js.map +1 -0
- package/dist/esm/providers/theme-provider.js.map +1 -1
- package/dist/esm/providers/translation-provider-client.js.map +1 -1
- package/dist/esm/providers/translation-provider.js.map +1 -1
- package/dist/esm/tanstack-start-server-context.default.js.map +1 -1
- package/dist/esm/utils/browser-script.js.map +1 -1
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/url.js.map +1 -1
- package/dist/generated/env.d.ts +26 -0
- package/dist/{lib → generated}/env.d.ts.map +1 -1
- package/dist/generated/env.js +69 -0
- package/dist/generated/env.js.map +1 -0
- package/dist/generated/quetzal-translations.js.map +1 -1
- package/dist/global.d.ts +8 -1
- package/dist/global.d.ts.map +1 -0
- package/dist/index.d.ts +18 -18
- package/dist/index.js +9 -9
- package/dist/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/integrations/convex.js +2 -2
- package/dist/integrations/convex.js.map +1 -1
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/auth.test.js.map +1 -1
- package/dist/lib/cookie.d.ts +0 -8
- package/dist/lib/cookie.d.ts.map +1 -1
- package/dist/lib/cookie.js +2 -2
- package/dist/lib/cookie.js.map +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/api-keys/index.d.ts +2 -2
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/api-keys/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/api-keys/index.js +1 -1
- package/dist/lib/hexclave-app/api-keys/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.d.ts +6 -6
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.js +5 -5
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +381 -0
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.d.ts +16 -14
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.js +74 -54
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/common.d.ts +11 -11
- package/dist/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/common.js +33 -19
- package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts +9 -0
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/index.js +31 -0
- package/dist/lib/hexclave-app/apps/implementations/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/redirect-page-urls.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.d.ts +4 -4
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.js +6 -6
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-replay.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/session-replay.test.d.ts +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.d.ts +4 -4
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/common.d.ts +7 -7
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/common.d.ts.map +1 -1
- package/dist/lib/hexclave-app/common.js +9 -0
- package/dist/lib/hexclave-app/common.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/connected-accounts/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/connected-accounts/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/contact-channels/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/contact-channels/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/contact-channels/index.js +1 -1
- package/dist/lib/hexclave-app/contact-channels/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/customers/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/customers/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/data-vault/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/data-vault/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/email/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email/index.d.ts.map +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email-templates/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email-templates/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/email-templates/index.js +1 -1
- package/dist/lib/hexclave-app/email-templates/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/index.d.ts +2 -2
- package/dist/lib/{stack-app → hexclave-app}/index.js +2 -2
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/internal-api-keys/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/internal-api-keys/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/internal-api-keys/index.js +1 -1
- package/dist/lib/hexclave-app/internal-api-keys/index.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/notification-categories/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/notification-categories/index.d.ts.map +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/permissions/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/permissions/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/permissions/index.js +1 -1
- package/dist/lib/hexclave-app/permissions/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/project-configs/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/project-configs/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/projects/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/projects/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/projects/index.js +1 -1
- package/dist/lib/hexclave-app/projects/index.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/session-replays/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/session-replays/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/teams/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/teams/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/teams/index.js +1 -1
- package/dist/lib/hexclave-app/teams/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/url-targets.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/url-targets.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/url-targets.js +26 -12
- package/dist/lib/hexclave-app/url-targets.js.map +1 -0
- package/dist/lib/hexclave-app/url-targets.test.d.ts +1 -0
- package/dist/lib/{stack-app → hexclave-app}/url-targets.test.js +13 -1
- package/dist/lib/hexclave-app/url-targets.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/users/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/users/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/users/index.js +1 -1
- package/dist/lib/hexclave-app/users/index.js.map +1 -0
- package/dist/lib/hooks.d.ts +3 -3
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +9 -9
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/translations.js.map +1 -1
- package/dist/providers/hexclave-context.d.ts +11 -0
- package/dist/providers/hexclave-context.d.ts.map +1 -0
- package/dist/providers/hexclave-context.js +15 -0
- package/dist/providers/hexclave-context.js.map +1 -0
- package/dist/providers/{stack-provider-client.d.ts → hexclave-provider-client.d.ts} +5 -5
- package/dist/providers/hexclave-provider-client.d.ts.map +1 -0
- package/dist/providers/{stack-provider-client.js → hexclave-provider-client.js} +9 -9
- package/dist/providers/hexclave-provider-client.js.map +1 -0
- package/dist/providers/{stack-provider.d.ts → hexclave-provider.d.ts} +3 -3
- package/dist/providers/hexclave-provider.d.ts.map +1 -0
- package/dist/providers/{stack-provider.js → hexclave-provider.js} +4 -4
- package/dist/providers/hexclave-provider.js.map +1 -0
- package/dist/providers/theme-provider.js.map +1 -1
- package/dist/providers/translation-provider-client.js.map +1 -1
- package/dist/providers/translation-provider.js.map +1 -1
- package/dist/tanstack-start-server-context.default.js.map +1 -1
- package/dist/utils/browser-script.js.map +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/url.js.map +1 -1
- package/package.json +10 -7
- package/src/components/api-key-dialogs.tsx +173 -0
- package/src/components/api-key-table.tsx +127 -0
- package/src/components/credential-sign-in.tsx +83 -0
- package/src/components/credential-sign-up.tsx +108 -0
- package/src/components/elements/form-warning.tsx +17 -0
- package/src/components/elements/maybe-full-page.tsx +60 -0
- package/src/components/elements/separator-with-text.tsx +22 -0
- package/src/components/elements/sidebar-layout.tsx +136 -0
- package/src/components/elements/ssr-layout-effect.tsx +24 -0
- package/src/components/elements/user-avatar.tsx +32 -0
- package/src/components/link.tsx +38 -0
- package/src/components/magic-link-sign-in.tsx +143 -0
- package/src/components/message-cards/known-error-message-card.tsx +33 -0
- package/src/components/message-cards/message-card.tsx +46 -0
- package/src/components/message-cards/predefined-message-card.tsx +88 -0
- package/src/components/oauth-button-group.tsx +35 -0
- package/src/components/oauth-button.tsx +222 -0
- package/src/components/passkey-button.tsx +43 -0
- package/src/components/profile-image-editor.tsx +194 -0
- package/src/components/selected-team-switcher.tsx +97 -0
- package/src/components/team-icon.tsx +30 -0
- package/src/components/team-switcher.tsx +191 -0
- package/src/components/use-in-iframe.tsx +18 -0
- package/src/components/user-button.tsx +157 -0
- package/src/components-page/account-settings/active-sessions/active-sessions-page.tsx +238 -0
- package/src/components-page/account-settings/api-keys/api-keys-page.tsx +157 -0
- package/src/components-page/account-settings/editable-text.tsx +53 -0
- package/src/components-page/account-settings/email-and-auth/email-and-auth-page.tsx +24 -0
- package/src/components-page/account-settings/email-and-auth/emails-section.tsx +201 -0
- package/src/components-page/account-settings/email-and-auth/mfa-section.tsx +139 -0
- package/src/components-page/account-settings/email-and-auth/otp-section.tsx +102 -0
- package/src/components-page/account-settings/email-and-auth/passkey-section.tsx +112 -0
- package/src/components-page/account-settings/email-and-auth/password-section.tsx +174 -0
- package/src/components-page/account-settings/notifications/notifications-page.tsx +44 -0
- package/src/components-page/account-settings/page-layout.tsx +11 -0
- package/src/components-page/account-settings/payments/payments-page.tsx +73 -0
- package/src/components-page/account-settings/payments/payments-panel.tsx +543 -0
- package/src/components-page/account-settings/profile-page/profile-page.tsx +61 -0
- package/src/components-page/account-settings/section.tsx +26 -0
- package/src/components-page/account-settings/settings/delete-account-section.tsx +85 -0
- package/src/components-page/account-settings/settings/settings-page.tsx +19 -0
- package/src/components-page/account-settings/settings/sign-out-section.tsx +40 -0
- package/src/components-page/account-settings/teams/leave-team-section.tsx +57 -0
- package/src/components-page/account-settings/teams/team-api-keys-section.tsx +74 -0
- package/src/components-page/account-settings/teams/team-creation-page.tsx +92 -0
- package/src/components-page/account-settings/teams/team-display-name-section.tsx +31 -0
- package/src/components-page/account-settings/teams/team-member-invitation-section.tsx +128 -0
- package/src/components-page/account-settings/teams/team-member-list-section.tsx +59 -0
- package/src/components-page/account-settings/teams/team-page.tsx +28 -0
- package/src/components-page/account-settings/teams/team-profile-image-section.tsx +33 -0
- package/src/components-page/account-settings/teams/team-profile-user-section.tsx +29 -0
- package/src/components-page/account-settings.tsx +343 -0
- package/src/components-page/auth-page.tsx +206 -0
- package/src/components-page/cli-auth-confirm.test.tsx +204 -0
- package/src/components-page/cli-auth-confirm.tsx +278 -0
- package/src/components-page/email-verification.tsx +76 -0
- package/src/components-page/error-page.tsx +105 -0
- package/src/components-page/forgot-password.tsx +105 -0
- package/src/components-page/hexclave-handler-client.test.tsx +64 -0
- package/src/components-page/hexclave-handler-client.tsx +400 -0
- package/src/components-page/hexclave-handler.tsx +48 -0
- package/src/components-page/magic-link-callback.tsx +92 -0
- package/src/components-page/mfa.tsx +222 -0
- package/src/components-page/oauth-callback.tsx +78 -0
- package/src/components-page/onboarding.tsx +176 -0
- package/src/components-page/password-reset.tsx +185 -0
- package/src/components-page/section.tsx +27 -0
- package/src/components-page/sign-in.tsx +34 -0
- package/src/components-page/sign-out.tsx +37 -0
- package/src/components-page/sign-up.tsx +24 -0
- package/src/components-page/team-creation.tsx +78 -0
- package/src/components-page/team-invitation.tsx +150 -0
- package/src/dev-tool/dev-tool-core.ts +2460 -0
- package/src/dev-tool/dev-tool-styles.ts +2758 -0
- package/src/dev-tool/dev-tool-trigger-position.test.ts +113 -0
- package/src/dev-tool/dev-tool-trigger-position.ts +109 -0
- package/src/dev-tool/index.ts +149 -0
- package/src/generated/.gitignore +3 -0
- package/src/generated/quetzal-translations.ts +4312 -0
- package/src/global.css +13 -0
- package/src/global.d.ts +12 -0
- package/src/index.ts +39 -0
- package/src/integrations/convex/component/README.md +74 -0
- package/src/integrations/convex/component/convex.config.ts +9 -0
- package/src/integrations/convex.ts +28 -0
- package/src/lib/auth.test.ts +67 -0
- package/src/lib/auth.ts +175 -0
- package/src/lib/cookie.ts +420 -0
- package/src/lib/hexclave-app/api-keys/index.ts +73 -0
- package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +1261 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +454 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.ts +36 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +3970 -0
- package/src/lib/hexclave-app/apps/implementations/common.ts +270 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +105 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +306 -0
- package/src/lib/hexclave-app/apps/implementations/index.ts +35 -0
- package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts +342 -0
- package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +1619 -0
- package/src/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.ts +106 -0
- package/src/lib/hexclave-app/apps/implementations/session-refresh-subscription.ts +52 -0
- package/src/lib/hexclave-app/apps/implementations/session-replay.test.ts +33 -0
- package/src/lib/hexclave-app/apps/implementations/session-replay.ts +356 -0
- package/src/lib/hexclave-app/apps/index.ts +40 -0
- package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +192 -0
- package/src/lib/hexclave-app/apps/interfaces/client-app.ts +180 -0
- package/src/lib/hexclave-app/apps/interfaces/server-app.ts +129 -0
- package/src/lib/hexclave-app/common.ts +216 -0
- package/src/lib/hexclave-app/connected-accounts/index.ts +49 -0
- package/src/lib/hexclave-app/contact-channels/index.ts +80 -0
- package/src/lib/hexclave-app/customers/index.ts +158 -0
- package/src/lib/hexclave-app/data-vault/index.ts +12 -0
- package/src/lib/hexclave-app/email/index.ts +280 -0
- package/src/lib/hexclave-app/email-templates/index.ts +24 -0
- package/src/lib/hexclave-app/index.ts +146 -0
- package/src/lib/hexclave-app/internal-api-keys/index.ts +55 -0
- package/src/lib/hexclave-app/notification-categories/index.ts +12 -0
- package/src/lib/hexclave-app/permissions/index.ts +75 -0
- package/src/lib/hexclave-app/project-configs/index.ts +103 -0
- package/src/lib/hexclave-app/projects/index.ts +236 -0
- package/src/lib/hexclave-app/session-replays/index.ts +72 -0
- package/src/lib/hexclave-app/teams/index.ts +206 -0
- package/src/lib/hexclave-app/url-targets.test.ts +270 -0
- package/src/lib/hexclave-app/url-targets.ts +413 -0
- package/src/lib/hexclave-app/users/index.ts +523 -0
- package/src/lib/hooks.tsx +63 -0
- package/src/lib/translations.tsx +23 -0
- package/src/providers/hexclave-context.tsx +20 -0
- package/src/providers/hexclave-provider-client.tsx +39 -0
- package/src/providers/hexclave-provider.tsx +49 -0
- package/src/providers/theme-provider.tsx +121 -0
- package/src/providers/translation-provider-client.tsx +35 -0
- package/src/providers/translation-provider.tsx +25 -0
- package/src/tanstack-start-server-context.combined.ts +12 -0
- package/src/tanstack-start-server-context.default.ts +9 -0
- package/src/tanstack-start-server-context.server.ts +11 -0
- package/src/utils/browser-script.tsx +135 -0
- package/src/utils/constants.tsx +58 -0
- package/src/utils/url.ts +24 -0
- package/dist/components-page/stack-handler-client.d.ts.map +0 -1
- package/dist/components-page/stack-handler-client.js.map +0 -1
- package/dist/components-page/stack-handler.d.ts.map +0 -1
- package/dist/components-page/stack-handler.js.map +0 -1
- package/dist/esm/components-page/stack-handler-client.d.ts.map +0 -1
- package/dist/esm/components-page/stack-handler-client.js.map +0 -1
- package/dist/esm/components-page/stack-handler.d.ts.map +0 -1
- package/dist/esm/components-page/stack-handler.js.map +0 -1
- package/dist/esm/lib/env.d.ts +0 -42
- package/dist/esm/lib/env.js +0 -93
- package/dist/esm/lib/env.js.map +0 -1
- package/dist/esm/lib/stack-app/api-keys/index.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +0 -121
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.d.ts +0 -9
- package/dist/esm/lib/stack-app/apps/implementations/index.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.js +0 -27
- package/dist/esm/lib/stack-app/apps/implementations/index.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +0 -1
- package/dist/esm/lib/stack-app/common.js +0 -7
- package/dist/esm/lib/stack-app/common.js.map +0 -1
- package/dist/esm/lib/stack-app/contact-channels/index.js.map +0 -1
- package/dist/esm/lib/stack-app/email-templates/index.js.map +0 -1
- package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +0 -1
- package/dist/esm/lib/stack-app/permissions/index.js.map +0 -1
- package/dist/esm/lib/stack-app/projects/index.js.map +0 -1
- package/dist/esm/lib/stack-app/teams/index.js.map +0 -1
- package/dist/esm/lib/stack-app/url-targets.js.map +0 -1
- package/dist/esm/lib/stack-app/url-targets.test.js.map +0 -1
- package/dist/esm/lib/stack-app/users/index.js.map +0 -1
- package/dist/esm/providers/stack-context.d.ts +0 -11
- package/dist/esm/providers/stack-context.d.ts.map +0 -1
- package/dist/esm/providers/stack-context.js +0 -12
- package/dist/esm/providers/stack-context.js.map +0 -1
- package/dist/esm/providers/stack-provider-client.d.ts.map +0 -1
- package/dist/esm/providers/stack-provider-client.js +0 -30
- package/dist/esm/providers/stack-provider-client.js.map +0 -1
- package/dist/esm/providers/stack-provider.d.ts.map +0 -1
- package/dist/esm/providers/stack-provider.js.map +0 -1
- package/dist/lib/env.d.ts +0 -42
- package/dist/lib/env.js +0 -95
- package/dist/lib/env.js.map +0 -1
- package/dist/lib/stack-app/api-keys/index.d.ts.map +0 -1
- package/dist/lib/stack-app/api-keys/index.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +0 -121
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/common.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/common.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/index.d.ts +0 -9
- package/dist/lib/stack-app/apps/implementations/index.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/index.js +0 -31
- package/dist/lib/stack-app/apps/implementations/index.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.test.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.js.map +0 -1
- package/dist/lib/stack-app/common.d.ts.map +0 -1
- package/dist/lib/stack-app/common.js +0 -9
- package/dist/lib/stack-app/common.js.map +0 -1
- package/dist/lib/stack-app/connected-accounts/index.d.ts.map +0 -1
- package/dist/lib/stack-app/contact-channels/index.d.ts.map +0 -1
- package/dist/lib/stack-app/contact-channels/index.js.map +0 -1
- package/dist/lib/stack-app/customers/index.d.ts.map +0 -1
- package/dist/lib/stack-app/data-vault/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email-templates/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email-templates/index.js.map +0 -1
- package/dist/lib/stack-app/internal-api-keys/index.d.ts.map +0 -1
- package/dist/lib/stack-app/internal-api-keys/index.js.map +0 -1
- package/dist/lib/stack-app/notification-categories/index.d.ts.map +0 -1
- package/dist/lib/stack-app/permissions/index.d.ts.map +0 -1
- package/dist/lib/stack-app/permissions/index.js.map +0 -1
- package/dist/lib/stack-app/project-configs/index.d.ts.map +0 -1
- package/dist/lib/stack-app/projects/index.d.ts.map +0 -1
- package/dist/lib/stack-app/projects/index.js.map +0 -1
- package/dist/lib/stack-app/session-replays/index.d.ts.map +0 -1
- package/dist/lib/stack-app/teams/index.d.ts.map +0 -1
- package/dist/lib/stack-app/teams/index.js.map +0 -1
- package/dist/lib/stack-app/url-targets.d.ts.map +0 -1
- package/dist/lib/stack-app/url-targets.js.map +0 -1
- package/dist/lib/stack-app/url-targets.test.js.map +0 -1
- package/dist/lib/stack-app/users/index.d.ts.map +0 -1
- package/dist/lib/stack-app/users/index.js.map +0 -1
- package/dist/providers/stack-context.d.ts +0 -11
- package/dist/providers/stack-context.d.ts.map +0 -1
- package/dist/providers/stack-context.js +0 -15
- package/dist/providers/stack-context.js.map +0 -1
- package/dist/providers/stack-provider-client.d.ts.map +0 -1
- package/dist/providers/stack-provider-client.js.map +0 -1
- package/dist/providers/stack-provider.d.ts.map +0 -1
- package/dist/providers/stack-provider.js.map +0 -1
- /package/dist/{esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.d.ts → components-page/hexclave-handler-client.test.d.ts} +0 -0
- /package/dist/esm/{lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts → components-page/hexclave-handler-client.test.d.ts} +0 -0
- /package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/client-app-impl.cross-domain.test.d.ts +0 -0
- /package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/index.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/connected-accounts/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/customers/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/data-vault/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/email/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/notification-categories/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/project-configs/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/session-replays/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.test.d.ts +0 -0
- /package/dist/lib/{stack-app/apps/implementations/event-tracker.test.d.ts → hexclave-app/apps/implementations/client-app-impl.cross-domain.test.d.ts} +0 -0
- /package/dist/lib/{stack-app/apps/implementations/session-refresh-subscription.test.d.ts → hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts} +0 -0
- /package/dist/lib/{stack-app/apps/implementations/session-replay.test.d.ts → hexclave-app/apps/implementations/event-tracker.test.d.ts} +0 -0
- /package/dist/lib/{stack-app/url-targets.test.d.ts → hexclave-app/apps/implementations/session-refresh-subscription.test.d.ts} +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/index.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/connected-accounts/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/customers/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/data-vault/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/email/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/notification-categories/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/project-configs/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/session-replays/index.js +0 -0
|
@@ -6,15 +6,15 @@ let react = require("react");
|
|
|
6
6
|
react = require_chunk.__toESM(react);
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
let ___lib_hooks_js = require("../lib/hooks.js");
|
|
9
|
-
let
|
|
9
|
+
let ___lib_hexclave_app_index_js = require("../lib/hexclave-app/index.js");
|
|
10
10
|
let _hexclave_shared_dist_utils_globals = require("@hexclave/shared/dist/utils/globals");
|
|
11
|
-
let
|
|
11
|
+
let __hexclave_context_js = require("./hexclave-context.js");
|
|
12
12
|
|
|
13
|
-
//#region src/providers/
|
|
14
|
-
function
|
|
15
|
-
const app = props.serialized ?
|
|
13
|
+
//#region src/providers/hexclave-provider-client.tsx
|
|
14
|
+
function HexclaveProviderClient(props) {
|
|
15
|
+
const app = props.serialized ? ___lib_hexclave_app_index_js.StackClientApp[___lib_hexclave_app_index_js.hexclaveAppInternalsSymbol].fromClientJson(props.app) : props.app;
|
|
16
16
|
_hexclave_shared_dist_utils_globals.globalVar.__STACK_AUTH__ = { app };
|
|
17
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
17
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__hexclave_context_js.HexclaveContext.Provider, {
|
|
18
18
|
value: { app },
|
|
19
19
|
children: props.children
|
|
20
20
|
});
|
|
@@ -23,12 +23,12 @@ function UserSetter(props) {
|
|
|
23
23
|
const app = (0, ___lib_hooks_js.useStackApp)();
|
|
24
24
|
(0, react.useEffect)(() => {
|
|
25
25
|
const promise = (async () => await props.userJsonPromise)();
|
|
26
|
-
app[
|
|
26
|
+
app[___lib_hexclave_app_index_js.hexclaveAppInternalsSymbol].setCurrentUser(promise);
|
|
27
27
|
}, []);
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
//#endregion
|
|
32
|
-
exports.
|
|
32
|
+
exports.HexclaveProviderClient = HexclaveProviderClient;
|
|
33
33
|
exports.UserSetter = UserSetter;
|
|
34
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=hexclave-provider-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hexclave-provider-client.js","names":["StackClientApp","hexclaveAppInternalsSymbol","HexclaveContext"],"sources":["../../src/providers/hexclave-provider-client.tsx"],"sourcesContent":["\"use client\";\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { globalVar } from \"@hexclave/shared/dist/utils/globals\";\nimport React, { useEffect } from \"react\";\nimport { useStackApp } from \"../lib/hooks\";\nimport { StackClientApp, StackClientAppJson, hexclaveAppInternalsSymbol } from \"../lib/hexclave-app\";\nimport { HexclaveContext } from \"./hexclave-context\";\n\nexport function HexclaveProviderClient(props: {\n app: StackClientAppJson<true, string> | StackClientApp<true>,\n serialized: boolean,\n children?: React.ReactNode,\n}) {\n const app = props.serialized\n ? StackClientApp[hexclaveAppInternalsSymbol].fromClientJson(props.app as StackClientAppJson<true, string>)\n : props.app as StackClientApp<true>;\n globalVar.__STACK_AUTH__ = { app };\n\n return (\n <HexclaveContext.Provider value={{ app }}>\n {props.children}\n </HexclaveContext.Provider>\n );\n}\n\nexport function UserSetter(props: { userJsonPromise: Promise<CurrentUserCrud['Client']['Read'] | null> }) {\n const app = useStackApp();\n useEffect(() => {\n const promise = (async () => await props.userJsonPromise)(); // there is a Next.js bug where Promises passed by server components return `undefined` as their `then` value, so wrap it in a normal promise\n app[hexclaveAppInternalsSymbol].setCurrentUser(promise);\n }, []);\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAgB,uBAAuB,OAIpC;CACD,MAAM,MAAM,MAAM,aACdA,4CAAeC,yDAA4B,eAAe,MAAM,IAAwC,GACxG,MAAM;AACV,+CAAU,iBAAiB,EAAE,KAAK;AAElC,QACE,2CAACC,sCAAgB;EAAS,OAAO,EAAE,KAAK;YACrC,MAAM;GACkB;;AAI/B,SAAgB,WAAW,OAA+E;CACxG,MAAM,wCAAmB;AACzB,4BAAgB;EACd,MAAM,WAAW,YAAY,MAAM,MAAM,kBAAkB;AAC3D,MAAID,yDAA4B,eAAe,QAAQ;IACtD,EAAE,CAAC;AACN,QAAO"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { StackClientApp } from "../lib/
|
|
1
|
+
import { StackClientApp } from "../lib/hexclave-app/apps/interfaces/client-app.js";
|
|
2
2
|
import { TranslationProvider } from "./translation-provider.js";
|
|
3
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import React from "react";
|
|
5
5
|
|
|
6
|
-
//#region src/providers/
|
|
6
|
+
//#region src/providers/hexclave-provider.d.ts
|
|
7
7
|
declare function TanStackStartStackProvider({
|
|
8
8
|
children,
|
|
9
9
|
app,
|
|
@@ -27,4 +27,4 @@ declare const HexclaveProvider: typeof TanStackStartStackProvider;
|
|
|
27
27
|
declare const StackProvider: typeof TanStackStartStackProvider;
|
|
28
28
|
//#endregion
|
|
29
29
|
export { HexclaveProvider, StackProvider, ActiveProvider as default };
|
|
30
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=hexclave-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hexclave-provider.d.ts","names":[],"sources":["../../src/providers/hexclave-provider.tsx"],"mappings":";;;;;;iBASS,0BAAA,CAAA;EACP,QAAA;EACA,GAAA;EACA,IAAA;EACA;AAAA;EAEA,IAAA,GAAO,KAAA,CAAM,cAAA,QAAsB,mBAAA;;AARwB;;;;;EAe3D,oBAAA,GAAuB,MAAA;EACvB,QAAA,EAAU,KAAA,CAAM,SAAA;EAEhB,GAAA,EAAK,cAAA;AAAA,IACN,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAeK,cAAA,SAAc,0BAAA;AAAA,cAIP,gBAAA,SAAgB,0BAAA;;cAEhB,aAAA,SAAa,0BAAA"}
|
|
@@ -3,12 +3,12 @@ const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
|
3
3
|
let react = require("react");
|
|
4
4
|
react = require_chunk.__toESM(react);
|
|
5
5
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
-
let
|
|
6
|
+
let __hexclave_provider_client_js = require("./hexclave-provider-client.js");
|
|
7
7
|
let __translation_provider_js = require("./translation-provider.js");
|
|
8
8
|
|
|
9
|
-
//#region src/providers/
|
|
9
|
+
//#region src/providers/hexclave-provider.tsx
|
|
10
10
|
function TanStackStartStackProvider({ children, app, lang, translationOverrides }) {
|
|
11
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
11
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__hexclave_provider_client_js.HexclaveProviderClient, {
|
|
12
12
|
app,
|
|
13
13
|
serialized: false,
|
|
14
14
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__translation_provider_js.TranslationProvider, {
|
|
@@ -30,4 +30,4 @@ const StackProvider = ActiveProvider;
|
|
|
30
30
|
exports.HexclaveProvider = HexclaveProvider;
|
|
31
31
|
exports.StackProvider = StackProvider;
|
|
32
32
|
exports.default = ActiveProvider;
|
|
33
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=hexclave-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hexclave-provider.js","names":["HexclaveProviderClient","TranslationProvider","Suspense"],"sources":["../../src/providers/hexclave-provider.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport React, { Suspense } from 'react';\nimport { StackAdminApp, StackClientApp, StackServerApp, hexclaveAppInternalsSymbol } from '../lib/hexclave-app';\nimport { HexclaveProviderClient } from './hexclave-provider-client';\nimport { TranslationProvider } from './translation-provider';\n\nfunction TanStackStartStackProvider({\n children,\n app,\n lang,\n translationOverrides,\n}: {\n lang?: React.ComponentProps<typeof TranslationProvider>['lang'],\n /**\n * A mapping of English translations to translated equivalents.\n *\n * These will take priority over the translations from the language specified in the `lang` property. Note that the\n * keys are case-sensitive.\n */\n translationOverrides?: Record<string, string>,\n children: React.ReactNode,\n // list all three types of apps even though server and admin are subclasses of client so it's clear that you can pass any\n app: StackClientApp<true>,\n}) {\n return (\n <HexclaveProviderClient app={app} serialized={false}>\n <TranslationProvider lang={lang} translationOverrides={translationOverrides}>\n <Suspense fallback={null}>\n {children}\n </Suspense>\n </TranslationProvider>\n </HexclaveProviderClient>\n );\n}\n\n// Pick the platform-appropriate provider implementation. Only the active branch's\n// line is preserved by the platform-stripping script when generating per-platform SDKs.\n// The /* ... */ block hides the inactive branches from the template's TypeScript compiler.\nconst ActiveProvider = TanStackStartStackProvider;\n\n// Named exports live outside the platform conditional so the @deprecated JSDoc can\n// use a /** ... */ block without colliding with the outer comment terminator.\nexport const HexclaveProvider = ActiveProvider;\n/** @deprecated Use `HexclaveProvider` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackProvider = ActiveProvider;\nexport default ActiveProvider;\n"],"mappings":";;;;;;;;;AASA,SAAS,2BAA2B,EAClC,UACA,KACA,MACA,wBAaC;AACD,QACE,2CAACA;EAA4B;EAAK,YAAY;YAC5C,2CAACC;GAA0B;GAA4B;aACrD,2CAACC;IAAS,UAAU;IACjB;KACQ;IACS;GACC;;AAO7B,MAAM,iBAAiB;AAIvB,MAAa,mBAAmB;;AAEhC,MAAa,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-provider.js","names":["color","DEFAULT_THEME","BrowserScript","globalCSS","TooltipProvider"],"sources":["../../src/providers/theme-provider.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"theme-provider.js","names":["color","DEFAULT_THEME","BrowserScript","globalCSS","TooltipProvider"],"sources":["../../src/providers/theme-provider.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { deindent } from \"@hexclave/shared/dist/utils/strings\";\nimport { TooltipProvider } from \"@hexclave/ui\";\nimport Color from \"color\";\nimport React from \"react\";\nimport { globalCSS } from \"../generated/global-css\";\nimport { BrowserScript } from \"../utils/browser-script\";\nimport { DEFAULT_THEME } from \"../utils/constants\";\n\ntype Colors = {\n background: string,\n foreground: string,\n card: string,\n cardForeground: string,\n popover: string,\n popoverForeground: string,\n primary: string,\n primaryForeground: string,\n secondary: string,\n secondaryForeground: string,\n muted: string,\n mutedForeground: string,\n accent: string,\n accentForeground: string,\n destructive: string,\n destructiveForeground: string,\n border: string,\n input: string,\n ring: string,\n}\n\nexport type Theme = {\n light: Colors,\n dark: Colors,\n radius: string,\n};\n\ntype ThemeConfig = {\n light?: Partial<Colors>,\n dark?: Partial<Colors>,\n} & Partial<Omit<Theme, 'light' | 'dark'>>;\n\nfunction convertColorToCSSVars(obj: Record<string, string>) {\n return Object.fromEntries(Object.entries(obj).map(([key, value]) => {\n const color = Color(value).hsl().array();\n return [\n // Convert camelCase key to dash-case\n key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`),\n // Convert color to CSS HSL string\n `${color[0]} ${color[1]}% ${color[2]}%`\n ];\n }));\n}\n\nfunction convertColorsToCSS(theme: Theme) {\n const { dark, light, ...rest } = theme;\n const colors = {\n light: { ...convertColorToCSSVars(light), ...rest },\n dark: convertColorToCSSVars(dark),\n };\n\n function colorsToCSSVars(colors: Record<string, string>) {\n return Object.entries(colors).map((params) => {\n return `--${params[0]}: ${params[1]};\\n`;\n }).join('');\n }\n\n return deindent`\n .stack-scope {\n ${colorsToCSSVars(colors.light)}\n }\n html:has(head > [data-stack-theme=\"dark\"]) .stack-scope { \n ${colorsToCSSVars(colors.dark)}\n }\n `;\n}\n\n\nexport function HexclaveTheme({\n theme,\n children,\n nonce,\n} : {\n theme?: ThemeConfig,\n children?: React.ReactNode,\n nonce?: string,\n}) {\n const themeValue: Theme = {\n ...DEFAULT_THEME,\n ...theme,\n dark: { ...DEFAULT_THEME.dark, ...theme?.dark },\n light: { ...DEFAULT_THEME.light, ...theme?.light },\n };\n\n return (\n <>\n <BrowserScript nonce={nonce} />\n <style\n suppressHydrationWarning // we need this since the nonce can differ between client and server\n nonce={nonce}\n dangerouslySetInnerHTML={{\n __html: globalCSS + \"\\n\" + convertColorsToCSS(themeValue),\n }}\n />\n <TooltipProvider>\n {children}\n </TooltipProvider>\n </>\n );\n}\n\n/**\n * @deprecated Use `HexclaveTheme` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration.\n */\nexport const StackTheme = HexclaveTheme;\n"],"mappings":";;;;;;;;;;;;;;;;AAgDA,SAAS,sBAAsB,KAA6B;AAC1D,QAAO,OAAO,YAAY,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW;EAClE,MAAMA,6BAAc,MAAM,CAAC,KAAK,CAAC,OAAO;AACxC,SAAO,CAEL,IAAI,QAAQ,WAAU,MAAK,IAAI,EAAE,aAAa,GAAG,EAEjD,GAAGA,QAAM,GAAG,GAAGA,QAAM,GAAG,IAAIA,QAAM,GAAG,GACtC;GACD,CAAC;;AAGL,SAAS,mBAAmB,OAAc;CACxC,MAAM,EAAE,MAAM,OAAO,GAAG,SAAS;CACjC,MAAM,SAAS;EACb,OAAO;GAAE,GAAG,sBAAsB,MAAM;GAAE,GAAG;GAAM;EACnD,MAAM,sBAAsB,KAAK;EAClC;CAED,SAAS,gBAAgB,QAAgC;AACvD,SAAO,OAAO,QAAQ,OAAO,CAAC,KAAK,WAAW;AAC5C,UAAO,KAAK,OAAO,GAAG,IAAI,OAAO,GAAG;IACpC,CAAC,KAAK,GAAG;;AAGb,QAAO,4CAAQ;;QAET,gBAAgB,OAAO,MAAM,CAAC;;;QAG9B,gBAAgB,OAAO,KAAK,CAAC;;;;AAMrC,SAAgB,cAAc,EAC5B,OACA,UACA,SAKC;CACD,MAAM,aAAoB;EACxB,GAAGC;EACH,GAAG;EACH,MAAM;GAAE,GAAGA,oCAAc;GAAM,GAAG,OAAO;GAAM;EAC/C,OAAO;GAAE,GAAGA,oCAAc;GAAO,GAAG,OAAO;GAAO;EACnD;AAED,QACE;EACE,2CAACC,4CAAqB,QAAS;EAC/B,2CAAC;GACC;GACO;GACP,yBAAyB,EACvB,QAAQC,uCAAY,OAAO,mBAAmB,WAAW,EAC1D;IACD;EACF,2CAACC,gCACE,WACe;KACjB;;;;;AAOP,MAAa,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-provider-client.js","names":["React"],"sources":["../../src/providers/translation-provider-client.tsx"],"sourcesContent":["\"use client\";\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"translation-provider-client.js","names":["React"],"sources":["../../src/providers/translation-provider-client.tsx"],"sourcesContent":["\"use client\";\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport React from \"react\";\nimport { createGlobal } from \"@hexclave/shared/dist/utils/globals\";\n\ntype TranslationContextValue = {\n quetzalKeys: Map<string, string>,\n quetzalLocale: Map<string, string>,\n};\n\nexport const TranslationContext = createGlobal<React.Context<TranslationContextValue | null>>(\n \"TranslationContext\",\n () => React.createContext<TranslationContextValue | null>(null),\n);\nTranslationContext.displayName ??= \"TranslationContext\";\n\nexport function TranslationProviderClient(props: {\n children: React.ReactNode,\n quetzalKeys: Map<string, string>,\n quetzalLocale: Map<string, string>,\n}) {\n return (\n <TranslationContext.Provider value={{\n quetzalKeys: props.quetzalKeys,\n quetzalLocale: props.quetzalLocale,\n }}>\n {props.children}\n </TranslationContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAa,2EACX,4BACMA,cAAM,cAA8C,KAAK,CAChE;AACD,mBAAmB,gBAAgB;AAEnC,SAAgB,0BAA0B,OAIvC;AACD,QACE,2CAAC,mBAAmB;EAAS,OAAO;GAClC,aAAa,MAAM;GACnB,eAAe,MAAM;GACtB;YACE,MAAM;GACqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-provider.js","names":["quetzalLocales","quetzalKeys","TranslationProviderClient"],"sources":["../../src/providers/translation-provider.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"translation-provider.js","names":["quetzalLocales","quetzalKeys","TranslationProviderClient"],"sources":["../../src/providers/translation-provider.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { throwErr } from \"@hexclave/shared/dist/utils/errors\";\nimport { quetzalKeys, quetzalLocales } from \"../generated/quetzal-translations\";\nimport { TranslationProviderClient } from \"./translation-provider-client\";\n\nexport function TranslationProvider({ lang, translationOverrides, children }: {\n lang: Parameters<typeof quetzalLocales.get>[0] | undefined,\n translationOverrides?: Record<string, string>,\n children: React.ReactNode,\n}) {\n const locale = quetzalLocales.get(lang ?? (undefined as never));\n\n const localeWithOverrides = new Map<string, string>(locale);\n for (const [orig, override] of Object.entries(translationOverrides ?? {})) {\n const key = quetzalKeys.get(orig as never) ?? throwErr(new Error(`Invalid translation override: Original key ${JSON.stringify(orig)} not found. Make sure you are passing the correct values into the translationOverrides property of the component.`));\n localeWithOverrides.set(key, override);\n }\n\n return <TranslationProviderClient quetzalKeys={quetzalKeys} quetzalLocale={localeWithOverrides}>\n {children}\n </TranslationProviderClient>;\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,oBAAoB,EAAE,MAAM,sBAAsB,YAI/D;CACD,MAAM,SAASA,oDAAe,IAAI,QAAS,OAAoB;CAE/D,MAAM,sBAAsB,IAAI,IAAoB,OAAO;AAC3D,MAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,wBAAwB,EAAE,CAAC,EAAE;EACzE,MAAM,MAAMC,iDAAY,IAAI,KAAc,qEAAa,IAAI,MAAM,8CAA8C,KAAK,UAAU,KAAK,CAAC,mHAAmH,CAAC;AACxP,sBAAoB,IAAI,KAAK,SAAS;;AAGxC,QAAO,2CAACC;EAA0B,aAAaD;EAAa,eAAe;EACxE;GACyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-start-server-context.default.js","names":[],"sources":["../src/tanstack-start-server-context.default.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"tanstack-start-server-context.default.js","names":[],"sources":["../src/tanstack-start-server-context.default.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nexport const getCookie = undefined;\nexport const getCookies = undefined;\nexport const setCookie = undefined;\nexport const deleteCookie = undefined;\nexport const getRequestHeader = undefined;\n"],"mappings":";;;AAIA,MAAa,YAAY;AACzB,MAAa,aAAa;AAC1B,MAAa,YAAY;AACzB,MAAa,eAAe;AAC5B,MAAa,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-script.js","names":["SsrScript"],"sources":["../../src/utils/browser-script.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"browser-script.js","names":["SsrScript"],"sources":["../../src/utils/browser-script.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n// Note that this script can not import anything from outside as it will be converted to a string and executed in the browser.\n\nimport { SsrScript } from \"../components/elements/ssr-layout-effect\";\n\nconst script = () => {\n const attributes = ['data-joy-color-scheme', 'data-mui-color-scheme', 'data-theme', 'data-color-scheme', 'class'];\n\n const getColorMode = (value: string) => {\n if (value.includes('dark')) {\n return 'dark';\n }\n if (value.includes('light')) {\n return 'light';\n }\n return null;\n };\n\n const setTheme = (mode: 'dark' | 'light') => {\n let el = document.getElementById(`--stack-theme-mode`);\n if (!el) {\n el = document.createElement(\"style\");\n el.id = `--stack-theme-mode`;\n el.innerHTML = `/* This tag is used by Hexclave to set the theme in the browser without causing a hydration error (since React ignores additional tags in the <head>). We later use the \\`html:has(head > [data-stack-theme=XYZ])\\` selector to apply styles based on the theme. */`;\n document.head.appendChild(el);\n }\n el.setAttribute(\"data-stack-theme\", mode);\n };\n\n const colorToRGB = (color: string): [number, number, number] | null => {\n // Create a temporary element to use for color conversion\n const temp = document.createElement('div');\n temp.style.color = color;\n document.body.appendChild(temp);\n\n // Get the computed style\n const computedColor = getComputedStyle(temp).color;\n document.body.removeChild(temp);\n\n // Parse the RGB values\n const match = computedColor.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if (match) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n\n return null;\n };\n\n const rgbToLuma = (rgb: [number, number, number]) => {\n return (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n };\n\n const copyFromColorScheme = () => {\n const colorScheme = getComputedStyle(document.documentElement).getPropertyValue('color-scheme');\n\n if (colorScheme) {\n const mode = getColorMode(colorScheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n return false;\n };\n\n const copyFromVariables = () => {\n let backgroundColor = getComputedStyle(document.documentElement).getPropertyValue('--background');\n if (backgroundColor) {\n // shadcn by default uses the hsl values with the format \"123 45% 6.5%\"\n if (/^\\d+\\s\\d+%\\s\\d+(\\.\\d+)?%$/.test(backgroundColor)) {\n backgroundColor = `hsl(${backgroundColor})`;\n }\n\n // convert backgroundColor to luma and check if it's dark\n const rgb = colorToRGB(backgroundColor);\n if (rgb) {\n const luma = rgbToLuma(rgb);\n if (luma < 128) {\n setTheme('dark');\n } else {\n setTheme('light');\n }\n return true;\n }\n }\n return false;\n };\n\n const copyFromAttributes = () => {\n for (const attributeName of attributes) {\n const colorTheme = document.documentElement.getAttribute(attributeName);\n if (colorTheme) {\n const mode = getColorMode(colorTheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n }\n return false;\n };\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (copyFromColorScheme()) {\n return;\n }\n if (mutation.attributeName && attributes.includes(mutation.attributeName) && copyFromAttributes()) {\n return;\n }\n if (copyFromVariables()) {\n return;\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: attributes,\n });\n\n // Initial check on page load\n if (!copyFromColorScheme()) {\n if (!copyFromAttributes()) {\n copyFromVariables();\n }\n }\n};\n\nexport function BrowserScript(props : { nonce?: string }) {\n return <SsrScript nonce={props.nonce} script={`(${script.toString()})()`}/>;\n}\n"],"mappings":";;;;;;AAQA,MAAM,eAAe;CACnB,MAAM,aAAa;EAAC;EAAyB;EAAyB;EAAc;EAAqB;EAAQ;CAEjH,MAAM,gBAAgB,UAAkB;AACtC,MAAI,MAAM,SAAS,OAAO,CACxB,QAAO;AAET,MAAI,MAAM,SAAS,QAAQ,CACzB,QAAO;AAET,SAAO;;CAGT,MAAM,YAAY,SAA2B;EAC3C,IAAI,KAAK,SAAS,eAAe,qBAAqB;AACtD,MAAI,CAAC,IAAI;AACP,QAAK,SAAS,cAAc,QAAQ;AACpC,MAAG,KAAK;AACR,MAAG,YAAY;AACf,YAAS,KAAK,YAAY,GAAG;;AAE/B,KAAG,aAAa,oBAAoB,KAAK;;CAG3C,MAAM,cAAc,UAAmD;EAErE,MAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,MAAM,QAAQ;AACnB,WAAS,KAAK,YAAY,KAAK;EAG/B,MAAM,gBAAgB,iBAAiB,KAAK,CAAC;AAC7C,WAAS,KAAK,YAAY,KAAK;EAG/B,MAAM,QAAQ,cAAc,MAAM,mCAAmC;AACrE,MAAI,MACF,QAAO;GAAC,SAAS,MAAM,GAAG;GAAE,SAAS,MAAM,GAAG;GAAE,SAAS,MAAM,GAAG;GAAC;AAGrE,SAAO;;CAGT,MAAM,aAAa,QAAkC;AACnD,UAAQ,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,OAAO;;CAGxD,MAAM,4BAA4B;EAChC,MAAM,cAAc,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,eAAe;AAE/F,MAAI,aAAa;GACf,MAAM,OAAO,aAAa,YAAY;AACtC,OAAI,MAAM;AACR,aAAS,KAAK;AACd,WAAO;;;AAGX,SAAO;;CAGT,MAAM,0BAA0B;EAC9B,IAAI,kBAAkB,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,eAAe;AACjG,MAAI,iBAAiB;AAEnB,OAAI,4BAA4B,KAAK,gBAAgB,CACnD,mBAAkB,OAAO,gBAAgB;GAI3C,MAAM,MAAM,WAAW,gBAAgB;AACvC,OAAI,KAAK;AAEP,QADa,UAAU,IAAI,GAChB,IACT,UAAS,OAAO;QAEhB,UAAS,QAAQ;AAEnB,WAAO;;;AAGX,SAAO;;CAGT,MAAM,2BAA2B;AAC/B,OAAK,MAAM,iBAAiB,YAAY;GACtC,MAAM,aAAa,SAAS,gBAAgB,aAAa,cAAc;AACvE,OAAI,YAAY;IACd,MAAM,OAAO,aAAa,WAAW;AACrC,QAAI,MAAM;AACR,cAAS,KAAK;AACd,YAAO;;;;AAIb,SAAO;;AAiBT,CAdiB,IAAI,kBAAkB,cAAc;AACnD,YAAU,SAAS,aAAa;AAC9B,OAAI,qBAAqB,CACvB;AAEF,OAAI,SAAS,iBAAiB,WAAW,SAAS,SAAS,cAAc,IAAI,oBAAoB,CAC/F;AAEF,OAAI,mBAAmB,CACrB;IAEF;GACF,CAEO,QAAQ,SAAS,iBAAiB;EACzC,YAAY;EACZ,iBAAiB;EAClB,CAAC;AAGF,KAAI,CAAC,qBAAqB,EACxB;MAAI,CAAC,oBAAoB,CACvB,oBAAmB;;;AAKzB,SAAgB,cAAc,OAA4B;AACxD,QAAO,2CAACA;EAAU,OAAO,MAAM;EAAO,QAAQ,IAAI,OAAO,UAAU,CAAC;GAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":[],"sources":["../../src/utils/constants.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../src/utils/constants.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nexport const FONT_SIZES = { 'xs': '0.75rem', 'sm': '0.875rem', 'md': '1rem', 'lg': '1.125rem', 'xl': '1.25rem' } as const;\nexport const LINE_HEIGHTS = { 'xs': '1rem', 'sm': '1.25rem', 'md': '1.5rem', 'lg': '1.75rem', 'xl': '2rem' } as const;\nexport const FONT_FAMILY = 'ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"';\nexport const PRIMARY_FONT_COLORS = { 'dark': 'white', 'light': 'black' } as const;\nexport const SECONDARY_FONT_COLORS = { 'dark': '#a8a8a8', 'light': '#737373' } as const;\nexport const SELECTED_BACKGROUND_COLORS = { 'dark': 'rgba(255, 255, 255, 0.1)', 'light': 'rgba(0, 0, 0, 0.04)' } as const;\nexport const LINK_COLORS = { 'dark': '#fff', 'light': '#000' } as const;\nexport const SHADOW = '0 1px 2px 0 rgba(0, 0, 0, 0.05)';\n\nexport const DEFAULT_THEME = {\n light: {\n background: 'hsl(0 0% 100%)',\n foreground: 'hsl(240 10% 3.9%)',\n card: 'hsl(0 0% 100%)',\n cardForeground: 'hsl(240 10% 3.9%)',\n popover: 'hsl(0 0% 100%)',\n popoverForeground: 'hsl(240 10% 3.9%)',\n primary: 'hsl(240 5.9% 10%)',\n primaryForeground: 'hsl(0 0% 98%)',\n secondary: 'hsl(240 4.8% 95.9%)',\n secondaryForeground: 'hsl(240 5.9% 10%)',\n muted: 'hsl(240 4.8% 95.9%)',\n mutedForeground: 'hsl(240 3.8% 46.1%)',\n accent: 'hsl(240 4.8% 95.9%)',\n accentForeground: 'hsl(240 5.9% 10%)',\n destructive: 'hsl(0 84.2% 60.2%)',\n destructiveForeground: 'hsl(0 0% 98%)',\n border: 'hsl(240 5.9% 90%)',\n input: 'hsl(240 5.9% 90%)',\n ring: 'hsl(240 10% 3.9%)',\n },\n dark: {\n background: 'hsl(240 10% 3.9%)',\n foreground: 'hsl(0 0% 98%)',\n card: 'hsl(240 10% 3.9%)',\n cardForeground: 'hsl(0 0% 98%)',\n popover: 'hsl(240 10% 3.9%)',\n popoverForeground: 'hsl(0 0% 98%)',\n primary: 'hsl(0 0% 98%)',\n primaryForeground: 'hsl(240 5.9% 10%)',\n secondary: 'hsl(240 3.7% 15.9%)',\n secondaryForeground: 'hsl(0 0% 98%)',\n muted: 'hsl(240 3.7% 15.9%)',\n mutedForeground: 'hsl(240 5% 64.9%)',\n accent: 'hsl(240 3.7% 15.9%)',\n accentForeground: 'hsl(0 0% 98%)',\n destructive: 'hsl(0 62.8% 50%)',\n destructiveForeground: 'hsl(0 0% 98%)',\n border: 'hsl(240 3.7% 15.9%)',\n input: 'hsl(240 3.7% 15.9%)',\n ring: 'hsl(240 4.9% 83.9%)',\n },\n radius: '0.5rem',\n} as const;\n"],"mappings":";;;AAIA,MAAa,aAAa;CAAE,MAAM;CAAW,MAAM;CAAY,MAAM;CAAQ,MAAM;CAAY,MAAM;CAAW;AAChH,MAAa,eAAe;CAAE,MAAM;CAAQ,MAAM;CAAW,MAAM;CAAU,MAAM;CAAW,MAAM;CAAQ;AAC5G,MAAa,cAAc;AAC3B,MAAa,sBAAsB;CAAE,QAAQ;CAAS,SAAS;CAAS;AACxE,MAAa,wBAAwB;CAAE,QAAQ;CAAW,SAAS;CAAW;AAC9E,MAAa,6BAA6B;CAAE,QAAQ;CAA4B,SAAS;CAAuB;AAChH,MAAa,cAAc;CAAE,QAAQ;CAAQ,SAAS;CAAQ;AAC9D,MAAa,SAAS;AAEtB,MAAa,gBAAgB;CAC3B,OAAO;EACL,YAAY;EACZ,YAAY;EACZ,MAAM;EACN,gBAAgB;EAChB,SAAS;EACT,mBAAmB;EACnB,SAAS;EACT,mBAAmB;EACnB,WAAW;EACX,qBAAqB;EACrB,OAAO;EACP,iBAAiB;EACjB,QAAQ;EACR,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,QAAQ;EACR,OAAO;EACP,MAAM;EACP;CACD,MAAM;EACJ,YAAY;EACZ,YAAY;EACZ,MAAM;EACN,gBAAgB;EAChB,SAAS;EACT,mBAAmB;EACnB,SAAS;EACT,mBAAmB;EACnB,WAAW;EACX,qBAAqB;EACrB,OAAO;EACP,iBAAiB;EACjB,QAAQ;EACR,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,QAAQ;EACR,OAAO;EACP,MAAM;EACP;CACD,QAAQ;CACT"}
|
package/dist/utils/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","names":["HexclaveAssertionError"],"sources":["../../src/utils/url.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
1
|
+
{"version":3,"file":"url.js","names":["HexclaveAssertionError"],"sources":["../../src/utils/url.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\n\n\nexport function constructRedirectUrl(redirectUrl: URL | string | undefined, callbackUrlName: string) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window === 'undefined' || !window.location) {\n throw new HexclaveAssertionError(`${callbackUrlName} option is required in a non-browser environment.`, { redirectUrl });\n }\n\n const retainedQueryParams = [\"after_auth_return_to\"];\n const currentUrl = new URL(window.location.href);\n const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);\n for (const param of retainedQueryParams) {\n if (currentUrl.searchParams.has(param)) {\n url.searchParams.set(param, currentUrl.searchParams.get(param)!);\n }\n }\n url.hash = \"\";\n return url.toString();\n}\n"],"mappings":";;;;;AAOA,SAAgB,qBAAqB,aAAuC,iBAAyB;AAEnG,KAAI,OAAO,WAAW,eAAe,CAAC,OAAO,SAC3C,OAAM,IAAIA,0DAAuB,GAAG,gBAAgB,oDAAoD,EAAE,aAAa,CAAC;CAG1H,MAAM,sBAAsB,CAAC,uBAAuB;CACpD,MAAM,aAAa,IAAI,IAAI,OAAO,SAAS,KAAK;CAChD,MAAM,MAAM,cAAc,IAAI,IAAI,aAAa,OAAO,SAAS,KAAK,GAAG,IAAI,IAAI,OAAO,SAAS,KAAK;AACpG,MAAK,MAAM,SAAS,oBAClB,KAAI,WAAW,aAAa,IAAI,MAAM,CACpC,KAAI,aAAa,IAAI,OAAO,WAAW,aAAa,IAAI,MAAM,CAAE;AAGpE,KAAI,OAAO;AACX,QAAO,IAAI,UAAU"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"//": "THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY
|
|
2
|
+
"//": "THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template (FOR package.json FILES, PLEASE EDIT package-template.json)",
|
|
3
3
|
"name": "@hexclave/tanstack-start",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.6",
|
|
5
5
|
"repository": "https://github.com/hexclave/hexclave",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"files": [
|
|
51
51
|
"README.md",
|
|
52
52
|
"dist",
|
|
53
|
+
"src",
|
|
53
54
|
"CHANGELOG.md",
|
|
54
55
|
"LICENSE"
|
|
55
56
|
],
|
|
@@ -76,8 +77,8 @@
|
|
|
76
77
|
"rrweb": "^1.1.3",
|
|
77
78
|
"tsx": "^4.21.0",
|
|
78
79
|
"yup": "^1.7.1",
|
|
79
|
-
"@hexclave/
|
|
80
|
-
"@hexclave/
|
|
80
|
+
"@hexclave/ui": "1.0.6",
|
|
81
|
+
"@hexclave/shared": "1.0.6"
|
|
81
82
|
},
|
|
82
83
|
"peerDependencies": {
|
|
83
84
|
"@types/react": ">=18.0.0",
|
|
@@ -118,10 +119,12 @@
|
|
|
118
119
|
"typecheck": "tsc --noEmit",
|
|
119
120
|
"clean": "rimraf dist && rimraf node_modules",
|
|
120
121
|
"lint": "eslint --ext .tsx,.ts .",
|
|
121
|
-
"build": "rimraf dist && pnpm run
|
|
122
|
+
"build": "rimraf dist && pnpm run codegen && tsdown",
|
|
122
123
|
"dev": "concurrently -n \"build,codegen\" -k \"tsdown --watch\" \"pnpm run codegen:watch\"",
|
|
123
|
-
"codegen": "pnpm run css",
|
|
124
|
-
"codegen:watch": "pnpm run css:watch",
|
|
124
|
+
"codegen": "pnpm run env && pnpm run css",
|
|
125
|
+
"codegen:watch": "concurrently -n \"env,css\" -k \"pnpm run env:watch\" \"pnpm run css:watch\"",
|
|
126
|
+
"env": "tsx ./scripts/generate-env.ts",
|
|
127
|
+
"env:watch": "chokidar --silent './scripts/generate-env.ts' -c 'pnpm run env' --throttle 2000",
|
|
125
128
|
"css": "pnpm run css-tw && pnpm run css-sc",
|
|
126
129
|
"css:watch": "concurrently -n \"tw,sc\" -k \"pnpm run css-tw:watch\" \"pnpm run css-sc:watch\"",
|
|
127
130
|
"css-tw:watch": "tailwindcss -i ./src/global.css -o ./src/generated/tailwind.css --watch",
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
//===========================================
|
|
5
|
+
// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
|
|
6
|
+
//===========================================
|
|
7
|
+
|
|
8
|
+
import { yupResolver } from "@hookform/resolvers/yup";
|
|
9
|
+
import { yupObject, yupString } from '@hexclave/shared/dist/schema-fields';
|
|
10
|
+
import { captureError } from '@hexclave/shared/dist/utils/errors';
|
|
11
|
+
import { runAsynchronously } from '@hexclave/shared/dist/utils/promises';
|
|
12
|
+
import { ActionDialog, Button, CopyField, Input, Label, Typography } from '@hexclave/ui';
|
|
13
|
+
import { useState } from "react";
|
|
14
|
+
import { useForm } from 'react-hook-form';
|
|
15
|
+
import * as yup from "yup";
|
|
16
|
+
import { useUser } from '..';
|
|
17
|
+
import { FormWarningText } from '../components/elements/form-warning';
|
|
18
|
+
import { ApiKey, ApiKeyCreationOptions, ApiKeyType } from "../lib/hexclave-app/api-keys";
|
|
19
|
+
import { useTranslation } from "../lib/translations";
|
|
20
|
+
|
|
21
|
+
// Constants for expiration options
|
|
22
|
+
export const neverInMs = 1000 * 60 * 60 * 24 * 365 * 200;
|
|
23
|
+
export const expiresInOptions = {
|
|
24
|
+
[1000 * 60 * 60 * 24 * 1]: "1 day",
|
|
25
|
+
[1000 * 60 * 60 * 24 * 7]: "7 days",
|
|
26
|
+
[1000 * 60 * 60 * 24 * 30]: "30 days",
|
|
27
|
+
[1000 * 60 * 60 * 24 * 90]: "90 days",
|
|
28
|
+
[1000 * 60 * 60 * 24 * 365]: "1 year",
|
|
29
|
+
[neverInMs]: "Never",
|
|
30
|
+
} as const;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Dialog for creating a new API key
|
|
34
|
+
*/
|
|
35
|
+
export function CreateApiKeyDialog<Type extends ApiKeyType = ApiKeyType>(props: {
|
|
36
|
+
open: boolean,
|
|
37
|
+
onOpenChange: (open: boolean) => void,
|
|
38
|
+
onKeyCreated?: (key: ApiKey<Type, true>) => void,
|
|
39
|
+
createApiKey: (data: ApiKeyCreationOptions<Type>) => Promise<ApiKey<Type, true>>,
|
|
40
|
+
mockMode?: boolean,
|
|
41
|
+
}) {
|
|
42
|
+
const { t } = useTranslation();
|
|
43
|
+
const user = useUser({ or: props.mockMode ? 'return-null' : 'redirect' });
|
|
44
|
+
const [loading, setLoading] = useState(false);
|
|
45
|
+
|
|
46
|
+
const apiKeySchema = yupObject({
|
|
47
|
+
description: yupString().defined().nonEmpty(t('Description is required')),
|
|
48
|
+
expiresIn: yupString().defined(),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const { register, handleSubmit, formState: { errors }, reset } = useForm({
|
|
52
|
+
resolver: yupResolver(apiKeySchema),
|
|
53
|
+
defaultValues: {
|
|
54
|
+
description: '',
|
|
55
|
+
expiresIn: Object.keys(expiresInOptions)[2], // Default to 30 days
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const onSubmit = async (data: yup.InferType<typeof apiKeySchema>) => {
|
|
60
|
+
setLoading(true);
|
|
61
|
+
try {
|
|
62
|
+
const expiresAt = new Date(Date.now() + parseInt(data.expiresIn));
|
|
63
|
+
const apiKey = await props.createApiKey({
|
|
64
|
+
description: data.description,
|
|
65
|
+
expiresAt,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
if (props.onKeyCreated) {
|
|
69
|
+
props.onKeyCreated(apiKey);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
reset();
|
|
73
|
+
props.onOpenChange(false);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
captureError("Failed to create API key", { error });
|
|
76
|
+
} finally {
|
|
77
|
+
setLoading(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<ActionDialog
|
|
83
|
+
open={props.open}
|
|
84
|
+
onOpenChange={props.onOpenChange}
|
|
85
|
+
title={t('Create API Key')}
|
|
86
|
+
description={t('API keys grant programmatic access to your account.')}
|
|
87
|
+
>
|
|
88
|
+
<form
|
|
89
|
+
onSubmit={(e) => {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
runAsynchronously(handleSubmit(onSubmit));
|
|
92
|
+
}}
|
|
93
|
+
className="space-y-4"
|
|
94
|
+
>
|
|
95
|
+
<div className="space-y-2">
|
|
96
|
+
<Label htmlFor="description">{t('Description')}</Label>
|
|
97
|
+
<Input
|
|
98
|
+
id="description"
|
|
99
|
+
placeholder={t('e.g. Development, Production, CI/CD')}
|
|
100
|
+
{...register('description')}
|
|
101
|
+
/>
|
|
102
|
+
{errors.description && <FormWarningText text={errors.description.message} />}
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div className="space-y-2">
|
|
106
|
+
<Label htmlFor="expiresIn">{t('Expires In')}</Label>
|
|
107
|
+
<select
|
|
108
|
+
id="expiresIn"
|
|
109
|
+
className="w-full p-2 border border-input rounded-md bg-background"
|
|
110
|
+
{...register('expiresIn')}
|
|
111
|
+
>
|
|
112
|
+
{Object.entries(expiresInOptions).map(([value, label]) => (
|
|
113
|
+
<option key={value} value={value}>{t(label)}</option>
|
|
114
|
+
))}
|
|
115
|
+
</select>
|
|
116
|
+
{errors.expiresIn && <FormWarningText text={errors.expiresIn.message} />}
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div className="flex justify-end gap-2 pt-4">
|
|
120
|
+
<Button
|
|
121
|
+
type="button"
|
|
122
|
+
variant="secondary"
|
|
123
|
+
onClick={() => {
|
|
124
|
+
reset();
|
|
125
|
+
props.onOpenChange(false);
|
|
126
|
+
}}
|
|
127
|
+
>
|
|
128
|
+
{t('Cancel')}
|
|
129
|
+
</Button>
|
|
130
|
+
<Button type="submit" loading={loading}>
|
|
131
|
+
{t('Create')}
|
|
132
|
+
</Button>
|
|
133
|
+
</div>
|
|
134
|
+
</form>
|
|
135
|
+
</ActionDialog>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Dialog for showing the newly created API key
|
|
141
|
+
*/
|
|
142
|
+
export function ShowApiKeyDialog<Type extends ApiKeyType = ApiKeyType>(props: {
|
|
143
|
+
apiKey: ApiKey<Type, true> | null,
|
|
144
|
+
onClose?: () => void,
|
|
145
|
+
}) {
|
|
146
|
+
const { t } = useTranslation();
|
|
147
|
+
|
|
148
|
+
return (
|
|
149
|
+
<ActionDialog
|
|
150
|
+
open={!!props.apiKey}
|
|
151
|
+
title={t("API Key")}
|
|
152
|
+
okButton={{ label: t("Close") }}
|
|
153
|
+
onClose={props.onClose}
|
|
154
|
+
preventClose
|
|
155
|
+
confirmText={t("I understand that I will not be able to view this key again.")}
|
|
156
|
+
>
|
|
157
|
+
<div className="flex flex-col gap-4">
|
|
158
|
+
<Typography>
|
|
159
|
+
{t("Here is your API key.")}{" "}
|
|
160
|
+
<span className="font-bold">
|
|
161
|
+
{t("Copy it to a safe place. You will not be able to view it again.")}
|
|
162
|
+
</span>
|
|
163
|
+
</Typography>
|
|
164
|
+
<CopyField
|
|
165
|
+
type="input"
|
|
166
|
+
monospace
|
|
167
|
+
value={props.apiKey?.value ?? ''}
|
|
168
|
+
label={t("Secret API Key")}
|
|
169
|
+
/>
|
|
170
|
+
</div>
|
|
171
|
+
</ActionDialog>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
//===========================================
|
|
5
|
+
// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
|
|
6
|
+
//===========================================
|
|
7
|
+
import { ActionCell, ActionDialog, BadgeCell, DataTable, DataTableColumnHeader, DataTableFacetedFilter, DateCell, SearchToolbarItem, TextCell, standardFilterFn } from "@hexclave/ui";
|
|
8
|
+
import { ColumnDef, Row, Table } from "@tanstack/react-table";
|
|
9
|
+
import { useMemo, useState } from "react";
|
|
10
|
+
import { ApiKey } from "../lib/hexclave-app/api-keys";
|
|
11
|
+
|
|
12
|
+
type ExtendedApiKey = ApiKey & {
|
|
13
|
+
status: 'valid' | 'expired' | 'revoked',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
function toolbarRender<TData>(table: Table<TData>) {
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
<SearchToolbarItem table={table} placeholder="Search table" />
|
|
20
|
+
<DataTableFacetedFilter
|
|
21
|
+
column={table.getColumn("status")}
|
|
22
|
+
title="Status"
|
|
23
|
+
options={['valid', 'expired', 'revoked'].map((provider) => ({
|
|
24
|
+
value: provider,
|
|
25
|
+
label: provider,
|
|
26
|
+
}))}
|
|
27
|
+
/>
|
|
28
|
+
</>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function RevokeDialog(props: {
|
|
33
|
+
apiKey: ExtendedApiKey,
|
|
34
|
+
open: boolean,
|
|
35
|
+
onOpenChange: (open: boolean) => void,
|
|
36
|
+
}) {
|
|
37
|
+
return <ActionDialog
|
|
38
|
+
open={props.open}
|
|
39
|
+
onOpenChange={props.onOpenChange}
|
|
40
|
+
title="Revoke API Key"
|
|
41
|
+
danger
|
|
42
|
+
cancelButton
|
|
43
|
+
okButton={{ label: "Revoke Key", onClick: async () => { await props.apiKey.revoke(); } }}
|
|
44
|
+
confirmText="I understand this will unlink all the apps using this API key"
|
|
45
|
+
>
|
|
46
|
+
{`Are you sure you want to revoke API key *****${props.apiKey.value.lastFour}?`}
|
|
47
|
+
</ActionDialog>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function Actions({ row }: { row: Row<ExtendedApiKey> }) {
|
|
51
|
+
const [isRevokeModalOpen, setIsRevokeModalOpen] = useState(false);
|
|
52
|
+
return (
|
|
53
|
+
<>
|
|
54
|
+
<RevokeDialog apiKey={row.original} open={isRevokeModalOpen} onOpenChange={setIsRevokeModalOpen} />
|
|
55
|
+
<ActionCell
|
|
56
|
+
invisible={row.original.status !== 'valid'}
|
|
57
|
+
items={[{
|
|
58
|
+
item: "Revoke",
|
|
59
|
+
danger: true,
|
|
60
|
+
onClick: () => setIsRevokeModalOpen(true),
|
|
61
|
+
}]}
|
|
62
|
+
/>
|
|
63
|
+
</>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const columns: ColumnDef<ExtendedApiKey>[] = [
|
|
68
|
+
{
|
|
69
|
+
accessorKey: "description",
|
|
70
|
+
header: ({ column }) => <DataTableColumnHeader column={column} columnTitle="Description" />,
|
|
71
|
+
cell: ({ row }) => <TextCell size={100}>{row.original.description}</TextCell>,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
accessorKey: "status",
|
|
75
|
+
header: ({ column }) => <DataTableColumnHeader column={column} columnTitle="Status" />,
|
|
76
|
+
cell: ({ row }) => <BadgeCell badges={[row.original.status]} />,
|
|
77
|
+
filterFn: standardFilterFn,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "value",
|
|
81
|
+
accessorFn: (row) => row.value.lastFour,
|
|
82
|
+
header: ({ column }) => <DataTableColumnHeader column={column} columnTitle="Client Key" />,
|
|
83
|
+
cell: ({ row }) => <TextCell>*******{row.original.value.lastFour}</TextCell>,
|
|
84
|
+
enableSorting: false,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
accessorKey: "expiresAt",
|
|
88
|
+
header: ({ column }) => <DataTableColumnHeader column={column} columnTitle="Expires At" />,
|
|
89
|
+
cell: ({ row }) => {
|
|
90
|
+
if (row.original.status === 'revoked') return <TextCell>-</TextCell>;
|
|
91
|
+
return row.original.expiresAt ? <DateCell date={row.original.expiresAt} ignoreAfterYears={50} /> : <TextCell>Never</TextCell>;
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
accessorKey: "createdAt",
|
|
96
|
+
header: ({ column }) => <DataTableColumnHeader column={column} columnTitle="Created At" />,
|
|
97
|
+
cell: ({ row }) => <DateCell date={row.original.createdAt} ignoreAfterYears={50} />
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: "actions",
|
|
101
|
+
cell: ({ row }) => <Actions row={row} />,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
export function ApiKeyTable(props: { apiKeys: ApiKey[] }) {
|
|
106
|
+
const extendedApiKeys = useMemo(() => {
|
|
107
|
+
const keys = props.apiKeys.map((apiKey) => ({
|
|
108
|
+
...apiKey,
|
|
109
|
+
status: ({ 'valid': 'valid', 'manually-revoked': 'revoked', 'expired': 'expired' } as const)[apiKey.whyInvalid() || 'valid'],
|
|
110
|
+
} satisfies ExtendedApiKey));
|
|
111
|
+
// first sort based on status, then by createdAt
|
|
112
|
+
return keys.sort((a, b) => {
|
|
113
|
+
if (a.status === b.status) {
|
|
114
|
+
return a.createdAt < b.createdAt ? 1 : -1;
|
|
115
|
+
}
|
|
116
|
+
return a.status === 'valid' ? -1 : 1;
|
|
117
|
+
});
|
|
118
|
+
}, [props.apiKeys]);
|
|
119
|
+
|
|
120
|
+
return <DataTable
|
|
121
|
+
data={extendedApiKeys}
|
|
122
|
+
columns={columns}
|
|
123
|
+
toolbarRender={toolbarRender}
|
|
124
|
+
defaultColumnFilters={[]}
|
|
125
|
+
defaultSorting={[]}
|
|
126
|
+
/>;
|
|
127
|
+
}
|