@authowl/react 0.20.0 → 0.21.0

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.
@@ -9,7 +9,7 @@ import {
9
9
  useServerError,
10
10
  useSubmitAction,
11
11
  useT
12
- } from "./chunk-DPWUE5HS.js";
12
+ } from "./chunk-K67DJJHP.js";
13
13
 
14
14
  // src/components/organization/TeamsSection.tsx
15
15
  import * as React4 from "react";
@@ -574,6 +574,43 @@ function useOrganization() {
574
574
  isLoaded: !isPending && orgLoaded
575
575
  };
576
576
  }
577
+ function useInvitationRecipientHint() {
578
+ const client = useAuthClient();
579
+ const apiRef = React5.useRef(client.organization);
580
+ apiRef.current = client.organization;
581
+ const [result, setResult] = React5.useState({
582
+ recipientHint: null,
583
+ isLoaded: false
584
+ });
585
+ React5.useEffect(() => {
586
+ let active = true;
587
+ const claim = readInvitationClaim();
588
+ if (!claim) {
589
+ setResult({ recipientHint: null, isLoaded: true });
590
+ return () => {
591
+ active = false;
592
+ };
593
+ }
594
+ void (async () => {
595
+ try {
596
+ const response = await apiRef.current.getInvitationRecipientHint({
597
+ invitationId: claim.id
598
+ });
599
+ if (!active) return;
600
+ setResult({
601
+ recipientHint: response.data?.recipientHint ?? null,
602
+ isLoaded: true
603
+ });
604
+ } catch {
605
+ if (active) setResult({ recipientHint: null, isLoaded: true });
606
+ }
607
+ })();
608
+ return () => {
609
+ active = false;
610
+ };
611
+ }, []);
612
+ return result;
613
+ }
577
614
  function useOrganizationInvitation() {
578
615
  const client = useAuthClient();
579
616
  const apiRef = React5.useRef(client.organization);
@@ -889,6 +926,7 @@ export {
889
926
  useUser,
890
927
  useAuth,
891
928
  useOrganization,
929
+ useInvitationRecipientHint,
892
930
  useOrganizationInvitation,
893
931
  useSignIn,
894
932
  usePasskeys,
package/dist/index.cjs CHANGED
@@ -6,8 +6,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __esm = (fn, res) => function __init() {
10
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
9
+ var __esm = (fn, res, err) => function __init() {
10
+ if (err) throw err[0];
11
+ try {
12
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
13
+ } catch (e) {
14
+ throw err = [e], e;
15
+ }
11
16
  };
12
17
  var __export = (target, all) => {
13
18
  for (var name in all)
@@ -316,6 +321,43 @@ function useOrganization() {
316
321
  isLoaded: !isPending && orgLoaded
317
322
  };
318
323
  }
324
+ function useInvitationRecipientHint() {
325
+ const client = useAuthClient();
326
+ const apiRef = React.useRef(client.organization);
327
+ apiRef.current = client.organization;
328
+ const [result, setResult] = React.useState({
329
+ recipientHint: null,
330
+ isLoaded: false
331
+ });
332
+ React.useEffect(() => {
333
+ let active = true;
334
+ const claim = (0, import_core.readInvitationClaim)();
335
+ if (!claim) {
336
+ setResult({ recipientHint: null, isLoaded: true });
337
+ return () => {
338
+ active = false;
339
+ };
340
+ }
341
+ void (async () => {
342
+ try {
343
+ const response = await apiRef.current.getInvitationRecipientHint({
344
+ invitationId: claim.id
345
+ });
346
+ if (!active) return;
347
+ setResult({
348
+ recipientHint: response.data?.recipientHint ?? null,
349
+ isLoaded: true
350
+ });
351
+ } catch {
352
+ if (active) setResult({ recipientHint: null, isLoaded: true });
353
+ }
354
+ })();
355
+ return () => {
356
+ active = false;
357
+ };
358
+ }, []);
359
+ return result;
360
+ }
319
361
  function useOrganizationInvitation() {
320
362
  const client = useAuthClient();
321
363
  const apiRef = React.useRef(client.organization);
@@ -1364,6 +1406,7 @@ __export(index_exports, {
1364
1406
  useAuthOwlContext: () => useAuthOwlContext,
1365
1407
  useConsent: () => useConsent,
1366
1408
  useEmailVerification: () => useEmailVerification,
1409
+ useInvitationRecipientHint: () => useInvitationRecipientHint,
1367
1410
  useLocale: () => useLocale,
1368
1411
  useMFA: () => useMFA,
1369
1412
  useOrganization: () => useOrganization,
@@ -8378,6 +8421,7 @@ var import_core8 = require("@authowl/core");
8378
8421
  useAuthOwlContext,
8379
8422
  useConsent,
8380
8423
  useEmailVerification,
8424
+ useInvitationRecipientHint,
8381
8425
  useLocale,
8382
8426
  useMFA,
8383
8427
  useOrganization,
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { AuthConfig, Locale, AuthOwlClient, PublicConfig, ConsentStatus, OrganizationInvitationDetails, OrganizationDetails, OrganizationMembership, HasParams, AuthUser, AuthClientError, SessionState, Organization, AuthOwlErrorCode } from '@authowl/core';
2
+ import { AuthConfig, Locale, AuthOwlClient, PublicConfig, ConsentStatus, OrganizationInvitationDetails, OrganizationDetails, OrganizationMembership, HasParams, AuthUser, AuthClientError, InvitationRecipientHint, SessionState, Organization, AuthOwlErrorCode } from '@authowl/core';
3
3
  export { AuthOwlError, AuthPasskey, ConsentStatus, HasParams, InvalidKeyError, Organization, OrganizationDetails, OrganizationInvitation, OrganizationMember, OrganizationMemberWithUser, OrganizationMembership, OrganizationRoleSummary, OrganizationTeam, OrganizationTeamMember, OrganizationUserInvitation, PublicConfig, RateLimitedError, createMembershipHas, membershipHas, membershipHasPermission, membershipHasTeam } from '@authowl/core';
4
4
 
5
5
  type Appearance = {
@@ -169,6 +169,27 @@ type UseOrganizationInvitationResult = {
169
169
  /** Forget it locally. Never rejects it server-side - that is a terminal state. */
170
170
  dismiss: () => void;
171
171
  };
172
+ type UseInvitationRecipientHintResult = {
173
+ recipientHint: InvitationRecipientHint | null;
174
+ /** False until browser storage and, when present, the server hint have settled. */
175
+ isLoaded: boolean;
176
+ };
177
+ /**
178
+ * Whether the invitation this browser is carrying was sent to an address that had
179
+ * no account, so an operator can land the invitee on sign-UP instead of sign-in.
180
+ *
181
+ * Readable BEFORE there is a session, which is the whole point: an invitee
182
+ * usually has no account, and `getInvitation` is recipient-only so nothing else
183
+ * can tell you anything about them until they have authenticated.
184
+ *
185
+ * Once `isLoaded` is true, `null` means "not told" and never "they have an
186
+ * account". It covers an unknown, inactive, expired, foreign-project, or
187
+ * existing-user invitation. Treat the hint as a default, not a fact.
188
+ *
189
+ * Read after mount, never during render: the claim lives in `localStorage`,
190
+ * which does not exist on the server.
191
+ */
192
+ declare function useInvitationRecipientHint(): UseInvitationRecipientHintResult;
172
193
  /**
173
194
  * The organization invitation this browser arrived carrying, if any.
174
195
  *
@@ -900,4 +921,4 @@ type GoogleOneTapProps = {
900
921
  /** Invisible, server-configured Google One Tap conversion helper. */
901
922
  declare function GoogleOneTap({ disabled, nonce, autoSelect, cancelOnTapOutside, context, itpSupport, loginHint, hostedDomain, stateCookieDomain, scriptNonce, onSignedIn, onSkipped, onDismissed, onError, }: GoogleOneTapProps): null;
902
923
 
903
- export { type Appearance, AuthLoaded, type AuthLoadedProps, AuthLoading, type AuthLoadingProps, AuthOwlBadge, type AuthOwlBadgeProps, AuthOwlBranding, type AuthOwlBrandingProps, AuthOwlProvider, type AuthOwlProviderProps, type AutofillHost, BackupCodesManager, type BackupCodesManagerProps, Bidi, type ConfigState, ConsentDocLinks, type ConsentDocLinksProps, ConsentGate, type ConsentGateProps, CreateOrganization, type CreateOrganizationProps, DEFAULT_BRAND_COLOR, EmailOtpForm, type EmailOtpFormProps, ForgotPassword, type ForgotPasswordProps, GoogleOneTap, type GoogleOneTapDismissReason, type GoogleOneTapError, type GoogleOneTapErrorCode, type GoogleOneTapProps, type GoogleOneTapSkipReason, InvitationPrompt, type InvitationPromptStatus, KNOWN_METHODS, type KnownMethod, MFAChallenge, type MFAChallengeProps, MFAEnrollment, type MFAEnrollmentProps, MFARequiredGate, type MFARequiredGateProps, MagicLinkForm, type MagicLinkFormProps, OrganizationList, type OrganizationListProps, OrganizationProfile, type OrganizationProfileProps, type OrganizationProfileSection, OrganizationSwitcher, type OrganizationSwitcherProps, PasskeyButton, type PasskeyButtonProps, PasskeyManager, type PasskeyManagerProps, PhoneOTP, type PhoneOTPProps, Protect, type ProtectProps, ResetPassword, type ResetPasswordProps, SignIn, type SignInPlan, type SignInProps, SignOutButton, type SignOutButtonProps, SignUp, type SignUpProps, SignedIn, type SignedInProps, SignedOut, type SignedOutProps, SocialButtons, type SocialButtonsProps, Spinner, type UseAccountResult, type UseAuthResult, type UseConsentResult, type UseEmailVerificationResult, type UseMFAResult, type UseOrganizationInvitationResult, type UseOrganizationResult, type UsePasskeysResult, type UsePasswordResetResult, type UsePublicConfigResult, type UseSignInResult, type UseSignOutResult, type UseSignUpResult, type UseUserResult, type UseWaitlistResult, UserButton, UserProfile, type UserProfileProps, type UserProfileSection, VerificationPending, type VerificationPendingProps, VerifyEmail, type VerifyEmailProps, Waitlist, type WaitlistProps, emailAutocomplete, resolveSignInMethods, useAccount, useAuth, useAuthClient, useAuthOwlContext, useConsent, useEmailVerification, useLocale, useMFA, useOrganization, useOrganizationInvitation, usePasskeys, usePasswordReset, usePublicConfig, useSession, useSignIn, useSignOut, useSignUp, useUser, useWaitlist };
924
+ export { type Appearance, AuthLoaded, type AuthLoadedProps, AuthLoading, type AuthLoadingProps, AuthOwlBadge, type AuthOwlBadgeProps, AuthOwlBranding, type AuthOwlBrandingProps, AuthOwlProvider, type AuthOwlProviderProps, type AutofillHost, BackupCodesManager, type BackupCodesManagerProps, Bidi, type ConfigState, ConsentDocLinks, type ConsentDocLinksProps, ConsentGate, type ConsentGateProps, CreateOrganization, type CreateOrganizationProps, DEFAULT_BRAND_COLOR, EmailOtpForm, type EmailOtpFormProps, ForgotPassword, type ForgotPasswordProps, GoogleOneTap, type GoogleOneTapDismissReason, type GoogleOneTapError, type GoogleOneTapErrorCode, type GoogleOneTapProps, type GoogleOneTapSkipReason, InvitationPrompt, type InvitationPromptStatus, KNOWN_METHODS, type KnownMethod, MFAChallenge, type MFAChallengeProps, MFAEnrollment, type MFAEnrollmentProps, MFARequiredGate, type MFARequiredGateProps, MagicLinkForm, type MagicLinkFormProps, OrganizationList, type OrganizationListProps, OrganizationProfile, type OrganizationProfileProps, type OrganizationProfileSection, OrganizationSwitcher, type OrganizationSwitcherProps, PasskeyButton, type PasskeyButtonProps, PasskeyManager, type PasskeyManagerProps, PhoneOTP, type PhoneOTPProps, Protect, type ProtectProps, ResetPassword, type ResetPasswordProps, SignIn, type SignInPlan, type SignInProps, SignOutButton, type SignOutButtonProps, SignUp, type SignUpProps, SignedIn, type SignedInProps, SignedOut, type SignedOutProps, SocialButtons, type SocialButtonsProps, Spinner, type UseAccountResult, type UseAuthResult, type UseConsentResult, type UseEmailVerificationResult, type UseMFAResult, type UseOrganizationInvitationResult, type UseOrganizationResult, type UsePasskeysResult, type UsePasswordResetResult, type UsePublicConfigResult, type UseSignInResult, type UseSignOutResult, type UseSignUpResult, type UseUserResult, type UseWaitlistResult, UserButton, UserProfile, type UserProfileProps, type UserProfileSection, VerificationPending, type VerificationPendingProps, VerifyEmail, type VerifyEmailProps, Waitlist, type WaitlistProps, emailAutocomplete, resolveSignInMethods, useAccount, useAuth, useAuthClient, useAuthOwlContext, useConsent, useEmailVerification, useInvitationRecipientHint, useLocale, useMFA, useOrganization, useOrganizationInvitation, usePasskeys, usePasswordReset, usePublicConfig, useSession, useSignIn, useSignOut, useSignUp, useUser, useWaitlist };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { AuthConfig, Locale, AuthOwlClient, PublicConfig, ConsentStatus, OrganizationInvitationDetails, OrganizationDetails, OrganizationMembership, HasParams, AuthUser, AuthClientError, SessionState, Organization, AuthOwlErrorCode } from '@authowl/core';
2
+ import { AuthConfig, Locale, AuthOwlClient, PublicConfig, ConsentStatus, OrganizationInvitationDetails, OrganizationDetails, OrganizationMembership, HasParams, AuthUser, AuthClientError, InvitationRecipientHint, SessionState, Organization, AuthOwlErrorCode } from '@authowl/core';
3
3
  export { AuthOwlError, AuthPasskey, ConsentStatus, HasParams, InvalidKeyError, Organization, OrganizationDetails, OrganizationInvitation, OrganizationMember, OrganizationMemberWithUser, OrganizationMembership, OrganizationRoleSummary, OrganizationTeam, OrganizationTeamMember, OrganizationUserInvitation, PublicConfig, RateLimitedError, createMembershipHas, membershipHas, membershipHasPermission, membershipHasTeam } from '@authowl/core';
4
4
 
5
5
  type Appearance = {
@@ -169,6 +169,27 @@ type UseOrganizationInvitationResult = {
169
169
  /** Forget it locally. Never rejects it server-side - that is a terminal state. */
170
170
  dismiss: () => void;
171
171
  };
172
+ type UseInvitationRecipientHintResult = {
173
+ recipientHint: InvitationRecipientHint | null;
174
+ /** False until browser storage and, when present, the server hint have settled. */
175
+ isLoaded: boolean;
176
+ };
177
+ /**
178
+ * Whether the invitation this browser is carrying was sent to an address that had
179
+ * no account, so an operator can land the invitee on sign-UP instead of sign-in.
180
+ *
181
+ * Readable BEFORE there is a session, which is the whole point: an invitee
182
+ * usually has no account, and `getInvitation` is recipient-only so nothing else
183
+ * can tell you anything about them until they have authenticated.
184
+ *
185
+ * Once `isLoaded` is true, `null` means "not told" and never "they have an
186
+ * account". It covers an unknown, inactive, expired, foreign-project, or
187
+ * existing-user invitation. Treat the hint as a default, not a fact.
188
+ *
189
+ * Read after mount, never during render: the claim lives in `localStorage`,
190
+ * which does not exist on the server.
191
+ */
192
+ declare function useInvitationRecipientHint(): UseInvitationRecipientHintResult;
172
193
  /**
173
194
  * The organization invitation this browser arrived carrying, if any.
174
195
  *
@@ -900,4 +921,4 @@ type GoogleOneTapProps = {
900
921
  /** Invisible, server-configured Google One Tap conversion helper. */
901
922
  declare function GoogleOneTap({ disabled, nonce, autoSelect, cancelOnTapOutside, context, itpSupport, loginHint, hostedDomain, stateCookieDomain, scriptNonce, onSignedIn, onSkipped, onDismissed, onError, }: GoogleOneTapProps): null;
902
923
 
903
- export { type Appearance, AuthLoaded, type AuthLoadedProps, AuthLoading, type AuthLoadingProps, AuthOwlBadge, type AuthOwlBadgeProps, AuthOwlBranding, type AuthOwlBrandingProps, AuthOwlProvider, type AuthOwlProviderProps, type AutofillHost, BackupCodesManager, type BackupCodesManagerProps, Bidi, type ConfigState, ConsentDocLinks, type ConsentDocLinksProps, ConsentGate, type ConsentGateProps, CreateOrganization, type CreateOrganizationProps, DEFAULT_BRAND_COLOR, EmailOtpForm, type EmailOtpFormProps, ForgotPassword, type ForgotPasswordProps, GoogleOneTap, type GoogleOneTapDismissReason, type GoogleOneTapError, type GoogleOneTapErrorCode, type GoogleOneTapProps, type GoogleOneTapSkipReason, InvitationPrompt, type InvitationPromptStatus, KNOWN_METHODS, type KnownMethod, MFAChallenge, type MFAChallengeProps, MFAEnrollment, type MFAEnrollmentProps, MFARequiredGate, type MFARequiredGateProps, MagicLinkForm, type MagicLinkFormProps, OrganizationList, type OrganizationListProps, OrganizationProfile, type OrganizationProfileProps, type OrganizationProfileSection, OrganizationSwitcher, type OrganizationSwitcherProps, PasskeyButton, type PasskeyButtonProps, PasskeyManager, type PasskeyManagerProps, PhoneOTP, type PhoneOTPProps, Protect, type ProtectProps, ResetPassword, type ResetPasswordProps, SignIn, type SignInPlan, type SignInProps, SignOutButton, type SignOutButtonProps, SignUp, type SignUpProps, SignedIn, type SignedInProps, SignedOut, type SignedOutProps, SocialButtons, type SocialButtonsProps, Spinner, type UseAccountResult, type UseAuthResult, type UseConsentResult, type UseEmailVerificationResult, type UseMFAResult, type UseOrganizationInvitationResult, type UseOrganizationResult, type UsePasskeysResult, type UsePasswordResetResult, type UsePublicConfigResult, type UseSignInResult, type UseSignOutResult, type UseSignUpResult, type UseUserResult, type UseWaitlistResult, UserButton, UserProfile, type UserProfileProps, type UserProfileSection, VerificationPending, type VerificationPendingProps, VerifyEmail, type VerifyEmailProps, Waitlist, type WaitlistProps, emailAutocomplete, resolveSignInMethods, useAccount, useAuth, useAuthClient, useAuthOwlContext, useConsent, useEmailVerification, useLocale, useMFA, useOrganization, useOrganizationInvitation, usePasskeys, usePasswordReset, usePublicConfig, useSession, useSignIn, useSignOut, useSignUp, useUser, useWaitlist };
924
+ export { type Appearance, AuthLoaded, type AuthLoadedProps, AuthLoading, type AuthLoadingProps, AuthOwlBadge, type AuthOwlBadgeProps, AuthOwlBranding, type AuthOwlBrandingProps, AuthOwlProvider, type AuthOwlProviderProps, type AutofillHost, BackupCodesManager, type BackupCodesManagerProps, Bidi, type ConfigState, ConsentDocLinks, type ConsentDocLinksProps, ConsentGate, type ConsentGateProps, CreateOrganization, type CreateOrganizationProps, DEFAULT_BRAND_COLOR, EmailOtpForm, type EmailOtpFormProps, ForgotPassword, type ForgotPasswordProps, GoogleOneTap, type GoogleOneTapDismissReason, type GoogleOneTapError, type GoogleOneTapErrorCode, type GoogleOneTapProps, type GoogleOneTapSkipReason, InvitationPrompt, type InvitationPromptStatus, KNOWN_METHODS, type KnownMethod, MFAChallenge, type MFAChallengeProps, MFAEnrollment, type MFAEnrollmentProps, MFARequiredGate, type MFARequiredGateProps, MagicLinkForm, type MagicLinkFormProps, OrganizationList, type OrganizationListProps, OrganizationProfile, type OrganizationProfileProps, type OrganizationProfileSection, OrganizationSwitcher, type OrganizationSwitcherProps, PasskeyButton, type PasskeyButtonProps, PasskeyManager, type PasskeyManagerProps, PhoneOTP, type PhoneOTPProps, Protect, type ProtectProps, ResetPassword, type ResetPasswordProps, SignIn, type SignInPlan, type SignInProps, SignOutButton, type SignOutButtonProps, SignUp, type SignUpProps, SignedIn, type SignedInProps, SignedOut, type SignedOutProps, SocialButtons, type SocialButtonsProps, Spinner, type UseAccountResult, type UseAuthResult, type UseConsentResult, type UseEmailVerificationResult, type UseMFAResult, type UseOrganizationInvitationResult, type UseOrganizationResult, type UsePasskeysResult, type UsePasswordResetResult, type UsePublicConfigResult, type UseSignInResult, type UseSignOutResult, type UseSignUpResult, type UseUserResult, type UseWaitlistResult, UserButton, UserProfile, type UserProfileProps, type UserProfileSection, VerificationPending, type VerificationPendingProps, VerifyEmail, type VerifyEmailProps, Waitlist, type WaitlistProps, emailAutocomplete, resolveSignInMethods, useAccount, useAuth, useAuthClient, useAuthOwlContext, useConsent, useEmailVerification, useInvitationRecipientHint, useLocale, useMFA, useOrganization, useOrganizationInvitation, usePasskeys, usePasswordReset, usePublicConfig, useSession, useSignIn, useSignOut, useSignUp, useUser, useWaitlist };
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ import {
19
19
  useAuthOwlContext,
20
20
  useConsent,
21
21
  useEmailVerification,
22
+ useInvitationRecipientHint,
22
23
  useLocale,
23
24
  useMFA,
24
25
  useOrganization,
@@ -36,7 +37,7 @@ import {
36
37
  useT,
37
38
  useUser,
38
39
  useWaitlist
39
- } from "./chunk-DPWUE5HS.js";
40
+ } from "./chunk-K67DJJHP.js";
40
41
 
41
42
  // src/project-capabilities.ts
42
43
  import {
@@ -6050,7 +6051,7 @@ var SECTION_KEYS2 = {
6050
6051
  invitations: "organization.profile.nav.invitations",
6051
6052
  danger: "organization.profile.nav.danger"
6052
6053
  };
6053
- var TeamsSection = React44.lazy(() => import("./TeamsSection-OFWSOAZ6.js"));
6054
+ var TeamsSection = React44.lazy(() => import("./TeamsSection-SHXAL64Q.js"));
6054
6055
  function OrganizationProfile({ organizationId, defaultSection = "general", onDeleted, onLeft } = {}) {
6055
6056
  const t = useT();
6056
6057
  const toServerError = useServerError();
@@ -6814,6 +6815,7 @@ export {
6814
6815
  useAuthOwlContext,
6815
6816
  useConsent,
6816
6817
  useEmailVerification,
6818
+ useInvitationRecipientHint,
6817
6819
  useLocale,
6818
6820
  useMFA,
6819
6821
  useOrganization,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authowl/react",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "React provider, hooks, and drop-in components for AuthOwl, the multi-tenant auth SaaS.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -47,20 +47,20 @@
47
47
  "LICENSE"
48
48
  ],
49
49
  "dependencies": {
50
- "@authowl/core": "0.17.0"
50
+ "@authowl/core": "0.18.0"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "react": ">=18",
54
54
  "react-dom": ">=18"
55
55
  },
56
56
  "devDependencies": {
57
- "@testing-library/react": "16.3.0",
58
- "@types/react": "^19.0.2",
59
- "@types/react-dom": "^19.0.2",
57
+ "@testing-library/react": "16.3.2",
58
+ "@types/react": "^19.2.18",
59
+ "@types/react-dom": "^19.2.4",
60
60
  "jsdom": "26.1.0",
61
61
  "qrcode-generator": "^2.0.4",
62
- "react": "^19.0.0",
63
- "react-dom": "^19.0.0",
62
+ "react": "^19.2.8",
63
+ "react-dom": "^19.2.8",
64
64
  "tsup": "^8.3.5",
65
65
  "typescript": "^5.7.2",
66
66
  "vitest": "^4.1.10"