@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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -2
  3. package/dist/api-keys.d.ts +8 -0
  4. package/dist/api-keys.d.ts.map +1 -0
  5. package/dist/api-keys.js +54 -0
  6. package/dist/api-keys.js.map +1 -0
  7. package/dist/async-state.d.ts +14 -0
  8. package/dist/async-state.d.ts.map +1 -0
  9. package/dist/async-state.js +81 -0
  10. package/dist/async-state.js.map +1 -0
  11. package/dist/auth.d.ts +23 -0
  12. package/dist/auth.d.ts.map +1 -0
  13. package/dist/auth.js +297 -0
  14. package/dist/auth.js.map +1 -0
  15. package/dist/client.d.ts +152 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +633 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/context.d.ts +94 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +145 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +9 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/organizations.d.ts +16 -0
  28. package/dist/organizations.d.ts.map +1 -0
  29. package/dist/organizations.js +169 -0
  30. package/dist/organizations.js.map +1 -0
  31. package/dist/resources.d.ts +204 -0
  32. package/dist/resources.d.ts.map +1 -0
  33. package/dist/resources.js +129 -0
  34. package/dist/resources.js.map +1 -0
  35. package/dist/reverification.d.ts +5 -0
  36. package/dist/reverification.d.ts.map +1 -0
  37. package/dist/reverification.js +54 -0
  38. package/dist/reverification.js.map +1 -0
  39. package/dist/types.d.ts +118 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/ui.d.ts +72 -0
  44. package/dist/ui.d.ts.map +1 -0
  45. package/dist/ui.js +125 -0
  46. package/dist/ui.js.map +1 -0
  47. package/dist/user-profile.d.ts +6 -0
  48. package/dist/user-profile.d.ts.map +1 -0
  49. package/dist/user-profile.js +219 -0
  50. package/dist/user-profile.js.map +1 -0
  51. package/package.json +48 -4
  52. package/styles.css +517 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,oBAAoB,EAGzB,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,KAAK,GACR,EAAE;IACC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,sCAWA;AACD,wBAAgB,YAAY,CAAC,EACzB,MAAM,GACT,EAAE;IACC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CACxC,+BAWA;AACD,wBAAgB,OAAO,gCAMtB;AACD,MAAM,MAAM,QAAQ,GACd,WAAW,GACX,YAAY,GACZ;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,KAAK,OAAO,CAAC,CAAC;AAErF;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,QAAe,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,aAWtH;AAED,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AA8B7C,KAAK,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,GACxF,YAAY,GAAG;IACX,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AASN,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAehH;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAehH;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,SAI/B;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,SAI/B;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,aAEhE;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,aAEjE;AAED,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,EAC1B,QAAQ,EACR,WAAW,EACX,GAAG,KAAK,EACX,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,+BAqBjH;AAOD,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,EACvB,eAAe,EACf,cAAc,EACd,QAAgB,EAChB,SAAc,GACjB,EAAE;IACC,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,sCAmCA"}
