@volr/react-ui 0.1.54 → 0.1.57
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/README.md +4 -9
- package/dist/index.cjs +284 -144
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -4
- package/dist/index.d.ts +18 -4
- package/dist/index.js +211 -71
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React6 = require('react');
|
|
4
4
|
var reactDom = require('react-dom');
|
|
5
5
|
var react = require('@volr/react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -9,7 +9,7 @@ var tailwindMerge = require('tailwind-merge');
|
|
|
9
9
|
|
|
10
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var React6__default = /*#__PURE__*/_interopDefault(React6);
|
|
13
13
|
|
|
14
14
|
var __defProp = Object.defineProperty;
|
|
15
15
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -76,6 +76,12 @@ var en = {
|
|
|
76
76
|
title: "Success!",
|
|
77
77
|
message: "You're all set. Redirecting..."
|
|
78
78
|
},
|
|
79
|
+
account: {
|
|
80
|
+
title: "My Account",
|
|
81
|
+
walletAddress: "Wallet Address",
|
|
82
|
+
email: "Email",
|
|
83
|
+
logout: "Log out"
|
|
84
|
+
},
|
|
79
85
|
deposit: {
|
|
80
86
|
selectTitle: "Select asset to deposit",
|
|
81
87
|
qrTitle: "Deposit",
|
|
@@ -169,6 +175,12 @@ var ko = {
|
|
|
169
175
|
title: "\uC644\uB8CC!",
|
|
170
176
|
message: "\uBAA8\uB4E0 \uC124\uC815\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC911..."
|
|
171
177
|
},
|
|
178
|
+
account: {
|
|
179
|
+
title: "\uB0B4 \uACC4\uC815",
|
|
180
|
+
walletAddress: "\uC9C0\uAC11 \uC8FC\uC18C",
|
|
181
|
+
email: "\uC774\uBA54\uC77C",
|
|
182
|
+
logout: "\uB85C\uADF8\uC544\uC6C3"
|
|
183
|
+
},
|
|
172
184
|
deposit: {
|
|
173
185
|
selectTitle: "\uCDA9\uC804\uD560 \uC790\uC0B0\uC744 \uC120\uD0DD\uD558\uC138\uC694",
|
|
174
186
|
qrTitle: "\uC785\uAE08\uD558\uAE30",
|
|
@@ -209,13 +221,13 @@ var translations = {
|
|
|
209
221
|
function getTranslations(locale = "en") {
|
|
210
222
|
return translations[locale] || translations.en;
|
|
211
223
|
}
|
|
212
|
-
var I18nContext =
|
|
224
|
+
var I18nContext = React6.createContext(null);
|
|
213
225
|
function interpolate(text, params) {
|
|
214
226
|
if (!params) return text;
|
|
215
227
|
return text.replace(/\{\{(\w+)\}\}/g, (_, key) => params[key] ?? `{{${key}}}`);
|
|
216
228
|
}
|
|
217
229
|
function useI18n() {
|
|
218
|
-
const context =
|
|
230
|
+
const context = React6.useContext(I18nContext);
|
|
219
231
|
if (!context) {
|
|
220
232
|
return {
|
|
221
233
|
locale: "en",
|
|
@@ -250,9 +262,9 @@ function detectLocale() {
|
|
|
250
262
|
return lang.startsWith("ko") ? "ko" : "en";
|
|
251
263
|
}
|
|
252
264
|
function I18nProvider({ children }) {
|
|
253
|
-
const [locale, setLocale] =
|
|
254
|
-
const translations2 =
|
|
255
|
-
const t =
|
|
265
|
+
const [locale, setLocale] = React6.useState(detectLocale());
|
|
266
|
+
const translations2 = React6.useMemo(() => getTranslations(locale), [locale]);
|
|
267
|
+
const t = React6.useMemo(() => {
|
|
256
268
|
return (key, params) => {
|
|
257
269
|
const keys = key.split(".");
|
|
258
270
|
let value2 = translations2;
|
|
@@ -269,7 +281,7 @@ function I18nProvider({ children }) {
|
|
|
269
281
|
return typeof value2 === "string" ? interpolate(value2, params) : key;
|
|
270
282
|
};
|
|
271
283
|
}, [translations2]);
|
|
272
|
-
const value =
|
|
284
|
+
const value = React6.useMemo(
|
|
273
285
|
() => ({
|
|
274
286
|
locale,
|
|
275
287
|
translations: translations2,
|
|
@@ -281,9 +293,9 @@ function I18nProvider({ children }) {
|
|
|
281
293
|
return /* @__PURE__ */ jsxRuntime.jsx(I18nContext.Provider, { value, children });
|
|
282
294
|
}
|
|
283
295
|
var useTranslation = useI18n;
|
|
284
|
-
var VolrModalContext =
|
|
296
|
+
var VolrModalContext = React6.createContext(null);
|
|
285
297
|
var useVolrModal = () => {
|
|
286
|
-
const context =
|
|
298
|
+
const context = React6.useContext(VolrModalContext);
|
|
287
299
|
if (!context) {
|
|
288
300
|
throw new Error("useVolrModal must be used within VolrUIProvider");
|
|
289
301
|
}
|
|
@@ -292,20 +304,19 @@ var useVolrModal = () => {
|
|
|
292
304
|
var VolrModalProvider = ({
|
|
293
305
|
children
|
|
294
306
|
}) => {
|
|
295
|
-
const [isOpen, setIsOpen] =
|
|
296
|
-
const [mode, setMode] =
|
|
297
|
-
const
|
|
298
|
-
const open =
|
|
299
|
-
setMode(
|
|
307
|
+
const [isOpen, setIsOpen] = React6.useState(false);
|
|
308
|
+
const [mode, setMode] = React6.useState("account");
|
|
309
|
+
const [asset, setAsset] = React6.useState(null);
|
|
310
|
+
const open = React6.useCallback((options) => {
|
|
311
|
+
setMode(options?.mode ?? "account");
|
|
312
|
+
setAsset(options?.asset ?? null);
|
|
300
313
|
setIsOpen(true);
|
|
301
|
-
}, [user]);
|
|
302
|
-
const close = React5.useCallback(() => {
|
|
303
|
-
setIsOpen(false);
|
|
304
314
|
}, []);
|
|
305
|
-
const
|
|
306
|
-
setIsOpen(
|
|
315
|
+
const close = React6.useCallback(() => {
|
|
316
|
+
setIsOpen(false);
|
|
317
|
+
setAsset(null);
|
|
307
318
|
}, []);
|
|
308
|
-
return /* @__PURE__ */ jsxRuntime.jsx(VolrModalContext.Provider, { value: { isOpen, mode, open, close
|
|
319
|
+
return /* @__PURE__ */ jsxRuntime.jsx(VolrModalContext.Provider, { value: { isOpen, mode, asset, open, close }, children });
|
|
309
320
|
};
|
|
310
321
|
var twMerge = tailwindMerge.extendTailwindMerge({
|
|
311
322
|
prefix: "volr:"
|
|
@@ -314,11 +325,11 @@ function cn(...inputs) {
|
|
|
314
325
|
return twMerge(clsx.clsx(inputs));
|
|
315
326
|
}
|
|
316
327
|
function useMediaQuery(query) {
|
|
317
|
-
const [matches, setMatches] =
|
|
328
|
+
const [matches, setMatches] = React6.useState(() => {
|
|
318
329
|
if (typeof window === "undefined") return false;
|
|
319
330
|
return window.matchMedia(query).matches;
|
|
320
331
|
});
|
|
321
|
-
|
|
332
|
+
React6.useEffect(() => {
|
|
322
333
|
if (typeof window === "undefined") return;
|
|
323
334
|
const mql = window.matchMedia(query);
|
|
324
335
|
const handler = (event) => setMatches(event.matches);
|
|
@@ -330,11 +341,11 @@ function useMediaQuery(query) {
|
|
|
330
341
|
}
|
|
331
342
|
|
|
332
343
|
// src/generated/volr-sdk-css.ts
|
|
333
|
-
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-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-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-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-blue-500:oklch(62.3% .214 259.815);--volr-color-purple-600:oklch(55.8% .288 302.321);--volr-color-rose-50:oklch(96.9% .015 12.422);--volr-color-rose-200:oklch(89.2% .058 10.001);--volr-color-rose-700:oklch(51.4% .222 16.935);--volr-color-rose-800:oklch(45.5% .188 13.697);--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-700:oklch(37.2% .044 257.287);--volr-color-slate-900:oklch(20.8% .042 265.755);--volr-color-gray-100:oklch(96.7% .003 264.542);--volr-color-gray-400:oklch(70.7% .022 261.325);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-gray-900:oklch(21% .034 264.665);--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-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)}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family)}button,input,select,textarea{color:inherit;background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:#94a3b8}h1,h2,h3{color:#0f172a;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);border-width:1px;border-color:var(--volr-color-slate-300);background-color:var(--volr-color-white);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);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-color-slate-400);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{color:#475569;background-color:#f1f5f9}.volr-dialog-close:focus-visible{outline:none;box-shadow:0 0 0 2px #94a3b8b3}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{width:100%;color:inherit;background-color:#fff;border:1px solid #cbd5e1;border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:#94a3b8}.volr-email-input:focus{border-color:#cbd5e1;box-shadow:0 0 0 2px #94a3b8b3}.volr-option-button{cursor:pointer;background-color:#fff;border:1px solid #e2e8f0;border-radius:.5rem;align-items:center;gap:.75rem;width:100%;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:#f8fafc;border-color:#e2e8f0}.volr-option-button:focus-visible{outline:none;box-shadow:0 0 0 2px #94a3b8b3}}@layer utilities{.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-0{right:calc(var(--volr-spacing)*0)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:left-0{left:calc(var(--volr-spacing)*0)}.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\\:my-8{margin-block:calc(var(--volr-spacing)*8)}.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-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\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.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-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-24{max-height:calc(var(--volr-spacing)*24)}.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\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.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-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-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{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\\:cursor-not-allowed{cursor:not-allowed}.volr\\:cursor-pointer{cursor:pointer}.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-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)))}.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-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-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-none{--volr-tw-border-style:none;border-style:none}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-rose-200{border-color:var(--volr-color-rose-200)}.volr\\:border-slate-100{border-color:var(--volr-color-slate-100)}.volr\\:border-slate-200,.volr\\:border-slate-200\\/50{border-color:var(--volr-color-slate-200)}@supports (color:color-mix(in lab, red, red)){.volr\\:border-slate-200\\/50{border-color:color-mix(in oklab,var(--volr-color-slate-200)50%,transparent)}}.volr\\:border-slate-300{border-color:var(--volr-color-slate-300)}.volr\\:border-white{border-color:var(--volr-color-white)}.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-blue-500{background-color:var(--volr-color-blue-500)}.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-gray-100{background-color:var(--volr-color-gray-100)}.volr\\:bg-gray-400{background-color:var(--volr-color-gray-400)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-rose-50{background-color:var(--volr-color-rose-50)}.volr\\:bg-slate-50,.volr\\:bg-slate-50\\/50{background-color:var(--volr-color-slate-50)}@supports (color:color-mix(in lab, red, red)){.volr\\:bg-slate-50\\/50{background-color:color-mix(in oklab,var(--volr-color-slate-50)50%,transparent)}}.volr\\:bg-slate-100{background-color:var(--volr-color-slate-100)}.volr\\:bg-slate-200{background-color:var(--volr-color-slate-200)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.volr\\:bg-transparent{background-color:#0000}.volr\\:bg-white{background-color:var(--volr-color-white)}.volr\\:bg-gradient-to-br{--volr-tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--volr-tw-gradient-stops))}.volr\\:from-blue-500{--volr-tw-gradient-from:var(--volr-color-blue-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\\: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-purple-600{--volr-tw-gradient-to:var(--volr-color-purple-600);--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-1\\.5{padding:calc(var(--volr-spacing)*1.5)}.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\\:px-5{padding-inline:calc(var(--volr-spacing)*5)}.volr\\:px-6{padding-inline:calc(var(--volr-spacing)*6)}.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-3{padding-block:calc(var(--volr-spacing)*3)}.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-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pb-5{padding-bottom:calc(var(--volr-spacing)*5)}.volr\\:pb-6{padding-bottom:calc(var(--volr-spacing)*6)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.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-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-gray-900{color:var(--volr-color-gray-900)}.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-rose-700{color:var(--volr-color-rose-700)}.volr\\:text-rose-800{color:var(--volr-color-rose-800)}.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-700{color:var(--volr-color-slate-700)}.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-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-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-200{--volr-tw-duration:.2s;transition-duration:.2s}.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\\:border-slate-200:hover{border-color:var(--volr-color-slate-200)}.volr\\:hover\\:bg-slate-50:hover{background-color:var(--volr-color-slate-50)}}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr\\:disabled\\:bg-slate-50:disabled{background-color:var(--volr-color-slate-50)}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}}@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 pulse{50%{opacity:.5}}';
|
|
344
|
+
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-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-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-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-blue-500:oklch(62.3% .214 259.815);--volr-color-purple-600:oklch(55.8% .288 302.321);--volr-color-rose-50:oklch(96.9% .015 12.422);--volr-color-rose-200:oklch(89.2% .058 10.001);--volr-color-rose-700:oklch(51.4% .222 16.935);--volr-color-rose-800:oklch(45.5% .188 13.697);--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-700:oklch(37.2% .044 257.287);--volr-color-slate-900:oklch(20.8% .042 265.755);--volr-color-gray-100:oklch(96.7% .003 264.542);--volr-color-gray-400:oklch(70.7% .022 261.325);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-gray-900:oklch(21% .034 264.665);--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-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)}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family)}button,input,select,textarea{color:inherit;background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:#94a3b8}h1,h2,h3{color:#0f172a;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);border-width:1px;border-color:var(--volr-color-slate-300);background-color:var(--volr-color-white);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);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-color-slate-400);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{color:#475569;background-color:#f1f5f9}.volr-dialog-close:focus-visible{outline:none;box-shadow:0 0 0 2px #94a3b8b3}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{width:100%;color:inherit;background-color:#fff;border:1px solid #cbd5e1;border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:#94a3b8}.volr-email-input:focus{border-color:#cbd5e1;box-shadow:0 0 0 2px #94a3b8b3}.volr-option-button{cursor:pointer;background-color:#fff;border:1px solid #e2e8f0;border-radius:.5rem;align-items:center;gap:.75rem;width:100%;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:#f8fafc;border-color:#e2e8f0}.volr-option-button:focus-visible{outline:none;box-shadow:0 0 0 2px #94a3b8b3}}@layer utilities{.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-0{right:calc(var(--volr-spacing)*0)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:left-0{left:calc(var(--volr-spacing)*0)}.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\\:my-8{margin-block:calc(var(--volr-spacing)*8)}.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\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.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-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-24{max-height:calc(var(--volr-spacing)*24)}.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\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.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-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-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{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\\:cursor-not-allowed{cursor:not-allowed}.volr\\:cursor-pointer{cursor:pointer}.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-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)))}.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-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-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-none{--volr-tw-border-style:none;border-style:none}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-rose-200{border-color:var(--volr-color-rose-200)}.volr\\:border-slate-100{border-color:var(--volr-color-slate-100)}.volr\\:border-slate-200,.volr\\:border-slate-200\\/50{border-color:var(--volr-color-slate-200)}@supports (color:color-mix(in lab, red, red)){.volr\\:border-slate-200\\/50{border-color:color-mix(in oklab,var(--volr-color-slate-200)50%,transparent)}}.volr\\:border-slate-300{border-color:var(--volr-color-slate-300)}.volr\\:border-white{border-color:var(--volr-color-white)}.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-blue-500{background-color:var(--volr-color-blue-500)}.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-gray-100{background-color:var(--volr-color-gray-100)}.volr\\:bg-gray-400{background-color:var(--volr-color-gray-400)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-rose-50{background-color:var(--volr-color-rose-50)}.volr\\:bg-slate-50,.volr\\:bg-slate-50\\/50{background-color:var(--volr-color-slate-50)}@supports (color:color-mix(in lab, red, red)){.volr\\:bg-slate-50\\/50{background-color:color-mix(in oklab,var(--volr-color-slate-50)50%,transparent)}}.volr\\:bg-slate-100{background-color:var(--volr-color-slate-100)}.volr\\:bg-slate-200{background-color:var(--volr-color-slate-200)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.volr\\:bg-transparent{background-color:#0000}.volr\\:bg-white{background-color:var(--volr-color-white)}.volr\\:bg-gradient-to-br{--volr-tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--volr-tw-gradient-stops))}.volr\\:from-blue-500{--volr-tw-gradient-from:var(--volr-color-blue-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\\: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-purple-600{--volr-tw-gradient-to:var(--volr-color-purple-600);--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-1\\.5{padding:calc(var(--volr-spacing)*1.5)}.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\\:px-5{padding-inline:calc(var(--volr-spacing)*5)}.volr\\:px-6{padding-inline:calc(var(--volr-spacing)*6)}.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-3{padding-block:calc(var(--volr-spacing)*3)}.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-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pb-5{padding-bottom:calc(var(--volr-spacing)*5)}.volr\\:pb-6{padding-bottom:calc(var(--volr-spacing)*6)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.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-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-gray-900{color:var(--volr-color-gray-900)}.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-rose-700{color:var(--volr-color-rose-700)}.volr\\:text-rose-800{color:var(--volr-color-rose-800)}.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-700{color:var(--volr-color-slate-700)}.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-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-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-200{--volr-tw-duration:.2s;transition-duration:.2s}.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\\:border-slate-200:hover{border-color:var(--volr-color-slate-200)}.volr\\:hover\\:bg-slate-50:hover{background-color:var(--volr-color-slate-50)}}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr\\:disabled\\:bg-slate-50:disabled{background-color:var(--volr-color-slate-50)}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}}@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 pulse{50%{opacity:.5}}';
|
|
334
345
|
function ShadowPortal({ children }) {
|
|
335
|
-
const [shadowHost, setShadowHost] =
|
|
336
|
-
const [mountNode, setMountNode] =
|
|
337
|
-
|
|
346
|
+
const [shadowHost, setShadowHost] = React6.useState(null);
|
|
347
|
+
const [mountNode, setMountNode] = React6.useState(null);
|
|
348
|
+
React6.useEffect(() => {
|
|
338
349
|
const host = document.createElement("div");
|
|
339
350
|
host.id = "volr-shadow-portal";
|
|
340
351
|
host.style.position = "fixed";
|
|
@@ -361,7 +372,7 @@ function ShadowPortal({ children }) {
|
|
|
361
372
|
return reactDom.createPortal(children, mountNode);
|
|
362
373
|
}
|
|
363
374
|
function useFocusTrap(isActive, containerRef) {
|
|
364
|
-
const previousActiveElement =
|
|
375
|
+
const previousActiveElement = React6.useRef(null);
|
|
365
376
|
const focusableSelector = [
|
|
366
377
|
"button:not([disabled])",
|
|
367
378
|
"input:not([disabled])",
|
|
@@ -370,7 +381,7 @@ function useFocusTrap(isActive, containerRef) {
|
|
|
370
381
|
"a[href]",
|
|
371
382
|
'[tabindex]:not([tabindex="-1"])'
|
|
372
383
|
].join(", ");
|
|
373
|
-
const getFocusableElements =
|
|
384
|
+
const getFocusableElements = React6.useCallback(() => {
|
|
374
385
|
if (!containerRef.current) return [];
|
|
375
386
|
return Array.from(
|
|
376
387
|
containerRef.current.querySelectorAll(focusableSelector)
|
|
@@ -378,7 +389,7 @@ function useFocusTrap(isActive, containerRef) {
|
|
|
378
389
|
return el.offsetParent !== null;
|
|
379
390
|
});
|
|
380
391
|
}, [containerRef, focusableSelector]);
|
|
381
|
-
const handleKeyDown =
|
|
392
|
+
const handleKeyDown = React6.useCallback(
|
|
382
393
|
(event) => {
|
|
383
394
|
if (event.key !== "Tab") return;
|
|
384
395
|
const focusableElements = getFocusableElements();
|
|
@@ -399,7 +410,7 @@ function useFocusTrap(isActive, containerRef) {
|
|
|
399
410
|
},
|
|
400
411
|
[getFocusableElements]
|
|
401
412
|
);
|
|
402
|
-
|
|
413
|
+
React6.useEffect(() => {
|
|
403
414
|
if (!isActive) return;
|
|
404
415
|
previousActiveElement.current = document.activeElement;
|
|
405
416
|
const focusableElements = getFocusableElements();
|
|
@@ -430,10 +441,10 @@ var Modal = ({
|
|
|
430
441
|
}) => {
|
|
431
442
|
const isMobile = useMediaQuery("(max-width: 500px)");
|
|
432
443
|
const variant = explicitVariant ?? (isMobile ? "bottom-sheet" : "centered");
|
|
433
|
-
const dialogRef =
|
|
434
|
-
const dialogId =
|
|
444
|
+
const dialogRef = React6.useRef(null);
|
|
445
|
+
const dialogId = React6.useId();
|
|
435
446
|
useFocusTrap(open, dialogRef);
|
|
436
|
-
|
|
447
|
+
React6.useEffect(() => {
|
|
437
448
|
const handleEscape = (e) => {
|
|
438
449
|
if (e.key === "Escape" && open) {
|
|
439
450
|
if (onEscapeKeyDown) {
|
|
@@ -932,12 +943,12 @@ function PasskeyEnrollView({
|
|
|
932
943
|
isEnrolling,
|
|
933
944
|
error: enrollmentError
|
|
934
945
|
} = react.usePasskeyEnrollment();
|
|
935
|
-
const [hasStarted, setHasStarted] =
|
|
936
|
-
const [errorMessage, setErrorMessage] =
|
|
937
|
-
const [isRefreshing, setIsRefreshing] =
|
|
946
|
+
const [hasStarted, setHasStarted] = React6.useState(false);
|
|
947
|
+
const [errorMessage, setErrorMessage] = React6.useState(null);
|
|
948
|
+
const [isRefreshing, setIsRefreshing] = React6.useState(false);
|
|
938
949
|
const biometricType = getBiometricType();
|
|
939
950
|
const hasPasskey = user?.keyStorageType === "passkey";
|
|
940
|
-
|
|
951
|
+
React6.useEffect(() => {
|
|
941
952
|
console.log("[PasskeyEnrollView] User state:", {
|
|
942
953
|
user,
|
|
943
954
|
keyStorageType: user?.keyStorageType,
|
|
@@ -945,7 +956,7 @@ function PasskeyEnrollView({
|
|
|
945
956
|
hasPasskey
|
|
946
957
|
});
|
|
947
958
|
}, [user, hasPasskey]);
|
|
948
|
-
|
|
959
|
+
React6.useEffect(() => {
|
|
949
960
|
if (hasPasskey && !user?.evmAddress && !isRefreshing) {
|
|
950
961
|
const refreshUserData = async () => {
|
|
951
962
|
try {
|
|
@@ -976,7 +987,7 @@ function PasskeyEnrollView({
|
|
|
976
987
|
refreshUserData();
|
|
977
988
|
}
|
|
978
989
|
}, [hasPasskey, user?.evmAddress, isRefreshing, client, setUser, user]);
|
|
979
|
-
|
|
990
|
+
React6.useEffect(() => {
|
|
980
991
|
if (!user?.id) {
|
|
981
992
|
const error = new Error("User ID is required for passkey enrollment");
|
|
982
993
|
setErrorMessage(getUserFriendlyError(error, t));
|
|
@@ -992,7 +1003,7 @@ function PasskeyEnrollView({
|
|
|
992
1003
|
}
|
|
993
1004
|
}
|
|
994
1005
|
}, [user, onError, t]);
|
|
995
|
-
|
|
1006
|
+
React6.useEffect(() => {
|
|
996
1007
|
if (enrollmentError) {
|
|
997
1008
|
const friendlyMessage = getUserFriendlyError(enrollmentError, t);
|
|
998
1009
|
setErrorMessage(friendlyMessage);
|
|
@@ -1147,8 +1158,8 @@ function MpcConnectView({
|
|
|
1147
1158
|
isConnecting,
|
|
1148
1159
|
error: connectionError
|
|
1149
1160
|
} = react.useMpcConnection();
|
|
1150
|
-
const [errorMessage, setErrorMessage] =
|
|
1151
|
-
|
|
1161
|
+
const [errorMessage, setErrorMessage] = React6.useState(null);
|
|
1162
|
+
React6.useEffect(() => {
|
|
1152
1163
|
if (connectionError) {
|
|
1153
1164
|
setErrorMessage(connectionError.message);
|
|
1154
1165
|
if (onError) {
|
|
@@ -1156,7 +1167,7 @@ function MpcConnectView({
|
|
|
1156
1167
|
}
|
|
1157
1168
|
}
|
|
1158
1169
|
}, [connectionError, onError]);
|
|
1159
|
-
|
|
1170
|
+
React6.useEffect(() => {
|
|
1160
1171
|
handleConnect();
|
|
1161
1172
|
}, []);
|
|
1162
1173
|
const handleConnect = async () => {
|
|
@@ -1216,6 +1227,34 @@ function MpcConnectView({
|
|
|
1216
1227
|
}
|
|
1217
1228
|
);
|
|
1218
1229
|
}
|
|
1230
|
+
var CopyButton = ({ text, className, onCopy }) => {
|
|
1231
|
+
const [copied, setCopied] = React6.useState(false);
|
|
1232
|
+
const handleCopy = async () => {
|
|
1233
|
+
try {
|
|
1234
|
+
await navigator.clipboard.writeText(text);
|
|
1235
|
+
setCopied(true);
|
|
1236
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
1237
|
+
onCopy?.();
|
|
1238
|
+
} catch (error) {
|
|
1239
|
+
console.error("Copy failed:", error);
|
|
1240
|
+
}
|
|
1241
|
+
};
|
|
1242
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1243
|
+
"button",
|
|
1244
|
+
{
|
|
1245
|
+
onClick: handleCopy,
|
|
1246
|
+
className: cn(
|
|
1247
|
+
"volr:p-2 volr:rounded-lg volr:text-slate-400 hover:volr:text-slate-700 hover:volr:bg-white volr:transition-all",
|
|
1248
|
+
className
|
|
1249
|
+
),
|
|
1250
|
+
"aria-label": "Copy",
|
|
1251
|
+
children: copied ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
|
|
1252
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }),
|
|
1253
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
|
|
1254
|
+
] })
|
|
1255
|
+
}
|
|
1256
|
+
);
|
|
1257
|
+
};
|
|
1219
1258
|
function OptionButton({
|
|
1220
1259
|
icon,
|
|
1221
1260
|
title,
|
|
@@ -1396,7 +1435,7 @@ var variantMap = {
|
|
|
1396
1435
|
ghost: { backgroundColor: "transparent", color: "#475569", border: "none" },
|
|
1397
1436
|
outline: { backgroundColor: "transparent", color: "#475569", border: "1px solid #e2e8f0" }
|
|
1398
1437
|
};
|
|
1399
|
-
var Button =
|
|
1438
|
+
var Button = React6__default.default.forwardRef(
|
|
1400
1439
|
({ variant = "primary", size = "md", fullWidth, className, style, disabled, children, ...props }, ref) => {
|
|
1401
1440
|
const { accentColor } = useVolrUI();
|
|
1402
1441
|
const sizeStyle = sizeMap[size];
|
|
@@ -1470,9 +1509,9 @@ var EmailIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1470
1509
|
);
|
|
1471
1510
|
function EmailInlineInput({ onSubmit, accentColor }) {
|
|
1472
1511
|
const { t } = useI18n();
|
|
1473
|
-
const [email, setEmail] =
|
|
1474
|
-
const [error, setError] =
|
|
1475
|
-
const [isLoading, setIsLoading] =
|
|
1512
|
+
const [email, setEmail] = React6.useState("");
|
|
1513
|
+
const [error, setError] = React6.useState(null);
|
|
1514
|
+
const [isLoading, setIsLoading] = React6.useState(false);
|
|
1476
1515
|
const handleSubmit = async (e) => {
|
|
1477
1516
|
e.preventDefault();
|
|
1478
1517
|
setError(null);
|
|
@@ -1595,14 +1634,14 @@ function SigninSelectScreen({
|
|
|
1595
1634
|
function CodeInputScreen({ email, onSubmit, onResend }) {
|
|
1596
1635
|
const { t } = useI18n();
|
|
1597
1636
|
const { accentColor } = useVolrUI();
|
|
1598
|
-
const [digits, setDigits] =
|
|
1599
|
-
const [error, setError] =
|
|
1600
|
-
const [isLoading, setIsLoading] =
|
|
1601
|
-
const inputRefs =
|
|
1602
|
-
|
|
1637
|
+
const [digits, setDigits] = React6.useState(Array(6).fill(""));
|
|
1638
|
+
const [error, setError] = React6.useState(null);
|
|
1639
|
+
const [isLoading, setIsLoading] = React6.useState(false);
|
|
1640
|
+
const inputRefs = React6.useRef([]);
|
|
1641
|
+
React6.useEffect(() => {
|
|
1603
1642
|
inputRefs.current[0]?.focus();
|
|
1604
1643
|
}, []);
|
|
1605
|
-
|
|
1644
|
+
React6.useEffect(() => {
|
|
1606
1645
|
const code = digits.join("");
|
|
1607
1646
|
if (code.length === 6 && !isLoading) {
|
|
1608
1647
|
handleSubmit(code);
|
|
@@ -1714,34 +1753,6 @@ function CodeInputScreen({ email, onSubmit, onResend }) {
|
|
|
1714
1753
|
)
|
|
1715
1754
|
] });
|
|
1716
1755
|
}
|
|
1717
|
-
var CopyButton = ({ text, className, onCopy }) => {
|
|
1718
|
-
const [copied, setCopied] = React5.useState(false);
|
|
1719
|
-
const handleCopy = async () => {
|
|
1720
|
-
try {
|
|
1721
|
-
await navigator.clipboard.writeText(text);
|
|
1722
|
-
setCopied(true);
|
|
1723
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
1724
|
-
onCopy?.();
|
|
1725
|
-
} catch (error) {
|
|
1726
|
-
console.error("Copy failed:", error);
|
|
1727
|
-
}
|
|
1728
|
-
};
|
|
1729
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1730
|
-
"button",
|
|
1731
|
-
{
|
|
1732
|
-
onClick: handleCopy,
|
|
1733
|
-
className: cn(
|
|
1734
|
-
"volr:p-2 volr:rounded-lg volr:text-slate-400 hover:volr:text-slate-700 hover:volr:bg-white volr:transition-all",
|
|
1735
|
-
className
|
|
1736
|
-
),
|
|
1737
|
-
"aria-label": "Copy",
|
|
1738
|
-
children: copied ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
|
|
1739
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }),
|
|
1740
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
|
|
1741
|
-
] })
|
|
1742
|
-
}
|
|
1743
|
-
);
|
|
1744
|
-
};
|
|
1745
1756
|
|
|
1746
1757
|
// node_modules/@noble/hashes/_u64.js
|
|
1747
1758
|
var U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
|
|
@@ -2053,11 +2064,11 @@ function SiweLoginScreen({
|
|
|
2053
2064
|
const { t } = useI18n();
|
|
2054
2065
|
const { accentColor } = useVolrUI();
|
|
2055
2066
|
const { requestSiweNonce, verifySiweSignature } = react.useVolrLogin();
|
|
2056
|
-
const [isLoading, setIsLoading] =
|
|
2057
|
-
const [step, setStep] =
|
|
2058
|
-
const [account, setAccount] =
|
|
2059
|
-
const [error, setError] =
|
|
2060
|
-
const [walletConnector, setWalletConnector] =
|
|
2067
|
+
const [isLoading, setIsLoading] = React6.useState(false);
|
|
2068
|
+
const [step, setStep] = React6.useState("connect");
|
|
2069
|
+
const [account, setAccount] = React6.useState(null);
|
|
2070
|
+
const [error, setError] = React6.useState(null);
|
|
2071
|
+
const [walletConnector, setWalletConnector] = React6.useState(
|
|
2061
2072
|
void 0
|
|
2062
2073
|
);
|
|
2063
2074
|
const detectWalletConnector = () => {
|
|
@@ -2076,7 +2087,7 @@ function SiweLoginScreen({
|
|
|
2076
2087
|
if (provider.isBraveWallet) return "com.brave.wallet";
|
|
2077
2088
|
return "unknown";
|
|
2078
2089
|
};
|
|
2079
|
-
|
|
2090
|
+
React6.useEffect(() => {
|
|
2080
2091
|
if (typeof window !== "undefined" && window.ethereum) {
|
|
2081
2092
|
window.ethereum.request({ method: "eth_accounts" }).then((accounts) => {
|
|
2082
2093
|
if (accounts.length > 0) {
|
|
@@ -2237,7 +2248,7 @@ function LoginSuccessScreen({
|
|
|
2237
2248
|
}) {
|
|
2238
2249
|
const { t } = useI18n();
|
|
2239
2250
|
const { accentColor } = useVolrUI();
|
|
2240
|
-
|
|
2251
|
+
React6.useEffect(() => {
|
|
2241
2252
|
const timer = setTimeout(() => {
|
|
2242
2253
|
onClose();
|
|
2243
2254
|
}, delay);
|
|
@@ -2367,13 +2378,13 @@ function SigninModal({ isOpen, onClose, onError }) {
|
|
|
2367
2378
|
const { logout, user } = react.useVolrContext();
|
|
2368
2379
|
const { appName, branding } = useVolrUI();
|
|
2369
2380
|
const { requestEmailCode, verifyEmailCode, handleSocialLogin } = react.useVolrLogin();
|
|
2370
|
-
const [currentScreen, setCurrentScreen] =
|
|
2371
|
-
const [email, setEmail] =
|
|
2381
|
+
const [currentScreen, setCurrentScreen] = React6.useState("method-select");
|
|
2382
|
+
const [email, setEmail] = React6.useState("");
|
|
2372
2383
|
const hasPasskey = user?.keyStorageType === "passkey";
|
|
2373
2384
|
const isMobile = useMediaQuery("(max-width: 500px)");
|
|
2374
2385
|
const isWideViewport = useMediaQuery("(min-width: 864px)");
|
|
2375
2386
|
const shouldUseWideLayout = !isMobile && isWideViewport && Boolean(branding) && currentScreen === "method-select";
|
|
2376
|
-
|
|
2387
|
+
React6.useEffect(() => {
|
|
2377
2388
|
if (!isOpen) {
|
|
2378
2389
|
setCurrentScreen("method-select");
|
|
2379
2390
|
setEmail("");
|
|
@@ -2538,6 +2549,62 @@ function SigninModal({ isOpen, onClose, onError }) {
|
|
|
2538
2549
|
}
|
|
2539
2550
|
);
|
|
2540
2551
|
}
|
|
2552
|
+
function AccountModal({ isOpen, onClose, onError }) {
|
|
2553
|
+
const { user, logout } = react.useVolrContext();
|
|
2554
|
+
const { t } = useI18n();
|
|
2555
|
+
const [isLoggingOut, setIsLoggingOut] = React6.useState(false);
|
|
2556
|
+
if (!user) {
|
|
2557
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SigninModal, { isOpen, onClose, onError });
|
|
2558
|
+
}
|
|
2559
|
+
const handleLogout = async () => {
|
|
2560
|
+
setIsLoggingOut(true);
|
|
2561
|
+
try {
|
|
2562
|
+
await logout();
|
|
2563
|
+
onClose();
|
|
2564
|
+
} catch (error) {
|
|
2565
|
+
if (onError) {
|
|
2566
|
+
onError(error instanceof Error ? error : new Error("Logout failed"));
|
|
2567
|
+
}
|
|
2568
|
+
} finally {
|
|
2569
|
+
setIsLoggingOut(false);
|
|
2570
|
+
}
|
|
2571
|
+
};
|
|
2572
|
+
const displayAddress = user.evmAddress ? `${user.evmAddress.slice(0, 6)}...${user.evmAddress.slice(-4)}` : null;
|
|
2573
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: [
|
|
2574
|
+
/* @__PURE__ */ jsxRuntime.jsx(ModalHeader, { onClose }),
|
|
2575
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:px-6 volr:pb-6", children: [
|
|
2576
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xl volr:font-semibold volr:text-slate-900 volr:mb-6 volr:text-center", children: t("account.title") }),
|
|
2577
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:bg-slate-50 volr:rounded-xl volr:p-4 volr:mb-6", children: [
|
|
2578
|
+
user.evmAddress && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex volr:items-center volr:justify-between volr:gap-3", children: [
|
|
2579
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:flex-1 volr:min-w-0", children: [
|
|
2580
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xs volr:text-slate-500 volr:mb-1", children: t("account.walletAddress") }),
|
|
2581
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:font-mono volr:text-sm volr:font-medium volr:text-slate-900", children: displayAddress })
|
|
2582
|
+
] }),
|
|
2583
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2584
|
+
CopyButton,
|
|
2585
|
+
{
|
|
2586
|
+
text: user.evmAddress,
|
|
2587
|
+
className: "volr:flex-shrink-0"
|
|
2588
|
+
}
|
|
2589
|
+
)
|
|
2590
|
+
] }),
|
|
2591
|
+
user.email && !user.email.includes("@wallet.") && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:mt-4 volr:pt-4 volr:border-t volr:border-slate-200", children: [
|
|
2592
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xs volr:text-slate-500 volr:mb-1", children: t("account.email") }),
|
|
2593
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:font-medium volr:text-slate-900", children: user.email })
|
|
2594
|
+
] })
|
|
2595
|
+
] }),
|
|
2596
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2597
|
+
"button",
|
|
2598
|
+
{
|
|
2599
|
+
onClick: handleLogout,
|
|
2600
|
+
disabled: isLoggingOut,
|
|
2601
|
+
className: "volr:w-full volr:py-3 volr:px-4 volr:rounded-lg volr:border volr:border-slate-200 volr:text-slate-700 volr:font-medium volr:text-sm volr:transition-colors hover:volr:bg-slate-50 hover:volr:border-slate-300 disabled:volr:opacity-50 disabled:volr:cursor-not-allowed",
|
|
2602
|
+
children: isLoggingOut ? t("common.loading") : t("account.logout")
|
|
2603
|
+
}
|
|
2604
|
+
)
|
|
2605
|
+
] })
|
|
2606
|
+
] });
|
|
2607
|
+
}
|
|
2541
2608
|
function AssetSelectView({
|
|
2542
2609
|
assets,
|
|
2543
2610
|
onSelect
|
|
@@ -2588,7 +2655,7 @@ function AssetSelectView({
|
|
|
2588
2655
|
}) })
|
|
2589
2656
|
] });
|
|
2590
2657
|
}
|
|
2591
|
-
var TextLinkButton =
|
|
2658
|
+
var TextLinkButton = React6__default.default.forwardRef(({ showArrow = false, className, children, ...props }, ref) => {
|
|
2592
2659
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2593
2660
|
"button",
|
|
2594
2661
|
{
|
|
@@ -2847,7 +2914,7 @@ var DepositCompletedToast = ({
|
|
|
2847
2914
|
symbol
|
|
2848
2915
|
}) => {
|
|
2849
2916
|
const { t } = useI18n();
|
|
2850
|
-
const [expanded, setExpanded] =
|
|
2917
|
+
const [expanded, setExpanded] = React6.useState(false);
|
|
2851
2918
|
const formatAmount = (amount) => {
|
|
2852
2919
|
const divisor = BigInt(10 ** decimals);
|
|
2853
2920
|
const whole = amount / divisor;
|
|
@@ -2976,10 +3043,10 @@ function DepositQRView(props) {
|
|
|
2976
3043
|
const { t } = useI18n();
|
|
2977
3044
|
const { config } = react.useVolrContext();
|
|
2978
3045
|
const { client } = react.useInternalAuth();
|
|
2979
|
-
const [chainName, setChainName] =
|
|
2980
|
-
const [showOtherTokenModal, setShowOtherTokenModal] =
|
|
2981
|
-
const [showToast, setShowToast] =
|
|
2982
|
-
const eip681 =
|
|
3046
|
+
const [chainName, setChainName] = React6.useState(null);
|
|
3047
|
+
const [showOtherTokenModal, setShowOtherTokenModal] = React6.useState(false);
|
|
3048
|
+
const [showToast, setShowToast] = React6.useState(false);
|
|
3049
|
+
const eip681 = React6.useMemo(() => {
|
|
2983
3050
|
return `ethereum:${props.address}`;
|
|
2984
3051
|
}, [props.address]);
|
|
2985
3052
|
const status = react.useDepositListener({
|
|
@@ -2993,17 +3060,17 @@ function DepositQRView(props) {
|
|
|
2993
3060
|
},
|
|
2994
3061
|
address: props.address
|
|
2995
3062
|
});
|
|
2996
|
-
|
|
3063
|
+
React6.useEffect(() => {
|
|
2997
3064
|
console.log("[DepositQRView] Status changed:", status);
|
|
2998
3065
|
if (status.state === "detected") {
|
|
2999
3066
|
setShowToast(true);
|
|
3000
3067
|
}
|
|
3001
3068
|
}, [status.state]);
|
|
3002
|
-
const getNetworkInfo =
|
|
3069
|
+
const getNetworkInfo = React6.useCallback(
|
|
3003
3070
|
react.createGetNetworkInfo({ client, rpcOverrides: config.rpcOverrides }),
|
|
3004
3071
|
[client, config.rpcOverrides]
|
|
3005
3072
|
);
|
|
3006
|
-
|
|
3073
|
+
React6.useEffect(() => {
|
|
3007
3074
|
let cancelled = false;
|
|
3008
3075
|
const loadChainName = async () => {
|
|
3009
3076
|
try {
|
|
@@ -3105,33 +3172,78 @@ function DepositQRView(props) {
|
|
|
3105
3172
|
}
|
|
3106
3173
|
var DepositModal = ({
|
|
3107
3174
|
open,
|
|
3108
|
-
onOpenChange
|
|
3175
|
+
onOpenChange,
|
|
3176
|
+
asset
|
|
3109
3177
|
}) => {
|
|
3110
|
-
const {
|
|
3111
|
-
const
|
|
3112
|
-
const
|
|
3113
|
-
const [
|
|
3114
|
-
|
|
3115
|
-
)
|
|
3116
|
-
|
|
3117
|
-
()
|
|
3118
|
-
|
|
3178
|
+
const { user } = react.useVolrContext();
|
|
3179
|
+
const { client } = react.useInternalAuth();
|
|
3180
|
+
const [depositAssets, setDepositAssets] = React6.useState([]);
|
|
3181
|
+
const [isLoading, setIsLoading] = React6.useState(true);
|
|
3182
|
+
const [error, setError] = React6.useState(null);
|
|
3183
|
+
React6.useEffect(() => {
|
|
3184
|
+
if (!open) return;
|
|
3185
|
+
setIsLoading(true);
|
|
3186
|
+
setError(null);
|
|
3187
|
+
client.get("/auth/branding").then((response) => {
|
|
3188
|
+
setDepositAssets(response.depositAssets ?? []);
|
|
3189
|
+
}).catch((err) => {
|
|
3190
|
+
console.error("Failed to fetch deposit assets:", err);
|
|
3191
|
+
setError("Failed to load deposit options");
|
|
3192
|
+
}).finally(() => {
|
|
3193
|
+
setIsLoading(false);
|
|
3194
|
+
});
|
|
3195
|
+
}, [open, client]);
|
|
3196
|
+
const hasAssets = depositAssets.length > 0;
|
|
3197
|
+
const findAssetIndex = (targetAsset) => {
|
|
3198
|
+
if (!targetAsset) return -1;
|
|
3199
|
+
return depositAssets.findIndex(
|
|
3200
|
+
(a) => a.chainId === targetAsset.chainId && (a.token === "native" ? targetAsset.symbol.toUpperCase() === "ETH" : a.token.symbol.toUpperCase() === targetAsset.symbol.toUpperCase())
|
|
3201
|
+
);
|
|
3202
|
+
};
|
|
3203
|
+
const getInitialIndex = () => {
|
|
3204
|
+
if (asset) {
|
|
3205
|
+
const idx = findAssetIndex(asset);
|
|
3206
|
+
if (idx >= 0) return idx;
|
|
3207
|
+
}
|
|
3208
|
+
if (depositAssets.length === 1) return 0;
|
|
3209
|
+
return -1;
|
|
3210
|
+
};
|
|
3211
|
+
const [selectedIdx, setSelectedIdx] = React6.useState(-1);
|
|
3212
|
+
React6.useEffect(() => {
|
|
3213
|
+
if (open && !isLoading && depositAssets.length > 0) {
|
|
3214
|
+
setSelectedIdx(getInitialIndex());
|
|
3215
|
+
}
|
|
3216
|
+
}, [open, isLoading, depositAssets.length, asset]);
|
|
3217
|
+
React6.useEffect(() => {
|
|
3218
|
+
if (!open) {
|
|
3219
|
+
setSelectedIdx(-1);
|
|
3220
|
+
}
|
|
3221
|
+
}, [open]);
|
|
3222
|
+
const selected = React6.useMemo(
|
|
3223
|
+
() => depositAssets[selectedIdx],
|
|
3224
|
+
[depositAssets, selectedIdx]
|
|
3119
3225
|
);
|
|
3120
|
-
const showSelector = hasAssets &&
|
|
3226
|
+
const showSelector = hasAssets && depositAssets.length > 1 && selectedIdx === -1;
|
|
3121
3227
|
const showQR = hasAssets && user?.evmAddress && selectedIdx >= 0;
|
|
3122
|
-
const body =
|
|
3228
|
+
const body = React6.useMemo(() => {
|
|
3229
|
+
if (isLoading) {
|
|
3230
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:text-center volr:py-8", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-500", children: "Loading..." }) });
|
|
3231
|
+
}
|
|
3232
|
+
if (error) {
|
|
3233
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:text-center volr:py-8", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-red-600", children: error }) });
|
|
3234
|
+
}
|
|
3123
3235
|
if (!hasAssets) {
|
|
3124
3236
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:text-center volr:py-8", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-600", children: "No deposit assets configured. Please contact the app developer." }) });
|
|
3125
3237
|
}
|
|
3126
3238
|
if (!user?.evmAddress) {
|
|
3127
3239
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:text-center volr:py-8", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-slate-600", children: "Wallet address is not ready. Please finish wallet setup first." }) });
|
|
3128
3240
|
}
|
|
3129
|
-
if (
|
|
3241
|
+
if (depositAssets.length === 1) {
|
|
3130
3242
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3131
3243
|
DepositQRView,
|
|
3132
3244
|
{
|
|
3133
|
-
chainId:
|
|
3134
|
-
asset:
|
|
3245
|
+
chainId: depositAssets[0].chainId,
|
|
3246
|
+
asset: depositAssets[0].token,
|
|
3135
3247
|
address: user.evmAddress,
|
|
3136
3248
|
onBack: void 0
|
|
3137
3249
|
}
|
|
@@ -3141,7 +3253,7 @@ var DepositModal = ({
|
|
|
3141
3253
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3142
3254
|
AssetSelectView,
|
|
3143
3255
|
{
|
|
3144
|
-
assets:
|
|
3256
|
+
assets: depositAssets,
|
|
3145
3257
|
onSelect: (idx) => setSelectedIdx(idx)
|
|
3146
3258
|
}
|
|
3147
3259
|
);
|
|
@@ -3156,18 +3268,20 @@ var DepositModal = ({
|
|
|
3156
3268
|
}
|
|
3157
3269
|
);
|
|
3158
3270
|
}, [
|
|
3271
|
+
isLoading,
|
|
3272
|
+
error,
|
|
3159
3273
|
hasAssets,
|
|
3160
3274
|
selected,
|
|
3161
3275
|
selectedIdx,
|
|
3162
3276
|
showSelector,
|
|
3163
|
-
|
|
3277
|
+
depositAssets,
|
|
3164
3278
|
user?.evmAddress
|
|
3165
3279
|
]);
|
|
3166
3280
|
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open, onOpenChange, children: [
|
|
3167
3281
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3168
3282
|
ModalHeader,
|
|
3169
3283
|
{
|
|
3170
|
-
back: showQR &&
|
|
3284
|
+
back: showQR && depositAssets.length > 1,
|
|
3171
3285
|
onBack: showQR ? () => setSelectedIdx(-1) : void 0,
|
|
3172
3286
|
onClose: () => onOpenChange(false)
|
|
3173
3287
|
}
|
|
@@ -3175,9 +3289,9 @@ var DepositModal = ({
|
|
|
3175
3289
|
body
|
|
3176
3290
|
] });
|
|
3177
3291
|
};
|
|
3178
|
-
var VolrUIContext =
|
|
3292
|
+
var VolrUIContext = React6__default.default.createContext(null);
|
|
3179
3293
|
var useVolrUI = () => {
|
|
3180
|
-
const context =
|
|
3294
|
+
const context = React6.useContext(VolrUIContext);
|
|
3181
3295
|
if (!context) {
|
|
3182
3296
|
throw new Error("useVolrUI must be used within VolrUIProvider");
|
|
3183
3297
|
}
|
|
@@ -3232,16 +3346,15 @@ var VolrUIProvider = ({
|
|
|
3232
3346
|
socialProviders = ["google", "twitter", "apple"],
|
|
3233
3347
|
branding,
|
|
3234
3348
|
keyStorageType = "passkey"
|
|
3235
|
-
// Default to passkey if not specified
|
|
3236
3349
|
} = config;
|
|
3237
3350
|
const providerPolicy = config.providerPolicy ?? {
|
|
3238
3351
|
enforceOnFirstLogin: true
|
|
3239
3352
|
};
|
|
3240
|
-
const [showOnboarding, setShowOnboarding] =
|
|
3241
|
-
const [keyStorageTypeError, setKeyStorageTypeError] =
|
|
3353
|
+
const [showOnboarding, setShowOnboarding] = React6.useState(false);
|
|
3354
|
+
const [keyStorageTypeError, setKeyStorageTypeError] = React6.useState(
|
|
3242
3355
|
null
|
|
3243
3356
|
);
|
|
3244
|
-
|
|
3357
|
+
React6.useEffect(() => {
|
|
3245
3358
|
if (providerPolicy.enforceOnFirstLogin !== false && !keyStorageType) {
|
|
3246
3359
|
const errorMessage = "keyStorageType must be specified in VolrUIProvider props. Please set keyStorageType prop in VolrUIProvider.";
|
|
3247
3360
|
console.error(errorMessage);
|
|
@@ -3278,7 +3391,7 @@ var VolrUIProvider = ({
|
|
|
3278
3391
|
onHideOnboarding: () => setShowOnboarding(false)
|
|
3279
3392
|
}
|
|
3280
3393
|
),
|
|
3281
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3394
|
+
/* @__PURE__ */ jsxRuntime.jsx(AccountModalPortal, {}),
|
|
3282
3395
|
/* @__PURE__ */ jsxRuntime.jsx(DepositModalPortal, {}),
|
|
3283
3396
|
showOnboarding && keyStorageType && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3284
3397
|
Modal,
|
|
@@ -3303,11 +3416,11 @@ var VolrUIProvider = ({
|
|
|
3303
3416
|
}
|
|
3304
3417
|
) }) });
|
|
3305
3418
|
};
|
|
3306
|
-
function
|
|
3419
|
+
function AccountModalPortal() {
|
|
3307
3420
|
const { isOpen, mode, close } = useVolrModal();
|
|
3308
|
-
const [portalRoot, setPortalRoot] =
|
|
3309
|
-
const [error, setError] =
|
|
3310
|
-
|
|
3421
|
+
const [portalRoot, setPortalRoot] = React6.useState(null);
|
|
3422
|
+
const [error, setError] = React6.useState(null);
|
|
3423
|
+
React6.useEffect(() => {
|
|
3311
3424
|
if (typeof window === "undefined") return;
|
|
3312
3425
|
let root = document.getElementById("volr-modal-root");
|
|
3313
3426
|
if (!root) {
|
|
@@ -3323,21 +3436,20 @@ function LoginModalPortal() {
|
|
|
3323
3436
|
};
|
|
3324
3437
|
}, []);
|
|
3325
3438
|
const handleClose = () => {
|
|
3326
|
-
console.log("[LoginModalPortal] handleClose called");
|
|
3327
3439
|
setError(null);
|
|
3328
3440
|
close();
|
|
3329
3441
|
};
|
|
3330
3442
|
const handleError = (err) => {
|
|
3331
|
-
console.error("[
|
|
3443
|
+
console.error("[AccountModal] Error:", err);
|
|
3332
3444
|
setError(err);
|
|
3333
3445
|
};
|
|
3334
3446
|
if (!portalRoot) return null;
|
|
3335
3447
|
return reactDom.createPortal(
|
|
3336
3448
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3337
3449
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3338
|
-
|
|
3450
|
+
AccountModal,
|
|
3339
3451
|
{
|
|
3340
|
-
isOpen: isOpen && mode === "
|
|
3452
|
+
isOpen: isOpen && mode === "account",
|
|
3341
3453
|
onClose: handleClose,
|
|
3342
3454
|
onError: handleError
|
|
3343
3455
|
}
|
|
@@ -3365,9 +3477,11 @@ function LoginModalPortal() {
|
|
|
3365
3477
|
);
|
|
3366
3478
|
}
|
|
3367
3479
|
function DepositModalPortal() {
|
|
3368
|
-
const { isOpen, mode, close } = useVolrModal();
|
|
3369
|
-
const
|
|
3370
|
-
|
|
3480
|
+
const { isOpen, mode, asset, close } = useVolrModal();
|
|
3481
|
+
const { user } = react.useVolrContext();
|
|
3482
|
+
const [portalRoot, setPortalRoot] = React6.useState(null);
|
|
3483
|
+
const [showLogin, setShowLogin] = React6.useState(false);
|
|
3484
|
+
React6.useEffect(() => {
|
|
3371
3485
|
if (typeof window === "undefined") return;
|
|
3372
3486
|
let root = document.getElementById("volr-modal-root");
|
|
3373
3487
|
if (!root) {
|
|
@@ -3382,9 +3496,35 @@ function DepositModalPortal() {
|
|
|
3382
3496
|
}
|
|
3383
3497
|
};
|
|
3384
3498
|
}, []);
|
|
3499
|
+
React6.useEffect(() => {
|
|
3500
|
+
if (isOpen && mode === "deposit" && !user) {
|
|
3501
|
+
setShowLogin(true);
|
|
3502
|
+
} else {
|
|
3503
|
+
setShowLogin(false);
|
|
3504
|
+
}
|
|
3505
|
+
}, [isOpen, mode, user]);
|
|
3385
3506
|
if (!portalRoot) return null;
|
|
3507
|
+
if (showLogin) {
|
|
3508
|
+
return reactDom.createPortal(
|
|
3509
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3510
|
+
AccountModal,
|
|
3511
|
+
{
|
|
3512
|
+
isOpen: isOpen && mode === "deposit",
|
|
3513
|
+
onClose: close
|
|
3514
|
+
}
|
|
3515
|
+
),
|
|
3516
|
+
portalRoot
|
|
3517
|
+
);
|
|
3518
|
+
}
|
|
3386
3519
|
return reactDom.createPortal(
|
|
3387
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3520
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3521
|
+
DepositModal,
|
|
3522
|
+
{
|
|
3523
|
+
open: isOpen && mode === "deposit",
|
|
3524
|
+
onOpenChange: (open) => !open && close(),
|
|
3525
|
+
asset
|
|
3526
|
+
}
|
|
3527
|
+
),
|
|
3388
3528
|
portalRoot
|
|
3389
3529
|
);
|
|
3390
3530
|
}
|
|
@@ -3395,12 +3535,12 @@ function OnboardingChecker({
|
|
|
3395
3535
|
onHideOnboarding
|
|
3396
3536
|
}) {
|
|
3397
3537
|
const { user, provider, isLoading } = react.useVolrContext();
|
|
3398
|
-
const { isOpen:
|
|
3399
|
-
|
|
3538
|
+
const { isOpen: isModalOpen } = useVolrModal();
|
|
3539
|
+
React6.useEffect(() => {
|
|
3400
3540
|
if (isLoading) {
|
|
3401
3541
|
return;
|
|
3402
3542
|
}
|
|
3403
|
-
if (
|
|
3543
|
+
if (isModalOpen) {
|
|
3404
3544
|
onHideOnboarding();
|
|
3405
3545
|
return;
|
|
3406
3546
|
}
|
|
@@ -3412,7 +3552,7 @@ function OnboardingChecker({
|
|
|
3412
3552
|
if (enforceSelection) {
|
|
3413
3553
|
if (!keyStorageType) {
|
|
3414
3554
|
console.error(
|
|
3415
|
-
"keyStorageType must be specified in VolrUIProvider props.
|
|
3555
|
+
"keyStorageType must be specified in VolrUIProvider props."
|
|
3416
3556
|
);
|
|
3417
3557
|
return;
|
|
3418
3558
|
}
|
|
@@ -3425,7 +3565,7 @@ function OnboardingChecker({
|
|
|
3425
3565
|
user,
|
|
3426
3566
|
provider,
|
|
3427
3567
|
isLoading,
|
|
3428
|
-
|
|
3568
|
+
isModalOpen,
|
|
3429
3569
|
enforceSelection,
|
|
3430
3570
|
keyStorageType,
|
|
3431
3571
|
onShowOnboarding,
|
|
@@ -3435,7 +3575,7 @@ function OnboardingChecker({
|
|
|
3435
3575
|
}
|
|
3436
3576
|
function useSwitchNetwork() {
|
|
3437
3577
|
const { client } = react.useInternalAuth();
|
|
3438
|
-
return
|
|
3578
|
+
return React6.useCallback(
|
|
3439
3579
|
async (chainId) => {
|
|
3440
3580
|
if (typeof window === "undefined" || !window.ethereum) {
|
|
3441
3581
|
throw new Error("No wallet found");
|