anjam shod

This commit is contained in:
ahmadrezabd
2025-12-15 16:08:40 +03:30
parent b36f1cc22e
commit adc5122b0a
27 changed files with 450 additions and 389 deletions
+26 -26
View File
@@ -2,7 +2,7 @@ export default function AboutPage() {
return (
<>
{/* Hero Section */}
<section className="bg-white py-20 md:py-28">
<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">
@@ -26,7 +26,7 @@ export default function AboutPage() {
</h2>
<div className="space-y-4 text-muted-foreground leading-relaxed tracking-normal">
<p>
کنترل پی یک گروه متخصص است که در حوزه اینتگریشن و روش‌های نوین یکپارچه‌سازی فعالیت می‌کند.
فیپ یک گروه متخصص است که در حوزه اینتگریشن و روش‌های نوین یکپارچه‌سازی فعالیت می‌کند.
ما با استفاده از تکنولوژی‌های پیشرفته و رویکردهای نوآورانه، به کسب‌وکارها کمک می‌کنیم تا
سیستم‌های خود را به شکلی کارآمد و قابل‌اعتماد بهم متصل کنند.
</p>
@@ -48,10 +48,10 @@ export default function AboutPage() {
</section>
{/* Mission & Vision */}
<section className="bg-white py-20 md:py-28">
<section className="bg-background py-20 md:py-28">
<div className="mx-auto max-w-6xl px-6">
<div className="grid gap-12 md:grid-cols-2">
<div className="space-y-6 p-8 rounded-2xl border bg-muted/30">
<div className="grid gap-12 md:grid-cols-2">
<div className="space-y-6 p-8 rounded-2xl border bg-muted/30 transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="space-y-4">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
ماموریت ما
@@ -63,7 +63,7 @@ export default function AboutPage() {
</p>
</div>
</div>
<div className="space-y-6 p-8 rounded-2xl border bg-muted/30">
<div className="space-y-6 p-8 rounded-2xl border bg-muted/30 transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="space-y-4">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
چشم‌انداز ما
@@ -92,25 +92,25 @@ export default function AboutPage() {
</p>
</div>
<div className="grid gap-8 md:grid-cols-2 lg:grid-cols-4">
<div className="space-y-4 p-6 rounded-xl bg-white border">
<div className="space-y-4 p-6 rounded-xl bg-card border transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<h3 className="font-bold text-xl">کیفیت</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
تعهد به کیفیت و نوآوری در تمام پروژه‌ها و خدمات
</p>
</div>
<div className="space-y-4 p-6 rounded-xl bg-white border">
<div className="space-y-4 p-6 rounded-xl bg-card border transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<h3 className="font-bold text-xl">شفافیت</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
شفافیت کامل در ارتباطات، قیمت‌گذاری و فرآیندها
</p>
</div>
<div className="space-y-4 p-6 rounded-xl bg-white border">
<div className="space-y-4 p-6 rounded-xl bg-card border transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<h3 className="font-bold text-xl">مشتری‌محوری</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
تمرکز بر نیازهای مشتری و رضایت کامل آن‌ها
</p>
</div>
<div className="space-y-4 p-6 rounded-xl bg-white border">
<div className="space-y-4 p-6 rounded-xl bg-card border transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<h3 className="font-bold text-xl">نوآوری</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
استفاده از آخرین تکنولوژی‌ها و روش‌های نوین
@@ -122,21 +122,21 @@ export default function AboutPage() {
</section>
{/* Why Choose Us */}
<section className="bg-white py-20 md:py-28">
<section className="bg-background py-20 md:py-28">
<div className="mx-auto max-w-6xl px-6">
<div className="text-center space-y-12">
<div className="space-y-4">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
چرا کنترل پی را انتخاب کنید؟
چرا فیپ را انتخاب کنید؟
</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
مزایای رقابتی که ما را از دیگران متمایز می‌کند
</p>
</div>
<div className="grid gap-8 md:grid-cols-3">
<div className="space-y-4 text-center">
<div className="space-y-4 text-center transition-all duration-300 hover:-translate-y-1">
<div className="flex justify-center">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary transition-transform duration-300 hover:scale-110">
<svg className="size-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
@@ -147,9 +147,9 @@ export default function AboutPage() {
رابط کاربری ساده و قابل فهم که نیاز به تخصص فنی ندارد
</p>
</div>
<div className="space-y-4 text-center">
<div className="space-y-4 text-center transition-all duration-300 hover:-translate-y-1">
<div className="flex justify-center">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary transition-transform duration-300 hover:scale-110">
<svg className="size-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
</svg>
@@ -160,9 +160,9 @@ export default function AboutPage() {
زیرساخت قدرتمند و پایدار که همیشه در دسترس است
</p>
</div>
<div className="space-y-4 text-center">
<div className="space-y-4 text-center transition-all duration-300 hover:-translate-y-1">
<div className="flex justify-center">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary">
<div className="flex size-16 items-center justify-center rounded-full bg-primary/10 text-primary transition-transform duration-300 hover:scale-110">
<svg className="size-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
</svg>
@@ -187,15 +187,15 @@ export default function AboutPage() {
تیم ما
</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
تیم کنترل پی متشکل از متخصصان با تجربه در حوزه‌های اینتگریشن، فناوری اطلاعات، توسعه نرم‌افزار
تیم فیپ متشکل از متخصصان با تجربه در حوزه‌های اینتگریشن، فناوری اطلاعات، توسعه نرم‌افزار
و مدیریت کسب‌وکار است. ما با همکاری یکدیگر و استفاده از روش‌های نوین، راهکارهای نوآورانه و
کاربردی برای چالش‌های یکپارچه‌سازی ارائه می‌دهیم.
</p>
</div>
<div className="grid gap-8 md:grid-cols-3">
<div className="space-y-4 p-8 rounded-2xl bg-white border text-center">
<div className="space-y-4 p-8 rounded-2xl bg-card border text-center transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center transition-transform duration-300 hover:scale-110">
<span className="text-3xl font-bold text-primary">ت</span>
</div>
</div>
@@ -204,9 +204,9 @@ export default function AboutPage() {
متخصصان با تجربه در حوزه اینتگریشن و یکپارچه‌سازی
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl bg-white border text-center">
<div className="space-y-4 p-8 rounded-2xl bg-card border text-center transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center transition-transform duration-300 hover:scale-110">
<span className="text-3xl font-bold text-primary">ن</span>
</div>
</div>
@@ -215,9 +215,9 @@ export default function AboutPage() {
استفاده از آخرین تکنولوژی‌ها و روش‌های نوین
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl bg-white border text-center">
<div className="space-y-4 p-8 rounded-2xl bg-card border text-center transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center">
<div className="size-24 rounded-full bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center transition-transform duration-300 hover:scale-110">
<span className="text-3xl font-bold text-primary">پ</span>
</div>
</div>
@@ -232,7 +232,7 @@ export default function AboutPage() {
</section>
{/* CTA Section */}
<section className="bg-white py-20 md:py-28">
<section className="bg-background 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">
+55 -34
View File
@@ -6,6 +6,7 @@
font-family: IRANSansX;
font-style: normal;
font-weight: 100;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Thin.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Thin.woff2") format("woff2");
}
@@ -125,18 +126,18 @@
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: #216583;
--primary: #001BB7;
--primary-foreground: oklch(0.985 0 0);
--secondary: #00818A;
--secondary: #0046FF;
--secondary-foreground: oklch(0.985 0 0);
--muted: #f5f5f5;
--muted-foreground: #293462;
--accent: #F7BE16;
--accent-foreground: #293462;
--muted: oklch(0.97 0.01 280);
--muted-foreground: oklch(0.35 0.05 250);
--accent: #FCC61D;
--accent-foreground: oklch(0.25 0.05 50);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--border: oklch(0.9 0.01 280);
--input: oklch(0.95 0.01 280);
--ring: oklch(0.5 0.15 220);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
@@ -150,42 +151,42 @@
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
--background: #ffffff;
--foreground: #293462;
--background: oklch(0.99 0.005 280);
--foreground: oklch(0.25 0.05 250);
}
.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: #216583;
--background: oklch(0.145 0.01 280);
--foreground: oklch(0.95 0.01 280);
--card: oklch(0.22 0.02 280);
--card-foreground: oklch(0.95 0.01 280);
--popover: oklch(0.22 0.02 280);
--popover-foreground: oklch(0.95 0.01 280);
--primary: #001BB7;
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.269 0 0);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: #F7BE16;
--accent-foreground: #293462;
--secondary: #0046FF;
--secondary-foreground: oklch(0.95 0.01 280);
--muted: oklch(0.28 0.02 280);
--muted-foreground: oklch(0.75 0.02 280);
--accent: #FCC61D;
--accent-foreground: oklch(0.2 0.05 50);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.556 0 0);
--border: oklch(0.3 0.02 280);
--input: oklch(0.3 0.02 280);
--ring: oklch(0.5 0.15 220);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar: oklch(0.22 0.02 280);
--sidebar-foreground: oklch(0.95 0.01 280);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.556 0 0);
--sidebar-accent: oklch(0.3 0.02 280);
--sidebar-accent-foreground: oklch(0.95 0.01 280);
--sidebar-border: oklch(0.3 0.02 280);
--sidebar-ring: oklch(0.5 0.15 220);
}
@layer base {
@@ -194,16 +195,36 @@
}
body {
@apply bg-background text-foreground;
font-family: "IRANSansX", var(--font-geist-sans);
font-family: "IRANSansX";
letter-spacing: normal;
line-height: 1.6;
background-image:
radial-gradient(at 0% 0%, oklch(0.98 0.01 280 / 0.3) 0px, transparent 50%),
radial-gradient(at 100% 100%, oklch(0.95 0.02 220 / 0.2) 0px, transparent 50%),
radial-gradient(at 50% 50%, oklch(0.97 0.01 300 / 0.15) 0px, transparent 50%);
background-attachment: fixed;
transition: background-color 0.3s ease;
}
.dark body {
background-image:
radial-gradient(at 0% 0%, oklch(0.2 0.02 280 / 0.3) 0px, transparent 50%),
radial-gradient(at 100% 100%, oklch(0.18 0.02 220 / 0.2) 0px, transparent 50%),
radial-gradient(at 50% 50%, oklch(0.22 0.02 300 / 0.15) 0px, transparent 50%);
}
h1, h2, h3, h4, h5, h6 {
letter-spacing: normal;
line-height: 1.5;
transition: color 0.3s ease;
}
p {
letter-spacing: normal;
line-height: 1.7;
transition: color 0.3s ease;
}
a {
transition: all 0.3s ease;
}
button {
transition: all 0.3s ease;
}
}
+8 -15
View File
@@ -1,22 +1,13 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { ConditionalLayout } from "@/components/conditional-layout";
import { ThemeProvider } from "@/components/theme-provider";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "کنترل پی",
title: "فیپ",
description:
"کنترل پی یک سامانه برای ایجاد و طراحی راهکارهای مناسب برای کسب و کار شما است.",
"فیپ یک سامانه برای ایجاد و طراحی راهکارهای مناسب برای کسب و کار شما است.",
};
export default function RootLayout({
@@ -25,11 +16,13 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
<html lang="fa" dir="rtl">
<html lang="fa" dir="rtl" suppressHydrationWarning>
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
className={`antialiased`}
>
<ConditionalLayout>{children}</ConditionalLayout>
<ThemeProvider>
<ConditionalLayout>{children}</ConditionalLayout>
</ThemeProvider>
</body>
</html>
);
-3
View File
@@ -5,9 +5,6 @@ export default function PricingPage() {
return (
<>
<Pricing />
<section className="bg-white py-16">
<PricingComparator />
</section>
</>
);
}
+46 -68
View File
@@ -1,94 +1,72 @@
import { Button } from "@/components/ui/button";
import { Database, Fingerprint, IdCard, ChartBarIncreasingIcon, MessageSquare, Zap, Shield, Link as LinkIcon } from "lucide-react";
import { Link as LinkIcon, BarChart3, Share2, Zap, TrendingUp, Workflow } from "lucide-react";
import Link from "next/link";
const solutions = [
{
icon: Database,
title: "تجمیع پایگاه داده",
description: "جمع‌آوری و هماهنگ‌سازی داده‌ها از سیستم‌های مختلف برای ایجاد یک نمای واحد از اطلاعات کسب‌وکار شما",
icon: LinkIcon,
title: "یکپارچه‌سازی سیستم‌ها",
description: "اتصال و هماهنگ‌سازی سیستم‌ها و سرویس‌های مختلف برای ایجاد جریان یکپارچه داده و فرآیند",
features: [
"اتصال به دیتابیس‌های مختلف",
"همگام‌سازی خودکار داده‌ها",
"گزارش‌گیری یکپارچه",
"پشتیبانی از APIهای خارجی"
"اتصال به سرویس‌ها و APIهای مختلف",
"همگام‌سازی خودکار داده‌ها بین سیستم‌ها",
"ایجاد workflowهای یکپارچه",
"پشتیبانی از پروتکل‌های مختلف ارتباطی"
]
},
{
icon: Fingerprint,
title: "احراز هویت پیشرفته",
description: "سیستم امن و منعطف برای مدیریت احراز هویت کاربران و سرویس‌ها با پشتیبانی از روش‌های مختلف",
icon: BarChart3,
title: "پنل‌های مدیریتی قدرتمند",
description: "ارائه پنل‌های کاربری پیشرفته برای نمایش آمار، تحلیل داده‌ها و مدیریت اطلاعات با رابط کاربری حرفه‌ای",
features: [
"پشتیبانی از OAuth",
"توکن‌های اختصاصی",
"احراز هویت چندمرحله‌ای",
"مدیریت دسترسی‌ها"
"داشبوردهای تعاملی و قابل تنظیم",
"نمایش آمار و گزارش‌های زنده",
"ویرایش و مدیریت اطلاعات از طریق UI",
"نمودارها و تجسم‌های داده پیشرفته"
]
},
{
icon: IdCard,
title: "مدیریت هویت",
description: "مدیریت یکپارچه کاربران، نقش‌ها و مجوزها در همه سیستم‌های متصل به پلتفرم",
icon: Share2,
title: "تعامل با شبکه‌های اجتماعی",
description: "ایجاد ارتباطات قدرتمند و خودکار با پلتفرم‌های مختلف شبکه‌های اجتماعی برای مدیریت و تعامل بهتر",
features: [
"مدیریت کاربران مرکزی",
"تعریف نقش‌ها و مجوزها",
"همگام‌سازی خودکار",
"لاگ تغییرات"
]
},
{
icon: ChartBarIncreasingIcon,
title: "داشبورد تحلیل",
description: "تبدیل داده‌های خام به گزارش‌ها و نمودارهای قابل‌درک برای تصمیم‌گیری بهتر",
features: [
"گزارش‌های سفارشی",
"نمودارهای تعاملی",
"تحلیل روندها",
"خروجی در فرمت‌های مختلف"
]
},
{
icon: MessageSquare,
title: "ارتباطات چندکاناله",
description: "ارسال و دریافت پیام از کانال‌های مختلف مانند تلگرام، واتساپ و سرویس‌های اختصاصی",
features: [
"پشتیبانی از تلگرام",
"پشتیبانی از واتساپ",
"کانال‌های اختصاصی",
"مدیریت مکالمات"
"اتصال به پلتفرم‌های مختلف اجتماعی",
"مدیریت و ارسال محتوا به صورت خودکار",
"نظارت و تحلیل تعاملات",
"همگام‌سازی اطلاعات بین پلتفرم‌ها"
]
},
{
icon: Zap,
title: "اتوماسیون فرآیندها",
description: "خودکارسازی فرآیندهای کسب‌وکار با استفاده از رویدادها و ترiggerهای قابل تنظیم",
description: "ایجاد کارهای خودکار برای اتوماتیک‌سازی فرآیندهای کسب‌وکار و کاهش کارهای دستی",
features: [
"تعریف workflow",
"اتوماسیون بر اساس رویداد",
"زمان‌بندی کارها",
"اعلان‌های خودکار"
"تعریف و اجرای workflowهای خودکار",
"اتوماسیون بر اساس رویداد و زمان",
"زمان‌بندی و اجرای کارهای تکراری",
"اعلان‌ها و هشدارهای خودکار"
]
},
{
icon: Shield,
title: "امنیت و حریم خصوصی",
description: "محافظت از داده‌ها و ارتباطات با استفاده از آخرین استانداردهای امنیتی",
icon: TrendingUp,
title: "تحلیل و پردازش داده",
description: "انجام تحلیل‌های پیشرفته روی داده‌ها و پردازش اطلاعات برای استخراج منابع ارزشمند",
features: [
"رمزنگاری end-to-end",
"بکاپ خودکار",
"مانیتورینگ امنیتی",
"رعایت استانداردهای GDPR"
"تحلیل داده‌ها از منابع مختلف",
"پردازش و تبدیل داده‌ها",
"گزارش‌گیری و تجسم نتایج",
"شناسایی الگوها و روندها"
]
},
{
icon: LinkIcon,
title: "یکپارچه‌سازی API",
description: "اتصال آسان به APIهای مختلف و سرویس‌های داخلی و خارجی",
icon: Workflow,
title: "مدیریت جریان کار",
description: "طراحی و مدیریت جریان‌های کاری پیچیده برای اتصال و هماهنگ‌سازی فرآیندهای مختلف",
features: [
"REST API",
"GraphQL",
"Webhooks",
"مستندات کامل"
"طراحی workflowهای سفارشی",
"مدیریت و نظارت بر اجرای فرآیندها",
"خطایابی و بهینه‌سازی جریان‌ها",
"لاگ و گزارش‌گیری از اجراها"
]
}
];
@@ -97,14 +75,14 @@ export default function SolutionsPage() {
return (
<>
{/* Hero Section */}
<section className="bg-white py-20 md:py-28">
<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">
راه‌حل‌های ما
</h1>
<p className="text-xl leading-relaxed tracking-normal text-muted-foreground max-w-2xl mx-auto">
مجموعه‌ای از ابزارهای قدرتمند برای یکپارچه‌سازی، اتوماسیون و ارتباطات هوشمند که به کسب‌وکار شما کمک می‌کند تا کارآمدتر و سریع‌تر عمل کند.
راه‌حل‌های یکپارچه‌سازی پیشرفته برای اتصال سیستم‌ها، اتوماسیون فرآیندها، تعامل با شبکه‌های اجتماعی و تحلیل داده‌ها که کسب‌وکار شما را به سطح جدیدی از کارایی می‌رساند.
</p>
</div>
</div>
@@ -119,7 +97,7 @@ export default function SolutionsPage() {
return (
<div
key={index}
className="group rounded-2xl border bg-white p-8 transition-all hover:shadow-lg"
className="group rounded-2xl border bg-card p-8 transition-all duration-300 hover:shadow-lg hover:-translate-y-1"
>
<div className="mb-6 flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
@@ -151,14 +129,14 @@ export default function SolutionsPage() {
</section>
{/* CTA Section */}
<section className="bg-white py-20 md:py-28">
<section className="bg-background 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>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
همین حالا شروع کنید و از قدرت یکپارچه‌سازی و ارتباطات هوشمند بهره‌مند شوید
همین حالا شروع کنید و از قدرت یکپارچه‌سازی سیستم‌ها، اتوماسیون فرآیندها و تحلیل داده‌ها بهره‌مند شوید
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<Button asChild size="lg">
+11 -15
View File
@@ -2,10 +2,10 @@ import Image from "next/image";
export default function ContentSection() {
return (
<section className="bg-white py-16 md:py-32">
<section className="bg-background py-16 md:py-32">
<div className="mx-auto max-w-5xl space-y-8 px-6 md:space-y-16">
<h2 className="relative z-10 max-w-xl text-2xl font-medium md:text-3xl lg:text-4xl leading-relaxed tracking-normal">
اکوسیستم کنترل پی مدل‌های ما را گرد هم می‌آورد.
اکوسیستم فیپ: راهکارهای یکپارچه برای کسب‌وکارهای هوشمند
</h2>
<div className="grid gap-6 sm:grid-cols-2 md:gap-12 lg:gap-24">
<div className="relative mb-6 sm:mb-0">
@@ -29,29 +29,25 @@ export default function ContentSection() {
<div className="relative space-y-4">
<p className="text-muted-foreground leading-relaxed tracking-normal">
کنترل پی در حال تکامل است تا فراتر از مدل‌ها باشد.{" "}
فیپ یک گروه متخصص است که در حوزه اینتگریشن و روش‌های نوین یکپارچه‌سازی فعالیت می‌کند.{" "}
<span className="text-accent-foreground font-bold">
این پلتفرم از کل اکوسیستم پشتیبانی می‌کند
ما با استفاده از تکنولوژی‌های پیشرفته و رویکردهای نوآورانه
</span>{" "}
— از محصولات تا نوآوری.
به کسب‌وکارها کمک می‌کنیم تا سیستم‌های خود را به شکلی کارآمد و قابل‌اعتماد بهم متصل کنند.
</p>
<p className="text-muted-foreground leading-relaxed tracking-normal">
این پلتفرم از کل اکوسیستم پشتیبانی می‌کند — از محصولات تا APIها و
پلتفرم‌هایی که به توسعه‌دهندگان و کسب‌وکارها کمک می‌کنند تا نوآوری
کنند
ما در زمینه یکپارچه‌سازی سیستم‌ها، اتوماسیون فرآیندها، ارتباطات چندکاناله و مدیریت داده‌ها تخصص داریم. با استفاده از روش‌های نوین و ابزارهای پیشرفته، راهکارهای سفارشی برای هر کسب‌وکار طراحی و پیاده‌سازی می‌کنیم که به آن‌ها امکان می‌دهد تا از قدرت اتوماسیون و ارتباطات هوشمند بهره‌مند شوند.
</p>
<div className="pt-6">
<blockquote className="border-s-4 ps-4">
<p className="leading-relaxed tracking-normal">
استفاده از کنترل پی مانند باز کردن یک قدرت فوق‌العاده طراحی
مخفی بوده است. این ترکیب کامل سادگی و تطبیق‌پذیری است که به ما
امکان می‌دهد رابط‌های کاربری بسازیم که هم زیبا و هم کاربرپسند
هستند.
<blockquote className="border-s-4 border-primary/30 ps-4">
<p className="leading-relaxed tracking-normal text-foreground">
ماموریت ما این است که با استفاده از روش‌های نوین اینتگریشن، به کسب‌وکارها کمک کنیم تا
بدون پیچیدگی‌های فنی، سیستم‌های خود را بهم متصل کنند و به اهداف خود برسند.
</p>
<div className="mt-6 space-y-3">
<div className="block font-medium not-italic">احمدرضا عزیزان، مدیر</div>
<div className="block font-medium not-italic text-foreground">ماموریت فیپ</div>
</div>
</blockquote>
</div>
+22 -23
View File
@@ -6,10 +6,10 @@ import {
AccordionTrigger,
} from "@/components/ui/accordion";
import {
ChartBarIncreasingIcon,
Database,
Fingerprint,
IdCard,
Link as LinkIcon,
BarChart3,
Share2,
Zap,
} from "lucide-react";
import Image from "next/image";
import { useState } from "react";
@@ -23,24 +23,24 @@ export default function Features() {
const images = {
"item-1": {
image: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1207&h=929&fit=crop&q=80",
alt: "Database visualization",
alt: "System integration",
},
"item-2": {
image: "https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1207&h=929&fit=crop&q=80",
alt: "Security authentication",
alt: "Management panels",
},
"item-3": {
image: "https://images.unsplash.com/photo-1557683316-973673baf926?w=1207&h=929&fit=crop&q=80",
alt: "Identity management",
alt: "Social media integration",
},
"item-4": {
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=1207&h=929&fit=crop&q=80",
alt: "Analytics dashboard",
alt: "Process automation",
},
};
return (
<section className="bg-white py-12 md:py-20 lg:py-32">
<section className="bg-background py-12 md:py-20 lg:py-32">
<div className="bg-linear-to-b absolute inset-0 -z-10 sm:inset-6 sm:rounded-b-3xl dark:block dark:to-[color-mix(in_oklab,var(--color-zinc-900)_75%,var(--color-background))]"></div>
<div className="mx-auto max-w-5xl space-y-8 px-6 md:space-y-16 lg:space-y-20 dark:[--color-border:color-mix(in_oklab,var(--color-white)_10%,transparent)]">
<div className="relative z-10 mx-auto max-w-2xl space-y-6 text-center">
@@ -48,8 +48,7 @@ export default function Features() {
پایه و اساس ارتباطات هوشمند
</h2>
<p className="leading-relaxed tracking-normal">
پلتفرم ما برای اتصال آسان میان سیستم‌ها، APIها و سرویس‌های داخلی شما طراحی شده است.
از یکپارچه‌سازی داده‌ها و احراز هویت گرفته تا پردازش رویدادها و ارسال پیام در کانال‌هایی مثل تلگرام، واتساپ یا حتی سرویس‌های اختصاصی — همه‌چیز با دقت و مقیاس‌پذیری بالا مدیریت می‌شود تا توسعه‌دهندگان و کسب‌وکارها بتوانند سریع‌تر نوآوری کنند.
راه‌حل‌های یکپارچه‌سازی پیشرفته برای اتصال سیستم‌ها، اتوماسیون فرآیندها، تعامل با شبکه‌های اجتماعی و تحلیل داده‌ها. پلتفرم ما به شما امکان می‌دهد تا سیستم‌های مختلف را به راحتی بهم متصل کنید، فرآیندهای کسب‌وکار را خودکارسازی کنید و از قدرت داده‌ها برای تصمیم‌گیری بهتر استفاده کنید.
</p>
</div>
@@ -63,52 +62,52 @@ export default function Features() {
<AccordionItem value="item-1">
<AccordionTrigger>
<div className="flex items-center gap-2 text-base">
<Database className="size-4" />
تجمیع پایگاه داده
<LinkIcon className="size-4" />
یکپارچه‌سازی سیستم‌ها
</div>
</AccordionTrigger>
<AccordionContent>
<p className="leading-relaxed tracking-normal">
ما داده‌های موردنیاز شما را از سیستم‌های مختلف جمع‌آوری و هماهنگ می‌کنیم؛ از دیتابیس‌های محلی تا APIهای خارجی. این قابلیت برای گزارش‌گیری، اتوماسیون و ایجاد یک نمای واحد از اطلاعات کلیدی کسب‌وکار ضروری است.
اتصال و هماهنگ‌سازی سیستم‌ها و سرویس‌های مختلف برای ایجاد جریان یکپارچه داده و فرآیند. ما به شما امکان می‌دهیم تا به سرویس‌ها و APIهای مختلف متصل شوید، داده‌ها را به صورت خودکار بین سیستم‌ها همگام‌سازی کنید و workflowهای یکپارچه ایجاد کنید.
</p>
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>
<div className="flex items-center gap-2 text-base">
<Fingerprint className="size-4" />
احراز هویت پیشرفته
<BarChart3 className="size-4" />
پنل‌های مدیریتی قدرتمند
</div>
</AccordionTrigger>
<AccordionContent>
<p className="leading-relaxed tracking-normal">
سیستم احراز هویت امن و منعطف که از انواع روش‌ها پشتیبانی می‌کند—از OAuth تا توکن‌های اختصاصی—تا بتوانید کاربران، سرویس‌ها و اپلیکیشن‌های خود را با کمترین پیچیدگی مدیریت کنید.
ارائه پنل‌های کاربری پیشرفته برای نمایش آمار، تحلیل داده‌ها و مدیریت اطلاعات با رابط کاربری حرفه‌ای. داشبوردهای تعاملی و قابل تنظیم، نمایش آمار و گزارش‌های زنده، و امکان ویرایش و مدیریت اطلاعات از طریق UI قدرتمند.
</p>
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionTrigger>
<div className="flex items-center gap-2 text-base">
<IdCard className="size-4" />
مدیریت هویت
<Share2 className="size-4" />
تعامل با شبکه‌های اجتماعی
</div>
</AccordionTrigger>
<AccordionContent>
<p className="leading-relaxed tracking-normal">
مدیریت یکپارچه کاربران، نقش‌ها و مجوزها در همه سیستم‌ها. هر تغییری در یک سرویس، بلافاصله در سایر سرویس‌های متصل هم منعکس می‌شود.
ایجاد ارتباطات قدرتمند و خودکار با پلتفرم‌های مختلف شبکه‌های اجتماعی برای مدیریت و تعامل بهتر. اتصال به پلتفرم‌های مختلف اجتماعی، مدیریت و ارسال محتوا به صورت خودکار، نظارت و تحلیل تعاملات، و همگام‌سازی اطلاعات بین پلتفرم‌ها.
</p>
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-4">
<AccordionTrigger>
<div className="flex items-center gap-2 text-base">
<ChartBarIncreasingIcon className="size-4" />
داشبورد تحلیل
<Zap className="size-4" />
اتوماسیون فرآیندها
</div>
</AccordionTrigger>
<AccordionContent>
<p className="leading-relaxed tracking-normal">
داده‌های شما به گزارش‌ها و نمودارهای قابل‌درک تبدیل می‌شود؛ چه برای نمایش فروش ماهانه یک فروشگاه، چه برای نشان دادن آمار بازدید یک سایت، یا تحلیل رفتار کاربران در یک ربات تلگرام.
ایجاد کارهای خودکار برای اتوماتیک‌سازی فرآیندهای کسب‌وکار و کاهش کارهای دستی. تعریف و اجرای workflowهای خودکار، اتوماسیون بر اساس رویداد و زمان، زمان‌بندی و اجرای کارهای تکراری، و اعلان‌ها و هشدارهای خودکار.
</p>
</AccordionContent>
</AccordionItem>
+1 -1
View File
@@ -112,7 +112,7 @@ export default function FooterSection() {
</div>
<span className="text-muted-foreground block text-center text-sm">
{" "}
© {new Date().getFullYear()} کنترل پی، تمامی حقوق محفوظ است
© {new Date().getFullYear()} فیپ، تمامی حقوق محفوظ است
</span>
</div>
</footer>
+16 -9
View File
@@ -5,6 +5,7 @@ import { Menu, X } from 'lucide-react'
import { Button } from '@/components/ui/button'
import React from 'react'
import { cn } from '@/lib/utils'
import { ThemeToggle } from '@/components/theme-toggle'
const menuItems = [
{ name: 'صفحه اصلی', href: '/' },
@@ -29,8 +30,8 @@ export const HeroHeader = () => {
<nav
data-state={menuState && 'active'}
className="fixed z-20 w-full px-2">
<div className={cn('mx-auto mt-2 max-w-6xl px-6 transition-all duration-300 lg:px-12', isScrolled && 'bg-background/50 max-w-4xl rounded-2xl border backdrop-blur-lg lg:px-5')}>
<div className="relative flex flex-wrap items-center justify-between gap-6 py-3 lg:gap-0 lg:py-4">
<div className={cn('mx-auto mt-2 max-w-6xl px-6 transition-all duration-300 lg:px-12 bg-background/80 backdrop-blur-md rounded-2xl border border-border/50', isScrolled && 'bg-background/95 max-w-4xl shadow-lg lg:px-5')}>
<div className="relative flex flex-wrap items-center justify-between gap-6 py-2 lg:gap-0 lg:py-3">
<div className="flex w-full justify-between lg:w-auto">
<Link
href="/"
@@ -48,39 +49,45 @@ export const HeroHeader = () => {
</button>
</div>
<div className="absolute inset-0 m-auto hidden size-fit lg:block">
<div className="absolute inset-0 m-auto hidden size-fit lg:flex items-center gap-8">
<ul className="flex gap-8 text-sm">
{menuItems.map((item, index) => (
<li key={index}>
<Link
href={item.href}
className="text-muted-foreground hover:text-accent transition-colors duration-150">
<span>{item.name}</span>
className="text-muted-foreground hover:text-foreground transition-all duration-300 relative group">
<span className="relative z-10">{item.name}</span>
<span className="absolute bottom-0 right-0 w-0 h-0.5 bg-accent transition-all duration-300 group-hover:w-full"></span>
</Link>
</li>
))}
</ul>
<ThemeToggle />
</div>
<div className="bg-background in-data-[state=active]:block lg:in-data-[state=active]:flex mb-6 hidden w-full flex-wrap items-center justify-end space-y-8 rounded-3xl border p-6 shadow-2xl shadow-zinc-300/20 md:flex-nowrap lg:m-0 lg:flex lg:w-fit lg:gap-6 lg:space-y-0 lg:border-transparent lg:bg-transparent lg:p-0 lg:shadow-none dark:shadow-none dark:lg:bg-transparent">
<div className="lg:hidden">
<div className="lg:hidden w-full">
<ul className="space-y-6 text-base">
{menuItems.map((item, index) => (
<li key={index}>
<Link
href={item.href}
className="text-muted-foreground hover:text-accent transition-colors duration-150">
<span>{item.name}</span>
className="text-muted-foreground hover:text-foreground transition-all duration-300 relative group block">
<span className="relative z-10">{item.name}</span>
<span className="absolute bottom-0 right-0 w-0 h-0.5 bg-accent transition-all duration-300 group-hover:w-full"></span>
</Link>
</li>
))}
</ul>
<div className="mt-6 flex justify-end">
<ThemeToggle />
</div>
</div>
<div className="flex w-full flex-col space-y-3 sm:flex-row sm:gap-3 sm:space-y-0 md:w-fit">
<Button
asChild
size="sm"
className={cn(isScrolled ? 'lg:inline-flex' : 'hidden')}>
className={cn(isScrolled ? 'lg:inline-flex' : 'hidden', 'transition-all duration-300 hover:scale-105')}>
<Link href="#">
<span>شروع کنید</span>
</Link>
+60 -84
View File
@@ -6,6 +6,7 @@ import Image from "next/image";
import { TextEffect } from "@/components/ui/text-effect";
import { AnimatedGroup } from "@/components/ui/animated-group";
import { HeroHeader } from "./header";
import { LogoItem } from "@/components/ui/logo-item";
const transitionVariants = {
item: {
@@ -39,7 +40,7 @@ export default function HeroSection() {
<div className="h-320 absolute left-0 top-0 w-60 -rotate-45 rounded-full bg-[radial-gradient(50%_50%_at_50%_50%,hsla(0,0%,85%,.06)_0,hsla(0,0%,45%,.02)_80%,transparent_100%)] [translate:5%_-50%]" />
<div className="h-320 -translate-y-87.5 absolute left-0 top-0 w-60 -rotate-45 bg-[radial-gradient(50%_50%_at_50%_50%,hsla(0,0%,85%,.04)_0,hsla(0,0%,45%,.02)_80%,transparent_100%)]" />
</div>
<section className="bg-white">
<section className="bg-background">
<div className="relative pt-24 md:pt-36">
<AnimatedGroup
variants={{
@@ -92,7 +93,7 @@ export default function HeroSection() {
<span className="text-foreground text-sm">
معرفی نسل جدید یکپارچه‌سازی و ارتباطات هوشمند
</span>
<span className="dark:border-background block h-4 w-0.5 border-s bg-white dark:bg-zinc-700"></span>
<span className="dark:border-background block h-4 w-0.5 border-s bg-card dark:bg-muted"></span>
<div className="bg-background group-hover:bg-muted size-6 overflow-hidden rounded-full duration-500">
<div className="flex w-12 translate-x-1/2 duration-500 ease-in-out group-hover:translate-x-0">
@@ -174,16 +175,9 @@ export default function HeroSection() {
<div className="mask-b-from-55% relative -mr-56 mt-8 overflow-hidden px-2 sm:mr-0 sm:mt-12 md:mt-20">
<div className="inset-shadow-2xs ring-background dark:inset-shadow-white/20 bg-background relative mx-auto max-w-6xl overflow-hidden rounded-2xl border p-4 shadow-lg shadow-zinc-950/15 ring-1">
<Image
className="bg-background aspect-15/8 relative hidden rounded-2xl dark:block object-cover"
src="https://images.unsplash.com/photo-1557683316-973673baf926?w=2700&h=1440&fit=crop&q=80"
alt="Modern abstract technology"
width={2700}
height={1440}
/>
<Image
className="z-2 border-border/25 aspect-15/8 relative rounded-2xl border dark:hidden object-cover"
src="https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=2700&h=1440&fit=crop&q=80"
alt="Modern abstract design"
className="bg-background aspect-15/8 relative rounded-2xl object-contain"
src="/assets/hero-integration.png.png"
alt="یکپارچه‌سازی سیستم‌ها و شبکه دیجیتال"
width={2700}
height={1440}
/>
@@ -192,91 +186,73 @@ export default function HeroSection() {
</AnimatedGroup>
</div>
</section>
<section className="bg-white pb-16 pt-16 md:pb-32">
<section className="bg-background pb-16 pt-16 md:pb-32">
<div className="group relative m-auto max-w-5xl px-6">
<div className="absolute inset-0 z-10 flex scale-95 items-center justify-center opacity-0 duration-500 group-hover:scale-100 group-hover:opacity-100">
<Link
href="/"
className="block text-sm duration-150 hover:text-accent transition-colors"
>
<span> با مشتریان ما آشنا شوید</span>
<span> اتصال به سایر سیستم ها </span>
<ChevronRight className="ml-1 inline-block size-3" />
</Link>
</div>
<div className="group-hover:blur-xs mx-auto mt-12 grid max-w-2xl grid-cols-4 gap-x-12 gap-y-8 transition-all duration-500 group-hover:opacity-50 sm:gap-x-16 sm:gap-y-14">
<div className="flex">
<img
className="mx-auto h-5 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/nvidia.svg"
alt="Nvidia Logo"
height="20"
width="auto"
<div className="group-hover:blur-xs mx-auto mt-12 grid max-w-4xl grid-cols-5 gap-x-12 gap-y-8 transition-all duration-500 group-hover:opacity-50 sm:gap-x-16 sm:gap-y-14">
<LogoItem
icon="logos:telegram"
alt="Telegram Logo"
size="md"
className="translate-x-1"
/>
<LogoItem
icon="logos:whatsapp-icon"
alt="WhatsApp Logo"
size="md"
className="translate-x-4"
/>
<LogoItem
icon="logos:wordpress-icon"
alt="WordPress Logo"
size="md"
className="-translate-x-2"
/>
<LogoItem
icon="logos:microsoft-windows-icon"
alt="Microsoft Windows Logo"
size="md"
className="translate-x-2"
/>
<LogoItem
icon="logos:google-icon"
alt="Google Logo"
size="md"
className="translate-x-5"
/>
<div className="col-span-5 flex justify-center gap-12 sm:gap-16">
<LogoItem
icon="logos:zapier-icon"
alt="Zapier Logo"
size="md"
className="translate-x-0"
/>
</div>
<div className="flex">
<img
className="mx-auto h-4 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/column.svg"
alt="Column Logo"
height="16"
width="auto"
<LogoItem
icon="logos:android-icon"
alt="Android Logo"
size="md"
className="translate-x-3"
/>
</div>
<div className="flex">
<img
className="mx-auto h-4 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/github.svg"
alt="GitHub Logo"
height="16"
width="auto"
<LogoItem
icon="logos:amp-icon"
alt="AMP Logo"
size="md"
className="-translate-x-1"
/>
</div>
<div className="flex">
<img
className="mx-auto h-5 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/nike.svg"
alt="Nike Logo"
height="20"
width="auto"
/>
</div>
<div className="flex">
<img
className="mx-auto h-5 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/lemonsqueezy.svg"
alt="Lemon Squeezy Logo"
height="20"
width="auto"
/>
</div>
<div className="flex">
<img
className="mx-auto h-4 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/laravel.svg"
alt="Laravel Logo"
height="16"
width="auto"
/>
</div>
<div className="flex">
<img
className="mx-auto h-7 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/lilly.svg"
alt="Lilly Logo"
height="28"
width="auto"
/>
</div>
<div className="flex">
<img
className="mx-auto h-6 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/openai.svg"
alt="OpenAI Logo"
height="24"
width="auto"
<LogoItem
icon="logos:ios"
alt="iOS Logo"
size="md"
className="translate-x-4"
/>
</div>
</div>
+1 -1
View File
@@ -23,7 +23,7 @@ export function LoginForm({
<div className="flex flex-col items-center gap-2 text-center">
<h1 className="text-xl sm:text-2xl font-bold">خوش آمدید</h1>
<p className="text-sm sm:text-base text-muted-foreground text-balance">
به حساب کنترل پی خود وارد شوید
به حساب فیپ خود وارد شوید
</p>
</div>
<Field>
+2 -2
View File
@@ -12,7 +12,7 @@ export const Logo = ({
return (
<Link href="/" className="flex items-center space-x-2">
<LogoIcon className={className} uniColor={uniColor} />
<span className="font-bold">کنترل پی</span>
<span className="font-bold text-sm">فیپ</span>
</Link>
);
};
@@ -24,7 +24,7 @@ export const LogoIcon = ({
className?: string;
uniColor?: boolean;
}) => {
return <Image src="/assets/arablogo.svg" alt="Logo" width={80} height={80} className={cn("h-auto", className)} />;
return <Image src="/assets/flogo-1.png" alt="Logo" width={50} height={50} className={cn("h-auto", className)} />;
};
export const LogoStroke = ({ className }: { className?: string }) => {
+25 -25
View File
@@ -49,11 +49,11 @@ const tableData = [
export default function PricingComparator() {
return (
<section className="bg-white py-16 md:py-32">
<section className="bg-background py-16 md:py-32">
<div className="mx-auto max-w-5xl px-6">
<div className="w-full overflow-auto lg:overflow-visible">
<table className="w-[200vw] border-separate border-spacing-x-3 md:w-full dark:[--color-muted:var(--color-zinc-900)]">
<thead className="bg-background sticky top-0">
<table className="w-[200vw] border-separate border-spacing-x-3 md:w-full">
<thead className="bg-background sticky top-0 z-10">
<tr className="*:py-4 *:text-start *:font-medium">
<th className="lg:w-2/5"></th>
<th className="space-y-3">
@@ -63,7 +63,7 @@ export default function PricingComparator() {
<Link href="/login?utm_source=pricing-free">شروع کنید</Link>
</Button>
</th>
<th className="bg-muted rounded-t-(--radius) space-y-3 px-4">
<th className="bg-muted rounded-t-xl space-y-3 px-4 border dark:border-transparent border-border">
<span className="block">حرفه‌ای</span>
<Button asChild size="sm">
<Link href="/login?utm_source=pricing-professional">
@@ -88,19 +88,19 @@ export default function PricingComparator() {
<span>ویژگی‌ها</span>
</td>
<td></td>
<td className="bg-muted border-none px-4"></td>
<td className="bg-muted border-x dark:border-x-transparent border-border px-4"></td>
<td></td>
</tr>
{tableData.slice(-4).map((row, index) => (
<tr key={index} className="*:border-b *:py-3">
<tr key={index} className="*:border-b *:dark:border-b-transparent *:border-border *:py-3">
<td className="text-muted-foreground">{row.feature}</td>
<td>
<td className="text-foreground">
{row.free === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -112,14 +112,14 @@ export default function PricingComparator() {
row.free
)}
</td>
<td className="bg-muted border-none px-4">
<div className="-mb-3 border-b py-3">
<td className="bg-muted border-x border-border px-4">
<div className="-mb-3 border-b dark:border-b-transparent border-border py-3">
{row.pro === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -128,17 +128,17 @@ export default function PricingComparator() {
/>
</svg>
) : (
row.pro
<span className="text-foreground">{row.pro}</span>
)}
</div>
</td>
<td>
<td className="text-foreground">
{row.startup === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -158,19 +158,19 @@ export default function PricingComparator() {
<span>مدل‌های هوش مصنوعی</span>
</td>
<td></td>
<td className="bg-muted border-none px-4"></td>
<td className="bg-muted border-x dark:border-x-transparent border-border px-4"></td>
<td></td>
</tr>
{tableData.map((row, index) => (
<tr key={index} className="*:border-b *:py-3">
<tr key={index} className="*:border-b *:dark:border-b-transparent *:border-border *:py-3">
<td className="text-muted-foreground">{row.feature}</td>
<td>
<td className="text-foreground">
{row.free === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -182,14 +182,14 @@ export default function PricingComparator() {
row.free
)}
</td>
<td className="bg-muted border-none px-4">
<div className="-mb-3 border-b py-3">
<td className="bg-muted border-x border-border px-4">
<div className="-mb-3 border-b dark:border-b-transparent border-border py-3">
{row.pro === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -198,17 +198,17 @@ export default function PricingComparator() {
/>
</svg>
) : (
row.pro
<span className="text-foreground">{row.pro}</span>
)}
</div>
</td>
<td>
<td className="text-foreground">
{row.startup === true ? (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
className="size-4"
className="size-4 text-primary"
>
<path
fillRule="evenodd"
@@ -225,7 +225,7 @@ export default function PricingComparator() {
<tr className="*:py-6">
<td></td>
<td></td>
<td className="bg-muted rounded-b-(--radius) border-none px-4"></td>
<td className="bg-muted rounded-b-xl border-x border-b dark:border-x-transparent dark:border-b-transparent border-border px-4"></td>
<td></td>
</tr>
</tbody>
+36 -62
View File
@@ -6,15 +6,20 @@ export default function Pricing() {
return (
<>
{/* Hero Section */}
<section className="bg-white py-20 md:py-28">
<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">
قیمت‌گذاری
</h1>
<p className="text-xl leading-relaxed tracking-normal text-muted-foreground max-w-2xl mx-auto">
قیمت‌ها بر اساس نوع سرویس و بازه زمانی تعیین می‌شوند
</p>
<div className="space-y-4 max-w-3xl mx-auto">
<p className="text-xl leading-relaxed tracking-normal text-muted-foreground">
هر راه‌حل با توجه به پیچیدگی، شرایط اجرا و نیازمندی‌های خاص شما طراحی می‌شود. به همین دلیل، قیمت‌گذاری ما کاملاً سفارشی و متناسب با شرایط واقعی کسب‌وکار شماست.
</p>
<p className="text-lg leading-relaxed tracking-normal text-foreground font-medium">
راه‌حل‌های ما از <span className="text-primary font-bold">۲ میلیون تومان</span> شروع می‌شوند و بر اساس نیازهای دقیق شما محاسبه می‌گردند.
</p>
</div>
</div>
</div>
</section>
@@ -25,44 +30,44 @@ export default function Pricing() {
<div className="space-y-12">
<div className="text-center space-y-4 max-w-3xl mx-auto">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
پروژه‌ها بر اساس چه عواملی قیمت‌گذاری می‌شوند؟
راه‌حل‌ها بر اساس چه عواملی قیمت‌گذاری می‌شوند؟
</h2>
<p className="text-lg leading-relaxed tracking-normal text-muted-foreground">
ما متعهد هستیم که پروژه‌های شما را در <strong className="text-foreground">کمترین زمان ممکن</strong> و با <strong className="text-foreground">بهترین قیمت</strong> انجام دهیم.
ما متعهد هستیم که راه‌حل‌های شما را در <strong className="text-foreground">کمترین زمان ممکن</strong> و با <strong className="text-foreground">بهترین قیمت</strong> ارائه دهیم.
قیمت‌گذاری ما بر اساس نیازهای خاص شما انجام می‌شود و عوامل مختلفی در تعیین قیمت نهایی نقش دارند.
</p>
</div>
<div className="grid gap-8 md:grid-cols-2 lg:grid-cols-3">
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<FileText className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">نوع پروژه</h3>
<h3 className="text-xl font-bold leading-tight">نوع سرویس</h3>
</div>
<p className="leading-relaxed tracking-normal text-muted-foreground">
نوع پروژه شما یکی از مهم‌ترین عوامل در تعیین قیمت است. پروژه‌های یکپارچه‌سازی،
نوع سرویس شما یکی از مهم‌ترین عوامل در تعیین قیمت است. سرویس‌های یکپارچه‌سازی،
اتوماسیون، ارتباطات چندکاناله و مدیریت داده‌ها هر کدام نیازمندی‌ها و پیچیدگی‌های خاص خود را دارند.
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<Code className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">پیچیدگی پروژه</h3>
<h3 className="text-xl font-bold leading-tight">پیچیدگی راه‌حل</h3>
</div>
<p className="leading-relaxed tracking-normal text-muted-foreground">
میزان پیچیدگی فنی پروژه، تعداد سیستم‌های متصل، حجم داده‌ها و نیاز به سفارشی‌سازی
از عوامل مهم در تعیین قیمت هستند. پروژه‌های پیچیده‌تر نیاز به زمان و تخصص بیشتری دارند.
میزان پیچیدگی فنی راه‌حل، تعداد سیستم‌های متصل، حجم داده‌ها و نیاز به سفارشی‌سازی
از عوامل مهم در تعیین قیمت هستند. راه‌حل‌های پیچیده‌تر نیاز به زمان و تخصص بیشتری دارند.
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<Settings className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">اجرا و پیاده‌سازی</h3>
@@ -73,9 +78,9 @@ export default function Pricing() {
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<Users className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">تعداد کاربران</h3>
@@ -86,22 +91,22 @@ export default function Pricing() {
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<Clock className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">بازه زمانی</h3>
</div>
<p className="leading-relaxed tracking-normal text-muted-foreground">
بازه زمانی استفاده از سرویس (ماهانه، سالانه) و مدت زمان مورد نیاز برای تکمیل پروژه
بازه زمانی استفاده از سرویس (ماهانه، سالانه) و مدت زمان مورد نیاز برای پیاده‌سازی راه‌حل
در قیمت‌گذاری تاثیر دارد. قراردادهای بلندمدت معمولاً شامل تخفیف‌های ویژه می‌شوند.
</p>
</div>
<div className="space-y-4 p-8 rounded-2xl border bg-white">
<div className="space-y-4 p-8 rounded-2xl border dark:border-transparent bg-card transition-all duration-300 hover:shadow-lg hover:-translate-y-1">
<div className="flex items-center gap-4">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0">
<div className="flex size-14 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 transition-transform duration-300 group-hover:scale-110">
<Settings className="size-7" />
</div>
<h3 className="text-xl font-bold leading-tight">پشتیبانی و نگهداری</h3>
@@ -117,54 +122,23 @@ export default function Pricing() {
</section>
{/* Package Details */}
<section className="bg-white py-20 md:py-28">
<section className="bg-background py-20 md:py-28">
<div className="mx-auto max-w-6xl px-6">
<div className="bg-card relative rounded-3xl border shadow-2xl shadow-zinc-950/5">
<div className="grid items-center gap-12 divide-y p-12 md:grid-cols-2 md:divide-x md:divide-y-0">
<div className="bg-card relative rounded-3xl border dark:border-transparent shadow-2xl shadow-zinc-950/5">
<div className="grid items-center gap-12 p-12 md:grid-cols-2">
<div className="pb-12 text-center md:pb-0 md:pe-12">
<h3 className="text-3xl font-bold leading-tight tracking-normal mb-4">پکیج سازمانی</h3>
<h3 className="text-3xl font-bold leading-tight tracking-normal mb-4">راه‌حل سازمانی</h3>
<p className="text-lg leading-relaxed tracking-normal text-muted-foreground mb-8">
برای شرکت شما با هر اندازه‌ای
</p>
<p className="text-muted-foreground leading-relaxed tracking-normal mb-8">
ما راهکارهای سفارشی برای کسب‌وکارهای مختلف ارائه می‌دهیم.
تیم ما آماده است تا بر اساس نیازهای خاص شما، بهترین پکیج را طراحی کند.
تیم ما آماده است تا بر اساس نیازهای خاص شما، بهترین راه‌حل را طراحی کند.
</p>
<div className="mt-8 flex flex-wrap items-center justify-center gap-6">
<img
className="h-5 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/nvidia.svg"
alt="Nvidia Logo"
height="20"
width="auto"
/>
<img
className="h-4 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/column.svg"
alt="Column Logo"
height="16"
width="auto"
/>
<img
className="h-4 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/github.svg"
alt="GitHub Logo"
height="16"
width="auto"
/>
<img
className="h-5 w-fit dark:invert"
src="https://html.tailus.io/blocks/customers/nike.svg"
alt="Nike Logo"
height="20"
width="auto"
/>
</div>
</div>
<div className="relative">
<h4 className="text-xl font-bold mb-6 leading-tight">ویژگی‌های پکیج سازمانی</h4>
<h4 className="text-xl font-bold mb-6 leading-tight">ویژگی‌های راه‌حل سازمانی</h4>
<ul role="list" className="space-y-4">
{[
"تجمیع پایگاه داده و یکپارچه‌سازی",
@@ -191,7 +165,7 @@ export default function Pricing() {
{/* CTA Section - اطلاع از قیمت */}
<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">
<div className="text-center space-y-8 p-12 rounded-2xl border dark:border-transparent bg-gradient-to-br from-primary/5 to-primary/10">
<h2 className="text-3xl font-bold md:text-4xl leading-tight tracking-normal">
برای اطلاع از قیمت با ما تماس بگیرید
</h2>
+21
View File
@@ -0,0 +1,21 @@
'use client'
import { ThemeProvider as NextThemesProvider } from 'next-themes'
export function ThemeProvider({
children,
}: {
children: React.ReactNode
}) {
return (
<NextThemesProvider
attribute="class"
defaultTheme="light"
enableSystem
disableTransitionOnChange={false}
>
{children}
</NextThemesProvider>
)
}
+43
View File
@@ -0,0 +1,43 @@
'use client'
import { Moon, Sun } from 'lucide-react'
import { useTheme } from 'next-themes'
import { useEffect, useState } from 'react'
import { Button } from '@/components/ui/button'
import { cn } from '@/lib/utils'
export function ThemeToggle() {
const { theme, setTheme } = useTheme()
const [mounted, setMounted] = useState(false)
useEffect(() => {
setMounted(true)
}, [])
if (!mounted) {
return (
<Button
variant="ghost"
size="sm"
className="size-9 rounded-lg"
aria-label="Toggle theme"
>
<Sun className="size-4" />
</Button>
)
}
return (
<Button
variant="ghost"
size="sm"
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
className="size-9 rounded-lg transition-all duration-300 hover:bg-muted"
aria-label="Toggle theme"
>
<Sun className="size-4 rotate-0 scale-100 transition-all duration-300 dark:-rotate-90 dark:scale-0" />
<Moon className="absolute size-4 rotate-90 scale-0 transition-all duration-300 dark:rotate-0 dark:scale-100" />
</Button>
)
}
+2 -2
View File
@@ -56,8 +56,8 @@ export const BorderBeam = ({
size = 50,
delay = 0,
duration = 6,
colorFrom = "#ffaa40",
colorTo = "#9c40ff",
colorFrom = "#FCC61D",
colorTo = "#0046FF",
transition,
style,
reverse = false,
+5 -5
View File
@@ -9,16 +9,16 @@ const buttonVariants = cva(
{
variants: {
variant: {
default: "bg-primary text-primary-foreground hover:bg-accent hover:text-foreground transition-colors",
default: "bg-primary text-primary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors",
destructive:
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline:
"border bg-background shadow-xs hover:bg-accent hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-accent/20 transition-colors",
"border bg-background shadow-xs hover:bg-accent hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors",
secondary:
"bg-secondary text-secondary-foreground hover:bg-accent hover:text-foreground transition-colors",
"bg-secondary text-secondary-foreground hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors",
ghost:
"hover:bg-accent hover:text-foreground dark:hover:bg-accent/50 transition-colors",
link: "text-primary underline-offset-4 hover:text-accent hover:underline transition-colors",
"hover:bg-accent hover:text-foreground dark:hover:bg-[#FCC61D] dark:hover:text-foreground transition-colors",
link: "text-primary underline-offset-4 hover:text-accent hover:underline dark:hover:text-[#FCC61D] transition-colors",
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
+1 -1
View File
@@ -7,7 +7,7 @@ function Card({ className, ...props }: React.ComponentProps<"div">) {
<div
data-slot="card"
className={cn(
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm transition-all duration-300 hover:shadow-md hover:border-border/80",
className
)}
{...props}
+31
View File
@@ -0,0 +1,31 @@
import { Icon } from "@iconify/react";
import { cn } from "@/lib/utils";
interface LogoItemProps {
icon: string;
alt: string;
size?: "sm" | "md" | "lg";
className?: string;
}
const sizeMap = {
sm: "h-8",
md: "h-10",
lg: "h-12",
};
export function LogoItem({ icon, alt, size = "md", className }: LogoItemProps) {
return (
<div className={cn("flex", className)}>
<Icon
icon={icon}
className={cn(
"mx-auto w-fit dark:invert",
sizeMap[size]
)}
aria-label={alt}
/>
</div>
);
}
+2 -2
View File
@@ -51,8 +51,8 @@ export const BorderBeam = ({
size = 50,
delay = 0,
duration = 6,
colorFrom = "#ffaa40",
colorTo = "#9c40ff",
colorFrom = "#FCC61D",
colorTo = "#0046FF",
transition,
style,
reverse = false,
+22
View File
@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@hookform/resolvers": "^5.2.2",
"@iconify/react": "^6.0.2",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-aspect-ratio": "^1.1.8",
@@ -615,6 +616,27 @@
"url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@iconify/react": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/@iconify/react/-/react-6.0.2.tgz",
"integrity": "sha512-SMmC2sactfpJD427WJEDN6PMyznTFMhByK9yLW0gOTtnjzzbsi/Ke/XqsumsavFPwNiXs8jSiYeZTmLCLwO+Fg==",
"license": "MIT",
"dependencies": {
"@iconify/types": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/cyberalien"
},
"peerDependencies": {
"react": ">=16"
}
},
"node_modules/@iconify/types": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
"license": "MIT"
},
"node_modules/@img/colour": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+1
View File
@@ -10,6 +10,7 @@
},
"dependencies": {
"@hookform/resolvers": "^5.2.2",
"@iconify/react": "^6.0.2",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-aspect-ratio": "^1.1.8",
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 283.46 283.46">
<!-- Generator: Adobe Illustrator 29.0.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 192) -->
<path d="M202.34,109.35c2.6-.69,5.06.05,7.35.05,7.6,0,16.55-.82,24.18.1,15.21,1.83,22.94,18.07,11.05,28.99l-4.57,2.77c12.98,2.51,17.27,20.94,6.24,28.78-2.27,1.62-8.92,4.14-11.57,4.14h-32.68v-64.82ZM207.91,113.4c-.16,7.24-1.37,16.45-.53,23.57.09.74.06,1.3.79,1.75h24.32c.45,0,3.48-.67,4.21-.86,12.01-3.11,11.98-17.83,1.46-22.53-1.29-.58-5.49-1.93-6.68-1.93h-23.56ZM231.98,143.28c-7.57-.7-16.13.52-23.81,0l-.76.76v24.81l.76.76h22.29c1.71,0,6.49-.83,8.26-1.37,7.83-2.35,11.31-8.65,8.1-16.51-2.18-5.33-9.49-7.97-14.84-8.46Z"/>
<path d="M233.24,104.28l-4.04,1.53c-11.19-28.53-38.33-50.97-68.39-56.99-44.64-8.94-90.04,14.94-106.93,56.99l-4.06-1.8c2.35-5.27,4.84-10.48,7.91-15.38,23.76-37.92,70.53-54.76,113.46-41.58,27.81,8.54,51.51,30.12,62.06,57.23Z"/>
<path d="M229.2,177.72l4.02,1.76c-7.01,17.21-18.74,31.85-33.76,42.72-51.89,37.49-125.73,16.09-149.56-42.72l4.01-1.54c23.46,56.22,92.85,76.49,143.02,40.71,14.34-10.23,25.75-24.52,32.27-40.93Z"/>
<path d="M194.73,174.17l-5.33-.49-6.37-14.4-1.69-.84-37.46.1-6.96,15.57-5.51.06,28.86-64.59c.72-.48,5.46-.64,6.05.58l28.42,64.01ZM180.55,153.41l-17.73-38.99-16.73,38.99h34.45Z"/>
<path d="M93.9,174.17l-5.51-.06-6.59-15.33-38.73-.23-7.16,15.13-5.33.49,28.87-64.57c1.61-.29,5.04-.85,6.04.56l28.41,64.02ZM79.21,153.41l-16.73-38.99-17.73,38.99h34.45Z"/>
<path d="M105.05,136.19c.42-.75.86-1.48,1.52-2.28,5.55-6.84,15.92-7.62,23.35-3.49l-1.86,3.71c-8.26-4.62-19.46-.36-22.15,8.74-.16.54-.85,3.45-.85,3.71v27.6h-4.56v-45.32c1.01-1.18,3.55-1.18,4.56,0v7.34Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

+13 -1
View File
@@ -303,6 +303,18 @@
resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz"
integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
"@iconify/react@^6.0.2":
version "6.0.2"
resolved "https://registry.npmjs.org/@iconify/react/-/react-6.0.2.tgz"
integrity sha512-SMmC2sactfpJD427WJEDN6PMyznTFMhByK9yLW0gOTtnjzzbsi/Ke/XqsumsavFPwNiXs8jSiYeZTmLCLwO+Fg==
dependencies:
"@iconify/types" "^2.0.0"
"@iconify/types@^2.0.0":
version "2.0.0"
resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz"
integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
"@img/colour@^1.0.0":
version "1.0.0"
resolved "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz"
@@ -3198,7 +3210,7 @@ react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
"react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^19.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", react@>=16.6.0, react@>=16.8.0, react@19.2.0:
"react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^19.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", react@>=16, react@>=16.6.0, react@>=16.8.0, react@19.2.0:
version "19.2.0"
resolved "https://registry.npmjs.org/react/-/react-19.2.0.tgz"
integrity sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==