diff --git a/frontend/src/routes/template-configs/+page.svelte b/frontend/src/routes/template-configs/+page.svelte
index 6a5755d..495ed0c 100644
--- a/frontend/src/routes/template-configs/+page.svelte
+++ b/frontend/src/routes/template-configs/+page.svelte
@@ -13,6 +13,7 @@
import ConfirmModal from '$lib/components/ConfirmModal.svelte';
import Hint from '$lib/components/Hint.svelte';
import IconButton from '$lib/components/IconButton.svelte';
+ import IconGridSelect from '$lib/components/IconGridSelect.svelte';
import Modal from '$lib/components/Modal.svelte';
import JinjaEditor from '$lib/components/JinjaEditor.svelte';
import { snackSuccess, snackError } from '$lib/stores/snackbar.svelte';
@@ -110,6 +111,9 @@
// Provider capabilities: loaded dynamically
let allCapabilities = $state
>({});
let providerTypes = $derived(Object.keys(allCapabilities));
+ const providerTypeItems = $derived(providerTypes.map(pt => ({
+ value: pt, icon: 'mdiCamera', label: allCapabilities[pt]?.display_name || pt,
+ })));
// Dynamic slot definitions based on selected provider_type
let notificationSlots = $derived<{name: string, description: string}[]>(
@@ -244,13 +248,8 @@
{#if !editing}
-
-
+
+
{:else}
diff --git a/frontend/src/routes/tracking-configs/+page.svelte b/frontend/src/routes/tracking-configs/+page.svelte
index 500e2d0..cf39108 100644
--- a/frontend/src/routes/tracking-configs/+page.svelte
+++ b/frontend/src/routes/tracking-configs/+page.svelte
@@ -13,6 +13,11 @@
import ConfirmModal from '$lib/components/ConfirmModal.svelte';
import Hint from '$lib/components/Hint.svelte';
import IconButton from '$lib/components/IconButton.svelte';
+ import IconGridSelect from '$lib/components/IconGridSelect.svelte';
+
+ const providerTypeItems = [
+ { value: 'immich', icon: 'mdiCamera', label: 'Immich' },
+ ];
import { snackSuccess, snackError } from '$lib/stores/snackbar.svelte';
import { highlightFromUrl } from '$lib/highlight';
import type { TrackingConfig } from '$lib/types';
@@ -98,6 +103,15 @@
+