@pisti-paypiller/react 0.0.0-stage → 0.7.1
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/LICENSE +21 -0
- package/README.md +159 -2
- package/dist/api-keys.d.ts +8 -0
- package/dist/api-keys.d.ts.map +1 -0
- package/dist/api-keys.js +54 -0
- package/dist/api-keys.js.map +1 -0
- package/dist/async-state.d.ts +14 -0
- package/dist/async-state.d.ts.map +1 -0
- package/dist/async-state.js +81 -0
- package/dist/async-state.js.map +1 -0
- package/dist/auth.d.ts +23 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +297 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +152 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +633 -0
- package/dist/client.js.map +1 -0
- package/dist/context.d.ts +94 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +145 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/organizations.d.ts +16 -0
- package/dist/organizations.d.ts.map +1 -0
- package/dist/organizations.js +169 -0
- package/dist/organizations.js.map +1 -0
- package/dist/resources.d.ts +204 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +129 -0
- package/dist/resources.js.map +1 -0
- package/dist/reverification.d.ts +5 -0
- package/dist/reverification.d.ts.map +1 -0
- package/dist/reverification.js +54 -0
- package/dist/reverification.js.map +1 -0
- package/dist/types.d.ts +118 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +72 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +125 -0
- package/dist/ui.js.map +1 -0
- package/dist/user-profile.d.ts +6 -0
- package/dist/user-profile.d.ts.map +1 -0
- package/dist/user-profile.js +219 -0
- package/dist/user-profile.js.map +1 -0
- package/package.json +48 -4
- package/styles.css +517 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
export interface CursorPage<T> {
|
|
2
|
+
items: T[];
|
|
3
|
+
nextCursor: string | null;
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface DirectoryQuery {
|
|
7
|
+
limit?: number;
|
|
8
|
+
cursor?: string;
|
|
9
|
+
search?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface Page<T> {
|
|
12
|
+
items: T[];
|
|
13
|
+
page: number;
|
|
14
|
+
pageSize: number;
|
|
15
|
+
totalCount: number;
|
|
16
|
+
}
|
|
17
|
+
export interface Profile {
|
|
18
|
+
id: string;
|
|
19
|
+
firstName: string;
|
|
20
|
+
lastName: string;
|
|
21
|
+
imageUrl: string | null;
|
|
22
|
+
updatedAt: string;
|
|
23
|
+
publicMetadata: Record<string, unknown>;
|
|
24
|
+
unsafeMetadata: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export interface AccountSession {
|
|
27
|
+
id: string;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
lastSeenAt: string;
|
|
30
|
+
expiresAt: string;
|
|
31
|
+
revokedAt: string | null;
|
|
32
|
+
current: boolean;
|
|
33
|
+
device: string;
|
|
34
|
+
ipAddress: string | null;
|
|
35
|
+
status: "active" | "expired" | "revoked";
|
|
36
|
+
idleExpiresAt: string;
|
|
37
|
+
}
|
|
38
|
+
export interface UserApiKey {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
description: string | null;
|
|
42
|
+
keyPrefix: string;
|
|
43
|
+
scopes: string[];
|
|
44
|
+
expired: boolean;
|
|
45
|
+
expiresAt: string | null;
|
|
46
|
+
lastUsedAt: string | null;
|
|
47
|
+
createdAt: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SecurityState {
|
|
50
|
+
hasPassword: boolean;
|
|
51
|
+
passwordEnabled: boolean;
|
|
52
|
+
authenticatorEnabled: boolean;
|
|
53
|
+
authenticatorRequired: boolean;
|
|
54
|
+
recoveryCodesRemaining: number;
|
|
55
|
+
recentAuthenticationExpiresAt: string;
|
|
56
|
+
}
|
|
57
|
+
export interface Passkey {
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
rpId: string;
|
|
61
|
+
createdAt: string;
|
|
62
|
+
lastUsedAt: string | null;
|
|
63
|
+
}
|
|
64
|
+
export interface ConnectedAccount {
|
|
65
|
+
id: string;
|
|
66
|
+
providerId: string;
|
|
67
|
+
provider: string;
|
|
68
|
+
displayName: string;
|
|
69
|
+
email: string | null;
|
|
70
|
+
createdAt: string;
|
|
71
|
+
}
|
|
72
|
+
export interface SecurityProof {
|
|
73
|
+
password?: string;
|
|
74
|
+
code?: string;
|
|
75
|
+
requestId?: string;
|
|
76
|
+
emailCode?: string;
|
|
77
|
+
}
|
|
78
|
+
export interface VerificationRequest {
|
|
79
|
+
requestId: string;
|
|
80
|
+
message: string;
|
|
81
|
+
}
|
|
82
|
+
export interface AuthenticatorEnrollment {
|
|
83
|
+
enrollmentId: string;
|
|
84
|
+
setupKey: string;
|
|
85
|
+
authenticatorUri: string;
|
|
86
|
+
expiresAt: string;
|
|
87
|
+
}
|
|
88
|
+
export interface Organization {
|
|
89
|
+
id: string;
|
|
90
|
+
instanceId: string;
|
|
91
|
+
name: string;
|
|
92
|
+
slug: string;
|
|
93
|
+
imageUrl: string | null;
|
|
94
|
+
maxMemberships: number | null;
|
|
95
|
+
publicMetadata: Record<string, unknown>;
|
|
96
|
+
createdAt: string;
|
|
97
|
+
updatedAt: string;
|
|
98
|
+
}
|
|
99
|
+
/** Public metadata is read-only here: only your backend sets it, because your app may trust it. */
|
|
100
|
+
export interface OrganizationInput {
|
|
101
|
+
name: string;
|
|
102
|
+
slug: string;
|
|
103
|
+
imageUrl?: string | null;
|
|
104
|
+
expectedUpdatedAt?: string;
|
|
105
|
+
}
|
|
106
|
+
export interface OrganizationMember {
|
|
107
|
+
userId: string;
|
|
108
|
+
email: string;
|
|
109
|
+
roleId: string;
|
|
110
|
+
roleKey: string;
|
|
111
|
+
createdAt: string;
|
|
112
|
+
}
|
|
113
|
+
export interface OrganizationInvitation {
|
|
114
|
+
id: string;
|
|
115
|
+
email: string;
|
|
116
|
+
roleId: string;
|
|
117
|
+
status: string;
|
|
118
|
+
expiresAt: string;
|
|
119
|
+
createdAt: string;
|
|
120
|
+
}
|
|
121
|
+
export interface OrganizationRole {
|
|
122
|
+
id: string;
|
|
123
|
+
key: string;
|
|
124
|
+
name: string;
|
|
125
|
+
permissions: string[];
|
|
126
|
+
}
|
|
127
|
+
export type ResourceRequest = <T>(method: string, path: string, body?: unknown) => Promise<T>;
|
|
128
|
+
export declare class AccountResource {
|
|
129
|
+
private readonly request;
|
|
130
|
+
constructor(request: ResourceRequest);
|
|
131
|
+
get: () => Promise<Profile>;
|
|
132
|
+
update: (input: Pick<Profile, "firstName" | "lastName"> & {
|
|
133
|
+
imageUrl?: string | null;
|
|
134
|
+
unsafeMetadata: Record<string, unknown>;
|
|
135
|
+
expectedUpdatedAt: string;
|
|
136
|
+
}) => Promise<void>;
|
|
137
|
+
security: () => Promise<SecurityState>;
|
|
138
|
+
passkeys: () => Promise<Passkey[]>;
|
|
139
|
+
connections: () => Promise<ConnectedAccount[]>;
|
|
140
|
+
disconnect: (id: string) => Promise<void>;
|
|
141
|
+
removePasskey: (id: string) => Promise<void>;
|
|
142
|
+
requestReauthentication: () => Promise<VerificationRequest>;
|
|
143
|
+
reauthenticate: (proof: SecurityProof) => Promise<void>;
|
|
144
|
+
sessions: (page?: number, pageSize?: number) => Promise<Page<AccountSession>>;
|
|
145
|
+
revokeSession: (id: string) => Promise<void>;
|
|
146
|
+
revokeAllSessions: () => Promise<void>;
|
|
147
|
+
changePassword: (currentPassword: string, password: string, code?: string) => Promise<void>;
|
|
148
|
+
setPassword: (password: string, proof?: SecurityProof) => Promise<void>;
|
|
149
|
+
requestEmailChange: (identifier: string) => Promise<VerificationRequest>;
|
|
150
|
+
completeEmailChange: (requestId: string, code: string) => Promise<void>;
|
|
151
|
+
requestDeactivation: () => Promise<VerificationRequest>;
|
|
152
|
+
deactivate: (requestId: string, code: string) => Promise<void>;
|
|
153
|
+
enrollAuthenticator: (proof: SecurityProof) => Promise<AuthenticatorEnrollment>;
|
|
154
|
+
confirmAuthenticator: (enrollmentId: string, code: string) => Promise<{
|
|
155
|
+
recoveryCodes: string[];
|
|
156
|
+
}>;
|
|
157
|
+
removeAuthenticator: (proof: SecurityProof) => Promise<void>;
|
|
158
|
+
regenerateRecoveryCodes: (proof: SecurityProof) => Promise<{
|
|
159
|
+
recoveryCodes: string[];
|
|
160
|
+
}>;
|
|
161
|
+
apiKeys: () => Promise<UserApiKey[]>;
|
|
162
|
+
/** Creates an API key. It needs a recent sign-in, starts with no scopes or claims (your backend grants those) and
|
|
163
|
+
* stops working when the user's credentials change. The secret is returned only once. */
|
|
164
|
+
createApiKey: (input: {
|
|
165
|
+
name: string;
|
|
166
|
+
description?: string;
|
|
167
|
+
secondsUntilExpiration?: number;
|
|
168
|
+
}) => Promise<{
|
|
169
|
+
apiKey: UserApiKey;
|
|
170
|
+
secret: string;
|
|
171
|
+
}>;
|
|
172
|
+
revokeApiKey: (id: string, revocationReason?: string) => Promise<void>;
|
|
173
|
+
}
|
|
174
|
+
export declare class OrganizationResource {
|
|
175
|
+
private readonly request;
|
|
176
|
+
private readonly beginOperation;
|
|
177
|
+
constructor(request: ResourceRequest, beginOperation?: () => () => void);
|
|
178
|
+
listPage: (query?: DirectoryQuery) => Promise<CursorPage<Organization>>;
|
|
179
|
+
list: () => Promise<Organization[]>;
|
|
180
|
+
create: (input: OrganizationInput) => Promise<{
|
|
181
|
+
id: string;
|
|
182
|
+
}>;
|
|
183
|
+
setActive: (id: string | null) => Promise<void>;
|
|
184
|
+
update: (id: string, input: OrganizationInput & {
|
|
185
|
+
expectedUpdatedAt: string;
|
|
186
|
+
}) => Promise<void>;
|
|
187
|
+
membersPage: (id: string, query?: DirectoryQuery) => Promise<CursorPage<OrganizationMember>>;
|
|
188
|
+
members: (id: string) => Promise<OrganizationMember[]>;
|
|
189
|
+
invitationsPage: (id: string, query?: DirectoryQuery) => Promise<CursorPage<OrganizationInvitation>>;
|
|
190
|
+
invitations: (id: string) => Promise<OrganizationInvitation[]>;
|
|
191
|
+
roles: (id: string) => Promise<OrganizationRole[]>;
|
|
192
|
+
invite: (id: string, email: string, roleId: string) => Promise<{
|
|
193
|
+
id: string;
|
|
194
|
+
expiresAt: string;
|
|
195
|
+
}>;
|
|
196
|
+
acceptInvitation: (token: string) => Promise<void>;
|
|
197
|
+
revokeInvitation: (id: string, invitationId: string) => Promise<void>;
|
|
198
|
+
setMemberRole: (id: string, userId: string, roleId: string) => Promise<void>;
|
|
199
|
+
removeMember: (id: string, userId: string) => Promise<void>;
|
|
200
|
+
leave: (id: string) => Promise<void>;
|
|
201
|
+
/** Deletes the organization. Only an owner can; every membership and pending invitation ends with it. */
|
|
202
|
+
delete: (id: string) => Promise<void>;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
function directoryQuery(query = {}) {
|
|
2
|
+
const parameters = new URLSearchParams({
|
|
3
|
+
paged: "true",
|
|
4
|
+
limit: String(query.limit ?? 50),
|
|
5
|
+
});
|
|
6
|
+
if (query.cursor)
|
|
7
|
+
parameters.set("cursor", query.cursor);
|
|
8
|
+
if (query.search)
|
|
9
|
+
parameters.set("search", query.search);
|
|
10
|
+
return parameters.toString();
|
|
11
|
+
}
|
|
12
|
+
async function readDirectory(load, checkIdentity) {
|
|
13
|
+
const items = [];
|
|
14
|
+
let cursor;
|
|
15
|
+
const seen = new Set();
|
|
16
|
+
do {
|
|
17
|
+
checkIdentity();
|
|
18
|
+
const page = await load({ limit: 100, ...(cursor ? { cursor } : {}) });
|
|
19
|
+
checkIdentity();
|
|
20
|
+
items.push(...page.items);
|
|
21
|
+
if (!page.hasMore)
|
|
22
|
+
return items;
|
|
23
|
+
if (!page.nextCursor || seen.has(page.nextCursor))
|
|
24
|
+
throw new Error("The directory returned an invalid continuation.");
|
|
25
|
+
cursor = page.nextCursor;
|
|
26
|
+
seen.add(cursor);
|
|
27
|
+
} while (cursor);
|
|
28
|
+
return items;
|
|
29
|
+
}
|
|
30
|
+
const integerId = (value) => {
|
|
31
|
+
if (!/^[1-9]\d{0,9}$/.test(value) || Number(value) > 2_147_483_647)
|
|
32
|
+
throw new Error("Provide a valid resource ID.");
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
const publicId = (value) => {
|
|
36
|
+
if (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(value))
|
|
37
|
+
throw new Error("Provide a valid user ID.");
|
|
38
|
+
return value;
|
|
39
|
+
};
|
|
40
|
+
export class AccountResource {
|
|
41
|
+
request;
|
|
42
|
+
constructor(request) {
|
|
43
|
+
this.request = request;
|
|
44
|
+
}
|
|
45
|
+
get = () => this.request("GET", "/v1/account/profile");
|
|
46
|
+
update = (input) => this.request("PUT", "/v1/account/profile", input);
|
|
47
|
+
security = () => this.request("GET", "/v1/account/security");
|
|
48
|
+
passkeys = () => this.request("GET", "/v1/account/security/passkeys");
|
|
49
|
+
connections = () => this.request("GET", "/v1/account/security/connections");
|
|
50
|
+
disconnect = (id) => this.request("DELETE", `/v1/account/security/connections/${integerId(id)}`);
|
|
51
|
+
removePasskey = (id) => this.request("DELETE", `/v1/account/security/passkeys/${integerId(id)}`);
|
|
52
|
+
requestReauthentication = () => this.request("POST", "/v1/account/security/reauthenticate/request");
|
|
53
|
+
reauthenticate = (proof) => this.request("POST", "/v1/account/security/reauthenticate", proof);
|
|
54
|
+
sessions = (page = 1, pageSize = 25) => this.request("GET", `/v1/account/sessions?page=${page}&pageSize=${pageSize}`);
|
|
55
|
+
revokeSession = (id) => {
|
|
56
|
+
if (!/^[1-9]\d{0,18}$/.test(id))
|
|
57
|
+
throw new Error("Provide a valid session ID.");
|
|
58
|
+
return this.request("POST", `/v1/account/sessions/${id}/revoke`);
|
|
59
|
+
};
|
|
60
|
+
revokeAllSessions = () => this.request("POST", "/v1/account/sessions/revoke-all");
|
|
61
|
+
changePassword = (currentPassword, password, code) => this.request("POST", "/v1/account/password", {
|
|
62
|
+
currentPassword,
|
|
63
|
+
password,
|
|
64
|
+
...(code ? { code } : {}),
|
|
65
|
+
});
|
|
66
|
+
setPassword = (password, proof = {}) => this.request("POST", "/v1/account/password", {
|
|
67
|
+
password,
|
|
68
|
+
...(proof.password ? { currentPassword: proof.password } : {}),
|
|
69
|
+
...(proof.code ? { code: proof.code } : {}),
|
|
70
|
+
...(proof.requestId ? { requestId: proof.requestId } : {}),
|
|
71
|
+
...(proof.emailCode ? { emailCode: proof.emailCode } : {}),
|
|
72
|
+
});
|
|
73
|
+
requestEmailChange = (identifier) => this.request("POST", "/v1/account/email/request", { identifier });
|
|
74
|
+
completeEmailChange = (requestId, code) => this.request("POST", "/v1/account/email/complete", { requestId, code });
|
|
75
|
+
requestDeactivation = () => this.request("POST", "/v1/account/deletion/request");
|
|
76
|
+
deactivate = (requestId, code) => this.request("POST", "/v1/account/deletion/complete", {
|
|
77
|
+
requestId,
|
|
78
|
+
code,
|
|
79
|
+
});
|
|
80
|
+
enrollAuthenticator = (proof) => this.request("POST", "/v1/account/security/authenticator/enroll", proof);
|
|
81
|
+
confirmAuthenticator = (enrollmentId, code) => this.request("POST", "/v1/account/security/authenticator/confirm", {
|
|
82
|
+
enrollmentId,
|
|
83
|
+
code,
|
|
84
|
+
});
|
|
85
|
+
removeAuthenticator = (proof) => this.request("POST", "/v1/account/security/authenticator/remove", proof);
|
|
86
|
+
regenerateRecoveryCodes = (proof) => this.request("POST", "/v1/account/security/recovery-codes", proof);
|
|
87
|
+
apiKeys = () => this.request("GET", "/v1/account/api-keys");
|
|
88
|
+
/** Creates an API key. It needs a recent sign-in, starts with no scopes or claims (your backend grants those) and
|
|
89
|
+
* stops working when the user's credentials change. The secret is returned only once. */
|
|
90
|
+
createApiKey = (input) => this.request("POST", "/v1/account/api-keys", input);
|
|
91
|
+
revokeApiKey = (id, revocationReason) => {
|
|
92
|
+
if (!/^[1-9]\d{0,18}$/.test(id))
|
|
93
|
+
throw new Error("Provide a valid API key ID.");
|
|
94
|
+
return this.request("POST", `/v1/account/api-keys/${id}/revoke`, {
|
|
95
|
+
revocationReason: revocationReason ?? null,
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export class OrganizationResource {
|
|
100
|
+
request;
|
|
101
|
+
beginOperation;
|
|
102
|
+
constructor(request, beginOperation = () => () => { }) {
|
|
103
|
+
this.request = request;
|
|
104
|
+
this.beginOperation = beginOperation;
|
|
105
|
+
}
|
|
106
|
+
listPage = (query = {}) => this.request("GET", "/v1/account/organizations?" + directoryQuery(query));
|
|
107
|
+
list = () => readDirectory((query) => this.listPage(query), this.beginOperation());
|
|
108
|
+
create = (input) => this.request("POST", "/v1/account/organizations", input);
|
|
109
|
+
setActive = (id) => this.request("PUT", "/v1/account/organizations/active", {
|
|
110
|
+
organizationId: id === null ? null : Number(integerId(id)),
|
|
111
|
+
});
|
|
112
|
+
update = (id, input) => this.request("PUT", `/v1/account/organizations/${integerId(id)}`, input);
|
|
113
|
+
membersPage = (id, query = {}) => this.request("GET", `/v1/account/organizations/${integerId(id)}/memberships?${directoryQuery(query)}`);
|
|
114
|
+
members = (id) => readDirectory((query) => this.membersPage(id, query), this.beginOperation());
|
|
115
|
+
invitationsPage = (id, query = {}) => this.request("GET", `/v1/account/organizations/${integerId(id)}/invitations?${directoryQuery(query)}`);
|
|
116
|
+
invitations = (id) => readDirectory((query) => this.invitationsPage(id, query), this.beginOperation());
|
|
117
|
+
roles = (id) => this.request("GET", `/v1/account/organizations/${integerId(id)}/roles`);
|
|
118
|
+
invite = (id, email, roleId) => this.request("POST", `/v1/account/organizations/${integerId(id)}/invitations`, { email, roleId: Number(integerId(roleId)) });
|
|
119
|
+
acceptInvitation = (token) => this.request("POST", "/v1/account/organizations/accept-invitation", {
|
|
120
|
+
token,
|
|
121
|
+
});
|
|
122
|
+
revokeInvitation = (id, invitationId) => this.request("DELETE", `/v1/account/organizations/${integerId(id)}/invitations/${integerId(invitationId)}`);
|
|
123
|
+
setMemberRole = (id, userId, roleId) => this.request("PUT", `/v1/account/organizations/${integerId(id)}/memberships/${publicId(userId)}`, { roleId: Number(integerId(roleId)) });
|
|
124
|
+
removeMember = (id, userId) => this.request("DELETE", `/v1/account/organizations/${integerId(id)}/memberships/${publicId(userId)}`);
|
|
125
|
+
leave = (id) => this.request("POST", `/v1/account/organizations/${integerId(id)}/leave`);
|
|
126
|
+
/** Deletes the organization. Only an owner can; every membership and pending invitation ends with it. */
|
|
127
|
+
delete = (id) => this.request("DELETE", `/v1/account/organizations/${integerId(id)}`);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverification.d.ts","sourceRoot":"","sources":["../src/reverification.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,+BAqJvE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState, useSyncExternalStore, } from "react";
|
|
3
|
+
import { useAction } from "./async-state.js";
|
|
4
|
+
export function ReverificationDialog({ client }) {
|
|
5
|
+
const required = useSyncExternalStore(client.subscribeReverification, client.getReverificationSnapshot, client.getServerReverificationSnapshot);
|
|
6
|
+
const dialog = useRef(null);
|
|
7
|
+
const form = useRef(null);
|
|
8
|
+
const id = useId();
|
|
9
|
+
const action = useAction();
|
|
10
|
+
const [requestId, setRequestId] = useState(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const element = dialog.current;
|
|
13
|
+
if (!element)
|
|
14
|
+
return;
|
|
15
|
+
if (required && !element.open) {
|
|
16
|
+
action.reset();
|
|
17
|
+
element.showModal();
|
|
18
|
+
}
|
|
19
|
+
if (!required && element.open) {
|
|
20
|
+
element.close();
|
|
21
|
+
form.current?.reset();
|
|
22
|
+
setRequestId(null);
|
|
23
|
+
}
|
|
24
|
+
}, [required, action.reset]);
|
|
25
|
+
const submit = (event) => {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
const element = event.currentTarget;
|
|
28
|
+
const fields = new FormData(element);
|
|
29
|
+
const code = String(fields.get("factor") ?? "");
|
|
30
|
+
void action.run(async () => {
|
|
31
|
+
await client.completeReverification({
|
|
32
|
+
...(requestId
|
|
33
|
+
? {
|
|
34
|
+
requestId,
|
|
35
|
+
emailCode: String(fields.get("emailCode") ?? ""),
|
|
36
|
+
}
|
|
37
|
+
: { password: String(fields.get("password") ?? "") }),
|
|
38
|
+
...(code ? { code } : {}),
|
|
39
|
+
});
|
|
40
|
+
element.reset();
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
return (_jsxs("dialog", { ref: dialog, className: "pisti-ui pisti-reverification", "aria-labelledby": id + "-title", onCancel: () => client.cancelReverification(), onClose: () => {
|
|
44
|
+
if (client.getReverificationSnapshot())
|
|
45
|
+
client.cancelReverification();
|
|
46
|
+
}, children: [_jsx("h2", { id: id + "-title", children: "Verify your identity" }), _jsx("p", { className: "pisti-muted", children: "Confirm it's you before continuing with this action." }), _jsx("form", { ref: form, className: "pisti-form", onSubmit: submit, children: _jsxs("fieldset", { disabled: action.isPending, children: [requestId ? (_jsxs("label", { htmlFor: id + "-email", children: ["Email verification code", _jsx("input", { id: id + "-email", name: "emailCode", inputMode: "numeric", pattern: "[0-9]{6}", maxLength: 6, autoComplete: "one-time-code", required: true })] })) : (_jsxs("label", { htmlFor: id + "-password", children: ["Current password", _jsx("input", { id: id + "-password", name: "password", type: "password", maxLength: 128, autoComplete: "current-password", required: true })] })), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => void action.run(async () => {
|
|
47
|
+
setRequestId((await client.account.requestReauthentication()).requestId);
|
|
48
|
+
}), children: requestId
|
|
49
|
+
? "Send another email code"
|
|
50
|
+
: "Use an email code instead" }), _jsxs("label", { htmlFor: id + "-factor", children: ["Authenticator or recovery code", _jsx("input", { id: id + "-factor", name: "factor", maxLength: 64, autoComplete: "one-time-code" })] }), _jsx("p", { className: "pisti-muted", children: "Required if you have enrolled an authenticator." }), action.error && (_jsx("p", { className: "pisti-notice pisti-error", role: "alert", children: action.error.message })), _jsxs("div", { className: "pisti-actions", children: [_jsx("button", { type: "submit", children: action.isPending
|
|
51
|
+
? "Verifying…"
|
|
52
|
+
: "Verify and continue" }), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => client.cancelReverification(), children: "Cancel" })] })] }) }), _jsx("button", { type: "button", className: "pisti-secondary", disabled: action.isPending, onClick: () => void action.run(() => client.reauthenticate()), children: "Use a passkey or another method" }), _jsx("p", { className: "pisti-muted", children: "Using another sign-in method returns you to the application, where you can retry your action." })] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=reverification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverification.js","sourceRoot":"","sources":["../src/reverification.tsx"],"names":[],"mappings":";AAAA,OAAO,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,oBAAoB,GAEvB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAA2B;IACpE,MAAM,QAAQ,GAAG,oBAAoB,CACjC,MAAM,CAAC,uBAAuB,EAC9B,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,+BAA+B,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,SAAS,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,CAAC,KAAiC,EAAE,EAAE;QACjD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,MAAM,CAAC,sBAAsB,CAAC;gBAChC,GAAG,CAAC,SAAS;oBACT,CAAC,CAAC;wBACI,SAAS;wBACT,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;qBACnD;oBACH,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,CACH,kBACI,GAAG,EAAE,MAAM,EACX,SAAS,EAAC,+BAA+B,qBACxB,EAAE,GAAG,QAAQ,EAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAC7C,OAAO,EAAE,GAAG,EAAE;YACV,IAAI,MAAM,CAAC,yBAAyB,EAAE;gBAClC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACtC,CAAC,aAED,aAAI,EAAE,EAAE,EAAE,GAAG,QAAQ,qCAA2B,EAChD,YAAG,SAAS,EAAC,aAAa,qEAEtB,EACJ,eAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,YAAY,EAAC,QAAQ,EAAE,MAAM,YACpD,oBAAU,QAAQ,EAAE,MAAM,CAAC,SAAS,aAC/B,SAAS,CAAC,CAAC,CAAC,CACT,iBAAO,OAAO,EAAE,EAAE,GAAG,QAAQ,wCAEzB,gBACI,EAAE,EAAE,EAAE,GAAG,QAAQ,EACjB,IAAI,EAAC,WAAW,EAChB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAC,UAAU,EAClB,SAAS,EAAE,CAAC,EACZ,YAAY,EAAC,eAAe,EAC5B,QAAQ,SACV,IACE,CACX,CAAC,CAAC,CAAC,CACA,iBAAO,OAAO,EAAE,EAAE,GAAG,WAAW,iCAE5B,gBACI,EAAE,EAAE,EAAE,GAAG,WAAW,EACpB,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,GAAG,EACd,YAAY,EAAC,kBAAkB,EAC/B,QAAQ,SACV,IACE,CACX,EACD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,GAAG,EAAE,CACV,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gCACvB,YAAY,CACR,CACI,MAAM,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,CACjD,CAAC,SAAS,CACd,CAAC;4BACN,CAAC,CAAC,YAGL,SAAS;gCACN,CAAC,CAAC,yBAAyB;gCAC3B,CAAC,CAAC,2BAA2B,GAC5B,EACT,iBAAO,OAAO,EAAE,EAAE,GAAG,SAAS,+CAE1B,gBACI,EAAE,EAAE,EAAE,GAAG,SAAS,EAClB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,EACb,YAAY,EAAC,eAAe,GAC9B,IACE,EACR,YAAG,SAAS,EAAC,aAAa,gEAEtB,EACH,MAAM,CAAC,KAAK,IAAI,CACb,YAAG,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAC,OAAO,YAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,GACrB,CACP,EACD,eAAK,SAAS,EAAC,eAAe,aAC1B,iBAAQ,IAAI,EAAC,QAAQ,YAChB,MAAM,CAAC,SAAS;wCACb,CAAC,CAAC,YAAY;wCACd,CAAC,CAAC,qBAAqB,GACtB,EACT,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,uBAGvC,IACP,IACC,GACR,EACP,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iBAAiB,EAC3B,QAAQ,EAAE,MAAM,CAAC,SAAS,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,gDAGxD,EACT,YAAG,SAAS,EAAC,aAAa,8GAGtB,IACC,CACZ,CAAC;AACN,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export interface EmailAddress {
|
|
2
|
+
emailAddress: string;
|
|
3
|
+
}
|
|
4
|
+
export interface PistiUser {
|
|
5
|
+
id: string;
|
|
6
|
+
firstName: string;
|
|
7
|
+
lastName: string;
|
|
8
|
+
fullName: string | null;
|
|
9
|
+
primaryEmailAddress: EmailAddress | null;
|
|
10
|
+
imageUrl: string | null;
|
|
11
|
+
hasImage: boolean;
|
|
12
|
+
issuer: string;
|
|
13
|
+
authenticatedAt: number | null;
|
|
14
|
+
mfaAuthenticatedAt: number | null;
|
|
15
|
+
instanceId: string;
|
|
16
|
+
organizationId: string | null;
|
|
17
|
+
organizationSlug: string | null;
|
|
18
|
+
organizationRole: string | null;
|
|
19
|
+
organizationPermissions: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export interface RedirectOptions {
|
|
22
|
+
/** Always go here afterwards, ignoring `redirect_url`. */
|
|
23
|
+
forceRedirectUrl?: string | undefined;
|
|
24
|
+
/** Go here afterwards when there is no `redirect_url`. */
|
|
25
|
+
fallbackRedirectUrl?: string | undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Navigation settings, named like Clerk's. Each also reads a `VITE_PISTI_*` environment variable,
|
|
29
|
+
* for example `VITE_PISTI_SIGN_IN_URL`, and falls back to Domains & paths in the console.
|
|
30
|
+
*/
|
|
31
|
+
export interface PistiNavigationOptions {
|
|
32
|
+
/** Your sign-in page, for example "/sign-in". Without one, sign-in opens in a modal. */
|
|
33
|
+
signInUrl?: string | undefined;
|
|
34
|
+
/** Your sign-up page. */
|
|
35
|
+
signUpUrl?: string | undefined;
|
|
36
|
+
/** After sign-in when there is no `redirect_url`. Defaults to "/". */
|
|
37
|
+
signInFallbackRedirectUrl?: string | undefined;
|
|
38
|
+
/** After sign-up when there is no `redirect_url`. Defaults to "/". */
|
|
39
|
+
signUpFallbackRedirectUrl?: string | undefined;
|
|
40
|
+
/** Always go here after sign-in. */
|
|
41
|
+
signInForceRedirectUrl?: string | undefined;
|
|
42
|
+
/** Always go here after sign-up. */
|
|
43
|
+
signUpForceRedirectUrl?: string | undefined;
|
|
44
|
+
/** After sign-out. Defaults to "/". */
|
|
45
|
+
afterSignOutUrl?: string | undefined;
|
|
46
|
+
/** Other origins a `redirect_url` may point to. Same-origin URLs are always allowed. */
|
|
47
|
+
allowedRedirectOrigins?: Array<string | RegExp> | undefined;
|
|
48
|
+
/** Your router's push navigation, so redirects don't reload the page. */
|
|
49
|
+
routerPush?: ((to: string) => unknown) | undefined;
|
|
50
|
+
/** Your router's replace navigation. Defaults to routerPush. */
|
|
51
|
+
routerReplace?: ((to: string) => unknown) | undefined;
|
|
52
|
+
}
|
|
53
|
+
export interface PistiClientOptions extends PistiNavigationOptions {
|
|
54
|
+
/** Defaults to the `VITE_PISTI_PUBLISHABLE_KEY` (or `PISTI_PUBLISHABLE_KEY`) environment variable. */
|
|
55
|
+
publishableKey?: string | undefined;
|
|
56
|
+
}
|
|
57
|
+
export type PistiModal = "sign-in" | "sign-up" | "user-profile" | null;
|
|
58
|
+
export interface AuthSnapshot {
|
|
59
|
+
status: "loading" | "signedIn" | "signedOut" | "error";
|
|
60
|
+
isLoaded: boolean;
|
|
61
|
+
isSignedIn: boolean;
|
|
62
|
+
user: PistiUser | null;
|
|
63
|
+
sessionId: string | null;
|
|
64
|
+
/** Claims of the latest session token. */
|
|
65
|
+
sessionClaims: Readonly<Record<string, unknown>> | null;
|
|
66
|
+
error: Error | null;
|
|
67
|
+
}
|
|
68
|
+
export interface EnvironmentConfig {
|
|
69
|
+
applicationName: string;
|
|
70
|
+
environment: "development" | "staging" | "production";
|
|
71
|
+
signIn: {
|
|
72
|
+
password: boolean;
|
|
73
|
+
emailCode: boolean;
|
|
74
|
+
};
|
|
75
|
+
signUp: {
|
|
76
|
+
enabled: boolean;
|
|
77
|
+
password: boolean;
|
|
78
|
+
};
|
|
79
|
+
requireMfa: boolean;
|
|
80
|
+
paths: {
|
|
81
|
+
signInUrl: string | null;
|
|
82
|
+
signUpUrl: string | null;
|
|
83
|
+
afterSignInUrl: string | null;
|
|
84
|
+
afterSignUpUrl: string | null;
|
|
85
|
+
afterSignOutUrl: string | null;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export type SignInResult = {
|
|
89
|
+
status: "complete";
|
|
90
|
+
recoveryCodes?: string[] | null;
|
|
91
|
+
} | {
|
|
92
|
+
status: "needs_second_factor";
|
|
93
|
+
attemptId: string;
|
|
94
|
+
enrollmentRequired: boolean;
|
|
95
|
+
};
|
|
96
|
+
export interface SecondFactorDetails {
|
|
97
|
+
enrollmentRequired: boolean;
|
|
98
|
+
setupKey: string | null;
|
|
99
|
+
authenticatorUri: string | null;
|
|
100
|
+
expiresAt: string;
|
|
101
|
+
/** After a password sign-in, adding an authenticator also needs the code Pisti emailed to the user. */
|
|
102
|
+
emailCodeRequired: boolean;
|
|
103
|
+
}
|
|
104
|
+
export interface SignUpInput {
|
|
105
|
+
requestId: string;
|
|
106
|
+
code: string;
|
|
107
|
+
firstName?: string;
|
|
108
|
+
lastName?: string;
|
|
109
|
+
password?: string;
|
|
110
|
+
}
|
|
111
|
+
export interface GetTokenOptions {
|
|
112
|
+
skipCache?: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface PermissionCheck {
|
|
115
|
+
permission?: string;
|
|
116
|
+
role?: string;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
import { useAction } from "./async-state.js";
|
|
3
|
+
export { useAction, useResource } from "./async-state.js";
|
|
4
|
+
export declare function ErrorNotice({ error, retry, }: {
|
|
5
|
+
error: Error | null;
|
|
6
|
+
retry?: () => void;
|
|
7
|
+
}): import("react").JSX.Element | null;
|
|
8
|
+
export declare function ActionNotice({ action, }: {
|
|
9
|
+
action: ReturnType<typeof useAction>;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
export declare function Loading(): import("react").JSX.Element;
|
|
12
|
+
export type ShowWhen = "signed-in" | "signed-out" | {
|
|
13
|
+
permission: string;
|
|
14
|
+
} | {
|
|
15
|
+
role: string;
|
|
16
|
+
} | ((has: (check: {
|
|
17
|
+
permission?: string;
|
|
18
|
+
role?: string;
|
|
19
|
+
}) => boolean) => boolean);
|
|
20
|
+
/**
|
|
21
|
+
* Renders its children when the condition holds, like Clerk's `<Show>`. It only hides UI; check
|
|
22
|
+
* access on your server too.
|
|
23
|
+
*
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <Show when="signed-in"><UserButton /></Show>
|
|
26
|
+
* <Show when={{ permission: "invoices:write" }} fallback={<p>No access</p>}>…</Show>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function Show({ when, fallback, children }: {
|
|
30
|
+
when: ShowWhen;
|
|
31
|
+
fallback?: ReactNode;
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}): ReactNode;
|
|
34
|
+
type TriggerProps = {
|
|
35
|
+
children?: ReactNode;
|
|
36
|
+
};
|
|
37
|
+
type AuthButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onClick" | "children"> & TriggerProps & {
|
|
38
|
+
/** "redirect" (the default when you have a sign-in page) or "modal". */
|
|
39
|
+
mode?: "modal" | "redirect";
|
|
40
|
+
forceRedirectUrl?: string;
|
|
41
|
+
fallbackRedirectUrl?: string;
|
|
42
|
+
};
|
|
43
|
+
/** Opens sign-in, like Clerk's `<SignInButton>`. Pass your own button as the child to style it. */
|
|
44
|
+
export declare function SignInButton({ mode, forceRedirectUrl, fallbackRedirectUrl, children, ...props }: AuthButtonProps): import("react").JSX.Element;
|
|
45
|
+
/** Opens sign-up, like Clerk's `<SignUpButton>`. */
|
|
46
|
+
export declare function SignUpButton({ mode, forceRedirectUrl, fallbackRedirectUrl, children, ...props }: AuthButtonProps): import("react").JSX.Element;
|
|
47
|
+
/** Sends visitors to sign-in as soon as it renders. Use it inside `<Show when="signed-out">`. */
|
|
48
|
+
export declare function RedirectToSignIn(): null;
|
|
49
|
+
/** Sends visitors to sign-up as soon as it renders. */
|
|
50
|
+
export declare function RedirectToSignUp(): null;
|
|
51
|
+
/** Renders its children once Pisti knows whether someone is signed in, like `<ClerkLoaded>`. */
|
|
52
|
+
export declare function PistiLoaded({ children }: {
|
|
53
|
+
children: ReactNode;
|
|
54
|
+
}): ReactNode;
|
|
55
|
+
/** Renders its children until Pisti knows whether someone is signed in, like `<ClerkLoading>`. */
|
|
56
|
+
export declare function PistiLoading({ children }: {
|
|
57
|
+
children: ReactNode;
|
|
58
|
+
}): ReactNode;
|
|
59
|
+
/** Signs out, then goes to `redirectUrl` or the provider's `afterSignOutUrl`, like Clerk's `<SignOutButton>`. */
|
|
60
|
+
export declare function SignOutButton({ children, redirectUrl, ...props }: Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onClick" | "children"> & TriggerProps & {
|
|
61
|
+
redirectUrl?: string;
|
|
62
|
+
}): import("react").JSX.Element;
|
|
63
|
+
/** An avatar with the account menu, like Clerk's `<UserButton>`. */
|
|
64
|
+
export declare function UserButton({ userProfileMode, userProfileUrl, showName, className, }: {
|
|
65
|
+
/** "modal" opens <UserProfile /> in a dialog; "navigation" goes to `userProfileUrl`. */
|
|
66
|
+
userProfileMode?: "modal" | "navigation";
|
|
67
|
+
userProfileUrl?: string;
|
|
68
|
+
/** Shows the user's name next to the avatar. */
|
|
69
|
+
showName?: boolean;
|
|
70
|
+
className?: string;
|
|
71
|
+
}): import("react").JSX.Element | null;
|
|
72
|
+
//# sourceMappingURL=ui.d.ts.map
|