aesirx-analytics 2.2.15 → 2.2.17

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/dist/index.js CHANGED
@@ -10,9 +10,10 @@ import {
10
10
  AnalyticsContextProvider_default,
11
11
  bg_default,
12
12
  getConsentTemplate,
13
+ no_default,
13
14
  privacy_default,
14
15
  useTranslation
15
- } from "./chunk-SBBLINO2.js";
16
+ } from "./chunk-P35CM6LS.js";
16
17
 
17
18
  // src/AnalyticsNext/index.tsx
18
19
  import React2, { useEffect as useEffect2, useState as useState2 } from "react";
@@ -75,14 +76,15 @@ var handle_default = AnalyticsHandle;
75
76
 
76
77
  // src/AnalyticsNext/index.tsx
77
78
  import dynamic from "next/dynamic";
78
- var ConsentComponent = dynamic(() => import("./Consent-7KAMDZ4V.js"), { ssr: false });
79
- var ConsentComponentCustom = dynamic(() => import("./ConsentCustom-BWBSRP5V.js"), { ssr: false });
79
+ var ConsentComponent = dynamic(() => import("./Consent-LAJMH5O6.js"), { ssr: false });
80
+ var ConsentComponentCustom = dynamic(() => import("./ConsentCustom-FMWN7JO6.js"), { ssr: false });
80
81
  var AnalyticsNext = ({
81
82
  router,
82
83
  attributes,
83
84
  oldLayout = false,
84
85
  loginApp,
85
86
  isLoggedApp,
87
+ isOptInReplaceAnalytics = false,
86
88
  children
87
89
  }) => {
88
90
  const [layout, setLayout] = useState2(process.env.NEXT_PUBLIC_CONSENT_LAYOUT ?? "simple-web-2");
@@ -121,7 +123,8 @@ var AnalyticsNext = ({
121
123
  isLoggedApp,
122
124
  gtagId,
123
125
  gtmId,
124
- layout
126
+ layout,
127
+ isOptInReplaceAnalytics
125
128
  }
126
129
  )))));
127
130
  };
@@ -167,9 +170,15 @@ var AnalyticsHandle2 = ({ location, history, children }) => {
167
170
  var handle_default2 = AnalyticsHandle2;
168
171
 
169
172
  // src/AnalyticsReact/index.tsx
170
- var ConsentComponent2 = React4.lazy(() => import("./Consent-7KAMDZ4V.js"));
171
- var ConsentComponentCustom2 = React4.lazy(() => import("./ConsentCustom-BWBSRP5V.js"));
172
- var AnalyticsReact = ({ location, history, oldLayout = false, children }) => {
173
+ var ConsentComponent2 = React4.lazy(() => import("./Consent-LAJMH5O6.js"));
174
+ var ConsentComponentCustom2 = React4.lazy(() => import("./ConsentCustom-FMWN7JO6.js"));
175
+ var AnalyticsReact = ({
176
+ location,
177
+ history,
178
+ oldLayout = false,
179
+ isOptInReplaceAnalytics = false,
180
+ children
181
+ }) => {
173
182
  const [layout, setLayout] = useState3(process.env.REACT_APP_CONSENT_LAYOUT ?? "simple-web-2");
174
183
  const [gtagId, setGtagId] = useState3(process.env.REACT_APP_ANALYTICS_GTAG_ID);
175
184
  const [gtmId, setGtmId] = useState3(process.env.REACT_APP_ANALYTICS_GTM_ID);
@@ -202,102 +211,290 @@ var AnalyticsReact = ({ location, history, oldLayout = false, children }) => {
202
211
  aesirXEndpoint: process.env.REACT_APP_ENDPOINT_URL ?? "https://api.aesirx.io",
203
212
  gtagId,
204
213
  gtmId,
205
- layout
214
+ layout,
215
+ isOptInReplaceAnalytics
206
216
  }
207
217
  ))));
208
218
  };
209
219
  var AnalyticsReact_default = AnalyticsReact;
210
220
 
