From bba78d5781cf6c368d1845a6edfcb686a048ab80 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 1 Dec 2025 23:43:56 -0800 Subject: [PATCH] feat: add suggestion UI components for batch import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SuggestionBadge: sparkle icon with tooltip for accept/dismiss actions - SuggestionDetailItem: detail item wrapper with suggestion badge support - TabbedEntitySelector: entity image grid for batch selection 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/lib/components/ui/SuggestionBadge.svelte | 183 ++++++++++++++ .../components/ui/SuggestionDetailItem.svelte | 229 ++++++++++++++++++ .../import/TabbedEntitySelector.svelte | 175 +++++++++++++ 3 files changed, 587 insertions(+) create mode 100644 src/lib/components/ui/SuggestionBadge.svelte create mode 100644 src/lib/components/ui/SuggestionDetailItem.svelte create mode 100644 src/lib/features/database/import/TabbedEntitySelector.svelte diff --git a/src/lib/components/ui/SuggestionBadge.svelte b/src/lib/components/ui/SuggestionBadge.svelte new file mode 100644 index 00000000..11ed2c4d --- /dev/null +++ b/src/lib/components/ui/SuggestionBadge.svelte @@ -0,0 +1,183 @@ + + + + +{#if suggestion !== undefined && suggestion !== null && !dismissed} + + + + + +
+ {#if label} + {label}: + {/if} + {displayValue()} +
+
+ {#if onAccept} + + {/if} + {#if onDismiss} + + {/if} +
+
+
+{/if} + + diff --git a/src/lib/components/ui/SuggestionDetailItem.svelte b/src/lib/components/ui/SuggestionDetailItem.svelte new file mode 100644 index 00000000..925bf103 --- /dev/null +++ b/src/lib/components/ui/SuggestionDetailItem.svelte @@ -0,0 +1,229 @@ + + + + +
+
+
+ {label} + {#if editable && showSuggestion} + + {/if} +
+ {#if sublabel} + {sublabel} + {/if} +
+ {#if editable} +
+ {#if type === 'select' && options} + + {:else} + + {/if} +
+ {:else if children} +
+ {@render children()} +
+ {:else} + {value || '—'} + {/if} +
+ + diff --git a/src/lib/features/database/import/TabbedEntitySelector.svelte b/src/lib/features/database/import/TabbedEntitySelector.svelte new file mode 100644 index 00000000..9b9435f7 --- /dev/null +++ b/src/lib/features/database/import/TabbedEntitySelector.svelte @@ -0,0 +1,175 @@ + + + + +
+ {#each entities as entity} + + {/each} +
+ +