@volr/react-ui 0.1.82 → 0.1.84

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
@@ -11,15 +11,14 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var React10__default = /*#__PURE__*/_interopDefault(React10);
13
13
 
14
- var __defProp = Object.defineProperty;
15
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
14
+ // src/providers/VolrUIProvider.tsx
17
15
 
18
16
  // src/i18n/locales/en.ts
19
17
  var en = {
20
18
  common: {
21
19
  back: "Back",
22
- loading: "Loading..."
20
+ loading: "Loading...",
21
+ cancel: "Cancel"
23
22
  },
24
23
  login: {
25
24
  title: "Sign in",
@@ -54,6 +53,18 @@ var en = {
54
53
  label: "Wallet Login"
55
54
  }
56
55
  },
56
+ siwe: {
57
+ noWalletFound: "No Ethereum wallet found. Please install MetaMask or another wallet.",
58
+ mobileGuide: "To connect your wallet:",
59
+ mobileStep1: "Copy the sign URL below",
60
+ mobileStep2: "Open your wallet app (MetaMask, etc.)",
61
+ mobileStep3: "Paste URL in the app browser and sign",
62
+ copyUrl: "Copy Sign URL",
63
+ urlCopied: "URL copied! Paste it in your wallet app browser.",
64
+ startMobileSession: "Connect Wallet",
65
+ waitingForSignature: "Waiting for signature...",
66
+ sessionExpired: "Session expired. Please try again."
67
+ },
57
68
  passkey: {
58
69
  // Dynamic titles based on biometric type
59
70
  titleTouchId: "Set up Touch ID login",
@@ -125,7 +136,8 @@ var en = {
125
136
  var ko = {
126
137
  common: {
127
138
  back: "\uB4A4\uB85C",
128
- loading: "\uB85C\uB529 \uC911..."
139
+ loading: "\uB85C\uB529 \uC911...",
140
+ cancel: "\uCDE8\uC18C"
129
141
  },
130
142
  login: {
131
143
  title: "\uB85C\uADF8\uC778",
@@ -160,6 +172,18 @@ var ko = {
160
172
  label: "\uC9C0\uAC11 \uB85C\uADF8\uC778"
161
173
  }
162
174
  },
175
+ siwe: {
176
+ noWalletFound: "\uC774\uB354\uB9AC\uC6C0 \uC9C0\uAC11\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. MetaMask \uB610\uB294 \uB2E4\uB978 \uC9C0\uAC11\uC744 \uC124\uCE58\uD574\uC8FC\uC138\uC694.",
177
+ mobileGuide: "\uC9C0\uAC11 \uC5F0\uACB0 \uBC29\uBC95:",
178
+ mobileStep1: "\uC544\uB798 \uC11C\uBA85 URL \uBCF5\uC0AC",
179
+ mobileStep2: "\uC9C0\uAC11 \uC571 \uC5F4\uAE30 (MetaMask \uB4F1)",
180
+ mobileStep3: "\uC571 \uBE0C\uB77C\uC6B0\uC800\uC5D0 URL \uBD99\uC5EC\uB123\uACE0 \uC11C\uBA85",
181
+ copyUrl: "\uC11C\uBA85 URL \uBCF5\uC0AC",
182
+ urlCopied: "URL\uC774 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4! \uC9C0\uAC11 \uC571 \uBE0C\uB77C\uC6B0\uC800\uC5D0 \uBD99\uC5EC\uB123\uAE30 \uD558\uC138\uC694.",
183
+ startMobileSession: "\uC9C0\uAC11 \uC5F0\uACB0",
184
+ waitingForSignature: "\uC11C\uBA85 \uB300\uAE30 \uC911...",
185
+ sessionExpired: "\uC138\uC158\uC774 \uB9CC\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
186
+ },
163
187
  passkey: {
164
188
  // Dynamic titles based on biometric type
165
189
  titleTouchId: "Touch ID \uB85C\uADF8\uC778 \uC124\uC815",
@@ -355,7 +379,7 @@ function useMediaQuery(query) {
355
379
  }
356
380
 
357
381
  // src/generated/volr-sdk-css.ts
358
- 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-700:oklch(50.5% .213 27.518);--volr-color-green-600:oklch(62.7% .194 149.214);--volr-color-emerald-300:oklch(84.5% .143 164.978);--volr-color-emerald-400:oklch(76.5% .177 163.223);--volr-color-emerald-500:oklch(69.6% .17 162.48);--volr-color-emerald-600:oklch(59.6% .145 163.225);--volr-color-teal-400:oklch(77.7% .152 181.912);--volr-color-teal-500:oklch(70.4% .14 182.503);--volr-color-cyan-400:oklch(78.9% .154 211.53);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-black:#000;--volr-color-white:#fff;--volr-spacing:.25rem;--volr-container-md:28rem;--volr-container-4xl:56rem;--volr-text-xs:.75rem;--volr-text-xs--line-height:calc(1/.75);--volr-text-sm:.875rem;--volr-text-sm--line-height:calc(1.25/.875);--volr-text-base:1rem;--volr-text-base--line-height:calc(1.5/1);--volr-text-lg:1.125rem;--volr-text-lg--line-height:calc(1.75/1.125);--volr-text-xl:1.25rem;--volr-text-xl--line-height:calc(1.75/1.25);--volr-text-2xl:1.5rem;--volr-text-2xl--line-height:calc(2/1.5);--volr-text-8xl:6rem;--volr-text-8xl--line-height:1;--volr-font-weight-medium:500;--volr-font-weight-semibold:600;--volr-font-weight-bold:700;--volr-leading-relaxed:1.625;--volr-radius-md:.375rem;--volr-radius-lg:.5rem;--volr-radius-xl:.75rem;--volr-radius-2xl:1rem;--volr-radius-3xl:1.5rem;--volr-ease-out:cubic-bezier(0,0,.2,1);--volr-animate-spin:spin 1s linear infinite;--volr-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--volr-blur-2xl:40px;--volr-default-transition-duration:.15s;--volr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--volr-default-font-family:var(--volr-font-sans);--volr-default-mono-font-family:var(--volr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--volr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--volr-default-font-feature-settings,normal);font-variation-settings:var(--volr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--volr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--volr-default-mono-font-feature-settings,normal);font-variation-settings:var(--volr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{--volr-primary-color:var(--volr-accent-color,#303030);--volr-font-family:var(--volr-custom-font,inherit);--volr-bg:#fff;--volr-bg-secondary:#f8fafc;--volr-bg-tertiary:#f1f5f9;--volr-text:#0f172a;--volr-text-secondary:#475569;--volr-text-muted:#94a3b8;--volr-border:#e2e8f0;--volr-border-strong:#cbd5e1;--volr-hover-bg:#f8fafc;--volr-error-bg:#fef2f2;--volr-error-border:#fecaca;--volr-error-text:#991b1b}:host([data-theme=dark]){--volr-bg:#1c1c1e;--volr-bg-secondary:#2c2c2e;--volr-bg-tertiary:#3a3a3c;--volr-text:#f5f5f7;--volr-text-secondary:#c7c7cc;--volr-text-muted:#8e8e93;--volr-border:#3a3a3c;--volr-border-strong:#48484a;--volr-hover-bg:#2c2c2e;--volr-error-bg:#3c1f1f;--volr-error-border:#7f1d1d;--volr-error-text:#fca5a5}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family);color:var(--volr-text)}button,input,select,textarea{color:var(--volr-text);background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:var(--volr-text-muted)}h1,h2,h3{color:var(--volr-text);margin:0;font-weight:700}h1{font-size:1.875rem;line-height:2.25rem}h2{font-size:1.5rem;line-height:2rem}h3{font-size:1.25rem;line-height:1.75rem}p{margin:0}}@layer components{.volr-dialog-overlay{inset:calc(var(--volr-spacing)*0);z-index:40;background-color:var(--volr-color-black);position:fixed}@supports (color:color-mix(in lab, red, red)){.volr-dialog-overlay{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr-dialog-content{z-index:50;border-radius:var(--volr-radius-2xl);border-style:var(--volr-tw-border-style);padding:calc(var(--volr-spacing)*7);--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow);background-color:var(--volr-bg);border-width:1px;border-color:var(--volr-border-strong);width:calc(100% - 2rem);max-width:28rem;max-height:85vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}@media (max-width:640px){.volr-dialog-content{top:auto;right:calc(var(--volr-spacing)*0);bottom:calc(var(--volr-spacing)*0);left:calc(var(--volr-spacing)*0);border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:100%;margin:0 auto;transform:translateY(0)}}.volr-dialog-close{top:calc(var(--volr-spacing)*4);right:calc(var(--volr-spacing)*4);height:calc(var(--volr-spacing)*8);width:calc(var(--volr-spacing)*8);color:var(--volr-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.volr-dialog-close:hover{background-color:var(--volr-hover-bg);color:var(--volr-text-secondary)}.volr-dialog-close:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{border:1px solid var(--volr-border-strong);background-color:var(--volr-bg);width:100%;color:var(--volr-text);border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:var(--volr-text-muted)}.volr-email-input:focus{border-color:var(--volr-border-strong);box-shadow:0 0 0 2px var(--volr-border-strong)}.volr-option-button{border:1px solid var(--volr-border);background-color:var(--volr-bg);width:100%;color:var(--volr-text);cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;transition:background-color .15s ease-out,border-color .15s ease-out,box-shadow .15s ease-out;display:flex}.volr-option-button:hover{background-color:var(--volr-hover-bg);border-color:var(--volr-border)}.volr-option-button:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}}@layer utilities{.volr\\:pointer-events-auto{pointer-events:auto}.volr\\:pointer-events-none{pointer-events:none}.volr\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.volr\\:absolute{position:absolute}.volr\\:fixed{position:fixed}.volr\\:relative{position:relative}.volr\\:inset-0{inset:calc(var(--volr-spacing)*0)}.volr\\:-top-3{top:calc(var(--volr-spacing)*-3)}.volr\\:top-1\\/2{top:50%}.volr\\:-right-3{right:calc(var(--volr-spacing)*-3)}.volr\\:-right-4{right:calc(var(--volr-spacing)*-4)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:-left-4{left:calc(var(--volr-spacing)*-4)}.volr\\:left-3{left:calc(var(--volr-spacing)*3)}.volr\\:-z-10{z-index:calc(10*-1)}.volr\\:z-10{z-index:10}.volr\\:z-20{z-index:20}.volr\\:z-40{z-index:40}.volr\\:z-50{z-index:50}.volr\\:mx-auto{margin-inline:auto}.volr\\:my-6{margin-block:calc(var(--volr-spacing)*6)}.volr\\:mt-0\\.5{margin-top:calc(var(--volr-spacing)*.5)}.volr\\:mt-1{margin-top:calc(var(--volr-spacing)*1)}.volr\\:mt-2{margin-top:calc(var(--volr-spacing)*2)}.volr\\:mt-3{margin-top:calc(var(--volr-spacing)*3)}.volr\\:mt-4{margin-top:calc(var(--volr-spacing)*4)}.volr\\:mt-6{margin-top:calc(var(--volr-spacing)*6)}.volr\\:mt-8{margin-top:calc(var(--volr-spacing)*8)}.volr\\:mb-1{margin-bottom:calc(var(--volr-spacing)*1)}.volr\\:mb-2{margin-bottom:calc(var(--volr-spacing)*2)}.volr\\:mb-3{margin-bottom:calc(var(--volr-spacing)*3)}.volr\\:mb-4{margin-bottom:calc(var(--volr-spacing)*4)}.volr\\:mb-5{margin-bottom:calc(var(--volr-spacing)*5)}.volr\\:mb-6{margin-bottom:calc(var(--volr-spacing)*6)}.volr\\:mb-8{margin-bottom:calc(var(--volr-spacing)*8)}.volr\\:-ml-2{margin-left:calc(var(--volr-spacing)*-2)}.volr\\:flex{display:flex}.volr\\:grid{display:grid}.volr\\:inline-block{display:inline-block}.volr\\:inline-flex{display:inline-flex}.volr\\:h-1{height:calc(var(--volr-spacing)*1)}.volr\\:h-1\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.volr\\:h-3{height:calc(var(--volr-spacing)*3)}.volr\\:h-4{height:calc(var(--volr-spacing)*4)}.volr\\:h-6{height:calc(var(--volr-spacing)*6)}.volr\\:h-7{height:calc(var(--volr-spacing)*7)}.volr\\:h-8{height:calc(var(--volr-spacing)*8)}.volr\\:h-10{height:calc(var(--volr-spacing)*10)}.volr\\:h-14{height:calc(var(--volr-spacing)*14)}.volr\\:h-24{height:calc(var(--volr-spacing)*24)}.volr\\:h-40{height:calc(var(--volr-spacing)*40)}.volr\\:h-44{height:calc(var(--volr-spacing)*44)}.volr\\:h-48{height:calc(var(--volr-spacing)*48)}.volr\\:h-\\[0\\.8em\\]{height:.8em}.volr\\:h-\\[200px\\]{height:200px}.volr\\:h-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-36{max-height:calc(var(--volr-spacing)*36)}.volr\\:max-h-96{max-height:calc(var(--volr-spacing)*96)}.volr\\:max-h-\\[85vh\\]{max-height:85vh}.volr\\:max-h-\\[90vh\\]{max-height:90vh}.volr\\:min-h-\\[120px\\]{min-height:120px}.volr\\:min-h-\\[500px\\]{min-height:500px}.volr\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.volr\\:w-6{width:calc(var(--volr-spacing)*6)}.volr\\:w-8{width:calc(var(--volr-spacing)*8)}.volr\\:w-10{width:calc(var(--volr-spacing)*10)}.volr\\:w-12{width:calc(var(--volr-spacing)*12)}.volr\\:w-24{width:calc(var(--volr-spacing)*24)}.volr\\:w-32{width:calc(var(--volr-spacing)*32)}.volr\\:w-36{width:calc(var(--volr-spacing)*36)}.volr\\:w-40{width:calc(var(--volr-spacing)*40)}.volr\\:w-44{width:calc(var(--volr-spacing)*44)}.volr\\:w-48{width:calc(var(--volr-spacing)*48)}.volr\\:w-\\[200px\\]{width:200px}.volr\\:w-auto{width:auto}.volr\\:w-full{width:100%}.volr\\:max-w-4xl{max-width:var(--volr-container-4xl)}.volr\\:max-w-full{max-width:100%}.volr\\:max-w-md{max-width:var(--volr-container-md)}.volr\\:max-w-none{max-width:none}.volr\\:min-w-0{min-width:calc(var(--volr-spacing)*0)}.volr\\:flex-1{flex:1}.volr\\:shrink-0{flex-shrink:0}.volr\\:-translate-y-1\\/2{--volr-tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--volr-tw-translate-x)var(--volr-tw-translate-y)}.volr\\:animate-\\[volrFadeIn_0\\.2s_ease-out\\]{animation:.2s ease-out volrFadeIn}.volr\\:animate-pulse{animation:var(--volr-animate-pulse)}.volr\\:animate-spin{animation:var(--volr-animate-spin)}.volr\\: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{border-radius:.25rem}.volr\\:rounded-2xl{border-radius:var(--volr-radius-2xl)}.volr\\:rounded-full{border-radius:3.40282e38px}.volr\\:rounded-lg{border-radius:var(--volr-radius-lg)}.volr\\:rounded-md{border-radius:var(--volr-radius-md)}.volr\\:rounded-xl{border-radius:var(--volr-radius-xl)}.volr\\:rounded-t-2xl{border-top-left-radius:var(--volr-radius-2xl);border-top-right-radius:var(--volr-radius-2xl)}.volr\\:rounded-t-3xl{border-top-left-radius:var(--volr-radius-3xl);border-top-right-radius:var(--volr-radius-3xl)}.volr\\:border{border-style:var(--volr-tw-border-style);border-width:1px}.volr\\:border-2{border-style:var(--volr-tw-border-style);border-width:2px}.volr\\:border-4{border-style:var(--volr-tw-border-style);border-width:4px}.volr\\:border-t{border-top-style:var(--volr-tw-border-style);border-top-width:1px}.volr\\:border-t-2{border-top-style:var(--volr-tw-border-style);border-top-width:2px}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-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-cyan-400{background-color:var(--volr-color-cyan-400)}.volr\\:bg-emerald-300{background-color:var(--volr-color-emerald-300)}.volr\\:bg-emerald-400{background-color:var(--volr-color-emerald-400)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.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-emerald-400{--volr-tw-gradient-from:var(--volr-color-emerald-400);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:from-emerald-500{--volr-tw-gradient-from:var(--volr-color-emerald-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:to-teal-500{--volr-tw-gradient-to:var(--volr-color-teal-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:p-1{padding:calc(var(--volr-spacing)*1)}.volr\\:p-2{padding:calc(var(--volr-spacing)*2)}.volr\\:p-3{padding:calc(var(--volr-spacing)*3)}.volr\\:p-4{padding:calc(var(--volr-spacing)*4)}.volr\\:p-5{padding:calc(var(--volr-spacing)*5)}.volr\\:p-8{padding:calc(var(--volr-spacing)*8)}.volr\\:px-2{padding-inline:calc(var(--volr-spacing)*2)}.volr\\:px-3{padding-inline:calc(var(--volr-spacing)*3)}.volr\\:px-4{padding-inline:calc(var(--volr-spacing)*4)}.volr\\:py-0\\.5{padding-block:calc(var(--volr-spacing)*.5)}.volr\\:py-1\\.5{padding-block:calc(var(--volr-spacing)*1.5)}.volr\\:py-2\\.5{padding-block:calc(var(--volr-spacing)*2.5)}.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-2{padding-top:calc(var(--volr-spacing)*2)}.volr\\:pt-3{padding-top:calc(var(--volr-spacing)*3)}.volr\\:pt-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pr-3{padding-right:calc(var(--volr-spacing)*3)}.volr\\:pb-2{padding-bottom:calc(var(--volr-spacing)*2)}.volr\\:pb-4{padding-bottom:calc(var(--volr-spacing)*4)}.volr\\:pl-11{padding-left:calc(var(--volr-spacing)*11)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.volr\\:align-baseline{vertical-align:baseline}.volr\\:font-mono{font-family:var(--volr-font-mono)}.volr\\:text-2xl{font-size:var(--volr-text-2xl);line-height:var(--volr-tw-leading,var(--volr-text-2xl--line-height))}.volr\\:text-8xl{font-size:var(--volr-text-8xl);line-height:var(--volr-tw-leading,var(--volr-text-8xl--line-height))}.volr\\:text-base{font-size:var(--volr-text-base);line-height:var(--volr-tw-leading,var(--volr-text-base--line-height))}.volr\\:text-lg{font-size:var(--volr-text-lg);line-height:var(--volr-tw-leading,var(--volr-text-lg--line-height))}.volr\\:text-sm{font-size:var(--volr-text-sm);line-height:var(--volr-tw-leading,var(--volr-text-sm--line-height))}.volr\\:text-xl{font-size:var(--volr-text-xl);line-height:var(--volr-tw-leading,var(--volr-text-xl--line-height))}.volr\\:text-xs{font-size:var(--volr-text-xs);line-height:var(--volr-tw-leading,var(--volr-text-xs--line-height))}.volr\\:leading-relaxed{--volr-tw-leading:var(--volr-leading-relaxed);line-height:var(--volr-leading-relaxed)}.volr\\:font-bold{--volr-tw-font-weight:var(--volr-font-weight-bold);font-weight:var(--volr-font-weight-bold)}.volr\\:font-medium{--volr-tw-font-weight:var(--volr-font-weight-medium);font-weight:var(--volr-font-weight-medium)}.volr\\:font-semibold{--volr-tw-font-weight:var(--volr-font-weight-semibold);font-weight:var(--volr-font-weight-semibold)}.volr\\:break-all{word-break:break-all}.volr\\:text-emerald-600{color:var(--volr-color-emerald-600)}.volr\\:text-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-green-600{color:var(--volr-color-green-600)}.volr\\:text-red-700{color:var(--volr-color-red-700)}.volr\\:text-white{color:var(--volr-color-white)}.volr\\:capitalize{text-transform:capitalize}.volr\\:underline{text-decoration-line:underline}.volr\\:opacity-0{opacity:0}.volr\\:opacity-30{opacity:.3}.volr\\:shadow-2xl{--volr-tw-shadow:0 25px 50px -12px var(--volr-tw-shadow-color,#00000040);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-\\[0_-8px_30px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\]{--volr-tw-shadow:0 -8px 30px var(--volr-tw-shadow-color,#0003);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-lg{--volr-tw-shadow:0 10px 15px -3px var(--volr-tw-shadow-color,#0000001a),0 4px 6px -4px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-md{--volr-tw-shadow:0 4px 6px -1px var(--volr-tw-shadow-color,#0000001a),0 2px 4px -2px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-sm{--volr-tw-shadow:0 1px 3px 0 var(--volr-tw-shadow-color,#0000001a),0 1px 2px -1px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-xl{--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:var(--volr-color-emerald-500)}@supports (color:color-mix(in lab, red, red)){.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--volr-color-emerald-500)50%,transparent)var(--volr-tw-shadow-alpha),transparent)}}.volr\\:blur-2xl{--volr-tw-blur:blur(var(--volr-blur-2xl));filter:var(--volr-tw-blur,)var(--volr-tw-brightness,)var(--volr-tw-contrast,)var(--volr-tw-grayscale,)var(--volr-tw-hue-rotate,)var(--volr-tw-invert,)var(--volr-tw-saturate,)var(--volr-tw-sepia,)var(--volr-tw-drop-shadow,)}.volr\\:transition-all{transition-property:all;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--volr-tw-gradient-from,--volr-tw-gradient-via,--volr-tw-gradient-to;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:duration-300{--volr-tw-duration:.3s;transition-duration:.3s}.volr\\:duration-500{--volr-tw-duration:.5s;transition-duration:.5s}.volr\\:ease-out{--volr-tw-ease:var(--volr-ease-out);transition-timing-function:var(--volr-ease-out)}.volr\\:outline-none{--volr-tw-outline-style:none;outline-style:none}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.volr-text-secondary{color:var(--volr-text-secondary)}.volr-text-muted{color:var(--volr-text-muted)}.volr-bg-secondary{background-color:var(--volr-bg-secondary)}.volr-bg-tertiary{background-color:var(--volr-bg-tertiary)}.volr-border{border-color:var(--volr-border)}.volr-border-strong{border-color:var(--volr-border-strong)}.volr-divider-line{background-color:var(--volr-border)}.volr-error{background-color:var(--volr-error-bg);border-color:var(--volr-error-border);color:var(--volr-error-text)}.volr-hover:hover{background-color:var(--volr-hover-bg)}.volr-surface{background-color:var(--volr-bg)}}@property --volr-tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --volr-tw-gradient-position{syntax:"*";inherits:false}@property --volr-tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-via-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --volr-tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --volr-tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --volr-tw-leading{syntax:"*";inherits:false}@property --volr-tw-font-weight{syntax:"*";inherits:false}@property --volr-tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-shadow-color{syntax:"*";inherits:false}@property --volr-tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-shadow-color{syntax:"*";inherits:false}@property --volr-tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-ring-color{syntax:"*";inherits:false}@property --volr-tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-ring-color{syntax:"*";inherits:false}@property --volr-tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-ring-inset{syntax:"*";inherits:false}@property --volr-tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --volr-tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --volr-tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-blur{syntax:"*";inherits:false}@property --volr-tw-brightness{syntax:"*";inherits:false}@property --volr-tw-contrast{syntax:"*";inherits:false}@property --volr-tw-grayscale{syntax:"*";inherits:false}@property --volr-tw-hue-rotate{syntax:"*";inherits:false}@property --volr-tw-invert{syntax:"*";inherits:false}@property --volr-tw-opacity{syntax:"*";inherits:false}@property --volr-tw-saturate{syntax:"*";inherits:false}@property --volr-tw-sepia{syntax:"*";inherits:false}@property --volr-tw-drop-shadow{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-color{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-drop-shadow-size{syntax:"*";inherits:false}@property --volr-tw-duration{syntax:"*";inherits:false}@property --volr-tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
382
+ 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-700:oklch(50.5% .213 27.518);--volr-color-green-600:oklch(62.7% .194 149.214);--volr-color-emerald-300:oklch(84.5% .143 164.978);--volr-color-emerald-400:oklch(76.5% .177 163.223);--volr-color-emerald-500:oklch(69.6% .17 162.48);--volr-color-emerald-600:oklch(59.6% .145 163.225);--volr-color-teal-400:oklch(77.7% .152 181.912);--volr-color-teal-500:oklch(70.4% .14 182.503);--volr-color-cyan-400:oklch(78.9% .154 211.53);--volr-color-slate-50:oklch(98.4% .003 247.858);--volr-color-slate-300:oklch(86.9% .022 252.894);--volr-color-slate-500:oklch(55.4% .046 257.417);--volr-color-slate-600:oklch(44.6% .043 257.281);--volr-color-gray-500:oklch(55.1% .027 264.364);--volr-color-black:#000;--volr-color-white:#fff;--volr-spacing:.25rem;--volr-container-md:28rem;--volr-container-4xl:56rem;--volr-text-xs:.75rem;--volr-text-xs--line-height:calc(1/.75);--volr-text-sm:.875rem;--volr-text-sm--line-height:calc(1.25/.875);--volr-text-base:1rem;--volr-text-base--line-height:calc(1.5/1);--volr-text-lg:1.125rem;--volr-text-lg--line-height:calc(1.75/1.125);--volr-text-xl:1.25rem;--volr-text-xl--line-height:calc(1.75/1.25);--volr-text-2xl:1.5rem;--volr-text-2xl--line-height:calc(2/1.5);--volr-text-8xl:6rem;--volr-text-8xl--line-height:1;--volr-font-weight-medium:500;--volr-font-weight-semibold:600;--volr-font-weight-bold:700;--volr-leading-relaxed:1.625;--volr-radius-md:.375rem;--volr-radius-lg:.5rem;--volr-radius-xl:.75rem;--volr-radius-2xl:1rem;--volr-radius-3xl:1.5rem;--volr-ease-out:cubic-bezier(0,0,.2,1);--volr-animate-spin:spin 1s linear infinite;--volr-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--volr-blur-2xl:40px;--volr-default-transition-duration:.15s;--volr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--volr-default-font-family:var(--volr-font-sans);--volr-default-mono-font-family:var(--volr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--volr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--volr-default-font-feature-settings,normal);font-variation-settings:var(--volr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--volr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--volr-default-mono-font-feature-settings,normal);font-variation-settings:var(--volr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{--volr-primary-color:var(--volr-accent-color,#303030);--volr-font-family:var(--volr-custom-font,inherit);--volr-bg:#fff;--volr-bg-secondary:#f8fafc;--volr-bg-tertiary:#f1f5f9;--volr-text:#0f172a;--volr-text-secondary:#475569;--volr-text-muted:#94a3b8;--volr-border:#e2e8f0;--volr-border-strong:#cbd5e1;--volr-hover-bg:#f8fafc;--volr-error-bg:#fef2f2;--volr-error-border:#fecaca;--volr-error-text:#991b1b}:host([data-theme=dark]){--volr-bg:#1c1c1e;--volr-bg-secondary:#2c2c2e;--volr-bg-tertiary:#3a3a3c;--volr-text:#f5f5f7;--volr-text-secondary:#c7c7cc;--volr-text-muted:#8e8e93;--volr-border:#3a3a3c;--volr-border-strong:#48484a;--volr-hover-bg:#2c2c2e;--volr-error-bg:#3c1f1f;--volr-error-border:#7f1d1d;--volr-error-text:#fca5a5}*,:before,:after{box-sizing:border-box}*{font-family:var(--volr-font-family);color:var(--volr-text)}button,input,select,textarea{color:var(--volr-text);background-color:#0000}button{cursor:pointer;background-color:#0000}input::placeholder{color:var(--volr-text-muted)}h1,h2,h3{color:var(--volr-text);margin:0;font-weight:700}h1{font-size:1.875rem;line-height:2.25rem}h2{font-size:1.5rem;line-height:2rem}h3{font-size:1.25rem;line-height:1.75rem}p{margin:0}}@layer components{.volr-dialog-overlay{inset:calc(var(--volr-spacing)*0);z-index:40;background-color:var(--volr-color-black);position:fixed}@supports (color:color-mix(in lab, red, red)){.volr-dialog-overlay{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr-dialog-content{z-index:50;border-radius:var(--volr-radius-2xl);border-style:var(--volr-tw-border-style);padding:calc(var(--volr-spacing)*7);--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow);background-color:var(--volr-bg);border-width:1px;border-color:var(--volr-border-strong);width:calc(100% - 2rem);max-width:28rem;max-height:85vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}@media (max-width:640px){.volr-dialog-content{top:auto;right:calc(var(--volr-spacing)*0);bottom:calc(var(--volr-spacing)*0);left:calc(var(--volr-spacing)*0);border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:100%;margin:0 auto;transform:translateY(0)}}.volr-dialog-close{top:calc(var(--volr-spacing)*4);right:calc(var(--volr-spacing)*4);height:calc(var(--volr-spacing)*8);width:calc(var(--volr-spacing)*8);color:var(--volr-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.volr-dialog-close:hover{background-color:var(--volr-hover-bg);color:var(--volr-text-secondary)}.volr-dialog-close:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}.volr-dialog-close-icon{height:calc(var(--volr-spacing)*4);width:calc(var(--volr-spacing)*4)}.volr-email-input{border:1px solid var(--volr-border-strong);background-color:var(--volr-bg);width:100%;color:var(--volr-text);border-radius:.5rem;outline:none;padding:.75rem .75rem .75rem 2.75rem;font-size:1rem;line-height:1.5}.volr-email-input::placeholder{color:var(--volr-text-muted)}.volr-email-input:focus{border-color:var(--volr-border-strong);box-shadow:0 0 0 2px var(--volr-border-strong)}.volr-option-button{border:1px solid var(--volr-border);background-color:var(--volr-bg);width:100%;color:var(--volr-text);cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;transition:background-color .15s ease-out,border-color .15s ease-out,box-shadow .15s ease-out;display:flex}.volr-option-button:hover{background-color:var(--volr-hover-bg);border-color:var(--volr-border)}.volr-option-button:focus-visible{box-shadow:0 0 0 2px var(--volr-border-strong);outline:none}}@layer utilities{.volr\\:pointer-events-auto{pointer-events:auto}.volr\\:pointer-events-none{pointer-events:none}.volr\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.volr\\:absolute{position:absolute}.volr\\:fixed{position:fixed}.volr\\:relative{position:relative}.volr\\:inset-0{inset:calc(var(--volr-spacing)*0)}.volr\\:-top-3{top:calc(var(--volr-spacing)*-3)}.volr\\:top-1\\/2{top:50%}.volr\\:-right-3{right:calc(var(--volr-spacing)*-3)}.volr\\:-right-4{right:calc(var(--volr-spacing)*-4)}.volr\\:right-2{right:calc(var(--volr-spacing)*2)}.volr\\:bottom-0{bottom:calc(var(--volr-spacing)*0)}.volr\\:-left-4{left:calc(var(--volr-spacing)*-4)}.volr\\:left-3{left:calc(var(--volr-spacing)*3)}.volr\\:-z-10{z-index:calc(10*-1)}.volr\\:z-10{z-index:10}.volr\\:z-20{z-index:20}.volr\\:z-40{z-index:40}.volr\\:z-50{z-index:50}.volr\\:mx-auto{margin-inline:auto}.volr\\:my-6{margin-block:calc(var(--volr-spacing)*6)}.volr\\:mt-0\\.5{margin-top:calc(var(--volr-spacing)*.5)}.volr\\:mt-1{margin-top:calc(var(--volr-spacing)*1)}.volr\\:mt-2{margin-top:calc(var(--volr-spacing)*2)}.volr\\:mt-3{margin-top:calc(var(--volr-spacing)*3)}.volr\\:mt-4{margin-top:calc(var(--volr-spacing)*4)}.volr\\:mt-6{margin-top:calc(var(--volr-spacing)*6)}.volr\\:mt-8{margin-top:calc(var(--volr-spacing)*8)}.volr\\:mb-1{margin-bottom:calc(var(--volr-spacing)*1)}.volr\\:mb-2{margin-bottom:calc(var(--volr-spacing)*2)}.volr\\:mb-3{margin-bottom:calc(var(--volr-spacing)*3)}.volr\\:mb-4{margin-bottom:calc(var(--volr-spacing)*4)}.volr\\:mb-5{margin-bottom:calc(var(--volr-spacing)*5)}.volr\\:mb-6{margin-bottom:calc(var(--volr-spacing)*6)}.volr\\:mb-8{margin-bottom:calc(var(--volr-spacing)*8)}.volr\\:-ml-2{margin-left:calc(var(--volr-spacing)*-2)}.volr\\:flex{display:flex}.volr\\:grid{display:grid}.volr\\:inline-block{display:inline-block}.volr\\:inline-flex{display:inline-flex}.volr\\:h-1{height:calc(var(--volr-spacing)*1)}.volr\\:h-1\\.5{height:calc(var(--volr-spacing)*1.5)}.volr\\:h-2{height:calc(var(--volr-spacing)*2)}.volr\\:h-3{height:calc(var(--volr-spacing)*3)}.volr\\:h-4{height:calc(var(--volr-spacing)*4)}.volr\\:h-6{height:calc(var(--volr-spacing)*6)}.volr\\:h-7{height:calc(var(--volr-spacing)*7)}.volr\\:h-8{height:calc(var(--volr-spacing)*8)}.volr\\:h-10{height:calc(var(--volr-spacing)*10)}.volr\\:h-14{height:calc(var(--volr-spacing)*14)}.volr\\:h-24{height:calc(var(--volr-spacing)*24)}.volr\\:h-40{height:calc(var(--volr-spacing)*40)}.volr\\:h-44{height:calc(var(--volr-spacing)*44)}.volr\\:h-48{height:calc(var(--volr-spacing)*48)}.volr\\:h-\\[0\\.8em\\]{height:.8em}.volr\\:h-\\[200px\\]{height:200px}.volr\\:h-full{height:100%}.volr\\:h-px{height:1px}.volr\\:max-h-36{max-height:calc(var(--volr-spacing)*36)}.volr\\:max-h-96{max-height:calc(var(--volr-spacing)*96)}.volr\\:max-h-\\[85vh\\]{max-height:85vh}.volr\\:max-h-\\[90vh\\]{max-height:90vh}.volr\\:min-h-\\[120px\\]{min-height:120px}.volr\\:min-h-\\[500px\\]{min-height:500px}.volr\\:w-1\\.5{width:calc(var(--volr-spacing)*1.5)}.volr\\:w-2{width:calc(var(--volr-spacing)*2)}.volr\\:w-6{width:calc(var(--volr-spacing)*6)}.volr\\:w-8{width:calc(var(--volr-spacing)*8)}.volr\\:w-10{width:calc(var(--volr-spacing)*10)}.volr\\:w-12{width:calc(var(--volr-spacing)*12)}.volr\\:w-24{width:calc(var(--volr-spacing)*24)}.volr\\:w-32{width:calc(var(--volr-spacing)*32)}.volr\\:w-36{width:calc(var(--volr-spacing)*36)}.volr\\:w-40{width:calc(var(--volr-spacing)*40)}.volr\\:w-44{width:calc(var(--volr-spacing)*44)}.volr\\:w-48{width:calc(var(--volr-spacing)*48)}.volr\\:w-\\[200px\\]{width:200px}.volr\\:w-auto{width:auto}.volr\\:w-full{width:100%}.volr\\:max-w-4xl{max-width:var(--volr-container-4xl)}.volr\\:max-w-full{max-width:100%}.volr\\:max-w-md{max-width:var(--volr-container-md)}.volr\\:max-w-none{max-width:none}.volr\\:min-w-0{min-width:calc(var(--volr-spacing)*0)}.volr\\:flex-1{flex:1}.volr\\:shrink-0{flex-shrink:0}.volr\\:-translate-y-1\\/2{--volr-tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--volr-tw-translate-x)var(--volr-tw-translate-y)}.volr\\:animate-\\[volrFadeIn_0\\.2s_ease-out\\]{animation:.2s ease-out volrFadeIn}.volr\\:animate-pulse{animation:var(--volr-animate-pulse)}.volr\\:animate-spin{animation:var(--volr-animate-spin)}.volr\\:list-inside{list-style-position:inside}.volr\\:list-decimal{list-style-type:decimal}.volr\\:grid-cols-\\[minmax\\(0\\,1\\.1fr\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.volr\\:flex-col{flex-direction:column}.volr\\:items-baseline{align-items:baseline}.volr\\:items-center{align-items:center}.volr\\:items-end{align-items:flex-end}.volr\\:items-start{align-items:flex-start}.volr\\:justify-between{justify-content:space-between}.volr\\:justify-center{justify-content:center}.volr\\:gap-1{gap:calc(var(--volr-spacing)*1)}.volr\\:gap-2{gap:calc(var(--volr-spacing)*2)}.volr\\:gap-3{gap:calc(var(--volr-spacing)*3)}.volr\\:gap-4{gap:calc(var(--volr-spacing)*4)}:where(.volr\\:space-y-1>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*1)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*1)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-2>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*2)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*2)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-3>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*3)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*3)*calc(1 - var(--volr-tw-space-y-reverse)))}:where(.volr\\:space-y-4>:not(:last-child)){--volr-tw-space-y-reverse:0;margin-block-start:calc(calc(var(--volr-spacing)*4)*var(--volr-tw-space-y-reverse));margin-block-end:calc(calc(var(--volr-spacing)*4)*calc(1 - var(--volr-tw-space-y-reverse)))}.volr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.volr\\:overflow-hidden{overflow:hidden}.volr\\:overflow-visible{overflow:visible}.volr\\:overflow-y-auto{overflow-y:auto}.volr\\:rounded{border-radius:.25rem}.volr\\:rounded-2xl{border-radius:var(--volr-radius-2xl)}.volr\\:rounded-full{border-radius:3.40282e38px}.volr\\:rounded-lg{border-radius:var(--volr-radius-lg)}.volr\\:rounded-md{border-radius:var(--volr-radius-md)}.volr\\:rounded-xl{border-radius:var(--volr-radius-xl)}.volr\\:rounded-t-2xl{border-top-left-radius:var(--volr-radius-2xl);border-top-right-radius:var(--volr-radius-2xl)}.volr\\:rounded-t-3xl{border-top-left-radius:var(--volr-radius-3xl);border-top-right-radius:var(--volr-radius-3xl)}.volr\\:border{border-style:var(--volr-tw-border-style);border-width:1px}.volr\\:border-2{border-style:var(--volr-tw-border-style);border-width:2px}.volr\\:border-4{border-style:var(--volr-tw-border-style);border-width:4px}.volr\\:border-t{border-top-style:var(--volr-tw-border-style);border-top-width:1px}.volr\\:border-t-2{border-top-style:var(--volr-tw-border-style);border-top-width:2px}.volr\\:border-red-200{border-color:var(--volr-color-red-200)}.volr\\:border-slate-300{border-color:var(--volr-color-slate-300)}.volr\\:border-white{border-color:var(--volr-color-white)}.volr\\:border-t-slate-600{border-top-color:var(--volr-color-slate-600)}.volr\\:bg-black\\/45{background-color:var(--volr-color-black)}@supports (color:color-mix(in lab, red, red)){.volr\\:bg-black\\/45{background-color:color-mix(in oklab,var(--volr-color-black)45%,transparent)}}.volr\\:bg-cyan-400{background-color:var(--volr-color-cyan-400)}.volr\\:bg-emerald-300{background-color:var(--volr-color-emerald-300)}.volr\\:bg-emerald-400{background-color:var(--volr-color-emerald-400)}.volr\\:bg-red-50{background-color:var(--volr-color-red-50)}.volr\\:bg-slate-50{background-color:var(--volr-color-slate-50)}.volr\\:bg-teal-400{background-color:var(--volr-color-teal-400)}.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-emerald-400{--volr-tw-gradient-from:var(--volr-color-emerald-400);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:from-emerald-500{--volr-tw-gradient-from:var(--volr-color-emerald-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:to-teal-500{--volr-tw-gradient-to:var(--volr-color-teal-500);--volr-tw-gradient-stops:var(--volr-tw-gradient-via-stops,var(--volr-tw-gradient-position),var(--volr-tw-gradient-from)var(--volr-tw-gradient-from-position),var(--volr-tw-gradient-to)var(--volr-tw-gradient-to-position))}.volr\\:p-1{padding:calc(var(--volr-spacing)*1)}.volr\\:p-2{padding:calc(var(--volr-spacing)*2)}.volr\\:p-3{padding:calc(var(--volr-spacing)*3)}.volr\\:p-4{padding:calc(var(--volr-spacing)*4)}.volr\\:p-5{padding:calc(var(--volr-spacing)*5)}.volr\\:p-8{padding:calc(var(--volr-spacing)*8)}.volr\\:px-2{padding-inline:calc(var(--volr-spacing)*2)}.volr\\:px-3{padding-inline:calc(var(--volr-spacing)*3)}.volr\\:px-4{padding-inline:calc(var(--volr-spacing)*4)}.volr\\:py-0\\.5{padding-block:calc(var(--volr-spacing)*.5)}.volr\\:py-1\\.5{padding-block:calc(var(--volr-spacing)*1.5)}.volr\\:py-2\\.5{padding-block:calc(var(--volr-spacing)*2.5)}.volr\\:py-3{padding-block:calc(var(--volr-spacing)*3)}.volr\\:py-4{padding-block:calc(var(--volr-spacing)*4)}.volr\\:py-6{padding-block:calc(var(--volr-spacing)*6)}.volr\\:py-8{padding-block:calc(var(--volr-spacing)*8)}.volr\\:py-12{padding-block:calc(var(--volr-spacing)*12)}.volr\\:pt-2{padding-top:calc(var(--volr-spacing)*2)}.volr\\:pt-3{padding-top:calc(var(--volr-spacing)*3)}.volr\\:pt-4{padding-top:calc(var(--volr-spacing)*4)}.volr\\:pr-3{padding-right:calc(var(--volr-spacing)*3)}.volr\\:pb-2{padding-bottom:calc(var(--volr-spacing)*2)}.volr\\:pb-4{padding-bottom:calc(var(--volr-spacing)*4)}.volr\\:pl-11{padding-left:calc(var(--volr-spacing)*11)}.volr\\:text-center{text-align:center}.volr\\:text-left{text-align:left}.volr\\:align-baseline{vertical-align:baseline}.volr\\:font-mono{font-family:var(--volr-font-mono)}.volr\\:text-2xl{font-size:var(--volr-text-2xl);line-height:var(--volr-tw-leading,var(--volr-text-2xl--line-height))}.volr\\:text-8xl{font-size:var(--volr-text-8xl);line-height:var(--volr-tw-leading,var(--volr-text-8xl--line-height))}.volr\\:text-base{font-size:var(--volr-text-base);line-height:var(--volr-tw-leading,var(--volr-text-base--line-height))}.volr\\:text-lg{font-size:var(--volr-text-lg);line-height:var(--volr-tw-leading,var(--volr-text-lg--line-height))}.volr\\:text-sm{font-size:var(--volr-text-sm);line-height:var(--volr-tw-leading,var(--volr-text-sm--line-height))}.volr\\:text-xl{font-size:var(--volr-text-xl);line-height:var(--volr-tw-leading,var(--volr-text-xl--line-height))}.volr\\:text-xs{font-size:var(--volr-text-xs);line-height:var(--volr-tw-leading,var(--volr-text-xs--line-height))}.volr\\:leading-relaxed{--volr-tw-leading:var(--volr-leading-relaxed);line-height:var(--volr-leading-relaxed)}.volr\\:font-bold{--volr-tw-font-weight:var(--volr-font-weight-bold);font-weight:var(--volr-font-weight-bold)}.volr\\:font-medium{--volr-tw-font-weight:var(--volr-font-weight-medium);font-weight:var(--volr-font-weight-medium)}.volr\\:font-semibold{--volr-tw-font-weight:var(--volr-font-weight-semibold);font-weight:var(--volr-font-weight-semibold)}.volr\\:break-all{word-break:break-all}.volr\\:text-emerald-600{color:var(--volr-color-emerald-600)}.volr\\:text-gray-500{color:var(--volr-color-gray-500)}.volr\\:text-green-600{color:var(--volr-color-green-600)}.volr\\:text-red-700{color:var(--volr-color-red-700)}.volr\\:text-slate-500{color:var(--volr-color-slate-500)}.volr\\:text-slate-600{color:var(--volr-color-slate-600)}.volr\\:text-white{color:var(--volr-color-white)}.volr\\:capitalize{text-transform:capitalize}.volr\\:underline{text-decoration-line:underline}.volr\\:opacity-0{opacity:0}.volr\\:opacity-30{opacity:.3}.volr\\:shadow-2xl{--volr-tw-shadow:0 25px 50px -12px var(--volr-tw-shadow-color,#00000040);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-\\[0_-8px_30px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\]{--volr-tw-shadow:0 -8px 30px var(--volr-tw-shadow-color,#0003);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-lg{--volr-tw-shadow:0 10px 15px -3px var(--volr-tw-shadow-color,#0000001a),0 4px 6px -4px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-md{--volr-tw-shadow:0 4px 6px -1px var(--volr-tw-shadow-color,#0000001a),0 2px 4px -2px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-sm{--volr-tw-shadow:0 1px 3px 0 var(--volr-tw-shadow-color,#0000001a),0 1px 2px -1px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-xl{--volr-tw-shadow:0 20px 25px -5px var(--volr-tw-shadow-color,#0000001a),0 8px 10px -6px var(--volr-tw-shadow-color,#0000001a);box-shadow:var(--volr-tw-inset-shadow),var(--volr-tw-inset-ring-shadow),var(--volr-tw-ring-offset-shadow),var(--volr-tw-ring-shadow),var(--volr-tw-shadow)}.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:var(--volr-color-emerald-500)}@supports (color:color-mix(in lab, red, red)){.volr\\:shadow-emerald-500\\/50{--volr-tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--volr-color-emerald-500)50%,transparent)var(--volr-tw-shadow-alpha),transparent)}}.volr\\:blur-2xl{--volr-tw-blur:blur(var(--volr-blur-2xl));filter:var(--volr-tw-blur,)var(--volr-tw-brightness,)var(--volr-tw-contrast,)var(--volr-tw-grayscale,)var(--volr-tw-hue-rotate,)var(--volr-tw-invert,)var(--volr-tw-saturate,)var(--volr-tw-sepia,)var(--volr-tw-drop-shadow,)}.volr\\:transition-all{transition-property:all;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--volr-tw-gradient-from,--volr-tw-gradient-via,--volr-tw-gradient-to;transition-timing-function:var(--volr-tw-ease,var(--volr-default-transition-timing-function));transition-duration:var(--volr-tw-duration,var(--volr-default-transition-duration))}.volr\\:duration-300{--volr-tw-duration:.3s;transition-duration:.3s}.volr\\:duration-500{--volr-tw-duration:.5s;transition-duration:.5s}.volr\\:ease-out{--volr-tw-ease:var(--volr-ease-out);transition-timing-function:var(--volr-ease-out)}.volr\\:outline-none{--volr-tw-outline-style:none;outline-style:none}.volr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.volr-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.volr-text-secondary{color:var(--volr-text-secondary)}.volr-text-muted{color:var(--volr-text-muted)}.volr-bg-secondary{background-color:var(--volr-bg-secondary)}.volr-bg-tertiary{background-color:var(--volr-bg-tertiary)}.volr-border{border-color:var(--volr-border)}.volr-border-strong{border-color:var(--volr-border-strong)}.volr-divider-line{background-color:var(--volr-border)}.volr-error{background-color:var(--volr-error-bg);border-color:var(--volr-error-border);color:var(--volr-error-text)}.volr-hover:hover{background-color:var(--volr-hover-bg)}.volr-surface{background-color:var(--volr-bg)}}@property --volr-tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --volr-tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --volr-tw-gradient-position{syntax:"*";inherits:false}@property --volr-tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --volr-tw-gradient-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-via-stops{syntax:"*";inherits:false}@property --volr-tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --volr-tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --volr-tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --volr-tw-leading{syntax:"*";inherits:false}@property --volr-tw-font-weight{syntax:"*";inherits:false}@property --volr-tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-shadow-color{syntax:"*";inherits:false}@property --volr-tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-shadow-color{syntax:"*";inherits:false}@property --volr-tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-ring-color{syntax:"*";inherits:false}@property --volr-tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-inset-ring-color{syntax:"*";inherits:false}@property --volr-tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-ring-inset{syntax:"*";inherits:false}@property --volr-tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --volr-tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --volr-tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --volr-tw-blur{syntax:"*";inherits:false}@property --volr-tw-brightness{syntax:"*";inherits:false}@property --volr-tw-contrast{syntax:"*";inherits:false}@property --volr-tw-grayscale{syntax:"*";inherits:false}@property --volr-tw-hue-rotate{syntax:"*";inherits:false}@property --volr-tw-invert{syntax:"*";inherits:false}@property --volr-tw-opacity{syntax:"*";inherits:false}@property --volr-tw-saturate{syntax:"*";inherits:false}@property --volr-tw-sepia{syntax:"*";inherits:false}@property --volr-tw-drop-shadow{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-color{syntax:"*";inherits:false}@property --volr-tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --volr-tw-drop-shadow-size{syntax:"*";inherits:false}@property --volr-tw-duration{syntax:"*";inherits:false}@property --volr-tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
359
383
  function useResolvedTheme(theme = "light") {
360
384
  const [resolvedTheme, setResolvedTheme] = React10.useState(() => {
361
385
  if (theme !== "system") return theme;
@@ -481,8 +505,8 @@ var Modal = ({
481
505
  contentClassName,
482
506
  ariaLabel = "Dialog"
483
507
  }) => {
484
- const isMobile = useMediaQuery("(max-width: 500px)");
485
- const variant = explicitVariant ?? (isMobile ? "bottom-sheet" : "centered");
508
+ const isMobile2 = useMediaQuery("(max-width: 500px)");
509
+ const variant = explicitVariant ?? (isMobile2 ? "bottom-sheet" : "centered");
486
510
  const dialogRef = React10.useRef(null);
487
511
  const dialogId = React10.useId();
488
512
  const uiContext = useVolrUIOptional();
@@ -1772,306 +1796,12 @@ function CodeInputScreen({ email, onSubmit, onResend }) {
1772
1796
  )
1773
1797
  ] });
1774
1798
  }
1775
-
1776
- // node_modules/@noble/hashes/_u64.js
1777
- var U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
1778
- var _32n = /* @__PURE__ */ BigInt(32);
1779
- function fromBig(n, le = false) {
1780
- if (le)
1781
- return { h: Number(n & U32_MASK64), l: Number(n >> _32n & U32_MASK64) };
1782
- return { h: Number(n >> _32n & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
1783
- }
1784
- function split(lst, le = false) {
1785
- const len = lst.length;
1786
- let Ah = new Uint32Array(len);
1787
- let Al = new Uint32Array(len);
1788
- for (let i = 0; i < len; i++) {
1789
- const { h, l } = fromBig(lst[i], le);
1790
- [Ah[i], Al[i]] = [h, l];
1791
- }
1792
- return [Ah, Al];
1793
- }
1794
- var rotlSH = (h, l, s) => h << s | l >>> 32 - s;
1795
- var rotlSL = (h, l, s) => l << s | h >>> 32 - s;
1796
- var rotlBH = (h, l, s) => l << s - 32 | h >>> 64 - s;
1797
- var rotlBL = (h, l, s) => h << s - 32 | l >>> 64 - s;
1798
-
1799
- // node_modules/@noble/hashes/utils.js
1800
- function isBytes(a) {
1801
- return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
1802
- }
1803
- function anumber(n, title = "") {
1804
- if (!Number.isSafeInteger(n) || n < 0) {
1805
- const prefix = title && `"${title}" `;
1806
- throw new Error(`${prefix}expected integer >= 0, got ${n}`);
1807
- }
1808
- }
1809
- function abytes(value, length, title = "") {
1810
- const bytes = isBytes(value);
1811
- const len = value?.length;
1812
- const needsLen = length !== void 0;
1813
- if (!bytes || needsLen) {
1814
- const prefix = title && `"${title}" `;
1815
- const ofLen = "";
1816
- const got = bytes ? `length=${len}` : `type=${typeof value}`;
1817
- throw new Error(prefix + "expected Uint8Array" + ofLen + ", got " + got);
1818
- }
1819
- return value;
1820
- }
1821
- function aexists(instance, checkFinished = true) {
1822
- if (instance.destroyed)
1823
- throw new Error("Hash instance has been destroyed");
1824
- if (checkFinished && instance.finished)
1825
- throw new Error("Hash#digest() has already been called");
1826
- }
1827
- function aoutput(out, instance) {
1828
- abytes(out, void 0, "digestInto() output");
1829
- const min = instance.outputLen;
1830
- if (out.length < min) {
1831
- throw new Error('"digestInto() output" expected to be of length >=' + min);
1832
- }
1833
- }
1834
- function u32(arr) {
1835
- return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
1836
- }
1837
- function clean(...arrays) {
1838
- for (let i = 0; i < arrays.length; i++) {
1839
- arrays[i].fill(0);
1840
- }
1841
- }
1842
- var isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68)();
1843
- function byteSwap(word) {
1844
- return word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;
1845
- }
1846
- function byteSwap32(arr) {
1847
- for (let i = 0; i < arr.length; i++) {
1848
- arr[i] = byteSwap(arr[i]);
1849
- }
1850
- return arr;
1851
- }
1852
- var swap32IfBE = isLE ? (u) => u : byteSwap32;
1853
- var hasHexBuiltin = /* @__PURE__ */ (() => (
1854
- // @ts-ignore
1855
- typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function"
1856
- ))();
1857
- var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
1858
- function bytesToHex(bytes) {
1859
- abytes(bytes);
1860
- if (hasHexBuiltin)
1861
- return bytes.toHex();
1862
- let hex = "";
1863
- for (let i = 0; i < bytes.length; i++) {
1864
- hex += hexes[bytes[i]];
1865
- }
1866
- return hex;
1867
- }
1868
- function createHasher(hashCons, info = {}) {
1869
- const hashC = (msg, opts) => hashCons(opts).update(msg).digest();
1870
- const tmp = hashCons(void 0);
1871
- hashC.outputLen = tmp.outputLen;
1872
- hashC.blockLen = tmp.blockLen;
1873
- hashC.create = (opts) => hashCons(opts);
1874
- Object.assign(hashC, info);
1875
- return Object.freeze(hashC);
1876
- }
1877
-
1878
- // node_modules/@noble/hashes/sha3.js
1879
- var _0n = BigInt(0);
1880
- var _1n = BigInt(1);
1881
- var _2n = BigInt(2);
1882
- var _7n = BigInt(7);
1883
- var _256n = BigInt(256);
1884
- var _0x71n = BigInt(113);
1885
- var SHA3_PI = [];
1886
- var SHA3_ROTL = [];
1887
- var _SHA3_IOTA = [];
1888
- for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
1889
- [x, y] = [y, (2 * x + 3 * y) % 5];
1890
- SHA3_PI.push(2 * (5 * y + x));
1891
- SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);
1892
- let t = _0n;
1893
- for (let j = 0; j < 7; j++) {
1894
- R = (R << _1n ^ (R >> _7n) * _0x71n) % _256n;
1895
- if (R & _2n)
1896
- t ^= _1n << (_1n << BigInt(j)) - _1n;
1897
- }
1898
- _SHA3_IOTA.push(t);
1899
- }
1900
- var IOTAS = split(_SHA3_IOTA, true);
1901
- var SHA3_IOTA_H = IOTAS[0];
1902
- var SHA3_IOTA_L = IOTAS[1];
1903
- var rotlH = (h, l, s) => s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s);
1904
- var rotlL = (h, l, s) => s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s);
1905
- function keccakP(s, rounds = 24) {
1906
- const B = new Uint32Array(5 * 2);
1907
- for (let round = 24 - rounds; round < 24; round++) {
1908
- for (let x = 0; x < 10; x++)
1909
- B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
1910
- for (let x = 0; x < 10; x += 2) {
1911
- const idx1 = (x + 8) % 10;
1912
- const idx0 = (x + 2) % 10;
1913
- const B0 = B[idx0];
1914
- const B1 = B[idx0 + 1];
1915
- const Th = rotlH(B0, B1, 1) ^ B[idx1];
1916
- const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
1917
- for (let y = 0; y < 50; y += 10) {
1918
- s[x + y] ^= Th;
1919
- s[x + y + 1] ^= Tl;
1920
- }
1921
- }
1922
- let curH = s[2];
1923
- let curL = s[3];
1924
- for (let t = 0; t < 24; t++) {
1925
- const shift = SHA3_ROTL[t];
1926
- const Th = rotlH(curH, curL, shift);
1927
- const Tl = rotlL(curH, curL, shift);
1928
- const PI = SHA3_PI[t];
1929
- curH = s[PI];
1930
- curL = s[PI + 1];
1931
- s[PI] = Th;
1932
- s[PI + 1] = Tl;
1933
- }
1934
- for (let y = 0; y < 50; y += 10) {
1935
- for (let x = 0; x < 10; x++)
1936
- B[x] = s[y + x];
1937
- for (let x = 0; x < 10; x++)
1938
- s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
1939
- }
1940
- s[0] ^= SHA3_IOTA_H[round];
1941
- s[1] ^= SHA3_IOTA_L[round];
1942
- }
1943
- clean(B);
1944
- }
1945
- var Keccak = class _Keccak {
1946
- // NOTE: we accept arguments in bytes instead of bits here.
1947
- constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
1948
- __publicField(this, "state");
1949
- __publicField(this, "pos", 0);
1950
- __publicField(this, "posOut", 0);
1951
- __publicField(this, "finished", false);
1952
- __publicField(this, "state32");
1953
- __publicField(this, "destroyed", false);
1954
- __publicField(this, "blockLen");
1955
- __publicField(this, "suffix");
1956
- __publicField(this, "outputLen");
1957
- __publicField(this, "enableXOF", false);
1958
- __publicField(this, "rounds");
1959
- this.blockLen = blockLen;
1960
- this.suffix = suffix;
1961
- this.outputLen = outputLen;
1962
- this.enableXOF = enableXOF;
1963
- this.rounds = rounds;
1964
- anumber(outputLen, "outputLen");
1965
- if (!(0 < blockLen && blockLen < 200))
1966
- throw new Error("only keccak-f1600 function is supported");
1967
- this.state = new Uint8Array(200);
1968
- this.state32 = u32(this.state);
1969
- }
1970
- clone() {
1971
- return this._cloneInto();
1972
- }
1973
- keccak() {
1974
- swap32IfBE(this.state32);
1975
- keccakP(this.state32, this.rounds);
1976
- swap32IfBE(this.state32);
1977
- this.posOut = 0;
1978
- this.pos = 0;
1979
- }
1980
- update(data) {
1981
- aexists(this);
1982
- abytes(data);
1983
- const { blockLen, state } = this;
1984
- const len = data.length;
1985
- for (let pos = 0; pos < len; ) {
1986
- const take = Math.min(blockLen - this.pos, len - pos);
1987
- for (let i = 0; i < take; i++)
1988
- state[this.pos++] ^= data[pos++];
1989
- if (this.pos === blockLen)
1990
- this.keccak();
1991
- }
1992
- return this;
1993
- }
1994
- finish() {
1995
- if (this.finished)
1996
- return;
1997
- this.finished = true;
1998
- const { state, suffix, pos, blockLen } = this;
1999
- state[pos] ^= suffix;
2000
- if ((suffix & 128) !== 0 && pos === blockLen - 1)
2001
- this.keccak();
2002
- state[blockLen - 1] ^= 128;
2003
- this.keccak();
2004
- }
2005
- writeInto(out) {
2006
- aexists(this, false);
2007
- abytes(out);
2008
- this.finish();
2009
- const bufferOut = this.state;
2010
- const { blockLen } = this;
2011
- for (let pos = 0, len = out.length; pos < len; ) {
2012
- if (this.posOut >= blockLen)
2013
- this.keccak();
2014
- const take = Math.min(blockLen - this.posOut, len - pos);
2015
- out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
2016
- this.posOut += take;
2017
- pos += take;
2018
- }
2019
- return out;
2020
- }
2021
- xofInto(out) {
2022
- if (!this.enableXOF)
2023
- throw new Error("XOF is not possible for this instance");
2024
- return this.writeInto(out);
2025
- }
2026
- xof(bytes) {
2027
- anumber(bytes);
2028
- return this.xofInto(new Uint8Array(bytes));
2029
- }
2030
- digestInto(out) {
2031
- aoutput(out, this);
2032
- if (this.finished)
2033
- throw new Error("digest() was already called");
2034
- this.writeInto(out);
2035
- this.destroy();
2036
- return out;
2037
- }
2038
- digest() {
2039
- return this.digestInto(new Uint8Array(this.outputLen));
2040
- }
2041
- destroy() {
2042
- this.destroyed = true;
2043
- clean(this.state);
2044
- }
2045
- _cloneInto(to) {
2046
- const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
2047
- to || (to = new _Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
2048
- to.state32.set(this.state32);
2049
- to.pos = this.pos;
2050
- to.posOut = this.posOut;
2051
- to.finished = this.finished;
2052
- to.rounds = rounds;
2053
- to.suffix = suffix;
2054
- to.outputLen = outputLen;
2055
- to.enableXOF = enableXOF;
2056
- to.destroyed = this.destroyed;
2057
- return to;
2058
- }
1799
+ var isMobile = () => {
1800
+ if (typeof window === "undefined") return false;
1801
+ return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
1802
+ navigator.userAgent
1803
+ );
2059
1804
  };
2060
- var genKeccak = (suffix, blockLen, outputLen, info = {}) => createHasher(() => new Keccak(blockLen, suffix, outputLen), info);
2061
- var keccak_256 = /* @__PURE__ */ genKeccak(1, 136, 32);
2062
- function toChecksumAddress(address) {
2063
- const addr = address.toLowerCase().replace("0x", "");
2064
- const hash = bytesToHex(keccak_256(new TextEncoder().encode(addr)));
2065
- let checksummed = "0x";
2066
- for (let i = 0; i < addr.length; i++) {
2067
- if (parseInt(hash[i], 16) >= 8) {
2068
- checksummed += addr[i].toUpperCase();
2069
- } else {
2070
- checksummed += addr[i];
2071
- }
2072
- }
2073
- return checksummed;
2074
- }
2075
1805
  function SiweLoginScreen({
2076
1806
  isOpen = true,
2077
1807
  wrapInModal = true,
@@ -2081,53 +1811,49 @@ function SiweLoginScreen({
2081
1811
  onClose
2082
1812
  }) {
2083
1813
  const { t } = useI18n();
2084
- const { requestSiweNonce, verifySiweSignature } = react.useVolrLogin();
1814
+ const {
1815
+ signWithWallet,
1816
+ createSiweSession,
1817
+ checkSiweSession,
1818
+ getSiweSignUrl
1819
+ } = react.useVolrLogin();
2085
1820
  const [isLoading, setIsLoading] = React10.useState(false);
2086
1821
  const [step, setStep] = React10.useState("connect");
2087
1822
  const [account, setAccount] = React10.useState(null);
2088
1823
  const [error, setError] = React10.useState(null);
2089
- const [walletConnector, setWalletConnector] = React10.useState(
2090
- void 0
2091
- );
2092
1824
  const [hasWallet, setHasWallet] = React10.useState(null);
2093
- const waitForEthereum = (timeout = 2e3, interval = 100) => {
2094
- return new Promise((resolve) => {
2095
- if (typeof window !== "undefined" && window.ethereum) {
2096
- resolve(true);
2097
- return;
2098
- }
2099
- const startTime = Date.now();
2100
- const checkInterval = setInterval(() => {
2101
- if (typeof window !== "undefined" && window.ethereum) {
2102
- clearInterval(checkInterval);
2103
- resolve(true);
2104
- } else if (Date.now() - startTime >= timeout) {
2105
- clearInterval(checkInterval);
2106
- resolve(false);
2107
- }
2108
- }, interval);
2109
- });
2110
- };
2111
- const detectWalletConnector = () => {
2112
- if (typeof window === "undefined" || !window.ethereum) {
2113
- return void 0;
2114
- }
2115
- const provider = window.ethereum;
2116
- if (provider.info?.rdns) {
2117
- return provider.info.rdns;
2118
- }
2119
- if (provider.isMetaMask) return "io.metamask";
2120
- if (provider.isCoinbaseWallet) return "com.coinbase.wallet";
2121
- if (provider.isRabby) return "io.rabby";
2122
- if (provider.isZerion) return "io.zerion";
2123
- if (provider.isBraveWallet) return "com.brave.wallet";
2124
- return "unknown";
1825
+ const [providers, setProviders] = React10.useState([]);
1826
+ const [isMobileDevice] = React10.useState(isMobile());
1827
+ const [mobileSessionUrl, setMobileSessionUrl] = React10.useState(null);
1828
+ const pollingRef = React10.useRef(null);
1829
+ const hasEthereumProvider = () => {
1830
+ return typeof window !== "undefined" && !!window.ethereum;
2125
1831
  };
2126
1832
  React10.useEffect(() => {
2127
- const initWallet = async () => {
2128
- const walletAvailable = await waitForEthereum();
1833
+ return () => {
1834
+ if (pollingRef.current) {
1835
+ clearInterval(pollingRef.current);
1836
+ }
1837
+ };
1838
+ }, []);
1839
+ React10.useEffect(() => {
1840
+ if (typeof window === "undefined") return;
1841
+ const handleAnnounceProvider = (event) => {
1842
+ const detail = event.detail;
1843
+ setProviders((prev) => {
1844
+ if (prev.some((p) => p.info.uuid === detail.info.uuid)) {
1845
+ return prev;
1846
+ }
1847
+ return [...prev, detail];
1848
+ });
1849
+ setHasWallet(true);
1850
+ };
1851
+ window.addEventListener("eip6963:announceProvider", handleAnnounceProvider);
1852
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
1853
+ const checkWallet = async () => {
1854
+ const walletAvailable = typeof window !== "undefined" && !!window.ethereum;
2129
1855
  setHasWallet(walletAvailable);
2130
- if (walletAvailable && window.ethereum) {
1856
+ if (walletAvailable) {
2131
1857
  try {
2132
1858
  const accounts = await window.ethereum.request({
2133
1859
  method: "eth_accounts"
@@ -2135,26 +1861,79 @@ function SiweLoginScreen({
2135
1861
  if (accounts.length > 0) {
2136
1862
  setAccount(accounts[0]);
2137
1863
  setStep("sign");
2138
- setWalletConnector(detectWalletConnector());
2139
1864
  }
2140
1865
  } catch {
2141
1866
  }
2142
1867
  }
2143
1868
  };
2144
- initWallet();
1869
+ checkWallet();
1870
+ return () => {
1871
+ window.removeEventListener(
1872
+ "eip6963:announceProvider",
1873
+ handleAnnounceProvider
1874
+ );
1875
+ };
2145
1876
  }, []);
2146
- const handleConnectWallet = async () => {
1877
+ const getProvider = () => {
1878
+ if (typeof window !== "undefined" && window.ethereum) {
1879
+ return window.ethereum;
1880
+ }
1881
+ if (providers.length > 0) {
1882
+ return providers[0].provider;
1883
+ }
1884
+ return null;
1885
+ };
1886
+ const startMobileSession = React10.useCallback(async () => {
1887
+ setIsLoading(true);
1888
+ setError(null);
1889
+ try {
1890
+ const session = await createSiweSession();
1891
+ const url = getSiweSignUrl(session.id);
1892
+ setMobileSessionUrl(url);
1893
+ setStep("mobile-waiting");
1894
+ pollingRef.current = setInterval(async () => {
1895
+ try {
1896
+ const result = await checkSiweSession(session.id);
1897
+ if (result.status === "completed" && result.user) {
1898
+ if (pollingRef.current) {
1899
+ clearInterval(pollingRef.current);
1900
+ pollingRef.current = null;
1901
+ }
1902
+ onSuccess({
1903
+ userId: result.user.id,
1904
+ isNewUser: result.isNewUser || false,
1905
+ keyStorageType: result.user.keyStorageType ?? null,
1906
+ signerType: result.user.signerType ?? null
1907
+ });
1908
+ } else if (result.status === "expired") {
1909
+ if (pollingRef.current) {
1910
+ clearInterval(pollingRef.current);
1911
+ pollingRef.current = null;
1912
+ }
1913
+ setError(t("siwe.sessionExpired"));
1914
+ setStep("connect");
1915
+ setMobileSessionUrl(null);
1916
+ }
1917
+ } catch {
1918
+ }
1919
+ }, 3e3);
1920
+ } catch (err) {
1921
+ setError(err instanceof Error ? err.message : "Failed to create session");
1922
+ onError(err instanceof Error ? err : new Error("Failed to create session"));
1923
+ } finally {
1924
+ setIsLoading(false);
1925
+ }
1926
+ }, [createSiweSession, getSiweSignUrl, checkSiweSession, onSuccess, onError, t]);
1927
+ const handleConnectWallet = React10.useCallback(async () => {
2147
1928
  setError(null);
2148
1929
  setIsLoading(true);
2149
1930
  try {
2150
- const walletAvailable = await waitForEthereum(3e3, 100);
2151
- if (!walletAvailable || !window.ethereum) {
2152
- throw new Error(
2153
- "No Ethereum wallet found. Please install MetaMask or another wallet."
2154
- );
1931
+ const provider = getProvider();
1932
+ if (!provider) {
1933
+ throw new Error(t("siwe.noWalletFound"));
2155
1934
  }
2156
1935
  setHasWallet(true);
2157
- const accounts = await window.ethereum.request({
1936
+ const accounts = await provider.request({
2158
1937
  method: "eth_requestAccounts"
2159
1938
  });
2160
1939
  if (accounts.length === 0) {
@@ -2162,7 +1941,6 @@ function SiweLoginScreen({
2162
1941
  }
2163
1942
  setAccount(accounts[0]);
2164
1943
  setStep("sign");
2165
- setWalletConnector(detectWalletConnector());
2166
1944
  } catch (err) {
2167
1945
  const errorMessage = err instanceof Error ? err.message : "Failed to connect wallet";
2168
1946
  setError(errorMessage);
@@ -2170,40 +1948,13 @@ function SiweLoginScreen({
2170
1948
  } finally {
2171
1949
  setIsLoading(false);
2172
1950
  }
2173
- };
2174
- const handleSign = async () => {
1951
+ }, [t, onError]);
1952
+ const handleSign = React10.useCallback(async () => {
2175
1953
  if (!account) return;
2176
1954
  setError(null);
2177
1955
  setIsLoading(true);
2178
1956
  try {
2179
- const chainIdHex = await window.ethereum.request({
2180
- method: "eth_chainId"
2181
- });
2182
- const chainId = parseInt(chainIdHex, 16);
2183
- const nonce = await requestSiweNonce();
2184
- const domain = typeof window !== "undefined" ? window.location.host : "localhost";
2185
- const origin = typeof window !== "undefined" ? window.location.origin : "http://localhost";
2186
- const statement = "Sign in with Ethereum to continue";
2187
- const issuedAt = (/* @__PURE__ */ new Date()).toISOString();
2188
- const checksumAddress = toChecksumAddress(account);
2189
- const message = `${domain} wants you to sign in with your Ethereum account:
2190
- ${checksumAddress}
2191
-
2192
- ${statement}
2193
-
2194
- URI: ${origin}
2195
- Version: 1
2196
- Chain ID: ${chainId}
2197
- Nonce: ${nonce}
2198
- Issued At: ${issuedAt}`;
2199
- const signature = await window.ethereum.request({
2200
- method: "personal_sign",
2201
- params: [message, account]
2202
- });
2203
- const result = await verifySiweSignature(message, signature, {
2204
- walletConnector,
2205
- chainId
2206
- });
1957
+ const result = await signWithWallet(account);
2207
1958
  onSuccess({
2208
1959
  userId: result.userId,
2209
1960
  isNewUser: result.isNewUser,
@@ -2217,7 +1968,13 @@ Issued At: ${issuedAt}`;
2217
1968
  } finally {
2218
1969
  setIsLoading(false);
2219
1970
  }
2220
- };
1971
+ }, [account, signWithWallet, onSuccess, onError]);
1972
+ const copyUrlToClipboard = React10.useCallback(() => {
1973
+ if (mobileSessionUrl) {
1974
+ navigator.clipboard.writeText(mobileSessionUrl);
1975
+ alert(t("siwe.urlCopied"));
1976
+ }
1977
+ }, [mobileSessionUrl, t]);
2221
1978
  const content = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:max-w-md volr:mx-auto", children: [
2222
1979
  /* @__PURE__ */ jsxRuntime.jsxs(
2223
1980
  Button,
@@ -2233,7 +1990,7 @@ Issued At: ${issuedAt}`;
2233
1990
  }
2234
1991
  ),
2235
1992
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-2xl volr:font-semibold volr:mb-5", children: t("login.wallet.title") }),
2236
- account && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-3 volr:rounded-lg volr:mb-6 volr:flex volr:items-center volr:justify-between volr-bg-secondary", children: [
1993
+ account && step !== "mobile-waiting" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-3 volr:rounded-lg volr:mb-6 volr:flex volr:items-center volr:justify-between volr-bg-secondary", children: [
2237
1994
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2238
1995
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:text-xs volr:mb-1 volr-text-secondary", children: t("login.wallet.connected") }),
2239
1996
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-sm volr:font-medium volr:font-mono", children: [
@@ -2245,7 +2002,60 @@ Issued At: ${issuedAt}`;
2245
2002
  /* @__PURE__ */ jsxRuntime.jsx(CopyButton, { text: account })
2246
2003
  ] }),
2247
2004
  error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:mb-4 volr:p-3 volr:border volr:rounded-lg volr:text-sm volr-error", children: error }),
2248
- step === "connect" ? /* @__PURE__ */ jsxRuntime.jsx(
2005
+ hasWallet === false && !error && !isMobileDevice && step === "connect" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:mb-4 volr:p-3 volr:border volr:rounded-lg volr:text-sm volr-text-secondary", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: t("siwe.noWalletFound") }) }),
2006
+ step === "mobile-waiting" && mobileSessionUrl && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:space-y-4", children: [
2007
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-4 volr:border volr:rounded-lg volr:text-sm volr-bg-secondary", children: [
2008
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:font-medium volr:mb-3", children: t("siwe.mobileGuide") }),
2009
+ /* @__PURE__ */ jsxRuntime.jsxs("ol", { className: "volr:list-decimal volr:list-inside volr:space-y-1 volr:text-xs volr-text-secondary", children: [
2010
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("siwe.mobileStep1") }),
2011
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("siwe.mobileStep2") }),
2012
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("siwe.mobileStep3") })
2013
+ ] })
2014
+ ] }),
2015
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:p-3 volr:border volr:rounded-lg volr:bg-slate-50", children: [
2016
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xs volr:text-muted-foreground volr:mb-1", children: "Sign URL:" }),
2017
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-xs volr:font-mono volr:break-all volr:text-slate-600", children: mobileSessionUrl })
2018
+ ] }),
2019
+ /* @__PURE__ */ jsxRuntime.jsx(
2020
+ Button,
2021
+ {
2022
+ variant: "primary",
2023
+ fullWidth: true,
2024
+ onClick: copyUrlToClipboard,
2025
+ children: t("siwe.copyUrl")
2026
+ }
2027
+ ),
2028
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "volr:text-center volr:py-4", children: [
2029
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "volr:animate-spin volr:w-6 volr:h-6 volr:border-2 volr:border-slate-300 volr:border-t-slate-600 volr:rounded-full volr:mx-auto" }),
2030
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "volr:text-sm volr:text-muted-foreground volr:mt-3", children: t("siwe.waitingForSignature") })
2031
+ ] }),
2032
+ /* @__PURE__ */ jsxRuntime.jsx(
2033
+ "button",
2034
+ {
2035
+ onClick: () => {
2036
+ if (pollingRef.current) {
2037
+ clearInterval(pollingRef.current);
2038
+ pollingRef.current = null;
2039
+ }
2040
+ setStep("connect");
2041
+ setMobileSessionUrl(null);
2042
+ },
2043
+ className: "volr:w-full volr:text-sm volr:text-slate-500 volr:underline",
2044
+ children: t("common.cancel")
2045
+ }
2046
+ )
2047
+ ] }),
2048
+ isMobileDevice && !hasEthereumProvider() && step === "connect" && /* @__PURE__ */ jsxRuntime.jsx(
2049
+ Button,
2050
+ {
2051
+ variant: "primary",
2052
+ fullWidth: true,
2053
+ onClick: startMobileSession,
2054
+ disabled: isLoading,
2055
+ children: isLoading ? t("common.loading") : t("siwe.startMobileSession")
2056
+ }
2057
+ ),
2058
+ !isMobileDevice && step === "connect" && /* @__PURE__ */ jsxRuntime.jsx(
2249
2059
  Button,
2250
2060
  {
2251
2061
  variant: "primary",
@@ -2254,7 +2064,18 @@ Issued At: ${issuedAt}`;
2254
2064
  disabled: isLoading || hasWallet === null,
2255
2065
  children: isLoading || hasWallet === null ? t("common.loading") : t("login.wallet.connect")
2256
2066
  }
2257
- ) : /* @__PURE__ */ jsxRuntime.jsx(
2067
+ ),
2068
+ isMobileDevice && hasEthereumProvider() && step === "connect" && /* @__PURE__ */ jsxRuntime.jsx(
2069
+ Button,
2070
+ {
2071
+ variant: "primary",
2072
+ fullWidth: true,
2073
+ onClick: handleConnectWallet,
2074
+ disabled: isLoading,
2075
+ children: isLoading ? t("common.loading") : t("login.wallet.connect")
2076
+ }
2077
+ ),
2078
+ step === "sign" && /* @__PURE__ */ jsxRuntime.jsx(
2258
2079
  Button,
2259
2080
  {
2260
2081
  variant: "primary",
@@ -2287,9 +2108,9 @@ function SigninModal({ isOpen, onClose, onError }) {
2287
2108
  const [currentScreen, setCurrentScreen] = React10.useState("method-select");
2288
2109
  const [email, setEmail] = React10.useState("");
2289
2110
  const hasPasskey = user?.keyStorageType === "passkey";
2290
- const isMobile = useMediaQuery("(max-width: 500px)");
2111
+ const isMobile2 = useMediaQuery("(max-width: 500px)");
2291
2112
  const isWideViewport = useMediaQuery("(min-width: 864px)");
2292
- const shouldUseWideLayout = !isMobile && isWideViewport && Boolean(branding) && currentScreen === "method-select";
2113
+ const shouldUseWideLayout = !isMobile2 && isWideViewport && Boolean(branding) && currentScreen === "method-select";
2293
2114
  React10.useEffect(() => {
2294
2115
  if (!isOpen) {
2295
2116
  setCurrentScreen("method-select");
@@ -2427,7 +2248,7 @@ function SigninModal({ isOpen, onClose, onError }) {
2427
2248
  e.preventDefault();
2428
2249
  }
2429
2250
  },
2430
- contentClassName: isMobile ? "volr:max-w-none" : shouldUseWideLayout ? "volr:max-w-4xl volr:w-full volr:p-3" : void 0,
2251
+ contentClassName: isMobile2 ? "volr:max-w-none" : shouldUseWideLayout ? "volr:max-w-4xl volr:w-full volr:p-3" : void 0,
2431
2252
  children: [
2432
2253
  renderCurrentScreen(),
2433
2254
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
@@ -3663,11 +3484,6 @@ async function getCurrentChainId() {
3663
3484
  });
3664
3485
  return parseInt(chainIdHex, 16);
3665
3486
  }
3666
- /*! Bundled license information:
3667
-
3668
- @noble/hashes/utils.js:
3669
- (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
3670
- */
3671
3487
 
3672
3488
  Object.defineProperty(exports, "VolrProvider", {
3673
3489
  enumerable: true,