feat: add version history drawer with release notes

Introduce a footer-triggered Version History drawer with categorized release notes, hardcoded release data, and semver tracking at v0.3.0. Also ships blog blockquote/table styling, site-wide typography, home page image updates, header refinements, and related bug fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
alirez.br
2026-07-02 02:46:20 +03:30
co-authored by Cursor
parent 62163c4ab9
commit a47ec493c5
92 changed files with 4574 additions and 507 deletions
+15 -13
View File
@@ -2,6 +2,8 @@ import type { Metadata } from "next";
import { Button } from "@/components/ui/button";
import { Link as LinkIcon, BarChart3, Share2, Zap, TrendingUp, Workflow } from "lucide-react";
import Link from "next/link";
import { type, typeSpacing } from "@/lib/typography";
import { cn } from "@/lib/utils";
export const metadata: Metadata = {
title: "راه حل‌ها",
@@ -90,14 +92,14 @@ export default function SolutionsPage() {
{/* Hero Section */}
<section className="bg-background pt-32 pb-20 md:pt-40 md:pb-28">
<div className="mx-auto max-w-4xl px-6">
<div className="text-center space-y-6">
<h1 className="text-4xl font-bold md:text-5xl lg:text-6xl leading-tight tracking-normal">
<div className={cn("text-center", typeSpacing.heroStack)}>
<h1 className={type.h1}>
راه‌حل‌های ما
</h1>
<p className="text-xl leading-relaxed tracking-normal text-muted-foreground max-w-3xl mx-auto">
<p className={cn(type["body-lg"], "text-muted-foreground max-w-3xl mx-auto")}>
در دنیای امروز، کسب‌و‌کارهای موفق دیگر نمی‌توانند سیستم‌ها، ابزارها و داده‌هایشان را جدا از هم مدیریت کنند. حجم اطلاعات، تعداد ابزارهای مختلف و نیاز به واکنش سریع باعث شده تا یکپارچه‌سازی واقعی سیستم‌ها دیگر تنها یک انتخاب نباشد — بلکه یک ضرورت باشد.
</p>
<p className="text-lg leading-relaxed tracking-normal text-muted-foreground max-w-3xl mx-auto">
<p className={cn(type["section-intro"], "max-w-3xl mx-auto")}>
راهکارهایی که اینجا معرفی می‌شود، فراتر از تکنولوژی‌های معمول است. هدف اصلی این نیست که فقط چند سرویس را به هم وصل کنیم، بلکه این است که فرایندهای کسب‌و‌کار شما را هوشمند، کارا و قابل کنترل‌تر کنیم.
</p>
</div>
@@ -119,18 +121,18 @@ export default function SolutionsPage() {
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<Icon className="size-7" />
</div>
<h2 className="text-2xl font-bold leading-tight tracking-normal">
<h2 className={type.h3}>
{index + 1}. {solution.title}
</h2>
</div>
<p className="mb-6 leading-relaxed tracking-normal text-muted-foreground text-lg">
<p className={cn("mb-6", type["section-intro"])}>
{solution.description}
</p>
<ul className="space-y-3 mb-6">
{solution.features.map((feature, featureIndex) => (
<li
key={featureIndex}
className="flex items-start gap-3 text-base leading-relaxed tracking-normal"
className={cn("flex items-start gap-3", type.body)}
>
<span className="mt-1.5 size-2 shrink-0 rounded-full bg-primary" />
<span className="text-muted-foreground">{feature}</span>
@@ -138,7 +140,7 @@ export default function SolutionsPage() {
))}
</ul>
{solution.result && (
<p className="text-base leading-relaxed tracking-normal text-foreground/90 font-medium border-r-4 border-primary/50 pr-4">
<p className={cn(type.emphasis, "border-r-4 border-primary/50 pr-4 text-foreground/90")}>
{solution.result}
</p>
)}
@@ -153,11 +155,11 @@ export default function SolutionsPage() {
<section className="bg-background py-16 md:py-24">
<div className="mx-auto max-w-4xl px-6">
<div className="rounded-2xl border bg-muted/30 p-8 md:p-10">
<h2 className="text-2xl font-bold mb-6">نتیجه‌گیری</h2>
<p className="text-lg leading-relaxed text-muted-foreground mb-4">
<h2 className={cn(type.h3, "mb-6")}>نتیجه‌گیری</h2>
<p className={cn(type["section-intro"], "mb-4")}>
این راهکارها کمک می‌کنند تا کسب‌و‌کار شما از حالت «جزیره‌ای» بیرون بیاید و به یک ساختار هوشمند، به‌هم‌پیوسته و قابل رشد تبدیل شود.
</p>
<p className="text-lg leading-relaxed text-muted-foreground">
<p className={type["section-intro"]}>
دیگر لازم نیست زمان زیادی صرف انتقال داده، گزارش‌گیری دستی یا تکرار فعالیت‌ها بکنید؛ بلکه می‌توانید به‌طور هوشمندانه‌تر روی اهداف استراتژیک خود تمرکز کنید و رشد سریع‌تر را تجربه کنید.
</p>
</div>
@@ -168,10 +170,10 @@ export default function SolutionsPage() {
<section className="bg-muted/30 py-20 md:py-28">
<div className="mx-auto max-w-4xl px-6">
<div className="text-center space-y-8 p-12 rounded-2xl border bg-gradient-to-br from-primary/5 to-primary/10">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
<h2 className={type["cta-title"]}>
آماده شروع هستید؟
</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
<p className={cn(type["section-intro"], "max-w-2xl mx-auto")}>
همین حالا شروع کنید و از قدرت یکپارچه‌سازی سیستم‌ها، اتوماسیون فرآیندها و تحلیل داده‌ها بهره‌مند شوید
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">