diff --git a/dist/og-image.png b/dist/og-image.png index 89e22ee9..4526a83d 100755 Binary files a/dist/og-image.png and b/dist/og-image.png differ diff --git a/src/components/layout/AppLayout.tsx b/src/components/layout/AppLayout.tsx index b73ad9ee..39944bcd 100644 --- a/src/components/layout/AppLayout.tsx +++ b/src/components/layout/AppLayout.tsx @@ -6,7 +6,7 @@ import { billingApi } from '@/lib/api'; import Logo from '@/components/brand/Logo'; import UserDropdown from '@/components/brand/UserDropdown'; import LanguageSwitcher from '@/components/LanguageSwitcher'; -import { Users, MessageSquare, LayoutDashboard, CreditCard, ShieldCheck, Zap, Menu, X } from 'lucide-react'; +import { Users, MessageSquare, LayoutDashboard, CreditCard, ShieldCheck, Zap, Menu, X, LogOut, User } from 'lucide-react'; import { cn } from '@/lib/utils'; const NAV_ITEMS = [ @@ -17,7 +17,7 @@ const NAV_ITEMS = [ ] as const; export default function AppLayout({ children }: { children?: React.ReactNode }) { - const { user, isAuthenticated } = useAuth(); + const { user, isAuthenticated, logout } = useAuth(); const navigate = useNavigate(); const { t } = useTranslation(); const [credits, setCredits] = useState(null); @@ -119,6 +119,33 @@ export default function AppLayout({ children }: { children?: React.ReactNode }) {t(labelKey, fallback)} ))} + {/* User section */} +
+
+
+ {user?.username?.slice(0, 2).toUpperCase() || 'U'} +
+
+

{user?.username}

+

{user?.email}

+
+
+ cn('flex items-center gap-2.5 px-3 py-2.5 rounded-xl text-sm font-medium', isActive ? 'text-primary bg-primary/10' : 'text-muted-foreground hover:text-foreground hover:bg-secondary/60')} + onClick={() => setMobileOpen(false)} + > + + My account + + +
)} diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index abbeacef..9d2b28b8 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -11,7 +11,7 @@ import LanguageSwitcher from '@/components/LanguageSwitcher'; import { useTranslation } from 'react-i18next'; export default function Header() { - const { isAuthenticated } = useAuth(); + const { isAuthenticated, logout } = useAuth(); const navigate = useNavigate(); const location = useLocation(); const { t } = useTranslation(); @@ -177,11 +177,19 @@ export default function Header() {
{isAuthenticated ? ( - setMobileOpen(false)}> - + + - + ) : ( <>