211
- // src/Components/PaymentConsent.tsx
212
- import React5, { useEffect as useEffect5 } from "react";
213
- import { Button } from "react-bootstrap";
214
- var PaymentConsent = ({ show = false, handleClose }) => {
221
+ // src/Components/OptInConsent.tsx
222
+ import React5, { useEffect as useEffect5, useState as useState4 } from "react";
223
+ import { Button, Form } from "react-bootstrap";
224
+ var OptInConsent = ({
225
+ optInConsentData = window?.optInConsentData ? JSON.parse(window?.optInConsentData) : []
226
+ }) => {
227
+ const optInReplace = optInConsentData?.find((obj) => obj.replaceAnalyticsConsent);
215
228
  const { t } = useTranslation();
216
- const handleConsent = () => {
217
- sessionStorage.setItem("aesirx-analytics-payment", "true");
218
- window?.funcAfterPaymentConsent && window.funcAfterPaymentConsent();
219
- handleClose();
220
- };
229
+ const [showExpandRevoke, setShowExpandRevoke] = useState4(false);
230
+ const [showRevoke, setShowRevoke] = useState4(false);
231
+ const [revokeConsentOption, setRevokeConsentOption] = useState4(
232
+ optInReplace?.title ? `aesirx-analytics-optin-${optInReplace?.title}` : "aesirx-analytics-optin-default"
233
+ );
234
+ const optInRevokes = Object.keys(sessionStorage).filter((key) => key.startsWith("aesirx-analytics-optin")).map((key) => key);
221
235
  useEffect5(() => {
222
- if (sessionStorage.getItem("aesirx-analytics-payment") === "true") {
223
- window.funcAfterPaymentConsent && window.funcAfterPaymentConsent();
236
+ if (optInRevokes?.includes("aesirx-analytics-optin-default") || optInRevokes?.includes(`aesirx-analytics-optin-${optInReplace?.title}`)) {
237
+ setShowRevoke(true);
224
238
  }
225
- }, []);
226
- return /* @__PURE__ */ React5.createElement("div", { className: "aesirxconsent" }, /* @__PURE__ */ React5.createElement(
239
+ });
240
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null, optInConsentData?.map((optIn, key) => /* @__PURE__ */ React5.createElement(React5.Fragment, { key }, /* @__PURE__ */ React5.createElement(OptIntConsentDetail, { optIn, setShowRevoke }))), optInReplace && /* @__PURE__ */ React5.createElement("div", { className: "aesirxconsent" }, /* @__PURE__ */ React5.createElement(
227
241
  "div",
228
242
  {
229
243
  tabIndex: -1,
230
- className: `toast-container position-fixed m-md-3 ${show ? "top-50 start-50 translate-middle" : "bottom-0 end-0 opacity-0"}`
244
+ className: `toast-container position-fixed m-md-3 ${showExpandRevoke ? "top-50 start-50 translate-middle" : "bottom-0 end-0"}`
231
245
  },
232
- /* @__PURE__ */ React5.createElement("div", { className: `toast payment-consent ${show ? "show" : ""} custom` }, /* @__PURE__ */ React5.createElement("div", { className: "toast-body p-0 shadow mx-3 mx-md-0" }, /* @__PURE__ */ React5.createElement("div", { className: "bg-white" }, /* @__PURE__ */ React5.createElement(
246
+ /* @__PURE__ */ React5.createElement(
233
247
  "div",
234
248
  {
235
- className: `d-flex rounded-top align-items-center justify-content-between p-2 p-lg-3 fw-medium flex-wrap py-2 py-lg-3 px-4 header-consent-bg`,
236
- style: {
237
- borderBottom: "1px solid #DEDEDE"
238
- }
249
+ className: `toast revoke-toast custom ${showRevoke ? "show" : ""} ${showExpandRevoke ? "" : "minimize"}`
239
250
  },
240
- /* @__PURE__ */ React5.createElement("div", { className: "text-primary text-nowrap" }, t("txt_tracking_data_privacy")),
241
- /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center fs-14 text-primary" }, /* @__PURE__ */ React5.createElement(
242
- "a",
251
+ /* @__PURE__ */ React5.createElement("div", { className: "toast-body p-0 shadow mx-1 mx-md-0 mb-2 mb-md-0" }, /* @__PURE__ */ React5.createElement(
252
+ "div",
243
253
  {
244
- href: "https://shield.aesirx.io/",
245
- rel: "noreferrer",
246
- target: "_blank",
247
- className: "minimize-shield-wrapper position-relative text-decoration-none"
254
+ className: `revoke-wrapper minimize-shield-wrapper position-relative ${showExpandRevoke ? "bg-white" : ""}`
248
255
  },
249
- /* @__PURE__ */ React5.createElement(
256
+ !showExpandRevoke && /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(
250
257
  "img",
251
258
  {
252
- className: "cover-img position-absolute h-100 w-100 object-fit-cover z-1",
259
+ className: "cover-img position-absolute h-100 w-100 object-fit-cover",
253
260
  src: bg_default
254
261
  }
255
- ),
256
- /* @__PURE__ */ React5.createElement("div", { className: "minimize-shield position-relative z-2 py-2" }, /* @__PURE__ */ React5.createElement("img", { src: privacy_default, alt: "Shield of Privacy" }), t("txt_shield_of_privacy"))
262
+ ), /* @__PURE__ */ React5.createElement(
263
+ "div",
264
+ {
265
+ className: "minimize-shield",
266
+ onClick: () => {
267
+ setShowExpandRevoke(true);
268
+ }
269
+ },
270
+ /* @__PURE__ */ React5.createElement("img", { src: privacy_default, alt: "Shield of Privacy" }),
271
+ t("txt_shield_of_privacy")
272
+ )),
273
+ showExpandRevoke && /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(
274
+ "div",
275
+ {
276
+ className: `d-flex rounded-top align-items-center justify-content-between p-2 p-lg-3 fw-medium flex-wrap py-2 py-lg-3 px-4 header-consent-bg`,
277
+ style: {
278
+ borderBottom: "1px solid #DEDEDE"
279
+ }
280
+ },
281
+ /* @__PURE__ */ React5.createElement("div", { className: "text-primary text-nowrap" }, t("txt_tracking_data_privacy")),
282
+ /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center fs-14 text-primary" }, /* @__PURE__ */ React5.createElement(
283
+ "a",
284
+ {
285
+ href: "https://shield.aesirx.io/",
286
+ rel: "noreferrer",
287
+ target: "_blank",
288
+ className: "minimize-shield-wrapper position-relative text-decoration-none"
289
+ },
290
+ /* @__PURE__ */ React5.createElement(
291
+ "img",
292
+ {
293
+ className: "cover-img position-absolute h-100 w-100 object-fit-cover z-1",
294
+ src: bg_default
295
+ }
296
+ ),
297
+ /* @__PURE__ */ React5.createElement("div", { className: "minimize-shield position-relative z-2 py-2" }, /* @__PURE__ */ React5.createElement("img", { src: privacy_default, alt: "Shield of Privacy" }), t("txt_shield_of_privacy"))
298
+ ))
299
+ ), /* @__PURE__ */ React5.createElement(
300
+ "div",
301
+ {
302
+ className: "minimize-revoke",
303
+ onClick: () => {
304
+ setShowExpandRevoke(false);
305
+ }
306
+ },
307
+ /* @__PURE__ */ React5.createElement("img", { src: no_default })
308
+ ), /* @__PURE__ */ React5.createElement("div", { className: "p-3 bg-white" }, t("txt_you_can_revoke")), /* @__PURE__ */ React5.createElement(Form, { className: "mb-0 w-100 bg-white px-3" }, optInRevokes?.map((item, key) => {
309
+ return /* @__PURE__ */ React5.createElement(
310
+ Form.Check,
311
+ {
312
+ key,
313
+ id: `option-revoke-${item}`,
314
+ checked: revokeConsentOption === item,
315
+ type: "checkbox",
316
+ label: item === "aesirx-analytics-optin-default" ? t("txt_revoke_opt_in") : t("txt_revoke_opt_in") + " " + item?.replace("aesirx-analytics-optin-", ""),
317
+ value: item,
318
+ onChange: ({ target: { value } }) => {
319
+ setRevokeConsentOption(value);
320
+ }
321
+ }
322
+ );
323
+ })), /* @__PURE__ */ React5.createElement("div", { className: "rounded-bottom position-relative overflow-hidden bg-white" }, /* @__PURE__ */ React5.createElement("div", { className: "position-relative p-3" }, /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center flex-wrap" }, /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center w-100 justify-content-end" }, /* @__PURE__ */ React5.createElement(
324
+ "a",
325
+ {
326
+ className: "manage-consent fs-14 btn btn-outline-success rounded-pill py-2 py-lg-3 d-flex align-items-center justify-content-center w-100 w-lg-35",
327
+ href: "https://dapp.shield.aesirx.io/revoke-consent",
328
+ target: "_blank",
329
+ rel: "noreferrer"
330
+ },
331
+ t("txt_manage_consent")
332
+ ), /* @__PURE__ */ React5.createElement(
333
+ Button,
334
+ {
335
+ variant: "outline-success",
336
+ onClick: async () => {
337
+ if (revokeConsentOption) {
338
+ sessionStorage.removeItem(revokeConsentOption);
339
+ setShowExpandRevoke(false);
340
+ if (revokeConsentOption === `aesirx-analytics-optin-${optInReplace?.title}` || revokeConsentOption === "aesirx-analytics-optin-default") {
341
+ setTimeout(() => {
342
+ window.location.reload();
343
+ }, 1e3);
344
+ }
345
+ }
346
+ },
347
+ className: "d-flex align-items-center justify-content-center w-100 w-lg-35 revoke-btn fs-14 rounded-pill py-2 py-lg-3"
348
+ },
349
+ t("txt_revoke_consent")
350
+ ))))))
257
351
  ))
258
- ), /* @__PURE__ */ React5.createElement("div", { className: "p-4 pt-3 pb-0 bg-white" }, /* @__PURE__ */ React5.createElement("p", { className: "fw-semibold lh-160 text-primary mb-2" }, t("txt_payment_notice")), /* @__PURE__ */ React5.createElement("div", { className: "text-primary lh-160" }, t("txt_payment_1"), /* @__PURE__ */ React5.createElement("br", null), /* @__PURE__ */ React5.createElement("br", null), /* @__PURE__ */ React5.createElement(
259
- "div",
260
- {
261
- dangerouslySetInnerHTML: {
262
- __html: t("txt_payment_2", {
263
- interpolation: { escapeValue: false }
264
- })
265
- }
352
+ )
353
+ )));
354
+ };
355
+ var OptIntConsentDetail = ({ optIn, setShowRevoke }) => {
356
+ const { t } = useTranslation();
357
+ const [show, setShow] = useState4(false);
358
+ const [showBackdrop, setShowBackdrop] = useState4(true);
359
+ const [showExpandConsent, setShowExpandConsent] = useState4(true);
360
+ const handleConsent = () => {
361
+ setShow(false);
362
+ setShowBackdrop(false);
363
+ sessionStorage.setItem(
364
+ optIn?.title ? `aesirx-analytics-optin-${optIn?.title}` : "aesirx-analytics-optin-default",
365
+ "true"
366
+ );
367
+ if (optIn?.replaceAnalyticsConsent) {
368
+ setShowRevoke(true);
369
+ }
370
+ optIn?.handleConsent && optIn?.handleConsent();
371
+ window?.funcAfterOptInConsent && window.funcAfterOptInConsent();
372
+ window?.optInConsentData && document.querySelector(`.opt-in-consent.${optIn?.title}`).classList.remove("show");
373
+ };
374
+ const handleClose = () => {
375
+ setShow(false);
376
+ setShowBackdrop(false);
377
+ if (optIn?.replaceAnalyticsConsent) {
378
+ setShowExpandConsent(false);
379
+ sessionStorage.setItem("aesirx-analytics-rejected", "true");
380
+ }
381
+ optIn?.handleReject && optIn?.handleReject();
382
+ window.funcAfterRejectOptIn && window.funcAfterRejectOptIn();
383
+ window?.optInConsentData && document.querySelector(`.opt-in-consent.${optIn?.title}`).classList.remove("show");
384
+ };
385
+ useEffect5(() => {
386
+ if (sessionStorage.getItem(`aesirx-analytics-optin-${optIn?.title}`) === "true" || sessionStorage.getItem("aesirx-analytics-optin-default") === "true") {
387
+ window.funcAfterOptInConsent && window.funcAfterOptInConsent();
388
+ }
389
+ if (optIn?.replaceAnalyticsConsent === "true") {
390
+ if (sessionStorage.getItem("aesirx-analytics-rejected") === "true") {
391
+ setShow(false);
392
+ setShowExpandConsent(false);
393
+ } else if (sessionStorage.getItem(`aesirx-analytics-optin-${optIn?.title}`) !== "true") {
394
+ setShow(true);
266
395
  }
267
- ), /* @__PURE__ */ React5.createElement("br", null), t("txt_payment_3"), /* @__PURE__ */ React5.createElement("br", null), /* @__PURE__ */ React5.createElement("br", null), /* @__PURE__ */ React5.createElement(
396
+ }
397
+ }, []);
398
+ useEffect5(() => {
399
+ if (optIn?.show) {
400
+ setShow(true);
401
+ }
402
+ }, [optIn]);
403
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null, (show || optIn?.replaceAnalyticsConsent || window?.optInConsentData) && /* @__PURE__ */ React5.createElement(
404
+ "div",
405
+ {
406
+ className: `aesirxconsent opt-in-consent ${optIn?.title ?? ""} ${show ? "show" : ""} ${showExpandConsent ? "" : "show-minimize"}`
407
+ },
408
+ /* @__PURE__ */ React5.createElement("div", { className: `offcanvas-backdrop fade ${showBackdrop && show ? "show" : "d-none"}` }),
409
+ /* @__PURE__ */ React5.createElement(
268
410
  "div",
269
411
  {
270
- dangerouslySetInnerHTML: {
271
- __html: t("txt_payment_4", {
272
- interpolation: { escapeValue: false }
273
- })
274
- }
275
- }
276
- ))), /* @__PURE__ */ React5.createElement("div", { className: "rounded-bottom position-relative overflow-hidden text-white bg-white" }, /* @__PURE__ */ React5.createElement("div", { className: "position-relative pt-2 pt-lg-3 p-3" }, /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center justify-content-between flex-wrap" }, /* @__PURE__ */ React5.createElement(
277
- Button,
278
- {
279
- onClick: handleClose,
280
- variant: "outline-success",
281
- className: "border-2 fs-7 fw-bold text-primary rounded-pill py-13px px-5rem"
412
+ tabIndex: -1,
413
+ className: `toast-container position-fixed m-md-3 ${show ? "" : "opacity-0"}`
282
414
  },
283
- t("txt_reject_consent")
284
- ), /* @__PURE__ */ React5.createElement(
285
- Button,
286
- {
287
- onClick: handleConsent,
288
- variant: "outline-success",
289
- className: "border-2 fs-7 fw-bold text-primary rounded-pill py-13px px-5rem"
290
- },
291
- t("txt_yes_i_consent")
292
- )))))))
415
+ /* @__PURE__ */ React5.createElement(
416
+ "div",
417
+ {
418
+ className: `toast ${show ? "show" : ""} custom ${showExpandConsent ? "" : "minimize"}`
419
+ },
420
+ /* @__PURE__ */ React5.createElement("div", { className: "toast-body p-0 shadow mx-3 mx-md-0" }, !showExpandConsent && optIn?.replaceAnalyticsConsent ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { className: "minimize-shield-wrapper position-relative" }, /* @__PURE__ */ React5.createElement(
421
+ "img",
422
+ {
423
+ className: "cover-img position-absolute h-100 w-100 object-fit-cover",
424
+ src: bg_default
425
+ }
426
+ ), /* @__PURE__ */ React5.createElement(
427
+ "div",
428
+ {
429
+ className: "minimize-shield",
430
+ onClick: () => {
431
+ setShow(true);
432
+ setShowExpandConsent(true);
433
+ sessionStorage.removeItem("aesirx-analytics-rejected");
434
+ }
435
+ },
436
+ /* @__PURE__ */ React5.createElement("img", { src: privacy_default, alt: "Shield of Privacy" }),
437
+ t("txt_shield_of_privacy")
438
+ ))) : /* @__PURE__ */ React5.createElement("div", { className: "bg-white" }, /* @__PURE__ */ React5.createElement(
439
+ "div",
440
+ {
441
+ className: `d-flex rounded-top align-items-center justify-content-between p-2 p-lg-3 fw-medium flex-wrap py-2 py-lg-3 px-4 header-consent-bg`,
442
+ style: {
443
+ borderBottom: "1px solid #DEDEDE"
444
+ }
445
+ },
446
+ /* @__PURE__ */ React5.createElement("div", { className: "text-primary text-nowrap" }, t("txt_tracking_data_privacy")),
447
+ /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center fs-14 text-primary" }, /* @__PURE__ */ React5.createElement(
448
+ "a",
449
+ {
450
+ href: "https://shield.aesirx.io/",
451
+ rel: "noreferrer",
452
+ target: "_blank",
453
+ className: "minimize-shield-wrapper position-relative text-decoration-none"
454
+ },
455
+ /* @__PURE__ */ React5.createElement(
456
+ "img",
457
+ {
458
+ className: "cover-img position-absolute h-100 w-100 object-fit-cover z-1",
459
+ src: bg_default
460
+ }
461
+ ),
462
+ /* @__PURE__ */ React5.createElement("div", { className: "minimize-shield position-relative z-2 py-2" }, /* @__PURE__ */ React5.createElement("img", { src: privacy_default, alt: "Shield of Privacy" }), t("txt_shield_of_privacy"))
463
+ ))
464
+ ), /* @__PURE__ */ React5.createElement("div", { className: "p-4 pt-3 pb-0 bg-white" }, /* @__PURE__ */ React5.createElement(
465
+ "div",
466
+ {
467
+ dangerouslySetInnerHTML: {
468
+ __html: optIn?.content ?? ""
469
+ }
470
+ }
471
+ )), /* @__PURE__ */ React5.createElement("div", { className: "rounded-bottom position-relative overflow-hidden text-white bg-white" }, /* @__PURE__ */ React5.createElement("div", { className: "position-relative pt-2 pt-lg-3 p-3" }, /* @__PURE__ */ React5.createElement("div", { className: "d-flex align-items-center justify-content-between flex-wrap" }, /* @__PURE__ */ React5.createElement(
472
+ Button,
473
+ {
474
+ onClick: handleClose,
475
+ variant: "outline-success",
476
+ className: "border-2 fs-7 fw-bold text-primary rounded-pill"
477
+ },
478
+ t("txt_reject_consent")
479
+ ), /* @__PURE__ */ React5.createElement(
480
+ Button,
481
+ {
482
+ onClick: handleConsent,
483
+ variant: "outline-success",
484
+ className: "border-2 fs-7 fw-bold text-primary rounded-pill"
485
+ },
486
+ t("txt_yes_i_consent")
487
+ ))))))
488
+ )
489
+ )
293
490
  ));
294
491
  };
295
- var PaymentConsent_default = PaymentConsent;
492
+ var OptInConsent_default = OptInConsent;
296
493
  export {
297
494
  AnalyticsContext,
298
495
  AnalyticsNext_default as AnalyticsNext,
299
496
  AnalyticsReact_default as AnalyticsReact,
300
- PaymentConsent_default as PaymentConsent,
497
+ OptInConsent_default as OptInConsent,
301
498
  fingerprint_default as getFingerprint,
302
499
  trackEvent
303
500
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aesirx-analytics",
3
- "version": "2.2.15",
3
+ "version": "2.2.17",
4
4
  "license": "GPL-3.0-only",
5
5
  "author": "AesirX",
6
6
  "repository": "https://gitlab.redweb.dk/aesirx/analytics",
@@ -14,7 +14,7 @@
14
14
  "@concordium/web-sdk": "^7.0.4-rc.3",
15
15
  "@web3modal/ethereum": "^2.7.0",
16
16
  "@web3modal/react": "^2.7.0",
17
- "aesirx-sso": "^1.4.13",
17
+ "aesirx-sso": "^1.4.15",
18
18
  "axios": "^1.6.0",
19
19
  "bootstrap": "^5.3.2",
20
20
  "bowser": "^2.11.0",