From 504e7756a73ff731bdebc9f1c2a591806b69da27 Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 31 Mar 2026 12:35:17 +0200 Subject: [PATCH] refactor(apps): automated SVG-to-Phosphor migration across all apps Script-based migration of inline SVG icons to Phosphor components. Covers todo, manacore, mukke, chat, zitare, times, citycorners, inventar, uload, playground, presi, picture, moodlit, storage, news, wisekeep, clock, matrix, manadeck, skilltree, and photos. ~190 SVGs replaced across 115 files. Remaining SVGs are spinners, brand logos, or decorative/chart SVGs that don't map to Phosphor. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../components/templates/TemplateForm.svelte | 28 +- .../routes/(protected)/settings/+page.svelte | 18 +- .../(protected)/spaces/[id]/+page.svelte | 15 +- .../routes/(app)/cities/[slug]/+page.svelte | 76 +--- .../(app)/cities/[slug]/add/+page.svelte | 5 +- .../cities/[slug]/locations/[id]/+page.svelte | 209 +++------- .../[slug]/locations/[id]/edit/+page.svelte | 5 +- .../(app)/cities/[slug]/map/+page.svelte | 19 +- .../src/routes/(app)/favorites/+page.svelte | 6 +- .../src/routes/(app)/stopwatch/+page.svelte | 16 +- .../lib/components/fields/SchemaEditor.svelte | 14 +- .../apps/web/src/routes/(app)/+page.svelte | 14 +- .../routes/(app)/collections/new/+page.svelte | 5 +- .../web/src/routes/(app)/items/+page.svelte | 18 +- .../src/routes/(app)/items/[id]/+page.svelte | 10 +- .../src/routes/(app)/locations/+page.svelte | 5 +- .../web/src/routes/(app)/search/+page.svelte | 18 +- .../src/routes/(app)/settings/+page.svelte | 37 +- .../lib/components/admin/QuickLinks.svelte | 14 +- .../dashboard/WidgetContainer.svelte | 22 +- .../components/dashboard/WidgetError.svelte | 6 +- .../components/landing/LandingEditor.svelte | 10 +- .../components/landing/RepeatableField.svelte | 14 +- .../components/landing/SectionEditor.svelte | 13 +- .../my-data/DeleteConfirmationModal.svelte | 61 +-- .../components/my-data/QRExportModal.svelte | 51 +-- .../onboarding/OnboardingWizard.svelte | 10 +- .../onboarding/steps/AppsStep.svelte | 10 +- .../onboarding/steps/CompleteStep.svelte | 63 +-- .../onboarding/steps/CreditsStep.svelte | 76 +--- .../onboarding/steps/ProfileStep.svelte | 34 +- .../onboarding/steps/WelcomeStep.svelte | 44 +-- .../profile/ChangePasswordModal.svelte | 32 +- .../profile/DeleteAccountModal.svelte | 50 +-- .../profile/EditProfileModal.svelte | 10 +- .../web/src/routes/(app)/admin/+layout.svelte | 15 +- .../routes/(app)/admin/system/+page.svelte | 10 +- .../routes/(app)/admin/user-data/+page.svelte | 18 +- .../admin/user-data/[userId]/+page.svelte | 49 +-- .../src/routes/(app)/admin/users/+page.svelte | 18 +- .../src/routes/(app)/api-keys/+page.svelte | 91 +---- .../src/routes/(app)/dashboard/+page.svelte | 22 +- .../web/src/routes/(app)/gifts/+page.svelte | 24 +- .../routes/(app)/organizations/+page.svelte | 10 +- .../(app)/settings/my-data/+page.svelte | 105 +---- .../routes/(app)/subscription/+page.svelte | 116 ++++-- .../src/routes/email-verified/+page.svelte | 10 +- .../routes/verification-failed/+page.svelte | 15 +- .../src/routes/(app)/settings/+page.svelte | 10 +- .../chat/ForwardMessageDialog.svelte | 16 +- .../routes/(app)/chat/[roomId]/+page.svelte | 10 +- .../web/src/routes/(app)/moods/+page.svelte | 10 +- .../src/routes/(app)/sequences/+page.svelte | 10 +- .../web/src/lib/components/BeatLibrary.svelte | 18 +- .../src/lib/components/BeatUploader.svelte | 56 +-- .../web/src/lib/components/FullPlayer.svelte | 57 +-- .../src/lib/components/MarkerTimeline.svelte | 19 +- .../web/src/lib/components/MiniPlayer.svelte | 28 +- .../lib/components/PlaybackControls.svelte | 35 +- .../web/src/lib/components/QueuePanel.svelte | 19 +- .../web/src/lib/components/SongEditor.svelte | 10 +- .../src/lib/visualizer/ButterchurnViz.svelte | 9 +- .../src/routes/(app)/dashboard/+page.svelte | 33 +- .../src/routes/(app)/editor/[id]/+page.svelte | 28 +- .../web/src/routes/(app)/library/+page.svelte | 97 +---- .../(app)/library/albums/[name]/+page.svelte | 19 +- .../(app)/library/artists/[name]/+page.svelte | 19 +- .../(app)/library/genres/[name]/+page.svelte | 5 +- .../src/routes/(app)/playlists/+page.svelte | 42 +- .../routes/(app)/playlists/[id]/+page.svelte | 64 +-- .../src/routes/(app)/projects/+page.svelte | 28 +- .../web/src/routes/(app)/search/+page.svelte | 64 +-- .../web/src/routes/(app)/upload/+page.svelte | 42 +- .../src/routes/(protected)/saved/+page.svelte | 19 +- .../web/src/routes/app/settings/+page.svelte | 10 +- .../lib/components/chat/MessageList.svelte | 16 +- .../src/lib/components/SkillTemplates.svelte | 11 +- .../apps/web/src/routes/settings/+page.svelte | 28 +- .../web/src/lib/components/EntryForm.svelte | 19 +- .../web/src/lib/components/EntryItem.svelte | 10 +- .../web/src/lib/components/EntryList.svelte | 15 +- .../web/src/lib/components/TimerCard.svelte | 19 +- .../src/lib/components/TimerIndicator.svelte | 5 +- .../web/src/routes/(app)/clients/+page.svelte | 10 +- .../src/routes/(app)/projects/+page.svelte | 10 +- .../apps/web/src/routes/offline/+page.svelte | 15 +- .../src/lib/components/QuickAddTask.svelte | 53 +-- .../web/src/lib/components/SubtaskList.svelte | 32 +- .../src/lib/components/TaskEditModal.svelte | 10 +- .../web/src/lib/components/TaskFilters.svelte | 99 ++--- .../web/src/lib/components/TaskItem.svelte | 34 +- .../lib/components/TodoToolbarContent.svelte | 28 +- .../board-views/ViewEditorModal.svelte | 128 +++--- .../board-views/ViewSelector.svelte | 91 ++--- .../lib/components/form/DurationPicker.svelte | 10 +- .../components/form/FunRatingPicker.svelte | 11 +- .../form/StorypointsSelector.svelte | 11 +- .../lib/components/form/TagSelector.svelte | 14 +- .../components/kanban/KanbanTaskCard.svelte | 71 +--- .../kanban/QuickAddTaskInline.svelte | 29 +- .../apps/web/src/routes/(app)/+layout.svelte | 19 +- .../apps/web/src/routes/(app)/+page.svelte | 17 +- .../src/routes/(app)/settings/+page.svelte | 365 +++--------------- .../(app)/my/analytics/[id]/+page.svelte | 5 +- .../src/routes/(app)/my/links/+page.svelte | 115 ++---- .../web/src/routes/(app)/my/tags/+page.svelte | 19 +- .../routes/(protected)/playlists/+page.svelte | 10 +- .../(protected)/transcripts/+page.svelte | 18 +- .../lib/components/LanguageSelector.svelte | 5 +- .../web/src/lib/components/QuoteCard.svelte | 43 +-- .../apps/web/src/routes/(app)/+page.svelte | 15 +- .../(app)/category/[category]/+page.svelte | 21 +- .../src/routes/(app)/favorites/+page.svelte | 29 +- .../web/src/routes/(app)/lists/+page.svelte | 60 +-- .../src/routes/(app)/lists/[id]/+page.svelte | 27 +- 115 files changed, 781 insertions(+), 3084 deletions(-) diff --git a/apps/chat/apps/web/src/lib/components/templates/TemplateForm.svelte b/apps/chat/apps/web/src/lib/components/templates/TemplateForm.svelte index 834f40bdd..726a54112 100644 --- a/apps/chat/apps/web/src/lib/components/templates/TemplateForm.svelte +++ b/apps/chat/apps/web/src/lib/components/templates/TemplateForm.svelte @@ -1,4 +1,5 @@ @@ -8,9 +10,7 @@
- - - +
@@ -40,14 +40,7 @@
- - - +
Dashboard
@@ -64,19 +57,7 @@
- - - +
Alle Apps
@@ -93,19 +74,7 @@
- - - +
Credits
@@ -122,25 +91,7 @@
- - - - +
+ import { Check, CurrencyCircleDollar, Gift, Lightbulb } from '@manacore/shared-icons'; + // Credits explanation step @@ -7,14 +9,7 @@
- - - +

