diff --git a/src/app.html b/src/app.html index b6a3073..b6816cc 100644 --- a/src/app.html +++ b/src/app.html @@ -6,7 +6,10 @@ %sveltekit.head% - +
%sveltekit.body%
diff --git a/src/lib/components/BountyCard.svelte b/src/lib/components/BountyCard.svelte new file mode 100644 index 0000000..2b8399d --- /dev/null +++ b/src/lib/components/BountyCard.svelte @@ -0,0 +1,63 @@ + + +
+
+ + {statusBadge[bounty.status].label} + + + {formatSats(bounty.amountSats)} + +
+

{bounty.title}

+ {#if bounty.tags.length > 0} + + {/if} +
diff --git a/src/lib/format.ts b/src/lib/format.ts new file mode 100644 index 0000000..1640e60 --- /dev/null +++ b/src/lib/format.ts @@ -0,0 +1,3 @@ +export function formatSats(sats: number): string { + return `${sats.toLocaleString('en-US')} sats`; +} diff --git a/src/lib/types/bounty.ts b/src/lib/types/bounty.ts new file mode 100644 index 0000000..dbacfa5 --- /dev/null +++ b/src/lib/types/bounty.ts @@ -0,0 +1,9 @@ +export type BountyStatus = + 'open' | 'in-progress' | 'in-dispute' | 'claimed' | 'cancelled'; + +export interface Bounty { + title: string; + amountSats: number; + status: BountyStatus; + tags: string[]; +} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index f5639d1..3f51e88 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,5 +1,41 @@ -

Welcome to SvelteKit

-

- Visit svelte.dev/docs/kit to read the - documentation -

+ + + + SatCode — Bounties + + +
+

Bounties

+

+ Software bounties organized on Nostr, paid in Bitcoin. +

+
+ {#each bounties as bounty (bounty.title)} + + {/each} +
+
diff --git a/src/routes/layout.css b/src/routes/layout.css index cd67023..4d2f313 100644 --- a/src/routes/layout.css +++ b/src/routes/layout.css @@ -1,3 +1,24 @@ @import 'tailwindcss'; @plugin '@tailwindcss/forms'; @plugin '@tailwindcss/typography'; + +@theme { + --color-bitcoin-50: #fff7ed; + --color-bitcoin-100: #ffedd5; + --color-bitcoin-200: #fed7aa; + --color-bitcoin-300: #fdba74; + --color-bitcoin-400: #fb923c; + --color-bitcoin-500: #f7931a; /* canonical Bitcoin orange */ + --color-bitcoin-600: #ea7c0a; + --color-bitcoin-700: #c2620a; + --color-bitcoin-800: #9a4e0f; + --color-bitcoin-900: #7c3f10; + --color-bitcoin-950: #431f06; + --color-surface-300: #444444; + --color-surface-400: #333333; + --color-surface-500: #2a2a2a; + --color-surface-600: #222222; + --color-surface-700: #1a1a1a; + --color-surface-800: #111111; + --color-surface-900: #0a0a0a; +}