diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 97044bd..b3fdb29 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -16,7 +16,38 @@ const ubuntuMono = Ubuntu_Mono({ }); export const metadata: Metadata = { - title: "MemeGoat", + title: { + default: "MemeGoat | Partagez vos meilleurs mèmes", + template: "%s | MemeGoat", + }, + description: + "MemeGoat est la plateforme ultime pour découvrir, créer et partager les mèmes les plus drôles de la communauté des chèvres.", + keywords: ["meme", "drôle", "goat", "chèvre", "humour", "partage", "gif"], + authors: [{ name: "MemeGoat Team" }], + creator: "MemeGoat Team", + openGraph: { + type: "website", + locale: "fr_FR", + url: "https://memegoat.local", + siteName: "MemeGoat", + title: "MemeGoat | Partagez vos meilleurs mèmes", + description: + "La plateforme ultime pour les mèmes. Rejoignez le troupeau !", + images: [ + { + url: "/memegoat-og.png", + width: 1200, + height: 630, + alt: "MemeGoat", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "MemeGoat | Partagez vos meilleurs mèmes", + description: "La plateforme ultime pour les mèmes. Rejoignez le troupeau !", + images: ["/memegoat-og.png"], + }, icons: "/memegoat-color.svg", }; diff --git a/frontend/src/components/app-sidebar.tsx b/frontend/src/components/app-sidebar.tsx index c89c51b..ad67847 100644 --- a/frontend/src/components/app-sidebar.tsx +++ b/frontend/src/components/app-sidebar.tsx @@ -12,6 +12,7 @@ import { LogOut, PlusCircle, Settings, + ShieldCheck, TrendingUp, User as UserIcon, } from "lucide-react"; @@ -186,6 +187,26 @@ export function AppSidebar() { + + {isAuthenticated && user?.role === "admin" && ( + + Administration + + + + + + Admin + + + + + + )} @@ -230,7 +251,7 @@ export function AppSidebar() { {user.displayName || user.username} - {user.email} + {user.role} diff --git a/frontend/src/components/home-content.tsx b/frontend/src/components/home-content.tsx index e297093..d0bccee 100644 --- a/frontend/src/components/home-content.tsx +++ b/frontend/src/components/home-content.tsx @@ -5,10 +5,14 @@ import * as React from "react"; import { ContentList } from "@/components/content-list"; import { ContentService } from "@/services/content.service"; -export function HomeContent() { +export function HomeContent({ + defaultSort = "trend", +}: { + defaultSort?: "trend" | "recent"; +}) { const searchParams = useSearchParams(); - const sort = (searchParams.get("sort") as "trend" | "recent") || "trend"; + const sort = (searchParams.get("sort") as "trend" | "recent") || defaultSort; const category = searchParams.get("category") || undefined; const tag = searchParams.get("tag") || undefined; const query = searchParams.get("query") || undefined; diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx index 7fa2c18..bd2d173 100644 --- a/frontend/src/components/ui/badge.tsx +++ b/frontend/src/components/ui/badge.tsx @@ -15,6 +15,8 @@ const badgeVariants = cva( "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + success: + "border-transparent bg-emerald-500 text-white [a&]:hover:bg-emerald-500/90", outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", },