diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 52816e5a..83596533 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -26,7 +26,9 @@ import { authOptions } from "@/lib/auth"; import { getServerSession } from "next-auth"; import { redirect } from "next/navigation"; import DashboardSSEProvider from "@/components/DashboardSSEProvider"; + import DailyNoteWidget from "@/components/DailyNoteWidget"; + import WidgetErrorBoundary from "@/components/WidgetErrorBoundary"; const SkeletonCard = () => ( @@ -149,24 +151,66 @@ export default async function DashboardPage() { - {/* 1. OVERVIEW SECTION */} -
-
-
-

Overview

-
-
- + + {/* -- Row 1: Contribution graph (2/3) + Streak sidebar (1/3) -- */} +
+ {/* Left: contribution graph + heatmap */} +
+ + + +
-
-
- -
-
- -
+ + {/* Right: streak + coding time */} +
+ + + + +
-
+ + + {/* Friend comparison — full width, below the fold */} +
+ }> + + +
+ + {/* Repo analytics explorer — full width */} +
+ }> + + +
+ + {/* -- Row 2: PR metrics + Community metrics -- */} +
+ + + + +
+ + {/* PR breakdown + commit time — 2-col so charts have room */} +
+ }> + + + }> + + +
+ + {/* Activity ring — full width */} +
+ }> + + +
+ {/* 2. ACTIVITY & CODING TIME */}
@@ -246,21 +290,28 @@ export default async function DashboardPage() {
- {/* 4. GOALS & INSIGHTS */} -
-
-
-

Goals & Insights

-
+ + {/* -- Row 4: Top repos + Language breakdown + Goal tracker -- */} +
+ }> + + + + + }> + + + + + +
+
}> - - - }> @@ -278,7 +329,6 @@ export default async function DashboardPage() {
-
); diff --git a/src/components/WidgetErrorBoundary.tsx b/src/components/WidgetErrorBoundary.tsx index 50f7df45..5ec614a3 100644 --- a/src/components/WidgetErrorBoundary.tsx +++ b/src/components/WidgetErrorBoundary.tsx @@ -33,20 +33,27 @@ class WidgetErrorBoundary extends React.Component { render() { if (this.state.hasError) { return ( -
- -

- {this.props.fallbackMessage || "Unable to load widget"} -

- -
- ); +
+ + + +

+ Unable to load data +

+ +

+ {this.props.fallbackMessage || "Please try refreshing or try again later."} +

+ + +
+ ); } return this.props.children;