@atlasauth/react 0.1.18 → 0.1.19

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.
Files changed (43) hide show
  1. package/dist/AtlasProvider.d.ts +9 -0
  2. package/dist/AtlasProvider.js +2 -0
  3. package/dist/AtlasProvider.js.map +1 -1
  4. package/dist/account.d.ts +66 -0
  5. package/dist/account.js +223 -0
  6. package/dist/account.js.map +1 -0
  7. package/dist/auth-buttons.d.ts +29 -0
  8. package/dist/auth-buttons.js +43 -0
  9. package/dist/auth-buttons.js.map +1 -0
  10. package/dist/billing.d.ts +127 -0
  11. package/dist/billing.js +235 -0
  12. package/dist/billing.js.map +1 -0
  13. package/dist/components-shared.d.ts +22 -0
  14. package/dist/components-shared.js +70 -0
  15. package/dist/components-shared.js.map +1 -0
  16. package/dist/components.d.ts +29 -433
  17. package/dist/components.js +68 -1223
  18. package/dist/components.js.map +1 -1
  19. package/dist/control-components.d.ts +46 -0
  20. package/dist/control-components.js +69 -0
  21. package/dist/control-components.js.map +1 -0
  22. package/dist/flow.d.ts +81 -0
  23. package/dist/flow.js +319 -0
  24. package/dist/flow.js.map +1 -0
  25. package/dist/organization.d.ts +37 -0
  26. package/dist/organization.js +111 -0
  27. package/dist/organization.js.map +1 -0
  28. package/dist/reverification.d.ts +21 -0
  29. package/dist/reverification.js +74 -0
  30. package/dist/reverification.js.map +1 -0
  31. package/dist/sign-in.d.ts +42 -0
  32. package/dist/sign-in.js +91 -0
  33. package/dist/sign-in.js.map +1 -0
  34. package/dist/sign-up.d.ts +18 -0
  35. package/dist/sign-up.js +37 -0
  36. package/dist/sign-up.js.map +1 -0
  37. package/dist/user-button.d.ts +54 -0
  38. package/dist/user-button.js +75 -0
  39. package/dist/user-button.js.map +1 -0
  40. package/dist/waitlist.d.ts +15 -0
  41. package/dist/waitlist.js +52 -0
  42. package/dist/waitlist.js.map +1 -0
  43. package/package.json +2 -2