package/dist/ui.js ADDED
@@ -0,0 +1,125 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cloneElement, isValidElement, useEffect, } from "react";
3
+ import { useAuth, usePisti } from "./context.js";
4
+ import { useAction } from "./async-state.js";
5
+ export { useAction, useResource } from "./async-state.js";
6
+ export function ErrorNotice({ error, retry, }) {
7
+ return error ? (_jsxs("div", { className: "pisti-notice pisti-error", role: "alert", children: [error.message, retry && (_jsx("button", { type: "button", onClick: retry, children: "Try again" }))] })) : null;
8
+ }
9
+ export function ActionNotice({ action, }) {
10
+ return (_jsxs(_Fragment, { children: [_jsx(ErrorNotice, { error: action.error }), action.success && (_jsx("p", { className: "pisti-notice", role: "status", children: action.success }))] }));
11
+ }
12
+ export function Loading() {
13
+ return (_jsx("p", { role: "status", "aria-live": "polite", children: "Loading\u2026" }));
14
+ }
15
+ /**
16
+ * Renders its children when the condition holds, like Clerk's `<Show>`. It only hides UI; check
17
+ * access on your server too.
18
+ *
19
+ * ```tsx
20
+ * <Show when="signed-in"><UserButton /></Show>
21
+ * <Show when={{ permission: "invoices:write" }} fallback={<p>No access</p>}>…</Show>
22
+ * ```
23
+ */
24
+ export function Show({ when, fallback = null, children }) {
25
+ const auth = useAuth();
26
+ if (!auth.isLoaded)
27
+ return null;
28
+ if (when === "signed-out")
29
+ return !auth.isSignedIn && !auth.error ? children : fallback;
30
+ if (!auth.isSignedIn)
31
+ return fallback;
32
+ if (when === "signed-in")
33
+ return children;
34
+ const allowed = typeof when === "function"
35
+ ? when((check) => auth.has(check))
36
+ : auth.has("permission" in when ? { permission: when.permission } : { role: when.role });
37
+ return allowed ? children : fallback;
38
+ }
39
+ /** Renders the child element with the click handler, or a plain button around text. */
40
+ function Trigger({ children, label, onClick, props, }) {
41
+ if (isValidElement(children)) {
42
+ const child = children;
43
+ return cloneElement(child, {
44
+ onClick: (event) => {
45
+ child.props.onClick?.(event);
46
+ if (!event.defaultPrevented)
47
+ onClick();
48
+ },
49
+ });
50
+ }
51
+ return (_jsx("button", { ...props, type: "button", onClick: onClick, children: children ?? label }));
52
+ }
53
+ function redirectsFrom(props) {
54
+ return {
55
+ ...(props.forceRedirectUrl ? { forceRedirectUrl: props.forceRedirectUrl } : {}),
56
+ ...(props.fallbackRedirectUrl ? { fallbackRedirectUrl: props.fallbackRedirectUrl } : {}),
57
+ };
58
+ }
59
+ /** Opens sign-in, like Clerk's `<SignInButton>`. Pass your own button as the child to style it. */
60
+ export function SignInButton({ mode, forceRedirectUrl, fallbackRedirectUrl, children, ...props }) {
61
+ const client = usePisti();
62
+ return (_jsx(Trigger, { label: "Sign in", props: props, onClick: () => (mode ?? (client.signInUrl ? "redirect" : "modal")) === "redirect" && client.signInUrl
63
+ ? client.redirectToSignIn()
64
+ : client.openSignIn(redirectsFrom({ forceRedirectUrl, fallbackRedirectUrl })), children: children }));
65
+ }
66
+ /** Opens sign-up, like Clerk's `<SignUpButton>`. */
67
+ export function SignUpButton({ mode, forceRedirectUrl, fallbackRedirectUrl, children, ...props }) {
68
+ const client = usePisti();
69
+ return (_jsx(Trigger, { label: "Sign up", props: props, onClick: () => (mode ?? (client.signUpUrl ? "redirect" : "modal")) === "redirect" && client.signUpUrl
70
+ ? client.redirectToSignUp()
71
+ : client.openSignUp(redirectsFrom({ forceRedirectUrl, fallbackRedirectUrl })), children: children }));
72
+ }
73
+ /** Sends visitors to sign-in as soon as it renders. Use it inside `<Show when="signed-out">`. */
74
+ export function RedirectToSignIn() {
75
+ const client = usePisti();
76
+ useEffect(() => client.redirectToSignIn(), [client]);
77
+ return null;
78
+ }
79
+ /** Sends visitors to sign-up as soon as it renders. */
80
+ export function RedirectToSignUp() {
81
+ const client = usePisti();
82
+ useEffect(() => client.redirectToSignUp(), [client]);
83
+ return null;
84
+ }
85
+ /** Renders its children once Pisti knows whether someone is signed in, like `<ClerkLoaded>`. */
86
+ export function PistiLoaded({ children }) {
87
+ return useAuth().isLoaded ? children : null;
88
+ }
89
+ /** Renders its children until Pisti knows whether someone is signed in, like `<ClerkLoading>`. */
90
+ export function PistiLoading({ children }) {
91
+ return useAuth().isLoaded ? null : children;
92
+ }
93
+ /** Signs out, then goes to `redirectUrl` or the provider's `afterSignOutUrl`, like Clerk's `<SignOutButton>`. */
94
+ export function SignOutButton({ children, redirectUrl, ...props }) {
95
+ const client = usePisti();
96
+ const action = useAction();
97
+ return (_jsxs(_Fragment, { children: [_jsx(Trigger, { label: action.isPending ? "Signing out…" : "Sign out", props: { ...props, disabled: Boolean(props.disabled) || action.isPending }, onClick: () => void action.run(async () => {
98
+ await client.signOut();
99
+ if (redirectUrl)
100
+ client.navigate(redirectUrl);
101
+ else
102
+ client.redirectAfterSignOut();
103
+ }), children: children }), _jsx(ErrorNotice, { error: action.error })] }));
104
+ }
105
+ function initials(user) {
106
+ const letters = (user.firstName[0] ?? "") + (user.lastName[0] ?? "");
107
+ return (letters || user.primaryEmailAddress?.emailAddress[0] || "?").toUpperCase();
108
+ }
109
+ /** An avatar with the account menu, like Clerk's `<UserButton>`. */
110
+ export function UserButton({ userProfileMode, userProfileUrl, showName = false, className = "", }) {
111
+ const client = usePisti();
112
+ const { user, isLoaded, isSignedIn } = useAuth();
113
+ if (!isLoaded || !isSignedIn || !user)
114
+ return null;
115
+ const email = user.primaryEmailAddress?.emailAddress;
116
+ const target = (userProfileMode ?? (userProfileUrl ? "navigation" : "modal")) === "navigation" ? userProfileUrl : undefined;
117
+ return (_jsxs("details", { className: "pisti-ui pisti-user-button " + className, children: [_jsxs("summary", { "aria-label": "Open account menu", children: [_jsx("span", { className: "pisti-avatar", children: user.imageUrl ? _jsx("img", { src: user.imageUrl, alt: "" }) : _jsx("span", { "aria-hidden": "true", children: initials(user) }) }), showName && _jsx("span", { className: "pisti-user-name", children: user.fullName ?? email })] }), _jsxs("div", { className: "pisti-menu", role: "menu", children: [_jsxs("div", { className: "pisti-menu-identity", children: [_jsx("strong", { children: user.fullName || email }), user.fullName && _jsx("span", { className: "pisti-muted", children: email })] }), _jsx("button", { type: "button", role: "menuitem", className: "pisti-menu-item", onClick: (event) => {
118
+ event.currentTarget.closest("details")?.removeAttribute("open");
119
+ if (target)
120
+ client.navigate(target);
121
+ else
122
+ client.openUserProfile();
123
+ }, children: "Manage account" }), _jsx(SignOutButton, { role: "menuitem", className: "pisti-menu-item" })] })] }));
124
+ }
125
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function UserProfile({ className, apiKeys, }: {
2
+ className?: string;
3
+ /** Adds an "API keys" page with <APIKeys />. */
4
+ apiKeys?: boolean;
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../src/user-profile.tsx"],"names":[],"mappings":"AA+zBA,wBAAgB,WAAW,CAAC,EACxB,SAAc,EACd,OAAe,GAClB,EAAE;IACC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,+BA8CA"}
@@ -0,0 +1,219 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useId, useState } from "react";
3
+ import { APIKeys } from "./api-keys.js";
4
+ import { useAccount, useAuth } from "./context.js";
5
+ import { ActionNotice, ErrorNotice, Loading, useAction, useResource, } from "./ui.js";
6
+ function value(form, name) {
7
+ return String(new FormData(form).get(name) ?? "");
8
+ }
9
+ function downloadRecoveryCodes(codes) {
10
+ const url = URL.createObjectURL(new Blob([
11
+ "Pisti recovery codes\nKeep this file private. Each code works once.\n\n" +
12
+ codes.join("\n") +
13
+ "\n",
14
+ ], { type: "text/plain;charset=utf-8" }));
15
+ const link = document.createElement("a");
16
+ link.href = url;
17
+ link.download = "pisti-recovery-codes.txt";
18
+ document.body.append(link);
19
+ link.click();
20
+ link.remove();
21
+ window.setTimeout(() => URL.revokeObjectURL(url), 1000);
22
+ }
23
+ function ProofForm({ label, onSubmit, message, allowRecent = true, }) {
24
+ const account = useAccount();
25
+ const id = useId();
26
+ const action = useAction();
27
+ const [requestId, setRequestId] = useState(null);
28
+ const submit = (event) => {
29
+ event.preventDefault();
30
+ const form = event.currentTarget;
31
+ void action.run(async () => {
32
+ const code = value(form, "factor");
33
+ await onSubmit({
34
+ ...(requestId
35
+ ? { requestId, emailCode: value(form, "emailCode") }
36
+ : { password: value(form, "password") }),
37
+ ...(code ? { code } : {}),
38
+ });
39
+ form.reset();
40
+ setRequestId(null);
41
+ }, message);
42
+ };
43
+ return (_jsxs("form", { onSubmit: submit, className: "pisti-form", children: [_jsxs("fieldset", { disabled: action.isPending, children: [_jsx("legend", { children: label }), 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 () => {
44
+ const request = await account.requestReauthentication();
45
+ setRequestId(request.requestId);
46
+ }, "Check your verified email for a code."), children: requestId
47
+ ? "Send a new email code"
48
+ : "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: "Enter your second factor if an authenticator is already enrolled." }), _jsx("button", { type: "submit", children: action.isPending ? "Verifying…" : label }), allowRecent && (_jsx("button", { type: "button", className: "pisti-secondary", onClick: (event) => {
49
+ const form = event.currentTarget.form;
50
+ void action.run(async () => {
51
+ await onSubmit({});
52
+ form?.reset();
53
+ setRequestId(null);
54
+ }, message);
55
+ }, children: "Use recent verification" }))] }), _jsx(ActionNotice, { action: action })] }));
56
+ }
57
+ function AccountProfile() {
58
+ const account = useAccount();
59
+ const profile = useResource(account.get);
60
+ const action = useAction();
61
+ const { user } = useAuth();
62
+ const id = useId();
63
+ if (profile.isLoading && !profile.data)
64
+ return _jsx(Loading, {});
65
+ if (!profile.data)
66
+ return _jsx(ErrorNotice, { error: profile.error, retry: profile.reload });
67
+ const data = profile.data;
68
+ const submit = (event) => {
69
+ event.preventDefault();
70
+ const form = event.currentTarget;
71
+ void action.run(async () => {
72
+ await account.update({
73
+ firstName: value(form, "firstName"),
74
+ lastName: value(form, "lastName"),
75
+ imageUrl: value(form, "imageUrl") || null,
76
+ unsafeMetadata: data.unsafeMetadata,
77
+ expectedUpdatedAt: data.updatedAt,
78
+ });
79
+ profile.reload();
80
+ }, "Your profile has been updated.");
81
+ };
82
+ return (_jsxs("section", { children: [_jsx("h2", { children: "Profile" }), _jsx("p", { className: "pisti-muted", children: user?.primaryEmailAddress?.emailAddress }), _jsxs("form", { className: "pisti-form", onSubmit: submit, children: [_jsxs("fieldset", { disabled: action.isPending, children: [_jsx("legend", { children: "Personal information" }), _jsxs("div", { className: "pisti-grid", children: [_jsxs("label", { htmlFor: id + "-first", children: ["First name", _jsx("input", { id: id + "-first", name: "firstName", defaultValue: data.firstName, maxLength: 100, autoComplete: "given-name" })] }), _jsxs("label", { htmlFor: id + "-last", children: ["Last name", _jsx("input", { id: id + "-last", name: "lastName", defaultValue: data.lastName, maxLength: 100, autoComplete: "family-name" })] })] }), _jsxs("label", { htmlFor: id + "-image", children: ["Profile image URL", _jsx("input", { id: id + "-image", name: "imageUrl", type: "url", defaultValue: data.imageUrl ?? "", maxLength: 2048 })] }), _jsx("button", { type: "submit", children: action.isPending ? "Saving…" : "Save profile" })] }), _jsx(ActionNotice, { action: action }), _jsx(ErrorNotice, { error: profile.error, retry: profile.reload })] }, data.updatedAt)] }));
83
+ }
84
+ function AccountSessions() {
85
+ const account = useAccount();
86
+ const [page, setPage] = useState(1);
87
+ const load = useCallback(() => account.sessions(page, 10), [account, page]);
88
+ const query = useResource(load);
89
+ const action = useAction();
90
+ return (_jsxs("section", { children: [_jsx("h2", { children: "Sessions" }), _jsx("p", { className: "pisti-muted", children: "Revoke sessions you no longer use. Recent identity verification is required." }), query.isLoading && _jsx(Loading, {}), _jsx(ErrorNotice, { error: query.error, retry: query.reload }), _jsx(ActionNotice, { action: action }), query.data && (_jsxs(_Fragment, { children: [_jsx("ul", { className: "pisti-list", children: query.data.items.map((session) => (_jsxs("li", { children: [_jsxs("div", { children: [_jsx("strong", { children: session.current
91
+ ? "This session"
92
+ : "Application session" }), _jsxs("p", { className: "pisti-muted", children: [session.device, session.ipAddress
93
+ ? ` · ${session.ipAddress}`
94
+ : ""] }), _jsxs("p", { className: "pisti-muted", children: ["Last active", " ", new Date(session.lastSeenAt).toLocaleString(), session.revokedAt ? " · Revoked" : ""] })] }), !session.revokedAt && (_jsxs("button", { type: "button", className: "pisti-secondary", disabled: action.isPending, onClick: () => void action.run(async () => {
95
+ await account.revokeSession(session.id);
96
+ query.reload();
97
+ }, "The session has ended."), children: ["Revoke", session.current ? " this session" : ""] }))] }, session.id))) }), query.data.items.length === 0 && _jsx("p", { children: "No sessions found." }), _jsxs("div", { className: "pisti-actions", children: [_jsx("button", { type: "button", className: "pisti-secondary", disabled: page === 1 || query.isLoading, onClick: () => setPage(page - 1), children: "Previous" }), _jsxs("span", { children: ["Page ", page] }), _jsx("button", { type: "button", className: "pisti-secondary", disabled: page * 10 >= query.data.totalCount ||
98
+ query.isLoading, onClick: () => setPage(page + 1), children: "Next" })] }), _jsx("button", { type: "button", className: "pisti-danger", disabled: action.isPending, onClick: () => void action.run(account.revokeAllSessions), children: "Sign out all sessions" })] }))] }));
99
+ }
100
+ function AccountPasskeys() {
101
+ const account = useAccount();
102
+ const { user } = useAuth();
103
+ const query = useResource(account.passkeys);
104
+ const action = useAction();
105
+ if (!user)
106
+ return null;
107
+ const destination = new URL("/account/passkeys", user.issuer);
108
+ destination.searchParams.set("instanceId", user.instanceId);
109
+ destination.searchParams.set("userId", user.id);
110
+ return (_jsxs("section", { className: "pisti-section", children: [_jsx("h3", { children: "Passkeys" }), _jsx("p", { className: "pisti-muted", children: "Use a fingerprint, face, device PIN or security key. Setup opens your secure authentication account center." }), _jsx("a", { href: destination.href, children: "Open secure passkey setup" }), query.isLoading && _jsx(Loading, {}), _jsx(ErrorNotice, { error: query.error, retry: query.reload }), _jsx(ActionNotice, { action: action }), query.data?.length === 0 && _jsx("p", { children: "No passkeys registered." }), _jsx("ul", { className: "pisti-list", children: query.data?.map((passkey) => (_jsxs("li", { children: [_jsxs("div", { children: [passkey.name, _jsx("p", { className: "pisti-muted", children: passkey.rpId })] }), _jsx("button", { type: "button", className: "pisti-secondary", disabled: action.isPending, onClick: () => void action.run(async () => {
111
+ await account.removePasskey(passkey.id);
112
+ query.reload();
113
+ }, "Passkey removed."), children: "Remove" })] }, passkey.id))) })] }));
114
+ }
115
+ function AccountConnections() {
116
+ const account = useAccount();
117
+ const { user, reload } = useAuth();
118
+ const query = useResource(account.connections);
119
+ const action = useAction();
120
+ if (!user)
121
+ return null;
122
+ const destination = new URL("/account/connections", user.issuer);
123
+ destination.searchParams.set("instanceId", user.instanceId);
124
+ destination.searchParams.set("userId", user.id);
125
+ return (_jsxs("section", { className: "pisti-section", children: [_jsx("h3", { children: "Connected accounts" }), _jsx("p", { className: "pisti-muted", children: "Connect a sign-in provider in your secure account center. Disconnecting requires recent verification and ends all your sessions." }), _jsx("a", { href: destination.href, children: "Manage connected accounts securely" }), query.isLoading && _jsx(Loading, {}), _jsx(ErrorNotice, { error: query.error, retry: query.reload }), _jsx(ActionNotice, { action: action }), query.data?.length === 0 && _jsx("p", { children: "No sign-in providers connected." }), _jsx("ul", { className: "pisti-list", children: query.data?.map((connection) => (_jsxs("li", { children: [_jsxs("div", { children: [_jsx("strong", { children: connection.displayName }), connection.email && (_jsx("p", { className: "pisti-muted", children: connection.email }))] }), _jsx("button", { type: "button", className: "pisti-secondary", disabled: action.isPending, onClick: () => void action.run(async () => {
126
+ await account.disconnect(connection.id);
127
+ await reload();
128
+ query.reload();
129
+ }, "Provider disconnected. Sign in again using another method."), children: "Disconnect and sign out" })] }, connection.id))) })] }));
130
+ }
131
+ function AccountSecurity() {
132
+ const account = useAccount();
133
+ const query = useResource(account.security);
134
+ const action = useAction();
135
+ const [enrollment, setEnrollment] = useState(null);
136
+ const [recoveryCodes, setRecoveryCodes] = useState([]);
137
+ const [emailRequest, setEmailRequest] = useState(null);
138
+ const [deactivationRequest, setDeactivationRequest] = useState(null);
139
+ const id = useId();
140
+ return (_jsxs("section", { children: [_jsx("h2", { children: "Security" }), query.isLoading && _jsx(Loading, {}), _jsx(ErrorNotice, { error: query.error, retry: query.reload }), _jsx(ActionNotice, { action: action }), _jsx(AccountPasskeys, {}), _jsx(AccountConnections, {}), _jsx(ProofForm, { allowRecent: false, label: "Verify identity", message: "Your identity has been verified.", onSubmit: async (proof) => {
141
+ await account.reauthenticate(proof);
142
+ query.reload();
143
+ } }), _jsxs("section", { className: "pisti-section", children: [_jsx("h3", { children: "Two-step verification" }), _jsxs("p", { className: "pisti-muted", children: [query.data?.authenticatorEnabled
144
+ ? "Authenticator enabled."
145
+ : "Protect your account with an authenticator app.", query.data?.authenticatorRequired
146
+ ? " Your application requires this protection."
147
+ : ""] }), !enrollment && (_jsx(ProofForm, { label: query.data?.authenticatorEnabled
148
+ ? "Replace authenticator"
149
+ : "Set up authenticator", message: "Add the setup key to your authenticator app.", onSubmit: async (proof) => {
150
+ setEnrollment(await account.enrollAuthenticator(proof));
151
+ setRecoveryCodes([]);
152
+ } })), enrollment && (_jsx("form", { className: "pisti-form", onSubmit: (event) => {
153
+ event.preventDefault();
154
+ const form = event.currentTarget;
155
+ void action.run(async () => {
156
+ const result = await account.confirmAuthenticator(enrollment.enrollmentId, value(form, "code"));
157
+ setRecoveryCodes(result.recoveryCodes);
158
+ setEnrollment(null);
159
+ form.reset();
160
+ query.reload();
161
+ }, "Authenticator enabled.");
162
+ }, children: _jsxs("fieldset", { disabled: action.isPending, children: [_jsx("legend", { children: "Confirm authenticator" }), _jsxs("label", { htmlFor: id + "-key", children: ["Setup key", _jsx("input", { id: id + "-key", value: enrollment.setupKey, readOnly: true, autoComplete: "off" })] }), _jsx("p", { className: "pisti-muted", children: "Use \u201CEnter a setup key\u201D in your authenticator app. This setup expires shortly." }), _jsxs("label", { htmlFor: id + "-code", children: ["Authenticator code", _jsx("input", { id: id + "-code", name: "code", inputMode: "numeric", pattern: "[0-9]{6}", maxLength: 6, autoComplete: "one-time-code", required: true })] }), _jsxs("div", { className: "pisti-actions", children: [_jsx("button", { type: "submit", children: "Confirm authenticator" }), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => setEnrollment(null), children: "Cancel setup" })] })] }) })), query.data?.authenticatorEnabled && (_jsxs("details", { children: [_jsx("summary", { children: "Recovery codes and authenticator removal" }), _jsxs("p", { className: "pisti-muted", children: [query.data.recoveryCodesRemaining, " unused recovery codes remain. Each authenticator code is accepted once; wait for a fresh code between operations."] }), _jsx(ProofForm, { label: "Generate new recovery codes", message: "Previous recovery codes have been replaced.", onSubmit: async (proof) => {
163
+ setRecoveryCodes((await account.regenerateRecoveryCodes(proof)).recoveryCodes);
164
+ query.reload();
165
+ } }), !query.data.authenticatorRequired && (_jsx(ProofForm, { label: "Remove authenticator and sign out", message: "Authenticator removed.", onSubmit: async (proof) => {
166
+ await account.removeAuthenticator(proof);
167
+ query.reload();
168
+ } }))] })), recoveryCodes.length > 0 && (_jsxs("div", { className: "pisti-notice", role: "status", children: [_jsx("h4", { children: "Save your recovery codes" }), _jsx("p", { children: "These codes are shown only now. Keep them somewhere safe outside this browser." }), _jsx("pre", { children: recoveryCodes.join("\n") }), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => downloadRecoveryCodes(recoveryCodes), children: "Download recovery codes" }), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => setRecoveryCodes([]), children: "I've saved my codes" })] }))] }), query.data?.passwordEnabled && (_jsxs("details", { className: "pisti-section", children: [_jsx("summary", { children: query.data.hasPassword
169
+ ? "Change password"
170
+ : "Set a password" }), _jsx("p", { className: "pisti-muted", children: "Changing your password signs out your other devices; this one stays signed in." }), _jsx("form", { className: "pisti-form", onSubmit: (event) => {
171
+ event.preventDefault();
172
+ const form = event.currentTarget;
173
+ void action.run(async () => {
174
+ if (query.data?.hasPassword)
175
+ await account.changePassword(value(form, "currentPassword"), value(form, "password"), value(form, "code") || undefined);
176
+ else
177
+ await account.setPassword(value(form, "password"));
178
+ form.reset();
179
+ });
180
+ }, children: _jsxs("fieldset", { disabled: action.isPending, children: [_jsx("legend", { children: "Change password" }), query.data.hasPassword && (_jsxs("label", { htmlFor: id + "-current", children: ["Current password", _jsx("input", { id: id + "-current", name: "currentPassword", type: "password", maxLength: 128, autoComplete: "current-password", required: true })] })), _jsxs("label", { htmlFor: id + "-new", children: ["New password", _jsx("input", { id: id + "-new", name: "password", type: "password", minLength: 15, maxLength: 128, autoComplete: "new-password", required: true })] }), query.data.hasPassword && (_jsxs("label", { htmlFor: id + "-password-factor", children: ["Authenticator or recovery code", _jsx("input", { id: id + "-password-factor", name: "code", maxLength: 64, autoComplete: "one-time-code" })] })), !query.data.hasPassword && (_jsx("p", { className: "pisti-muted", children: "Verify your identity when prompted to add a password." })), _jsx("button", { type: "submit", children: "Change password and sign out" })] }) })] })), _jsxs("details", { className: "pisti-section", children: [_jsx("summary", { children: "Change email" }), _jsx("p", { className: "pisti-muted", children: "Verify your new address. Your previous address receives a security notification. Your old email will stop working and all sessions will end." }), !emailRequest ? (_jsx("form", { className: "pisti-form", onSubmit: (event) => {
181
+ event.preventDefault();
182
+ const form = event.currentTarget;
183
+ void action.run(async () => {
184
+ setEmailRequest((await account.requestEmailChange(value(form, "email"))).requestId);
185
+ }, "Check your new email for a code.");
186
+ }, children: _jsxs("fieldset", { disabled: action.isPending, children: [_jsxs("label", { htmlFor: id + "-email", children: ["New email", _jsx("input", { id: id + "-email", name: "email", type: "email", maxLength: 254, autoComplete: "email", required: true })] }), _jsx("button", { type: "submit", children: "Send verification code" })] }) })) : (_jsx("form", { className: "pisti-form", onSubmit: (event) => {
187
+ event.preventDefault();
188
+ const form = event.currentTarget;
189
+ void action.run(async () => {
190
+ await account.completeEmailChange(emailRequest, value(form, "code"));
191
+ form.reset();
192
+ });
193
+ }, children: _jsxs("fieldset", { disabled: action.isPending, children: [_jsxs("label", { htmlFor: id + "-email-code", children: ["Email verification code", _jsx("input", { id: id + "-email-code", name: "code", pattern: "[0-9]{6}", maxLength: 6, autoComplete: "one-time-code", required: true })] }), _jsx("button", { type: "submit", children: "Change email and sign out" }), _jsx("button", { type: "button", className: "pisti-secondary", onClick: () => setEmailRequest(null), children: "Start again" })] }) }))] }), _jsxs("details", { className: "pisti-section", children: [_jsx("summary", { children: "Deactivate account" }), _jsx("p", { className: "pisti-muted", children: "Deactivation signs you out everywhere. Your account is permanently deleted after 30 days; until then you can reactivate it from the sign-in page with an email code." }), !deactivationRequest ? (_jsx("button", { type: "button", className: "pisti-danger", disabled: action.isPending, onClick: () => void action.run(async () => {
194
+ setDeactivationRequest((await account.requestDeactivation())
195
+ .requestId);
196
+ }, "A confirmation code will be sent to your email."), children: "Request deactivation code" })) : (_jsx("form", { className: "pisti-form", onSubmit: (event) => {
197
+ event.preventDefault();
198
+ const form = event.currentTarget;
199
+ void action.run(async () => {
200
+ await account.deactivate(deactivationRequest, value(form, "code"));
201
+ form.reset();
202
+ });
203
+ }, children: _jsxs("fieldset", { disabled: action.isPending, children: [_jsxs("label", { htmlFor: id + "-delete-code", children: ["Email confirmation code", _jsx("input", { id: id + "-delete-code", name: "code", pattern: "[0-9]{6}", maxLength: 6, autoComplete: "one-time-code", required: true })] }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", required: true }), " I understand that I will lose access to this account."] }), _jsx("button", { type: "submit", className: "pisti-danger", children: "Deactivate account" })] }) }))] })] }));
204
+ }
205
+ export function UserProfile({ className = "", apiKeys = false, }) {
206
+ const { isLoaded, isSignedIn, error, user, sessionId } = useAuth();
207
+ const [page, setPage] = useState("profile");
208
+ const pages = apiKeys
209
+ ? ["profile", "security", "sessions", "api keys"]
210
+ : ["profile", "security", "sessions"];
211
+ if (!isLoaded)
212
+ return _jsx(Loading, {});
213
+ if (error)
214
+ return _jsx(ErrorNotice, { error: error });
215
+ if (!isSignedIn)
216
+ return _jsx("p", { children: "Sign in to manage your account." });
217
+ return (_jsxs("div", { className: "pisti-ui pisti-account " + className, children: [_jsxs("header", { children: [_jsx("h1", { children: "Your account" }), _jsx("p", { className: "pisti-muted", children: "Manage your profile, security and sessions." })] }), _jsx("nav", { className: "pisti-navigation", "aria-label": "Account settings", children: pages.map((item) => (_jsx("button", { type: "button", className: "pisti-secondary", "aria-current": page === item ? "page" : undefined, onClick: () => setPage(item), children: item === "api keys" ? "API keys" : item.charAt(0).toUpperCase() + item.slice(1) }, item))) }), page === "profile" ? (_jsx(AccountProfile, {})) : page === "security" ? (_jsx(AccountSecurity, {})) : page === "api keys" ? (_jsx(APIKeys, {})) : (_jsx(AccountSessions, {}))] }, user?.id + ":" + sessionId));
218
+ }
219
+ //# sourceMappingURL=user-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../src/user-profile.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,50 @@
1
1
  {
2
2
  "name": "@pisti-paypiller/react",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.7.1",
4
+ "description": "Pisti for React: provider, hooks, prebuilt sign-in, sign-up, user and organization components.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/pisti-paypiller/pisti-sdks.git",
10
+ "directory": "react"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "engines": {
16
+ "node": ">=22.12.0"
17
+ },
18
+ "exports": {
19
+ "./styles.css": "./styles.css",
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ },
24
+ "./client": {
25
+ "types": "./dist/client.d.ts",
26
+ "import": "./dist/client.js"
27
+ }
28
+ },
29
+ "files": [
30
+ "styles.css",
31
+ "dist",
32
+ "README.md"
33
+ ],
34
+ "sideEffects": [
35
+ "./styles.css"
36
+ ],
37
+ "scripts": {
38
+ "build": "tsc -p tsconfig.json",
39
+ "check": "tsc -p tsconfig.json --noEmit",
40
+ "prepack": "npm run build"
41
+ },
42
+ "peerDependencies": {
43
+ "react": "^18.3.1 || ^19.0.0"
44
+ },
45
+ "devDependencies": {
46
+ "@types/react": "19.3.0",
47
+ "react": "19.3.1",
48
+ "typescript": "7.0.2"
49
+ }
50
+ }