monitor->getAll(); $widgets = DashboardWidgetPreference::forUser(auth()->id()); return view('pages.dashboard', compact('stats', 'widgets')); } /** * Save widget visibility + order for the authenticated user. */ public function saveWidgetPreferences(Request $request): JsonResponse { $validated = $request->validate([ 'widgets' => ['required', 'array'], 'widgets.*.key' => ['required', 'string', 'max:64'], 'widgets.*.visible' => ['required', 'boolean'], 'widgets.*.sort_order' => ['required', 'integer', 'min:0'], ]); $userId = auth()->id(); foreach ($validated['widgets'] as $w) { DashboardWidgetPreference::updateOrCreate( ['user_id' => $userId, 'widget_key' => $w['key']], ['visible' => $w['visible'], 'sort_order' => $w['sort_order']] ); } return response()->json(['status' => 'ok']); } /** * Reset widget preferences to defaults. */ public function resetWidgetPreferences() { DashboardWidgetPreference::where('user_id', auth()->id())->delete(); return back()->with('success', 'Dashboard layout reset to defaults.'); } }