diff --git a/src/components/NextBestActionWidget.tsx b/src/components/NextBestActionWidget.tsx
index 222da9cd..3fdbba0a 100644
--- a/src/components/NextBestActionWidget.tsx
+++ b/src/components/NextBestActionWidget.tsx
@@ -1,4 +1,4 @@
-'use client';
+'use client';
import { useEffect, useState } from 'react';
import Link from 'next/link';
@@ -42,13 +42,13 @@ export default function NextBestActionWidget() {
Your next best action
-
+
Personalised to your recent activity
{recs.length === 0 ? (
-
+
Explore DevPath and we will suggest your next step here.
) : (
@@ -68,7 +68,7 @@ export default function NextBestActionWidget() {
{rec.title}
-
+
{rec.description}
{notifications.length === 0 ? (
-
+
@@ -260,10 +260,10 @@ export function NotificationDropdown() {
{notif.title}
-
+
{notif.message}
-
+
{notif.createdAt?.seconds
? new Date(
notif.createdAt.seconds * 1000
diff --git a/src/components/ProjectCard.tsx b/src/components/ProjectCard.tsx
index bbe54184..4eaa02b9 100644
--- a/src/components/ProjectCard.tsx
+++ b/src/components/ProjectCard.tsx
@@ -50,7 +50,7 @@ export function ProjectCard({ project }: { project: Project }) {
{/* Author */}
@@ -79,7 +79,7 @@ export function ProjectCard({ project }: { project: Project }) {
{/* Stats */}
-
+
diff --git a/src/components/profile/UserProfile.tsx b/src/components/profile/UserProfile.tsx
index 8b1ceb06..ed44c3a3 100644
--- a/src/components/profile/UserProfile.tsx
+++ b/src/components/profile/UserProfile.tsx
@@ -562,10 +562,11 @@ export default function UserProfile() {
{(() => {
if (!user.createdAt) return 'Dec 2023';
try {
+ const createdAt = user.createdAt as any;
const d = new Date(
- user.createdAt.seconds
- ? user.createdAt.seconds * 1000
- : user.createdAt
+ createdAt.seconds
+ ? createdAt.seconds * 1000
+ : createdAt
);
if (isNaN(d.getTime())) return 'Dec 2023';
return d.toLocaleDateString(undefined, {
diff --git a/src/components/providers/theme-provider.tsx b/src/components/providers/theme-provider.tsx
index 080747fd..f48a8223 100644
--- a/src/components/providers/theme-provider.tsx
+++ b/src/components/providers/theme-provider.tsx
@@ -22,6 +22,16 @@ function ThemeStoreBridge() {
}
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
+ const [mounted, setMounted] = React.useState(false);
+
+ React.useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) {
+ return
{children}
;
+ }
+
return (
diff --git a/src/context/AuthContext.tsx b/src/context/AuthContext.tsx
index 02efa8cb..54afdcfa 100644
--- a/src/context/AuthContext.tsx
+++ b/src/context/AuthContext.tsx
@@ -242,7 +242,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
email: firebaseUser.email,
name: firebaseUser.displayName || '',
photoURL: firebaseUser.photoURL || '',
- role: 'member',
+ role: 'member' as const,
points: 0,
streak: 0,
level: 0,
@@ -263,7 +263,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
showInCommunity: true,
},
preferences: {
- theme: 'dark',
+ theme: 'dark' as const,
},
githubStats: {
connected: false,