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}