From 04155c182a205246fdc6222c69b16cb803da91b0 Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Tue, 28 Apr 2026 15:08:50 +0200 Subject: [PATCH] feat(frontend): add primitive UI components (Icon, StatusPill, UnderlineStroke, StatCard, Tally, Field) --- frontend/src/lib/components/Field.svelte | 24 +++++++++ frontend/src/lib/components/Icon.svelte | 52 +++++++++++++++++++ frontend/src/lib/components/StatCard.svelte | 24 +++++++++ frontend/src/lib/components/StatusPill.svelte | 15 ++++++ frontend/src/lib/components/Tally.svelte | 21 ++++++++ .../src/lib/components/UnderlineStroke.svelte | 21 ++++++++ 6 files changed, 157 insertions(+) create mode 100644 frontend/src/lib/components/Field.svelte create mode 100644 frontend/src/lib/components/Icon.svelte create mode 100644 frontend/src/lib/components/StatCard.svelte create mode 100644 frontend/src/lib/components/StatusPill.svelte create mode 100644 frontend/src/lib/components/Tally.svelte create mode 100644 frontend/src/lib/components/UnderlineStroke.svelte diff --git a/frontend/src/lib/components/Field.svelte b/frontend/src/lib/components/Field.svelte new file mode 100644 index 0000000..a29fdd6 --- /dev/null +++ b/frontend/src/lib/components/Field.svelte @@ -0,0 +1,24 @@ + + +
+ {label} +
+ + {#if suffix} + {suffix} + {/if} +
+
diff --git a/frontend/src/lib/components/Icon.svelte b/frontend/src/lib/components/Icon.svelte new file mode 100644 index 0000000..a1f4625 --- /dev/null +++ b/frontend/src/lib/components/Icon.svelte @@ -0,0 +1,52 @@ + + +{#if name === 'check'} + + + +{:else if name === 'x'} + + + +{:else if name === 'lock'} + + + + +{:else if name === 'open'} + + + + +{:else if name === 'copy'} + + + + +{:else if name === 'edit'} + + + +{:else if name === 'download'} + + + +{:else if name === 'arrow'} + + + +{:else if name === 'search'} + + + + +{:else if name === 'plus'} + + + +{/if} diff --git a/frontend/src/lib/components/StatCard.svelte b/frontend/src/lib/components/StatCard.svelte new file mode 100644 index 0000000..88ed7f6 --- /dev/null +++ b/frontend/src/lib/components/StatCard.svelte @@ -0,0 +1,24 @@ + + +
+ {label} +
+ + {value} + + {#if suffix} + {suffix} + {/if} +
+ {#if hint} +
{hint}
+ {/if} +
diff --git a/frontend/src/lib/components/StatusPill.svelte b/frontend/src/lib/components/StatusPill.svelte new file mode 100644 index 0000000..b17ea8c --- /dev/null +++ b/frontend/src/lib/components/StatusPill.svelte @@ -0,0 +1,15 @@ + + +{labels[status]} diff --git a/frontend/src/lib/components/Tally.svelte b/frontend/src/lib/components/Tally.svelte new file mode 100644 index 0000000..5d7c57e --- /dev/null +++ b/frontend/src/lib/components/Tally.svelte @@ -0,0 +1,21 @@ + + +
+ {label} + + {value} + {#if total !== undefined} + / {total} + {:else if suffix} + {suffix} + {/if} + +
diff --git a/frontend/src/lib/components/UnderlineStroke.svelte b/frontend/src/lib/components/UnderlineStroke.svelte new file mode 100644 index 0000000..dcd318e --- /dev/null +++ b/frontend/src/lib/components/UnderlineStroke.svelte @@ -0,0 +1,21 @@ + + + + +