From ea856214fe2b7005839ee7ccf17b8d1237b3ead2 Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Tue, 16 Dec 2025 18:37:11 +0100 Subject: [PATCH] feat(calendar): show settings as modal on homepage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create SettingsModal component with all settings sections - Update layout to show settings modal when clicking Settings in PillNav - Modal appears above the input bar with glassmorphism styling - Settings changes are saved immediately via settingsStore 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../components/settings/SettingsModal.svelte | 1232 +++++++++++++++++ .../apps/web/src/routes/(app)/+layout.svelte | 18 +- 2 files changed, 1249 insertions(+), 1 deletion(-) create mode 100644 apps/calendar/apps/web/src/lib/components/settings/SettingsModal.svelte diff --git a/apps/calendar/apps/web/src/lib/components/settings/SettingsModal.svelte b/apps/calendar/apps/web/src/lib/components/settings/SettingsModal.svelte new file mode 100644 index 000000000..00f234422 --- /dev/null +++ b/apps/calendar/apps/web/src/lib/components/settings/SettingsModal.svelte @@ -0,0 +1,1232 @@ + + + + +{#if visible} + + + + + + + +{/if} + + diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte index 930616492..575544714 100644 --- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte @@ -65,6 +65,7 @@ import EventContextMenu from '$lib/components/event/EventContextMenu.svelte'; import ViewModePillContextMenu from '$lib/components/calendar/ViewModePillContextMenu.svelte'; import StatsOverlay from '$lib/components/calendar/StatsOverlay.svelte'; + import SettingsModal from '$lib/components/settings/SettingsModal.svelte'; import { eventContextMenuStore } from '$lib/stores/eventContextMenu.svelte'; import { heatmapStore } from '$lib/stores/heatmap.svelte'; import type { CalendarViewType } from '@calendar/shared'; @@ -176,6 +177,9 @@ let helpModalOpen = $state(false); let helpModalMode = $state<'shortcuts' | 'syntax'>('shortcuts'); + // Settings modal state + let showSettingsModal = $state(false); + function handleShowShortcuts() { helpModalMode = 'shortcuts'; helpModalOpen = true; @@ -287,7 +291,12 @@ onClick: () => heatmapStore.toggle(), active: heatmapStore.enabled, }, - { href: '/settings', label: 'Einstellungen', icon: 'settings' }, + { + href: '/', + label: 'Einstellungen', + icon: 'settings', + onClick: () => (showSettingsModal = true), + }, { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]); @@ -759,6 +768,13 @@ + + (showSettingsModal = false)} + {isSidebarMode} +/> +