Das Credits-System

Einfach und transparent für alle AI-Features.

@@ -32,51 +27,15 @@
  • - - - + Du hast ein Credit-Guthaben für alle Mana-Apps
  • - - - + AI-Features wie Chat, Bildgenerierung etc. kosten Credits
  • - - - + Einfache Preisregel: 1 Mana = 1 Cent
@@ -90,14 +49,7 @@ - - - + Gratis-Credits @@ -147,19 +99,7 @@ class="p-4 rounded-xl bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800" >
- - - +

Tipp: Mit einer Mana Quelle M erhältst du monatlich 1.000 Mana ab 9,99€/Monat.

diff --git a/apps/manacore/apps/web/src/lib/components/onboarding/steps/ProfileStep.svelte b/apps/manacore/apps/web/src/lib/components/onboarding/steps/ProfileStep.svelte index 9a8dfeffd..1a1889440 100644 --- a/apps/manacore/apps/web/src/lib/components/onboarding/steps/ProfileStep.svelte +++ b/apps/manacore/apps/web/src/lib/components/onboarding/steps/ProfileStep.svelte @@ -1,6 +1,7 @@ @@ -24,19 +26,7 @@
- - - +

Alle Apps

@@ -48,19 +38,7 @@
- - - +

Credits-System

@@ -72,19 +50,7 @@
- - - +

