diff --git a/apps/manacore/apps/web/src/lib/modules/photos/components/gallery/PhotoDetailModal.svelte b/apps/manacore/apps/web/src/lib/modules/photos/components/gallery/PhotoDetailModal.svelte
index d28cf942e..2fd8970ea 100644
--- a/apps/manacore/apps/web/src/lib/modules/photos/components/gallery/PhotoDetailModal.svelte
+++ b/apps/manacore/apps/web/src/lib/modules/photos/components/gallery/PhotoDetailModal.svelte
@@ -3,6 +3,7 @@
import type { Photo } from '$lib/modules/photos/types';
import { photoStore } from '$lib/modules/photos/stores/photos.svelte';
import { CaretRight, DownloadSimple, Heart, X } from '@manacore/shared-icons';
+ import { TagChip } from '@manacore/shared-ui';
interface Props {
photo: Photo;
@@ -145,12 +146,7 @@
Tags
{#each photo.tags as tag}
-
- {tag.name}
-
+
{/each}
diff --git a/apps/manacore/apps/web/src/lib/modules/todo/components/TaskItem.svelte b/apps/manacore/apps/web/src/lib/modules/todo/components/TaskItem.svelte
index db8d187fa..1e1542e1b 100644
--- a/apps/manacore/apps/web/src/lib/modules/todo/components/TaskItem.svelte
+++ b/apps/manacore/apps/web/src/lib/modules/todo/components/TaskItem.svelte
@@ -2,6 +2,7 @@
import type { Task, TaskPriority } from '../types';
import { getPriorityLabel, getPriorityColor } from '../queries';
import { Check, Circle, CalendarBlank, CheckSquare } from '@manacore/shared-icons';
+ import { TagChip } from '@manacore/shared-ui';
import { isToday, isPast, format } from 'date-fns';
import { de } from 'date-fns/locale';
@@ -115,12 +116,7 @@
{/if}
{#each taskTags as tag (tag.id)}
-
- {tag.name}
-
+
{/each}
diff --git a/apps/manacore/apps/web/src/lib/modules/todo/components/form/TagSelector.svelte b/apps/manacore/apps/web/src/lib/modules/todo/components/form/TagSelector.svelte
index b14c6a3aa..6b3e378eb 100644
--- a/apps/manacore/apps/web/src/lib/modules/todo/components/form/TagSelector.svelte
+++ b/apps/manacore/apps/web/src/lib/modules/todo/components/form/TagSelector.svelte
@@ -2,7 +2,8 @@
import { getContext } from 'svelte';
import type { Observable } from 'dexie';
import type { LocalLabel } from '../../types';
- import { X, Plus, Tag } from '@manacore/shared-icons';
+ import { TagSelector as SharedTagSelector } from '@manacore/shared-ui';
+ import type { Tag } from '@manacore/shared-ui';
interface Props {
selectedIds: string[];
@@ -18,75 +19,22 @@
return () => sub.unsubscribe();
});
- let showPicker = $state(false);
-
- function toggle(id: string) {
- if (selectedIds.includes(id)) {
- onChange(selectedIds.filter((i) => i !== id));
- } else {
- onChange([...selectedIds, id]);
- }
- }
-
- let selectedLabels = $derived(
- selectedIds
- .map((id) => allLabels.find((l) => l.id === id))
- .filter((l): l is LocalLabel => l != null)
+ // Adapt LocalLabel[] to Tag[] for the shared component
+ const tags: Tag[] = $derived(allLabels.map((l) => ({ id: l.id, name: l.name, color: l.color })));
+ const selectedTags: Tag[] = $derived(
+ selectedIds.map((id) => tags.find((t) => t.id === id)).filter((t): t is Tag => t != null)
);
- let availableLabels = $derived(allLabels.filter((l) => !selectedIds.includes(l.id)));
+ function handleTagsChange(newTags: Tag[]) {
+ onChange(newTags.map((t) => t.id));
+ }
-
- {#each selectedLabels as label (label.id)}
-
- {label.name}
-
-
- {/each}
-
-
-
-
- {#if showPicker && availableLabels.length > 0}
-
-
-
e.stopPropagation()}
- >
- {#each availableLabels as label (label.id)}
-
- {/each}
-
- {/if}
-
-
-
-{#if showPicker}
-
-
- (showPicker = false)}>
-{/if}
+
diff --git a/apps/manacore/apps/web/src/lib/modules/todo/components/kanban/KanbanTaskCard.svelte b/apps/manacore/apps/web/src/lib/modules/todo/components/kanban/KanbanTaskCard.svelte
index 46425a385..f2382b433 100644
--- a/apps/manacore/apps/web/src/lib/modules/todo/components/kanban/KanbanTaskCard.svelte
+++ b/apps/manacore/apps/web/src/lib/modules/todo/components/kanban/KanbanTaskCard.svelte
@@ -3,6 +3,7 @@
import { isToday, isPast, format } from 'date-fns';
import { de } from 'date-fns/locale';
import { Check, Circle, CalendarBlank, CheckSquare, Flag, Trash } from '@manacore/shared-icons';
+ import { TagChip } from '@manacore/shared-ui';
interface Props {
task: Task;
@@ -144,12 +145,7 @@
{/if}
{#each taskLabels as label (label.id)}
-
- {label.name}
-
+
{/each}
{/if}