@0xkey-io/react-wallet-kit 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,16 @@
1
1
  /// <reference types="react" />
2
+ import type { OnRampFlowResult } from "@0xkey-io/core";
2
3
  type OnRampPageProps = {
3
4
  icon: React.ReactNode;
4
5
  onrampProvider: string;
5
6
  action: () => Promise<void>;
6
7
  completed: boolean;
8
+ result?: OnRampFlowResult | undefined;
7
9
  successPageDuration?: number;
8
10
  sandboxMode?: boolean;
9
- onSuccess?: () => void;
11
+ onSuccess?: (result: OnRampFlowResult) => void;
10
12
  onError?: (error: any) => void;
11
13
  };
12
- export declare function OnRampPage({ icon, onrampProvider, action, completed, successPageDuration, sandboxMode, onSuccess, onError, }: OnRampPageProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function OnRampPage({ icon, onrampProvider, action, completed, result, successPageDuration, sandboxMode, onSuccess, onError, }: OnRampPageProps): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
14
16
  //# sourceMappingURL=OnRamp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnRamp.d.ts","sourceRoot":"","sources":["../../../src/components/onramp/OnRamp.tsx"],"names":[],"mappings":";AAKA,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,cAAc,EACd,MAAM,EACN,SAAS,EACT,mBAA0B,EAC1B,WAAmB,EACnB,SAAS,EACT,OAAO,GACR,EAAE,eAAe,2CAuDjB"}
1
+ {"version":3,"file":"OnRamp.d.ts","sourceRoot":"","sources":["../../../src/components/onramp/OnRamp.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,cAAc,EACd,MAAM,EACN,SAAS,EACT,MAAM,EACN,mBAA0B,EAC1B,WAAmB,EACnB,SAAS,EACT,OAAO,GACR,EAAE,eAAe,2CA0DjB"}
@@ -11,6 +11,7 @@ function OnRampPage({
11
11
  onrampProvider,
12
12
  action,
13
13
  completed,
14
+ result,
14
15
  successPageDuration = 2000,
15
16
  sandboxMode = false,
16
17
  onSuccess,
@@ -21,13 +22,16 @@ function OnRampPage({
21
22
  isMobile
22
23
  } = Hook.useModal();
23
24
  if (completed) {
25
+ const status = result?.status ?? "unknown";
24
26
  return jsxRuntime.jsx("div", {
25
27
  className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300 text-center", isMobile ? "w-full" : "w-72"),
26
28
  children: jsxRuntime.jsx(Success.SuccessPage, {
27
- text: "On Ramp Transaction Complete!",
29
+ text: `On Ramp Transaction ${status === "completed" ? "Complete" : status}!`,
28
30
  duration: successPageDuration,
29
31
  onComplete: () => {
30
- onSuccess?.();
32
+ if (result) {
33
+ onSuccess?.(result);
34
+ }
31
35
  closeModal();
32
36
  }
33
37
  })
@@ -1 +1 @@
1
- {"version":3,"file":"OnRamp.js","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","icon","onrampProvider","action","completed","successPageDuration","sandboxMode","onSuccess","onError","closeModal","isMobile","useModal","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","err","closeOnComplete"],"mappings":";;;;;;;;AAgBM,SAAUA,UAAUA,CAAC;EACzBC,IAAI;EACJC,cAAc;EACdC,MAAM;EACNC,SAAS;AACTC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,WAAW,GAAG,KAAK;EACnBC,SAAS;AACTC,EAAAA;AAAO,CACS,EAAA;EAChB,MAAM;IAAEC,UAAU;AAAEC,IAAAA;GAAU,GAAGC,aAAQ,EAAE;AAE3C,EAAA,IAAIP,SAAS,EAAE;IACb,OACEQ,cAAA,CAAA,KAAA,EAAA;MACEC,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFJ,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAK,MAAAA,QAAA,EAEDH,cAAA,CAACI,mBAAW,EAAA;AACVC,QAAAA,IAAI,EAAC,+BAA+B;AACpCC,QAAAA,QAAQ,EAAEb,mBAAmB;QAC7Bc,UAAU,EAAEA,MAAK;AACfZ,UAAAA,SAAS,IAAI;AACbE,UAAAA,UAAU,EAAE;AACd,QAAA;OAAC;AACD,KAAA,CACE;AAEV,EAAA;EAEA,OACEW,eAAA,CAAA,KAAA,EAAA;IACEP,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFJ,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAK,IAAAA,QAAA,EAAA,CAEDH,cAAA,CAACS,iBAAU,EAAA;AACTC,MAAAA,KAAK,EAAC,mBAAmB;AACzBrB,MAAAA,IAAI,EAAEA,IAAI;MACVE,MAAM,EAAE,YAAW;QACjB,IAAI;UACF,MAAMA,MAAM,EAAE;QAChB,CAAC,CAAC,OAAOoB,GAAG,EAAE;UACZf,OAAO,GAAGe,GAAG,CAAC;AACd,UAAA,MAAMA,GAAG;AACX,QAAA;MACF,CAAC;AACDC,MAAAA,eAAe,EAAE;AAAK,KAAA,CACtB,EACFZ,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wEAAwE;AAAAE,MAAAA,QAAA,EACpFb,cAAc,KAAK,gCAAgC,GAChD,wDAAwD,GACxD;AAAuD,KAAA,CACvD,EACLI,WAAW,IACVM,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wDAAwD;AAAAE,MAAAA,QAAA,EAAA;AAAA,KAAA,CAGxE;AAAA,GAAA,CACG;AAEV;;;;"}
1
+ {"version":3,"file":"OnRamp.js","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","icon","onrampProvider","action","completed","result","successPageDuration","sandboxMode","onSuccess","onError","closeModal","isMobile","useModal","status","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","err","closeOnComplete"],"mappings":";;;;;;;;AAkBM,SAAUA,UAAUA,CAAC;EACzBC,IAAI;EACJC,cAAc;EACdC,MAAM;EACNC,SAAS;EACTC,MAAM;AACNC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,WAAW,GAAG,KAAK;EACnBC,SAAS;AACTC,EAAAA;AAAO,CACS,EAAA;EAChB,MAAM;IAAEC,UAAU;AAAEC,IAAAA;GAAU,GAAGC,aAAQ,EAAE;AAE3C,EAAA,IAAIR,SAAS,EAAE;AACb,IAAA,MAAMS,MAAM,GAAGR,MAAM,EAAEQ,MAAM,IAAI,SAAS;IAC1C,OACEC;MACEC,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFL,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAM,MAAAA,QAAA,EAEDH,eAACI,mBAAW,EAAA;QACVC,IAAI,EAAE,uBAAuBN,MAAM,KAAK,WAAW,GAAG,UAAU,GAAGA,MAAM,CAAA,CAAA,CAAG;AAC5EO,QAAAA,QAAQ,EAAEd,mBAAmB;QAC7Be,UAAU,EAAEA,MAAK;AACf,UAAA,IAAIhB,MAAM,EAAE;YACVG,SAAS,GAAGH,MAAM,CAAC;AACrB,UAAA;AACAK,UAAAA,UAAU,EAAE;AACd,QAAA;OAAC;AACD,KAAA,CACE;AAEV,EAAA;EAEA,OACEY,eAAA,CAAA,KAAA,EAAA;IACEP,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFL,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAM,IAAAA,QAAA,EAAA,CAEDH,cAAA,CAACS,iBAAU,EAAA;AACTC,MAAAA,KAAK,EAAC,mBAAmB;AACzBvB,MAAAA,IAAI,EAAEA,IAAI;MACVE,MAAM,EAAE,YAAW;QACjB,IAAI;UACF,MAAMA,MAAM,EAAE;QAChB,CAAC,CAAC,OAAOsB,GAAG,EAAE;UACZhB,OAAO,GAAGgB,GAAG,CAAC;AACd,UAAA,MAAMA,GAAG;AACX,QAAA;MACF,CAAC;AACDC,MAAAA,eAAe,EAAE;AAAK,KAAA,CACtB,EACFZ,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wEAAwE;AAAAE,MAAAA,QAAA,EACpFf,cAAc,KAAK,gCAAgC,GAChD,wDAAwD,GACxD;AAAuD,KAAA,CACvD,EACLK,WAAW,IACVO,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wDAAwD;AAAAE,MAAAA,QAAA,EAAA;AAAA,KAAA,CAGxE;AAAA,GAAA,CACG;AAEV;;;;"}
@@ -10,6 +10,7 @@ function OnRampPage(_ref) {
10
10
  onrampProvider = _ref.onrampProvider,
11
11
  _action = _ref.action,
12
12
  completed = _ref.completed,
13
+ result = _ref.result,
13
14
  _ref$successPageDurat = _ref.successPageDuration,
14
15
  successPageDuration = _ref$successPageDurat === void 0 ? 2000 : _ref$successPageDurat,
15
16
  _ref$sandboxMode = _ref.sandboxMode,
@@ -20,13 +21,17 @@ function OnRampPage(_ref) {
20
21
  closeModal = _useModal.closeModal,
21
22
  isMobile = _useModal.isMobile;
22
23
  if (completed) {
24
+ var _result$status;
25
+ var status = (_result$status = result === null || result === void 0 ? void 0 : result.status) !== null && _result$status !== void 0 ? _result$status : "unknown";
23
26
  return jsx("div", {
24
27
  className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300 text-center", isMobile ? "w-full" : "w-72"),
25
28
  children: jsx(SuccessPage, {
26
- text: "On Ramp Transaction Complete!",
29
+ text: "On Ramp Transaction ".concat(status === "completed" ? "Complete" : status, "!"),
27
30
  duration: successPageDuration,
28
31
  onComplete: function onComplete() {
29
- onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
32
+ if (result) {
33
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(result);
34
+ }
30
35
  closeModal();
31
36
  }
32
37
  })
@@ -1 +1 @@
1
- {"version":3,"file":"OnRamp.mjs","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","_ref","icon","onrampProvider","action","completed","_ref$successPageDurat","successPageDuration","_ref$sandboxMode","sandboxMode","onSuccess","onError","_useModal","useModal","closeModal","isMobile","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","_action2","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","v","a","apply","arguments","closeOnComplete"],"mappings":"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"}
1
+ {"version":3,"file":"OnRamp.mjs","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","_ref","icon","onrampProvider","action","completed","result","_ref$successPageDurat","successPageDuration","_ref$sandboxMode","sandboxMode","onSuccess","onError","_useModal","useModal","closeModal","isMobile","_result$status","status","_jsx","className","clsx","children","SuccessPage","text","concat","duration","onComplete","_jsxs","ActionPage","title","_action2","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","v","a","apply","arguments","closeOnComplete"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { HandleVerifyEnclaveParams } from "../../types/method-types";
2
+ type VerifyEnclavePageProps = HandleVerifyEnclaveParams & {
3
+ onSuccess?: (pivotHashHex: string) => void;
4
+ onError?: (error: unknown) => void;
5
+ successPageDuration?: number;
6
+ };
7
+ /**
8
+ * Verifies that the live enclave running `appName` matches a manifest
9
+ * approved by 0xkey's quorum multi-sig (via `verifyLatestBootProof`).
10
+ *
11
+ * Unlike {@link VerifyPage} (which verifies a specific *operation* via an
12
+ * App Proof), this verifies the *enclave's identity* directly — it doesn't
13
+ * depend on any App Proof having been generated, so it works today for any
14
+ * enclave app that already serves boot proofs.
15
+ *
16
+ * On failure, this shows a visible error state (via {@link DeveloperError})
17
+ * rather than silently closing — since this is meant to be a user-facing
18
+ * trust signal, a failed verification must not be indistinguishable from a
19
+ * cancelled/skipped one.
20
+ */
21
+ export declare function VerifyEnclavePage(props: VerifyEnclavePageProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=VerifyEnclave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyEnclave.d.ts","sourceRoot":"","sources":["../../../src/components/verify/VerifyEnclave.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAI1E,KAAK,sBAAsB,GAAG,yBAAyB,GAAG;IACxD,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAkK9D"}
@@ -0,0 +1,168 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var clsx = require('clsx');
5
+ var Hook = require('../../providers/modal/Hook.js');
6
+ var react = require('react');
7
+ var react$1 = require('@headlessui/react');
8
+ var reactFontawesome = require('@fortawesome/react-fontawesome');
9
+ var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
10
+ var Hook$1 = require('../../providers/client/Hook.js');
11
+ var Spinners = require('../design/Spinners.js');
12
+ var Failure = require('../design/Failure.js');
13
+
14
+ /**
15
+ * Verifies that the live enclave running `appName` matches a manifest
16
+ * approved by 0xkey's quorum multi-sig (via `verifyLatestBootProof`).
17
+ *
18
+ * Unlike {@link VerifyPage} (which verifies a specific *operation* via an
19
+ * App Proof), this verifies the *enclave's identity* directly — it doesn't
20
+ * depend on any App Proof having been generated, so it works today for any
21
+ * enclave app that already serves boot proofs.
22
+ *
23
+ * On failure, this shows a visible error state (via {@link DeveloperError})
24
+ * rather than silently closing — since this is meant to be a user-facing
25
+ * trust signal, a failed verification must not be indistinguishable from a
26
+ * cancelled/skipped one.
27
+ */
28
+ function VerifyEnclavePage(props) {
29
+ const {
30
+ appName,
31
+ organizationId,
32
+ stampWith,
33
+ anchor,
34
+ onSuccess,
35
+ onError,
36
+ successPageDuration
37
+ } = props;
38
+ const {
39
+ isMobile,
40
+ closeModal
41
+ } = Hook.useModal();
42
+ const {
43
+ verifyLatestBootProof
44
+ } = Hook$1.useZeroXKey();
45
+ const hasRun = react.useRef(false);
46
+ const [status, setStatus] = react.useState("loading");
47
+ const [pivotHashHex, setPivotHashHex] = react.useState("");
48
+ const [error, setError] = react.useState(undefined);
49
+ const [isTextPinging, setIsTextPinging] = react.useState(false);
50
+ react.useEffect(() => {
51
+ if (hasRun.current) return;
52
+ hasRun.current = true;
53
+ const closeTimeoutRef = {
54
+ current: undefined
55
+ };
56
+ const runAction = async () => {
57
+ try {
58
+ // Slight delay to let the modal animation complete — verification
59
+ // can briefly freeze the UI thread while it runs.
60
+ await new Promise(resolve => setTimeout(resolve, 300));
61
+ const parsed = await verifyLatestBootProof({
62
+ appName,
63
+ ...(organizationId !== undefined && {
64
+ organizationId
65
+ }),
66
+ ...(stampWith && {
67
+ stampWith
68
+ }),
69
+ ...(anchor && {
70
+ anchor
71
+ })
72
+ });
73
+ setPivotHashHex(parsed.manifest.pivotHashHex);
74
+ setStatus("success");
75
+ if (!successPageDuration || successPageDuration === 0) {
76
+ onSuccess?.(parsed.manifest.pivotHashHex);
77
+ closeModal();
78
+ return;
79
+ }
80
+ setTimeout(() => setIsTextPinging(true), 500);
81
+ setTimeout(() => setIsTextPinging(false), 1500);
82
+ closeTimeoutRef.current = setTimeout(() => {
83
+ onSuccess?.(parsed.manifest.pivotHashHex);
84
+ closeModal();
85
+ }, successPageDuration);
86
+ } catch (err) {
87
+ setError(err);
88
+ setStatus("error");
89
+ onError?.(err);
90
+ }
91
+ };
92
+ runAction();
93
+ return () => {
94
+ if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
95
+ };
96
+ }, []);
97
+ if (status === "error") {
98
+ return jsxRuntime.jsx("div", {
99
+ className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300", isMobile ? "w-full" : "w-80"),
100
+ children: jsxRuntime.jsx(Failure.DeveloperError, {
101
+ developerTitle: "Enclave verification failed",
102
+ developerMessages: [error instanceof Error ? error.message : String(error)],
103
+ userTitle: "Verification failed",
104
+ userMessages: ["We couldn't verify this enclave's identity. Please try again later."]
105
+ })
106
+ });
107
+ }
108
+ return jsxRuntime.jsxs("div", {
109
+ className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300", isMobile ? "w-full" : "w-72"),
110
+ children: [status === "loading" && jsxRuntime.jsxs("div", {
111
+ className: "size-full absolute text-center text-lg font-semibold flex flex-row items-center justify-center gap-2",
112
+ children: [jsxRuntime.jsx(Spinners.Spinner, {
113
+ strokeWidth: 2,
114
+ className: "h-full"
115
+ }), jsxRuntime.jsx("span", {
116
+ className: "animate-pulse",
117
+ children: "Verifying enclave identity..."
118
+ })]
119
+ }), jsxRuntime.jsx("div", {
120
+ className: "relative flex flex-col items-center justify-center size-[88px] overflow-hidden",
121
+ children: jsxRuntime.jsx(react$1.Transition, {
122
+ as: "div",
123
+ show: status === "success",
124
+ enter: "transition-all duration-600 ease-in-out",
125
+ enterFrom: "opacity-0 scale-40",
126
+ enterTo: "opacity-100 scale-100",
127
+ className: " absolute size-full flex flex-col items-center justify-center",
128
+ children: jsxRuntime.jsx("div", {
129
+ className: "size-full border-2 border-primary-light dark:border-primary-dark text-primary-light dark:text-primary-dark rounded-full flex flex-col items-center justify-center box-border",
130
+ children: jsxRuntime.jsxs(react$1.TransitionChild, {
131
+ as: "div",
132
+ enter: "transition-all duration-200 delay-300 ease-out",
133
+ enterFrom: "opacity-0 scale-60",
134
+ enterTo: "opacity-100 scale-100",
135
+ className: "relative flex flex-col items-center justify-center",
136
+ children: [jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, {
137
+ icon: freeSolidSvgIcons.faCheck,
138
+ size: "2x"
139
+ }), jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, {
140
+ className: "absolute animate-ping",
141
+ icon: freeSolidSvgIcons.faCheck,
142
+ size: "2x"
143
+ })]
144
+ })
145
+ })
146
+ })
147
+ }), jsxRuntime.jsxs(react$1.Transition, {
148
+ as: "div",
149
+ show: status === "success",
150
+ className: "w-full text-center text-lg font-semibold flex flex-col items-center justify-center mt-2 relative",
151
+ enter: "transition-all ease-out duration-200 delay-200",
152
+ enterFrom: "opacity-0 -translate-y-2",
153
+ enterTo: "opacity-100 translate-y-0",
154
+ children: [jsxRuntime.jsx("span", {
155
+ children: "Verified!"
156
+ }), isTextPinging && jsxRuntime.jsx("span", {
157
+ className: "absolute animate-ping text-icon-text-light dark:text-icon-text-dark",
158
+ children: "Verified!"
159
+ })]
160
+ }), status === "success" && pivotHashHex && jsxRuntime.jsxs("div", {
161
+ className: "w-full text-center text-xs mt-3 font-mono text-icon-text-light dark:text-icon-text-dark break-all px-4",
162
+ children: ["pivot ", pivotHashHex.slice(0, 16), "..."]
163
+ })]
164
+ });
165
+ }
166
+
167
+ exports.VerifyEnclavePage = VerifyEnclavePage;
168
+ //# sourceMappingURL=VerifyEnclave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyEnclave.js","sources":["../../../src/components/verify/VerifyEnclave.tsx"],"sourcesContent":[null],"names":["VerifyEnclavePage","props","appName","organizationId","stampWith","anchor","onSuccess","onError","successPageDuration","isMobile","closeModal","useModal","verifyLatestBootProof","useZeroXKey","hasRun","useRef","status","setStatus","useState","pivotHashHex","setPivotHashHex","error","setError","undefined","isTextPinging","setIsTextPinging","useEffect","current","closeTimeoutRef","runAction","Promise","resolve","setTimeout","parsed","manifest","err","clearTimeout","_jsx","className","clsx","children","DeveloperError","developerTitle","developerMessages","Error","message","String","userTitle","userMessages","_jsxs","Spinner","strokeWidth","Transition","as","show","enter","enterFrom","enterTo","TransitionChild","FontAwesomeIcon","icon","faCheck","size","slice"],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import clsx from 'clsx';
4
+ import { useModal } from '../../providers/modal/Hook.mjs';
5
+ import { useRef, useState, useEffect } from 'react';
6
+ import { Transition, TransitionChild } from '@headlessui/react';
7
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
8
+ import { faCheck } from '@fortawesome/free-solid-svg-icons';
9
+ import { useZeroXKey } from '../../providers/client/Hook.mjs';
10
+ import { Spinner } from '../design/Spinners.mjs';
11
+ import { DeveloperError } from '../design/Failure.mjs';
12
+
13
+ /**
14
+ * Verifies that the live enclave running `appName` matches a manifest
15
+ * approved by 0xkey's quorum multi-sig (via `verifyLatestBootProof`).
16
+ *
17
+ * Unlike {@link VerifyPage} (which verifies a specific *operation* via an
18
+ * App Proof), this verifies the *enclave's identity* directly — it doesn't
19
+ * depend on any App Proof having been generated, so it works today for any
20
+ * enclave app that already serves boot proofs.
21
+ *
22
+ * On failure, this shows a visible error state (via {@link DeveloperError})
23
+ * rather than silently closing — since this is meant to be a user-facing
24
+ * trust signal, a failed verification must not be indistinguishable from a
25
+ * cancelled/skipped one.
26
+ */
27
+ function VerifyEnclavePage(props) {
28
+ var appName = props.appName,
29
+ organizationId = props.organizationId,
30
+ stampWith = props.stampWith,
31
+ anchor = props.anchor,
32
+ onSuccess = props.onSuccess,
33
+ onError = props.onError,
34
+ successPageDuration = props.successPageDuration;
35
+ var _useModal = useModal(),
36
+ isMobile = _useModal.isMobile,
37
+ closeModal = _useModal.closeModal;
38
+ var _useZeroXKey = useZeroXKey(),
39
+ verifyLatestBootProof = _useZeroXKey.verifyLatestBootProof;
40
+ var hasRun = useRef(false);
41
+ var _useState = useState("loading"),
42
+ _useState2 = _slicedToArray(_useState, 2),
43
+ status = _useState2[0],
44
+ setStatus = _useState2[1];
45
+ var _useState3 = useState(""),
46
+ _useState4 = _slicedToArray(_useState3, 2),
47
+ pivotHashHex = _useState4[0],
48
+ setPivotHashHex = _useState4[1];
49
+ var _useState5 = useState(undefined),
50
+ _useState6 = _slicedToArray(_useState5, 2),
51
+ error = _useState6[0],
52
+ setError = _useState6[1];
53
+ var _useState7 = useState(false),
54
+ _useState8 = _slicedToArray(_useState7, 2),
55
+ isTextPinging = _useState8[0],
56
+ setIsTextPinging = _useState8[1];
57
+ useEffect(function () {
58
+ if (hasRun.current) return;
59
+ hasRun.current = true;
60
+ var closeTimeoutRef = {
61
+ current: undefined
62
+ };
63
+ var runAction = /*#__PURE__*/function () {
64
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
65
+ var parsed, _t;
66
+ return _regenerator().w(function (_context) {
67
+ while (1) switch (_context.p = _context.n) {
68
+ case 0:
69
+ _context.p = 0;
70
+ _context.n = 1;
71
+ return new Promise(function (resolve) {
72
+ return setTimeout(resolve, 300);
73
+ });
74
+ case 1:
75
+ _context.n = 2;
76
+ return verifyLatestBootProof(_objectSpread2(_objectSpread2(_objectSpread2({
77
+ appName: appName
78
+ }, organizationId !== undefined && {
79
+ organizationId: organizationId
80
+ }), stampWith && {
81
+ stampWith: stampWith
82
+ }), anchor && {
83
+ anchor: anchor
84
+ }));
85
+ case 2:
86
+ parsed = _context.v;
87
+ setPivotHashHex(parsed.manifest.pivotHashHex);
88
+ setStatus("success");
89
+ if (!(!successPageDuration || successPageDuration === 0)) {
90
+ _context.n = 3;
91
+ break;
92
+ }
93
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(parsed.manifest.pivotHashHex);
94
+ closeModal();
95
+ return _context.a(2);
96
+ case 3:
97
+ setTimeout(function () {
98
+ return setIsTextPinging(true);
99
+ }, 500);
100
+ setTimeout(function () {
101
+ return setIsTextPinging(false);
102
+ }, 1500);
103
+ closeTimeoutRef.current = setTimeout(function () {
104
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(parsed.manifest.pivotHashHex);
105
+ closeModal();
106
+ }, successPageDuration);
107
+ _context.n = 5;
108
+ break;
109
+ case 4:
110
+ _context.p = 4;
111
+ _t = _context.v;
112
+ setError(_t);
113
+ setStatus("error");
114
+ onError === null || onError === void 0 ? void 0 : onError(_t);
115
+ case 5:
116
+ return _context.a(2);
117
+ }
118
+ }, _callee, null, [[0, 4]]);
119
+ }));
120
+ return function runAction() {
121
+ return _ref.apply(this, arguments);
122
+ };
123
+ }();
124
+ runAction();
125
+ return function () {
126
+ if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
127
+ };
128
+ }, []);
129
+ if (status === "error") {
130
+ return jsx("div", {
131
+ className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300", isMobile ? "w-full" : "w-80"),
132
+ children: jsx(DeveloperError, {
133
+ developerTitle: "Enclave verification failed",
134
+ developerMessages: [error instanceof Error ? error.message : String(error)],
135
+ userTitle: "Verification failed",
136
+ userMessages: ["We couldn't verify this enclave's identity. Please try again later."]
137
+ })
138
+ });
139
+ }
140
+ return jsxs("div", {
141
+ className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300", isMobile ? "w-full" : "w-72"),
142
+ children: [status === "loading" && jsxs("div", {
143
+ className: "size-full absolute text-center text-lg font-semibold flex flex-row items-center justify-center gap-2",
144
+ children: [jsx(Spinner, {
145
+ strokeWidth: 2,
146
+ className: "h-full"
147
+ }), jsx("span", {
148
+ className: "animate-pulse",
149
+ children: "Verifying enclave identity..."
150
+ })]
151
+ }), jsx("div", {
152
+ className: "relative flex flex-col items-center justify-center size-[88px] overflow-hidden",
153
+ children: jsx(Transition, {
154
+ as: "div",
155
+ show: status === "success",
156
+ enter: "transition-all duration-600 ease-in-out",
157
+ enterFrom: "opacity-0 scale-40",
158
+ enterTo: "opacity-100 scale-100",
159
+ className: " absolute size-full flex flex-col items-center justify-center",
160
+ children: jsx("div", {
161
+ className: "size-full border-2 border-primary-light dark:border-primary-dark text-primary-light dark:text-primary-dark rounded-full flex flex-col items-center justify-center box-border",
162
+ children: jsxs(TransitionChild, {
163
+ as: "div",
164
+ enter: "transition-all duration-200 delay-300 ease-out",
165
+ enterFrom: "opacity-0 scale-60",
166
+ enterTo: "opacity-100 scale-100",
167
+ className: "relative flex flex-col items-center justify-center",
168
+ children: [jsx(FontAwesomeIcon, {
169
+ icon: faCheck,
170
+ size: "2x"
171
+ }), jsx(FontAwesomeIcon, {
172
+ className: "absolute animate-ping",
173
+ icon: faCheck,
174
+ size: "2x"
175
+ })]
176
+ })
177
+ })
178
+ })
179
+ }), jsxs(Transition, {
180
+ as: "div",
181
+ show: status === "success",
182
+ className: "w-full text-center text-lg font-semibold flex flex-col items-center justify-center mt-2 relative",
183
+ enter: "transition-all ease-out duration-200 delay-200",
184
+ enterFrom: "opacity-0 -translate-y-2",
185
+ enterTo: "opacity-100 translate-y-0",
186
+ children: [jsx("span", {
187
+ children: "Verified!"
188
+ }), isTextPinging && jsx("span", {
189
+ className: "absolute animate-ping text-icon-text-light dark:text-icon-text-dark",
190
+ children: "Verified!"
191
+ })]
192
+ }), status === "success" && pivotHashHex && jsxs("div", {
193
+ className: "w-full text-center text-xs mt-3 font-mono text-icon-text-light dark:text-icon-text-dark break-all px-4",
194
+ children: ["pivot ", pivotHashHex.slice(0, 16), "..."]
195
+ })]
196
+ });
197
+ }
198
+
199
+ export { VerifyEnclavePage };
200
+ //# sourceMappingURL=VerifyEnclave.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyEnclave.mjs","sources":["../../../src/components/verify/VerifyEnclave.tsx"],"sourcesContent":[null],"names":["VerifyEnclavePage","props","appName","organizationId","stampWith","anchor","onSuccess","onError","successPageDuration","_useModal","useModal","isMobile","closeModal","_useZeroXKey","useZeroXKey","verifyLatestBootProof","hasRun","useRef","_useState","useState","_useState2","_slicedToArray","status","setStatus","_useState3","_useState4","pivotHashHex","setPivotHashHex","_useState5","undefined","_useState6","error","setError","_useState7","_useState8","isTextPinging","setIsTextPinging","useEffect","current","closeTimeoutRef","runAction","_ref","_asyncToGenerator","_regenerator","m","_callee","parsed","_t","w","_context","p","n","Promise","resolve","setTimeout","_objectSpread","v","manifest","a","apply","arguments","clearTimeout","_jsx","className","clsx","children","DeveloperError","developerTitle","developerMessages","Error","message","String","userTitle","userMessages","_jsxs","Spinner","strokeWidth","Transition","as","show","enter","enterFrom","enterTo","TransitionChild","FontAwesomeIcon","icon","faCheck","size","slice"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"AAyHA,OAAO,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAwB5E,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAM5B,MAAM,kBAAkB,CAAC;AAwD1B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkpLxD,CAAC"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"AAkIA,OAAO,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAuB5E,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAM5B,MAAM,kBAAkB,CAAC;AA0D1B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4uLxD,CAAC"}