Personalisierung

diff --git a/apps/manacore/apps/web/src/lib/components/profile/ChangePasswordModal.svelte b/apps/manacore/apps/web/src/lib/components/profile/ChangePasswordModal.svelte index 000a131df..e296dc62b 100644 --- a/apps/manacore/apps/web/src/lib/components/profile/ChangePasswordModal.svelte +++ b/apps/manacore/apps/web/src/lib/components/profile/ChangePasswordModal.svelte @@ -1,5 +1,6 @@ @@ -14,14 +15,7 @@
- - - +

E-Mail bestätigt!

diff --git a/apps/manacore/apps/web/src/routes/verification-failed/+page.svelte b/apps/manacore/apps/web/src/routes/verification-failed/+page.svelte index d10b6ec0f..0c2e26ebd 100644 --- a/apps/manacore/apps/web/src/routes/verification-failed/+page.svelte +++ b/apps/manacore/apps/web/src/routes/verification-failed/+page.svelte @@ -1,6 +1,7 @@ @@ -11,19 +12,7 @@
- - - +

Offline

diff --git a/apps/todo/apps/web/src/lib/components/QuickAddTask.svelte b/apps/todo/apps/web/src/lib/components/QuickAddTask.svelte index 9f099c910..bf3526ecf 100644 --- a/apps/todo/apps/web/src/lib/components/QuickAddTask.svelte +++ b/apps/todo/apps/web/src/lib/components/QuickAddTask.svelte @@ -21,6 +21,7 @@ import { PRIORITY_OPTIONS } from '@todo/shared'; import { format, addDays } from 'date-fns'; import { de } from 'date-fns/locale'; + import { CalendarBlank, Folder, Plus, Flag, ArrowRight } from '@manacore/shared-icons'; let inputValue = $state(''); let isLoading = $state(false); @@ -266,9 +267,7 @@

