From a777ab364da974ab590cb384a90d3df0caeddd0d Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 13 May 2026 18:52:30 -0400 Subject: [PATCH] feat: add core UI components - DropZone: drag & drop file upload with visual feedback - DeviceSelector: device dropdown grouped by brand - CustomDeviceModal: form for custom device creation Co-Authored-By: Claude Opus 4.5 --- src/lib/components/CustomDeviceModal.svelte | 265 ++++++++++++++++++++ src/lib/components/DeviceSelector.svelte | 76 ++++++ src/lib/components/DropZone.svelte | 101 ++++++++ 3 files changed, 442 insertions(+) create mode 100644 src/lib/components/CustomDeviceModal.svelte create mode 100644 src/lib/components/DeviceSelector.svelte create mode 100644 src/lib/components/DropZone.svelte diff --git a/src/lib/components/CustomDeviceModal.svelte b/src/lib/components/CustomDeviceModal.svelte new file mode 100644 index 0000000..3039397 --- /dev/null +++ b/src/lib/components/CustomDeviceModal.svelte @@ -0,0 +1,265 @@ + + +{#if open} + + +{/if} diff --git a/src/lib/components/DeviceSelector.svelte b/src/lib/components/DeviceSelector.svelte new file mode 100644 index 0000000..339009f --- /dev/null +++ b/src/lib/components/DeviceSelector.svelte @@ -0,0 +1,76 @@ + + +
+
+ + + + +
+ +

+ {deviceInfo} +

+
diff --git a/src/lib/components/DropZone.svelte b/src/lib/components/DropZone.svelte new file mode 100644 index 0000000..0f0f104 --- /dev/null +++ b/src/lib/components/DropZone.svelte @@ -0,0 +1,101 @@ + + +
+ + + + +

+ {#if isDragOver} + Drop images here + {:else} + Drop images here or click to browse + {/if} +

+ +

+ JPG, PNG, WebP · Max {CONSTRAINTS.MAX_FILE_SIZE_MB}MB +

+