@gerritsen/supra-connect 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -11
- package/dist/index.d.ts +3 -19
- package/dist/index.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -5,14 +5,14 @@ A custom-built React wallet connector for the Supra L1 blockchain. Native suppor
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install
|
|
8
|
+
npm install @gerritsen/supra-connect
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Or with your favorite package manager:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
pnpm install
|
|
15
|
-
yarn add
|
|
14
|
+
pnpm install @gerritsen/supra-connect
|
|
15
|
+
yarn add @gerritsen/supra-connect
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
The package is a React library and requires React 18+ as a peer dependency. If you're already using React in your project, you're all set!
|
|
@@ -255,9 +255,101 @@ export function Header() {
|
|
|
255
255
|
|
|
256
256
|
**What it does:**
|
|
257
257
|
- Shows "Connect Wallet" button if not connected
|
|
258
|
-
- Shows wallet address
|
|
258
|
+
- Shows connected wallet address if connected
|
|
259
259
|
- Auto-detects Starkey and Ribbit wallets
|
|
260
260
|
|
|
261
|
+
**Props:**
|
|
262
|
+
|
|
263
|
+
| Prop | Type | Default | Description |
|
|
264
|
+
|------|------|---------|-------------|
|
|
265
|
+
| `dappMetadata` | `DappMetadata` | - | Wallet metadata (name, description, url, icon) |
|
|
266
|
+
| `width` | `string` | `"100%"` | Button width (accepts %, px, rem, etc.) |
|
|
267
|
+
|
|
268
|
+
**Examples:**
|
|
269
|
+
|
|
270
|
+
```tsx
|
|
271
|
+
// Full width (default)
|
|
272
|
+
<SupraConnectButton
|
|
273
|
+
dappMetadata={{ name: 'My dApp', description: 'Demo' }}
|
|
274
|
+
/>
|
|
275
|
+
|
|
276
|
+
// Custom width with pixels
|
|
277
|
+
<SupraConnectButton
|
|
278
|
+
width="300px"
|
|
279
|
+
dappMetadata={{ name: 'My dApp', description: 'Demo' }}
|
|
280
|
+
/>
|
|
281
|
+
|
|
282
|
+
// Custom width with percentage
|
|
283
|
+
<SupraConnectButton
|
|
284
|
+
width="50%"
|
|
285
|
+
dappMetadata={{ name: 'My dApp', description: 'Demo' }}
|
|
286
|
+
/>
|
|
287
|
+
|
|
288
|
+
// Custom width with rem units
|
|
289
|
+
<SupraConnectButton
|
|
290
|
+
width="20rem"
|
|
291
|
+
dappMetadata={{ name: 'My dApp', description: 'Demo' }}
|
|
292
|
+
/>
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Troubleshooting
|
|
296
|
+
|
|
297
|
+
### Transaction fails silently
|
|
298
|
+
|
|
299
|
+
**Symptom:** `sendTransaction()` completes but nothing happens, or you get `{ success: false }` with no clear error.
|
|
300
|
+
|
|
301
|
+
**Common cause:** Arguments are not properly serialized. The package expects arguments to be **Uint8Array bytes**, not raw strings or numbers.
|
|
302
|
+
|
|
303
|
+
**❌ WRONG:**
|
|
304
|
+
```tsx
|
|
305
|
+
const result = await sendTransaction({
|
|
306
|
+
payload: {
|
|
307
|
+
moduleAddress: "0x1",
|
|
308
|
+
moduleName: "pbo_delegation_pool",
|
|
309
|
+
functionName: "add_stake",
|
|
310
|
+
arguments: [
|
|
311
|
+
"0x72b93dccbda04c9caf1b8726d96cb28edee5feceb85e32db318dd1eea4320331", // Raw string!
|
|
312
|
+
"734356207542" // Raw number string!
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**✅ CORRECT:**
|
|
319
|
+
```tsx
|
|
320
|
+
import { BCS, HexString } from 'supra-l1-sdk';
|
|
321
|
+
|
|
322
|
+
const result = await sendTransaction({
|
|
323
|
+
payload: {
|
|
324
|
+
moduleAddress: "0x1",
|
|
325
|
+
moduleName: "pbo_delegation_pool",
|
|
326
|
+
functionName: "add_stake",
|
|
327
|
+
typeArguments: [],
|
|
328
|
+
arguments: [
|
|
329
|
+
new HexString("0x72b93dccbda04c9caf1b8726d96cb28edee5feceb85e32db318dd1eea4320331").toUint8Array(),
|
|
330
|
+
BCS.bcsSerializeUint64(BigInt("734356207542"))
|
|
331
|
+
]
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
// Always check the response!
|
|
336
|
+
if (!result.success) {
|
|
337
|
+
console.error("Transaction failed:", result.reason);
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Solution:** Always serialize arguments using BCS before sending.
|
|
342
|
+
|
|
343
|
+
### Getting the actual error message
|
|
344
|
+
|
|
345
|
+
If a transaction fails, always log the full response:
|
|
346
|
+
|
|
347
|
+
```tsx
|
|
348
|
+
const result = await sendTransaction(request);
|
|
349
|
+
console.log("Transaction result:", JSON.stringify(result, null, 2));
|
|
350
|
+
// Check result.error and result.reason for details
|
|
351
|
+
```
|
|
352
|
+
|
|
261
353
|
## FAQ
|
|
262
354
|
|
|
263
355
|
**Q: Do I need both wallets installed?**
|
|
@@ -267,26 +359,51 @@ No! The library auto-detects which wallets are available. It works with just Sta
|
|
|
267
359
|
Currently Supra L1 mainnet. The library handles all network setup automatically.
|
|
268
360
|
|
|
269
361
|
**Q: How do I serialize arguments for custom functions?**
|
|
270
|
-
Use the `supra-l1-sdk` utilities
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
362
|
+
Use the `supra-l1-sdk` utilities. **Always serialize arguments - never pass raw strings!**
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
import { BCS, HexString } from 'supra-l1-sdk';
|
|
366
|
+
|
|
367
|
+
// For addresses/hex values
|
|
368
|
+
new HexString("0x1234...").toUint8Array()
|
|
369
|
+
|
|
370
|
+
// For strings
|
|
371
|
+
BCS.bcsSerializeStr("hello")
|
|
372
|
+
|
|
373
|
+
// For u64 numbers
|
|
374
|
+
BCS.bcsSerializeUint64(BigInt(1000000000))
|
|
375
|
+
|
|
376
|
+
// For u8 numbers
|
|
377
|
+
BCS.bcsSerializeU8(255)
|
|
378
|
+
|
|
379
|
+
// For booleans
|
|
380
|
+
BCS.bcsSerializeBool(true)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
See the [supra-l1-sdk documentation](https://github.com/supra-labs/supra-l1-sdk) for more types.
|
|
274
384
|
|
|
275
385
|
**Q: Can I use this with Next.js?**
|
|
276
|
-
Yes! The library is SSR-safe. It checks `typeof window` before accessing wallet APIs.
|
|
386
|
+
Yes! The library is SSR-safe. It checks `typeof window` before accessing wallet APIs. Wrap your provider in a `'use client'` component for App Router.
|
|
277
387
|
|
|
278
388
|
**Q: How do I handle errors?**
|
|
279
389
|
All errors are returned in the result object, never thrown:
|
|
280
390
|
```tsx
|
|
281
391
|
const result = await sendTransaction(...);
|
|
282
392
|
if (!result.success) {
|
|
283
|
-
console.error(
|
|
393
|
+
console.error("Error:", result.error);
|
|
394
|
+
console.error("Reason:", result.reason);
|
|
284
395
|
}
|
|
285
396
|
```
|
|
286
397
|
|
|
398
|
+
**Q: My transaction is failing but I don't see an error message**
|
|
399
|
+
Make sure you're:
|
|
400
|
+
1. **Serializing all arguments** with BCS (see above)
|
|
401
|
+
2. **Checking the response** - log `result.error` and `result.reason`
|
|
402
|
+
3. **Using the correct module path** - address and name must match the Move contract
|
|
403
|
+
|
|
287
404
|
## License
|
|
288
405
|
|
|
289
|
-
MIT ©
|
|
406
|
+
MIT © 2025 Martin Gerritsen
|
|
290
407
|
|
|
291
408
|
You can use, modify, and redistribute this library freely. Just include the copyright notice!
|
|
292
409
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
3
|
|
|
4
4
|
interface StarkeyWallet {
|
|
5
5
|
walletAddress: string;
|
|
@@ -247,7 +247,6 @@ interface SupraConnectProviderProps {
|
|
|
247
247
|
rpcUrl?: string;
|
|
248
248
|
}
|
|
249
249
|
declare function SupraConnectProvider({ children, rpcUrl }: SupraConnectProviderProps): react_jsx_runtime.JSX.Element;
|
|
250
|
-
declare function useSupraConnectStore(): ConnectionStore;
|
|
251
250
|
|
|
252
251
|
interface SupraConnectHookReturn {
|
|
253
252
|
connectedWallet: (WalletInfo & {
|
|
@@ -280,23 +279,8 @@ declare function useSupraConnect(): SupraConnectHookReturn;
|
|
|
280
279
|
|
|
281
280
|
interface SupraConnectButtonProps extends SupraConnectConfig {
|
|
282
281
|
metadata?: DappMetadata;
|
|
282
|
+
width?: string;
|
|
283
283
|
}
|
|
284
284
|
declare const SupraConnectButton: (props?: SupraConnectButtonProps) => react_jsx_runtime.JSX.Element;
|
|
285
285
|
|
|
286
|
-
|
|
287
|
-
children: ReactNode;
|
|
288
|
-
fallback?: ReactNode;
|
|
289
|
-
onError?: (error: Error, errorInfo: ErrorInfo) => void;
|
|
290
|
-
}
|
|
291
|
-
interface State {
|
|
292
|
-
hasError: boolean;
|
|
293
|
-
error?: Error;
|
|
294
|
-
}
|
|
295
|
-
declare class SupraConnectErrorBoundary extends Component<Props, State> {
|
|
296
|
-
state: State;
|
|
297
|
-
static getDerivedStateFromError(error: Error): State;
|
|
298
|
-
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
299
|
-
render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
export { type ConnectedWallet, ConnectionStore, DEFAULT_RPC_URL, type DappMetadata, type GasEstimation, type RibbitAccount, type RibbitBalanceRequest, type RibbitConnectResponse, type RibbitDappMetadata, type RibbitMessageRequest, type RibbitTransactionRequest, type RibbitWallet, RibbitWalletUtils, type SignMessageResult, type StarkeyAccountInfo, type StarkeyDappMetadata, type StarkeyWallet, StarkeyWalletUtils, SupraConnectButton, type SupraConnectConfig, SupraConnectErrorBoundary, type SupraConnectHookReturn, SupraConnectProvider, type SupraTransactionOptions, type SupraTransactionPayload, type SupraTransactionRequest, type SupraTransferRequest, type TransactionResult, type WalletInfo, type WalletType, useSupraConnect, useSupraConnectStore };
|
|
286
|
+
export { type ConnectedWallet, ConnectionStore, DEFAULT_RPC_URL, type DappMetadata, type GasEstimation, type RibbitAccount, type RibbitBalanceRequest, type RibbitConnectResponse, type RibbitDappMetadata, type RibbitMessageRequest, type RibbitTransactionRequest, type RibbitWallet, RibbitWalletUtils, type SignMessageResult, type StarkeyAccountInfo, type StarkeyDappMetadata, type StarkeyWallet, StarkeyWalletUtils, SupraConnectButton, type SupraConnectConfig, type SupraConnectHookReturn, SupraConnectProvider, type SupraTransactionOptions, type SupraTransactionPayload, type SupraTransactionRequest, type SupraTransferRequest, type TransactionResult, type WalletInfo, type WalletType, useSupraConnect };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import t,{createContext as e,useContext as r,useState as n,useEffect as a,useCallback as o,Component as i}from"react";import*as s from"@noble/ed25519";import{TxnBuilderTypes as l,HexString as c,BCS as d}from"supra-l1-sdk";import{jsx as u,jsxs as p}from"react/jsx-runtime";import{createPortal as g}from"react-dom";function h(t){return t instanceof Error?t.message:"Unknown error"}function b(t){if(t instanceof Error){const e=t.message.toLowerCase();return e.includes("user rejected")||e.includes("user denied")||e.includes("user cancelled")||e.includes("cancelled by user")}return!1}!function(t,{insertAt:e}={}){if("undefined"==typeof document)return;const r=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===e&&r.firstChild?r.insertBefore(n,r.firstChild):r.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}("@layer reset, base, tokens, recipes, utilities;\n");var f=class{static isInstalled(){return"undefined"!=typeof window&&!!window.starkey?.supra}static async connect(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const e={chainId:t?.chainId||8},r=await window.starkey.supra.connect(e);if(!r||0===r.length)throw new Error("No accounts found or connection rejected");return{walletAddress:r[0],connected:!0}}catch(t){throw new Error(`Failed to connect to Starkey wallet: ${t instanceof Error?t.message:"Unknown error"}`)}}static async disconnect(){if(this.isInstalled())try{await window.starkey.supra.disconnect()}catch(t){}}static async getAccounts(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.account()}catch(t){throw new Error(`Failed to get accounts: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getNetwork(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");return window.starkey.supra.network()}static async getChainId(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.getChainId()}catch(t){throw new Error(`Failed to get chain ID: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getAccountInfo(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{if("function"==typeof window.starkey.supra.getAccountInfo){const t=await window.starkey.supra.getAccountInfo();if(t&&Array.isArray(t))return t}return(await window.starkey.supra.account()).map(t=>({address:t,publicKey:t}))}catch(t){throw new Error(`Failed to get account info: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getPublicKey(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{if("function"==typeof window.starkey.supra.getPublicKey)return await window.starkey.supra.getPublicKey(t);const e=await this.getAccountInfo(),r=t||e[0]?.address,n=e.find(t=>t.address===r);if(n?.publicKey&&n.publicKey!==n.address)return n.publicKey;throw new Error("Public key not available from wallet - StarKey wallet needs to provide actual public keys for signature verification")}catch(t){throw new Error(`Failed to get public key: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getBalance(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.balance()}catch(t){throw new Error(`Failed to get balance: ${t instanceof Error?t.message:"Unknown error"}`)}}static async signMessage(t,e=!1){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const n=e?t:"0x"+Array.from((new TextEncoder).encode(t)).map(t=>t.toString(16).padStart(2,"0")).join(""),a=await window.starkey.supra.signMessage({message:n});if(this.isErrorResponse(a)){if(r=a.error,4001===r?.code||r?.message&&(r.message.toLowerCase().includes("reject")||r.message.toLowerCase().includes("cancel")||r.message.toLowerCase().includes("denied")))return null;throw new Error(`Signing failed: ${a.error.message}`)}return a.signature}catch(r){if(b(r))return null;throw new Error(`Failed to sign message: ${h(r)}`)}var r}static async verifySignature(t,e,r,n=!1){try{if(!e.startsWith("0x")||130!==e.length)return!1;if(!r)return!1;const a=new Uint8Array(e.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]);if(64!==a.length)return!1;const o=n?new Uint8Array(t.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):(new TextEncoder).encode(t);let i;if(!r.startsWith("0x"))throw new Error("Cannot verify signature: actual public key required, got address");if(i=new Uint8Array(r.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]),32!==i.length)return!1;return await s.verifyAsync(a,o,i)}catch(t){return!1}}static async getPublicKeyFromAddress(t){try{return await this.getPublicKey(t)}catch(e){throw new Error(`Cannot get public key for address ${t}: ${e instanceof Error?e.message:"Unknown error"}`)}}static async sendTransaction(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const{payload:e,options:r={}}=t,n={txExpiryTime:r.txExpiryTime||Math.ceil(Date.now()/1e3)+30,...r.maxGasAmount&&{maxGasAmount:r.maxGasAmount},...r.gasUnitPrice&&{gasUnitPrice:r.gasUnitPrice}},a=await this.getAccounts();if(!a||0===a.length)throw new Error("No connected accounts found");const o=[a[0],0,e.moduleAddress,e.moduleName,e.functionName,e.typeArguments||[],e.arguments,n];try{const t=await window.starkey.supra.createRawTransactionData(o);if(!t)throw new Error("Failed to create raw transaction data");const e={data:t},r=await window.starkey.supra.sendTransaction(e);if(!r)throw new Error("Transaction failed - no hash returned from Supra provider");return{success:!0,txHash:r}}catch(t){}return{success:!1,reason:"All transaction approaches failed",error:"No valid transaction format accepted by wallet"}}catch(t){if(t instanceof Error){const e=t.message.toLowerCase();if(e.includes("user rejected")||e.includes("user denied")||e.includes("user cancelled")||e.includes("cancelled by user"))return{success:!1,reason:"User cancelled transaction"}}return{success:!1,error:t instanceof Error?t.message:"Unknown error",reason:"Transaction failed"}}}static async transfer(t){const{to:e,amount:r,options:n,type:a}=t,o={payload:{moduleAddress:"0000000000000000000000000000000000000000000000000000000000000001",moduleName:"supra_account",functionName:a?"transfer_coins":"transfer",typeArguments:a?[a]:[],arguments:[new c(e).toUint8Array(),d.bcsSerializeUint64(BigInt(r))]},options:n};return this.sendTransaction(o)}static isErrorResponse(t){return t&&"string"==typeof t.jsonrpc&&"object"==typeof t.error}},w="supra",m="CONNECT_REQUEST",y="DISCONNECT_REQUEST",k="SIGN_MESSAGE",S="SEND_TRANSACTION",v="GET_WALLET_BALANCE",x="WALLET_CHANGED",C="NETWORK_CHANGED",_=8,E=class{static isAvailable(){return"undefined"!=typeof window&&!!window.ribbit&&"app"===window.ribbit.type}listen(){}async sendMessage(t,e){if("undefined"==typeof window)throw new Error("SSR mode");if(!window.ribbit||"app"!==window.ribbit.type)throw new Error("AppTransport: ribbit app not detected");return await window.ribbit.postMessage(t,e)}registerHandler(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}on(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}off(t,e){"undefined"!=typeof window&&window.ribbit?.off?.(t,e)}},A=class{static isAvailable(){return"undefined"!=typeof window&&!!window.ribbit&&"extension"===window.ribbit.type}listen(){}async sendMessage(t,e){if("undefined"==typeof window)throw new Error("SSR mode");if(!window.ribbit||"extension"!==window.ribbit.type)throw new Error("ExtensionTransport: ribbit extension not detected");return await window.ribbit.postMessage(t,e)}registerHandler(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}on(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}off(t,e){"undefined"!=typeof window&&window.ribbit?.off?.(t,e)}};function I(){return"undefined"==typeof window?"":window.location.origin||window.location.hostname}function W(){return`ribbit_connected_wallet::${I()}`}function M(){try{localStorage.removeItem(W()),localStorage.removeItem(`ribbit_accounts::${I()}`)}catch{}}var T=null,B=class{static initializeClient(){if("undefined"==typeof window)return null;if(!window.ribbit?.type)return null;if(!T){if(T={transport:null,wallet:null},"app"===window.ribbit.type)T.transport=new E;else{if("extension"!==window.ribbit.type)throw new Error(`Unknown ribbit type: ${window.ribbit.type}`);T.transport=new A}T.transport.listen();const t=function(){try{const t=localStorage.getItem(W());if(t){const{address:e,expiry:r}=JSON.parse(t);return Date.now()<r?e:(M(),null)}return null}catch{return null}}();t&&(T.wallet={walletAddress:t,connected:!0})}return T}static isInstalled(){return"undefined"!=typeof window&&!!window.ribbit}static getWalletType(){return this.isInstalled()?window.ribbit.type:null}static setDefaultDappMetadata(t){this.defaultDappMetadata={...this.defaultDappMetadata,...t}}static getDefaultDappMetadata(){return{...this.defaultDappMetadata}}static async connect(t){if(!this.isInstalled())throw new Error("Ribbit wallet is not installed");const e={name:t?.name||this.defaultDappMetadata.name,url:t?.url||this.defaultDappMetadata.url,description:t?.description||this.defaultDappMetadata.description,logo:t?.logo||this.defaultDappMetadata.logo},r=this.initializeClient();if(!r||!r.transport)throw new Error("No transport available");const n=await r.transport.sendMessage(m,{dapp:e}),a="data"in n?n.data:n;if(!a?.approved||!("accounts"in a)||!a.accounts?.length)throw new Error(`Connection to wallet failed: ${a?.error||"Unknown error"}`);const o=a.accounts.filter(t=>t.chain===w)[0]?.walletAddress;if(void 0===o)throw new Error("No wallet address found");const i=_;return r.wallet={walletAddress:o,connected:!0,chainId:i,allAccounts:a.accounts},function(t,e,r=10){try{const e=Date.now()+24*r*60*60*1e3,n=W(),a=JSON.stringify({address:t,expiry:e});localStorage.setItem(n,a)}catch(t){}}(o),r.wallet}static async disconnect(){const t=this.initializeClient();t&&(t.wallet=null,M(),t.transport&&await t.transport.sendMessage(y,{}))}static getWalletInfo(){const t=this.initializeClient();return t?.wallet||null}static async getWalletBalance(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");const{chainId:r,resourceType:n,decimals:a}=t;return e.transport.sendMessage(v,{chainId:r,resourceType:n,decimals:a})}static async signMessage(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");try{const r=await e.transport.sendMessage(k,t);return r?.error&&(4001===r.error.code||r.error.message?.toLowerCase().includes("reject")||r.error.message?.toLowerCase().includes("cancel")||r.error.message?.toLowerCase().includes("denied"))?null:r}catch(t){if(b(t))return null;throw t}}static async sendTransaction(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Wallet not connected");try{let r;if("payload"in t){const n=t,a=(n.payload.typeArguments||[]).map(t=>"string"==typeof t?new l.TypeTagParser(t).parseTypeTag():t),o=n.payload.arguments.map(t=>t instanceof Uint8Array?Array.from(t):t),i=l.EntryFunction.natural(`${n.payload.moduleAddress}::${n.payload.moduleName}`,n.payload.functionName,a,o),s=new l.TransactionPayloadEntryFunction(i),u="https://rpc-mainnet.supra.com/rpc/v3";let p=BigInt(0),g={max_gas_price:200,mean_gas_price:100};try{const t=await fetch(`${u}/accounts/${encodeURIComponent(e.wallet.walletAddress)}`);if(t.ok){const e=await t.json();p=BigInt(e.sequence_number||0)}}catch(t){}try{const t=await fetch(`${u}/transactions/estimate_gas_price`);t.ok&&(g=await t.json())}catch(t){}const h=BigInt(Math.floor(Date.now()/1e3)+300),b=new l.RawTransaction(l.AccountAddress.fromHex(new c(e.wallet.walletAddress)),p,s,BigInt(Math.floor(50*g.max_gas_price)),BigInt(g.mean_gas_price),h,new l.ChainId(e.wallet.chainId||_)),f=d.bcsToBytes(b);let w;if("undefined"!=typeof Buffer)w=Buffer.from(f).toString("base64");else{if("undefined"==typeof btoa)throw new Error("Cannot encode to base64: no Buffer or btoa available");w=btoa(String.fromCharCode(...Array.from(f)))}r={rawTxn:w,chainId:e.wallet.chainId||_,meta:{description:`${n.payload.functionName} on ${n.payload.moduleName}`}}}else r=t;const n=await e.transport.sendMessage(S,r);return n?.txHash||n?.transactionHash||n?.hash?{success:!0,txHash:n.txHash||n.transactionHash||n.hash}:n?.error?{success:!1,error:n.error,reason:"Transaction failed"}:"string"==typeof n?{success:!0,txHash:n}:{success:!1,error:"Unknown response format from wallet",reason:"Transaction failed"}}catch(t){return b(t)?{success:!1,reason:"User cancelled transaction"}:{success:!1,error:h(t),reason:"Transaction failed"}}}static async transfer(t){const{to:e,amount:r,options:n}=t,a={payload:{moduleAddress:"0000000000000000000000000000000000000000000000000000000000000001",moduleName:"supra_account",functionName:"transfer",typeArguments:[],arguments:[new c(e).toUint8Array(),d.bcsSerializeUint64(BigInt(r))]},options:n};return this.sendTransaction(a)}static onWalletChanged(t){const e=this.initializeClient();e?.transport?.on?.(x,t)}static onNetworkChanged(t){const e=this.initializeClient();e?.transport?.on?.(C,t)}static offWalletChanged(t){const e=this.initializeClient();e?.transport?.off?.(x,t)}static offNetworkChanged(t){const e=this.initializeClient();e?.transport?.off?.(C,t)}static async getPublicKey(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");try{const r=await e.transport.sendMessage("GET_PUBLIC_KEY",{address:t||e.wallet.walletAddress});if(r?.publicKey)return r.publicKey;throw new Error("Public key not available from wallet")}catch(t){throw new Error(`Failed to get public key: ${t instanceof Error?t.message:"Unknown error"}`)}}static async verifySignature(t,e,r,n=!1){try{if(!e||!e.startsWith("0x")&&e.length<128)return!1;if(!r)return!1;let a;if(a=e.startsWith("0x")?new Uint8Array(e.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):new Uint8Array(e.match(/.{2}/g)?.map(t=>parseInt(t,16))||[]),64!==a.length)return!1;const o=n?new Uint8Array(t.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):(new TextEncoder).encode(t);let i;if(r.startsWith("0x"))i=new Uint8Array(r.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]);else{if(64!==r.length)throw new Error("Invalid public key format");i=new Uint8Array(r.match(/.{2}/g)?.map(t=>parseInt(t,16))||[])}if(32!==i.length)return!1;return await s.verifyAsync(a,o,i)}catch(t){return!1}}static async getPublicKeyFromAddress(t){try{return await this.getPublicKey(t)}catch(e){throw new Error(`Cannot get public key for address ${t}: ${e instanceof Error?e.message:"Unknown error"}`)}}};B.defaultDappMetadata={name:"Supra Connect",url:"undefined"!=typeof window?window.location.origin:"https://supra.com",description:"Connect to Supra blockchain wallets",logo:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwIDJMMTcgNkwxNyAxNEwxMCAxOEwzIDE0TDMgNkwxMCAyWiIgZmlsbD0iI0REMTQzOCIvPgo8L3N2Zz4K"};var D="https://rpc-mainnet.supra.com",R=class{constructor(t=D){this.state={connectedWallet:null,allAccounts:[],isConnecting:!1,connectingWallet:null,connectionError:null,availableWallets:[]},this.listeners=new Set,this.globalMetadata={},this.storeId=Math.random().toString(36).substring(2,9),this.rpcUrl=t,"undefined"!=typeof window&&(this.updateAvailableWallets(),this.setupPeriodicWalletDetection(),setTimeout(()=>{this.checkExistingConnections().catch(()=>{})},100))}updateAvailableWallets(){const t=[];f.isInstalled()&&t.push("starkey"),B.isInstalled()&&t.push("ribbit");const e=this.state.availableWallets;t.length===e.length&&t.every(t=>e.includes(t))||this.setState({availableWallets:t})}setupPeriodicWalletDetection(){const t=setInterval(()=>{this.updateAvailableWallets()},1e3);setTimeout(()=>{clearInterval(t)},3e4),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>this.updateAvailableWallets(),500)}),window.addEventListener("load",()=>{setTimeout(()=>this.updateAvailableWallets(),1e3)})}async checkExistingConnections(){const t=B.getWalletInfo();if(t)this.setState({connectedWallet:{...t,type:"ribbit"},allAccounts:t.allAccounts||[{walletAddress:t.walletAddress,chain:"supra"}]});else if(f.isInstalled())try{const t=await f.getAccounts();if(t&&t.length>0)return void this.setState({connectedWallet:{walletAddress:t[0],connected:!0,type:"starkey"},allAccounts:[{walletAddress:t[0],chain:"supra"}]})}catch(t){}}setState(t){this.state={...this.state,...t},this.listeners.forEach(t=>t(this.state))}getState(){return{...this.state}}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}async connectStarkey(t){if(!this.state.connectingWallet){this.setState({connectingWallet:"starkey",connectionError:null});try{const e=this.mergeMetadata(t?.dappMetadata),r=Object.keys(e).length>0?{name:e.name||"Supra Connect",url:e.url||("undefined"!=typeof window?window.location.origin:"https://supra.com"),chainId:e.chainId}:void 0,n=await f.connect(r);this.setState({connectedWallet:{...n,type:"starkey"},allAccounts:[{walletAddress:n.walletAddress,chain:"supra"}],connectingWallet:null,isConnecting:!1,connectionError:null})}catch(t){throw this.setState({connectionError:t instanceof Error?t.message:"Failed to connect to Starkey wallet",connectingWallet:null,isConnecting:!1}),t}}}async connectRibbit(t){if(!this.state.connectingWallet){this.setState({connectingWallet:"ribbit",connectionError:null});try{const e=this.mergeMetadata(t?.dappMetadata),r=Object.keys(e).length>0?{name:e.name,url:e.url,description:e.description,logo:e.logo}:void 0,n=await B.connect(r);this.setState({connectedWallet:{...n,type:"ribbit"},allAccounts:n.allAccounts||[{walletAddress:n.walletAddress,chain:"supra"}],connectingWallet:null,isConnecting:!1,connectionError:null})}catch(t){throw this.setState({connectionError:t instanceof Error?t.message:"Failed to connect to Ribbit wallet",connectingWallet:null,isConnecting:!1}),t}}}async disconnect(){if(this.state.connectedWallet)try{"starkey"===this.state.connectedWallet.type?await f.disconnect():"ribbit"===this.state.connectedWallet.type&&await B.disconnect(),this.setState({connectedWallet:null,allAccounts:[],connectionError:null})}catch(t){this.setState({connectedWallet:null,allAccounts:[],connectionError:null})}}getPublicAddress(t="supra"){if(!this.state.connectedWallet)return null;if(this.state.allAccounts.length>0){const e=this.state.allAccounts.find(e=>e.chain===t);return e?.walletAddress||null}return this.state.connectedWallet.walletAddress||null}getPublicAddresses(){return this.state.allAccounts.length>0?this.state.allAccounts.map(t=>t.walletAddress):this.state.connectedWallet?[this.state.connectedWallet.walletAddress]:[]}async signMessage(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{let e=null;if("starkey"===this.state.connectedWallet.type)e=await f.signMessage(t);else{if("ribbit"!==this.state.connectedWallet.type)return{success:!1,reason:"Unsupported wallet type"};{const r=await B.signMessage({message:t});e=null===r?null:r.signature||r}}if(null===e)return{success:!1,reason:"User cancelled"};try{return await this.verifySignature(t,e)?{success:!0,signature:e}:{success:!1,reason:"Signature verification failed"}}catch(t){return{success:!0,signature:e,reason:"Signature obtained but verification failed"}}}catch(t){return{success:!1,reason:t instanceof Error?t.message:"Failed to sign message"}}}clearError(){this.setState({connectionError:null})}async refreshConnections(){await this.checkExistingConnections()}setDappMetadata(t){this.globalMetadata={...this.globalMetadata,...t}}getDappMetadata(){return{...this.globalMetadata}}clearDappMetadata(){this.globalMetadata={}}refreshWalletDetection(){this.updateAvailableWallets()}getRpcUrl(){return this.rpcUrl}mergeMetadata(t){return{...this.globalMetadata,...t}}async verifySignature(t,e){if(!this.state.connectedWallet)throw new Error("No wallet connected");try{if("starkey"===this.state.connectedWallet.type){const r=await f.getPublicKeyFromAddress(this.state.connectedWallet.walletAddress);return await f.verifySignature(t,e,r)}if("ribbit"===this.state.connectedWallet.type){const r=await B.getPublicKeyFromAddress(this.state.connectedWallet.walletAddress);return await B.verifySignature(t,e,r)}throw new Error("Unsupported wallet type")}catch(t){throw new Error(t instanceof Error?t.message:"Failed to verify signature")}}async sendTransaction(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{return"starkey"===this.state.connectedWallet.type?await f.sendTransaction(t):"ribbit"===this.state.connectedWallet.type?await B.sendTransaction(t):{success:!1,reason:"Unsupported wallet type"}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Failed to send transaction",reason:"Transaction failed"}}}async transfer(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{return"starkey"===this.state.connectedWallet.type?await f.transfer(t):"ribbit"===this.state.connectedWallet.type?await B.transfer(t):{success:!1,reason:"Unsupported wallet type"}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Failed to send transfer",reason:"Transfer failed"}}}static async estimateGasPrice(t="testnet"){const e="mainnet"===t?"https://rpc-mainnet.supra.com":"https://rpc-testnet.supra.com";try{const t=await fetch(`${e}/rpc/v2/transactions/estimate_gas_price`);if(t.ok)return await t.json();const r=await fetch(`${e}/rpc/v1/transactions/estimate_gas_price`);if(r.ok){const t=await r.json();return{mean_gas_price:t.gas_estimate||t.mean_gas_price||100,max_gas_price:t.max_gas_price||2*(t.gas_estimate||100),median_gas_price:t.median_gas_price||t.gas_estimate||100}}throw new Error("Both gas estimation endpoints failed")}catch(t){return{mean_gas_price:100,max_gas_price:200,median_gas_price:100}}}static async getRecommendedGasSettings(t="testnet"){try{const e=await this.estimateGasPrice(t),r=Math.max(1.2*e.mean_gas_price,100);return{gasUnitPrice:Math.ceil(r).toString(),maxGasAmount:"200000"}}catch(t){return{gasUnitPrice:"100",maxGasAmount:"200000"}}}};"undefined"!=typeof window?(window.__supraConnectStore||(window.__supraConnectStore=new R),window.__supraConnectStore):(global.__supraConnectStore||(global.__supraConnectStore=new R),global.__supraConnectStore);var N=e(void 0);function P({children:e,rpcUrl:r=D}){const n=t.useMemo(()=>new R(r),[r]);return u(N.Provider,{value:n,children:e})}function z(){const t=r(N);if(!t)throw new Error("useSupraConnectStore must be used within a SupraConnectProvider. Make sure to wrap your app with <SupraConnectProvider>.</SupraConnectProvider>");return t}function U(){const t=z(),[e,r]=n(()=>t.getState());a(()=>t.subscribe(r),[t]);const i=o(async()=>{await t.connectStarkey()},[t]),s=o(async()=>{await t.connectRibbit()},[t]),l=o(async()=>{await t.disconnect()},[t]),c=o(e=>t.getPublicAddress(e),[t]),d=o(()=>t.getPublicAddresses(),[t]),u=o(()=>e.allAccounts,[e.allAccounts]),p=o(async e=>t.signMessage(e),[t]),g=o(async e=>t.sendTransaction(e),[t]),h=o(async e=>t.transfer(e),[t]),b=o(()=>{t.clearError()},[t]),f=o(()=>{t.refreshWalletDetection()},[t]),w=o(()=>t.getRpcUrl(),[t]),m=o(e=>{t.setDappMetadata(e)},[t]),y=o(()=>t.getDappMetadata(),[t]),k=o(()=>{t.clearDappMetadata()},[t]);return{connectedWallet:e.connectedWallet,isConnected:!!e.connectedWallet,isConnecting:e.isConnecting,connectionError:e.connectionError,availableWallets:e.availableWallets,connectStarkey:i,connectRibbit:s,disconnect:l,getPublicAddress:c,getPublicAddresses:d,getAllAccounts:u,signMessage:p,sendTransaction:g,transfer:h,clearError:b,refreshWalletDetection:f,getRpcUrl:w,setDappMetadata:m,getDappMetadata:y,clearDappMetadata:k}}var L=({width:t=24,height:e=24})=>p("svg",{width:t,height:e,viewBox:"0 0 70 70",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[u("circle",{cx:"35",cy:"35",r:"35",fill:"#dd1438"}),u("path",{d:"M54.81,17.92A16.52,16.52,0,0,0,51,12.34a18.51,18.51,0,0,0-5.68-3.63,16.57,16.57,0,0,0-4.45-1.09,17.21,17.21,0,0,0-18.7,22.47v.05h0A17.12,17.12,0,0,0,18.69,33,17.92,17.92,0,0,0,15,38.76a18.45,18.45,0,0,0-1.21,6.71,16.48,16.48,0,0,0,1.4,6.61A16.66,16.66,0,0,0,19,57.66a18.67,18.67,0,0,0,5.69,3.63,17.23,17.23,0,0,0,6,1.2H31A17.26,17.26,0,0,0,47.58,40a17.34,17.34,0,0,0,3.69-3A17.9,17.9,0,0,0,55,31.25a18.34,18.34,0,0,0,1.22-6.72,16.49,16.49,0,0,0-1.41-6.61ZM39.73,19.16a6.61,6.61,0,0,1-.17-1.65,8.39,8.39,0,0,1,1.82.52,5.92,5.92,0,0,1,2.14,1.57,7.23,7.23,0,0,1,1.3,2.25,7.35,7.35,0,0,1,.38,2.52,6.49,6.49,0,0,1-1.91,4.23ZM43.8,29.94c.11-.1.22-.21.32-.32a7.47,7.47,0,0,0,1.57-2.52,7.82,7.82,0,0,0,.46-2.9,6.69,6.69,0,0,0-.65-2.79,8,8,0,0,0-1.68-2.24,6.548,6.548,0,0,0-4.27-1.77,7.29,7.29,0,0,1,.82-3.13,9.4,9.4,0,0,1,2.2.7,10.63,10.63,0,0,1,3.25,2.33,12.31,12.31,0,0,1,2.06,3.36,10.64,10.64,0,0,1,.65,3.81,8.21,8.21,0,0,1-.84,3.74,8.16,8.16,0,0,1-2.14,3.06,7.74,7.74,0,0,1-1,.75Zm1.27,3.35a11.84,11.84,0,0,0,1.37-1.18,11.43,11.43,0,0,0,3-7.82,10.28,10.28,0,0,0-.92-4.09,10.05,10.05,0,0,0-2.41-3.36,10.36,10.36,0,0,0-3.44-2.14,11.08,11.08,0,0,0-2.26-.53,6.86,6.86,0,0,1,1.22-1.64,6.76,6.76,0,0,1,1.24-1,9,9,0,0,1,1,.41,12.5,12.5,0,0,1,4.28,3A13.61,13.61,0,0,1,51,19.33a14.22,14.22,0,0,1,.92,5.12,14.86,14.86,0,0,1-1.11,5,13.56,13.56,0,0,1-2.9,4.08,11.72,11.72,0,0,1-2.08,1.67ZM26.88,58.37a7.38,7.38,0,0,1-.82-.33,12.5,12.5,0,0,1-4.28-3A13.61,13.61,0,0,1,19,50.67a14.22,14.22,0,0,1-.92-5.12,14.81,14.81,0,0,1,1.11-5,13.6,13.6,0,0,1,2.9-4.09A12.7,12.7,0,0,1,24,34.87l.76,2a12.48,12.48,0,0,0-1.23,1.06,11.12,11.12,0,0,0-2.24,3.63,11,11,0,0,0-.76,4.2,10.32,10.32,0,0,0,.92,4.09,10.53,10.53,0,0,0,5.85,5.49,11.07,11.07,0,0,0,2,.51,7.36,7.36,0,0,1-1.18,1.56,7,7,0,0,1-1.24.96ZM27.39,55a10.63,10.63,0,0,1-3.25-2.33,12.41,12.41,0,0,1-2.06-3.35,10.73,10.73,0,0,1-.65-3.82,8.21,8.21,0,0,1,.84-3.74,8.16,8.16,0,0,1,2.14-3.06,8.4,8.4,0,0,1,.8-.65L26,40.19l-.19.19a7.47,7.47,0,0,0-1.57,2.52,7.82,7.82,0,0,0-.46,2.9,6.69,6.69,0,0,0,.65,2.79,8,8,0,0,0,1.68,2.24,7,7,0,0,0,2.33,1.41,6.53,6.53,0,0,0,1.77.34,7.13,7.13,0,0,1-.86,3.11A9.3,9.3,0,0,1,27.39,55Zm2.71-4.22a7.76,7.76,0,0,1,.14,1.66,8.81,8.81,0,0,1-1.66-.5,5.92,5.92,0,0,1-2.14-1.57,7.23,7.23,0,0,1-1.3-2.25,7.35,7.35,0,0,1-.38-2.52,6.54,6.54,0,0,1,1.78-4.1Zm-14.28,1a18.45,18.45,0,0,1-1.11-6.33,18.18,18.18,0,0,1,1.41-6.23,16.76,16.76,0,0,1,3.63-5.23,15,15,0,0,1,3-2.31l.56,1.48a13.09,13.09,0,0,0-2.41,2A14.12,14.12,0,0,0,18,40a15.85,15.85,0,0,0-.92,5.5,15.34,15.34,0,0,0,1.22,5.39A14.16,14.16,0,0,0,26,58.23c.24.09.49.16.74.24a7.74,7.74,0,0,1-3.65,1.06,5.79,5.79,0,0,1-1.38-.16,15.94,15.94,0,0,1-2.32-2,16.25,16.25,0,0,1-3.57-5.51Zm38-21.16a16.76,16.76,0,0,1-3.63,5.23A15.07,15.07,0,0,1,47,38.35l-.56-1.48a12.48,12.48,0,0,0,2.6-2.1A14,14,0,0,0,52,30a15.85,15.85,0,0,0,.92-5.5,15.34,15.34,0,0,0-1.22-5.39A14.16,14.16,0,0,0,44,11.77c-.31-.12-.64-.21-1-.31a7.22,7.22,0,0,1,5.25-.83,16.57,16.57,0,0,1,2.32,2,16.25,16.25,0,0,1,3.55,5.5,18.49,18.49,0,0,1,1.11,6.33,18.18,18.18,0,0,1-1.39,6.24Z",fill:"#fff"})]});function j(t){return"object"==typeof t&&null!=t&&!Array.isArray(t)}function O(t){return String.fromCharCode(t+(t>25?39:97))}function F(t){return function(t){let e,r="";for(e=Math.abs(t);e>52;e=e/52|0)r=O(e%52)+r;return O(e%52)+r}(function(t,e){let r=e.length;for(;r;)t=33*t^e.charCodeAt(--r);return t}(5381,t)>>>0)}var $=/\s*!(important)?/i;function G(t){return"string"==typeof t?t.replaceAll(" ","_"):t}var Z=t=>{const e=new Map;return(...r)=>{const n=JSON.stringify(r);if(e.has(n))return e.get(n);const a=t(...r);return e.set(n,a),a}},H=new Set(["__proto__","constructor","prototype"]);function K(...t){return t.reduce((t,e)=>e?(Object.keys(e).forEach(r=>{if(H.has(r))return;const n=t[r],a=e[r];j(n)&&j(a)?t[r]=K(n,a):t[r]=a}),t):t,{})}var X=t=>null!=t;function Y(t,e,r={}){const{stop:n,getKey:a}=r;return function t(r,o=[]){if("object"==typeof(i=r)&&null!==i){const i={};for(const[s,l]of Object.entries(r)){const c=a?.(s,l)??s,d=[...o,c];if(n?.(r,d))return e(r,o);const u=t(l,d);X(u)&&(i[c]=u)}return i}var i;return e(r,o)}(t)}function V(t,e,r=!0){const{utility:n,conditions:a}=e,{hasShorthand:o,resolveShorthand:i}=n;return Y(t,t=>{return Array.isArray(t)?(e=t,r=a.breakpoints.keys,e.reduce((t,e,n)=>{const a=r[n];return null!=e&&(t[a]=e),t},{})):t;var e,r},{stop:t=>Array.isArray(t),getKey:r?t=>o?i(t):t:void 0})}var q={shift:t=>t,finalize:t=>t,breakpoints:{keys:[]}};function J(...t){return t.flat().filter(t=>{return j(t)&&Object.keys((e=t,Object.fromEntries(Object.entries(e??{}).filter(([t,e])=>void 0!==e)))).length>0;var e})}var Q=/([A-Z])/g,tt=/^ms-/,et=Z(t=>t.startsWith("--")?t:t.replace(Q,"-$1").replace(tt,"-ms-").toLowerCase());"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%".split(",").join("|");var rt=new Set("_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,2xl,2xlOnly,2xlDown,smToMd,smToLg,smToXl,smTo2xl,mdToLg,mdToXl,mdTo2xl,lgToXl,lgTo2xl,xlTo2xl,@/xs,@/sm,@/md,@/lg,@/xl,@/2xl,@/3xl,@/4xl,@/5xl,@/6xl,@/7xl,@/8xl,base".split(",")),nt=/^@|&|&$/;function at(t){return rt.has(t)||nt.test(t)}var ot=/^_/,it=/&|@/;var st=new Map,lt=new Map;"aspectRatio:asp,boxDecorationBreak:bx-db,zIndex:z,boxSizing:bx-s,objectPosition:obj-p,objectFit:obj-f,overscrollBehavior:ovs-b,overscrollBehaviorX:ovs-bx,overscrollBehaviorY:ovs-by,position:pos/1,top:top,left:left,inset:inset,insetInline:inset-x/insetX,insetBlock:inset-y/insetY,insetBlockEnd:inset-be,insetBlockStart:inset-bs,insetInlineEnd:inset-e/insetEnd/end,insetInlineStart:inset-s/insetStart/start,right:right,bottom:bottom,float:float,visibility:vis,display:d,hideFrom:hide,hideBelow:show,flexBasis:flex-b,flex:flex,flexDirection:flex-d/flexDir,flexGrow:flex-g,flexShrink:flex-sh,gridTemplateColumns:grid-tc,gridTemplateRows:grid-tr,gridColumn:grid-c,gridRow:grid-r,gridColumnStart:grid-cs,gridColumnEnd:grid-ce,gridAutoFlow:grid-af,gridAutoColumns:grid-ac,gridAutoRows:grid-ar,gap:gap,gridGap:grid-g,gridRowGap:grid-rg,gridColumnGap:grid-cg,rowGap:rg,columnGap:cg,justifyContent:jc,alignContent:ac,alignItems:ai,alignSelf:as,padding:p/1,paddingLeft:pl/1,paddingRight:pr/1,paddingTop:pt/1,paddingBottom:pb/1,paddingBlock:py/1/paddingY,paddingBlockEnd:pbe,paddingBlockStart:pbs,paddingInline:px/paddingX/1,paddingInlineEnd:pe/1/paddingEnd,paddingInlineStart:ps/1/paddingStart,marginLeft:ml/1,marginRight:mr/1,marginTop:mt/1,marginBottom:mb/1,margin:m/1,marginBlock:my/1/marginY,marginBlockEnd:mbe,marginBlockStart:mbs,marginInline:mx/1/marginX,marginInlineEnd:me/1/marginEnd,marginInlineStart:ms/1/marginStart,spaceX:sx,spaceY:sy,outlineWidth:ring-w/ringWidth,outlineColor:ring-c/ringColor,outline:ring/1,outlineOffset:ring-o/ringOffset,focusRing:focus-ring,focusVisibleRing:focus-v-ring,focusRingColor:focus-ring-c,focusRingOffset:focus-ring-o,focusRingWidth:focus-ring-w,focusRingStyle:focus-ring-s,divideX:dvd-x,divideY:dvd-y,divideColor:dvd-c,divideStyle:dvd-s,width:w/1,inlineSize:w-is,minWidth:min-w/minW,minInlineSize:min-w-is,maxWidth:max-w/maxW,maxInlineSize:max-w-is,height:h/1,blockSize:h-bs,minHeight:min-h/minH,minBlockSize:min-h-bs,maxHeight:max-h/maxH,maxBlockSize:max-b,boxSize:size,color:c,fontFamily:ff,fontSize:fs,fontSizeAdjust:fs-a,fontPalette:fp,fontKerning:fk,fontFeatureSettings:ff-s,fontWeight:fw,fontSmoothing:fsmt,fontVariant:fv,fontVariantAlternates:fv-alt,fontVariantCaps:fv-caps,fontVariationSettings:fv-s,fontVariantNumeric:fv-num,letterSpacing:ls,lineHeight:lh,textAlign:ta,textDecoration:td,textDecorationColor:td-c,textEmphasisColor:te-c,textDecorationStyle:td-s,textDecorationThickness:td-t,textUnderlineOffset:tu-o,textTransform:tt,textIndent:ti,textShadow:tsh,textShadowColor:tsh-c/textShadowColor,textOverflow:tov,verticalAlign:va,wordBreak:wb,textWrap:tw,truncate:trunc,lineClamp:lc,listStyleType:li-t,listStylePosition:li-pos,listStyleImage:li-img,listStyle:li-s,backgroundPosition:bg-p/bgPosition,backgroundPositionX:bg-p-x/bgPositionX,backgroundPositionY:bg-p-y/bgPositionY,backgroundAttachment:bg-a/bgAttachment,backgroundClip:bg-cp/bgClip,background:bg/1,backgroundColor:bg-c/bgColor,backgroundOrigin:bg-o/bgOrigin,backgroundImage:bg-i/bgImage,backgroundRepeat:bg-r/bgRepeat,backgroundBlendMode:bg-bm/bgBlendMode,backgroundSize:bg-s/bgSize,backgroundGradient:bg-grad/bgGradient,backgroundLinear:bg-linear/bgLinear,backgroundRadial:bg-radial/bgRadial,backgroundConic:bg-conic/bgConic,textGradient:txt-grad,gradientFromPosition:grad-from-pos,gradientToPosition:grad-to-pos,gradientFrom:grad-from,gradientTo:grad-to,gradientVia:grad-via,gradientViaPosition:grad-via-pos,borderRadius:bdr/rounded,borderTopLeftRadius:bdr-tl/roundedTopLeft,borderTopRightRadius:bdr-tr/roundedTopRight,borderBottomRightRadius:bdr-br/roundedBottomRight,borderBottomLeftRadius:bdr-bl/roundedBottomLeft,borderTopRadius:bdr-t/roundedTop,borderRightRadius:bdr-r/roundedRight,borderBottomRadius:bdr-b/roundedBottom,borderLeftRadius:bdr-l/roundedLeft,borderStartStartRadius:bdr-ss/roundedStartStart,borderStartEndRadius:bdr-se/roundedStartEnd,borderStartRadius:bdr-s/roundedStart,borderEndStartRadius:bdr-es/roundedEndStart,borderEndEndRadius:bdr-ee/roundedEndEnd,borderEndRadius:bdr-e/roundedEnd,border:bd,borderWidth:bd-w,borderTopWidth:bd-t-w,borderLeftWidth:bd-l-w,borderRightWidth:bd-r-w,borderBottomWidth:bd-b-w,borderBlockStartWidth:bd-bs-w,borderBlockEndWidth:bd-be-w,borderColor:bd-c,borderInline:bd-x/borderX,borderInlineWidth:bd-x-w/borderXWidth,borderInlineColor:bd-x-c/borderXColor,borderBlock:bd-y/borderY,borderBlockWidth:bd-y-w/borderYWidth,borderBlockColor:bd-y-c/borderYColor,borderLeft:bd-l,borderLeftColor:bd-l-c,borderInlineStart:bd-s/borderStart,borderInlineStartWidth:bd-s-w/borderStartWidth,borderInlineStartColor:bd-s-c/borderStartColor,borderRight:bd-r,borderRightColor:bd-r-c,borderInlineEnd:bd-e/borderEnd,borderInlineEndWidth:bd-e-w/borderEndWidth,borderInlineEndColor:bd-e-c/borderEndColor,borderTop:bd-t,borderTopColor:bd-t-c,borderBottom:bd-b,borderBottomColor:bd-b-c,borderBlockEnd:bd-be,borderBlockEndColor:bd-be-c,borderBlockStart:bd-bs,borderBlockStartColor:bd-bs-c,opacity:op,boxShadow:bx-sh/shadow,boxShadowColor:bx-sh-c/shadowColor,mixBlendMode:mix-bm,filter:filter,brightness:brightness,contrast:contrast,grayscale:grayscale,hueRotate:hue-rotate,invert:invert,saturate:saturate,sepia:sepia,dropShadow:drop-shadow,blur:blur,backdropFilter:bkdp,backdropBlur:bkdp-blur,backdropBrightness:bkdp-brightness,backdropContrast:bkdp-contrast,backdropGrayscale:bkdp-grayscale,backdropHueRotate:bkdp-hue-rotate,backdropInvert:bkdp-invert,backdropOpacity:bkdp-opacity,backdropSaturate:bkdp-saturate,backdropSepia:bkdp-sepia,borderCollapse:bd-cl,borderSpacing:bd-sp,borderSpacingX:bd-sx,borderSpacingY:bd-sy,tableLayout:tbl,transitionTimingFunction:trs-tmf,transitionDelay:trs-dly,transitionDuration:trs-dur,transitionProperty:trs-prop,transition:trs,animation:anim,animationName:anim-n,animationTimingFunction:anim-tmf,animationDuration:anim-dur,animationDelay:anim-dly,animationPlayState:anim-ps,animationComposition:anim-comp,animationFillMode:anim-fm,animationDirection:anim-dir,animationIterationCount:anim-ic,animationRange:anim-r,animationState:anim-s,animationRangeStart:anim-rs,animationRangeEnd:anim-re,animationTimeline:anim-tl,transformOrigin:trf-o,transformBox:trf-b,transformStyle:trf-s,transform:trf,rotate:rotate,rotateX:rotate-x,rotateY:rotate-y,rotateZ:rotate-z,scale:scale,scaleX:scale-x,scaleY:scale-y,translate:translate,translateX:translate-x/x,translateY:translate-y/y,translateZ:translate-z/z,accentColor:ac-c,caretColor:ca-c,scrollBehavior:scr-bhv,scrollbar:scr-bar,scrollbarColor:scr-bar-c,scrollbarGutter:scr-bar-g,scrollbarWidth:scr-bar-w,scrollMargin:scr-m,scrollMarginLeft:scr-ml,scrollMarginRight:scr-mr,scrollMarginTop:scr-mt,scrollMarginBottom:scr-mb,scrollMarginBlock:scr-my/scrollMarginY,scrollMarginBlockEnd:scr-mbe,scrollMarginBlockStart:scr-mbt,scrollMarginInline:scr-mx/scrollMarginX,scrollMarginInlineEnd:scr-me,scrollMarginInlineStart:scr-ms,scrollPadding:scr-p,scrollPaddingBlock:scr-py/scrollPaddingY,scrollPaddingBlockStart:scr-pbs,scrollPaddingBlockEnd:scr-pbe,scrollPaddingInline:scr-px/scrollPaddingX,scrollPaddingInlineEnd:scr-pe,scrollPaddingInlineStart:scr-ps,scrollPaddingLeft:scr-pl,scrollPaddingRight:scr-pr,scrollPaddingTop:scr-pt,scrollPaddingBottom:scr-pb,scrollSnapAlign:scr-sa,scrollSnapStop:scrs-s,scrollSnapType:scrs-t,scrollSnapStrictness:scrs-strt,scrollSnapMargin:scrs-m,scrollSnapMarginTop:scrs-mt,scrollSnapMarginBottom:scrs-mb,scrollSnapMarginLeft:scrs-ml,scrollSnapMarginRight:scrs-mr,scrollSnapCoordinate:scrs-c,scrollSnapDestination:scrs-d,scrollSnapPointsX:scrs-px,scrollSnapPointsY:scrs-py,scrollSnapTypeX:scrs-tx,scrollSnapTypeY:scrs-ty,scrollTimeline:scrtl,scrollTimelineAxis:scrtl-a,scrollTimelineName:scrtl-n,touchAction:tch-a,userSelect:us,overflow:ov,overflowWrap:ov-wrap,overflowX:ov-x,overflowY:ov-y,overflowAnchor:ov-a,overflowBlock:ov-b,overflowInline:ov-i,overflowClipBox:ovcp-bx,overflowClipMargin:ovcp-m,overscrollBehaviorBlock:ovs-bb,overscrollBehaviorInline:ovs-bi,fill:fill,stroke:stk,strokeWidth:stk-w,strokeDasharray:stk-dsh,strokeDashoffset:stk-do,strokeLinecap:stk-lc,strokeLinejoin:stk-lj,strokeMiterlimit:stk-ml,strokeOpacity:stk-op,srOnly:sr,debug:debug,appearance:ap,backfaceVisibility:bfv,clipPath:cp-path,hyphens:hy,mask:msk,maskImage:msk-i,maskSize:msk-s,textSizeAdjust:txt-adj,container:cq,containerName:cq-n,containerType:cq-t,cursor:cursor,textStyle:textStyle".split(",").forEach(t=>{const[e,r]=t.split(":"),[n,...a]=r.split("/");st.set(e,n),a.length&&a.forEach(t=>{lt.set("1"===t?n:t,e)})});var ct=t=>lt.get(t)||t,dt={conditions:{shift:function(t){return t.sort((t,e)=>{const r=at(t),n=at(e);return r&&!n?1:!r&&n?-1:0})},finalize:function(t){return t.map(t=>rt.has(t)?t.replace(ot,""):it.test(t)?`[${G(t.trim())}]`:t)},breakpoints:{keys:["base","sm","md","lg","xl","2xl"]}},utility:{prefix:"sc",transform:(t,e)=>{const r=ct(t);return{className:`${st.get(r)||et(r)}_${G(e)}`}},hasShorthand:!0,toHash:(t,e)=>e(t.join(":")),resolveShorthand:ct}},ut=function(t){const{utility:e,hash:r,conditions:n=q}=t,a=t=>[e.prefix,t].filter(Boolean).join("-");return Z(({base:o,...i}={})=>{const s=V(Object.assign(i,o),t),l=new Set;return Y(s,(t,o)=>{if(null==t)return;const i=function(t){return"string"==typeof t&&$.test(t)}(t),[s,...c]=n.shift(o),d=c.slice().filter(t=>!(t=>"base"===t)(t));const u=e.transform(s,function(t){return"string"==typeof t?t.replace($,"").trim():t}((t=>"string"==typeof t?t.replaceAll(/[\n\s]+/g," "):t)(t)));let p=((t,o)=>{let i;if(r){const r=[...n.finalize(t),o];i=a(e.toHash(r,F))}else i=[...n.finalize(t),a(o)].join(":");return i})(d,u.className);i&&(p=`${p}!`),l.add(p)}),Array.from(l).join(" ")})}(dt),pt=(...t)=>ut(gt(...t));pt.raw=(...t)=>gt(...t);var{mergeCss:gt}=function(t){function e(e){const r=J(...e);return 1===r.length?r:r.map(e=>V(e,t))}return{mergeCss:Z(function(...t){return K(...e(t))}),assignCss:function(...t){return Object.assign({},...e(t))}}}(dt),ht=({width:t=24,height:e=24})=>p("svg",{width:t,height:e,viewBox:"0 0 51 49",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[u("path",{d:"M25.6912 0.895264C11.9301 0.895264 0.772217 12.1784 0.772217 26.0887C0.772217 36.1757 6.63365 44.869 15.0984 48.8953L19.3546 37.2704C15.5262 35.049 12.9439 30.8733 12.9439 26.0887C12.9439 18.9707 18.6522 13.2036 25.686 13.2036C32.7197 13.2036 38.428 18.976 38.428 26.0887C38.428 30.8733 35.8458 35.0437 32.0174 37.2704L36.2735 48.8953C44.7383 44.869 50.5997 36.1704 50.5997 26.0887C50.605 12.1784 39.4472 0.895264 25.6912 0.895264Z",fill:"url(#paint0_linear_1463_870)"}),u("path",{d:"M35.4972 26.0887C28.9599 27.915 27.4971 29.3941 25.6912 36.0048C23.8852 29.3941 22.4225 27.915 15.8851 26.0887C22.4225 24.2625 23.8852 22.7833 25.6912 16.1726C27.4971 22.7833 28.9599 24.2625 35.4972 26.0887Z",fill:"white"}),u("defs",{children:p("linearGradient",{id:"paint0_linear_1463_870",x1:"0",y1:"25.4765",x2:"50.2406",y2:"25.4765",gradientUnits:"userSpaceOnUse",children:[u("stop",{stopColor:"#FEBF4E"}),u("stop",{offset:"0.715",stopColor:"#FC4CD2"})]})})]}),bt=({width:t=24,height:e=24})=>p("svg",{id:"Logo",xmlns:"http://www.w3.org/2000/svg",version:"1.1",width:t,height:e,viewBox:"0 0 148.8 85.5",children:[u("path",{fill:"#a5ff71",d:"M144.6,39c-1.4-2.1-2-4.6-1.7-7s.4-4.6.2-7c-1.3-13.4-12.7-24.2-26.1-24.8-9.3-.4-17.7,3.8-22.9,10.6-2.2,2.8-5.7,4.1-9.2,3.9-3.4-.2-6.9-.4-10.5-.4s-8.1.2-12.1.5-5.9-1.1-7.7-3.6C48.5,3,38-1.7,26.6.7,17,2.7,9.1,10.1,6.3,19.5c-1.2,4.2-1.5,8.3-.9,12.1.4,2.9-.2,5.8-1.8,8.3-2.2,3.5-3.4,7.1-3.4,11,0,16.8,22.7,34,54.3,34.5,6.2,0,13.9-3.5,22.2-3.3,8.9.2,15.3,3.1,23,3.3,29,.9,49-18.6,49-34.5s-1.4-8.2-4.1-11.9ZM25.3,40.6c-9.9,0-17.9-8-17.9-17.9S15.5,4.9,25.3,4.9s17.9,8,17.9,17.9-8,17.9-17.9,17.9ZM69.1,48.1c-1,0-1.8-1-1.8-2.2s.8-2.2,1.8-2.2,1.8,1,1.8,2.2-.8,2.2-1.8,2.2ZM79.7,48.1c-1,0-1.8-1-1.8-2.2s.8-2.2,1.8-2.2,1.8,1,1.8,2.2-.8,2.2-1.8,2.2ZM123.3,40.6c-9.9,0-17.9-8-17.9-17.9s8-17.9,17.9-17.9,17.9,8,17.9,17.9-8,17.9-17.9,17.9Z"}),u("circle",{fill:"#a5ff71",cx:"30.6",cy:"22.7",r:"7.8"}),u("circle",{fill:"#a5ff71",cx:"118.5",cy:"22.7",r:"7.8"})]}),ft=class extends i{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,e){console.error("SupraConnect Error:",t,e),this.props.onError?.(t,e)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p("div",{className:pt({backgroundColor:"#fee2e2",color:"#dc2626",padding:"1rem",borderRadius:"0.5rem",border:"1px solid #fecaca",textAlign:"center",maxWidth:"400px",margin:"0 auto"}),children:[u("h3",{className:pt({fontSize:"1.1rem",fontWeight:"600",marginBottom:"0.5rem"}),children:"Wallet Connection Error"}),u("p",{className:pt({fontSize:"0.9rem",marginBottom:"1rem"}),children:"Something went wrong while connecting to your wallet. Please try refreshing the page."}),u("button",{onClick:()=>this.setState({hasError:!1,error:void 0}),className:pt({backgroundColor:"#dc2626",color:"white",padding:"0.5rem 1rem",borderRadius:"0.25rem",border:"none",cursor:"pointer",fontSize:"0.9rem",fontWeight:"500",_hover:{backgroundColor:"#b91c1c"}}),children:"Try Again"})]}):this.props.children}},wt=(t={})=>{const e=z(),[r,o]=n(!1),[i,s]=n(!1),[l,c]=n(()=>e.getState());a(()=>e.subscribe(c),[e]);const{connectedWallet:d,connectionError:h,availableWallets:b,connectingWallet:f}=l,w=b.includes("starkey"),m=b.includes("ribbit"),y=()=>{s(!0),setTimeout(()=>{o(!1),s(!1),e.clearError()},300)};return p(ft,{children:[p("button",{onClick:d?async()=>{try{await e.disconnect()}catch(t){}}:()=>o(!0),className:pt({display:"flex",gap:"0.75rem",alignItems:"center",justifyContent:"center",color:"#DD1438",fontWeight:"600",fontSize:"0.95rem",backgroundColor:"white",borderRadius:"0.375rem",border:"2px solid #DD1438",padding:"0.75rem 1.25rem",cursor:"pointer",transition:"all 0.2s ease",_hover:{backgroundColor:"#DD1438",color:"white"},_active:{backgroundColor:"#C1122D",color:"white"}}),children:[u(L,{width:20,height:20}),d?`Connected (${d.walletAddress.slice(0,6)}...${d.walletAddress.slice(-4)})`:"Connect Wallet"]}),r&&g(u("div",{className:pt({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.8)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,animation:i?"fadeOut 0.3s ease-in":"fadeIn 0.3s ease-out"}),onClick:y,children:p("div",{className:pt({backgroundColor:"white",borderRadius:"0.75rem",padding:"2rem",maxWidth:"420px",border:"2px solid #DD1438",width:"90%",position:"relative",animation:i?"popOut 0.3s ease-in":"popUp 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55)",transformOrigin:"center"}),onClick:t=>t.stopPropagation(),children:[u("button",{onClick:y,className:pt({position:"absolute",top:"1rem",right:"1rem",background:"none",border:"none",fontSize:"1.5rem",cursor:"pointer",color:"gray",_hover:{color:"black"}}),children:"×"}),p("div",{className:pt({textAlign:"center",marginBottom:"2rem"}),children:[u("h2",{className:pt({fontSize:"1.5rem",fontWeight:"700",color:"#DD1438",marginBottom:"0.5rem"}),children:"Connect Wallet"}),u("p",{className:pt({color:"#6b7280",fontSize:"0.9rem"}),children:"Choose your preferred wallet to connect"})]}),p("div",{className:pt({display:"flex",flexDirection:"column",gap:"1rem"}),children:[h&&u("div",{className:pt({backgroundColor:"#fee2e2",color:"#dc2626",padding:"0.75rem",borderRadius:"0.5rem",marginBottom:"1rem",fontSize:"0.9rem",textAlign:"center"}),children:h}),w?p("button",{onClick:async()=>{try{const r={dappMetadata:{...t.dappMetadata,...t.metadata}};await e.connectStarkey(r),y()}catch(t){}},disabled:null!==f,className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:null!==f?"not-allowed":"pointer",fontWeight:"600",fontSize:"1rem",color:"white",opacity:null!==f?.6:1,transition:"all 0.2s ease",_hover:{backgroundColor:null!==f?"#1e1b4b":"#312e81",color:"white"}}),children:[u(ht,{width:28,height:28}),u("span",{children:"starkey"===f?"Connecting...":"Starkey Wallet"})]}):p("a",{href:"https://starkey.app/",target:"_blank",rel:"noopener noreferrer",className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:"pointer",fontWeight:"600",fontSize:"1rem",color:"white",textDecoration:"none",transition:"all 0.2s ease",_hover:{backgroundColor:"#312e81",color:"white"}}),children:[u(ht,{width:28,height:28}),u("span",{children:"Install Starkey Wallet"})]}),m?p("button",{onClick:async()=>{try{const r={dappMetadata:{...t.dappMetadata,...t.metadata}};await e.connectRibbit(r),y()}catch(t){}},disabled:null!==f,className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:null!==f?"not-allowed":"pointer",fontWeight:"600",fontSize:"1rem",color:"white",opacity:null!==f?.6:1,transition:"all 0.2s ease",_hover:{backgroundColor:null!==f?"#1e1b4b":"#312e81",color:"white"}}),children:[u(bt,{width:28,height:28}),u("span",{children:"ribbit"===f?"Connecting...":"Ribbit Wallet"})]}):p("a",{href:"https://ribbitwallet.com/",target:"_blank",rel:"noopener noreferrer",className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:"pointer",fontWeight:"600",fontSize:"1rem",color:"white",textDecoration:"none",transition:"all 0.2s ease",_hover:{backgroundColor:"#312e81",color:"white"}}),children:[u(bt,{width:28,height:28}),u("span",{children:"Install Ribbit Wallet"})]})]})]})}),document.body)]})};export{R as ConnectionStore,D as DEFAULT_RPC_URL,B as RibbitWalletUtils,f as StarkeyWalletUtils,wt as SupraConnectButton,ft as SupraConnectErrorBoundary,P as SupraConnectProvider,U as useSupraConnect,z as useSupraConnectStore};
|
|
1
|
+
import t,{createContext as e,useState as r,useEffect as n,useCallback as a,useContext as o,Component as i}from"react";import*as s from"@noble/ed25519";import{TxnBuilderTypes as l,HexString as c,BCS as d}from"supra-l1-sdk";import{jsx as u,jsxs as p}from"react/jsx-runtime";import{createPortal as g}from"react-dom";function h(t){return t instanceof Error?t.message:"Unknown error"}function b(t){if(t instanceof Error){const e=t.message.toLowerCase();return e.includes("user rejected")||e.includes("user denied")||e.includes("user cancelled")||e.includes("cancelled by user")}return!1}!function(t,{insertAt:e}={}){if("undefined"==typeof document)return;const r=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===e&&r.firstChild?r.insertBefore(n,r.firstChild):r.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}("@layer reset, base, tokens, recipes, utilities;\n");var w=class{static isInstalled(){return"undefined"!=typeof window&&!!window.starkey?.supra}static async connect(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const e={chainId:t?.chainId||8},r=await window.starkey.supra.connect(e);if(!r||0===r.length)throw new Error("No accounts found or connection rejected");return{walletAddress:r[0],connected:!0}}catch(t){throw new Error(`Failed to connect to Starkey wallet: ${t instanceof Error?t.message:"Unknown error"}`)}}static async disconnect(){if(this.isInstalled())try{await window.starkey.supra.disconnect()}catch(t){}}static async getAccounts(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.account()}catch(t){throw new Error(`Failed to get accounts: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getNetwork(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");return window.starkey.supra.network()}static async getChainId(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.getChainId()}catch(t){throw new Error(`Failed to get chain ID: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getAccountInfo(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{if("function"==typeof window.starkey.supra.getAccountInfo){const t=await window.starkey.supra.getAccountInfo();if(t&&Array.isArray(t))return t}return(await window.starkey.supra.account()).map(t=>({address:t,publicKey:t}))}catch(t){throw new Error(`Failed to get account info: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getPublicKey(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{if("function"==typeof window.starkey.supra.getPublicKey)return await window.starkey.supra.getPublicKey(t);const e=await this.getAccountInfo(),r=t||e[0]?.address,n=e.find(t=>t.address===r);if(n?.publicKey&&n.publicKey!==n.address)return n.publicKey;throw new Error("Public key not available from wallet - StarKey wallet needs to provide actual public keys for signature verification")}catch(t){throw new Error(`Failed to get public key: ${t instanceof Error?t.message:"Unknown error"}`)}}static async getBalance(){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{return await window.starkey.supra.balance()}catch(t){throw new Error(`Failed to get balance: ${t instanceof Error?t.message:"Unknown error"}`)}}static async signMessage(t,e=!1){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const n=e?t:"0x"+Array.from((new TextEncoder).encode(t)).map(t=>t.toString(16).padStart(2,"0")).join(""),a=await window.starkey.supra.signMessage({message:n});if(this.isErrorResponse(a)){if(r=a.error,4001===r?.code||r?.message&&(r.message.toLowerCase().includes("reject")||r.message.toLowerCase().includes("cancel")||r.message.toLowerCase().includes("denied")))return null;throw new Error(`Signing failed: ${a.error.message}`)}return a.signature}catch(r){if(b(r))return null;throw new Error(`Failed to sign message: ${h(r)}`)}var r}static async verifySignature(t,e,r,n=!1){try{if(!e.startsWith("0x")||130!==e.length)return!1;if(!r)return!1;const a=new Uint8Array(e.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]);if(64!==a.length)return!1;const o=n?new Uint8Array(t.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):(new TextEncoder).encode(t);let i;if(!r.startsWith("0x"))throw new Error("Cannot verify signature: actual public key required, got address");if(i=new Uint8Array(r.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]),32!==i.length)return!1;return await s.verifyAsync(a,o,i)}catch(t){return!1}}static async getPublicKeyFromAddress(t){try{return await this.getPublicKey(t)}catch(e){throw new Error(`Cannot get public key for address ${t}: ${e instanceof Error?e.message:"Unknown error"}`)}}static async sendTransaction(t){if(!this.isInstalled())throw new Error("Starkey wallet is not installed");try{const{payload:e,options:r={}}=t,n={txExpiryTime:r.txExpiryTime||Math.ceil(Date.now()/1e3)+30,...r.maxGasAmount&&{maxGasAmount:r.maxGasAmount},...r.gasUnitPrice&&{gasUnitPrice:r.gasUnitPrice}},a=await this.getAccounts();if(!a||0===a.length)throw new Error("No connected accounts found");const o=[a[0],0,e.moduleAddress,e.moduleName,e.functionName,e.typeArguments||[],e.arguments,n];try{const t=await window.starkey.supra.createRawTransactionData(o);if(!t)throw new Error("Failed to create raw transaction data");const e={data:t},r=await window.starkey.supra.sendTransaction(e);if(!r)throw new Error("Transaction failed - no hash returned from Supra provider");return{success:!0,txHash:r}}catch(t){}return{success:!1,reason:"All transaction approaches failed",error:"No valid transaction format accepted by wallet"}}catch(t){if(t instanceof Error){const e=t.message.toLowerCase();if(e.includes("user rejected")||e.includes("user denied")||e.includes("user cancelled")||e.includes("cancelled by user"))return{success:!1,reason:"User cancelled transaction"}}return{success:!1,error:t instanceof Error?t.message:"Unknown error",reason:"Transaction failed"}}}static async transfer(t){const{to:e,amount:r,options:n,type:a}=t,o={payload:{moduleAddress:"0000000000000000000000000000000000000000000000000000000000000001",moduleName:"supra_account",functionName:a?"transfer_coins":"transfer",typeArguments:a?[a]:[],arguments:[new c(e).toUint8Array(),d.bcsSerializeUint64(BigInt(r))]},options:n};return this.sendTransaction(o)}static isErrorResponse(t){return t&&"string"==typeof t.jsonrpc&&"object"==typeof t.error}},f="supra",m="CONNECT_REQUEST",y="DISCONNECT_REQUEST",k="SIGN_MESSAGE",S="SEND_TRANSACTION",v="GET_WALLET_BALANCE",x="WALLET_CHANGED",C="NETWORK_CHANGED",_=8,E=class{static isAvailable(){return"undefined"!=typeof window&&!!window.ribbit&&"app"===window.ribbit.type}listen(){}async sendMessage(t,e){if("undefined"==typeof window)throw new Error("SSR mode");if(!window.ribbit||"app"!==window.ribbit.type)throw new Error("AppTransport: ribbit app not detected");return await window.ribbit.postMessage(t,e)}registerHandler(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}on(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}off(t,e){"undefined"!=typeof window&&window.ribbit?.off?.(t,e)}},A=class{static isAvailable(){return"undefined"!=typeof window&&!!window.ribbit&&"extension"===window.ribbit.type}listen(){}async sendMessage(t,e){if("undefined"==typeof window)throw new Error("SSR mode");if(!window.ribbit||"extension"!==window.ribbit.type)throw new Error("ExtensionTransport: ribbit extension not detected");return await window.ribbit.postMessage(t,e)}registerHandler(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}on(t,e){"undefined"!=typeof window&&window.ribbit?.on?.(t,e)}off(t,e){"undefined"!=typeof window&&window.ribbit?.off?.(t,e)}};function I(){return"undefined"==typeof window?"":window.location.origin||window.location.hostname}function W(){return`ribbit_connected_wallet::${I()}`}function M(){try{localStorage.removeItem(W()),localStorage.removeItem(`ribbit_accounts::${I()}`)}catch{}}var T=null,B=class{static initializeClient(){if("undefined"==typeof window)return null;if(!window.ribbit?.type)return null;if(!T){if(T={transport:null,wallet:null},"app"===window.ribbit.type)T.transport=new E;else{if("extension"!==window.ribbit.type)throw new Error(`Unknown ribbit type: ${window.ribbit.type}`);T.transport=new A}T.transport.listen();const t=function(){try{const t=localStorage.getItem(W());if(t){const{address:e,expiry:r}=JSON.parse(t);return Date.now()<r?e:(M(),null)}return null}catch{return null}}();t&&(T.wallet={walletAddress:t,connected:!0})}return T}static isInstalled(){return"undefined"!=typeof window&&!!window.ribbit}static getWalletType(){return this.isInstalled()?window.ribbit.type:null}static setDefaultDappMetadata(t){this.defaultDappMetadata={...this.defaultDappMetadata,...t}}static getDefaultDappMetadata(){return{...this.defaultDappMetadata}}static async connect(t){if(!this.isInstalled())throw new Error("Ribbit wallet is not installed");const e={name:t?.name||this.defaultDappMetadata.name,url:t?.url||this.defaultDappMetadata.url,description:t?.description||this.defaultDappMetadata.description,logo:t?.logo||this.defaultDappMetadata.logo},r=this.initializeClient();if(!r||!r.transport)throw new Error("No transport available");const n=await r.transport.sendMessage(m,{dapp:e}),a="data"in n?n.data:n;if(!a?.approved||!("accounts"in a)||!a.accounts?.length)throw new Error(`Connection to wallet failed: ${a?.error||"Unknown error"}`);const o=a.accounts.filter(t=>t.chain===f)[0]?.walletAddress;if(void 0===o)throw new Error("No wallet address found");const i=_;return r.wallet={walletAddress:o,connected:!0,chainId:i,allAccounts:a.accounts},function(t,e,r=10){try{const e=Date.now()+24*r*60*60*1e3,n=W(),a=JSON.stringify({address:t,expiry:e});localStorage.setItem(n,a)}catch(t){}}(o),r.wallet}static async disconnect(){const t=this.initializeClient();t&&(t.wallet=null,M(),t.transport&&await t.transport.sendMessage(y,{}))}static getWalletInfo(){const t=this.initializeClient();return t?.wallet||null}static async getWalletBalance(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");const{chainId:r,resourceType:n,decimals:a}=t;return e.transport.sendMessage(v,{chainId:r,resourceType:n,decimals:a})}static async signMessage(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");try{const r=await e.transport.sendMessage(k,t);return r?.error&&(4001===r.error.code||r.error.message?.toLowerCase().includes("reject")||r.error.message?.toLowerCase().includes("cancel")||r.error.message?.toLowerCase().includes("denied"))?null:r}catch(t){if(b(t))return null;throw t}}static async sendTransaction(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Wallet not connected");try{let r;if("payload"in t){const n=t,a=(n.payload.typeArguments||[]).map(t=>"string"==typeof t?new l.TypeTagParser(t).parseTypeTag():t),o=n.payload.arguments.map(t=>t instanceof Uint8Array?Array.from(t):t),i=l.EntryFunction.natural(`${n.payload.moduleAddress}::${n.payload.moduleName}`,n.payload.functionName,a,o),s=new l.TransactionPayloadEntryFunction(i),u="https://rpc-mainnet.supra.com/rpc/v3";let p=BigInt(0),g={max_gas_price:200,mean_gas_price:100};try{const t=await fetch(`${u}/accounts/${encodeURIComponent(e.wallet.walletAddress)}`);if(t.ok){const e=await t.json();p=BigInt(e.sequence_number||0)}}catch(t){}try{const t=await fetch(`${u}/transactions/estimate_gas_price`);t.ok&&(g=await t.json())}catch(t){}const h=BigInt(Math.floor(Date.now()/1e3)+300),b=new l.RawTransaction(l.AccountAddress.fromHex(new c(e.wallet.walletAddress)),p,s,BigInt(Math.floor(50*g.max_gas_price)),BigInt(g.mean_gas_price),h,new l.ChainId(e.wallet.chainId||_)),w=d.bcsToBytes(b);let f;if("undefined"!=typeof Buffer)f=Buffer.from(w).toString("base64");else{if("undefined"==typeof btoa)throw new Error("Cannot encode to base64: no Buffer or btoa available");f=btoa(String.fromCharCode(...Array.from(w)))}r={rawTxn:f,chainId:e.wallet.chainId||_,meta:{description:`${n.payload.functionName} on ${n.payload.moduleName}`}}}else r=t;const n=await e.transport.sendMessage(S,r);return n?.txHash||n?.transactionHash||n?.hash?{success:!0,txHash:n.txHash||n.transactionHash||n.hash}:n?.error?{success:!1,error:n.error,reason:"Transaction failed"}:"string"==typeof n?{success:!0,txHash:n}:{success:!1,error:"Unknown response format from wallet",reason:"Transaction failed"}}catch(t){return b(t)?{success:!1,reason:"User cancelled transaction"}:{success:!1,error:h(t),reason:"Transaction failed"}}}static async transfer(t){const{to:e,amount:r,options:n}=t,a={payload:{moduleAddress:"0000000000000000000000000000000000000000000000000000000000000001",moduleName:"supra_account",functionName:"transfer",typeArguments:[],arguments:[new c(e).toUint8Array(),d.bcsSerializeUint64(BigInt(r))]},options:n};return this.sendTransaction(a)}static onWalletChanged(t){const e=this.initializeClient();e?.transport?.on?.(x,t)}static onNetworkChanged(t){const e=this.initializeClient();e?.transport?.on?.(C,t)}static offWalletChanged(t){const e=this.initializeClient();e?.transport?.off?.(x,t)}static offNetworkChanged(t){const e=this.initializeClient();e?.transport?.off?.(C,t)}static async getPublicKey(t){const e=this.initializeClient();if(!e||!e.transport)throw new Error("No transport available");if(!e.wallet)throw new Error("Not connected");try{const r=await e.transport.sendMessage("GET_PUBLIC_KEY",{address:t||e.wallet.walletAddress});if(r?.publicKey)return r.publicKey;throw new Error("Public key not available from wallet")}catch(t){throw new Error(`Failed to get public key: ${t instanceof Error?t.message:"Unknown error"}`)}}static async verifySignature(t,e,r,n=!1){try{if(!e||!e.startsWith("0x")&&e.length<128)return!1;if(!r)return!1;let a;if(a=e.startsWith("0x")?new Uint8Array(e.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):new Uint8Array(e.match(/.{2}/g)?.map(t=>parseInt(t,16))||[]),64!==a.length)return!1;const o=n?new Uint8Array(t.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]):(new TextEncoder).encode(t);let i;if(r.startsWith("0x"))i=new Uint8Array(r.slice(2).match(/.{2}/g)?.map(t=>parseInt(t,16))||[]);else{if(64!==r.length)throw new Error("Invalid public key format");i=new Uint8Array(r.match(/.{2}/g)?.map(t=>parseInt(t,16))||[])}if(32!==i.length)return!1;return await s.verifyAsync(a,o,i)}catch(t){return!1}}static async getPublicKeyFromAddress(t){try{return await this.getPublicKey(t)}catch(e){throw new Error(`Cannot get public key for address ${t}: ${e instanceof Error?e.message:"Unknown error"}`)}}};B.defaultDappMetadata={name:"Supra Connect",url:"undefined"!=typeof window?window.location.origin:"https://supra.com",description:"Connect to Supra blockchain wallets",logo:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwIDJMMTcgNkwxNyAxNEwxMCAxOEwzIDE0TDMgNkwxMCAyWiIgZmlsbD0iI0REMTQzOCIvPgo8L3N2Zz4K"};var D="https://rpc-mainnet.supra.com",R=class{constructor(t=D){this.state={connectedWallet:null,allAccounts:[],isConnecting:!1,connectingWallet:null,connectionError:null,availableWallets:[]},this.listeners=new Set,this.globalMetadata={},this.storeId=Math.random().toString(36).substring(2,9),this.rpcUrl=t,"undefined"!=typeof window&&(this.updateAvailableWallets(),this.setupPeriodicWalletDetection(),setTimeout(()=>{this.checkExistingConnections().catch(()=>{})},100))}updateAvailableWallets(){const t=[];w.isInstalled()&&t.push("starkey"),B.isInstalled()&&t.push("ribbit");const e=this.state.availableWallets;t.length===e.length&&t.every(t=>e.includes(t))||this.setState({availableWallets:t})}setupPeriodicWalletDetection(){const t=setInterval(()=>{this.updateAvailableWallets()},1e3);setTimeout(()=>{clearInterval(t)},3e4),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>this.updateAvailableWallets(),500)}),window.addEventListener("load",()=>{setTimeout(()=>this.updateAvailableWallets(),1e3)})}async checkExistingConnections(){const t=B.getWalletInfo();if(t)this.setState({connectedWallet:{...t,type:"ribbit"},allAccounts:t.allAccounts||[{walletAddress:t.walletAddress,chain:"supra"}]});else if(w.isInstalled())try{const t=await w.getAccounts();if(t&&t.length>0)return void this.setState({connectedWallet:{walletAddress:t[0],connected:!0,type:"starkey"},allAccounts:[{walletAddress:t[0],chain:"supra"}]})}catch(t){}}setState(t){this.state={...this.state,...t},this.listeners.forEach(t=>t(this.state))}getState(){return{...this.state}}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}async connectStarkey(t){if(!this.state.connectingWallet){this.setState({connectingWallet:"starkey",connectionError:null});try{const e=this.mergeMetadata(t?.dappMetadata),r=Object.keys(e).length>0?{name:e.name||"Supra Connect",url:e.url||("undefined"!=typeof window?window.location.origin:"https://supra.com"),chainId:e.chainId}:void 0,n=await w.connect(r);this.setState({connectedWallet:{...n,type:"starkey"},allAccounts:[{walletAddress:n.walletAddress,chain:"supra"}],connectingWallet:null,isConnecting:!1,connectionError:null})}catch(t){throw this.setState({connectionError:t instanceof Error?t.message:"Failed to connect to Starkey wallet",connectingWallet:null,isConnecting:!1}),t}}}async connectRibbit(t){if(!this.state.connectingWallet){this.setState({connectingWallet:"ribbit",connectionError:null});try{const e=this.mergeMetadata(t?.dappMetadata),r=Object.keys(e).length>0?{name:e.name,url:e.url,description:e.description,logo:e.logo}:void 0,n=await B.connect(r);this.setState({connectedWallet:{...n,type:"ribbit"},allAccounts:n.allAccounts||[{walletAddress:n.walletAddress,chain:"supra"}],connectingWallet:null,isConnecting:!1,connectionError:null})}catch(t){throw this.setState({connectionError:t instanceof Error?t.message:"Failed to connect to Ribbit wallet",connectingWallet:null,isConnecting:!1}),t}}}async disconnect(){if(this.state.connectedWallet)try{"starkey"===this.state.connectedWallet.type?await w.disconnect():"ribbit"===this.state.connectedWallet.type&&await B.disconnect(),this.setState({connectedWallet:null,allAccounts:[],connectionError:null})}catch(t){this.setState({connectedWallet:null,allAccounts:[],connectionError:null})}}getPublicAddress(t="supra"){if(!this.state.connectedWallet)return null;if(this.state.allAccounts.length>0){const e=this.state.allAccounts.find(e=>e.chain===t);return e?.walletAddress||null}return this.state.connectedWallet.walletAddress||null}getPublicAddresses(){return this.state.allAccounts.length>0?this.state.allAccounts.map(t=>t.walletAddress):this.state.connectedWallet?[this.state.connectedWallet.walletAddress]:[]}async signMessage(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{let e=null;if("starkey"===this.state.connectedWallet.type)e=await w.signMessage(t);else{if("ribbit"!==this.state.connectedWallet.type)return{success:!1,reason:"Unsupported wallet type"};{const r=await B.signMessage({message:t});e=null===r?null:r.signature||r}}if(null===e)return{success:!1,reason:"User cancelled"};try{return await this.verifySignature(t,e)?{success:!0,signature:e}:{success:!1,reason:"Signature verification failed"}}catch(t){return{success:!0,signature:e,reason:"Signature obtained but verification failed"}}}catch(t){return{success:!1,reason:t instanceof Error?t.message:"Failed to sign message"}}}clearError(){this.setState({connectionError:null})}async refreshConnections(){await this.checkExistingConnections()}setDappMetadata(t){this.globalMetadata={...this.globalMetadata,...t}}getDappMetadata(){return{...this.globalMetadata}}clearDappMetadata(){this.globalMetadata={}}refreshWalletDetection(){this.updateAvailableWallets()}getRpcUrl(){return this.rpcUrl}mergeMetadata(t){return{...this.globalMetadata,...t}}async verifySignature(t,e){if(!this.state.connectedWallet)throw new Error("No wallet connected");try{if("starkey"===this.state.connectedWallet.type){const r=await w.getPublicKeyFromAddress(this.state.connectedWallet.walletAddress);return await w.verifySignature(t,e,r)}if("ribbit"===this.state.connectedWallet.type){const r=await B.getPublicKeyFromAddress(this.state.connectedWallet.walletAddress);return await B.verifySignature(t,e,r)}throw new Error("Unsupported wallet type")}catch(t){throw new Error(t instanceof Error?t.message:"Failed to verify signature")}}async sendTransaction(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{return"starkey"===this.state.connectedWallet.type?await w.sendTransaction(t):"ribbit"===this.state.connectedWallet.type?await B.sendTransaction(t):{success:!1,reason:"Unsupported wallet type"}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Failed to send transaction",reason:"Transaction failed"}}}async transfer(t){if(!this.state.connectedWallet)return{success:!1,reason:"No wallet connected"};try{return"starkey"===this.state.connectedWallet.type?await w.transfer(t):"ribbit"===this.state.connectedWallet.type?await B.transfer(t):{success:!1,reason:"Unsupported wallet type"}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Failed to send transfer",reason:"Transfer failed"}}}static async estimateGasPrice(t="testnet"){const e="mainnet"===t?"https://rpc-mainnet.supra.com":"https://rpc-testnet.supra.com";try{const t=await fetch(`${e}/rpc/v2/transactions/estimate_gas_price`);if(t.ok)return await t.json();const r=await fetch(`${e}/rpc/v1/transactions/estimate_gas_price`);if(r.ok){const t=await r.json();return{mean_gas_price:t.gas_estimate||t.mean_gas_price||100,max_gas_price:t.max_gas_price||2*(t.gas_estimate||100),median_gas_price:t.median_gas_price||t.gas_estimate||100}}throw new Error("Both gas estimation endpoints failed")}catch(t){return{mean_gas_price:100,max_gas_price:200,median_gas_price:100}}}static async getRecommendedGasSettings(t="testnet"){try{const e=await this.estimateGasPrice(t),r=Math.max(1.2*e.mean_gas_price,100);return{gasUnitPrice:Math.ceil(r).toString(),maxGasAmount:"200000"}}catch(t){return{gasUnitPrice:"100",maxGasAmount:"200000"}}}};"undefined"!=typeof window?(window.__supraConnectStore||(window.__supraConnectStore=new R),window.__supraConnectStore):(global.__supraConnectStore||(global.__supraConnectStore=new R),global.__supraConnectStore);var N=e(void 0);function P({children:e,rpcUrl:r=D}){const n=t.useMemo(()=>new R(r),[r]);return u(N.Provider,{value:n,children:e})}function z(){const t=o(N);if(!t)throw new Error("useSupraConnectStore must be used within a SupraConnectProvider. Make sure to wrap your app with <SupraConnectProvider>.</SupraConnectProvider>");return t}function U(){const t=z(),[e,o]=r(()=>t.getState());n(()=>t.subscribe(o),[t]);const i=a(async()=>{await t.connectStarkey()},[t]),s=a(async()=>{await t.connectRibbit()},[t]),l=a(async()=>{await t.disconnect()},[t]),c=a(e=>t.getPublicAddress(e),[t]),d=a(()=>t.getPublicAddresses(),[t]),u=a(()=>e.allAccounts,[e.allAccounts]),p=a(async e=>t.signMessage(e),[t]),g=a(async e=>t.sendTransaction(e),[t]),h=a(async e=>t.transfer(e),[t]),b=a(()=>{t.clearError()},[t]),w=a(()=>{t.refreshWalletDetection()},[t]),f=a(()=>t.getRpcUrl(),[t]),m=a(e=>{t.setDappMetadata(e)},[t]),y=a(()=>t.getDappMetadata(),[t]),k=a(()=>{t.clearDappMetadata()},[t]);return{connectedWallet:e.connectedWallet,isConnected:!!e.connectedWallet,isConnecting:e.isConnecting,connectionError:e.connectionError,availableWallets:e.availableWallets,connectStarkey:i,connectRibbit:s,disconnect:l,getPublicAddress:c,getPublicAddresses:d,getAllAccounts:u,signMessage:p,sendTransaction:g,transfer:h,clearError:b,refreshWalletDetection:w,getRpcUrl:f,setDappMetadata:m,getDappMetadata:y,clearDappMetadata:k}}var L=({width:t=24,height:e=24})=>p("svg",{width:t,height:e,viewBox:"0 0 70 70",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[u("circle",{cx:"35",cy:"35",r:"35",fill:"#dd1438"}),u("path",{d:"M54.81,17.92A16.52,16.52,0,0,0,51,12.34a18.51,18.51,0,0,0-5.68-3.63,16.57,16.57,0,0,0-4.45-1.09,17.21,17.21,0,0,0-18.7,22.47v.05h0A17.12,17.12,0,0,0,18.69,33,17.92,17.92,0,0,0,15,38.76a18.45,18.45,0,0,0-1.21,6.71,16.48,16.48,0,0,0,1.4,6.61A16.66,16.66,0,0,0,19,57.66a18.67,18.67,0,0,0,5.69,3.63,17.23,17.23,0,0,0,6,1.2H31A17.26,17.26,0,0,0,47.58,40a17.34,17.34,0,0,0,3.69-3A17.9,17.9,0,0,0,55,31.25a18.34,18.34,0,0,0,1.22-6.72,16.49,16.49,0,0,0-1.41-6.61ZM39.73,19.16a6.61,6.61,0,0,1-.17-1.65,8.39,8.39,0,0,1,1.82.52,5.92,5.92,0,0,1,2.14,1.57,7.23,7.23,0,0,1,1.3,2.25,7.35,7.35,0,0,1,.38,2.52,6.49,6.49,0,0,1-1.91,4.23ZM43.8,29.94c.11-.1.22-.21.32-.32a7.47,7.47,0,0,0,1.57-2.52,7.82,7.82,0,0,0,.46-2.9,6.69,6.69,0,0,0-.65-2.79,8,8,0,0,0-1.68-2.24,6.548,6.548,0,0,0-4.27-1.77,7.29,7.29,0,0,1,.82-3.13,9.4,9.4,0,0,1,2.2.7,10.63,10.63,0,0,1,3.25,2.33,12.31,12.31,0,0,1,2.06,3.36,10.64,10.64,0,0,1,.65,3.81,8.21,8.21,0,0,1-.84,3.74,8.16,8.16,0,0,1-2.14,3.06,7.74,7.74,0,0,1-1,.75Zm1.27,3.35a11.84,11.84,0,0,0,1.37-1.18,11.43,11.43,0,0,0,3-7.82,10.28,10.28,0,0,0-.92-4.09,10.05,10.05,0,0,0-2.41-3.36,10.36,10.36,0,0,0-3.44-2.14,11.08,11.08,0,0,0-2.26-.53,6.86,6.86,0,0,1,1.22-1.64,6.76,6.76,0,0,1,1.24-1,9,9,0,0,1,1,.41,12.5,12.5,0,0,1,4.28,3A13.61,13.61,0,0,1,51,19.33a14.22,14.22,0,0,1,.92,5.12,14.86,14.86,0,0,1-1.11,5,13.56,13.56,0,0,1-2.9,4.08,11.72,11.72,0,0,1-2.08,1.67ZM26.88,58.37a7.38,7.38,0,0,1-.82-.33,12.5,12.5,0,0,1-4.28-3A13.61,13.61,0,0,1,19,50.67a14.22,14.22,0,0,1-.92-5.12,14.81,14.81,0,0,1,1.11-5,13.6,13.6,0,0,1,2.9-4.09A12.7,12.7,0,0,1,24,34.87l.76,2a12.48,12.48,0,0,0-1.23,1.06,11.12,11.12,0,0,0-2.24,3.63,11,11,0,0,0-.76,4.2,10.32,10.32,0,0,0,.92,4.09,10.53,10.53,0,0,0,5.85,5.49,11.07,11.07,0,0,0,2,.51,7.36,7.36,0,0,1-1.18,1.56,7,7,0,0,1-1.24.96ZM27.39,55a10.63,10.63,0,0,1-3.25-2.33,12.41,12.41,0,0,1-2.06-3.35,10.73,10.73,0,0,1-.65-3.82,8.21,8.21,0,0,1,.84-3.74,8.16,8.16,0,0,1,2.14-3.06,8.4,8.4,0,0,1,.8-.65L26,40.19l-.19.19a7.47,7.47,0,0,0-1.57,2.52,7.82,7.82,0,0,0-.46,2.9,6.69,6.69,0,0,0,.65,2.79,8,8,0,0,0,1.68,2.24,7,7,0,0,0,2.33,1.41,6.53,6.53,0,0,0,1.77.34,7.13,7.13,0,0,1-.86,3.11A9.3,9.3,0,0,1,27.39,55Zm2.71-4.22a7.76,7.76,0,0,1,.14,1.66,8.81,8.81,0,0,1-1.66-.5,5.92,5.92,0,0,1-2.14-1.57,7.23,7.23,0,0,1-1.3-2.25,7.35,7.35,0,0,1-.38-2.52,6.54,6.54,0,0,1,1.78-4.1Zm-14.28,1a18.45,18.45,0,0,1-1.11-6.33,18.18,18.18,0,0,1,1.41-6.23,16.76,16.76,0,0,1,3.63-5.23,15,15,0,0,1,3-2.31l.56,1.48a13.09,13.09,0,0,0-2.41,2A14.12,14.12,0,0,0,18,40a15.85,15.85,0,0,0-.92,5.5,15.34,15.34,0,0,0,1.22,5.39A14.16,14.16,0,0,0,26,58.23c.24.09.49.16.74.24a7.74,7.74,0,0,1-3.65,1.06,5.79,5.79,0,0,1-1.38-.16,15.94,15.94,0,0,1-2.32-2,16.25,16.25,0,0,1-3.57-5.51Zm38-21.16a16.76,16.76,0,0,1-3.63,5.23A15.07,15.07,0,0,1,47,38.35l-.56-1.48a12.48,12.48,0,0,0,2.6-2.1A14,14,0,0,0,52,30a15.85,15.85,0,0,0,.92-5.5,15.34,15.34,0,0,0-1.22-5.39A14.16,14.16,0,0,0,44,11.77c-.31-.12-.64-.21-1-.31a7.22,7.22,0,0,1,5.25-.83,16.57,16.57,0,0,1,2.32,2,16.25,16.25,0,0,1,3.55,5.5,18.49,18.49,0,0,1,1.11,6.33,18.18,18.18,0,0,1-1.39,6.24Z",fill:"#fff"})]});function j(t){return"object"==typeof t&&null!=t&&!Array.isArray(t)}function O(t){return String.fromCharCode(t+(t>25?39:97))}function F(t){return function(t){let e,r="";for(e=Math.abs(t);e>52;e=e/52|0)r=O(e%52)+r;return O(e%52)+r}(function(t,e){let r=e.length;for(;r;)t=33*t^e.charCodeAt(--r);return t}(5381,t)>>>0)}var $=/\s*!(important)?/i;function G(t){return"string"==typeof t?t.replaceAll(" ","_"):t}var Z=t=>{const e=new Map;return(...r)=>{const n=JSON.stringify(r);if(e.has(n))return e.get(n);const a=t(...r);return e.set(n,a),a}},H=new Set(["__proto__","constructor","prototype"]);function K(...t){return t.reduce((t,e)=>e?(Object.keys(e).forEach(r=>{if(H.has(r))return;const n=t[r],a=e[r];j(n)&&j(a)?t[r]=K(n,a):t[r]=a}),t):t,{})}var X=t=>null!=t;function Y(t,e,r={}){const{stop:n,getKey:a}=r;return function t(r,o=[]){if("object"==typeof(i=r)&&null!==i){const i={};for(const[s,l]of Object.entries(r)){const c=a?.(s,l)??s,d=[...o,c];if(n?.(r,d))return e(r,o);const u=t(l,d);X(u)&&(i[c]=u)}return i}var i;return e(r,o)}(t)}function V(t,e,r=!0){const{utility:n,conditions:a}=e,{hasShorthand:o,resolveShorthand:i}=n;return Y(t,t=>{return Array.isArray(t)?(e=t,r=a.breakpoints.keys,e.reduce((t,e,n)=>{const a=r[n];return null!=e&&(t[a]=e),t},{})):t;var e,r},{stop:t=>Array.isArray(t),getKey:r?t=>o?i(t):t:void 0})}var q={shift:t=>t,finalize:t=>t,breakpoints:{keys:[]}};function J(...t){return t.flat().filter(t=>{return j(t)&&Object.keys((e=t,Object.fromEntries(Object.entries(e??{}).filter(([t,e])=>void 0!==e)))).length>0;var e})}var Q=/([A-Z])/g,tt=/^ms-/,et=Z(t=>t.startsWith("--")?t:t.replace(Q,"-$1").replace(tt,"-ms-").toLowerCase());"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%".split(",").join("|");var rt=new Set("_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,2xl,2xlOnly,2xlDown,smToMd,smToLg,smToXl,smTo2xl,mdToLg,mdToXl,mdTo2xl,lgToXl,lgTo2xl,xlTo2xl,@/xs,@/sm,@/md,@/lg,@/xl,@/2xl,@/3xl,@/4xl,@/5xl,@/6xl,@/7xl,@/8xl,base".split(",")),nt=/^@|&|&$/;function at(t){return rt.has(t)||nt.test(t)}var ot=/^_/,it=/&|@/;var st=new Map,lt=new Map;"aspectRatio:asp,boxDecorationBreak:bx-db,zIndex:z,boxSizing:bx-s,objectPosition:obj-p,objectFit:obj-f,overscrollBehavior:ovs-b,overscrollBehaviorX:ovs-bx,overscrollBehaviorY:ovs-by,position:pos/1,top:top,left:left,inset:inset,insetInline:inset-x/insetX,insetBlock:inset-y/insetY,insetBlockEnd:inset-be,insetBlockStart:inset-bs,insetInlineEnd:inset-e/insetEnd/end,insetInlineStart:inset-s/insetStart/start,right:right,bottom:bottom,float:float,visibility:vis,display:d,hideFrom:hide,hideBelow:show,flexBasis:flex-b,flex:flex,flexDirection:flex-d/flexDir,flexGrow:flex-g,flexShrink:flex-sh,gridTemplateColumns:grid-tc,gridTemplateRows:grid-tr,gridColumn:grid-c,gridRow:grid-r,gridColumnStart:grid-cs,gridColumnEnd:grid-ce,gridAutoFlow:grid-af,gridAutoColumns:grid-ac,gridAutoRows:grid-ar,gap:gap,gridGap:grid-g,gridRowGap:grid-rg,gridColumnGap:grid-cg,rowGap:rg,columnGap:cg,justifyContent:jc,alignContent:ac,alignItems:ai,alignSelf:as,padding:p/1,paddingLeft:pl/1,paddingRight:pr/1,paddingTop:pt/1,paddingBottom:pb/1,paddingBlock:py/1/paddingY,paddingBlockEnd:pbe,paddingBlockStart:pbs,paddingInline:px/paddingX/1,paddingInlineEnd:pe/1/paddingEnd,paddingInlineStart:ps/1/paddingStart,marginLeft:ml/1,marginRight:mr/1,marginTop:mt/1,marginBottom:mb/1,margin:m/1,marginBlock:my/1/marginY,marginBlockEnd:mbe,marginBlockStart:mbs,marginInline:mx/1/marginX,marginInlineEnd:me/1/marginEnd,marginInlineStart:ms/1/marginStart,spaceX:sx,spaceY:sy,outlineWidth:ring-w/ringWidth,outlineColor:ring-c/ringColor,outline:ring/1,outlineOffset:ring-o/ringOffset,focusRing:focus-ring,focusVisibleRing:focus-v-ring,focusRingColor:focus-ring-c,focusRingOffset:focus-ring-o,focusRingWidth:focus-ring-w,focusRingStyle:focus-ring-s,divideX:dvd-x,divideY:dvd-y,divideColor:dvd-c,divideStyle:dvd-s,width:w/1,inlineSize:w-is,minWidth:min-w/minW,minInlineSize:min-w-is,maxWidth:max-w/maxW,maxInlineSize:max-w-is,height:h/1,blockSize:h-bs,minHeight:min-h/minH,minBlockSize:min-h-bs,maxHeight:max-h/maxH,maxBlockSize:max-b,boxSize:size,color:c,fontFamily:ff,fontSize:fs,fontSizeAdjust:fs-a,fontPalette:fp,fontKerning:fk,fontFeatureSettings:ff-s,fontWeight:fw,fontSmoothing:fsmt,fontVariant:fv,fontVariantAlternates:fv-alt,fontVariantCaps:fv-caps,fontVariationSettings:fv-s,fontVariantNumeric:fv-num,letterSpacing:ls,lineHeight:lh,textAlign:ta,textDecoration:td,textDecorationColor:td-c,textEmphasisColor:te-c,textDecorationStyle:td-s,textDecorationThickness:td-t,textUnderlineOffset:tu-o,textTransform:tt,textIndent:ti,textShadow:tsh,textShadowColor:tsh-c/textShadowColor,textOverflow:tov,verticalAlign:va,wordBreak:wb,textWrap:tw,truncate:trunc,lineClamp:lc,listStyleType:li-t,listStylePosition:li-pos,listStyleImage:li-img,listStyle:li-s,backgroundPosition:bg-p/bgPosition,backgroundPositionX:bg-p-x/bgPositionX,backgroundPositionY:bg-p-y/bgPositionY,backgroundAttachment:bg-a/bgAttachment,backgroundClip:bg-cp/bgClip,background:bg/1,backgroundColor:bg-c/bgColor,backgroundOrigin:bg-o/bgOrigin,backgroundImage:bg-i/bgImage,backgroundRepeat:bg-r/bgRepeat,backgroundBlendMode:bg-bm/bgBlendMode,backgroundSize:bg-s/bgSize,backgroundGradient:bg-grad/bgGradient,backgroundLinear:bg-linear/bgLinear,backgroundRadial:bg-radial/bgRadial,backgroundConic:bg-conic/bgConic,textGradient:txt-grad,gradientFromPosition:grad-from-pos,gradientToPosition:grad-to-pos,gradientFrom:grad-from,gradientTo:grad-to,gradientVia:grad-via,gradientViaPosition:grad-via-pos,borderRadius:bdr/rounded,borderTopLeftRadius:bdr-tl/roundedTopLeft,borderTopRightRadius:bdr-tr/roundedTopRight,borderBottomRightRadius:bdr-br/roundedBottomRight,borderBottomLeftRadius:bdr-bl/roundedBottomLeft,borderTopRadius:bdr-t/roundedTop,borderRightRadius:bdr-r/roundedRight,borderBottomRadius:bdr-b/roundedBottom,borderLeftRadius:bdr-l/roundedLeft,borderStartStartRadius:bdr-ss/roundedStartStart,borderStartEndRadius:bdr-se/roundedStartEnd,borderStartRadius:bdr-s/roundedStart,borderEndStartRadius:bdr-es/roundedEndStart,borderEndEndRadius:bdr-ee/roundedEndEnd,borderEndRadius:bdr-e/roundedEnd,border:bd,borderWidth:bd-w,borderTopWidth:bd-t-w,borderLeftWidth:bd-l-w,borderRightWidth:bd-r-w,borderBottomWidth:bd-b-w,borderBlockStartWidth:bd-bs-w,borderBlockEndWidth:bd-be-w,borderColor:bd-c,borderInline:bd-x/borderX,borderInlineWidth:bd-x-w/borderXWidth,borderInlineColor:bd-x-c/borderXColor,borderBlock:bd-y/borderY,borderBlockWidth:bd-y-w/borderYWidth,borderBlockColor:bd-y-c/borderYColor,borderLeft:bd-l,borderLeftColor:bd-l-c,borderInlineStart:bd-s/borderStart,borderInlineStartWidth:bd-s-w/borderStartWidth,borderInlineStartColor:bd-s-c/borderStartColor,borderRight:bd-r,borderRightColor:bd-r-c,borderInlineEnd:bd-e/borderEnd,borderInlineEndWidth:bd-e-w/borderEndWidth,borderInlineEndColor:bd-e-c/borderEndColor,borderTop:bd-t,borderTopColor:bd-t-c,borderBottom:bd-b,borderBottomColor:bd-b-c,borderBlockEnd:bd-be,borderBlockEndColor:bd-be-c,borderBlockStart:bd-bs,borderBlockStartColor:bd-bs-c,opacity:op,boxShadow:bx-sh/shadow,boxShadowColor:bx-sh-c/shadowColor,mixBlendMode:mix-bm,filter:filter,brightness:brightness,contrast:contrast,grayscale:grayscale,hueRotate:hue-rotate,invert:invert,saturate:saturate,sepia:sepia,dropShadow:drop-shadow,blur:blur,backdropFilter:bkdp,backdropBlur:bkdp-blur,backdropBrightness:bkdp-brightness,backdropContrast:bkdp-contrast,backdropGrayscale:bkdp-grayscale,backdropHueRotate:bkdp-hue-rotate,backdropInvert:bkdp-invert,backdropOpacity:bkdp-opacity,backdropSaturate:bkdp-saturate,backdropSepia:bkdp-sepia,borderCollapse:bd-cl,borderSpacing:bd-sp,borderSpacingX:bd-sx,borderSpacingY:bd-sy,tableLayout:tbl,transitionTimingFunction:trs-tmf,transitionDelay:trs-dly,transitionDuration:trs-dur,transitionProperty:trs-prop,transition:trs,animation:anim,animationName:anim-n,animationTimingFunction:anim-tmf,animationDuration:anim-dur,animationDelay:anim-dly,animationPlayState:anim-ps,animationComposition:anim-comp,animationFillMode:anim-fm,animationDirection:anim-dir,animationIterationCount:anim-ic,animationRange:anim-r,animationState:anim-s,animationRangeStart:anim-rs,animationRangeEnd:anim-re,animationTimeline:anim-tl,transformOrigin:trf-o,transformBox:trf-b,transformStyle:trf-s,transform:trf,rotate:rotate,rotateX:rotate-x,rotateY:rotate-y,rotateZ:rotate-z,scale:scale,scaleX:scale-x,scaleY:scale-y,translate:translate,translateX:translate-x/x,translateY:translate-y/y,translateZ:translate-z/z,accentColor:ac-c,caretColor:ca-c,scrollBehavior:scr-bhv,scrollbar:scr-bar,scrollbarColor:scr-bar-c,scrollbarGutter:scr-bar-g,scrollbarWidth:scr-bar-w,scrollMargin:scr-m,scrollMarginLeft:scr-ml,scrollMarginRight:scr-mr,scrollMarginTop:scr-mt,scrollMarginBottom:scr-mb,scrollMarginBlock:scr-my/scrollMarginY,scrollMarginBlockEnd:scr-mbe,scrollMarginBlockStart:scr-mbt,scrollMarginInline:scr-mx/scrollMarginX,scrollMarginInlineEnd:scr-me,scrollMarginInlineStart:scr-ms,scrollPadding:scr-p,scrollPaddingBlock:scr-py/scrollPaddingY,scrollPaddingBlockStart:scr-pbs,scrollPaddingBlockEnd:scr-pbe,scrollPaddingInline:scr-px/scrollPaddingX,scrollPaddingInlineEnd:scr-pe,scrollPaddingInlineStart:scr-ps,scrollPaddingLeft:scr-pl,scrollPaddingRight:scr-pr,scrollPaddingTop:scr-pt,scrollPaddingBottom:scr-pb,scrollSnapAlign:scr-sa,scrollSnapStop:scrs-s,scrollSnapType:scrs-t,scrollSnapStrictness:scrs-strt,scrollSnapMargin:scrs-m,scrollSnapMarginTop:scrs-mt,scrollSnapMarginBottom:scrs-mb,scrollSnapMarginLeft:scrs-ml,scrollSnapMarginRight:scrs-mr,scrollSnapCoordinate:scrs-c,scrollSnapDestination:scrs-d,scrollSnapPointsX:scrs-px,scrollSnapPointsY:scrs-py,scrollSnapTypeX:scrs-tx,scrollSnapTypeY:scrs-ty,scrollTimeline:scrtl,scrollTimelineAxis:scrtl-a,scrollTimelineName:scrtl-n,touchAction:tch-a,userSelect:us,overflow:ov,overflowWrap:ov-wrap,overflowX:ov-x,overflowY:ov-y,overflowAnchor:ov-a,overflowBlock:ov-b,overflowInline:ov-i,overflowClipBox:ovcp-bx,overflowClipMargin:ovcp-m,overscrollBehaviorBlock:ovs-bb,overscrollBehaviorInline:ovs-bi,fill:fill,stroke:stk,strokeWidth:stk-w,strokeDasharray:stk-dsh,strokeDashoffset:stk-do,strokeLinecap:stk-lc,strokeLinejoin:stk-lj,strokeMiterlimit:stk-ml,strokeOpacity:stk-op,srOnly:sr,debug:debug,appearance:ap,backfaceVisibility:bfv,clipPath:cp-path,hyphens:hy,mask:msk,maskImage:msk-i,maskSize:msk-s,textSizeAdjust:txt-adj,container:cq,containerName:cq-n,containerType:cq-t,cursor:cursor,textStyle:textStyle".split(",").forEach(t=>{const[e,r]=t.split(":"),[n,...a]=r.split("/");st.set(e,n),a.length&&a.forEach(t=>{lt.set("1"===t?n:t,e)})});var ct=t=>lt.get(t)||t,dt={conditions:{shift:function(t){return t.sort((t,e)=>{const r=at(t),n=at(e);return r&&!n?1:!r&&n?-1:0})},finalize:function(t){return t.map(t=>rt.has(t)?t.replace(ot,""):it.test(t)?`[${G(t.trim())}]`:t)},breakpoints:{keys:["base","sm","md","lg","xl","2xl"]}},utility:{prefix:"sc",transform:(t,e)=>{const r=ct(t);return{className:`${st.get(r)||et(r)}_${G(e)}`}},hasShorthand:!0,toHash:(t,e)=>e(t.join(":")),resolveShorthand:ct}},ut=function(t){const{utility:e,hash:r,conditions:n=q}=t,a=t=>[e.prefix,t].filter(Boolean).join("-");return Z(({base:o,...i}={})=>{const s=V(Object.assign(i,o),t),l=new Set;return Y(s,(t,o)=>{if(null==t)return;const i=function(t){return"string"==typeof t&&$.test(t)}(t),[s,...c]=n.shift(o),d=c.slice().filter(t=>!(t=>"base"===t)(t));const u=e.transform(s,function(t){return"string"==typeof t?t.replace($,"").trim():t}((t=>"string"==typeof t?t.replaceAll(/[\n\s]+/g," "):t)(t)));let p=((t,o)=>{let i;if(r){const r=[...n.finalize(t),o];i=a(e.toHash(r,F))}else i=[...n.finalize(t),a(o)].join(":");return i})(d,u.className);i&&(p=`${p}!`),l.add(p)}),Array.from(l).join(" ")})}(dt),pt=(...t)=>ut(gt(...t));pt.raw=(...t)=>gt(...t);var{mergeCss:gt}=function(t){function e(e){const r=J(...e);return 1===r.length?r:r.map(e=>V(e,t))}return{mergeCss:Z(function(...t){return K(...e(t))}),assignCss:function(...t){return Object.assign({},...e(t))}}}(dt),ht=({width:t=24,height:e=24})=>p("svg",{width:t,height:e,viewBox:"0 0 51 49",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[u("path",{d:"M25.6912 0.895264C11.9301 0.895264 0.772217 12.1784 0.772217 26.0887C0.772217 36.1757 6.63365 44.869 15.0984 48.8953L19.3546 37.2704C15.5262 35.049 12.9439 30.8733 12.9439 26.0887C12.9439 18.9707 18.6522 13.2036 25.686 13.2036C32.7197 13.2036 38.428 18.976 38.428 26.0887C38.428 30.8733 35.8458 35.0437 32.0174 37.2704L36.2735 48.8953C44.7383 44.869 50.5997 36.1704 50.5997 26.0887C50.605 12.1784 39.4472 0.895264 25.6912 0.895264Z",fill:"url(#paint0_linear_1463_870)"}),u("path",{d:"M35.4972 26.0887C28.9599 27.915 27.4971 29.3941 25.6912 36.0048C23.8852 29.3941 22.4225 27.915 15.8851 26.0887C22.4225 24.2625 23.8852 22.7833 25.6912 16.1726C27.4971 22.7833 28.9599 24.2625 35.4972 26.0887Z",fill:"white"}),u("defs",{children:p("linearGradient",{id:"paint0_linear_1463_870",x1:"0",y1:"25.4765",x2:"50.2406",y2:"25.4765",gradientUnits:"userSpaceOnUse",children:[u("stop",{stopColor:"#FEBF4E"}),u("stop",{offset:"0.715",stopColor:"#FC4CD2"})]})})]}),bt=({width:t=24,height:e=24})=>p("svg",{id:"Logo",xmlns:"http://www.w3.org/2000/svg",version:"1.1",width:t,height:e,viewBox:"0 0 148.8 85.5",children:[u("path",{fill:"#a5ff71",d:"M144.6,39c-1.4-2.1-2-4.6-1.7-7s.4-4.6.2-7c-1.3-13.4-12.7-24.2-26.1-24.8-9.3-.4-17.7,3.8-22.9,10.6-2.2,2.8-5.7,4.1-9.2,3.9-3.4-.2-6.9-.4-10.5-.4s-8.1.2-12.1.5-5.9-1.1-7.7-3.6C48.5,3,38-1.7,26.6.7,17,2.7,9.1,10.1,6.3,19.5c-1.2,4.2-1.5,8.3-.9,12.1.4,2.9-.2,5.8-1.8,8.3-2.2,3.5-3.4,7.1-3.4,11,0,16.8,22.7,34,54.3,34.5,6.2,0,13.9-3.5,22.2-3.3,8.9.2,15.3,3.1,23,3.3,29,.9,49-18.6,49-34.5s-1.4-8.2-4.1-11.9ZM25.3,40.6c-9.9,0-17.9-8-17.9-17.9S15.5,4.9,25.3,4.9s17.9,8,17.9,17.9-8,17.9-17.9,17.9ZM69.1,48.1c-1,0-1.8-1-1.8-2.2s.8-2.2,1.8-2.2,1.8,1,1.8,2.2-.8,2.2-1.8,2.2ZM79.7,48.1c-1,0-1.8-1-1.8-2.2s.8-2.2,1.8-2.2,1.8,1,1.8,2.2-.8,2.2-1.8,2.2ZM123.3,40.6c-9.9,0-17.9-8-17.9-17.9s8-17.9,17.9-17.9,17.9,8,17.9,17.9-8,17.9-17.9,17.9Z"}),u("circle",{fill:"#a5ff71",cx:"30.6",cy:"22.7",r:"7.8"}),u("circle",{fill:"#a5ff71",cx:"118.5",cy:"22.7",r:"7.8"})]}),wt=class extends i{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,e){console.error("SupraConnect Error:",t,e),this.props.onError?.(t,e)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p("div",{className:pt({backgroundColor:"#fee2e2",color:"#dc2626",padding:"1rem",borderRadius:"0.5rem",border:"1px solid #fecaca",textAlign:"center",maxWidth:"400px",margin:"0 auto"}),children:[u("h3",{className:pt({fontSize:"1.1rem",fontWeight:"600",marginBottom:"0.5rem"}),children:"Wallet Connection Error"}),u("p",{className:pt({fontSize:"0.9rem",marginBottom:"1rem"}),children:"Something went wrong while connecting to your wallet. Please try refreshing the page."}),u("button",{onClick:()=>this.setState({hasError:!1,error:void 0}),className:pt({backgroundColor:"#dc2626",color:"white",padding:"0.5rem 1rem",borderRadius:"0.25rem",border:"none",cursor:"pointer",fontSize:"0.9rem",fontWeight:"500",_hover:{backgroundColor:"#b91c1c"}}),children:"Try Again"})]}):this.props.children}},ft=(t={})=>{const e=z(),[a,o]=r(!1),[i,s]=r(!1),[l,c]=r(()=>e.getState());n(()=>e.subscribe(c),[e]);const{connectedWallet:d,connectionError:h,availableWallets:b,connectingWallet:w}=l,f=b.includes("starkey"),m=b.includes("ribbit"),y=()=>{s(!0),setTimeout(()=>{o(!1),s(!1),e.clearError()},300)};return p(wt,{children:[p("button",{onClick:d?async()=>{try{await e.disconnect()}catch(t){}}:()=>o(!0),className:pt({display:"flex",gap:"0.75rem",alignItems:"center",justifyContent:"center",color:"#DD1438",fontWeight:"600",fontSize:"0.95rem",backgroundColor:"white",borderRadius:"0.375rem",border:"2px solid #DD1438",padding:"0.75rem 1.25rem",cursor:"pointer",transition:"all 0.2s ease",width:t.width??"100%",_hover:{backgroundColor:"#DD1438",color:"white"},_active:{backgroundColor:"#C1122D",color:"white"}}),children:[u(L,{width:20,height:20}),d?`${d.walletAddress.slice(0,6)}...${d.walletAddress.slice(-4)}`:"Connect Wallet"]}),a&&g(u("div",{className:pt({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.8)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,animation:i?"fadeOut 0.3s ease-in":"fadeIn 0.3s ease-out"}),onClick:y,children:p("div",{className:pt({backgroundColor:"white",borderRadius:"0.75rem",padding:"2rem",maxWidth:"420px",border:"2px solid #DD1438",width:"90%",position:"relative",animation:i?"popOut 0.3s ease-in":"popUp 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55)",transformOrigin:"center"}),onClick:t=>t.stopPropagation(),children:[u("button",{onClick:y,className:pt({position:"absolute",top:"1rem",right:"1rem",background:"none",border:"none",fontSize:"1.5rem",cursor:"pointer",color:"gray",_hover:{color:"black"}}),children:"×"}),p("div",{className:pt({textAlign:"center",marginBottom:"2rem"}),children:[u("h2",{className:pt({fontSize:"1.5rem",fontWeight:"700",color:"#DD1438",marginBottom:"0.5rem"}),children:"Connect Wallet"}),u("p",{className:pt({color:"#6b7280",fontSize:"0.9rem"}),children:"Choose your preferred wallet to connect"})]}),p("div",{className:pt({display:"flex",flexDirection:"column",gap:"1rem"}),children:[h&&u("div",{className:pt({backgroundColor:"#fee2e2",color:"#dc2626",padding:"0.75rem",borderRadius:"0.5rem",marginBottom:"1rem",fontSize:"0.9rem",textAlign:"center"}),children:h}),f?p("button",{onClick:async()=>{try{const r={dappMetadata:{...t.dappMetadata,...t.metadata}};await e.connectStarkey(r),y()}catch(t){}},disabled:null!==w,className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:null!==w?"not-allowed":"pointer",fontWeight:"600",fontSize:"1rem",color:"white",opacity:null!==w?.6:1,transition:"all 0.2s ease",_hover:{backgroundColor:null!==w?"#1e1b4b":"#312e81",color:"white"}}),children:[u(ht,{width:28,height:28}),u("span",{children:"starkey"===w?"Connecting...":"Starkey Wallet"})]}):p("a",{href:"https://starkey.app/",target:"_blank",rel:"noopener noreferrer",className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:"pointer",fontWeight:"600",fontSize:"1rem",color:"white",textDecoration:"none",transition:"all 0.2s ease",_hover:{backgroundColor:"#312e81",color:"white"}}),children:[u(ht,{width:28,height:28}),u("span",{children:"Install Starkey Wallet"})]}),m?p("button",{onClick:async()=>{try{const r={dappMetadata:{...t.dappMetadata,...t.metadata}};await e.connectRibbit(r),y()}catch(t){}},disabled:null!==w,className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:null!==w?"not-allowed":"pointer",fontWeight:"600",fontSize:"1rem",color:"white",opacity:null!==w?.6:1,transition:"all 0.2s ease",_hover:{backgroundColor:null!==w?"#1e1b4b":"#312e81",color:"white"}}),children:[u(bt,{width:28,height:28}),u("span",{children:"ribbit"===w?"Connecting...":"Ribbit Wallet"})]}):p("a",{href:"https://ribbitwallet.com/",target:"_blank",rel:"noopener noreferrer",className:pt({display:"flex",alignItems:"center",gap:"1rem",padding:"1.25rem",border:"2px solid #e5e7eb",borderRadius:"0.5rem",backgroundColor:"#1e1b4b",cursor:"pointer",fontWeight:"600",fontSize:"1rem",color:"white",textDecoration:"none",transition:"all 0.2s ease",_hover:{backgroundColor:"#312e81",color:"white"}}),children:[u(bt,{width:28,height:28}),u("span",{children:"Install Ribbit Wallet"})]})]})]})}),document.body)]})};export{R as ConnectionStore,D as DEFAULT_RPC_URL,B as RibbitWalletUtils,w as StarkeyWalletUtils,ft as SupraConnectButton,P as SupraConnectProvider,U as useSupraConnect};
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer reset, base, tokens, recipes, utilities;@layer base{:root{--made-with-panda:'🐼'}*,::backdrop,:after,:before{--blur: ;--brightness: ;--contrast: ;--grayscale: ;--hue-rotate: ;--invert: ;--saturate: ;--sepia: ;--drop-shadow: ;--backdrop-blur: ;--backdrop-brightness: ;--backdrop-contrast: ;--backdrop-grayscale: ;--backdrop-hue-rotate: ;--backdrop-invert: ;--backdrop-opacity: ;--backdrop-saturate: ;--backdrop-sepia: ;--gradient-from-position: ;--gradient-to-position: ;--gradient-via-position: ;--scroll-snap-strictness:proximity;--border-spacing-x:0;--border-spacing-y:0;--translate-x:0;--translate-y:0;--rotate:0;--rotate-x:0;--rotate-y:0;--skew-x:0;--skew-y:0;--scale-x:1;--scale-y:1}}@layer tokens{:where(:root,:host){--sc-colors-current:currentColor;--sc-colors-transparent:transparent;--sc-colors-white:#fff;--sc-colors-black:#000;--sc-colors-red50:#fef2f2;--sc-colors-red600:#dc2626;--sc-colors-red700:#b91c1c;--sc-colors-gray50:#f9fafb;--sc-colors-gray100:#f3f4f6;--sc-colors-gray200:#e5e7eb;--sc-colors-gray600:#4b5563;--sc-colors-indigo700:#4f46e5;--sc-colors-indigo800:#3730a3}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes popUp{0%{opacity:0;transform:scale(0.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes popOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(0.8) translateY(20px)}}}@layer utilities{.sc-p_1rem{padding:1rem}.sc-bd_1px_solid_\#fecaca{border:1px solid #fecaca}.sc-m_0_auto{margin:0 auto}.sc-p_0\.5rem_1rem{padding:0.5rem 1rem}.sc-bd_none{border:none}.sc-bd_2px_solid_\#DD1438{border:2px solid #DD1438}.sc-p_0\.75rem_1\.25rem{padding:0.75rem 1.25rem}.sc-anim_fadeOut_0\.3s_ease-in{animation:fadeOut 0.3s ease-in}.sc-anim_fadeIn_0\.3s_ease-out{animation:fadeIn 0.3s ease-out}.sc-anim_popOut_0\.3s_ease-in{animation:popOut 0.3s ease-in}.sc-anim_popUp_0\.3s_cubic-bezier\(0\.68\,_-0\.55\,_0\.265\,_1\.55\){animation:popUp 0.3s cubic-bezier(0.68,-0.55,0.265,1.55)}.sc-p_2rem{padding:2rem}.sc-bg_none{background:none}.sc-p_0\.75rem{padding:0.75rem}.sc-p_1\.25rem{padding:1.25rem}.sc-bd_2px_solid_\#e5e7eb{border:2px solid #e5e7eb}.sc-bdr_0\.5rem{border-radius:0.5rem}.sc-bdr_0\.25rem{border-radius:0.25rem}.sc-gap_0\.75rem{gap:0.75rem}.sc-bdr_0\.375rem{border-radius:0.375rem}.sc-trs_all_0\.2s_ease{transition:all 0.2s ease}.sc-bdr_0\.75rem{border-radius:0.75rem}.sc-gap_1rem{gap:1rem}.sc-td_none{text-decoration:none}.sc-bg-c_\#fee2e2{background-color:#fee2e2}.sc-c_\#dc2626{color:#dc2626}.sc-ta_center{text-align:center}.sc-fs_1\.1rem{font-size:1.1rem}.sc-fw_600{font-weight:600}.sc-fs_0\.9rem{font-size:0.9rem}.sc-bg-c_\#dc2626{background-color:#dc2626}.sc-c_white{color:var(--sc-colors-white)}.sc-cursor_pointer{cursor:pointer}.sc-fw_500{font-weight:500}.sc-d_flex{display:flex}.sc-ai_center{align-items:center}.sc-jc_center{justify-content:center}.sc-c_\#DD1438{color:#DD1438}.sc-fs_0\.95rem{font-size:0.95rem}.sc-bg-c_white{background-color:var(--sc-colors-white)}.sc-pos_fixed{position:fixed}.sc-bg-c_rgba\(0\,_0\,_0\,_0\.8\){background-color:rgba(0,0,0,0.8)}.sc-z_1000{z-index:1000}.sc-pos_relative{position:relative}.sc-trf-o_center{transform-origin:center}.sc-pos_absolute{position:absolute}.sc-fs_1\.5rem{font-size:1.5rem}.sc-c_gray{color:gray}.sc-fw_700{font-weight:700}.sc-c_\#6b7280{color:#6b7280}.sc-flex-d_column{flex-direction:column}.sc-cursor_not-allowed{cursor:not-allowed}.sc-op_0\.6{opacity:0.6}.sc-op_1{opacity:1}.sc-bg-c_\#1e1b4b{background-color:#1e1b4b}.sc-fs_1rem{font-size:1rem}.sc-max-w_400px{max-width:400px}.sc-mb_0\.5rem{margin-bottom:0.5rem}.sc-mb_1rem{margin-bottom:1rem}.sc-top_0{top:0}.sc-left_0{left:0}.sc-right_0{right:0}.sc-bottom_0{bottom:0}.sc-max-w_420px{max-width:420px}.sc-w_90\%{width:90%}.sc-top_1rem{top:1rem}.sc-right_1rem{right:1rem}.sc-mb_2rem{margin-bottom:2rem}.sc-w_20{width:20px}.sc-h_20{height:20px}.sc-w_28{width:28px}.sc-h_28{height:28px}.hover\:sc-bg-c_\#b91c1c:is(:hover,[data-hover]){background-color:#b91c1c}.hover\:sc-bg-c_\#DD1438:is(:hover,[data-hover]){background-color:#DD1438}.hover\:sc-c_white:is(:hover,[data-hover]){color:var(--sc-colors-white)}.hover\:sc-c_black:is(:hover,[data-hover]){color:var(--sc-colors-black)}.hover\:sc-bg-c_\#1e1b4b:is(:hover,[data-hover]){background-color:#1e1b4b}.hover\:sc-bg-c_\#312e81:is(:hover,[data-hover]){background-color:#312e81}.active\:sc-bg-c_\#C1122D:is(:active,[data-active]){background-color:#C1122D}.active\:sc-c_white:is(:active,[data-active]){color:var(--sc-colors-white)}}
|
|
1
|
+
@layer reset, base, tokens, recipes, utilities;@layer base{:root{--made-with-panda:'🐼'}*,::backdrop,:after,:before{--blur: ;--brightness: ;--contrast: ;--grayscale: ;--hue-rotate: ;--invert: ;--saturate: ;--sepia: ;--drop-shadow: ;--backdrop-blur: ;--backdrop-brightness: ;--backdrop-contrast: ;--backdrop-grayscale: ;--backdrop-hue-rotate: ;--backdrop-invert: ;--backdrop-opacity: ;--backdrop-saturate: ;--backdrop-sepia: ;--gradient-from-position: ;--gradient-to-position: ;--gradient-via-position: ;--scroll-snap-strictness:proximity;--border-spacing-x:0;--border-spacing-y:0;--translate-x:0;--translate-y:0;--rotate:0;--rotate-x:0;--rotate-y:0;--skew-x:0;--skew-y:0;--scale-x:1;--scale-y:1}}@layer tokens{:where(:root,:host){--sc-colors-current:currentColor;--sc-colors-transparent:transparent;--sc-colors-white:#fff;--sc-colors-black:#000;--sc-colors-red50:#fef2f2;--sc-colors-red600:#dc2626;--sc-colors-red700:#b91c1c;--sc-colors-gray50:#f9fafb;--sc-colors-gray100:#f3f4f6;--sc-colors-gray200:#e5e7eb;--sc-colors-gray600:#4b5563;--sc-colors-indigo700:#4f46e5;--sc-colors-indigo800:#3730a3}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes popUp{0%{opacity:0;transform:scale(0.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes popOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(0.8) translateY(20px)}}}@layer utilities{.sc-p_1rem{padding:1rem}.sc-bd_1px_solid_\#fecaca{border:1px solid #fecaca}.sc-m_0_auto{margin:0 auto}.sc-p_0\.5rem_1rem{padding:0.5rem 1rem}.sc-bd_none{border:none}.sc-bd_2px_solid_\#DD1438{border:2px solid #DD1438}.sc-p_0\.75rem_1\.25rem{padding:0.75rem 1.25rem}.sc-anim_fadeOut_0\.3s_ease-in{animation:fadeOut 0.3s ease-in}.sc-anim_fadeIn_0\.3s_ease-out{animation:fadeIn 0.3s ease-out}.sc-anim_popOut_0\.3s_ease-in{animation:popOut 0.3s ease-in}.sc-anim_popUp_0\.3s_cubic-bezier\(0\.68\,_-0\.55\,_0\.265\,_1\.55\){animation:popUp 0.3s cubic-bezier(0.68,-0.55,0.265,1.55)}.sc-p_2rem{padding:2rem}.sc-bg_none{background:none}.sc-p_0\.75rem{padding:0.75rem}.sc-p_1\.25rem{padding:1.25rem}.sc-bd_2px_solid_\#e5e7eb{border:2px solid #e5e7eb}.sc-bdr_0\.5rem{border-radius:0.5rem}.sc-bdr_0\.25rem{border-radius:0.25rem}.sc-gap_0\.75rem{gap:0.75rem}.sc-bdr_0\.375rem{border-radius:0.375rem}.sc-trs_all_0\.2s_ease{transition:all 0.2s ease}.sc-bdr_0\.75rem{border-radius:0.75rem}.sc-gap_1rem{gap:1rem}.sc-td_none{text-decoration:none}.sc-bg-c_\#fee2e2{background-color:#fee2e2}.sc-c_\#dc2626{color:#dc2626}.sc-ta_center{text-align:center}.sc-fs_1\.1rem{font-size:1.1rem}.sc-fw_600{font-weight:600}.sc-fs_0\.9rem{font-size:0.9rem}.sc-bg-c_\#dc2626{background-color:#dc2626}.sc-c_white{color:var(--sc-colors-white)}.sc-cursor_pointer{cursor:pointer}.sc-fw_500{font-weight:500}.sc-d_flex{display:flex}.sc-ai_center{align-items:center}.sc-jc_center{justify-content:center}.sc-c_\#DD1438{color:#DD1438}.sc-fs_0\.95rem{font-size:0.95rem}.sc-bg-c_white{background-color:var(--sc-colors-white)}.sc-pos_fixed{position:fixed}.sc-bg-c_rgba\(0\,_0\,_0\,_0\.8\){background-color:rgba(0,0,0,0.8)}.sc-z_1000{z-index:1000}.sc-pos_relative{position:relative}.sc-trf-o_center{transform-origin:center}.sc-pos_absolute{position:absolute}.sc-fs_1\.5rem{font-size:1.5rem}.sc-c_gray{color:gray}.sc-fw_700{font-weight:700}.sc-c_\#6b7280{color:#6b7280}.sc-flex-d_column{flex-direction:column}.sc-cursor_not-allowed{cursor:not-allowed}.sc-op_0\.6{opacity:0.6}.sc-op_1{opacity:1}.sc-bg-c_\#1e1b4b{background-color:#1e1b4b}.sc-fs_1rem{font-size:1rem}.sc-max-w_400px{max-width:400px}.sc-mb_0\.5rem{margin-bottom:0.5rem}.sc-mb_1rem{margin-bottom:1rem}.sc-w_100\%{width:100%}.sc-top_0{top:0}.sc-left_0{left:0}.sc-right_0{right:0}.sc-bottom_0{bottom:0}.sc-max-w_420px{max-width:420px}.sc-w_90\%{width:90%}.sc-top_1rem{top:1rem}.sc-right_1rem{right:1rem}.sc-mb_2rem{margin-bottom:2rem}.sc-w_20{width:20px}.sc-h_20{height:20px}.sc-w_28{width:28px}.sc-h_28{height:28px}.hover\:sc-bg-c_\#b91c1c:is(:hover,[data-hover]){background-color:#b91c1c}.hover\:sc-bg-c_\#DD1438:is(:hover,[data-hover]){background-color:#DD1438}.hover\:sc-c_white:is(:hover,[data-hover]){color:var(--sc-colors-white)}.hover\:sc-c_black:is(:hover,[data-hover]){color:var(--sc-colors-black)}.hover\:sc-bg-c_\#1e1b4b:is(:hover,[data-hover]){background-color:#1e1b4b}.hover\:sc-bg-c_\#312e81:is(:hover,[data-hover]){background-color:#312e81}.active\:sc-bg-c_\#C1122D:is(:active,[data-active]){background-color:#C1122D}.active\:sc-c_white:is(:active,[data-active]){color:var(--sc-colors-white)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gerritsen/supra-connect",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Custom React wallet connector for Supra L1 blockchain. Native support for Starkey and Ribbit wallets with a unified API. Built with care for the Supra ecosystem.",
|
|
5
5
|
"author": "Martin Gerritsen",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
"web3"
|
|
39
39
|
],
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@pandacss/dev": "^1.
|
|
42
|
-
"@pandacss/types": "^1.
|
|
43
|
-
"@types/node": "^24.
|
|
44
|
-
"@types/react": "^19.2.
|
|
45
|
-
"@types/react-dom": "^19.2.
|
|
46
|
-
"concurrently": "^
|
|
47
|
-
"ngrok": "
|
|
41
|
+
"@pandacss/dev": "^1.7.0",
|
|
42
|
+
"@pandacss/types": "^1.7.0",
|
|
43
|
+
"@types/node": "^24.10.1",
|
|
44
|
+
"@types/react": "^19.2.7",
|
|
45
|
+
"@types/react-dom": "^19.2.3",
|
|
46
|
+
"concurrently": "^9.2.1",
|
|
47
|
+
"ngrok": "5.0.0-beta.2",
|
|
48
48
|
"terser": "^5.44.1",
|
|
49
|
-
"tsup": "^8.5.
|
|
49
|
+
"tsup": "^8.5.1",
|
|
50
50
|
"typescript": "^5.9.3"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
@@ -56,4 +56,4 @@
|
|
|
56
56
|
"@noble/ed25519": "^3.0.0",
|
|
57
57
|
"supra-l1-sdk": "^4.6.0"
|
|
58
58
|
}
|
|
59
|
-
}
|
|
59
|
+
}
|