aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/Lnurlp.svelte58
-rw-r--r--src/components/Lnurlw.svelte55
-rw-r--r--src/components/index.js2
3 files changed, 115 insertions, 0 deletions
diff --git a/src/components/Lnurlp.svelte b/src/components/Lnurlp.svelte
new file mode 100644
index 00000000..22364fcf
--- /dev/null
+++ b/src/components/Lnurlp.svelte
@@ -0,0 +1,58 @@
+<script>
+ import { t } from '$lib/translations';
+ import { enhance } from '$app/forms';
+ import { Numpad, Spinner } from '$comp';
+ import { pin } from '$lib/store';
+
+ export let data, form;
+ let { currency } = data.user;
+ let { minSendable, maxSendable, callback, metadata } = data;
+
+ let amount = minSendable,
+ loading;
+ let submit = () => (loading = true);
+</script>
+
+<div class="container px-4 mt-20 max-w-xl mx-auto">
+ <div class="text-center mb-8">
+ {#each JSON.parse(metadata) as m}
+ <div>
+ {#if m[0] === 'text/plain'}
+ <h1 class="text-3xl md:text-4xl font-semibold mb-2">{m[1]}</h1>
+ {/if}
+ {#if m[0].includes('image')}
+ <img src={`data:image/png;base64,${m[1]}`} alt="Recipient" />
+ {/if}
+ </div>
+ {/each}
+ </div>
+
+ {#if form?.error}
+ <div class="text-red-600 text-center mb-5">
+ {form.error}
+ </div>
+ {/if}
+
+ <Numpad bind:amount {currency} />
+
+ <form action="?/pay" method="POST" use:enhance on:submit={submit}>
+ <input name="amount" value={amount} type="hidden" />
+ <input name="minSendable" value={minSendable} type="hidden" />
+ <input name="maxSendable" value={maxSendable} type="hidden" />
+ <input name="callback" value={callback} type="hidden" />
+ <input name="pin" value={$pin} type="hidden" />
+
+ <div class="flex w-full">
+ <button
+ type="submit"
+ class="opacity-100 hover:opacity-80'} rounded-2xl border py-3 font-bold mx-auto mt-2 bg-black text-white px-4 w-24"
+ >
+ {#if loading}
+ <Spinner />
+ {:else}
+ {$t('payments.send')}
+ {/if}
+ </button>
+ </div>
+ </form>
+</div>
diff --git a/src/components/Lnurlw.svelte b/src/components/Lnurlw.svelte
new file mode 100644
index 00000000..dab360aa
--- /dev/null
+++ b/src/components/Lnurlw.svelte
@@ -0,0 +1,55 @@
+<script>
+ import { t } from '$lib/translations';
+ import { enhance } from '$app/forms';
+ import { Numpad, Spinner } from '$comp';
+ import { pin } from '$lib/store';
+
+ export let data, form;
+
+ let { currency, username } = data.user;
+ let { defaultDescription, minWithdrawable, maxWithdrawable, k1, callback } = data;
+
+ let amount = maxWithdrawable,
+ loading;
+
+ let submit = () => (loading = true);
+</script>
+
+<div class="container px-4 mt-20 max-w-xl mx-auto">
+ <div class="text-center mb-8">
+ <div>
+ <h1 class="text-3xl md:text-4xl font-semibold mb-2">{defaultDescription}</h1>
+ </div>
+ </div>
+
+ {#if form?.error}
+ <div class="text-red-600 text-center mb-5">
+ {form.error}
+ </div>
+ {/if}
+
+ <Numpad bind:amount {currency} />
+
+ <form action="?/withdraw" method="POST" use:enhance on:submit={submit}>
+ <input name="amount" value={amount} type="hidden" />
+ <input name="username" value={username} type="hidden" />
+ <input name="currency" value={currency} type="hidden" />
+ <input name="minWithdrawable" value={minWithdrawable} type="hidden" />
+ <input name="maxWithdrawable" value={maxWithdrawable} type="hidden" />
+ <input name="callback" value={callback} type="hidden" />
+ <input name="k1" value={k1} type="hidden" />
+
+ <div class="flex w-full">
+ <button
+ type="submit"
+ class="opacity-100 hover:opacity-80'} rounded-2xl border py-3 font-bold mx-auto mt-2 bg-black text-white px-4 w-24"
+ >
+ {#if loading}
+ <Spinner />
+ {:else}
+ {$t('payments.redeem')}
+ {/if}
+ </button>
+ </div>
+ </form>
+</div>
diff --git a/src/components/index.js b/src/components/index.js
index 3b21f96d..ea44c7d9 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -1,3 +1,5 @@
+export { default as Lnurlp } from './Lnurlp.svelte';
+export { default as Lnurlw } from './Lnurlw.svelte';
export { default as Event } from './Event.svelte';
export { default as Password } from './Password.svelte';
export { default as Feed } from './Feed.svelte';