feat: redesign landing page with brand system and section blocks
Build & Push Docker Image / build (push) Has been cancelled
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:
@@ -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>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user