+
+
-
+
+ {#if !isCollapsed}
+
diff --git a/apps/calendar/apps/web/src/lib/components/calendar/CalendarToolbarContent.svelte b/apps/calendar/apps/web/src/lib/components/calendar/CalendarToolbarContent.svelte
index dd5d4461d..d44f6fc0a 100644
--- a/apps/calendar/apps/web/src/lib/components/calendar/CalendarToolbarContent.svelte
+++ b/apps/calendar/apps/web/src/lib/components/calendar/CalendarToolbarContent.svelte
@@ -37,6 +37,7 @@
'14day',
'month',
'year',
+ 'agenda',
];
// Convert to ViewOptions for PillViewSwitcher
diff --git a/apps/calendar/apps/web/src/lib/components/calendar/DayView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/DayView.svelte
index f1c692594..abae9e796 100644
--- a/apps/calendar/apps/web/src/lib/components/calendar/DayView.svelte
+++ b/apps/calendar/apps/web/src/lib/components/calendar/DayView.svelte
@@ -914,12 +914,17 @@
.day-view {
display: flex;
flex-direction: column;
+ align-items: center;
+ height: 100%;
+ overflow: hidden;
}
.all-day-section {
display: flex;
border-bottom: 1px solid hsl(var(--color-border));
padding: 0.5rem 0;
+ width: 100%;
+ max-width: 800px;
}
.all-day-label {
@@ -960,13 +965,14 @@
.all-day-block-event {
position: absolute;
top: 0;
- left: 4px;
- right: 4px;
+ left: 8px;
+ width: calc(100% - 16px);
+ max-width: 400px;
bottom: 0;
padding: 8px 12px;
color: white;
border: none;
- border-radius: var(--radius-sm);
+ border-radius: var(--radius-md);
text-align: left;
cursor: pointer;
z-index: 0;
@@ -1002,16 +1008,19 @@
.time-grid {
flex: 1;
display: flex;
+ width: 100%;
+ max-width: 800px;
+ overflow-y: auto;
}
.time-column {
- width: var(--time-column-width);
+ width: 50px;
flex-shrink: 0;
}
.time-label {
height: var(--hour-height);
- padding-right: 0.5rem;
+ padding-right: 0.75rem;
text-align: right;
font-size: 0.75rem;
color: hsl(var(--color-muted-foreground));
@@ -1020,9 +1029,9 @@
}
.time-gutter {
- width: var(--time-column-width);
+ width: 50px;
flex-shrink: 0;
- padding-right: 0.5rem;
+ padding-right: 0.75rem;
text-align: right;
}
@@ -1030,6 +1039,7 @@
flex: 1;
position: relative;
border-left: 1px solid hsl(var(--color-border));
+ max-width: 600px;
}
.day-column.today {
@@ -1044,8 +1054,9 @@
.event-card {
position: absolute;
- left: 4px;
- right: 4px;
+ left: 8px;
+ width: calc(100% - 16px);
+ max-width: 400px;
color: white;
border: none;
text-align: left;
@@ -1054,11 +1065,12 @@
display: flex;
flex-direction: column;
gap: 2px;
- padding: 4px 8px;
- border-radius: var(--radius-sm);
+ padding: 6px 10px;
+ border-radius: var(--radius-md);
overflow: hidden;
touch-action: none;
user-select: none;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
transition:
box-shadow 150ms ease,
opacity 150ms ease;
diff --git a/apps/calendar/apps/web/src/lib/components/calendar/MonthView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/MonthView.svelte
index 936c5b755..19d0c844c 100644
--- a/apps/calendar/apps/web/src/lib/components/calendar/MonthView.svelte
+++ b/apps/calendar/apps/web/src/lib/components/calendar/MonthView.svelte
@@ -338,12 +338,15 @@
.month-view {
display: flex;
flex-direction: column;
+ height: 100%;
+ overflow: hidden;
}
.weekday-headers {
display: grid;
grid-template-columns: repeat(var(--column-count, 7), 1fr);
border-bottom: 1px solid hsl(var(--color-border));
+ background: hsl(var(--color-background));
}
.weekday-header {
@@ -359,6 +362,7 @@
flex: 1;
display: flex;
flex-direction: column;
+ overflow-y: auto;
}
.week-row {
diff --git a/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte
index 2348ea8ae..b28339807 100644
--- a/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte
+++ b/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte
@@ -1168,6 +1168,10 @@
.day-headers {
display: flex;
border-bottom: 1px solid hsl(var(--color-border));
+ position: sticky;
+ top: 0;
+ z-index: 10;
+ background: hsl(var(--color-background));
}
.time-gutter {
diff --git a/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte
index ab7380493..acee36ff2 100644
--- a/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte
+++ b/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte
@@ -1181,6 +1181,10 @@
.day-headers {
display: flex;
border-bottom: 1px solid hsl(var(--color-border));
+ position: sticky;
+ top: 0;
+ z-index: 10;
+ background: hsl(var(--color-background));
}
.time-gutter {
diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte
index 97a90580a..bd34a6d46 100644
--- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte
+++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte
@@ -143,7 +143,7 @@
let isSidebarMode = $state(false);
let isCollapsed = $state(false);
- let isToolbarCollapsed = $state(false);
+ let isToolbarCollapsed = $state(true); // Default to collapsed - FAB next to InputBar
// Use theme store's isDark directly
let isDark = $derived(theme.isDark);
@@ -198,7 +198,6 @@
// Base navigation items for Calendar
const baseNavItems: PillNavItem[] = [
{ href: '/', label: 'Kalender', icon: 'calendar' },
- { href: '/agenda', label: 'Agenda', icon: 'list' },
{ href: '/tasks', label: 'Aufgaben', icon: 'check-square' },
{ href: '/tags', label: 'Tags', icon: 'tag' },
{ href: '/statistics', label: 'Statistiken', icon: 'bar-chart-3' },
@@ -411,13 +410,7 @@
appIcon="calendar"
primaryColor="#3b82f6"
autoFocus={true}
- bottomOffset={showCalendarToolbar
- ? isSidebarMode
- ? '0px'
- : '130px'
- : isSidebarMode
- ? '0px'
- : '70px'}
+ bottomOffset={isSidebarMode ? '0px' : '70px'}
/>
@@ -430,6 +423,10 @@
}
.main-content {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ min-height: 0;
transition: all 300ms ease;
position: relative;
/* Space for QuickInputBar at bottom */
@@ -468,6 +465,8 @@
}
.content-wrapper {
+ flex: 1;
+ min-height: 0;
max-width: 100%;
margin-left: auto;
margin-right: auto;
@@ -496,5 +495,7 @@
padding: 0;
display: flex;
flex-direction: column;
+ flex: 1;
+ min-height: 0;
}
diff --git a/apps/calendar/apps/web/src/routes/(app)/+page.svelte b/apps/calendar/apps/web/src/routes/(app)/+page.svelte
index 446464bc3..29a62bb74 100644
--- a/apps/calendar/apps/web/src/routes/(app)/+page.svelte
+++ b/apps/calendar/apps/web/src/routes/(app)/+page.svelte
@@ -13,6 +13,7 @@
import MonthView from '$lib/components/calendar/MonthView.svelte';
import MultiDayView from '$lib/components/calendar/MultiDayView.svelte';
import YearView from '$lib/components/calendar/YearView.svelte';
+ import AgendaView from '$lib/components/calendar/AgendaView.svelte';
import TodoSidebarSection from '$lib/components/calendar/TodoSidebarSection.svelte';
import QuickEventOverlay from '$lib/components/event/QuickEventOverlay.svelte';
import { CalendarViewSkeleton } from '$lib/components/skeletons';
@@ -175,6 +176,8 @@
-
-
- {#if loading}
-
- {:else if groupedEvents.length === 0}
-
-
Keine Termine in den nächsten 30 Tagen
-
-
- {:else}
-
- {#each groupedEvents as group}
-
-
-
- {#each group.events as event}
-
- {/each}
-
- {/each}
-
- {/if}
-
-
-