'use client'; import { useEffect, useState } from 'react'; import { useTranslations } from 'next-intl'; import { DashboardGrid } from '@/components/dashboard/dashboard-grid'; import { EditModeToggle } from '@/components/dashboard/edit-mode-toggle'; import { WidgetCatalogModal } from '@/components/dashboard/widget-catalog-modal'; import { wireClockWidget, wireSearchWidget, wireCalendarWidget, wireNoteWidget, wireCalculatorWidget, wireStopwatchWidget, wireFavoritesWidget } from '@/components/dashboard/widget-registry'; import { ClockWidget } from '@/components/dashboard/widgets/clock-widget'; import { SearchWidget } from '@/components/dashboard/widgets/search-widget'; import { CalendarWidget } from '@/components/dashboard/widgets/calendar-widget'; import { NoteWidget } from '@/components/dashboard/widgets/note-widget'; import { CalculatorWidget } from '@/components/dashboard/widgets/calculator-widget'; import { StopwatchWidget } from '@/components/dashboard/widgets/stopwatch-widget'; import { FavoritesWidget } from '@/components/dashboard/widgets/favorites-widget'; import { useDashboardStore } from '@/lib/stores/dashboard-store'; import type { WidgetType } from '@/components/dashboard/widget-registry'; // Wire widget components into the registry (deferred to avoid circular deps) wireClockWidget(ClockWidget); wireSearchWidget(SearchWidget); wireCalendarWidget(CalendarWidget); wireNoteWidget(NoteWidget); wireCalculatorWidget(CalculatorWidget); wireStopwatchWidget(StopwatchWidget); wireFavoritesWidget(FavoritesWidget); export default function DashboardPage() { const t = useTranslations('widgets'); const [catalogOpen, setCatalogOpen] = useState(false); const { layouts, widgets, isEditMode, isLoading, error, setEditMode, updateLayouts, addWidget, removeWidget, loadDashboard, } = useDashboardStore(); // Load dashboard data on mount useEffect(() => { loadDashboard(); }, [loadDashboard]); if (isLoading) { return (

Loading...

); } if (error) { return (

{t('layoutLoadError')}

); } return (
{/* Dashboard grid — direkt im Container, ohne Abstands-Wrapper. */} {/* Feste Aktionsleiste unten rechts. quick-260916-dyv: Umschalter unten rechts statt oben rechts, damit das Grid direkt unter der Kopfzeile beginnt (12 + 8 + 8 = 28 px statt 60 px). Im Bearbeitungsmodus steht "Widget hinzufuegen" links neben dem Haekchen. */}
{isEditMode && ( )} setEditMode(!isEditMode)} />
{/* Widget catalog modal */} setCatalogOpen(false)} onAddWidget={(type: WidgetType) => { addWidget(type); }} />
); }