@@ -1,436 +1,32 @@
1
- import { type ReactNode } from 'react';
2
- import { type ReauthInput } from '@atlasauth/js';
3
- import { type FlowState } from './fapi';
4
- import { useOrganization } from './hooks';
5
- import { type ProtectCondition } from './protect';
6
- import type { AtlasBillingInvoice, AtlasBillingPlan, AtlasBillingSubscription, AtlasPaymentMethod } from './types';
7
- export declare function SignedIn({ children }: {
8
- children: ReactNode;
9
- }): import("react").JSX.Element | null;
10
- export declare function SignedOut({ children }: {
11
- children: ReactNode;
12
- }): import("react").JSX.Element | null;
13
- /** §10.2: render children only while the SDK is still loading. */
14
- export declare function AtlasLoading({ children }: {
15
- children: ReactNode;
16
- }): import("react").JSX.Element | null;
17
- /** §10.2: render children only once the SDK has finished loading — the
18
- * symmetric partner of {@link AtlasLoading}, so a consumer can show a spinner
19
- * and its resolved content without hand-rolling the inverse condition. */
20
- export declare function AtlasLoaded({ children }: {
21
- children: ReactNode;
22
- }): import("react").JSX.Element | null;
23
1
  /**
24
- * §10.2 `<Protect permission="…">`.
2
+ * §10.2 components — public aggregation point for the @atlasauth/react component
3
+ * library.
25
4
  *
26
- * A rendering helper, never an authorization boundary — anyone can flip the
27
- * condition in devtools. The server checking the same permission is what
28
- * actually stops them, and this component's job is only to avoid showing a
29
- * button that would fail.
30
- */
31
- export declare function Protect({ children, fallback, ...condition }: ProtectCondition & {
32
- children: ReactNode;
33
- fallback?: ReactNode;
34
- }): import("react").JSX.Element | null;
35
- export interface FlowProps {
36
- /** Where to send the user once the flow completes. */
37
- afterUrl?: string;
38
- /**
39
- * Also show Google One-Tap above the "Sign in with Google" button. OFF by
40
- * default: the button alone (a user-initiated popup) converts better and never
41
- * surprises the user with an auto-prompt. One-Tap is a separate GSI call, so
42
- * this only adds it — the button is unaffected.
43
- */
44
- googleOneTap?: boolean;
45
- /**
46
- * §10 hide the panel's own title. The `<SignIn>`/`<SignUp>` card renders its
47
- * own heading; set this when your page already has a "Sign in" heading above
48
- * the panel, so the word doesn't appear twice.
49
- */
50
- hideTitle?: boolean;
51
- }
52
- export declare function SignIn(props?: FlowProps): import("react").JSX.Element;
53
- /**
54
- * §6 headless native sign-in, for a consumer that renders its OWN Google button
55
- * (or Apple / Facebook Limited Login). Mint a nonce with `mintNonce(provider)`,
56
- * hand it to the provider SDK, then pass the resulting id_token to
57
- * `signInWithIdToken` — it posts to the native endpoint, exchanges the ticket
58
- * for cookies and re-boots the app on completion, returning the flow state so
59
- * the caller can react to `needs_second_factor` etc.
60
- */
61
- export declare function useSignIn(): {
62
- mintNonce: (provider: string) => Promise<string | null>;
63
- signInWithIdToken: (input: {
64
- provider: string;
65
- idToken: string;
66
- nonce?: string;
67
- }) => Promise<FlowState>;
68
- };
69
- export declare function SignUp(props?: FlowProps): import("react").JSX.Element;
70
- /**
71
- * §L3 prebuilt-component EXTENSION API (Clerk `<UserButton.MenuItems>` /
72
- * `<UserButton.Action>` / `<UserButton.Link>`).
73
- *
74
- * These are *descriptor* components: they render nothing on their own. A parent
75
- * (`<UserButton>`) walks its children, matches these by identity, and turns each
76
- * into a real menu entry it controls — so custom items sit inside the prebuilt
77
- * dropdown's markup/appearance rather than being bolted on outside it. This is
78
- * the same static-subcomponent pattern Clerk uses (`UserButton.Action`, etc.).
79
- */
80
- export interface MenuActionProps {
81
- /** The row's text. */
82
- label: ReactNode;
83
- /** Optional leading icon/element. */
84
- labelIcon?: ReactNode;
85
- /** Invoked when the row is chosen. */
86
- onClick?: () => void;
87
- }
88
- export interface MenuLinkProps {
89
- label: ReactNode;
90
- labelIcon?: ReactNode;
91
- /** Where the row navigates. */
92
- href: string;
93
- }
94
- /** A container for custom `<UserButton.Action>` / `<UserButton.Link>` rows. Renders nothing itself. */
95
- declare function UserButtonMenuItems(_props: {
96
- children?: ReactNode;
97
- }): null;
98
- /** A custom action row inside `<UserButton.MenuItems>`. Renders nothing itself. */
99
- declare function UserButtonAction(_props: MenuActionProps): null;
100
- /** A custom link row inside `<UserButton.MenuItems>`. Renders nothing itself. */
101
- declare function UserButtonLink(_props: MenuLinkProps): null;
102
- /**
103
- * The signed-in user's avatar + dropdown. Pass `<UserButton.MenuItems>` children
104
- * to add custom `<UserButton.Action>` / `<UserButton.Link>` rows above sign-out.
105
- */
106
- export declare function UserButton({ children }?: {
107
- children?: ReactNode;
108
- }): import("react").JSX.Element | null;
109
- export declare namespace UserButton {
110
- var MenuItems: typeof UserButtonMenuItems;
111
- var Action: typeof UserButtonAction;
112
- var Link: typeof UserButtonLink;
113
- }
114
- export interface AuthButtonProps {
115
- /** Where the sign-in / sign-up page lives. Defaults to `/sign-in` / `/sign-up`. */
116
- url?: string;
117
- /** Where to return after auth completes (becomes `?redirect_url=`). */
118
- redirectUrl?: string;
119
- children?: ReactNode;
120
- className?: string;
121
- }
122
- /** Clerk-parity ergonomic: a button that sends the user to your sign-in page. */
123
- export declare function SignInButton({ url, redirectUrl, children, className }: AuthButtonProps): import("react").JSX.Element;
124
- /** Clerk-parity ergonomic: a button that sends the user to your sign-up page. */
125
- export declare function SignUpButton({ url, redirectUrl, children, className }: AuthButtonProps): import("react").JSX.Element;
126
- /** Clerk-parity ergonomic: a button that signs the user out, then optionally redirects. */
127
- export declare function SignOutButton({ redirectUrl, children, className, }: {
128
- redirectUrl?: string;
129
- children?: ReactNode;
130
- className?: string;
131
- }): import("react").JSX.Element;
132
- /** Declarative "render this to send the user to sign-in" (Clerk `<RedirectToSignIn>`). */
133
- export declare function RedirectToSignIn({ url, redirectUrl }: {
134
- url?: string;
135
- redirectUrl?: string;
136
- }): null;
137
- /** Declarative "render this to send the user to sign-up" (Clerk `<RedirectToSignUp>`). */
138
- export declare function RedirectToSignUp({ url, redirectUrl }: {
139
- url?: string;
140
- redirectUrl?: string;
141
- }): null;
142
- /**
143
- * §L1 (Clerk `<MultisessionAppSupport>`). Re-mounts its subtree whenever the
144
- * ACTIVE account changes, so per-user state held in component state or memo
145
- * caches is discarded on a `setActive({ session })` switch rather than bleeding
146
- * one account's data into the next. Keying on the session id (plus a stable key
147
- * while signed out) is the whole mechanism — React unmounts the old tree and
148
- * mounts a fresh one when the key changes.
149
- */
150
- export declare function MultisessionAppSupport({ children }: {
151
- children: ReactNode;
152
- }): import("react").JSX.Element;
153
- /**
154
- * The signed-in user's avatar (image, or initials fallback) — the standalone
155
- * renderer `<UserButton>` uses internally, exported for reuse (Clerk `<UserAvatar>`).
156
- */
157
- export declare function UserAvatar({ size, className }: {
158
- size?: number;
159
- className?: string;
160
- }): import("react").JSX.Element | null;
161
- /**
162
- * §5.1 headless sign-up — the sign-up counterpart of {@link useSignIn}. Starts a
163
- * sign-up attempt and returns the resulting flow (usually `needs_email_verification`;
164
- * the shared `advance` then drives the code to completion), reloading the provider
165
- * when a sign-up completes with a session ticket.
166
- */
167
- export declare function useSignUp(): {
168
- create: (input: {
169
- email: string;
170
- password: string;
171
- fields?: Record<string, string>;
172
- consent?: boolean;
173
- captchaToken?: string;
174
- }) => Promise<FlowState>;
175
- };
176
- export declare function OrganizationSwitcher(): import("react").JSX.Element;
177
- /**
178
- * Clerk-parity `useOrganizationList()`. The memberships the signed-in user
179
- * belongs to, plus a `createOrganization(name)` that creates one through FAPI and
180
- * re-boots the provider so the new membership appears everywhere. `memberships`
181
- * comes straight from {@link useOrganization} (the same list `<OrganizationSwitcher>`
182
- * renders), so there is one source of truth for what the user belongs to.
183
- */
184
- export declare function useOrganizationList(): {
185
- memberships: ReturnType<typeof useOrganization>['memberships'];
186
- createOrganization(name: string): Promise<{
187
- id: string;
188
- name: string;
189
- } | null>;
190
- };
191
- /**
192
- * Clerk-parity `<CreateOrganization>`. A small name-and-submit form that creates
193
- * an organization via {@link useOrganizationList} and immediately makes it the
194
- * active org, so the user drops straight into the org they just made. Styled like
195
- * the `<SignUp>` card. `onCreate` fires with the created org for a caller that
196
- * wants to route afterwards.
197
- */
198
- export declare function CreateOrganization({ onCreate, }?: {
199
- onCreate?(organization: {
200
- id: string;
201
- name: string;
202
- }): void;
203
- }): import("react").JSX.Element;
204
- /**
205
- * Clerk-parity `<OrganizationList>`. Every organization the user belongs to as a
206
- * button that switches to it (mirroring `<OrganizationSwitcher>`'s markup), plus
207
- * an inline `<CreateOrganization>` so a user with no orgs — or who wants another —
208
- * can make one without leaving the list.
209
- */
210
- export declare function OrganizationList(): import("react").JSX.Element;
211
- /**
212
- * §2 The signed-in user's active devices, with per-device and "sign out everyone
213
- * else" revocation. A drop-in for a settings page — the composable half of the
214
- * post-login account surface an integrator needs the moment login is Atlas.
215
- */
216
- export declare function ActiveSessions(): import("react").JSX.Element;
217
- /**
218
- * §2 The signed-in user's profile — name (editable) and email addresses. Another
219
- * composable piece of the account surface; writes go to `PATCH /v1/client/me` and
220
- * re-boot the provider so the rest of the app sees the change.
221
- */
222
- export declare function ProfileCard(): import("react").JSX.Element | null;
223
- /**
224
- * §2 Manage two-factor authentication (authenticator app / TOTP). The full
225
- * enrollment ceremony — start (secret + otpauth URI), verify with a live code,
226
- * then the one-time backup codes — plus turn-off, in one composable drop-in, so a
227
- * team never rebuilds the FAPI dance to put 2FA in their own settings page. The
228
- * secret + `otpauth://` URI are shown for scan-or-manual entry (render a QR from
229
- * the URI if you like — kept dependency-free here).
230
- */
231
- export declare function ManageMfa(): import("react").JSX.Element;
232
- /**
233
- * §2 Manage passkeys (WebAuthn). Lists the user's registered credentials and runs
234
- * the full add ceremony — `POST /passkeys/begin` → `navigator.credentials.create`
235
- * (via the SDK's {@link createPasskey}) → `POST /passkeys/finish` — plus rename-free
236
- * removal, in one composable drop-in. Nothing renders the "Add" affordance when the
237
- * runtime has no WebAuthn support, so it degrades cleanly on older browsers.
238
- */
239
- export declare function ManagePasskeys(): import("react").JSX.Element;
240
- /**
241
- * §2 The drop-in post-login account surface. Composes the account-management
242
- * pieces (profile, 2FA, passkeys, devices). Each piece is also exported on its own
243
- * (`<ProfileCard/>`, `<ManageMfa/>`, `<ManagePasskeys/>`, `<ActiveSessions/>`) so a
244
- * team can drop just one into their existing settings page.
245
- */
246
- /**
247
- * §L3 extension API (Clerk `<UserProfile.Page>` / `<UserProfile.Link>`): add
248
- * your own tab of content, or an external link, into the prebuilt profile. Both
249
- * are descriptor components — `<UserProfile>` reads them from its children.
250
- */
251
- export interface ProfilePageProps {
252
- /** The tab's label. */
253
- label: ReactNode;
254
- labelIcon?: ReactNode;
255
- /** The tab's body. */
256
- children?: ReactNode;
257
- }
258
- export interface ProfileLinkProps {
259
- label: ReactNode;
260
- labelIcon?: ReactNode;
261
- /** Where the tab navigates instead of showing content. */
262
- url: string;
263
- }
264
- /** A custom content tab inside `<UserProfile>`. Renders nothing on its own. */
265
- declare function UserProfilePage(_props: ProfilePageProps): null;
266
- /** A custom external-link tab inside `<UserProfile>`. Renders nothing on its own. */
267
- declare function UserProfileLink(_props: ProfileLinkProps): null;
268
- export declare function UserProfile({ children }?: {
269
- children?: ReactNode;
270
- }): import("react").JSX.Element | null;
271
- export declare namespace UserProfile {
272
- var Page: typeof UserProfilePage;
273
- var Link: typeof UserProfileLink;
274
- }
275
- export declare function OrganizationProfile(): import("react").JSX.Element | null;
276
- /**
277
- * Clerk-parity `useWaitlist()`. Headless join: `join(email)` posts the address to
278
- * the waitlist endpoint and hands back the raw {@link FapiClient} response, so a
279
- * caller rendering its own form decides what to show on success vs. failure.
280
- */
281
- export declare function useWaitlist(): {
282
- join: (email: string) => Promise<import("@atlasauth/js").FapiResponse<unknown>>;
283
- };
284
- /**
285
- * Clerk-parity `<Waitlist>`. An email-and-submit card (styled like `<SignUp>`)
286
- * that calls {@link useWaitlist}. A 200 swaps the form for a success message; any
287
- * other response surfaces the server's message as a field error, so a bad or
288
- * duplicate address is reported in place rather than silently swallowed.
289
- */
290
- export declare function Waitlist(): import("react").JSX.Element;
291
- /**
292
- * Clerk-parity `useReverification()`. A thin, headless wrapper over the EXISTING
293
- * step-up path (`@atlasauth/js`'s {@link reauthenticate} → `POST /v1/client/me/reauthenticate`)
294
- * — it invents no server endpoint.
5
+ * The implementations live in per-component sibling files (`sign-in.tsx`,
6
+ * `sign-up.tsx`, `user-button.tsx`, `organization.tsx`, `account.tsx`,
7
+ * `auth-buttons.tsx`, `control-components.tsx`, `billing.tsx`, `waitlist.tsx`,
8
+ * `reverification.tsx`, and the shared `flow.tsx` / `components-shared.tsx`).
9
+ * This module re-exports every one of them so the package's public API — what
10
+ * `index.ts` re-exports via `export * from './components'` — stays byte-for-byte
11
+ * identical after the split. Import sites (`@atlasauth/react`) are unaffected.
295
12
  *
296
- * Wrap a security-sensitive action with `withReverification(action)`. It runs the
297
- * action; if that throws or returns a `STEP_UP_REQUIRED` (reauthentication-required)
298
- * signal, it flips `needsReverification` true and parks the call. The caller renders
299
- * its own prompt, gathers a credential, and calls `completeReverification(input)`,
300
- * which re-authenticates in place and retries the action ONCE — resolving the
301
- * original `withReverification` promise with the retry's result. `cancelReverification`
302
- * abandons the parked call. A wrong password throws out of `completeReverification`
303
- * with the parked call intact, so the prompt can let the user try again.
304
- */
305
- export declare function useReverification(): {
306
- withReverification<T>(action: () => T | Promise<T>): Promise<T>;
307
- needsReverification: boolean;
308
- completeReverification(input: ReauthInput): Promise<void>;
309
- cancelReverification(): void;
310
- };
311
- /**
312
- * §commerce (Clerk commerce). A thin, HONEST SDK surface over the REAL
313
- * Stripe-backed billing API (`/v1/client/billing/*`): list plans, read the
314
- * subject's subscription, and start a Checkout Session or open the Billing
315
- * Portal — both of which the server issues as real Stripe-hosted URLs the
316
- * caller is redirected to. There is deliberately NO in-page card form: taking
317
- * card details would need a PCI-scoped Stripe Elements integration, and faking
318
- * one would be a lie. Redirect-to-Checkout is the same posture Stripe itself
319
- * recommends for most apps.
320
- */
321
- export interface CheckoutParams {
322
- /** The plan to buy. */
323
- planId: string;
324
- /** Buy for an organization (its admin) rather than for the user. */
325
- orgId?: string;
326
- /** Where Stripe returns on success / cancel. Defaults to the current URL. */
327
- successUrl?: string;
328
- cancelUrl?: string;
329
- /** Redirect to the Checkout URL (default true). False → the URL is only returned. */
330
- redirect?: boolean;
331
- }
332
- /**
333
- * §commerce headless billing (Clerk `useCheckout`/subscription hooks combined).
334
- * Loads the instance's plans and — when signed in — the subject's subscription,
335
- * and exposes `checkout()` and `openPortal()`. Pass `{ orgId }` to operate on an
336
- * organization the user administers instead of on the user.
337
- */
338
- export declare function useBilling(opts?: {
339
- orgId?: string;
340
- }): {
341
- isLoaded: boolean;
342
- plans: AtlasBillingPlan[];
343
- subscription: AtlasBillingSubscription | null;
344
- invoices: AtlasBillingInvoice[];
345
- paymentMethod: AtlasPaymentMethod | null;
346
- checkout: (params: CheckoutParams) => Promise<import("@atlasauth/js").FapiResponse<{
347
- url: string;
348
- }>>;
349
- openPortal: (params?: {
350
- returnUrl?: string;
351
- orgId?: string;
352
- redirect?: boolean;
353
- }) => Promise<import("@atlasauth/js").FapiResponse<{
354
- url: string;
355
- }>>;
356
- reload: () => Promise<void>;
357
- };
358
- /** §commerce Clerk-parity alias — just the `checkout` action from {@link useBilling}. */
359
- export declare function useCheckout(opts?: {
360
- orgId?: string;
361
- }): {
362
- checkout: (params: CheckoutParams) => Promise<import("@atlasauth/js").FapiResponse<{
363
- url: string;
364
- }>>;
365
- };
366
- /** §commerce Clerk-parity alias — the subject's subscription from {@link useBilling}. */
367
- export declare function useSubscription(opts?: {
368
- orgId?: string;
369
- }): {
370
- isLoaded: boolean;
371
- subscription: AtlasBillingSubscription | null;
372
- openPortal: (params?: {
373
- returnUrl?: string;
374
- orgId?: string;
375
- redirect?: boolean;
376
- }) => Promise<import("@atlasauth/js").FapiResponse<{
377
- url: string;
378
- }>>;
379
- reload: () => Promise<void>;
380
- };
381
- /** §commerce Clerk-parity alias — the subject's invoices from {@link useBilling}. */
382
- export declare function useInvoices(opts?: {
383
- orgId?: string;
384
- }): {
385
- isLoaded: boolean;
386
- invoices: AtlasBillingInvoice[];
387
- reload: () => Promise<void>;
388
- };
389
- /** §commerce Clerk-parity alias — the subject's default payment method + Portal to change it. */
390
- export declare function usePaymentMethods(opts?: {
391
- orgId?: string;
392
- }): {
393
- isLoaded: boolean;
394
- paymentMethod: AtlasPaymentMethod | null;
395
- openPortal: (params?: {
396
- returnUrl?: string;
397
- orgId?: string;
398
- redirect?: boolean;
399
- }) => Promise<import("@atlasauth/js").FapiResponse<{
400
- url: string;
401
- }>>;
402
- reload: () => Promise<void>;
403
- };
404
- /**
405
- * §commerce (Clerk `<PricingTable>`). Renders the instance's plans as cards with
406
- * price + features and a subscribe button that starts a real Stripe Checkout.
407
- * The plan the subject is currently on is marked as current (its button is
408
- * disabled and an "Manage billing" action opens the Billing Portal instead).
409
- */
410
- export declare function PricingTable({ orgId }?: {
411
- orgId?: string;
412
- }): import("react").JSX.Element;
413
- /**
414
- * §commerce (Clerk `<Invoices>`). The subject's billing history — number, status,
415
- * amount, and a link to Stripe's hosted invoice / PDF. Renders nothing until
416
- * loaded, and an empty state when there are no invoices yet.
417
- */
418
- export declare function Invoices({ orgId }?: {
419
- orgId?: string;
420
- }): import("react").JSX.Element;
421
- /**
422
- * §commerce (Clerk `<EmbeddedCheckout>`). In-page checkout for a plan: mounts
423
- * Stripe's own Embedded Checkout iframe — Stripe.js owns the card fields, so no
424
- * PCI-scoped data ever touches Atlas. Fetches the instance's Stripe publishable
425
- * key from `/billing/config`; when embedded checkout is not configured it renders
426
- * `fallback` (default: a hosted-redirect button) rather than a broken frame.
427
- */
428
- export declare function EmbeddedCheckout({ planId, orgId, returnUrl, fallback, }: {
429
- planId: string;
430
- orgId?: string;
431
- /** Where Stripe returns after the in-page flow (defaults to the current URL). */
432
- returnUrl?: string;
433
- /** Rendered when embedded checkout is unavailable (no publishable key). */
434
- fallback?: ReactNode;
435
- }): import("react").JSX.Element;
436
- export {};
13
+ * `<SignIn/>` and `<SignUp/>` are "full multi-step flows driven entirely by the
14
+ * server-side attempt status": no client here decides what comes next; each step
15
+ * renders whatever `status` the server returned, via the exhaustive mapping in
16
+ * @atlasauth/js. See `flow.tsx` for that shell.
17
+ */
18
+ export { SignedIn, SignedOut, AtlasLoading, AtlasLoaded, Protect, MultisessionAppSupport, } from './control-components';
19
+ export type { FlowProps } from './flow';
20
+ export { SignIn, SocialSignInButton, useSignIn } from './sign-in';
21
+ export { SignUp, useSignUp } from './sign-up';
22
+ export type { MenuActionProps, MenuLinkProps } from './user-button';
23
+ export { UserButton, UserAvatar } from './user-button';
24
+ export type { AuthButtonProps } from './auth-buttons';
25
+ export { SignInButton, SignUpButton, SignOutButton, RedirectToSignIn, RedirectToSignUp, } from './auth-buttons';
26
+ export { OrganizationSwitcher, useOrganizationList, CreateOrganization, OrganizationList, OrganizationProfile, } from './organization';
27
+ export type { ProfilePageProps, ProfileLinkProps } from './account';
28
+ export { ActiveSessions, ProfileCard, ManageMfa, ManagePasskeys, UserProfile, } from './account';
29
+ export { useWaitlist, Waitlist } from './waitlist';
30
+ export { useReverification } from './reverification';
31
+ export type { CheckoutParams } from './billing';
32
+ export { useBilling, useCheckout, useSubscription, useInvoices, usePaymentMethods, PricingTable, Invoices, EmbeddedCheckout, } from './billing';