Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/experiments/ezwallet/EZWalletApp.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,22 @@
<header class="glass-panel hero-panel">
<p class="kicker">POWERED BY SMOL • STELLAR NATIVE</p>
<h1 class="holo-text">EZWallet</h1>
<p class="hero-tag">Scan. Approve. Get Paid.</p>
<p class="hero-sub">Create one safe QR that requests payment to your wallet — perfect for cards, booths, and NFT drops.</p>
<p class="hero-tag">Scan. Claim. Receive Value.</p>
<p class="hero-sub">Create claim tickets where the QR payload carries the transfer intent (XLM/XOM/USDC), so recipients redeem value instead of being asked to pay you.</p>
</header>

<section class="dashboard-grid">
<article class="glass-panel">
<h2 class="section-title">01 · Build Your Payment QR</h2>
<h2 class="section-title">01 · Build Your Value Ticket QR</h2>
<div class="label">Asset</div>
<div class="pill-row">
<button class="asset-pill" class:active={asset === 'XLM'} onclick={() => (asset = 'XLM')}>XLM</button>
<button class="asset-pill" class:active={asset === 'USDC'} onclick={() => (asset = 'USDC')}>USDC</button>
</div>
<label>Mode
<select bind:value={mode}>
<option value="receive_request">Request Payment</option>
<option value="event_drop">Event Drop</option>
<option value="receive_request">Direct Claim Ticket</option>
<option value="event_drop">Event Ticket Drop</option>
</select>
</label>
<label>Amount
Expand All @@ -121,8 +121,8 @@
</article>

<article class="glass-panel">
<h2 class="section-title">02 · Share with Confidence</h2>
<p class="safety">Review before signing. Intent links do not auto-pay.</p>
<h2 class="section-title">02 · Share Claim Ticket</h2>
<p class="safety">Review before signing. The QR carries claim intent metadata and never auto-sends funds.</p>
<div class="qr-frame">
{#if qrData}
<img src={qrData} alt="Generated Stellar QR intent" class="qr-image" />
Expand Down Expand Up @@ -167,7 +167,7 @@
</article>

<article class="glass-panel pricing-panel">
<h2 class="section-title">04 · Trust & Safety</h2>
<h2 class="section-title">04 · Ticket Integrity</h2>
<div class="plan-grid">
<div class="plan-card"><strong>Free</strong><span>Up to {TIERS.FREE.maxBatch}</span></div>
<div class="plan-card popular"><strong>Event Pack</strong><span>{TIERS.EVENT.maxBatch} • {TIERS.EVENT.priceXlm} XLM</span></div>
Expand All @@ -178,7 +178,7 @@
<label>Destination
<input value={PLATFORM_PAYMENT_DESTINATION} readonly />
</label>
<p class="muted">Each scan opens a review screen first. Nothing auto-sends funds without signer approval.</p>
<p class="muted">Each scan opens a claim review screen first. Redemption always requires explicit signer approval.</p>
</article>
</section>

Expand Down
6 changes: 3 additions & 3 deletions src/experiments/ezwallet/EZWalletDropApp.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
async function login(){ await auth.login(); const s = sessionStorage.getItem(PENDING_INTENT_KEY); if (s) intent = JSON.parse(s); }
</script>
<div class="p-6 max-w-3xl mx-auto text-white">
<h1 class="text-2xl font-bold">Stellar Drop Ready</h1>
<p>Review the request details, confirm destination, then sign only if everything is correct.</p>
<h1 class="text-2xl font-bold">Stellar Claim Ticket</h1>
<p>Review the ticket payload details, confirm destination, then sign only if everything is correct.</p>
{#if errors.length}<p class="text-red-400">{errors.join(', ')}</p>{:else if intent}
<ul><li>Mode: {intent.mode}</li><li>Asset: {intent.asset.code}</li><li>Amount: {intent.amount || '—'}</li><li>Destination: {intent.destination || 'choose later'}</li><li>Event: {intent.event || '—'}</li><li>Message: {intent.message || '—'}</li><li>Network: public</li></ul>
<p class="text-yellow-300">No transaction has been sent. Review before signing.</p>
<p class="text-yellow-300">No transaction has been sent. This QR stores claim intent metadata; signer approval is still required.</p>
<button onclick={login}>Continue with Passkey</button>
<button onclick={()=>navigator.clipboard.writeText(raw)}>Copy Intent</button>
<a href="/labs/ezwallet">Generate Another QR</a>
Expand Down