web/donate: add crypto donation options
This commit is contained in:
parent
1147244e46
commit
481697ea12
3 changed files with 145 additions and 11 deletions
|
@ -19,5 +19,7 @@
|
||||||
|
|
||||||
"card.custom.submit": "donate custom amount",
|
"card.custom.submit": "donate custom amount",
|
||||||
|
|
||||||
"share.title": "share cobalt with a friend"
|
"share.title": "share cobalt with a friend",
|
||||||
|
|
||||||
|
"alternative.title": "alternative ways to donate"
|
||||||
}
|
}
|
||||||
|
|
92
web/src/components/donate/WalletItem.svelte
Normal file
92
web/src/components/donate/WalletItem.svelte
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { copyURL } from "$lib/download";
|
||||||
|
import CopyIcon from "$components/misc/CopyIcon.svelte";
|
||||||
|
|
||||||
|
export let name: string;
|
||||||
|
export let address: string;
|
||||||
|
|
||||||
|
let copied = false;
|
||||||
|
|
||||||
|
$: if (copied) {
|
||||||
|
setTimeout(() => {
|
||||||
|
copied = false;
|
||||||
|
}, 1500);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="wallet-holder">
|
||||||
|
<button
|
||||||
|
class="wallet"
|
||||||
|
on:click={() => {
|
||||||
|
copied = true;
|
||||||
|
copyURL(address);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="wallet-copy">
|
||||||
|
<CopyIcon regularIcon={true} check={copied} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wallet-text">
|
||||||
|
<div class="wallet-name">{name}</div>
|
||||||
|
<span class="wallet-address">{address}</span>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.wallet-holder {
|
||||||
|
display: flex;
|
||||||
|
gap: 6px;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-name {
|
||||||
|
font-size: 13px;
|
||||||
|
color: var(--gray);
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet {
|
||||||
|
overflow: clip;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
text-align: left;
|
||||||
|
line-break: anywhere;
|
||||||
|
padding: 0;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-copy {
|
||||||
|
min-width: 42px;
|
||||||
|
max-width: 42px;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-right: 1.5px var(--button-stroke) solid;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-text {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-copy :global(svg) {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-text,
|
||||||
|
.wallet-address {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wallet-address {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,11 +1,15 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import "@fontsource/redaction-10/400.css";
|
import "@fontsource/redaction-10/400.css";
|
||||||
|
|
||||||
|
import { donate } from "$lib/env";
|
||||||
import { t } from "$lib/i18n/translations";
|
import { t } from "$lib/i18n/translations";
|
||||||
|
|
||||||
|
import WalletItem from "$components/donate/WalletItem.svelte";
|
||||||
import DonateBanner from "$components/donate/DonateBanner.svelte";
|
import DonateBanner from "$components/donate/DonateBanner.svelte";
|
||||||
import DonateOptionsCard from "$components/donate/DonateOptionsCard.svelte";
|
import DonateOptionsCard from "$components/donate/DonateOptionsCard.svelte";
|
||||||
import DonateShareCard from "$components/donate/DonateShareCard.svelte";
|
import DonateShareCard from "$components/donate/DonateShareCard.svelte";
|
||||||
|
|
||||||
|
import IconDiamond from "@tabler/icons-svelte/IconDiamond.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
@ -16,17 +20,27 @@
|
||||||
|
|
||||||
<main id="donate-page">
|
<main id="donate-page">
|
||||||
<DonateBanner />
|
<DonateBanner />
|
||||||
|
|
||||||
<section id="support-options">
|
<section id="support-options">
|
||||||
<DonateOptionsCard />
|
<DonateOptionsCard />
|
||||||
<DonateShareCard />
|
<DonateShareCard />
|
||||||
</section>
|
</section>
|
||||||
<section id="donate-text" class="long-text-noto">
|
|
||||||
<p>
|
<section id="motivation" class="long-text-noto">
|
||||||
{$t("donate.body.motivation")}
|
<p>{$t("donate.body.motivation")}</p>
|
||||||
</p>
|
<p>{$t("donate.body.keep_going")}</p>
|
||||||
<p>
|
</section>
|
||||||
{$t("donate.body.keep_going")}
|
|
||||||
</p>
|
<section id="crypto">
|
||||||
|
<div id="crypto-section-header">
|
||||||
|
<IconDiamond />
|
||||||
|
<h3 id="crypto-title">{$t("donate.alternative.title")}</h3>
|
||||||
|
</div>
|
||||||
|
<div id="wallet-grid">
|
||||||
|
{#each Object.entries(donate.crypto) as [name, address]}
|
||||||
|
<WalletItem {name} {address} />
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
@ -61,8 +75,29 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#donate-text {
|
#motivation,
|
||||||
padding: 0 24px;
|
#crypto {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#crypto-section-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#crypto-section-header :global(svg) {
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
stroke-width: 1.8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wallet-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 10px;
|
||||||
|
margin-bottom: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 760px) {
|
@media screen and (max-width: 760px) {
|
||||||
|
@ -70,7 +105,12 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
#donate-text {
|
#wallet-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#motivation,
|
||||||
|
#crypto {
|
||||||
padding: 0 6px;
|
padding: 0 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue