feat: redesign landing page with brand system and section blocks
Build & Push Docker Image / build (push) Has been cancelled

Refresh the homepage around new hero/services/roadmap sections, shared design tokens, and updated brand assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ar.badiei
2026-07-23 17:00:55 +03:30
co-authored by Cursor
parent f0c290786e
commit c2376b3b9e
352 changed files with 34442 additions and 2760 deletions
+18 -13
View File
@@ -4,8 +4,10 @@ import Link from "next/link";
import Image from "next/image";
import { ChevronLeft, ImageIcon } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Container } from "@/components/container";
import { getFeaturedImageUrl, type WpPost } from "@/lib/wp-api";
import { formatDateShamsi } from "@/lib/format-date";
import { layout } from "@/lib/layout";
import { cn } from "@/lib/utils";
import { type } from "@/lib/typography";
@@ -27,7 +29,7 @@ function PostCard({
const date = post.date ? formatDateShamsi(post.date) : null;
const authorName = post._embedded?.author?.[0]?.name ?? null;
const thumbnailUrl = getFeaturedImageUrl(post, size === "large" ? "medium_large" : "medium");
const href = `/blog/${post.slug}`;
const href = "#";
return (
<Link
@@ -81,7 +83,7 @@ function PostCardRow({ post }: { post: WpPost }) {
const date = post.date ? formatDateShamsi(post.date) : null;
const authorName = post._embedded?.author?.[0]?.name ?? null;
const thumbnailUrl = getFeaturedImageUrl(post, "medium");
const href = `/blog/${post.slug}`;
const href = "#";
return (
<Link
@@ -103,7 +105,7 @@ const DEFAULT_TITLE = "از دانشنامه";
const DEFAULT_CAPTION =
"از داده تا بینش؛ یادداشت‌ها و تجربه‌هایی که مسیر شما را روشن‌تر می‌کنند.";
const DEFAULT_CTA_LABEL = "مشاهده همه مقالات";
const DEFAULT_CTA_HREF = "/blog";
const DEFAULT_CTA_HREF = "#";
interface FeaturedPostsGridProps {
posts: WpPost[];
@@ -113,7 +115,7 @@ interface FeaturedPostsGridProps {
caption?: string;
/** متن دکمه CTA */
ctaLabel?: string;
/** لینک CTA (پیش‌فرض: /blog) */
/** لینک CTA (پیش‌فرض: # — آزمایشی) */
ctaHref?: string;
}
@@ -129,13 +131,16 @@ export function FeaturedPostsGrid({
const [first, second, third, fourth] = posts;
return (
<section className="bg-background py-16 md:py-24" aria-label={title}>
<div className="mx-auto max-w-6xl px-4 sm:px-6">
<header className="mb-10 text-center md:mb-12">
<h2 className={type.h2}>
<section
className={cn("section-shell bg-section-canvas", layout.sectionY)}
aria-label={title}
>
<Container>
<header className="mb-10 md:mb-12">
<h2 className={cn(type.h2, "text-center")}>
{title}
</h2>
<p className={cn(type["body-sm"], "mx-auto mt-3 max-w-2xl text-muted-foreground md:text-base")}>
<p className={cn(type["section-intro"], "mx-auto mt-3 max-w-2xl")}>
{caption}
</p>
</header>
@@ -164,14 +169,14 @@ export function FeaturedPostsGrid({
<p className={type.caption}>
مطالب بیشتر در دانشنامه
</p>
<Button asChild size="lg" variant="outline" className="rounded-full px-6 font-medium shadow-sm transition-all hover:shadow-md">
<Link href={ctaHref} className="inline-flex items-center gap-2">
<Button asChild size="lg">
<Link href={ctaHref}>
{ctaLabel}
<ChevronLeft className="size-4" aria-hidden />
<ChevronLeft aria-hidden />
</Link>
</Button>
</div>
</div>
</Container>
</section>
);
}