diff --git a/client/components/blog/BlogHero.tsx b/client/components/blog/BlogHero.tsx new file mode 100644 index 00000000..4292d1f7 --- /dev/null +++ b/client/components/blog/BlogHero.tsx @@ -0,0 +1,122 @@ +import { Link } from "react-router-dom"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Calendar, PenTool, Search, TrendingUp } from "lucide-react"; +import type { BlogPost } from "./types"; + +interface BlogHeroProps { + featured: BlogPost | null; + totalCount: number; + search: string; + onSearchChange: (value: string) => void; + onViewAll?: () => void; +} + +const BlogHero = ({ featured, totalCount, search, onSearchChange, onViewAll }: BlogHeroProps) => { + return ( +
+
+
+
+
+ + AeThex Blog + +
+

+ Ideas, updates, and behind-the-scenes craft from the AeThex team +

+

+ Explore engineering deep dives, platform updates, community spotlights, and changelog summaries. We publish what we learn building AeThex across games, cloud, and creator ecosystems. +

+
+
+ + +
+
+ + + +
+ Featured insight + + Trending now + +
+ {featured ? ( +
+
+ + {featured.category || "General"} + + + {featured.title} + +

{featured.excerpt}

+
+
+ {featured.author || "AeThex Team"} + + + {featured.date || "Recently published"} + +
+
+ + {featured.readTime || "5 min read"} + + + {featured.likes?.toLocaleString() ?? "0"} applauses + +
+ +
+ ) : ( +
+

+ We are preparing our latest feature article. Check back soon for fresh insights straight from the AeThex ship room. +

+
+ + Weekly cadence + + + Multi-team updates + +
+
+ )} +
+
+
+
+
+ ); +}; + +export default BlogHero;