diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/Lnurlp.svelte | 58 | ||||
| -rw-r--r-- | src/components/Lnurlw.svelte | 55 | ||||
| -rw-r--r-- | src/components/index.js | 2 |
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'; |
