Initial commit: Next.js project with Persian content and custom styling

This commit is contained in:
ahmadrezabd
2025-12-03 16:48:15 +03:30
commit 242161dcdb
115 changed files with 21920 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
import ContentSection from "@/components/content-1";
import Features from "@/components/features-12";
import HeroSection from "@/components/hero-section";
export default function AboutPage() {
return (
<>
<section className="bg-white py-16 md:py-32">
<div className="mx-auto max-w-5xl px-6">
<div className="mx-auto max-w-3xl space-y-8 text-center">
<h1 className="text-3xl font-semibold md:text-4xl lg:text-5xl leading-relaxed tracking-normal">
درباره ما
</h1>
<p className="text-lg leading-relaxed tracking-normal text-muted-foreground">
کنترل پی یک پلتفرم یکپارچه‌سازی و ارتباطات هوشمند است که به کسب‌وکارها کمک می‌کند تا سیستم‌ها، داده‌ها و فرآیندهای خود را به شکلی کارآمد و قابل‌اعتماد بهم متصل کنند.
</p>
</div>
<div className="mt-16 md:mt-24 space-y-12">
<div className="grid gap-8 md:grid-cols-2">
<div className="space-y-4">
<h2 className="text-2xl font-semibold md:text-3xl leading-relaxed tracking-normal">
ماموریت ما
</h2>
<p className="leading-relaxed tracking-normal text-muted-foreground">
ما باور داریم که ارتباطات و یکپارچه‌سازی باید ساده، سریع و قابل‌اعتماد باشد. هدف ما این است که به کسب‌وکارها کمک کنیم تا بدون پیچیدگی‌های فنی، سیستم‌های خود را بهم متصل کنند و از قدرت اتوماسیون و ارتباطات هوشمند بهره‌مند شوند.
</p>
</div>
<div className="space-y-4">
<h2 className="text-2xl font-semibold md:text-3xl leading-relaxed tracking-normal">
چشم‌انداز ما
</h2>
<p className="leading-relaxed tracking-normal text-muted-foreground">
ما می‌خواهیم به پلتفرم پیشرو در حوزه یکپارچه‌سازی و ارتباطات هوشمند تبدیل شویم. چشم‌انداز ما این است که هر کسب‌وکاری، از کوچک تا بزرگ، بتواند به راحتی از خدمات ما استفاده کند و به اهداف خود برسد.
</p>
</div>
</div>
<div className="mt-12 rounded-2xl border bg-muted/50 p-8 md:p-12">
<h2 className="mb-6 text-2xl font-semibold md:text-3xl leading-relaxed tracking-normal">
چرا کنترل پی؟
</h2>
<div className="grid gap-6 md:grid-cols-3">
<div className="space-y-2">
<h3 className="font-semibold text-lg">سادگی</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
رابط کاربری ساده و قابل فهم که نیاز به تخصص فنی ندارد
</p>
</div>
<div className="space-y-2">
<h3 className="font-semibold text-lg">قابلیت اطمینان</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
زیرساخت قدرتمند و پایدار که همیشه در دسترس است
</p>
</div>
<div className="space-y-2">
<h3 className="font-semibold text-lg">مقیاس‌پذیری</h3>
<p className="text-sm leading-relaxed tracking-normal text-muted-foreground">
قابلیت رشد همراه با نیازهای کسب‌وکار شما
</p>
</div>
</div>
</div>
<div className="mt-12">
<h2 className="mb-8 text-2xl font-semibold md:text-3xl leading-relaxed tracking-normal text-center">
تیم ما
</h2>
<p className="mx-auto max-w-2xl text-center leading-relaxed tracking-normal text-muted-foreground">
تیم کنترل پی متشکل از متخصصان با تجربه در حوزه‌های فناوری اطلاعات، توسعه نرم‌افزار و مدیریت کسب‌وکار است. ما با همکاری یکدیگر، راهکارهای نوآورانه و کاربردی برای چالش‌های یکپارچه‌سازی ارائه می‌دهیم.
</p>
</div>
</div>
</div>
</section>
</>
);
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+209
View File
@@ -0,0 +1,209 @@
@import "tailwindcss";
@import "tw-animate-css";
/* IRANSansX Font Faces */
@font-face {
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");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 200;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-UltraLight.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-UltraLight.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 300;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Light.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Light.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 500;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Medium.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Medium.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 600;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-DemiBold.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-DemiBold.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 800;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-ExtraBold.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-ExtraBold.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: 900;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Black.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Black.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: bold;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Bold.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Bold.woff2") format("woff2");
}
@font-face {
font-family: IRANSansX;
font-style: normal;
font-weight: normal;
src: url("/assets/irsansx/Woff/IRANSansXFaNum-Regular.woff") format("woff"),
url("/assets/irsansx/Woff2/IRANSansXFaNum-Regular.woff2") format("woff2");
}
@custom-variant dark (&:is(.dark *));
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
--font-iran-sans: "IRANSansX", "system-ui", "Avenir", "Helvetica", "Arial",
"sans-serif";
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar: var(--sidebar);
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--color-ring: var(--ring);
--color-input: var(--input);
--color-border: var(--border);
--color-destructive: var(--destructive);
--color-accent-foreground: var(--accent-foreground);
--color-accent: var(--accent);
--color-muted-foreground: var(--muted-foreground);
--color-muted: var(--muted);
--color-secondary-foreground: var(--secondary-foreground);
--color-secondary: var(--secondary);
--color-primary-foreground: var(--primary-foreground);
--color-primary: var(--primary);
--color-popover-foreground: var(--popover-foreground);
--color-popover: var(--popover);
--color-card-foreground: var(--card-foreground);
--color-card: var(--card);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
}
:root {
--font-iran-sans: "IRANSansX", var(--font-geist-sans);
--radius: 0.625rem;
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: #216583;
--primary-foreground: oklch(0.985 0 0);
--secondary: #00818A;
--secondary-foreground: oklch(0.985 0 0);
--muted: #f5f5f5;
--muted-foreground: #293462;
--accent: #F7BE16;
--accent-foreground: #293462;
--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);
--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);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.97 0 0);
--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;
}
.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;
--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;
--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);
--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-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);
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
font-family: "IRANSansX", var(--font-geist-sans);
letter-spacing: normal;
line-height: 1.6;
}
h1, h2, h3, h4, h5, h6 {
letter-spacing: normal;
line-height: 1.5;
}
p {
letter-spacing: normal;
line-height: 1.7;
}
}
+36
View File
@@ -0,0 +1,36 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { ConditionalLayout } from "@/components/conditional-layout";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "کنترل پی",
description:
"کنترل پی یک سامانه برای ایجاد و طراحی راهکارهای مناسب برای کسب و کار شما است.",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="fa" dir="rtl">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
<ConditionalLayout>{children}</ConditionalLayout>
</body>
</html>
);
}
+11
View File
@@ -0,0 +1,11 @@
import { LoginForm } from "@/components/login-form";
export default function LoginPage() {
return (
<div className="container mx-auto flex min-h-screen items-center justify-center px-4 py-16">
<div className="w-full max-w-4xl">
<LoginForm />
</div>
</div>
);
}
+14
View File
@@ -0,0 +1,14 @@
import ContentSection from "@/components/content-1";
import Features from "@/components/features-12";
import HeroSection from "@/components/hero-section";
import Image from "next/image";
export default function Home() {
return (
<>
<HeroSection />
<Features />
<ContentSection />
</>
);
}
+14
View File
@@ -0,0 +1,14 @@
import Pricing from "@/components/pricing";
import PricingComparator from "@/components/pricing-comparator";
export default function PricingPage() {
return (
<>
<Pricing />
<section className="bg-white py-16">
<PricingComparator />
</section>
</>
);
}
+161
View File
@@ -0,0 +1,161 @@
import { Button } from "@/components/ui/button";
import { Database, Fingerprint, IdCard, ChartBarIncreasingIcon, MessageSquare, Zap, Shield, Link as LinkIcon } from "lucide-react";
import Link from "next/link";
const solutions = [
{
icon: Database,
title: "تجمیع پایگاه داده",
description: "جمع‌آوری و هماهنگ‌سازی داده‌ها از سیستم‌های مختلف برای ایجاد یک نمای واحد از اطلاعات کسب‌وکار شما",
features: [
"اتصال به دیتابیس‌های مختلف",
"همگام‌سازی خودکار داده‌ها",
"گزارش‌گیری یکپارچه",
"پشتیبانی از APIهای خارجی"
]
},
{
icon: Fingerprint,
title: "احراز هویت پیشرفته",
description: "سیستم امن و منعطف برای مدیریت احراز هویت کاربران و سرویس‌ها با پشتیبانی از روش‌های مختلف",
features: [
"پشتیبانی از OAuth",
"توکن‌های اختصاصی",
"احراز هویت چندمرحله‌ای",
"مدیریت دسترسی‌ها"
]
},
{
icon: IdCard,
title: "مدیریت هویت",
description: "مدیریت یکپارچه کاربران، نقش‌ها و مجوزها در همه سیستم‌های متصل به پلتفرم",
features: [
"مدیریت کاربران مرکزی",
"تعریف نقش‌ها و مجوزها",
"همگام‌سازی خودکار",
"لاگ تغییرات"
]
},
{
icon: ChartBarIncreasingIcon,
title: "داشبورد تحلیل",
description: "تبدیل داده‌های خام به گزارش‌ها و نمودارهای قابل‌درک برای تصمیم‌گیری بهتر",
features: [
"گزارش‌های سفارشی",
"نمودارهای تعاملی",
"تحلیل روندها",
"خروجی در فرمت‌های مختلف"
]
},
{
icon: MessageSquare,
title: "ارتباطات چندکاناله",
description: "ارسال و دریافت پیام از کانال‌های مختلف مانند تلگرام، واتساپ و سرویس‌های اختصاصی",
features: [
"پشتیبانی از تلگرام",
"پشتیبانی از واتساپ",
"کانال‌های اختصاصی",
"مدیریت مکالمات"
]
},
{
icon: Zap,
title: "اتوماسیون فرآیندها",
description: "خودکارسازی فرآیندهای کسب‌وکار با استفاده از رویدادها و ترiggerهای قابل تنظیم",
features: [
"تعریف workflow",
"اتوماسیون بر اساس رویداد",
"زمان‌بندی کارها",
"اعلان‌های خودکار"
]
},
{
icon: Shield,
title: "امنیت و حریم خصوصی",
description: "محافظت از داده‌ها و ارتباطات با استفاده از آخرین استانداردهای امنیتی",
features: [
"رمزنگاری end-to-end",
"بکاپ خودکار",
"مانیتورینگ امنیتی",
"رعایت استانداردهای GDPR"
]
},
{
icon: LinkIcon,
title: "یکپارچه‌سازی API",
description: "اتصال آسان به APIهای مختلف و سرویس‌های داخلی و خارجی",
features: [
"REST API",
"GraphQL",
"Webhooks",
"مستندات کامل"
]
}
];
export default function SolutionsPage() {
return (
<>
<section className="bg-white py-16 md:py-32">
<div className="mx-auto max-w-5xl px-6">
<div className="mx-auto max-w-3xl space-y-6 text-center">
<h1 className="text-3xl font-semibold md:text-4xl lg:text-5xl leading-relaxed tracking-normal">
راه‌حل‌های ما
</h1>
<p className="text-lg leading-relaxed tracking-normal text-muted-foreground">
مجموعه‌ای از ابزارهای قدرتمند برای یکپارچه‌سازی، اتوماسیون و ارتباطات هوشمند که به کسب‌وکار شما کمک می‌کند تا کارآمدتر و سریع‌تر عمل کند.
</p>
</div>
<div className="mt-16 md:mt-24 grid gap-8 md:grid-cols-2 lg:grid-cols-2">
{solutions.map((solution, index) => {
const Icon = solution.icon;
return (
<div
key={index}
className="group rounded-2xl border bg-white p-6 transition-all hover:shadow-lg"
>
<div className="mb-4 flex items-center gap-3">
<div className="flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary">
<Icon className="size-6" />
</div>
<h2 className="text-xl font-semibold leading-relaxed tracking-normal">
{solution.title}
</h2>
</div>
<p className="mb-4 leading-relaxed tracking-normal text-muted-foreground">
{solution.description}
</p>
<ul className="space-y-2">
{solution.features.map((feature, featureIndex) => (
<li
key={featureIndex}
className="flex items-start gap-2 text-sm leading-relaxed tracking-normal"
>
<span className="mt-1.5 size-1.5 shrink-0 rounded-full bg-primary" />
<span className="text-muted-foreground">{feature}</span>
</li>
))}
</ul>
</div>
);
})}
</div>
<div className="mt-16 text-center">
<h2 className="mb-4 text-2xl font-semibold md:text-3xl leading-relaxed tracking-normal">
آماده شروع هستید؟
</h2>
<p className="mb-8 text-muted-foreground leading-relaxed tracking-normal">
همین حالا شروع کنید و از قدرت یکپارچه‌سازی و ارتباطات هوشمند بهره‌مند شوید
</p>
<Button asChild size="lg">
<Link href="/pricing">مشاهده قیمت‌ها</Link>
</Button>
</div>
</div>
</section>
</>
);
}