@pelican-identity/react 2.0.28 → 2.0.30

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pelican-identity/react",
3
- "version": "2.0.28",
3
+ "version": "2.0.30",
4
4
  "description": "React components for Pelican Identity authentication",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -21,7 +21,7 @@
21
21
  "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
22
22
  },
23
23
  "dependencies": {
24
- "@pelican-identity/auth-core": "1.2.25"
24
+ "@pelican-identity/auth-core": "1.2.27"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/react": "^19.0.4",
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanAuth.d.ts","sourceRoot":"","sources":["../../src/components/PelicanAuth.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,QAAA,MAAM,WAAW,GAAI,QAAQ,mBAAmB,4CA8lB/C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,433 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect } from "react";
3
- import PelicanButton from "./PelicanButton";
4
- import { usePelicanAuth } from "../hooks/usePelicanAuth";
5
- import StoreIcons from "./StoreIcons";
6
- const PelicanAuth = (config) => {
7
- const { start, qr, state, deeplink, isProcessing, stop, error, successMessage, useQrInstead, } = usePelicanAuth({
8
- projectId: config.projectId,
9
- publicKey: config.publicKey,
10
- authType: config.authType,
11
- onClose: config.onClose,
12
- continuousMode: config.continuousMode,
13
- forceQRCode: config.forceQRCode,
14
- onSuccess: (identity) => {
15
- config.onSuccess(identity);
16
- },
17
- onError: (error) => {
18
- config.onError?.(error);
19
- },
20
- });
21
- useEffect(() => {
22
- if (config.continuousMode) {
23
- start();
24
- }
25
- }, [config.continuousMode]);
26
- return (_jsxs(_Fragment, { children: [_jsx("style", { children: `@keyframes fadeUp {
27
- from {
28
- opacity: 0;
29
- transform: translateY(20px);
30
- }
31
- to {
32
- opacity: 1;
33
- transform: translateY(0);
34
- }
35
- }
36
-
37
- @keyframes spin {
38
- to {
39
- transform: rotate(360deg);
40
- }
41
- }
42
-
43
- @keyframes successPulse {
44
- 0%,
45
- 100% {
46
- transform: scale(1);
47
- opacity: 1;
48
- }
49
- 50% {
50
- transform: scale(1.05);
51
- opacity: 0.9;
52
- }
53
- }
54
-
55
- .auth-container {
56
- width: 300px;
57
- max-width: fit-content;
58
- padding: 1rem;
59
- margin-top: 0.3rem;
60
- position: relative;
61
- animation: fadeUp 0.5s ease-out;
62
- background-color: #f9fafb;
63
- border-radius: 2.5rem;
64
- display: flex;
65
- flex-direction: column;
66
- justify-content: space-between;
67
- align-items: center;
68
- gap: 1rem;
69
- min-height: 320px;
70
- }
71
- .js-auth-container {
72
- width: 300px;
73
- max-width: fit-content;
74
- padding: 1rem;
75
- margin-top: 0.3rem;
76
- position: relative;
77
- background-color: #f9fafb;
78
- border-radius: 2.5rem;
79
- display: flex;
80
- flex-direction: column;
81
- justify-content: space-between;
82
- align-items: center;
83
- gap: 1rem;
84
- min-height: 320px;
85
- }
86
-
87
- .pelican-modal-close-btn {
88
- all: unset; /* Reset all inherited styles */
89
- background-color: #2b2b2b !important;
90
- border: none !important;
91
- padding: 0.3rem !important;
92
- cursor: pointer !important;
93
- transition: opacity 0.2s !important;
94
- height: 1.5rem !important;
95
- width: 1.5rem !important;
96
- display: flex !important;
97
- align-items: center !important;
98
- justify-content: center !important;
99
- border-radius: 50% !important;
100
- box-sizing: border-box !important;
101
- margin: 0 1rem !important;
102
- }
103
-
104
- .pelican-modal-close-btn:hover {
105
- opacity: 0.6 !important;
106
- }
107
-
108
- .pelican-modal-close-btn svg {
109
- display: block !important;
110
- width: 100% !important;
111
- height: 100% !important;
112
- }
113
-
114
- .retry-container {
115
- text-align: center;
116
- padding: 3rem 0;
117
- }
118
-
119
- .retry-container > div:first-child {
120
- margin-bottom: 1rem;
121
- }
122
-
123
- .retry-text {
124
- font-size: 1.125rem;
125
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
126
- }
127
-
128
- .content-wrapper {
129
- display: flex;
130
- flex-direction: column;
131
- justify-content: center;
132
- align-items: center;
133
- gap: 2rem;
134
- }
135
-
136
- .unpaired-container {
137
- text-align: center;
138
- display: flex;
139
- flex-direction: column;
140
- }
141
-
142
- .main-heading {
143
- font-size: 0.75rem;
144
- font-weight: 600;
145
- color: #585858;
146
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
147
- }
148
-
149
- @media (min-width: 768px) {
150
- .main-heading {
151
- font-size: 1rem;
152
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
153
- }
154
- }
155
-
156
- @media (min-width: 1024px) {
157
- .main-heading {
158
- font-size: 1rem;
159
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
160
- }
161
- }
162
-
163
- .mobile-auth-container {
164
- display: flex;
165
- flex-direction: column;
166
- gap: 0.7rem;
167
- width: 253px;
168
- }
169
-
170
- .logo-container {
171
- display: flex;
172
- justify-content: center;
173
- padding: 2rem 0;
174
- }
175
-
176
- .open-app-link {
177
- display: inline-block;
178
- padding: 0.7rem 1.25rem;
179
- background-color: #101010ff;
180
- width: fit-content;
181
- align-self: center;
182
-
183
- border-radius: 28px;
184
- color: #fff;
185
- font-weight: 500;
186
- font-size: 1rem;
187
- text-decoration: none;
188
- transition: background-color 0.2s;
189
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
190
- }
191
-
192
- .open-app-link:hover {
193
- opacity: 0.8;
194
- }
195
-
196
- .helper-text {
197
- font-size: 0.75rem;
198
- color: #6b7280;
199
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
200
- }
201
-
202
- .qr-container {
203
- display: flex;
204
- justify-content: center;
205
- }
206
-
207
- .qr-wrapper {
208
- display: flex;
209
- justify-content: center;
210
- align-items: center;
211
- overflow: hidden;
212
- border-radius: 2rem;
213
- background-color: #fff;
214
- padding: 0.2rem;
215
- height: 244px;
216
- width: 244px;
217
- }
218
-
219
- .qr-image {
220
- height: 90%;
221
- width: 90%;
222
- }
223
-
224
- .loader-container {
225
- display: flex;
226
- justify-content: center;
227
- }
228
-
229
- .instruction-text {
230
- font-size: 0.875rem;
231
- color: #9ca3af;
232
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
233
- }
234
-
235
- .paired-container {
236
- text-align: center;
237
- display: flex;
238
- flex-direction: column;
239
- gap: 1rem;
240
- max-width: 250px;
241
- }
242
-
243
- .paired-heading {
244
- font-size: 1rem;
245
- font-weight: 800;
246
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
247
- }
248
-
249
- @media (min-width: 768px) {
250
- .paired-heading {
251
- font-size: 1rem;
252
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
253
- }
254
- }
255
-
256
- .success-message {
257
- background-color: #121212;
258
- color: #d9eb1b;
259
- padding: 0.5rem 1rem;
260
- border-radius: 1.3rem;
261
- font-weight: 700;
262
- font-size: 1rem;
263
- animation: successPulse 0.2s ease-in-out;
264
- margin: 0.5rem 0;
265
- font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
266
- width: 300px;
267
- max-width: fit-content;
268
- }
269
-
270
- .auto-renew-badge {
271
- display: inline-block;
272
- background-color: rgba(217, 235, 27, 0.2);
273
- border: 1px solid #d9eb1b;
274
- color: #d9eb1b;
275
- padding: 0.25rem 0.75rem;
276
- border-radius: 9999px;
277
- font-size: 0.75rem;
278
- font-weight: 600;
279
- margin-top: 0.5rem;
280
- }
281
-
282
- .scan-btn {
283
- all: unset;
284
- font-size: 0.8rem;
285
- color: #626262ff;
286
- font-weight: 600;
287
- cursor: pointer;
288
- font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
289
- }
290
- .error-wrapper {
291
- display: flex;
292
- justify-content: center;
293
- align-items: center;
294
- text-align: center;
295
- border-radius: 1.5rem;
296
- border: 1px solid rgb(255, 236, 236);
297
- background-color: rgb(255, 255, 255);
298
- width: 250px;
299
- height: 80px;
300
- }
301
-
302
- .error-message {
303
- font-size: 0.75rem;
304
- font-weight: 400;
305
- color: rgb(255, 139, 139);
306
- font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
307
- max-width: 70%;
308
- }
309
-
310
- .loader {
311
- width: 48px;
312
- height: 48px;
313
- position: relative;
314
- }
315
- .loader::before,
316
- .loader::after {
317
- content: "";
318
- position: absolute;
319
- left: 50%;
320
- top: 50%;
321
- transform: translate(-50%, -50%);
322
- width: 48em;
323
- height: 48em;
324
- background-image: radial-gradient(circle 10px, #585858 100%, transparent 0),
325
- radial-gradient(circle 10px, #585858 100%, transparent 0),
326
- radial-gradient(circle 10px, #585858 100%, transparent 0),
327
- radial-gradient(circle 10px, #585858 100%, transparent 0),
328
- radial-gradient(circle 10px, #585858 100%, transparent 0),
329
- radial-gradient(circle 10px, #585858 100%, transparent 0),
330
- radial-gradient(circle 10px, #585858 100%, transparent 0),
331
- radial-gradient(circle 10px, #585858 100%, transparent 0),
332
- radial-gradient(circle 10px, #585858 100%, transparent 0);
333
- background-position: 0em -18em, 0em 18em, 18em 0em, -18em 0em, 13em -13em,
334
- -13em -13em, 13em 13em, -13em 13em;
335
- background-repeat: no-repeat;
336
- font-size: 0.5px;
337
- border-radius: 50%;
338
- animation: blast 1s ease-in infinite;
339
- }
340
- .loader::after {
341
- font-size: 1px;
342
- background: #585858;
343
- animation: bounce 1s ease-in infinite;
344
- }
345
-
346
- @keyframes bounce {
347
- 0%,
348
- 100% {
349
- font-size: 0.75px;
350
- }
351
- 50% {
352
- font-size: 1.5px;
353
- }
354
- }
355
- @keyframes blast {
356
- 0%,
357
- 40% {
358
- font-size: 0.5px;
359
- }
360
- 70% {
361
- opacity: 1;
362
- font-size: 4px;
363
- }
364
- 100% {
365
- font-size: 6px;
366
- opacity: 0;
367
- }
368
- }
369
- ` }), _jsxs("section", { children: [_jsx("div", { style: {
370
- width: "100%",
371
- justifyContent: "space-between",
372
- alignItems: "center",
373
- maxWidth: "520px",
374
- }, children: !config.continuousMode && (_jsxs("div", { style: {
375
- width: "100%",
376
- display: "flex",
377
- justifyContent: "space-between",
378
- alignItems: "center",
379
- }, children: [_jsx("button", { type: "button", style: {
380
- border: "none",
381
- background: "transparent",
382
- cursor: "pointer",
383
- }, onClick: () => {
384
- start();
385
- }, disabled: config.continuousMode, children: config.buttonComponent ? (config.buttonComponent) : (_jsx(PelicanButton, { authType: config.authType, text: config.buttonText })) }), state !== "idle" && (_jsx("button", { onClick: () => {
386
- stop();
387
- config.onClose?.();
388
- }, className: "pelican-modal-close-btn", "aria-label": "Close", type: "button", style: {
389
- border: "none !important",
390
- padding: "0.3rem !important",
391
- cursor: "pointer !important",
392
- }, children: _jsx("svg", { fill: "#fff", stroke: "#fff", viewBox: "0 0 24 24", role: "img", "aria-label": "close icon", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M6 18L18 6M6 6l12 12", height: "24", width: "24", fill: "#fff", stroke: "#fff", color: "#fff" }) }) }))] })) }), _jsx("div", { style: {
393
- width: "100%",
394
- display: "flex",
395
- justifyContent: "center",
396
- alignItems: "center",
397
- maxWidth: "520px",
398
- }, children: state !== "idle" && (_jsxs("div", { className: "auth-container", children: [successMessage && (_jsxs("div", { className: "success-message", style: { textAlign: "center" }, children: [successMessage, config.continuousMode && (_jsx("p", { style: {
399
- fontSize: "0.8rem",
400
- marginTop: "0.5rem",
401
- color: "#f3f3f3",
402
- textAlign: "center",
403
- }, children: "Preparing next session..." }))] })), error && state === "error" && (_jsx("div", { className: "error-wrapper", children: _jsx("p", { className: "error-message", children: error.message }) })), isProcessing ? (_jsxs("div", { className: "content-wrapper", children: [_jsx("h2", { className: "main-heading", children: "one sec..." }), _jsx("span", { className: "loader", style: { margin: "1rem auto", width: "252px" } })] })) : (_jsx("div", { className: "content-wrapper", children: state === "awaiting-pair" && !successMessage && (_jsxs("div", { className: "unpaired-container", children: [!deeplink && !config.forceQRCode && (_jsx("h2", { className: "main-heading", children: "Open Pelican Vault" })), !config.forceQRCode && deeplink ? (_jsxs("div", { className: "mobile-auth-container", children: [_jsx("div", { className: "logo-container", children: _jsx("img", { src: "https://res.cloudinary.com/de0jr8mcm/image/upload/v1765904735/pelican/pelican_icon_r9ghqw.png ", alt: "Pelican Logo", style: { width: "54px", height: "54px" } }) }), _jsx("a", { href: deeplink, className: "open-app-link", children: "Open Pelican Vault" }), _jsxs("p", { className: "helper-text", children: ["Open the app to", " ", config.authType === "login"
404
- ? "login"
405
- : config.authType === "signup"
406
- ? "signup"
407
- : config.authType === "id-verification"
408
- ? "verify identity"
409
- : "authenticate"] }), _jsxs("div", { style: {
410
- display: "flex",
411
- alignItems: "center",
412
- gap: "0.5rem",
413
- }, children: [_jsx("div", { style: {
414
- width: "100%",
415
- height: "1px",
416
- backgroundColor: "#e2e2e2ff",
417
- } }), _jsx("p", { style: {
418
- fontSize: "0.8rem",
419
- fontFamily: "system-ui, Avenir, Helvetica, Arial, sans-serif",
420
- color: "#a8a8a8ff",
421
- }, children: "Or" }), _jsx("div", { style: {
422
- width: "100%",
423
- height: "1px",
424
- backgroundColor: "#e2e2e2ff",
425
- } })] }), _jsx("button", { type: "button", className: "scan-btn", onClick: useQrInstead, children: "Use QR Code" })] })) : (config.forceQRCode &&
426
- qr &&
427
- state === "awaiting-pair") ||
428
- (!config.forceQRCode &&
429
- qr &&
430
- state === "awaiting-pair") ? (_jsx("div", { className: "qr-container", children: _jsxs("div", { className: "qr-wrapper", children: [qr && (_jsx("img", { src: qr, alt: "QR Code", className: "qr-image" })), !qr && _jsx("span", { className: "loader" })] }) })) : (_jsx("div", { className: "loader-container", children: _jsx("span", { className: "loader" }) }))] })) })), _jsx(StoreIcons, {})] })) })] })] }));
431
- };
432
- export default PelicanAuth;
433
- //# sourceMappingURL=PelicanAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanAuth.js","sourceRoot":"","sources":["../../src/components/PelicanAuth.tsx"],"names":[],"mappings":"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"}