@volr/react-ui 0.1.91 → 0.1.93

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.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React10 = require('react');
3
+ var React11 = require('react');
4
4
  var reactDom = require('react-dom');
5
5
  var react = require('@volr/react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -10,7 +10,7 @@ var qrcode_react = require('qrcode.react');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var React10__default = /*#__PURE__*/_interopDefault(React10);
13
+ var React11__default = /*#__PURE__*/_interopDefault(React11);
14
14
 
15
15
  // src/providers/VolrUIProvider.tsx
16
16
 
@@ -266,13 +266,13 @@ var translations = {
266
266
  function getTranslations(locale = "en") {
267
267
  return translations[locale] || translations.en;
268
268
  }
269
- var I18nContext = React10.createContext(null);
269
+ var I18nContext = React11.createContext(null);
270
270
  function interpolate(text, params) {
271
271
  if (!params) return text;
272
272
  return text.replace(/\{\{(\w+)\}\}/g, (_, key) => params[key] ?? `{{${key}}}`);
273
273
  }
274
274
  function useI18n() {
275
- const context = React10.useContext(I18nContext);
275
+ const context = React11.useContext(I18nContext);
276
276
  if (!context) {
277
277
  return {
278
278
  locale: "en",
@@ -307,9 +307,9 @@ function detectLocale() {
307
307
  return lang.startsWith("ko") ? "ko" : "en";
308
308
  }
309
309
  function I18nProvider({ children }) {
310
- const [locale, setLocale] = React10.useState(detectLocale());
311
- const translations2 = React10.useMemo(() => getTranslations(locale), [locale]);
312
- const t = React10.useMemo(() => {
310
+ const [locale, setLocale] = React11.useState(detectLocale());
311
+ const translations2 = React11.useMemo(() => getTranslations(locale), [locale]);
312
+ const t = React11.useMemo(() => {
313
313
  return (key, params) => {
314
314
  const keys = key.split(".");
315
315
  let value2 = translations2;
@@ -326,7 +326,7 @@ function I18nProvider({ children }) {
326
326
  return typeof value2 === "string" ? interpolate(value2, params) : key;
327
327
  };
328
328
  }, [translations2]);
329
- const value = React10.useMemo(
329
+ const value = React11.useMemo(
330
330
  () => ({
331
331
  locale,
332
332
  translations: translations2,
@@ -338,9 +338,9 @@ function I18nProvider({ children }) {
338
338
  return /* @__PURE__ */ jsxRuntime.jsx(I18nContext.Provider, { value, children });
339
339
  }
340
340
  var useTranslation = useI18n;
341
- var VolrModalContext = React10.createContext(null);
341
+ var VolrModalContext = React11.createContext(null);
342
342
  var useVolrModal = () => {
343
- const context = React10.useContext(VolrModalContext);
343
+ const context = React11.useContext(VolrModalContext);
344
344
  if (!context) {
345
345
  throw new Error("useVolrModal must be used within VolrUIProvider");
346
346
  }
@@ -349,19 +349,22 @@ var useVolrModal = () => {
349
349
  var VolrModalProvider = ({
350
350
  children
351
351
  }) => {
352
- const [isOpen, setIsOpen] = React10.useState(false);
353
- const [mode, setMode] = React10.useState("account");
354
- const [asset, setAsset] = React10.useState(null);
355
- const open = React10.useCallback((options) => {
352
+ const [isOpen, setIsOpen] = React11.useState(false);
353
+ const [mode, setMode] = React11.useState("account");
354
+ const [asset, setAsset] = React11.useState(null);
355
+ const [paymentOptions, setPaymentOptions] = React11.useState(null);
356
+ const open = React11.useCallback((options) => {
356
357
  setMode(options?.mode ?? "account");
357
358
  setAsset(options?.asset ?? null);
359
+ setPaymentOptions(options?.payment ?? null);
358
360
  setIsOpen(true);
359
361
  }, []);
360
- const close = React10.useCallback(() => {
362
+ const close = React11.useCallback(() => {
361
363
  setIsOpen(false);
362
364
  setAsset(null);
365
+ setPaymentOptions(null);
363
366
  }, []);
364
- return /* @__PURE__ */ jsxRuntime.jsx(VolrModalContext.Provider, { value: { isOpen, mode, asset, open, close }, children });
367
+ return /* @__PURE__ */ jsxRuntime.jsx(VolrModalContext.Provider, { value: { isOpen, mode, asset, paymentOptions, open, close }, children });
365
368
  };
366
369
  var twMerge = tailwindMerge.extendTailwindMerge({
367
370
  prefix: "volr:"
@@ -370,11 +373,11 @@ function cn(...inputs) {
370
373
  return twMerge(clsx.clsx(inputs));
371
374
  }
372
375
  function useMediaQuery(query) {
373
- const [matches, setMatches] = React10.useState(() => {
376
+ const [matches, setMatches] = React11.useState(() => {
374
377
  if (typeof window === "undefined") return false;
375
378
  return window.matchMedia(query).matches;
376
379
  });
377
- React10.useEffect(() => {
380
+ React11.useEffect(() => {
378
381
  if (typeof window === "undefined") return;
379
382
  const mql = window.matchMedia(query);
380
383
  const handler = (event) => setMatches(event.matches);
@@ -386,14 +389,14 @@ function useMediaQuery(query) {
386
389
  }
387
390
 
388
391
  // src/generated/volr-sdk-css.ts
389
- var VOLR_SDK_CSS = '/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--volr-tw-translate-x:0;--volr-tw-translate-y:0;--volr-tw-translate-z:0;--volr-tw-space-y-reverse:0;--volr-tw-border-style:solid;--volr-tw-gradient-position:initial;--volr-tw-gradient-from:#0000;--volr-tw-gradient-via:#0000;--volr-tw-gradient-to:#0000;--volr-tw-gradient-stops:initial;--volr-tw-gradient-via-stops:initial;--volr-tw-gradient-from-position:0%;--volr-tw-gradient-via-position:50%;--volr-tw-gradient-to-position:100%;--volr-tw-leading:initial;--volr-tw-font-weight:initial;--volr-tw-shadow:0 0 #0000;--volr-tw-shadow-color:initial;--volr-tw-shadow-alpha:100%;--volr-tw-inset-shadow:0 0 #0000;--volr-tw-inset-shadow-color:initial;--volr-tw-inset-shadow-alpha:100%;--volr-tw-ring-color:initial;--volr-tw-ring-shadow:0 0 #0000;--volr-tw-inset-ring-color:initial;--volr-tw-inset-ring-shadow:0 0 #0000;--volr-tw-ring-inset:initial;--volr-tw-ring-offset-width:0px;--volr-tw-ring-offset-color:#fff;--volr-tw-ring-offset-shadow:0 0 #0000;--volr-tw-blur:initial;--volr-tw-brightness:initial;--volr-tw-contrast:initial;--volr-tw-grayscale:initial;--volr-tw-hue-rotate:initial;--volr-tw-invert:initial;--volr-tw-opacity:initial;--volr-tw-saturate:initial;--volr-tw-sepia:initial;--volr-tw-drop-shadow:initial;--volr-tw-drop-shadow-color:initial;--volr-tw-drop-shadow-alpha:100%;--volr-tw-drop-shadow-size:initial;--volr-tw-duration:initial;--volr-tw-ease:initial}}}@layer theme{:root,:host{--volr-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--volr-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--volr-color-red-50:oklch(97.1% .013 17.38);--volr-color-red-200:oklch(88.5% .062 18.334);--volr-color-red-600:oklch(57.7% .245 27.325);--volr-color-red-700:oklch(50.5% .213 27.518);--volr-color-green-600:oklch(62.7% .194 149.214);--volr-color-emerald-300:oklch(84.5% .143 164.978);--volr-color-emerald-400:oklch(76.5% .177 163.223);--volr-color-emerald-500:oklch(69.6% .17 162.48);--volr-color-emerald-600:oklch(59.6% .145 163.225);--volr-color-teal-400:oklch(77.7% .152 181.912);--volr-color-teal-500:oklch(70.4% .14 182.503);--volr-color-cyan-400:oklch(78.9% .154 211.53);--volr-color-slate-50:oklch(98.4% .003 247.858);--volr-color-slate-100:oklch(96.8% .007 247.896);--volr-color-slate-200:oklch(92.9% .013 255.508);--volr-color-slate-300:oklch(86.9% .022 252.894);--volr-color-slate-400:oklch(70.4% .04 256.788);--volr-color-slate-500:oklch(55.4% .046 257.417);--volr-color-slate-600:oklch(44.6% .043 257.281);--volr-color-slate-900:oklch(20.8% .042 265.755);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-black:#000;--volr-color-white:#fff;--volr-spacing:.25rem;--volr-container-md:28rem;--volr-container-4xl:56rem;--volr-text-xs:.75rem;--volr-text-xs--line-height:calc(1/.75);--volr-text-sm:.875rem;--volr-text-sm--line-height:calc(1.25/.875);--volr-text-base:1rem;--volr-text-base--line-height:calc(1.5/1);--volr-text-lg:1.125rem;--volr-text-lg--line-height:calc(1.75/1.125);--volr-text-xl:1.25rem;--volr-text-xl--line-height:calc(1.75/1.25);--volr-text-2xl:1.5rem;--volr-text-2xl--line-height:calc(2/1.5);--volr-text-8xl:6rem;--volr-text-8xl--line-height:1;--volr-font-weight-medium:500;--volr-font-weight-semibold:600;--volr-font-weight-bold:700;--volr-leading-relaxed:1.625;--volr-radius-md:.375rem;--volr-radius-lg:.5rem;--volr-radius-xl:.75rem;--volr-radius-2xl:1rem;--volr-radius-3xl:1.5rem;--volr-ease-out:cubic-bezier(0,0,.2,1);--volr-animate-spin:spin 1s linear infinite;--volr-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--volr-blur-2xl:40px;--volr-default-transition-duration:.15s;--volr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--volr-default-font-family:var(--volr-font-sans);--volr-default-mono-font-family:var(--volr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--volr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--volr-default-font-feature-settings,normal);font-variation-settings:var(--volr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--volr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--volr-default-mono-font-feature-settings,normal);font-variation-settings:var(--volr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{--volr-primary-color:var(--volr-accent-color,#303030);--volr-font-family:var(--volr-custom-font,inherit);--volr-bg:#fff;--volr-bg-secondary:#f8fafc;--volr-bg-tertiary:#f1f5f9;--volr-text:#0f172a;--volr-text-secondary:#475569;--volr-text-muted:#94a3b8;--volr-border:#e2e8f0;--volr-border-strong:#cbd5e1;--volr-hover-bg:#f8fafc;--volr-error-bg:#fef2f2;--volr-error-border:#fecaca;--volr-error-text:#991b1b}:host([data-theme=dark]){--volr-bg:#1c1c1e;--volr-bg-secondary:#2c2c2e;--volr-bg-tertiary:#3a3a3c;--volr-text:#f5f5f7;--volr-text-secondary:#c7c7cc;--volr-text-muted:#8e8e93;--volr-border:#3a3a3c;--volr-border-strong:#48484a;--volr-hover-bg:#2c2c2e;--volr-error-bg:#3c1f1f;--volr-error-border:#7f1d1d;--volr-error-text:#fca5a5}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family);color:var(--volr-text)}button,input,select,textarea{color:var(--volr-text);background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:var(--volr-text-muted)}h1,h2,h3{color:var(--volr-text);margin:0;font-weight:700}h1{font-size:1.875rem;line-height:2.25rem}h2{font-size:1.5rem;line-height:2rem}h3{font-size:1.25rem;line-height:1.75rem}p{margin:0}}@layer components{.volr-dialog-overlay{inset:calc(var(--volr-spacing)*0);z-index:40;background-color:var(--volr-color-black);position:fixed}@supports (color:color-mix(in lab, red, red)){.volr-dialog-overlay{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr-dialog-content{z-index:50;border-radius:var(--volr-radius-2xl);border-style:var(--volr-tw-border-style);padding:calc(var(--volr-spacing)*7);--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow);background-color:var(--volr-bg);border-width:1px;border-color:var(--volr-border-strong);width:calc(100% - 2rem);max-width:28rem;max-height:85vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}@media (max-width:640px){.volr-dialog-content{top:auto;right:calc(var(--volr-spacing)*0);bottom:calc(var(--volr-spacing)*0);left:calc(var(--volr-spacing)*0);border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:100%;margin:0 auto;transform:translateY(0)}}.volr-dialog-close{top:calc(var(--volr-spacing)*4);right:calc(var(--volr-spacing)*4);height:calc(var(--volr-spacing)*8);width:calc(var(--volr-spacing)*8);color:var(--volr-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.volr-dialog-close:hover{background-color:var(--volr-hover-bg);color:var(--volr-text-secondary)}.volr-dialog-close:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{border:1px solid var(--volr-border-strong);background-color:var(--volr-bg);width:100%;color:var(--volr-text);border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:var(--volr-text-muted)}.volr-email-input:focus{border-color:var(--volr-border-strong);box-shadow:0 0 0 2px var(--volr-border-strong)}.volr-option-button{border:1px solid var(--volr-border);background-color:var(--volr-bg);width:100%;color:var(--volr-text);cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;transition:background-color .15s ease-out,border-color .15s ease-out,box-shadow .15s ease-out;display:flex}.volr-option-button:hover{background-color:var(--volr-hover-bg);border-color:var(--volr-border)}.volr-option-button:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}}@layer utilities{.volr\\:pointer-events-auto{pointer-events:auto}.volr\\:pointer-events-none{pointer-events:none}.volr\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.volr\\:absolute{position:absolute}.volr\\:fixed{position:fixed}.volr\\:relative{position:relative}.volr\\:inset-0{inset:calc(var(--volr-spacing)*0)}.volr\\:-top-3{top:calc(var(--volr-spacing)*-3)}.volr\\:top-1\\/2{top:50%}.volr\\:-right-3{right:calc(var(--volr-spacing)*-3)}.volr\\:-right-4{right:calc(var(--volr-spacing)*-4)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:-left-4{left:calc(var(--volr-spacing)*-4)}.volr\\:left-3{left:calc(var(--volr-spacing)*3)}.volr\\:-z-10{z-index:calc(10*-1)}.volr\\:z-10{z-index:10}.volr\\:z-20{z-index:20}.volr\\:z-40{z-index:40}.volr\\:z-50{z-index:50}.volr\\:mx-auto{margin-inline:auto}.volr\\:my-6{margin-block:calc(var(--volr-spacing)*6)}.volr\\:mt-0\\.5{margin-top:calc(var(--volr-spacing)*.5)}.volr\\:mt-1{margin-top:calc(var(--volr-spacing)*1)}.volr\\:mt-2{margin-top:calc(var(--volr-spacing)*2)}.volr\\:mt-3{margin-top:calc(var(--volr-spacing)*3)}.volr\\:mt-4{margin-top:calc(var(--volr-spacing)*4)}.volr\\:mt-6{margin-top:calc(var(--volr-spacing)*6)}.volr\\:mt-8{margin-top:calc(var(--volr-spacing)*8)}.volr\\:mb-1{margin-bottom:calc(var(--volr-spacing)*1)}.volr\\:mb-2{margin-bottom:calc(var(--volr-spacing)*2)}.volr\\:mb-3{margin-bottom:calc(var(--volr-spacing)*3)}.volr\\:mb-4{margin-bottom:calc(var(--volr-spacing)*4)}.volr\\:mb-5{margin-bottom:calc(var(--volr-spacing)*5)}.volr\\:mb-6{margin-bottom:calc(var(--volr-spacing)*6)}.volr\\:mb-8{margin-bottom:calc(var(--volr-spacing)*8)}.volr\\:-ml-2{margin-left:calc(var(--volr-spacing)*-2)}.volr\\:flex{display:flex}.volr\\:grid{display:grid}.volr\\:inline-block{display:inline-block}.volr\\:inline-flex{display:inline-flex}.volr\\:h-1{height:calc(var(--volr-spacing)*1)}.volr\\:h-1\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.volr\\:h-3{height:calc(var(--volr-spacing)*3)}.volr\\:h-4{height:calc(var(--volr-spacing)*4)}.volr\\:h-5{height:calc(var(--volr-spacing)*5)}.volr\\:h-6{height:calc(var(--volr-spacing)*6)}.volr\\:h-7{height:calc(var(--volr-spacing)*7)}.volr\\:h-8{height:calc(var(--volr-spacing)*8)}.volr\\:h-10{height:calc(var(--volr-spacing)*10)}.volr\\:h-14{height:calc(var(--volr-spacing)*14)}.volr\\:h-24{height:calc(var(--volr-spacing)*24)}.volr\\:h-40{height:calc(var(--volr-spacing)*40)}.volr\\:h-44{height:calc(var(--volr-spacing)*44)}.volr\\:h-48{height:calc(var(--volr-spacing)*48)}.volr\\:h-\\[0\\.8em\\]{height:.8em}.volr\\:h-\\[200px\\]{height:200px}.volr\\:h-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-36{max-height:calc(var(--volr-spacing)*36)}.volr\\:max-h-96{max-height:calc(var(--volr-spacing)*96)}.volr\\:max-h-\\[85vh\\]{max-height:85vh}.volr\\:max-h-\\[90vh\\]{max-height:90vh}.volr\\:min-h-\\[120px\\]{min-height:120px}.volr\\:min-h-\\[500px\\]{min-height:500px}.volr\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.volr\\:w-5{width:calc(var(--volr-spacing)*5)}.volr\\:w-6{width:calc(var(--volr-spacing)*6)}.volr\\:w-8{width:calc(var(--volr-spacing)*8)}.volr\\:w-10{width:calc(var(--volr-spacing)*10)}.volr\\:w-12{width:calc(var(--volr-spacing)*12)}.volr\\:w-24{width:calc(var(--volr-spacing)*24)}.volr\\:w-32{width:calc(var(--volr-spacing)*32)}.volr\\:w-36{width:calc(var(--volr-spacing)*36)}.volr\\:w-40{width:calc(var(--volr-spacing)*40)}.volr\\:w-44{width:calc(var(--volr-spacing)*44)}.volr\\:w-48{width:calc(var(--volr-spacing)*48)}.volr\\:w-\\[200px\\]{width:200px}.volr\\:w-auto{width:auto}.volr\\:w-full{width:100%}.volr\\:max-w-4xl{max-width:var(--volr-container-4xl)}.volr\\:max-w-full{max-width:100%}.volr\\:max-w-md{max-width:var(--volr-container-md)}.volr\\:max-w-none{max-width:none}.volr\\:min-w-0{min-width:calc(var(--volr-spacing)*0)}.volr\\:flex-1{flex:1}.volr\\:flex-shrink-0,.volr\\:shrink-0{flex-shrink:0}.volr\\:-translate-y-1\\/2{--volr-tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--volr-tw-translate-x)var(--volr-tw-translate-y)}.volr\\:animate-\\[volrFadeIn_0\\.2s_ease-out\\]{animation:.2s ease-out volrFadeIn}.volr\\:animate-pulse{animation:var(--volr-animate-pulse)}.volr\\:animate-spin{animation:var(--volr-animate-spin)}.volr\\:list-inside{list-style-position:inside}.volr\\:list-decimal{list-style-type:decimal}.volr\\:grid-cols-\\[minmax\\(0\\,1\\.1fr\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.volr\\:flex-col{flex-direction:column}.volr\\:items-baseline{align-items:baseline}.volr\\:items-center{align-items:center}.volr\\:items-end{align-items:flex-end}.volr\\:items-start{align-items:flex-start}.volr\\:justify-between{justify-content:space-between}.volr\\:justify-center{justify-content:center}.volr\\:gap-1{gap:calc(var(--volr-spacing)*1)}.volr\\:gap-2{gap:calc(var(--volr-spacing)*2)}.volr\\:gap-3{gap:calc(var(--volr-spacing)*3)}.volr\\:gap-4{gap:calc(var(--volr-spacing)*4)}:where(.volr\\:space-y-1>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*1)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*1)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-2>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*2)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*2)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-3>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*3)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*3)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-4>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*4)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*4)*calc(1 - var(--volr-tw-space-y-reverse)))}.volr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.volr\\:overflow-hidden{overflow:hidden}.volr\\:overflow-visible{overflow:visible}.volr\\:overflow-y-auto{overflow-y:auto}.volr\\:rounded{border-radius:.25rem}.volr\\:rounded-2xl{border-radius:var(--volr-radius-2xl)}.volr\\:rounded-full{border-radius:3.40282e38px}.volr\\:rounded-lg{border-radius:var(--volr-radius-lg)}.volr\\:rounded-md{border-radius:var(--volr-radius-md)}.volr\\:rounded-xl{border-radius:var(--volr-radius-xl)}.volr\\:rounded-t-2xl{border-top-left-radius:var(--volr-radius-2xl);border-top-right-radius:var(--volr-radius-2xl)}.volr\\:rounded-t-3xl{border-top-left-radius:var(--volr-radius-3xl);border-top-right-radius:var(--volr-radius-3xl)}.volr\\:border{border-style:var(--volr-tw-border-style);border-width:1px}.volr\\:border-2{border-style:var(--volr-tw-border-style);border-width:2px}.volr\\:border-4{border-style:var(--volr-tw-border-style);border-width:4px}.volr\\:border-t{border-top-style:var(--volr-tw-border-style);border-top-width:1px}.volr\\:border-t-2{border-top-style:var(--volr-tw-border-style);border-top-width:2px}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-slate-200{border-color:var(--volr-color-slate-200)}.volr\\:border-slate-300{border-color:var(--volr-color-slate-300)}.volr\\:border-white{border-color:var(--volr-color-white)}.volr\\:border-t-slate-600{border-top-color:var(--volr-color-slate-600)}.volr\\:bg-black\\/45{background-color:var(--volr-color-black)}@supports (color:color-mix(in lab, red, red)){.volr\\:bg-black\\/45{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr\\:bg-cyan-400{background-color:var(--volr-color-cyan-400)}.volr\\:bg-emerald-300{background-color:var(--volr-color-emerald-300)}.volr\\:bg-emerald-400{background-color:var(--volr-color-emerald-400)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-slate-50{background-color:var(--volr-color-slate-50)}.volr\\:bg-slate-100{background-color:var(--volr-color-slate-100)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.volr\\:bg-white{background-color:var(--volr-color-white)}.volr\\:bg-linear-to-br{--volr-tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.volr\\:bg-linear-to-br{--volr-tw-gradient-position:to bottom right in oklab}}.volr\\:bg-linear-to-br{background-image:linear-gradient(var(--volr-tw-gradient-stops))}.volr\\:from-emerald-400{--volr-tw-gradient-from:var(--volr-color-emerald-400);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:from-emerald-500{--volr-tw-gradient-from:var(--volr-color-emerald-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:to-teal-500{--volr-tw-gradient-to:var(--volr-color-teal-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:p-1{padding:calc(var(--volr-spacing)*1)}.volr\\:p-2{padding:calc(var(--volr-spacing)*2)}.volr\\:p-3{padding:calc(var(--volr-spacing)*3)}.volr\\:p-4{padding:calc(var(--volr-spacing)*4)}.volr\\:p-5{padding:calc(var(--volr-spacing)*5)}.volr\\:p-8{padding:calc(var(--volr-spacing)*8)}.volr\\:px-2{padding-inline:calc(var(--volr-spacing)*2)}.volr\\:px-3{padding-inline:calc(var(--volr-spacing)*3)}.volr\\:px-4{padding-inline:calc(var(--volr-spacing)*4)}.volr\\:py-0\\.5{padding-block:calc(var(--volr-spacing)*.5)}.volr\\:py-1\\.5{padding-block:calc(var(--volr-spacing)*1.5)}.volr\\:py-2{padding-block:calc(var(--volr-spacing)*2)}.volr\\:py-2\\.5{padding-block:calc(var(--volr-spacing)*2.5)}.volr\\:py-3{padding-block:calc(var(--volr-spacing)*3)}.volr\\:py-4{padding-block:calc(var(--volr-spacing)*4)}.volr\\:py-6{padding-block:calc(var(--volr-spacing)*6)}.volr\\:py-8{padding-block:calc(var(--volr-spacing)*8)}.volr\\:py-12{padding-block:calc(var(--volr-spacing)*12)}.volr\\:pt-2{padding-top:calc(var(--volr-spacing)*2)}.volr\\:pt-3{padding-top:calc(var(--volr-spacing)*3)}.volr\\:pt-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pr-3{padding-right:calc(var(--volr-spacing)*3)}.volr\\:pb-2{padding-bottom:calc(var(--volr-spacing)*2)}.volr\\:pb-4{padding-bottom:calc(var(--volr-spacing)*4)}.volr\\:pl-11{padding-left:calc(var(--volr-spacing)*11)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.volr\\:align-baseline{vertical-align:baseline}.volr\\:font-mono{font-family:var(--volr-font-mono)}.volr\\:text-2xl{font-size:var(--volr-text-2xl);line-height:var(--volr-tw-leading,var(--volr-text-2xl--line-height))}.volr\\:text-8xl{font-size:var(--volr-text-8xl);line-height:var(--volr-tw-leading,var(--volr-text-8xl--line-height))}.volr\\:text-base{font-size:var(--volr-text-base);line-height:var(--volr-tw-leading,var(--volr-text-base--line-height))}.volr\\:text-lg{font-size:var(--volr-text-lg);line-height:var(--volr-tw-leading,var(--volr-text-lg--line-height))}.volr\\:text-sm{font-size:var(--volr-text-sm);line-height:var(--volr-tw-leading,var(--volr-text-sm--line-height))}.volr\\:text-xl{font-size:var(--volr-text-xl);line-height:var(--volr-tw-leading,var(--volr-text-xl--line-height))}.volr\\:text-xs{font-size:var(--volr-text-xs);line-height:var(--volr-tw-leading,var(--volr-text-xs--line-height))}.volr\\:leading-relaxed{--volr-tw-leading:var(--volr-leading-relaxed);line-height:var(--volr-leading-relaxed)}.volr\\:font-bold{--volr-tw-font-weight:var(--volr-font-weight-bold);font-weight:var(--volr-font-weight-bold)}.volr\\:font-medium{--volr-tw-font-weight:var(--volr-font-weight-medium);font-weight:var(--volr-font-weight-medium)}.volr\\:font-semibold{--volr-tw-font-weight:var(--volr-font-weight-semibold);font-weight:var(--volr-font-weight-semibold)}.volr\\:break-all{word-break:break-all}.volr\\:text-emerald-600{color:var(--volr-color-emerald-600)}.volr\\:text-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-green-600{color:var(--volr-color-green-600)}.volr\\:text-red-600{color:var(--volr-color-red-600)}.volr\\:text-red-700{color:var(--volr-color-red-700)}.volr\\:text-slate-400{color:var(--volr-color-slate-400)}.volr\\:text-slate-500{color:var(--volr-color-slate-500)}.volr\\:text-slate-600{color:var(--volr-color-slate-600)}.volr\\:text-slate-900{color:var(--volr-color-slate-900)}.volr\\:text-white{color:var(--volr-color-white)}.volr\\:capitalize{text-transform:capitalize}.volr\\:underline{text-decoration-line:underline}.volr\\:opacity-0{opacity:0}.volr\\:opacity-30{opacity:.3}.volr\\:shadow-2xl{--volr-tw-shadow:0 25px 50px -12px var(--volr-tw-shadow-color,#00000040);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-\\[0_-8px_30px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\]{--volr-tw-shadow:0 -8px 30px var(--volr-tw-shadow-color,#0003);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-lg{--volr-tw-shadow:0 10px 15px -3px var(--volr-tw-shadow-color,#0000001a),0 4px 6px -4px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-md{--volr-tw-shadow:0 4px 6px -1px var(--volr-tw-shadow-color,#0000001a),0 2px 4px -2px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-sm{--volr-tw-shadow:0 1px 3px 0 var(--volr-tw-shadow-color,#0000001a),0 1px 2px -1px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-xl{--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:var(--volr-color-emerald-500)}@supports (color:color-mix(in lab, red, red)){.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--volr-color-emerald-500)50%,transparent)var(--volr-tw-shadow-alpha),transparent)}}.volr\\:blur-2xl{--volr-tw-blur:blur(var(--volr-blur-2xl));filter:var(--volr-tw-blur,)var(--volr-tw-brightness,)var(--volr-tw-contrast,)var(--volr-tw-grayscale,)var(--volr-tw-hue-rotate,)var(--volr-tw-invert,)var(--volr-tw-saturate,)var(--volr-tw-sepia,)var(--volr-tw-drop-shadow,)}.volr\\:transition-all{transition-property:all;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--volr-tw-gradient-from,--volr-tw-gradient-via,--volr-tw-gradient-to;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:duration-300{--volr-tw-duration:.3s;transition-duration:.3s}.volr\\:duration-500{--volr-tw-duration:.5s;transition-duration:.5s}.volr\\:ease-out{--volr-tw-ease:var(--volr-ease-out);transition-timing-function:var(--volr-ease-out)}.volr\\:outline-none{--volr-tw-outline-style:none;outline-style:none}@media (hover:hover){.volr\\:hover\\:bg-slate-50:hover{background-color:var(--volr-color-slate-50)}}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr\\:disabled\\:opacity-50:disabled{opacity:.5}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.volr-text-secondary{color:var(--volr-text-secondary)}.volr-text-muted{color:var(--volr-text-muted)}.volr-bg-secondary{background-color:var(--volr-bg-secondary)}.volr-bg-tertiary{background-color:var(--volr-bg-tertiary)}.volr-border{border-color:var(--volr-border)}.volr-border-strong{border-color:var(--volr-border-strong)}.volr-divider-line{background-color:var(--volr-border)}.volr-error{background-color:var(--volr-error-bg);border-color:var(--volr-error-border);color:var(--volr-error-text)}.volr-hover:hover{background-color:var(--volr-hover-bg)}.volr-surface{background-color:var(--volr-bg)}}@property --volr-tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --volr-tw-gradient-position{syntax:"*";inherits:false}@property --volr-tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-via-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --volr-tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --volr-tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --volr-tw-leading{syntax:"*";inherits:false}@property --volr-tw-font-weight{syntax:"*";inherits:false}@property --volr-tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-shadow-color{syntax:"*";inherits:false}@property --volr-tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-shadow-color{syntax:"*";inherits:false}@property --volr-tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-ring-color{syntax:"*";inherits:false}@property --volr-tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-ring-color{syntax:"*";inherits:false}@property --volr-tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-ring-inset{syntax:"*";inherits:false}@property --volr-tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --volr-tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --volr-tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-blur{syntax:"*";inherits:false}@property --volr-tw-brightness{syntax:"*";inherits:false}@property --volr-tw-contrast{syntax:"*";inherits:false}@property --volr-tw-grayscale{syntax:"*";inherits:false}@property --volr-tw-hue-rotate{syntax:"*";inherits:false}@property --volr-tw-invert{syntax:"*";inherits:false}@property --volr-tw-opacity{syntax:"*";inherits:false}@property --volr-tw-saturate{syntax:"*";inherits:false}@property --volr-tw-sepia{syntax:"*";inherits:false}@property --volr-tw-drop-shadow{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-color{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-drop-shadow-size{syntax:"*";inherits:false}@property --volr-tw-duration{syntax:"*";inherits:false}@property --volr-tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
392
+ var VOLR_SDK_CSS = '/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--volr-tw-translate-x:0;--volr-tw-translate-y:0;--volr-tw-translate-z:0;--volr-tw-space-y-reverse:0;--volr-tw-border-style:solid;--volr-tw-gradient-position:initial;--volr-tw-gradient-from:#0000;--volr-tw-gradient-via:#0000;--volr-tw-gradient-to:#0000;--volr-tw-gradient-stops:initial;--volr-tw-gradient-via-stops:initial;--volr-tw-gradient-from-position:0%;--volr-tw-gradient-via-position:50%;--volr-tw-gradient-to-position:100%;--volr-tw-leading:initial;--volr-tw-font-weight:initial;--volr-tw-shadow:0 0 #0000;--volr-tw-shadow-color:initial;--volr-tw-shadow-alpha:100%;--volr-tw-inset-shadow:0 0 #0000;--volr-tw-inset-shadow-color:initial;--volr-tw-inset-shadow-alpha:100%;--volr-tw-ring-color:initial;--volr-tw-ring-shadow:0 0 #0000;--volr-tw-inset-ring-color:initial;--volr-tw-inset-ring-shadow:0 0 #0000;--volr-tw-ring-inset:initial;--volr-tw-ring-offset-width:0px;--volr-tw-ring-offset-color:#fff;--volr-tw-ring-offset-shadow:0 0 #0000;--volr-tw-blur:initial;--volr-tw-brightness:initial;--volr-tw-contrast:initial;--volr-tw-grayscale:initial;--volr-tw-hue-rotate:initial;--volr-tw-invert:initial;--volr-tw-opacity:initial;--volr-tw-saturate:initial;--volr-tw-sepia:initial;--volr-tw-drop-shadow:initial;--volr-tw-drop-shadow-color:initial;--volr-tw-drop-shadow-alpha:100%;--volr-tw-drop-shadow-size:initial;--volr-tw-duration:initial;--volr-tw-ease:initial}}}@layer theme{:root,:host{--volr-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--volr-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--volr-color-red-50:oklch(97.1% .013 17.38);--volr-color-red-100:oklch(93.6% .032 17.717);--volr-color-red-200:oklch(88.5% .062 18.334);--volr-color-red-500:oklch(63.7% .237 25.331);--volr-color-red-600:oklch(57.7% .245 27.325);--volr-color-red-700:oklch(50.5% .213 27.518);--volr-color-green-100:oklch(96.2% .044 156.743);--volr-color-green-600:oklch(62.7% .194 149.214);--volr-color-emerald-300:oklch(84.5% .143 164.978);--volr-color-emerald-400:oklch(76.5% .177 163.223);--volr-color-emerald-500:oklch(69.6% .17 162.48);--volr-color-emerald-600:oklch(59.6% .145 163.225);--volr-color-teal-400:oklch(77.7% .152 181.912);--volr-color-teal-500:oklch(70.4% .14 182.503);--volr-color-cyan-400:oklch(78.9% .154 211.53);--volr-color-slate-50:oklch(98.4% .003 247.858);--volr-color-slate-100:oklch(96.8% .007 247.896);--volr-color-slate-200:oklch(92.9% .013 255.508);--volr-color-slate-300:oklch(86.9% .022 252.894);--volr-color-slate-400:oklch(70.4% .04 256.788);--volr-color-slate-500:oklch(55.4% .046 257.417);--volr-color-slate-600:oklch(44.6% .043 257.281);--volr-color-slate-900:oklch(20.8% .042 265.755);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-black:#000;--volr-color-white:#fff;--volr-spacing:.25rem;--volr-container-md:28rem;--volr-container-4xl:56rem;--volr-text-xs:.75rem;--volr-text-xs--line-height:calc(1/.75);--volr-text-sm:.875rem;--volr-text-sm--line-height:calc(1.25/.875);--volr-text-base:1rem;--volr-text-base--line-height:calc(1.5/1);--volr-text-lg:1.125rem;--volr-text-lg--line-height:calc(1.75/1.125);--volr-text-xl:1.25rem;--volr-text-xl--line-height:calc(1.75/1.25);--volr-text-2xl:1.5rem;--volr-text-2xl--line-height:calc(2/1.5);--volr-text-8xl:6rem;--volr-text-8xl--line-height:1;--volr-font-weight-medium:500;--volr-font-weight-semibold:600;--volr-font-weight-bold:700;--volr-leading-relaxed:1.625;--volr-radius-md:.375rem;--volr-radius-lg:.5rem;--volr-radius-xl:.75rem;--volr-radius-2xl:1rem;--volr-radius-3xl:1.5rem;--volr-ease-out:cubic-bezier(0,0,.2,1);--volr-animate-spin:spin 1s linear infinite;--volr-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--volr-blur-2xl:40px;--volr-default-transition-duration:.15s;--volr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--volr-default-font-family:var(--volr-font-sans);--volr-default-mono-font-family:var(--volr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--volr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--volr-default-font-feature-settings,normal);font-variation-settings:var(--volr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--volr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--volr-default-mono-font-feature-settings,normal);font-variation-settings:var(--volr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{--volr-primary-color:var(--volr-accent-color,#303030);--volr-font-family:var(--volr-custom-font,inherit);--volr-bg:#fff;--volr-bg-secondary:#f8fafc;--volr-bg-tertiary:#f1f5f9;--volr-text:#0f172a;--volr-text-secondary:#475569;--volr-text-muted:#94a3b8;--volr-border:#e2e8f0;--volr-border-strong:#cbd5e1;--volr-hover-bg:#f8fafc;--volr-error-bg:#fef2f2;--volr-error-border:#fecaca;--volr-error-text:#991b1b}:host([data-theme=dark]){--volr-bg:#1c1c1e;--volr-bg-secondary:#2c2c2e;--volr-bg-tertiary:#3a3a3c;--volr-text:#f5f5f7;--volr-text-secondary:#c7c7cc;--volr-text-muted:#8e8e93;--volr-border:#3a3a3c;--volr-border-strong:#48484a;--volr-hover-bg:#2c2c2e;--volr-error-bg:#3c1f1f;--volr-error-border:#7f1d1d;--volr-error-text:#fca5a5}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family);color:var(--volr-text)}button,input,select,textarea{color:var(--volr-text);background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:var(--volr-text-muted)}h1,h2,h3{color:var(--volr-text);margin:0;font-weight:700}h1{font-size:1.875rem;line-height:2.25rem}h2{font-size:1.5rem;line-height:2rem}h3{font-size:1.25rem;line-height:1.75rem}p{margin:0}}@layer components{.volr-dialog-overlay{inset:calc(var(--volr-spacing)*0);z-index:40;background-color:var(--volr-color-black);position:fixed}@supports (color:color-mix(in lab, red, red)){.volr-dialog-overlay{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr-dialog-content{z-index:50;border-radius:var(--volr-radius-2xl);border-style:var(--volr-tw-border-style);padding:calc(var(--volr-spacing)*7);--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow);background-color:var(--volr-bg);border-width:1px;border-color:var(--volr-border-strong);width:calc(100% - 2rem);max-width:28rem;max-height:85vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}@media (max-width:640px){.volr-dialog-content{top:auto;right:calc(var(--volr-spacing)*0);bottom:calc(var(--volr-spacing)*0);left:calc(var(--volr-spacing)*0);border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:100%;margin:0 auto;transform:translateY(0)}}.volr-dialog-close{top:calc(var(--volr-spacing)*4);right:calc(var(--volr-spacing)*4);height:calc(var(--volr-spacing)*8);width:calc(var(--volr-spacing)*8);color:var(--volr-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.volr-dialog-close:hover{background-color:var(--volr-hover-bg);color:var(--volr-text-secondary)}.volr-dialog-close:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{border:1px solid var(--volr-border-strong);background-color:var(--volr-bg);width:100%;color:var(--volr-text);border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:var(--volr-text-muted)}.volr-email-input:focus{border-color:var(--volr-border-strong);box-shadow:0 0 0 2px var(--volr-border-strong)}.volr-option-button{border:1px solid var(--volr-border);background-color:var(--volr-bg);width:100%;color:var(--volr-text);cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;transition:background-color .15s ease-out,border-color .15s ease-out,box-shadow .15s ease-out;display:flex}.volr-option-button:hover{background-color:var(--volr-hover-bg);border-color:var(--volr-border)}.volr-option-button:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}}@layer utilities{.volr\\:pointer-events-auto{pointer-events:auto}.volr\\:pointer-events-none{pointer-events:none}.volr\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.volr\\:absolute{position:absolute}.volr\\:fixed{position:fixed}.volr\\:relative{position:relative}.volr\\:inset-0{inset:calc(var(--volr-spacing)*0)}.volr\\:-top-3{top:calc(var(--volr-spacing)*-3)}.volr\\:top-1\\/2{top:50%}.volr\\:-right-3{right:calc(var(--volr-spacing)*-3)}.volr\\:-right-4{right:calc(var(--volr-spacing)*-4)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:-left-4{left:calc(var(--volr-spacing)*-4)}.volr\\:left-3{left:calc(var(--volr-spacing)*3)}.volr\\:-z-10{z-index:calc(10*-1)}.volr\\:z-10{z-index:10}.volr\\:z-20{z-index:20}.volr\\:z-40{z-index:40}.volr\\:z-50{z-index:50}.volr\\:mx-auto{margin-inline:auto}.volr\\:my-6{margin-block:calc(var(--volr-spacing)*6)}.volr\\:mt-0\\.5{margin-top:calc(var(--volr-spacing)*.5)}.volr\\:mt-1{margin-top:calc(var(--volr-spacing)*1)}.volr\\:mt-2{margin-top:calc(var(--volr-spacing)*2)}.volr\\:mt-3{margin-top:calc(var(--volr-spacing)*3)}.volr\\:mt-4{margin-top:calc(var(--volr-spacing)*4)}.volr\\:mt-6{margin-top:calc(var(--volr-spacing)*6)}.volr\\:mt-8{margin-top:calc(var(--volr-spacing)*8)}.volr\\:mb-1{margin-bottom:calc(var(--volr-spacing)*1)}.volr\\:mb-2{margin-bottom:calc(var(--volr-spacing)*2)}.volr\\:mb-3{margin-bottom:calc(var(--volr-spacing)*3)}.volr\\:mb-4{margin-bottom:calc(var(--volr-spacing)*4)}.volr\\:mb-5{margin-bottom:calc(var(--volr-spacing)*5)}.volr\\:mb-6{margin-bottom:calc(var(--volr-spacing)*6)}.volr\\:mb-8{margin-bottom:calc(var(--volr-spacing)*8)}.volr\\:-ml-2{margin-left:calc(var(--volr-spacing)*-2)}.volr\\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.volr\\:flex{display:flex}.volr\\:grid{display:grid}.volr\\:inline-block{display:inline-block}.volr\\:inline-flex{display:inline-flex}.volr\\:h-1{height:calc(var(--volr-spacing)*1)}.volr\\:h-1\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.volr\\:h-3{height:calc(var(--volr-spacing)*3)}.volr\\:h-3\\.5{height:calc(var(--volr-spacing)*3.5)}.volr\\:h-4{height:calc(var(--volr-spacing)*4)}.volr\\:h-5{height:calc(var(--volr-spacing)*5)}.volr\\:h-6{height:calc(var(--volr-spacing)*6)}.volr\\:h-7{height:calc(var(--volr-spacing)*7)}.volr\\:h-8{height:calc(var(--volr-spacing)*8)}.volr\\:h-10{height:calc(var(--volr-spacing)*10)}.volr\\:h-12{height:calc(var(--volr-spacing)*12)}.volr\\:h-14{height:calc(var(--volr-spacing)*14)}.volr\\:h-16{height:calc(var(--volr-spacing)*16)}.volr\\:h-24{height:calc(var(--volr-spacing)*24)}.volr\\:h-40{height:calc(var(--volr-spacing)*40)}.volr\\:h-44{height:calc(var(--volr-spacing)*44)}.volr\\:h-48{height:calc(var(--volr-spacing)*48)}.volr\\:h-\\[0\\.8em\\]{height:.8em}.volr\\:h-\\[200px\\]{height:200px}.volr\\:h-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-36{max-height:calc(var(--volr-spacing)*36)}.volr\\:max-h-96{max-height:calc(var(--volr-spacing)*96)}.volr\\:max-h-\\[85vh\\]{max-height:85vh}.volr\\:max-h-\\[90vh\\]{max-height:90vh}.volr\\:min-h-\\[120px\\]{min-height:120px}.volr\\:min-h-\\[500px\\]{min-height:500px}.volr\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.volr\\:w-3\\.5{width:calc(var(--volr-spacing)*3.5)}.volr\\:w-4{width:calc(var(--volr-spacing)*4)}.volr\\:w-5{width:calc(var(--volr-spacing)*5)}.volr\\:w-6{width:calc(var(--volr-spacing)*6)}.volr\\:w-8{width:calc(var(--volr-spacing)*8)}.volr\\:w-10{width:calc(var(--volr-spacing)*10)}.volr\\:w-12{width:calc(var(--volr-spacing)*12)}.volr\\:w-16{width:calc(var(--volr-spacing)*16)}.volr\\:w-20{width:calc(var(--volr-spacing)*20)}.volr\\:w-24{width:calc(var(--volr-spacing)*24)}.volr\\:w-32{width:calc(var(--volr-spacing)*32)}.volr\\:w-36{width:calc(var(--volr-spacing)*36)}.volr\\:w-40{width:calc(var(--volr-spacing)*40)}.volr\\:w-44{width:calc(var(--volr-spacing)*44)}.volr\\:w-48{width:calc(var(--volr-spacing)*48)}.volr\\:w-\\[200px\\]{width:200px}.volr\\:w-auto{width:auto}.volr\\:w-full{width:100%}.volr\\:max-w-4xl{max-width:var(--volr-container-4xl)}.volr\\:max-w-full{max-width:100%}.volr\\:max-w-md{max-width:var(--volr-container-md)}.volr\\:max-w-none{max-width:none}.volr\\:min-w-0{min-width:calc(var(--volr-spacing)*0)}.volr\\:flex-1{flex:1}.volr\\:flex-shrink-0,.volr\\:shrink-0{flex-shrink:0}.volr\\:-translate-y-1\\/2{--volr-tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--volr-tw-translate-x)var(--volr-tw-translate-y)}.volr\\:animate-\\[volrFadeIn_0\\.2s_ease-out\\]{animation:.2s ease-out volrFadeIn}.volr\\:animate-pulse{animation:var(--volr-animate-pulse)}.volr\\:animate-spin{animation:var(--volr-animate-spin)}.volr\\:list-inside{list-style-position:inside}.volr\\:list-decimal{list-style-type:decimal}.volr\\:grid-cols-\\[minmax\\(0\\,1\\.1fr\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.volr\\:flex-col{flex-direction:column}.volr\\:items-baseline{align-items:baseline}.volr\\:items-center{align-items:center}.volr\\:items-end{align-items:flex-end}.volr\\:items-start{align-items:flex-start}.volr\\:justify-between{justify-content:space-between}.volr\\:justify-center{justify-content:center}.volr\\:gap-1{gap:calc(var(--volr-spacing)*1)}.volr\\:gap-1\\.5{gap:calc(var(--volr-spacing)*1.5)}.volr\\:gap-2{gap:calc(var(--volr-spacing)*2)}.volr\\:gap-3{gap:calc(var(--volr-spacing)*3)}.volr\\:gap-4{gap:calc(var(--volr-spacing)*4)}:where(.volr\\:space-y-1>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*1)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*1)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-2>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*2)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*2)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-3>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*3)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*3)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-4>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*4)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*4)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-6>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*6)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*6)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-8>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*8)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*8)*calc(1 - var(--volr-tw-space-y-reverse)))}.volr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.volr\\:overflow-hidden{overflow:hidden}.volr\\:overflow-visible{overflow:visible}.volr\\:overflow-y-auto{overflow-y:auto}.volr\\:rounded{border-radius:.25rem}.volr\\:rounded-2xl{border-radius:var(--volr-radius-2xl)}.volr\\:rounded-full{border-radius:3.40282e38px}.volr\\:rounded-lg{border-radius:var(--volr-radius-lg)}.volr\\:rounded-md{border-radius:var(--volr-radius-md)}.volr\\:rounded-xl{border-radius:var(--volr-radius-xl)}.volr\\:rounded-t-2xl{border-top-left-radius:var(--volr-radius-2xl);border-top-right-radius:var(--volr-radius-2xl)}.volr\\:rounded-t-3xl{border-top-left-radius:var(--volr-radius-3xl);border-top-right-radius:var(--volr-radius-3xl)}.volr\\:border{border-style:var(--volr-tw-border-style);border-width:1px}.volr\\:border-2{border-style:var(--volr-tw-border-style);border-width:2px}.volr\\:border-4{border-style:var(--volr-tw-border-style);border-width:4px}.volr\\:border-t{border-top-style:var(--volr-tw-border-style);border-top-width:1px}.volr\\:border-t-2{border-top-style:var(--volr-tw-border-style);border-top-width:2px}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-slate-200{border-color:var(--volr-color-slate-200)}.volr\\:border-slate-300{border-color:var(--volr-color-slate-300)}.volr\\:border-white{border-color:var(--volr-color-white)}.volr\\:border-t-slate-600{border-top-color:var(--volr-color-slate-600)}.volr\\:bg-black\\/45{background-color:var(--volr-color-black)}@supports (color:color-mix(in lab, red, red)){.volr\\:bg-black\\/45{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr\\:bg-cyan-400{background-color:var(--volr-color-cyan-400)}.volr\\:bg-emerald-300{background-color:var(--volr-color-emerald-300)}.volr\\:bg-emerald-400{background-color:var(--volr-color-emerald-400)}.volr\\:bg-green-100{background-color:var(--volr-color-green-100)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-red-100{background-color:var(--volr-color-red-100)}.volr\\:bg-slate-50{background-color:var(--volr-color-slate-50)}.volr\\:bg-slate-100{background-color:var(--volr-color-slate-100)}.volr\\:bg-slate-200{background-color:var(--volr-color-slate-200)}.volr\\:bg-slate-300{background-color:var(--volr-color-slate-300)}.volr\\:bg-slate-900{background-color:var(--volr-color-slate-900)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.volr\\:bg-white{background-color:var(--volr-color-white)}.volr\\:bg-linear-to-br{--volr-tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.volr\\:bg-linear-to-br{--volr-tw-gradient-position:to bottom right in oklab}}.volr\\:bg-linear-to-br{background-image:linear-gradient(var(--volr-tw-gradient-stops))}.volr\\:from-emerald-400{--volr-tw-gradient-from:var(--volr-color-emerald-400);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:from-emerald-500{--volr-tw-gradient-from:var(--volr-color-emerald-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:to-teal-500{--volr-tw-gradient-to:var(--volr-color-teal-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:object-cover{object-fit:cover}.volr\\:p-1{padding:calc(var(--volr-spacing)*1)}.volr\\:p-2{padding:calc(var(--volr-spacing)*2)}.volr\\:p-3{padding:calc(var(--volr-spacing)*3)}.volr\\:p-4{padding:calc(var(--volr-spacing)*4)}.volr\\:p-5{padding:calc(var(--volr-spacing)*5)}.volr\\:p-6{padding:calc(var(--volr-spacing)*6)}.volr\\:p-8{padding:calc(var(--volr-spacing)*8)}.volr\\:px-2{padding-inline:calc(var(--volr-spacing)*2)}.volr\\:px-3{padding-inline:calc(var(--volr-spacing)*3)}.volr\\:px-4{padding-inline:calc(var(--volr-spacing)*4)}.volr\\:py-0\\.5{padding-block:calc(var(--volr-spacing)*.5)}.volr\\:py-1\\.5{padding-block:calc(var(--volr-spacing)*1.5)}.volr\\:py-2{padding-block:calc(var(--volr-spacing)*2)}.volr\\:py-2\\.5{padding-block:calc(var(--volr-spacing)*2.5)}.volr\\:py-3{padding-block:calc(var(--volr-spacing)*3)}.volr\\:py-4{padding-block:calc(var(--volr-spacing)*4)}.volr\\:py-6{padding-block:calc(var(--volr-spacing)*6)}.volr\\:py-8{padding-block:calc(var(--volr-spacing)*8)}.volr\\:py-12{padding-block:calc(var(--volr-spacing)*12)}.volr\\:pt-2{padding-top:calc(var(--volr-spacing)*2)}.volr\\:pt-3{padding-top:calc(var(--volr-spacing)*3)}.volr\\:pt-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pr-3{padding-right:calc(var(--volr-spacing)*3)}.volr\\:pb-2{padding-bottom:calc(var(--volr-spacing)*2)}.volr\\:pb-4{padding-bottom:calc(var(--volr-spacing)*4)}.volr\\:pl-11{padding-left:calc(var(--volr-spacing)*11)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.volr\\:text-right{text-align:right}.volr\\:align-baseline{vertical-align:baseline}.volr\\:font-mono{font-family:var(--volr-font-mono)}.volr\\:text-2xl{font-size:var(--volr-text-2xl);line-height:var(--volr-tw-leading,var(--volr-text-2xl--line-height))}.volr\\:text-8xl{font-size:var(--volr-text-8xl);line-height:var(--volr-tw-leading,var(--volr-text-8xl--line-height))}.volr\\:text-base{font-size:var(--volr-text-base);line-height:var(--volr-tw-leading,var(--volr-text-base--line-height))}.volr\\:text-lg{font-size:var(--volr-text-lg);line-height:var(--volr-tw-leading,var(--volr-text-lg--line-height))}.volr\\:text-sm{font-size:var(--volr-text-sm);line-height:var(--volr-tw-leading,var(--volr-text-sm--line-height))}.volr\\:text-xl{font-size:var(--volr-text-xl);line-height:var(--volr-tw-leading,var(--volr-text-xl--line-height))}.volr\\:text-xs{font-size:var(--volr-text-xs);line-height:var(--volr-tw-leading,var(--volr-text-xs--line-height))}.volr\\:leading-relaxed{--volr-tw-leading:var(--volr-leading-relaxed);line-height:var(--volr-leading-relaxed)}.volr\\:font-bold{--volr-tw-font-weight:var(--volr-font-weight-bold);font-weight:var(--volr-font-weight-bold)}.volr\\:font-medium{--volr-tw-font-weight:var(--volr-font-weight-medium);font-weight:var(--volr-font-weight-medium)}.volr\\:font-semibold{--volr-tw-font-weight:var(--volr-font-weight-semibold);font-weight:var(--volr-font-weight-semibold)}.volr\\:break-all{word-break:break-all}.volr\\:text-emerald-600{color:var(--volr-color-emerald-600)}.volr\\:text-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-green-600{color:var(--volr-color-green-600)}.volr\\:text-red-500{color:var(--volr-color-red-500)}.volr\\:text-red-600{color:var(--volr-color-red-600)}.volr\\:text-red-700{color:var(--volr-color-red-700)}.volr\\:text-slate-400{color:var(--volr-color-slate-400)}.volr\\:text-slate-500{color:var(--volr-color-slate-500)}.volr\\:text-slate-600{color:var(--volr-color-slate-600)}.volr\\:text-slate-900{color:var(--volr-color-slate-900)}.volr\\:text-white{color:var(--volr-color-white)}.volr\\:capitalize{text-transform:capitalize}.volr\\:underline{text-decoration-line:underline}.volr\\:opacity-0{opacity:0}.volr\\:opacity-25{opacity:.25}.volr\\:opacity-30{opacity:.3}.volr\\:opacity-75{opacity:.75}.volr\\:shadow-2xl{--volr-tw-shadow:0 25px 50px -12px var(--volr-tw-shadow-color,#00000040);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-\\[0_-8px_30px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\]{--volr-tw-shadow:0 -8px 30px var(--volr-tw-shadow-color,#0003);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-lg{--volr-tw-shadow:0 10px 15px -3px var(--volr-tw-shadow-color,#0000001a),0 4px 6px -4px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-md{--volr-tw-shadow:0 4px 6px -1px var(--volr-tw-shadow-color,#0000001a),0 2px 4px -2px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-sm{--volr-tw-shadow:0 1px 3px 0 var(--volr-tw-shadow-color,#0000001a),0 1px 2px -1px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-xl{--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:var(--volr-color-emerald-500)}@supports (color:color-mix(in lab, red, red)){.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--volr-color-emerald-500)50%,transparent)var(--volr-tw-shadow-alpha),transparent)}}.volr\\:blur-2xl{--volr-tw-blur:blur(var(--volr-blur-2xl));filter:var(--volr-tw-blur,)var(--volr-tw-brightness,)var(--volr-tw-contrast,)var(--volr-tw-grayscale,)var(--volr-tw-hue-rotate,)var(--volr-tw-invert,)var(--volr-tw-saturate,)var(--volr-tw-sepia,)var(--volr-tw-drop-shadow,)}.volr\\:transition-all{transition-property:all;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--volr-tw-gradient-from,--volr-tw-gradient-via,--volr-tw-gradient-to;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:duration-300{--volr-tw-duration:.3s;transition-duration:.3s}.volr\\:duration-500{--volr-tw-duration:.5s;transition-duration:.5s}.volr\\:ease-out{--volr-tw-ease:var(--volr-ease-out);transition-timing-function:var(--volr-ease-out)}.volr\\:outline-none{--volr-tw-outline-style:none;outline-style:none}@media (hover:hover){.volr\\:hover\\:bg-slate-50:hover{background-color:var(--volr-color-slate-50)}}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr\\:disabled\\:opacity-50:disabled{opacity:.5}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.volr-text-secondary{color:var(--volr-text-secondary)}.volr-text-muted{color:var(--volr-text-muted)}.volr-bg-secondary{background-color:var(--volr-bg-secondary)}.volr-bg-tertiary{background-color:var(--volr-bg-tertiary)}.volr-border{border-color:var(--volr-border)}.volr-border-strong{border-color:var(--volr-border-strong)}.volr-divider-line{background-color:var(--volr-border)}.volr-error{background-color:var(--volr-error-bg);border-color:var(--volr-error-border);color:var(--volr-error-text)}.volr-hover:hover{background-color:var(--volr-hover-bg)}.volr-surface{background-color:var(--volr-bg)}}@property --volr-tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --volr-tw-gradient-position{syntax:"*";inherits:false}@property --volr-tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-via-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --volr-tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --volr-tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --volr-tw-leading{syntax:"*";inherits:false}@property --volr-tw-font-weight{syntax:"*";inherits:false}@property --volr-tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-shadow-color{syntax:"*";inherits:false}@property --volr-tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-shadow-color{syntax:"*";inherits:false}@property --volr-tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-ring-color{syntax:"*";inherits:false}@property --volr-tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-ring-color{syntax:"*";inherits:false}@property --volr-tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-ring-inset{syntax:"*";inherits:false}@property --volr-tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --volr-tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --volr-tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-blur{syntax:"*";inherits:false}@property --volr-tw-brightness{syntax:"*";inherits:false}@property --volr-tw-contrast{syntax:"*";inherits:false}@property --volr-tw-grayscale{syntax:"*";inherits:false}@property --volr-tw-hue-rotate{syntax:"*";inherits:false}@property --volr-tw-invert{syntax:"*";inherits:false}@property --volr-tw-opacity{syntax:"*";inherits:false}@property --volr-tw-saturate{syntax:"*";inherits:false}@property --volr-tw-sepia{syntax:"*";inherits:false}@property --volr-tw-drop-shadow{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-color{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-drop-shadow-size{syntax:"*";inherits:false}@property --volr-tw-duration{syntax:"*";inherits:false}@property --volr-tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
390
393
  function useResolvedTheme(theme = "light") {
391
- const [resolvedTheme, setResolvedTheme] = React10.useState(() => {
394
+ const [resolvedTheme, setResolvedTheme] = React11.useState(() => {
392
395
  if (theme !== "system") return theme;
393
396
  if (typeof window === "undefined") return "light";
394
397
  return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
395
398
  });
396
- React10.useEffect(() => {
399
+ React11.useEffect(() => {
397
400
  if (theme !== "system") {
398
401
  setResolvedTheme(theme);
399
402
  return;
@@ -409,10 +412,10 @@ function useResolvedTheme(theme = "light") {
409
412
  return resolvedTheme;
410
413
  }
411
414
  function ShadowPortal({ children, theme = "light" }) {
412
- const [mountNode, setMountNode] = React10.useState(null);
413
- const hostRef = React10.useRef(null);
415
+ const [mountNode, setMountNode] = React11.useState(null);
416
+ const hostRef = React11.useRef(null);
414
417
  const resolvedTheme = useResolvedTheme(theme);
415
- React10.useEffect(() => {
418
+ React11.useEffect(() => {
416
419
  const host = document.createElement("div");
417
420
  host.id = "volr-shadow-portal";
418
421
  host.style.position = "fixed";
@@ -436,7 +439,7 @@ function ShadowPortal({ children, theme = "light" }) {
436
439
  hostRef.current = null;
437
440
  };
438
441
  }, []);
439
- React10.useEffect(() => {
442
+ React11.useEffect(() => {
440
443
  if (hostRef.current) {
441
444
  hostRef.current.setAttribute("data-theme", resolvedTheme);
442
445
  }
@@ -445,7 +448,7 @@ function ShadowPortal({ children, theme = "light" }) {
445
448
  return reactDom.createPortal(children, mountNode);
446
449
  }
447
450
  function useFocusTrap(isActive, containerRef) {
448
- const previousActiveElement = React10.useRef(null);
451
+ const previousActiveElement = React11.useRef(null);
449
452
  const focusableSelector = [
450
453
  "button:not([disabled])",
451
454
  "input:not([disabled])",
@@ -454,7 +457,7 @@ function useFocusTrap(isActive, containerRef) {
454
457
  "a[href]",
455
458
  '[tabindex]:not([tabindex="-1"])'
456
459
  ].join(", ");
457
- const getFocusableElements = React10.useCallback(() => {
460
+ const getFocusableElements = React11.useCallback(() => {
458
461
  if (!containerRef.current) return [];
459
462
  return Array.from(
460
463
  containerRef.current.querySelectorAll(focusableSelector)
@@ -462,7 +465,7 @@ function useFocusTrap(isActive, containerRef) {
462
465
  return el.offsetParent !== null;
463
466
  });
464
467
  }, [containerRef, focusableSelector]);
465
- const handleKeyDown = React10.useCallback(
468
+ const handleKeyDown = React11.useCallback(
466
469
  (event) => {
467
470
  if (event.key !== "Tab") return;
468
471
  const focusableElements = getFocusableElements();
@@ -483,7 +486,7 @@ function useFocusTrap(isActive, containerRef) {
483
486
  },
484
487
  [getFocusableElements]
485
488
  );
486
- React10.useEffect(() => {
489
+ React11.useEffect(() => {
487
490
  if (!isActive) return;
488
491
  previousActiveElement.current = document.activeElement;
489
492
  const focusableElements = getFocusableElements();
@@ -514,12 +517,12 @@ var Modal = ({
514
517
  }) => {
515
518
  const isMobile2 = useMediaQuery("(max-width: 500px)");
516
519
  const variant = explicitVariant ?? (isMobile2 ? "bottom-sheet" : "centered");
517
- const dialogRef = React10.useRef(null);
518
- const dialogId = React10.useId();
520
+ const dialogRef = React11.useRef(null);
521
+ const dialogId = React11.useId();
519
522
  const uiContext = useVolrUIOptional();
520
523
  const theme = uiContext?.theme ?? "light";
521
524
  useFocusTrap(open, dialogRef);
522
- React10.useEffect(() => {
525
+ React11.useEffect(() => {
523
526
  const handleEscape = (e) => {
524
527
  if (e.key === "Escape" && open) {
525
528
  if (onEscapeKeyDown) {
@@ -973,7 +976,7 @@ var variantMap = {
973
976
  ghost: { backgroundColor: "transparent", color: "var(--volr-text-secondary)", border: "none" },
974
977
  outline: { backgroundColor: "transparent", color: "var(--volr-text-secondary)", border: "1px solid var(--volr-border)" }
975
978
  };
976
- var Button = React10__default.default.forwardRef(
979
+ var Button = React11__default.default.forwardRef(
977
980
  ({ variant = "primary", size = "md", fullWidth, className, style, disabled, children, ...props }, ref) => {
978
981
  const { accentColor } = useVolrUI();
979
982
  const sizeStyle = sizeMap[size];
@@ -1081,12 +1084,12 @@ function PasskeyEnrollView({
1081
1084
  isEnrolling,
1082
1085
  error: enrollmentError
1083
1086
  } = react.usePasskeyEnrollment();
1084
- const [hasStarted, setHasStarted] = React10.useState(false);
1085
- const [errorMessage, setErrorMessage] = React10.useState(null);
1086
- const [isRefreshing, setIsRefreshing] = React10.useState(false);
1087
+ const [hasStarted, setHasStarted] = React11.useState(false);
1088
+ const [errorMessage, setErrorMessage] = React11.useState(null);
1089
+ const [isRefreshing, setIsRefreshing] = React11.useState(false);
1087
1090
  const biometricType = getBiometricType();
1088
1091
  const hasPasskey = user?.keyStorageType === "passkey";
1089
- React10.useEffect(() => {
1092
+ React11.useEffect(() => {
1090
1093
  console.log("[PasskeyEnrollView] User state:", {
1091
1094
  user,
1092
1095
  keyStorageType: user?.keyStorageType,
@@ -1094,7 +1097,7 @@ function PasskeyEnrollView({
1094
1097
  hasPasskey
1095
1098
  });
1096
1099
  }, [user, hasPasskey]);
1097
- React10.useEffect(() => {
1100
+ React11.useEffect(() => {
1098
1101
  if (hasPasskey && !user?.evmAddress && !isRefreshing) {
1099
1102
  const refreshUserData = async () => {
1100
1103
  try {
@@ -1125,7 +1128,7 @@ function PasskeyEnrollView({
1125
1128
  refreshUserData();
1126
1129
  }
1127
1130
  }, [hasPasskey, user?.evmAddress, isRefreshing, client, setUser, user]);
1128
- React10.useEffect(() => {
1131
+ React11.useEffect(() => {
1129
1132
  if (!user?.id) {
1130
1133
  const error = new Error("User ID is required for passkey enrollment");
1131
1134
  setErrorMessage(getUserFriendlyError(error, t));
@@ -1134,7 +1137,7 @@ function PasskeyEnrollView({
1134
1137
  }
1135
1138
  }
1136
1139
  }, [user, onError, t]);
1137
- React10.useEffect(() => {
1140
+ React11.useEffect(() => {
1138
1141
  if (enrollmentError) {
1139
1142
  const friendlyMessage = getUserFriendlyError(enrollmentError, t);
1140
1143
  setErrorMessage(friendlyMessage);
@@ -1291,8 +1294,8 @@ function MpcConnectView({
1291
1294
  isConnecting,
1292
1295
  error: connectionError
1293
1296
  } = react.useMpcConnection();
1294
- const [errorMessage, setErrorMessage] = React10.useState(null);
1295
- React10.useEffect(() => {
1297
+ const [errorMessage, setErrorMessage] = React11.useState(null);
1298
+ React11.useEffect(() => {
1296
1299
  if (connectionError) {
1297
1300
  setErrorMessage(connectionError.message);
1298
1301
  if (onError) {
@@ -1300,7 +1303,7 @@ function MpcConnectView({
1300
1303
  }
1301
1304
  }
1302
1305
  }, [connectionError, onError]);
1303
- React10.useEffect(() => {
1306
+ React11.useEffect(() => {
1304
1307
  handleConnect();
1305
1308
  }, []);
1306
1309
  const handleConnect = async () => {
@@ -1361,7 +1364,7 @@ function MpcConnectView({
1361
1364
  );
1362
1365
  }
1363
1366
  var CopyButton = ({ text, className, onCopy }) => {
1364
- const [copied, setCopied] = React10.useState(false);
1367
+ const [copied, setCopied] = React11.useState(false);
1365
1368
  const handleCopy = async () => {
1366
1369
  try {
1367
1370
  await navigator.clipboard.writeText(text);
@@ -1559,9 +1562,9 @@ function PoweredBy() {
1559
1562
  }
1560
1563
  function EmailInlineInput({ onSubmit, accentColor }) {
1561
1564
  const { t } = useI18n();
1562
- const [email, setEmail] = React10.useState("");
1563
- const [error, setError] = React10.useState(null);
1564
- const [isLoading, setIsLoading] = React10.useState(false);
1565
+ const [email, setEmail] = React11.useState("");
1566
+ const [error, setError] = React11.useState(null);
1567
+ const [isLoading, setIsLoading] = React11.useState(false);
1565
1568
  const handleSubmit = async (e) => {
1566
1569
  e.preventDefault();
1567
1570
  setError(null);
@@ -1685,14 +1688,14 @@ function SigninSelectScreen({
1685
1688
  function CodeInputScreen({ email, onSubmit, onResend }) {
1686
1689
  const { t } = useI18n();
1687
1690
  const { accentColor } = useVolrUI();
1688
- const [digits, setDigits] = React10.useState(Array(6).fill(""));
1689
- const [error, setError] = React10.useState(null);
1690
- const [isLoading, setIsLoading] = React10.useState(false);
1691
- const inputRefs = React10.useRef([]);
1692
- React10.useEffect(() => {
1691
+ const [digits, setDigits] = React11.useState(Array(6).fill(""));
1692
+ const [error, setError] = React11.useState(null);
1693
+ const [isLoading, setIsLoading] = React11.useState(false);
1694
+ const inputRefs = React11.useRef([]);
1695
+ React11.useEffect(() => {
1693
1696
  inputRefs.current[0]?.focus();
1694
1697
  }, []);
1695
- React10.useEffect(() => {
1698
+ React11.useEffect(() => {
1696
1699
  const code = digits.join("");
1697
1700
  if (code.length === 6 && !isLoading) {
1698
1701
  handleSubmit(code);
@@ -1855,23 +1858,23 @@ function SiweLoginScreen({
1855
1858
  checkSiweSession,
1856
1859
  getSiweSignUrl
1857
1860
  } = react.useVolrLogin();
1858
- const [isLoading, setIsLoading] = React10.useState(false);
1859
- const [loadingWallet, setLoadingWallet] = React10.useState(null);
1860
- const [error, setError] = React10.useState(null);
1861
- const [providers, setProviders] = React10.useState([]);
1862
- const [isDetecting, setIsDetecting] = React10.useState(true);
1863
- const [hasLegacyWallet, setHasLegacyWallet] = React10.useState(false);
1864
- const [showOtherWallet, setShowOtherWallet] = React10.useState(false);
1865
- const [sessionUrl, setSessionUrl] = React10.useState(null);
1866
- const [isPolling, setIsPolling] = React10.useState(false);
1867
- const pollingRef = React10.useRef(null);
1868
- const sessionCreatedRef = React10.useRef(false);
1869
- React10.useEffect(() => {
1861
+ const [isLoading, setIsLoading] = React11.useState(false);
1862
+ const [loadingWallet, setLoadingWallet] = React11.useState(null);
1863
+ const [error, setError] = React11.useState(null);
1864
+ const [providers, setProviders] = React11.useState([]);
1865
+ const [isDetecting, setIsDetecting] = React11.useState(true);
1866
+ const [hasLegacyWallet, setHasLegacyWallet] = React11.useState(false);
1867
+ const [showOtherWallet, setShowOtherWallet] = React11.useState(false);
1868
+ const [sessionUrl, setSessionUrl] = React11.useState(null);
1869
+ const [isPolling, setIsPolling] = React11.useState(false);
1870
+ const pollingRef = React11.useRef(null);
1871
+ const sessionCreatedRef = React11.useRef(false);
1872
+ React11.useEffect(() => {
1870
1873
  return () => {
1871
1874
  if (pollingRef.current) clearInterval(pollingRef.current);
1872
1875
  };
1873
1876
  }, []);
1874
- React10.useEffect(() => {
1877
+ React11.useEffect(() => {
1875
1878
  if (typeof window === "undefined") {
1876
1879
  setIsDetecting(false);
1877
1880
  return;
@@ -1897,7 +1900,7 @@ function SiweLoginScreen({
1897
1900
  };
1898
1901
  }, []);
1899
1902
  const hasAnyWallet = providers.length > 0 || hasLegacyWallet;
1900
- const createSession = React10.useCallback(async () => {
1903
+ const createSession = React11.useCallback(async () => {
1901
1904
  if (sessionCreatedRef.current || sessionUrl) return;
1902
1905
  sessionCreatedRef.current = true;
1903
1906
  try {
@@ -1939,17 +1942,17 @@ function SiweLoginScreen({
1939
1942
  onError(err instanceof Error ? err : new Error("Failed to create session"));
1940
1943
  }
1941
1944
  }, [createSiweSession, getSiweSignUrl, checkSiweSession, onSuccess, onError, t, sessionUrl]);
1942
- React10.useEffect(() => {
1945
+ React11.useEffect(() => {
1943
1946
  if (!isDetecting && !hasAnyWallet && !sessionUrl) {
1944
1947
  createSession();
1945
1948
  }
1946
1949
  }, [isDetecting, hasAnyWallet, sessionUrl, createSession]);
1947
- React10.useEffect(() => {
1950
+ React11.useEffect(() => {
1948
1951
  if (showOtherWallet && !sessionUrl) {
1949
1952
  createSession();
1950
1953
  }
1951
1954
  }, [showOtherWallet, sessionUrl, createSession]);
1952
- const handleWalletClick = React10.useCallback(async (provider, walletName) => {
1955
+ const handleWalletClick = React11.useCallback(async (provider, walletName) => {
1953
1956
  setError(null);
1954
1957
  setIsLoading(true);
1955
1958
  setLoadingWallet(walletName);
@@ -1973,7 +1976,7 @@ function SiweLoginScreen({
1973
1976
  setLoadingWallet(null);
1974
1977
  }
1975
1978
  }, [signWithWallet, onSuccess, onError]);
1976
- const handleLegacyWalletClick = React10.useCallback(async () => {
1979
+ const handleLegacyWalletClick = React11.useCallback(async () => {
1977
1980
  if (typeof window === "undefined" || !window.ethereum) return;
1978
1981
  const ethereum = window.ethereum;
1979
1982
  let walletName = "Wallet";
@@ -1982,7 +1985,7 @@ function SiweLoginScreen({
1982
1985
  else if (ethereum.isRabby) walletName = "Rabby";
1983
1986
  await handleWalletClick(ethereum, walletName);
1984
1987
  }, [handleWalletClick]);
1985
- const cancelOtherWallet = React10.useCallback(() => {
1988
+ const cancelOtherWallet = React11.useCallback(() => {
1986
1989
  if (pollingRef.current) {
1987
1990
  clearInterval(pollingRef.current);
1988
1991
  pollingRef.current = null;
@@ -2126,13 +2129,13 @@ function SigninModal({ isOpen, onClose, onError }) {
2126
2129
  const { logout, user } = react.useVolrContext();
2127
2130
  const { appName, branding } = useVolrUI();
2128
2131
  const { requestEmailCode, verifyEmailCode, handleSocialLogin } = react.useVolrLogin();
2129
- const [currentScreen, setCurrentScreen] = React10.useState("method-select");
2130
- const [email, setEmail] = React10.useState("");
2132
+ const [currentScreen, setCurrentScreen] = React11.useState("method-select");
2133
+ const [email, setEmail] = React11.useState("");
2131
2134
  const hasPasskey = user?.keyStorageType === "passkey";
2132
2135
  const isMobile2 = useMediaQuery("(max-width: 500px)");
2133
2136
  const isWideViewport = useMediaQuery("(min-width: 864px)");
2134
2137
  const shouldUseWideLayout = !isMobile2 && isWideViewport && Boolean(branding) && currentScreen === "method-select";
2135
- React10.useEffect(() => {
2138
+ React11.useEffect(() => {
2136
2139
  if (!isOpen) {
2137
2140
  setCurrentScreen("method-select");
2138
2141
  setEmail("");
@@ -2289,7 +2292,7 @@ function SigninModal({ isOpen, onClose, onError }) {
2289
2292
  function AccountModal({ isOpen, onClose, onError }) {
2290
2293
  const { user, logout } = react.useVolrContext();
2291
2294
  const { t } = useI18n();
2292
- const [isLoggingOut, setIsLoggingOut] = React10.useState(false);
2295
+ const [isLoggingOut, setIsLoggingOut] = React11.useState(false);
2293
2296
  if (!user) {
2294
2297
  return /* @__PURE__ */ jsxRuntime.jsx(SigninModal, { isOpen, onClose, onError });
2295
2298
  }
@@ -2423,7 +2426,7 @@ function AssetSelectView({
2423
2426
  }) })
2424
2427
  ] });
2425
2428
  }
2426
- var TextLinkButton = React10__default.default.forwardRef(({ showArrow = false, className, children, ...props }, ref) => {
2429
+ var TextLinkButton = React11__default.default.forwardRef(({ showArrow = false, className, children, ...props }, ref) => {
2427
2430
  return /* @__PURE__ */ jsxRuntime.jsxs(
2428
2431
  "button",
2429
2432
  {
@@ -2682,7 +2685,7 @@ var DepositCompletedToast = ({
2682
2685
  symbol
2683
2686
  }) => {
2684
2687
  const { t } = useI18n();
2685
- const [expanded, setExpanded] = React10.useState(false);
2688
+ const [expanded, setExpanded] = React11.useState(false);
2686
2689
  const formatAmount = (amount) => {
2687
2690
  const divisor = BigInt(10 ** decimals);
2688
2691
  const whole = amount / divisor;
@@ -2837,10 +2840,10 @@ function DepositQRView(props) {
2837
2840
  const { t } = useI18n();
2838
2841
  const { config } = react.useVolrContext();
2839
2842
  const { client } = react.useInternalAuth();
2840
- const [chainName, setChainName] = React10.useState(null);
2841
- const [showOtherTokenModal, setShowOtherTokenModal] = React10.useState(false);
2842
- const [showToast, setShowToast] = React10.useState(false);
2843
- const [toastData, setToastData] = React10.useState(null);
2843
+ const [chainName, setChainName] = React11.useState(null);
2844
+ const [showOtherTokenModal, setShowOtherTokenModal] = React11.useState(false);
2845
+ const [showToast, setShowToast] = React11.useState(false);
2846
+ const [toastData, setToastData] = React11.useState(null);
2844
2847
  const eip681 = `ethereum:${props.address}`;
2845
2848
  const status = react.useDepositListener({
2846
2849
  chainId: props.chainId,
@@ -2853,7 +2856,7 @@ function DepositQRView(props) {
2853
2856
  },
2854
2857
  address: props.address
2855
2858
  });
2856
- React10.useEffect(() => {
2859
+ React11.useEffect(() => {
2857
2860
  if (status.state === "detected") {
2858
2861
  setToastData({
2859
2862
  previousBalance: status.previousBalance,
@@ -2863,11 +2866,11 @@ function DepositQRView(props) {
2863
2866
  setShowToast(true);
2864
2867
  }
2865
2868
  }, [status]);
2866
- const getNetworkInfo = React10.useCallback(
2869
+ const getNetworkInfo = React11.useCallback(
2867
2870
  react.createGetNetworkInfo({ client, rpcOverrides: config.rpcOverrides }),
2868
2871
  [client, config.rpcOverrides]
2869
2872
  );
2870
- React10.useEffect(() => {
2873
+ React11.useEffect(() => {
2871
2874
  let cancelled = false;
2872
2875
  const loadChainName = async () => {
2873
2876
  try {
@@ -3034,11 +3037,11 @@ var DepositModal = ({
3034
3037
  }) => {
3035
3038
  const { user } = react.useVolrContext();
3036
3039
  const { client } = react.useInternalAuth();
3037
- const [depositAssets, setDepositAssets] = React10.useState([]);
3038
- const [isLoading, setIsLoading] = React10.useState(true);
3039
- const [error, setError] = React10.useState(null);
3040
- const [selectedIdx, setSelectedIdx] = React10.useState(-1);
3041
- React10.useEffect(() => {
3040
+ const [depositAssets, setDepositAssets] = React11.useState([]);
3041
+ const [isLoading, setIsLoading] = React11.useState(true);
3042
+ const [error, setError] = React11.useState(null);
3043
+ const [selectedIdx, setSelectedIdx] = React11.useState(-1);
3044
+ React11.useEffect(() => {
3042
3045
  if (!open) return;
3043
3046
  setIsLoading(true);
3044
3047
  setError(null);
@@ -3065,12 +3068,12 @@ var DepositModal = ({
3065
3068
  if (depositAssets.length === 1) return 0;
3066
3069
  return -1;
3067
3070
  };
3068
- React10.useEffect(() => {
3071
+ React11.useEffect(() => {
3069
3072
  if (open && !isLoading && depositAssets.length > 0) {
3070
3073
  setSelectedIdx(getInitialIndex());
3071
3074
  }
3072
3075
  }, [open, isLoading, depositAssets.length, asset]);
3073
- React10.useEffect(() => {
3076
+ React11.useEffect(() => {
3074
3077
  if (!open) {
3075
3078
  setSelectedIdx(-1);
3076
3079
  }
@@ -3099,16 +3102,570 @@ var DepositModal = ({
3099
3102
  )
3100
3103
  ] });
3101
3104
  };
3102
- var VolrUIContext = React10__default.default.createContext(null);
3105
+ var PaymentSkeleton = () => {
3106
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-6 volr:space-y-6 volr:animate-pulse", children: [
3107
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:items-center volr:gap-4", children: [
3108
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-16 volr:h-16 volr:bg-slate-200 volr:rounded-xl" }),
3109
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex-1 volr:space-y-2", children: [
3110
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-5 volr:bg-slate-200 volr:rounded volr:w-32" }),
3111
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-100 volr:rounded volr:w-48" })
3112
+ ] })
3113
+ ] }),
3114
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-px volr:bg-slate-200" }),
3115
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:space-y-2", children: [
3116
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-100 volr:rounded volr:w-20" }),
3117
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-8 volr:bg-slate-200 volr:rounded volr:w-40" }),
3118
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-100 volr:rounded volr:w-24" })
3119
+ ] }),
3120
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:justify-between volr:items-center volr:p-3 volr:bg-slate-50 volr:rounded-lg", children: [
3121
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-200 volr:rounded volr:w-24" }),
3122
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-200 volr:rounded volr:w-20" })
3123
+ ] }),
3124
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-12 volr:bg-slate-200 volr:rounded-lg" })
3125
+ ] });
3126
+ };
3127
+ var BalanceDisplay = ({
3128
+ balance,
3129
+ symbol,
3130
+ required,
3131
+ isInsufficient
3132
+ }) => {
3133
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3134
+ "div",
3135
+ {
3136
+ className: `volr:flex volr:justify-between volr:items-center volr:p-3 volr:rounded-lg ${isInsufficient ? "volr:bg-red-50 volr:border volr:border-red-200" : "volr:bg-slate-50"}`,
3137
+ children: [
3138
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-sm volr:text-slate-600", children: "Your Balance" }),
3139
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-right", children: [
3140
+ /* @__PURE__ */ jsxRuntime.jsxs(
3141
+ "span",
3142
+ {
3143
+ className: `volr:text-sm volr:font-medium ${isInsufficient ? "volr:text-red-600" : "volr:text-slate-900"}`,
3144
+ children: [
3145
+ balance,
3146
+ " ",
3147
+ symbol
3148
+ ]
3149
+ }
3150
+ ),
3151
+ isInsufficient && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "volr:text-xs volr:text-red-500 volr:mt-0.5", children: [
3152
+ "Need ",
3153
+ required,
3154
+ " ",
3155
+ symbol
3156
+ ] })
3157
+ ] })
3158
+ ]
3159
+ }
3160
+ );
3161
+ };
3162
+ var ItemDisplay = ({
3163
+ name,
3164
+ description,
3165
+ image,
3166
+ logoUrl
3167
+ }) => {
3168
+ const displayImage = image || logoUrl;
3169
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:items-start volr:gap-4", children: [
3170
+ displayImage ? /* @__PURE__ */ jsxRuntime.jsx(
3171
+ "img",
3172
+ {
3173
+ src: displayImage,
3174
+ alt: name,
3175
+ className: "volr:w-16 volr:h-16 volr:rounded-xl volr:object-cover volr:bg-slate-100",
3176
+ onError: (e) => {
3177
+ e.target.style.display = "none";
3178
+ }
3179
+ }
3180
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-16 volr:h-16 volr:rounded-xl volr:bg-slate-100 volr:flex volr:items-center volr:justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
3181
+ "svg",
3182
+ {
3183
+ className: "volr:w-8 volr:h-8 volr:text-slate-400",
3184
+ fill: "none",
3185
+ viewBox: "0 0 24 24",
3186
+ stroke: "currentColor",
3187
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3188
+ "path",
3189
+ {
3190
+ strokeLinecap: "round",
3191
+ strokeLinejoin: "round",
3192
+ strokeWidth: 1.5,
3193
+ d: "M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"
3194
+ }
3195
+ )
3196
+ }
3197
+ ) }),
3198
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex-1 volr:min-w-0", children: [
3199
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "volr:text-base volr:font-semibold volr:text-slate-900 volr:truncate", children: name }),
3200
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-500 volr:mt-0.5 volr:line-clamp-2", children: description })
3201
+ ] })
3202
+ ] });
3203
+ };
3204
+ var PaymentInfoView = ({
3205
+ payment,
3206
+ balance,
3207
+ isBalanceLoading,
3208
+ logoUrl,
3209
+ onPay,
3210
+ onDeposit,
3211
+ isPaying
3212
+ }) => {
3213
+ const { token, itemName, itemDescription, itemImage } = payment;
3214
+ const amountInUnits = Number(payment.amount) / Math.pow(10, token.decimals);
3215
+ const formattedAmount = amountInUnits.toLocaleString(void 0, {
3216
+ minimumFractionDigits: 0,
3217
+ maximumFractionDigits: token.decimals > 6 ? 6 : token.decimals
3218
+ });
3219
+ const balanceNum = parseFloat(balance.replace(/,/g, "") || "0");
3220
+ const isInsufficient = !isBalanceLoading && balanceNum < amountInUnits;
3221
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-6 volr:space-y-6", children: [
3222
+ itemName && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3223
+ /* @__PURE__ */ jsxRuntime.jsx(
3224
+ ItemDisplay,
3225
+ {
3226
+ name: itemName,
3227
+ description: itemDescription ?? void 0,
3228
+ image: itemImage ?? void 0,
3229
+ logoUrl
3230
+ }
3231
+ ),
3232
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-px volr:bg-slate-200" })
3233
+ ] }),
3234
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:space-y-1", children: [
3235
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-500", children: "Amount to Pay" }),
3236
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:items-baseline volr:gap-2", children: [
3237
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-2xl volr:font-bold volr:text-slate-900", children: formattedAmount }),
3238
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-lg volr:font-medium volr:text-slate-600", children: token.symbol })
3239
+ ] }),
3240
+ payment.totalUsd && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "volr:text-sm volr:text-slate-400", children: [
3241
+ "\u2248 $",
3242
+ parseFloat(payment.totalUsd).toFixed(2),
3243
+ " USD"
3244
+ ] })
3245
+ ] }),
3246
+ isBalanceLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:justify-between volr:items-center volr:p-3 volr:bg-slate-50 volr:rounded-lg volr:animate-pulse", children: [
3247
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-sm volr:text-slate-400", children: "Loading balance..." }),
3248
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:h-4 volr:bg-slate-200 volr:rounded volr:w-20" })
3249
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
3250
+ BalanceDisplay,
3251
+ {
3252
+ balance,
3253
+ symbol: token.symbol,
3254
+ required: formattedAmount,
3255
+ isInsufficient
3256
+ }
3257
+ ),
3258
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:space-y-3", children: [
3259
+ /* @__PURE__ */ jsxRuntime.jsx(
3260
+ Button,
3261
+ {
3262
+ onClick: onPay,
3263
+ disabled: isPaying || isBalanceLoading || isInsufficient,
3264
+ className: "volr:w-full",
3265
+ children: isPaying ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "volr:flex volr:items-center volr:justify-center volr:gap-2", children: [
3266
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "volr:animate-spin volr:h-4 volr:w-4", viewBox: "0 0 24 24", children: [
3267
+ /* @__PURE__ */ jsxRuntime.jsx(
3268
+ "circle",
3269
+ {
3270
+ className: "volr:opacity-25",
3271
+ cx: "12",
3272
+ cy: "12",
3273
+ r: "10",
3274
+ stroke: "currentColor",
3275
+ strokeWidth: "4",
3276
+ fill: "none"
3277
+ }
3278
+ ),
3279
+ /* @__PURE__ */ jsxRuntime.jsx(
3280
+ "path",
3281
+ {
3282
+ className: "volr:opacity-75",
3283
+ fill: "currentColor",
3284
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
3285
+ }
3286
+ )
3287
+ ] }),
3288
+ "Processing..."
3289
+ ] }) : isInsufficient ? "Insufficient Balance" : `Pay ${formattedAmount} ${token.symbol}`
3290
+ }
3291
+ ),
3292
+ isInsufficient && /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "secondary", onClick: onDeposit, className: "volr:w-full", children: [
3293
+ "Deposit ",
3294
+ token.symbol
3295
+ ] })
3296
+ ] }),
3297
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:items-center volr:justify-center volr:gap-1.5 volr:pt-2", children: [
3298
+ /* @__PURE__ */ jsxRuntime.jsx(
3299
+ "svg",
3300
+ {
3301
+ className: "volr:w-3.5 volr:h-3.5 volr:text-slate-400",
3302
+ fill: "currentColor",
3303
+ viewBox: "0 0 20 20",
3304
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3305
+ "path",
3306
+ {
3307
+ fillRule: "evenodd",
3308
+ d: "M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z",
3309
+ clipRule: "evenodd"
3310
+ }
3311
+ )
3312
+ }
3313
+ ),
3314
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-xs volr:text-slate-400", children: "Secured by Volr" })
3315
+ ] })
3316
+ ] });
3317
+ };
3318
+ var PaymentProcessingView = ({
3319
+ step,
3320
+ txHash
3321
+ }) => {
3322
+ const steps = [
3323
+ { id: "signing", label: "Signing transaction" },
3324
+ { id: "broadcasting", label: "Broadcasting" },
3325
+ { id: "confirming", label: "Confirming on-chain" }
3326
+ ];
3327
+ const currentStepIndex = steps.findIndex((s) => s.id === step);
3328
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-6 volr:space-y-8", children: [
3329
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:flex volr:justify-center volr:py-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:relative volr:w-16 volr:h-16", children: /* @__PURE__ */ jsxRuntime.jsxs(
3330
+ "svg",
3331
+ {
3332
+ className: "volr:animate-spin volr:w-16 volr:h-16 volr:text-slate-900",
3333
+ viewBox: "0 0 24 24",
3334
+ children: [
3335
+ /* @__PURE__ */ jsxRuntime.jsx(
3336
+ "circle",
3337
+ {
3338
+ className: "volr:opacity-25",
3339
+ cx: "12",
3340
+ cy: "12",
3341
+ r: "10",
3342
+ stroke: "currentColor",
3343
+ strokeWidth: "3",
3344
+ fill: "none"
3345
+ }
3346
+ ),
3347
+ /* @__PURE__ */ jsxRuntime.jsx(
3348
+ "path",
3349
+ {
3350
+ className: "volr:opacity-75",
3351
+ fill: "currentColor",
3352
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
3353
+ }
3354
+ )
3355
+ ]
3356
+ }
3357
+ ) }) }),
3358
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-center", children: [
3359
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "volr:text-lg volr:font-semibold volr:text-slate-900", children: "Processing Payment" }),
3360
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-500 volr:mt-1", children: "Please wait while we process your transaction" })
3361
+ ] }),
3362
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:space-y-3", children: steps.map((s, index) => {
3363
+ const isCompleted = index < currentStepIndex;
3364
+ const isCurrent = index === currentStepIndex;
3365
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3366
+ "div",
3367
+ {
3368
+ className: "volr:flex volr:items-center volr:gap-3 volr:px-3 volr:py-2",
3369
+ children: [
3370
+ /* @__PURE__ */ jsxRuntime.jsx(
3371
+ "div",
3372
+ {
3373
+ className: `volr:w-6 volr:h-6 volr:rounded-full volr:flex volr:items-center volr:justify-center ${isCompleted ? "volr:bg-green-100" : isCurrent ? "volr:bg-slate-900" : "volr:bg-slate-100"}`,
3374
+ children: isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(
3375
+ "svg",
3376
+ {
3377
+ className: "volr:w-4 volr:h-4 volr:text-green-600",
3378
+ fill: "none",
3379
+ viewBox: "0 0 24 24",
3380
+ stroke: "currentColor",
3381
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3382
+ "path",
3383
+ {
3384
+ strokeLinecap: "round",
3385
+ strokeLinejoin: "round",
3386
+ strokeWidth: 2,
3387
+ d: "M5 13l4 4L19 7"
3388
+ }
3389
+ )
3390
+ }
3391
+ ) : isCurrent ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-2 volr:h-2 volr:bg-white volr:rounded-full volr:animate-pulse" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-2 volr:h-2 volr:bg-slate-300 volr:rounded-full" })
3392
+ }
3393
+ ),
3394
+ /* @__PURE__ */ jsxRuntime.jsx(
3395
+ "span",
3396
+ {
3397
+ className: `volr:text-sm ${isCompleted ? "volr:text-green-600 volr:font-medium" : isCurrent ? "volr:text-slate-900 volr:font-medium" : "volr:text-slate-400"}`,
3398
+ children: s.label
3399
+ }
3400
+ )
3401
+ ]
3402
+ },
3403
+ s.id
3404
+ );
3405
+ }) }),
3406
+ txHash && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-center volr:pt-2", children: [
3407
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xs volr:text-slate-400", children: "Transaction Hash" }),
3408
+ /* @__PURE__ */ jsxRuntime.jsxs("code", { className: "volr:text-xs volr:text-slate-500 volr:font-mono", children: [
3409
+ txHash.slice(0, 10),
3410
+ "...",
3411
+ txHash.slice(-8)
3412
+ ] })
3413
+ ] })
3414
+ ] });
3415
+ };
3416
+ var PaymentResultView = ({
3417
+ payment,
3418
+ error,
3419
+ onDone,
3420
+ onRetry
3421
+ }) => {
3422
+ const isSuccess = payment.status === "CONFIRMED";
3423
+ payment.status === "FAILED" || !!error;
3424
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-6 volr:space-y-6", children: [
3425
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:flex volr:justify-center volr:py-4", children: isSuccess ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-16 volr:h-16 volr:rounded-full volr:bg-green-100 volr:flex volr:items-center volr:justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
3426
+ "svg",
3427
+ {
3428
+ className: "volr:w-8 volr:h-8 volr:text-green-600",
3429
+ fill: "none",
3430
+ viewBox: "0 0 24 24",
3431
+ stroke: "currentColor",
3432
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3433
+ "path",
3434
+ {
3435
+ strokeLinecap: "round",
3436
+ strokeLinejoin: "round",
3437
+ strokeWidth: 2,
3438
+ d: "M5 13l4 4L19 7"
3439
+ }
3440
+ )
3441
+ }
3442
+ ) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:w-16 volr:h-16 volr:rounded-full volr:bg-red-100 volr:flex volr:items-center volr:justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
3443
+ "svg",
3444
+ {
3445
+ className: "volr:w-8 volr:h-8 volr:text-red-600",
3446
+ fill: "none",
3447
+ viewBox: "0 0 24 24",
3448
+ stroke: "currentColor",
3449
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3450
+ "path",
3451
+ {
3452
+ strokeLinecap: "round",
3453
+ strokeLinejoin: "round",
3454
+ strokeWidth: 2,
3455
+ d: "M6 18L18 6M6 6l12 12"
3456
+ }
3457
+ )
3458
+ }
3459
+ ) }) }),
3460
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-center", children: [
3461
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "volr:text-lg volr:font-semibold volr:text-slate-900", children: isSuccess ? "Payment Complete" : "Payment Failed" }),
3462
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-500 volr:mt-1", children: isSuccess ? "Your transaction has been confirmed" : error?.message || "The transaction could not be completed" })
3463
+ ] }),
3464
+ isSuccess && payment.txHash && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:bg-slate-50 volr:rounded-lg volr:p-4 volr:space-y-2", children: [
3465
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
3466
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-slate-500", children: "Amount" }),
3467
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "volr:font-medium volr:text-slate-900", children: [
3468
+ (Number(payment.amount) / Math.pow(10, payment.token.decimals)).toLocaleString(),
3469
+ " ",
3470
+ payment.token.symbol
3471
+ ] })
3472
+ ] }),
3473
+ payment.totalUsd && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
3474
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-slate-500", children: "USD Value" }),
3475
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "volr:text-slate-600", children: [
3476
+ "$",
3477
+ parseFloat(payment.totalUsd).toFixed(2)
3478
+ ] })
3479
+ ] }),
3480
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
3481
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "volr:text-slate-500", children: "Transaction" }),
3482
+ /* @__PURE__ */ jsxRuntime.jsxs("code", { className: "volr:text-xs volr:text-slate-600 volr:font-mono", children: [
3483
+ payment.txHash.slice(0, 8),
3484
+ "...",
3485
+ payment.txHash.slice(-6)
3486
+ ] })
3487
+ ] })
3488
+ ] }),
3489
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:space-y-3", children: isSuccess ? /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onDone, className: "volr:w-full", children: "Done" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3490
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onRetry, className: "volr:w-full", children: "Try Again" }),
3491
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", onClick: onDone, className: "volr:w-full", children: "Cancel" })
3492
+ ] }) })
3493
+ ] });
3494
+ };
3495
+ var PaymentModal = ({
3496
+ open,
3497
+ onOpenChange
3498
+ }) => {
3499
+ const { user } = react.useVolrContext();
3500
+ const { client } = react.useInternalAuth();
3501
+ const { paymentOptions, close: closeModal } = useVolrModal();
3502
+ const { updatePaymentToProcessing, checkPayment, pollPaymentStatus } = react.useVolrPay();
3503
+ const [step, setStep] = React11.useState("info");
3504
+ const [processingStep, setProcessingStep] = React11.useState("signing");
3505
+ const [balance, setBalance] = React11.useState("0");
3506
+ const [isBalanceLoading, setIsBalanceLoading] = React11.useState(true);
3507
+ const [isPaying, setIsPaying] = React11.useState(false);
3508
+ const [currentPayment, setCurrentPayment] = React11.useState(null);
3509
+ const [txHash, setTxHash] = React11.useState();
3510
+ const [error, setError] = React11.useState();
3511
+ const [logoUrl, setLogoUrl] = React11.useState();
3512
+ React11.useEffect(() => {
3513
+ if (open && paymentOptions) {
3514
+ setStep("info");
3515
+ setProcessingStep("signing");
3516
+ setCurrentPayment(paymentOptions.payment);
3517
+ setError(void 0);
3518
+ setTxHash(void 0);
3519
+ fetchBalance(paymentOptions.payment);
3520
+ fetchBranding();
3521
+ } else if (!open) {
3522
+ setCurrentPayment(null);
3523
+ setBalance("0");
3524
+ setIsBalanceLoading(true);
3525
+ }
3526
+ }, [open, paymentOptions]);
3527
+ const fetchBalance = async (payment) => {
3528
+ if (!user?.evmAddress) {
3529
+ setIsBalanceLoading(false);
3530
+ return;
3531
+ }
3532
+ setIsBalanceLoading(true);
3533
+ try {
3534
+ const response = await client.get(
3535
+ `/wallet/balance?chainId=${payment.token.chainId}&address=${user.evmAddress}&tokenId=${payment.token.id}`
3536
+ ).catch(() => ({ balance: "0" }));
3537
+ const balanceNum = Number(response.balance) / Math.pow(10, payment.token.decimals);
3538
+ setBalance(balanceNum.toLocaleString(void 0, {
3539
+ minimumFractionDigits: 0,
3540
+ maximumFractionDigits: payment.token.decimals > 6 ? 6 : payment.token.decimals
3541
+ }));
3542
+ } catch (err) {
3543
+ console.error("Failed to fetch balance:", err);
3544
+ setBalance("0");
3545
+ } finally {
3546
+ setIsBalanceLoading(false);
3547
+ }
3548
+ };
3549
+ const fetchBranding = async () => {
3550
+ try {
3551
+ const response = await client.get("/auth/branding");
3552
+ setLogoUrl(response.logoUrl);
3553
+ } catch {
3554
+ }
3555
+ };
3556
+ const handlePay = React11.useCallback(async () => {
3557
+ if (!currentPayment || !user?.evmAddress || !paymentOptions) return;
3558
+ setIsPaying(true);
3559
+ setStep("processing");
3560
+ setProcessingStep("signing");
3561
+ setError(void 0);
3562
+ try {
3563
+ const configResponse = await client.get(
3564
+ `/payments/config`
3565
+ ).catch(() => null);
3566
+ if (!configResponse?.receiverAddress) {
3567
+ throw new Error("Payment not configured. Please contact the app developer.");
3568
+ }
3569
+ setProcessingStep("broadcasting");
3570
+ const mockTxHash = `0x${Math.random().toString(16).slice(2)}`;
3571
+ setTxHash(mockTxHash);
3572
+ setProcessingStep("confirming");
3573
+ await new Promise((resolve) => setTimeout(resolve, 2e3));
3574
+ const finalPayment = {
3575
+ ...currentPayment,
3576
+ status: "CONFIRMED",
3577
+ txHash: mockTxHash,
3578
+ confirmedAt: (/* @__PURE__ */ new Date()).toISOString()
3579
+ };
3580
+ setCurrentPayment(finalPayment);
3581
+ setStep("result");
3582
+ paymentOptions.onComplete?.(finalPayment);
3583
+ } catch (err) {
3584
+ console.error("Payment failed:", err);
3585
+ const paymentError = {
3586
+ code: "PAYMENT_FAILED",
3587
+ message: err.message || "Payment failed. Please try again."
3588
+ };
3589
+ setError(paymentError);
3590
+ setStep("result");
3591
+ paymentOptions?.onError?.(paymentError);
3592
+ } finally {
3593
+ setIsPaying(false);
3594
+ }
3595
+ }, [currentPayment, user, paymentOptions, client, updatePaymentToProcessing]);
3596
+ const handleDeposit = React11.useCallback(() => {
3597
+ closeModal();
3598
+ }, [closeModal]);
3599
+ const handleDone = React11.useCallback(() => {
3600
+ if (currentPayment) {
3601
+ paymentOptions?.onComplete?.(currentPayment);
3602
+ }
3603
+ onOpenChange(false);
3604
+ }, [currentPayment, paymentOptions, onOpenChange]);
3605
+ const handleRetry = React11.useCallback(() => {
3606
+ setStep("info");
3607
+ setError(void 0);
3608
+ if (currentPayment) {
3609
+ fetchBalance(currentPayment);
3610
+ }
3611
+ }, [currentPayment]);
3612
+ const handleClose = React11.useCallback(() => {
3613
+ if (step === "processing") {
3614
+ return;
3615
+ }
3616
+ if (step === "info") {
3617
+ paymentOptions?.onCancel?.();
3618
+ }
3619
+ onOpenChange(false);
3620
+ }, [step, paymentOptions, onOpenChange]);
3621
+ if (!paymentOptions || !currentPayment) {
3622
+ return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open, onOpenChange, children: [
3623
+ /* @__PURE__ */ jsxRuntime.jsx(ModalHeader, { onClose: () => onOpenChange(false) }),
3624
+ /* @__PURE__ */ jsxRuntime.jsx(PaymentSkeleton, {})
3625
+ ] });
3626
+ }
3627
+ return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open, onOpenChange: handleClose, children: [
3628
+ /* @__PURE__ */ jsxRuntime.jsx(
3629
+ ModalHeader,
3630
+ {
3631
+ onClose: step !== "processing" ? handleClose : void 0,
3632
+ title: step === "info" ? "Confirm Payment" : void 0
3633
+ }
3634
+ ),
3635
+ step === "info" && /* @__PURE__ */ jsxRuntime.jsx(
3636
+ PaymentInfoView,
3637
+ {
3638
+ payment: currentPayment,
3639
+ balance,
3640
+ isBalanceLoading,
3641
+ logoUrl,
3642
+ onPay: handlePay,
3643
+ onDeposit: handleDeposit,
3644
+ isPaying
3645
+ }
3646
+ ),
3647
+ step === "processing" && /* @__PURE__ */ jsxRuntime.jsx(PaymentProcessingView, { step: processingStep, txHash }),
3648
+ step === "result" && /* @__PURE__ */ jsxRuntime.jsx(
3649
+ PaymentResultView,
3650
+ {
3651
+ payment: currentPayment,
3652
+ error,
3653
+ onDone: handleDone,
3654
+ onRetry: handleRetry
3655
+ }
3656
+ )
3657
+ ] });
3658
+ };
3659
+ var VolrUIContext = React11__default.default.createContext(null);
3103
3660
  var useVolrUI = () => {
3104
- const context = React10.useContext(VolrUIContext);
3661
+ const context = React11.useContext(VolrUIContext);
3105
3662
  if (!context) {
3106
3663
  throw new Error("useVolrUI must be used within VolrUIProvider");
3107
3664
  }
3108
3665
  return context;
3109
3666
  };
3110
3667
  var useVolrUIOptional = () => {
3111
- return React10.useContext(VolrUIContext);
3668
+ return React11.useContext(VolrUIContext);
3112
3669
  };
3113
3670
  function OnboardingFlow({
3114
3671
  keyStorageType,
@@ -3164,11 +3721,11 @@ var VolrUIProvider = ({
3164
3721
  const providerPolicy = config.providerPolicy ?? {
3165
3722
  enforceOnFirstLogin: true
3166
3723
  };
3167
- const [showOnboarding, setShowOnboarding] = React10.useState(false);
3168
- const [keyStorageTypeError, setKeyStorageTypeError] = React10.useState(
3724
+ const [showOnboarding, setShowOnboarding] = React11.useState(false);
3725
+ const [keyStorageTypeError, setKeyStorageTypeError] = React11.useState(
3169
3726
  null
3170
3727
  );
3171
- React10.useEffect(() => {
3728
+ React11.useEffect(() => {
3172
3729
  if (providerPolicy.enforceOnFirstLogin !== false && !keyStorageType) {
3173
3730
  const errorMessage = "keyStorageType must be specified in VolrUIProvider props. Please set keyStorageType prop in VolrUIProvider.";
3174
3731
  console.error(errorMessage);
@@ -3214,6 +3771,7 @@ var VolrUIProvider = ({
3214
3771
  ),
3215
3772
  /* @__PURE__ */ jsxRuntime.jsx(AccountModalPortal, {}),
3216
3773
  /* @__PURE__ */ jsxRuntime.jsx(DepositModalPortal, {}),
3774
+ /* @__PURE__ */ jsxRuntime.jsx(PaymentModalPortal, {}),
3217
3775
  showOnboarding && keyStorageType && /* @__PURE__ */ jsxRuntime.jsx(
3218
3776
  Modal,
3219
3777
  {
@@ -3239,9 +3797,9 @@ var VolrUIProvider = ({
3239
3797
  };
3240
3798
  function AccountModalPortal() {
3241
3799
  const { isOpen, mode, close } = useVolrModal();
3242
- const [portalRoot, setPortalRoot] = React10.useState(null);
3243
- const [error, setError] = React10.useState(null);
3244
- React10.useEffect(() => {
3800
+ const [portalRoot, setPortalRoot] = React11.useState(null);
3801
+ const [error, setError] = React11.useState(null);
3802
+ React11.useEffect(() => {
3245
3803
  if (typeof window === "undefined") return;
3246
3804
  let root = document.getElementById("volr-modal-root");
3247
3805
  if (!root) {
@@ -3300,9 +3858,9 @@ function AccountModalPortal() {
3300
3858
  function DepositModalPortal() {
3301
3859
  const { isOpen, mode, asset, close } = useVolrModal();
3302
3860
  const { user } = react.useVolrContext();
3303
- const [portalRoot, setPortalRoot] = React10.useState(null);
3304
- const [showLogin, setShowLogin] = React10.useState(false);
3305
- React10.useEffect(() => {
3861
+ const [portalRoot, setPortalRoot] = React11.useState(null);
3862
+ const [showLogin, setShowLogin] = React11.useState(false);
3863
+ React11.useEffect(() => {
3306
3864
  if (typeof window === "undefined") return;
3307
3865
  let root = document.getElementById("volr-modal-root");
3308
3866
  if (!root) {
@@ -3317,7 +3875,7 @@ function DepositModalPortal() {
3317
3875
  }
3318
3876
  };
3319
3877
  }, []);
3320
- React10.useEffect(() => {
3878
+ React11.useEffect(() => {
3321
3879
  if (isOpen && mode === "deposit" && !user) {
3322
3880
  setShowLogin(true);
3323
3881
  } else {
@@ -3349,11 +3907,41 @@ function DepositModalPortal() {
3349
3907
  portalRoot
3350
3908
  );
3351
3909
  }
3910
+ function PaymentModalPortal() {
3911
+ const { isOpen, mode, close } = useVolrModal();
3912
+ const [portalRoot, setPortalRoot] = React11.useState(null);
3913
+ React11.useEffect(() => {
3914
+ if (typeof window === "undefined") return;
3915
+ let root = document.getElementById("volr-modal-root");
3916
+ if (!root) {
3917
+ root = document.createElement("div");
3918
+ root.id = "volr-modal-root";
3919
+ document.body.appendChild(root);
3920
+ }
3921
+ setPortalRoot(root);
3922
+ return () => {
3923
+ if (root && root.childNodes.length === 0) {
3924
+ root.remove();
3925
+ }
3926
+ };
3927
+ }, []);
3928
+ if (!portalRoot) return null;
3929
+ return reactDom.createPortal(
3930
+ /* @__PURE__ */ jsxRuntime.jsx(
3931
+ PaymentModal,
3932
+ {
3933
+ open: isOpen && mode === "payment",
3934
+ onOpenChange: (open) => !open && close()
3935
+ }
3936
+ ),
3937
+ portalRoot
3938
+ );
3939
+ }
3352
3940
  function OAuthCallbackHandler({
3353
3941
  onShowOnboarding
3354
3942
  }) {
3355
- const [hasCode, setHasCode] = React10.useState(false);
3356
- React10.useEffect(() => {
3943
+ const [hasCode, setHasCode] = React11.useState(false);
3944
+ React11.useEffect(() => {
3357
3945
  if (typeof window === "undefined") return;
3358
3946
  const params = new URLSearchParams(window.location.search);
3359
3947
  const code = params.get("code");
@@ -3396,13 +3984,13 @@ function OnboardingChecker({
3396
3984
  }) {
3397
3985
  const { user, provider, isLoading } = react.useVolrContext();
3398
3986
  const { isOpen: isModalOpen } = useVolrModal();
3399
- const modalWasOpened = React10__default.default.useRef(false);
3400
- React10.useEffect(() => {
3987
+ const modalWasOpened = React11__default.default.useRef(false);
3988
+ React11.useEffect(() => {
3401
3989
  if (isModalOpen) {
3402
3990
  modalWasOpened.current = true;
3403
3991
  }
3404
3992
  }, [isModalOpen]);
3405
- React10.useEffect(() => {
3993
+ React11.useEffect(() => {
3406
3994
  if (isLoading) {
3407
3995
  return;
3408
3996
  }
@@ -3445,7 +4033,7 @@ function OnboardingChecker({
3445
4033
  }
3446
4034
  function useSwitchNetwork() {
3447
4035
  const { client } = react.useInternalAuth();
3448
- return React10.useCallback(
4036
+ return React11.useCallback(
3449
4037
  async (chainId) => {
3450
4038
  if (typeof window === "undefined" || !window.ethereum) {
3451
4039
  throw new Error("No wallet found");