'use client'; import { useEffect, useState } from 'react'; import { useTranslations } from 'next-intl'; import { WidgetSettingsPanel } from '@/components/settings/widget-settings-panel'; import { fetchWidgets } from '@/lib/dashboard-api'; /** * Settings > Dashboard > Widgets page (D-03). * Fetches user's widget instances and renders per-instance config forms. */ export default function WidgetSettingsPage() { const t = useTranslations('settings'); const tCommon = useTranslations('common'); const [widgets, setWidgets] = useState< Array<{ id: string; widgetType: string; config: Record }> >([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { fetchWidgets() .then(setWidgets) .catch(() => { // Silent fail — empty widget list shown }) .finally(() => setIsLoading(false)); }, []); return (

{t('categoryWidgets')}

{isLoading ? (

{tCommon('loading')}

) : widgets.length === 0 ? (

{t('widgets.empty')}

) : ( { setWidgets((prev) => prev.map((w) => w.id === id ? { ...w, config: { ...w.config, ...config } } : w, ), ); }} /> )}
); }