- - - +
@@ -296,14 +295,7 @@ }} title="Fälligkeitsdatum" > - - - + {dateLabel()} @@ -335,20 +327,7 @@ }} title="Priorität" > - - - + {#if showPriorityPicker} @@ -380,20 +359,7 @@ }} title="Projekt" > - - - + {#if showProjectPicker} @@ -432,14 +398,7 @@ class="animate-spin h-4 w-4 border-2 border-white border-r-transparent rounded-full" >
{:else} - - - + {/if}
diff --git a/apps/todo/apps/web/src/lib/components/SubtaskList.svelte b/apps/todo/apps/web/src/lib/components/SubtaskList.svelte index b545e79ee..6de47df9c 100644 --- a/apps/todo/apps/web/src/lib/components/SubtaskList.svelte +++ b/apps/todo/apps/web/src/lib/components/SubtaskList.svelte @@ -2,6 +2,7 @@ import type { Subtask } from '@todo/shared'; import { dndzone } from 'svelte-dnd-action'; import { flip } from 'svelte/animate'; + import { Check, Plus, X, DotsSixVertical } from '@manacore/shared-icons'; interface Props { subtasks: Subtask[]; @@ -113,14 +114,7 @@
- - - +
@@ -131,14 +125,7 @@ onclick={() => toggleComplete(subtask.id)} > {#if subtask.isCompleted} - - - + {/if} @@ -169,14 +156,7 @@ onclick={() => deleteSubtask(subtask.id)} title="Löschen" > - - - +
{/each} @@ -186,9 +166,7 @@
- - - +
diff --git a/apps/todo/apps/web/src/lib/components/TaskFilters.svelte b/apps/todo/apps/web/src/lib/components/TaskFilters.svelte index 8597f50c9..f3671954e 100644 --- a/apps/todo/apps/web/src/lib/components/TaskFilters.svelte +++ b/apps/todo/apps/web/src/lib/components/TaskFilters.svelte @@ -10,7 +10,15 @@ const tagsCtx: { readonly value: Tag[] } = getContext('tags'); import type { SortBy, SortOrder } from '$lib/stores/view.svelte'; - import { X, DotsThree } from '@manacore/shared-icons'; + import { + CaretDown, + Check, + CheckCircle, + Columns, + DotsThree, + MagnifyingGlass, + X, + } from '@manacore/shared-icons'; interface Props { // Layout @@ -135,14 +143,7 @@ {#if showKanbanNav} {/if} @@ -183,19 +184,7 @@ onclick={onToggleCompleted} title={isCompletedVisible ? 'Erledigte ausblenden' : 'Erledigte anzeigen'} > - - - + Erledigt {/if} @@ -239,19 +228,10 @@ {#if showSearch}
- - - + onSearchChange('')} > - - - + {/if}
@@ -281,14 +254,7 @@ class="ml-auto px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-muted rounded-lg transition-colors flex items-center gap-2" onclick={onClearFilters} > - - - + Zurücksetzen {/if} @@ -368,21 +334,12 @@ {:else} Auswählen {/if} - - - + /> {#if showLabelsDropdown} @@ -410,19 +367,7 @@ >
{label.name} {#if selectedLabelIds.includes(label.id)} - - - + {/if} {/each} diff --git a/apps/todo/apps/web/src/lib/components/TaskItem.svelte b/apps/todo/apps/web/src/lib/components/TaskItem.svelte index b84def48d..f59a5f743 100644 --- a/apps/todo/apps/web/src/lib/components/TaskItem.svelte +++ b/apps/todo/apps/web/src/lib/components/TaskItem.svelte @@ -20,6 +20,7 @@ import { ContactAvatar, ContactSelector } from '@manacore/shared-ui'; import SubtaskList from './SubtaskList.svelte'; import { + import { Check, CheckSquare, DotsSixVertical } from '@manacore/shared-icons'; PrioritySelector, StorypointsSelector, DurationPicker, @@ -381,14 +382,7 @@ >
- - - - - - - - +
@@ -400,20 +394,7 @@ onclick={handleToggleClick} > {#if task.isCompleted || isAnimatingComplete} - - - + {:else if task.priority === 'urgent'} ! {/if} @@ -441,14 +422,7 @@
{#if subtaskProgress()} - - - + {subtaskProgress()} {/if} diff --git a/apps/todo/apps/web/src/lib/components/TodoToolbarContent.svelte b/apps/todo/apps/web/src/lib/components/TodoToolbarContent.svelte index cee058841..25f9ed5f3 100644 --- a/apps/todo/apps/web/src/lib/components/TodoToolbarContent.svelte +++ b/apps/todo/apps/web/src/lib/components/TodoToolbarContent.svelte @@ -9,6 +9,7 @@ import { viewStore, type SortBy } from '$lib/stores/view.svelte'; import { todoSettings } from '$lib/stores/settings.svelte'; import { PillToolbarButton, PillToolbarDivider, PillViewSwitcher } from '@manacore/shared-ui'; + import { CheckCircle, Columns, Funnel } from '@manacore/shared-icons'; interface Props { /** Vertical layout (for sidebar mode) */ @@ -91,14 +92,7 @@ }} title="Ansicht wechseln" > - - - + {#if !vertical} @@ -114,14 +108,7 @@ active={activeFilterCount > 0} title="Filter" > - - - + {#if activeFilterCount > 0} {activeFilterCount} {/if} @@ -191,14 +178,7 @@ active={showCompleted} title={showCompleted ? 'Erledigte ausblenden' : 'Erledigte anzeigen'} > - - - +
diff --git a/apps/todo/apps/web/src/lib/components/board-views/ViewEditorModal.svelte b/apps/todo/apps/web/src/lib/components/board-views/ViewEditorModal.svelte index 0a4f34672..507d9909a 100644 --- a/apps/todo/apps/web/src/lib/components/board-views/ViewEditorModal.svelte +++ b/apps/todo/apps/web/src/lib/components/board-views/ViewEditorModal.svelte @@ -1,6 +1,40 @@