@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/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React5 = require('react');
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 React5__default = /*#__PURE__*/_interopDefault(React5);
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 = React5.createContext(null);
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 = React5.useContext(I18nContext);
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] = React5.useState(detectLocale());
254
- const translations2 = React5.useMemo(() => getTranslations(locale), [locale]);
255
- const t = React5.useMemo(() => {
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 = React5.useMemo(
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 = React5.createContext(null);
296
+ var VolrModalContext = React6.createContext(null);
285
297
  var useVolrModal = () => {
286
- const context = React5.useContext(VolrModalContext);
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] = React5.useState(false);
296
- const [mode, setMode] = React5.useState("auth");
297
- const { user } = react.useVolrContext();
298
- const open = React5.useCallback(() => {
299
- setMode(user ? "deposit" : "auth");
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 toggle = React5.useCallback(() => {
306
- setIsOpen((prev) => !prev);
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, toggle }, children });
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] = React5.useState(() => {
328
+ const [matches, setMatches] = React6.useState(() => {
318
329
  if (typeof window === "undefined") return false;
319
330
  return window.matchMedia(query).matches;
320
331
  });
321
- React5.useEffect(() => {
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] = React5.useState(null);
336
- const [mountNode, setMountNode] = React5.useState(null);
337
- React5.useEffect(() => {
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 = React5.useRef(null);
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 = React5.useCallback(() => {
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 = React5.useCallback(
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
- React5.useEffect(() => {
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 = React5.useRef(null);
434
- const dialogId = React5.useId();
444
+ const dialogRef = React6.useRef(null);
445
+ const dialogId = React6.useId();
435
446
  useFocusTrap(open, dialogRef);
436
- React5.useEffect(() => {
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] = React5.useState(false);
936
- const [errorMessage, setErrorMessage] = React5.useState(null);
937
- const [isRefreshing, setIsRefreshing] = React5.useState(false);
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
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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] = React5.useState(null);
1151
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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 = React5__default.default.forwardRef(
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] = React5.useState("");
1474
- const [error, setError] = React5.useState(null);
1475
- const [isLoading, setIsLoading] = React5.useState(false);
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] = React5.useState(Array(6).fill(""));
1599
- const [error, setError] = React5.useState(null);
1600
- const [isLoading, setIsLoading] = React5.useState(false);
1601
- const inputRefs = React5.useRef([]);
1602
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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] = React5.useState(false);
2057
- const [step, setStep] = React5.useState("connect");
2058
- const [account, setAccount] = React5.useState(null);
2059
- const [error, setError] = React5.useState(null);
2060
- const [walletConnector, setWalletConnector] = React5.useState(
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
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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] = React5.useState("method-select");
2371
- const [email, setEmail] = React5.useState("");
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
- React5.useEffect(() => {
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 = React5__default.default.forwardRef(({ showArrow = false, className, children, ...props }, ref) => {
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] = React5.useState(false);
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] = React5.useState(null);
2980
- const [showOtherTokenModal, setShowOtherTokenModal] = React5.useState(false);
2981
- const [showToast, setShowToast] = React5.useState(false);
2982
- const eip681 = React5.useMemo(() => {
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
- React5.useEffect(() => {
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 = React5.useCallback(
3069
+ const getNetworkInfo = React6.useCallback(
3003
3070
  react.createGetNetworkInfo({ client, rpcOverrides: config.rpcOverrides }),
3004
3071
  [client, config.rpcOverrides]
3005
3072
  );
3006
- React5.useEffect(() => {
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 { config, user } = react.useVolrContext();
3111
- const supportedAssets = config.deposit?.supportedAssets ?? [];
3112
- const hasAssets = supportedAssets.length > 0;
3113
- const [selectedIdx, setSelectedIdx] = React5.useState(
3114
- supportedAssets.length === 1 ? 0 : -1
3115
- );
3116
- const selected = React5.useMemo(
3117
- () => supportedAssets[selectedIdx],
3118
- [supportedAssets, selectedIdx]
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 && supportedAssets.length > 1 && selectedIdx === -1;
3226
+ const showSelector = hasAssets && depositAssets.length > 1 && selectedIdx === -1;
3121
3227
  const showQR = hasAssets && user?.evmAddress && selectedIdx >= 0;
3122
- const body = React5.useMemo(() => {
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 (supportedAssets.length === 1) {
3241
+ if (depositAssets.length === 1) {
3130
3242
  return /* @__PURE__ */ jsxRuntime.jsx(
3131
3243
  DepositQRView,
3132
3244
  {
3133
- chainId: supportedAssets[0].chainId,
3134
- asset: supportedAssets[0].token,
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: supportedAssets,
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
- supportedAssets,
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 && supportedAssets.length > 1,
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 = React5__default.default.createContext(null);
3292
+ var VolrUIContext = React6__default.default.createContext(null);
3179
3293
  var useVolrUI = () => {
3180
- const context = React5.useContext(VolrUIContext);
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] = React5.useState(false);
3241
- const [keyStorageTypeError, setKeyStorageTypeError] = React5.useState(
3353
+ const [showOnboarding, setShowOnboarding] = React6.useState(false);
3354
+ const [keyStorageTypeError, setKeyStorageTypeError] = React6.useState(
3242
3355
  null
3243
3356
  );
3244
- React5.useEffect(() => {
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(LoginModalPortal, {}),
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 LoginModalPortal() {
3419
+ function AccountModalPortal() {
3307
3420
  const { isOpen, mode, close } = useVolrModal();
3308
- const [portalRoot, setPortalRoot] = React5.useState(null);
3309
- const [error, setError] = React5.useState(null);
3310
- React5.useEffect(() => {
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("[LoginModal] Error:", err);
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
- SigninModal,
3450
+ AccountModal,
3339
3451
  {
3340
- isOpen: isOpen && mode === "auth",
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 [portalRoot, setPortalRoot] = React5.useState(null);
3370
- React5.useEffect(() => {
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(DepositModal, { open: isOpen && mode === "deposit", onOpenChange: close }),
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: isLoginModalOpen } = useVolrModal();
3399
- React5.useEffect(() => {
3538
+ const { isOpen: isModalOpen } = useVolrModal();
3539
+ React6.useEffect(() => {
3400
3540
  if (isLoading) {
3401
3541
  return;
3402
3542
  }
3403
- if (isLoginModalOpen) {
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. Please set keyStorageType prop in VolrUIProvider."
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
- isLoginModalOpen,
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 React5.useCallback(
3578
+ return React6.useCallback(
3439
3579
  async (chainId) => {
3440
3580
  if (typeof window === "undefined" || !window.ethereum) {
3441
3581
  throw new Error("No wallet found");