diff --git a/README.md b/README.md
index e215bc4..b3dc044 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,72 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
+# Slash.sa — منصة إدارة الأسطول واللوجستيات
-## Getting Started
+منصة ويب متكاملة لإدارة عمليات الأسطول واللوجستيات، مبنية بلغة عربية أولًا (Arabic-first)
+باتجاه RTL كامل، وموجهة للسوق السعودي. تشمل المنصة إدارة المركبات والسائقين والفروع
+والطلبات والرحلات وسجل الصيانة، مع لوحات تحكم منفصلة حسب دور المستخدم (مشرف / عميل / مستخدم ميداني).
-First, run the development server:
+## المتطلبات الأساسية
+
+- Node.js 20.9 أو أحدث
+- npm (أو أي package manager متوافق)
+
+## التقنيات المستخدمة
+
+| الطبقة | التقنية |
+| -------------------- | ------------------------------------------ |
+| الإطار | Next.js 16 (App Router) |
+| اللغة | TypeScript |
+| التنسيق | Tailwind CSS v4 |
+| النماذج والتحقق | react-hook-form + yup |
+| الأيقونات | lucide-react (صفحات التسويق) / Tabler Icons Webfont (لوحة التحكم) |
+| المصادقة | JWT + HttpOnly cookie + middleware للحماية |
+
+## هيكل المشروع (مختصر)
+app/
+├── (صفحات تسويقية) home, features/app, how_work, prices, frequently_asked_questions
+├── dashboard/ لوحة التحكم (محمية بواسطة middleware)
+│ ├── cars, drivers, orders, trips, clients, branches, roles, audit, users
+├── login, register صفحات المصادقة
+├── api/proxy/[...path] بروكسي موحّد لكل طلبات الـ backend
+└── components/layout Navbar, Sidebar, Topbar (تُستخدم عبر الصفحات يدويًا)
+src/
+├── Components/ مكوّنات لوحة التحكم (مقسّمة حسب الوحدة: Car, Driver, Order...)
+├── hooks/ منطق جلب البيانات والطفرات (Create/Update/Delete) لكل وحدة
+├── services/ طبقة استدعاء الـ API (كل وحدة لها service منفصل)
+├── types/ تعريفات TypeScript لكل نموذج بيانات
+├── validations/ مخططات yup للتحقق من صحة النماذج
+└── lib/ دوال مساعدة (auth, session, formatters, order-status)
+## التشغيل محليًا
```bash
+npm install
npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
```
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+افتح [http://localhost:3000](http://localhost:3000) في المتصفح.
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+## الأوامر المتاحة
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
+| الأمر | الوصف |
+| ---------------- | --------------------------------------- |
+| `npm run dev` | تشغيل بيئة التطوير (Webpack) |
+| `npm run build` | بناء نسخة الإنتاج |
+| `npm run start` | تشغيل نسخة الإنتاج المبنية |
+| `npm run lint` | فحص الكود بواسطة ESLint |
-## Learn More
+## ملاحظات النشر (Deployment)
-To learn more about Next.js, take a look at the following resources:
+- المنصة مبنية على Next.js App Router وتعمل على أي بيئة تدعم Node.js 20.9+ (مثل Vercel).
+- كل طلبات الـ backend تمر عبر `app/api/proxy/[...path]/route.ts`، فتأكد من ضبط الـ backend base URL بشكل صحيح قبل النشر.
+- التوثيق (Authentication) يعتمد على HttpOnly cookie تُضبط عبر `app/api/auth/set-cookie`، وتُمسح عبر `app/api/clear-cookie` — تأكد من تفعيل `Secure` في بيئة الإنتاج (يتم تلقائيًا حسب `NODE_ENV`).
+- الحماية على مستوى الراوت تتم عبر `middleware.ts` — راجع الـ `matcher` فيه عند إضافة مسارات محمية جديدة.
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+## المساهمة (Contributing)
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
+1. أنشئ فرعًا جديدًا من `main` باسم واضح للتغيير (مثال: `feature/car-maintenance-filters`).
+2. اتبع نفس أسلوب الكود الموجود: RTL-first، CSS custom property tokens بدل الألوان الثابتة، وهيكلة hooks/services/types/validations لكل وحدة جديدة.
+3. شغّل `npm run lint` قبل فتح Pull Request.
+4. اكتب وصفًا واضحًا للتغيير وربطه بأي تذكرة (issue) ذات صلة.
-## Deploy on Vercel
+## الترخيص
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
+جميع الحقوق محفوظة © 2026 Slash.sa
\ No newline at end of file
diff --git a/app/components/layout/Navbar.tsx b/app/components/layout/Navbar.tsx
index 5aa41b1..f0b60c9 100644
--- a/app/components/layout/Navbar.tsx
+++ b/app/components/layout/Navbar.tsx
@@ -1,14 +1,12 @@
import Logo from "@/src/utils/logo";
import Link from "next/link";
-
-
const navLinks = [
- { label: "الرئيسية", active: true },
- { label: "المميزات" },
- { label: "كيف يعمل" },
- { label: "الأسعار" },
- { label: "الأسئلة الشائعة" },
+ { label: "الرئيسية", href: "/home", active: true },
+ { label: "المميزات", href: "/features" },
+ { label: "كيف يعمل", href: "/how_work" },
+ { label: "الأسعار", href: "/prices" },
+ { label: "الأسئلة الشائعة", href: "/frequently_asked_questions" },
];
export default function Navbar() {
@@ -21,32 +19,18 @@ export default function Navbar() {
- {/*
- Was `mr-auto`. `mr-*` is a PHYSICAL Tailwind utility — it means
- "margin-right" no matter what `dir` says, so it would have
- pinned the login button to the visual left in both LTR and
- RTL, fighting the rest of the nav. `ms-auto` ("margin-inline-
- start: auto") pushes against the start edge instead, which is
- right in RTL and left in LTR — it tracks `dir` automatically.
- This is the single most common RTL bug: Tailwind's l/r-prefixed
- utilities (ml, mr, pl, pr, left-, right-, text-left, text-right,
- rounded-l, rounded-r, border-l, border-r) are all physical and
- need their logical (s/e) equivalents — ms, me, ps, pe, start-,
- end-, text-start, text-end, rounded-s, rounded-e, border-s,
- border-e — anywhere direction should matter.
- */}
تسجيل الدخول ←
diff --git a/app/features/page.tsx b/app/features/page.tsx
new file mode 100644
index 0000000..90c2b79
--- /dev/null
+++ b/app/features/page.tsx
@@ -0,0 +1,156 @@
+import Link from "next/link";
+import {
+ Car,
+ UserCog,
+ PackageSearch,
+ Route,
+ Wrench,
+ Building2,
+ ShieldCheck,
+ ClipboardList,
+ FileBarChart2,
+} from "lucide-react";
+import Navbar from "@/app/components/layout/Navbar";
+import Logo from "@/src/utils/logo";
+
+type Tone = "blue" | "emerald" | "amber";
+
+const toneClasses: Record
= {
+ blue: "bg-blue-100 text-blue-600",
+ emerald: "bg-emerald-100 text-emerald-600",
+ amber: "bg-amber-100 text-amber-600",
+};
+
+const featureGroups: { icon: typeof Car; tone: Tone; title: string; text: string }[] = [
+ {
+ icon: Car,
+ tone: "blue",
+ title: "إدارة المركبات",
+ text: "سجل كامل لكل مركبة: بيانات الترخيص، التأمين، الفحص الدوري، وحالة المركبة الحالية.",
+ },
+ {
+ icon: UserCog,
+ tone: "emerald",
+ title: "إدارة السائقين",
+ text: "بيانات الهوية والرخصة وبطاقة السائق، مع تنبيهات قبل انتهاء أي مستند بـ90 يومًا.",
+ },
+ {
+ icon: PackageSearch,
+ tone: "amber",
+ title: "إدارة الطلبات",
+ text: "إنشاء الطلبات، متابعة حالتها من الإنشاء وحتى التسليم، وربطها بالرحلات والعملاء.",
+ },
+ {
+ icon: Route,
+ tone: "blue",
+ title: "تنظيم الرحلات",
+ text: "تعيين سائق ومركبة لكل رحلة، مع تحديث تلقائي لحالتيهما عند بدء الرحلة وانتهائها.",
+ },
+ {
+ icon: Wrench,
+ tone: "emerald",
+ title: "سجل الصيانة",
+ text: "تتبع تكلفة ومدة كل عملية صيانة، مع أرشيف كامل وربط تلقائي بحالة المركبة.",
+ },
+ {
+ icon: Building2,
+ tone: "amber",
+ title: "إدارة الفروع",
+ text: "أدر عدة فروع وعناوين بمواقعها الجغرافية، وربطها بالمستخدمين والمركبات.",
+ },
+ {
+ icon: ShieldCheck,
+ tone: "blue",
+ title: "أدوار وصلاحيات",
+ text: "تحكم دقيق فيما يمكن لكل مستخدم فعله، عبر صلاحيات قابلة للتخصيص لكل دور.",
+ },
+ {
+ icon: ClipboardList,
+ tone: "emerald",
+ title: "سجل التدقيق",
+ text: "سجل كامل لكل الإجراءات على النظام: من قام بها، ومتى، وعلى أي بيانات.",
+ },
+ {
+ icon: FileBarChart2,
+ tone: "amber",
+ title: "تقارير مفصّلة",
+ text: "تقارير يومية للسائقين وتقارير تفصيلية للرحلات، جاهزة للمشاركة والطباعة.",
+ },
+];
+
+export default function FeaturesPage() {
+ return (
+
+
+
+
+
+
+ المميزات
+
+
+ كل أدوات إدارة الأسطول في منصة واحدة
+
+
+ من أول تسجيل مركبة جديدة وحتى تسليم آخر شحنة، صممنا كل ميزة لتوفّر
+ عليك الوقت وتمنحك رؤية واضحة على عملياتك.
+
+
+
+
+
+
+ {featureGroups.map((feature) => {
+ const Icon = feature.icon;
+ return (
+
+
+
+
+ {feature.title}
+ {feature.text}
+
+ );
+ })}
+
+
+
+
+ عايز تجرب المنصة بنفسك؟
+
+
+ سجّل الدخول للوحة التحكم أو تواصل معنا لمعرفة الخطة المناسبة لفريقك.
+
+
+
+ تسجيل الدخول
+
+
+ عرض الأسعار
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/frequently_asked_questions/page.tsx b/app/frequently_asked_questions/page.tsx
new file mode 100644
index 0000000..60ad86e
--- /dev/null
+++ b/app/frequently_asked_questions/page.tsx
@@ -0,0 +1,118 @@
+"use client";
+
+import { useState } from "react";
+import Link from "next/link";
+import { ChevronDown } from "lucide-react";
+import Navbar from "@/app/components/layout/Navbar";
+import Logo from "@/src/utils/logo";
+
+const faqs = [
+ {
+ q: "كيف أنشئ حساب عميل؟",
+ a: "اضغط على زر تسجيل الدخول ثم اختر إنشاء حساب جديد، وأكمل بياناتك الأساسية لتفعيل الحساب في دقائق.",
+ },
+ {
+ q: "هل يمكنني إدارة أكثر من فرع؟",
+ a: "نعم، تدعم المنصة إدارة عدد غير محدود من الفروع في خطتي الاحترافي والمؤسسات، مع ربط كل فرع بعناوينه ومركباته.",
+ },
+ {
+ q: "ماذا يحدث إن أدخلت كلمة مرور خاطئة؟",
+ a: "ستظهر لك رسالة خطأ واضحة مع خيار إعادة المحاولة أو استرجاع كلمة المرور.",
+ },
+ {
+ q: "هل بياناتي الشخصية محمية؟",
+ a: "نعم، يتم تشفير البيانات باستخدام معايير أمان متقدمة، مع صلاحيات دقيقة تحدد من يستطيع الوصول لكل بيانات.",
+ },
+ {
+ q: "هل يمكن للعميل رؤية طلبات عملاء آخرين؟",
+ a: "لا، كل عميل يرى فقط طلباته الخاصة ضمن لوحة التحكم المخصصة له.",
+ },
+ {
+ q: "هل تدعم المنصة تنبيهات انتهاء تراخيص المركبات والسائقين؟",
+ a: "نعم، تصل التنبيهات قبل 90 يومًا من انتهاء الاستمارة أو رخصة القيادة أو أي مستند رسمي آخر.",
+ },
+ {
+ q: "كيف أتواصل مع الدعم الفني؟",
+ a: "يمكنك التواصل معنا عبر البريد الإلكتروني أو من خلال صفحة الأسعار لطلب التحدث مع فريق المبيعات لخطة المؤسسات.",
+ },
+];
+
+export default function FaqPage() {
+ const [openIndex, setOpenIndex] = useState(0);
+
+ return (
+
+
+
+
+
+
+ الأسئلة الشائعة
+
+
+ إجابات على أكثر الأسئلة تكرارًا
+
+
+ لم تجد إجابة سؤالك؟ تواصل معنا وسنكون سعداء بمساعدتك.
+
+
+
+
+
+
+ {faqs.map((faq, i) => {
+ const isOpen = openIndex === i;
+ return (
+
+
setOpenIndex(isOpen ? null : i)}
+ aria-expanded={isOpen}
+ className="flex w-full items-center justify-between gap-3 px-5 py-4 text-right"
+ >
+
+ {faq.q}
+
+
+
+ {isOpen && (
+
+ {faq.a}
+
+ )}
+
+ );
+ })}
+
+
+
+
+ عندك سؤال تاني؟
+
+
+ تواصل معنا
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/home/page.tsx b/app/home/page.tsx
index 687292b..eff5ae8 100644
--- a/app/home/page.tsx
+++ b/app/home/page.tsx
@@ -1,8 +1,302 @@
-import { Topbar } from "../components/layout/Topbar";
+import Link from "next/link";
+import {
+ Truck,
+ Clock,
+ Users,
+ ShieldCheck,
+ BarChart3,
+ MapPin,
+ PackageCheck,
+} from "lucide-react";
+import Navbar from "@/app/components/layout/Navbar";
+import Logo from "@/src/utils/logo";
+
+const stats = [
+ { label: "الطلبات النشطة", value: "48", color: "text-blue-600" },
+ { label: "مُسلَّم هذا الشهر", value: "312", color: "text-emerald-600" },
+ { label: "العملاء المسجلون", value: "127", color: "text-slate-900" },
+];
+
+type Tone = "blue" | "emerald" | "amber";
+
+const toneClasses: Record = {
+ blue: "bg-blue-100 text-blue-600",
+ emerald: "bg-emerald-100 text-emerald-600",
+ amber: "bg-amber-100 text-amber-600",
+};
+
+const features: { icon: typeof Truck; title: string; text: string; tone: Tone }[] = [
+ {
+ icon: Truck,
+ title: "إدارة الطلبات",
+ text: "إنشاء الطلبات وتتبعها وتحديثها في الوقت الفعلي.",
+ tone: "blue",
+ },
+ {
+ icon: Clock,
+ title: "التتبع المباشر",
+ text: "راقب تقدم الاستلام والتسليم عبر خريطة مرئية.",
+ tone: "emerald",
+ },
+ {
+ icon: Users,
+ title: "صلاحيات حسب الدور",
+ text: "لوحات تحكم منفصلة للمشرفين والعملاء والمستخدمين.",
+ tone: "amber",
+ },
+ {
+ icon: ShieldCheck,
+ title: "أمان بمستوى المؤسسات",
+ text: "تشفير متقدّم وصلاحيات دقيقة لكل مستخدم على حدة.",
+ tone: "blue",
+ },
+ {
+ icon: BarChart3,
+ title: "تقارير وتحليلات",
+ text: "تقارير يومية للسائقين والرحلات وسجل صيانة المركبات.",
+ tone: "emerald",
+ },
+ {
+ icon: MapPin,
+ title: "إدارة الفروع",
+ text: "أدر عناوين متعددة وفروع مرتبطة بأسطولك بسهولة.",
+ tone: "amber",
+ },
+];
+
+const roles = [
+ {
+ tone: "dark",
+ tag: "مشرف",
+ title: "تحكم كامل",
+ items: [
+ "عرض جميع طلبات العملاء",
+ "تحديث حالات الطلبات",
+ "إدارة العملاء والسائقين",
+ "سجل التدقيق",
+ "تعيين الرحلات",
+ ],
+ },
+ {
+ tone: "blue",
+ tag: "عميل",
+ title: "طلباتي",
+ items: [
+ "إضافة طلبات جديدة",
+ "تتبع الشحنات النشطة",
+ "عرض سجل الطلبات",
+ "إدارة العناوين",
+ "التواصل مع الدعم",
+ ],
+ },
+ {
+ tone: "green",
+ tag: "مستخدم",
+ title: "وصول ميداني",
+ items: [
+ "عرض الرحلات المعينة",
+ "تحديث حالة التسليم",
+ "الملف الشخصي",
+ "إعدادات الإشعارات",
+ "تفضيلات التطبيق",
+ ],
+ },
+];
export default function HomePage() {
- return ;
-}
+ return (
+
+
+
+ {/* Hero */}
+
+
+
+
+
+
+ منصة سعودية لإدارة الأسطول واللوجستيات
+
+
+ إدارة لوجستية سهلة، توصيل مضمون في كل مرة.
+
+
+ أدِر كل شحنة وعميل وسائق ومركبة من منصة واحدة آمنة، مصممة خصيصًا
+ لفرق العمليات في المملكة العربية السعودية.
+
+
+
+ تسجيل الدخول للوحة التحكم
+
+
+ كيف تعمل المنصة؟
+
+
+
+
+
+
+ تغذية الطلبات المباشرة
+
+
+ {[
+ ["SHIP-202606-00142", "في الطريق", "bg-amber-100 text-amber-800"],
+ ["SHIP-202606-00139", "تم التسليم", "bg-emerald-100 text-emerald-800"],
+ ["SHIP-202606-00145", "تم الإنشاء", "bg-blue-100 text-blue-800"],
+ ].map(([code, status, badge]) => (
+
+ {code}
+
+ {status}
+
+
+ ))}
+
+
+ تم التحديث للتو
+ ● النظام متصل
+
+
+
+
+
+ {/* Stats + Features */}
+
+
+ {stats.map((item) => (
+
+
+ {item.label}
+
+
+ {item.value}
+
+
+ ))}
+
+
+
+
+ المميزات الأساسية
+
+
+ كل ما يحتاجه فريق اللوجستيك
+
+
+ من إدارة الطلبات إلى التتبع المباشر، كل شيء في مكان واحد.
+
+
+ {features.map((feature) => {
+ const Icon = feature.icon;
+ return (
+
+
+
+
+ {feature.title}
+ {feature.text}
+
+ );
+ })}
+
+
+
+ عرض كل المميزات ←
+
+
+
+
+
+ {/* Roles */}
+
+
+
+
+ أدوار المستخدمين
+
+
+ منصة واحدة، ثلاثة مداخل
+
+
+
+ {roles.map((role) => (
+
+
+ {role.tag}
+
+ {role.title}
+
+ {role.items.map((item) => (
+
+ ✓
+ {item}
+
+ ))}
+
+
+ ))}
+
+
+
+
+ {/* CTA */}
+
+
+
+ جاهز تبدأ توصيل أسرع وأذكى؟
+
+ انضم إلى فرق اللوجستيك التي تدير عملياتها بثقة عبر منصتنا.
+
+
+
+ ابدأ الآن
+
+
+ عرض الأسعار
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/how_work/page.tsx b/app/how_work/page.tsx
new file mode 100644
index 0000000..913c8df
--- /dev/null
+++ b/app/how_work/page.tsx
@@ -0,0 +1,108 @@
+import Link from "next/link";
+import { UserPlus, Building2, PackagePlus, LineChart } from "lucide-react";
+import Navbar from "@/app/components/layout/Navbar";
+import Logo from "@/src/utils/logo";
+
+const steps = [
+ {
+ icon: UserPlus,
+ step: "01",
+ title: "أنشئ حسابك",
+ text: "سجّل بيانات شركتك وأضف أول مستخدم مشرف على المنصة في دقائق.",
+ },
+ {
+ icon: Building2,
+ step: "02",
+ title: "جهّز أسطولك",
+ text: "أضف الفروع والمركبات والسائقين، مع كل بياناتهم ومستنداتهم الرسمية.",
+ },
+ {
+ icon: PackagePlus,
+ step: "03",
+ title: "أنشئ الطلبات والرحلات",
+ text: "اربط كل طلب برحلة وسائق ومركبة، وتابع حالته حتى وصوله للعميل.",
+ },
+ {
+ icon: LineChart,
+ step: "04",
+ title: "راقب وحلّل",
+ text: "استخدم لوحة التحكم والتقارير لمتابعة الأداء واتخاذ قرارات أفضل.",
+ },
+];
+
+export default function HowWorkPage() {
+ return (
+
+
+
+
+
+
+ كيف تعمل المنصة
+
+
+ أربع خطوات فقط لإدارة أسطولك بالكامل
+
+
+ صممنا رحلة الإعداد لتكون بسيطة وسريعة، بحيث يبدأ فريقك العمل من
+ اليوم الأول.
+
+
+
+
+
+
+
+ {steps.map((step) => {
+ const Icon = step.icon;
+ return (
+
+
+
+
+
+
+ خطوة {step.step}
+
+
+ {step.title}
+
+
+ {step.text}
+
+
+
+ );
+ })}
+
+
+
+
+ جاهز تبدأ؟
+
+
+ سجّل الدخول الآن وابدأ في تنظيم أسطولك من لوحة تحكم واحدة.
+
+
+ تسجيل الدخول للوحة التحكم
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/page.tsx b/app/page.tsx
index 568dc05..b1a5c0f 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,340 +1,5 @@
-import Link from "next/link";
-import Navbar from "./components/layout/Navbar";
-import Logo from "@/src/utils/logo";
+import HomePage from "@/app/home/page";
-const stats = [
- { label: "الطلبات النشطة", value: "48", color: "text-blue-600" },
- { label: "مُسلَّم هذا الشهر", value: "312", color: "text-emerald-600" },
- { label: "العملاء المسجلون", value: "127", color: "text-slate-900" },
-];
-
-const features = [
- {
- icon: "truck",
- title: "إدارة الطلبات",
- text: "إنشاء الطلبات وتتبعها وتحديثها في الوقت الفعلي.",
- tone: "blue",
- },
- {
- icon: "clock",
- title: "التتبع المباشر",
- text: "راقب تقدم الاستلام والتسليم عبر خريطة مرئية.",
- tone: "emerald",
- },
- {
- icon: "users",
- title: "صلاحيات حسب الدور",
- text: "لوحات تحكم منفصلة للمشرفين والعملاء والمستخدمين.",
- tone: "amber",
- },
-];
-
-const roles = [
- {
- tone: "dark",
- tag: "مشرف",
- title: "تحكم كامل",
- items: [
- "عرض جميع طلبات العملاء",
- "تحديث حالات الطلبات",
- "إدارة العملاء والسائقين",
- "سجل التدقيق",
- "تعيين الرحلات",
- ],
- },
- {
- tone: "blue",
- tag: "عميل",
- title: "طلباتي",
- items: [
- "إضافة طلبات جديدة",
- "تتبع الشحنات النشطة",
- "عرض سجل الطلبات",
- "إدارة العناوين",
- "التواصل مع الدعم",
- ],
- },
- {
- tone: "green",
- tag: "مستخدم",
- title: "وصول ميداني",
- items: [
- "عرض الرحلات المعينة",
- "تحديث حالة التسليم",
- "الملف الشخصي",
- "إعدادات الإشعارات",
- "تفضيلات التطبيق",
- ],
- },
-];
-
-const faqs = [
- {
- q: "كيف أنشئ حساب عميل؟",
- a: "اضغط على “إنشاء حساب عميل” ثم أكمل بياناتك الأساسية لتفعيل الحساب في دقائق.",
- },
- {
- q: "ماذا يحدث إن أدخلت كلمة مرور خاطئة؟",
- a: "ستظهر لك رسالة خطأ واضحة مع خيار إعادة المحاولة أو استرجاع كلمة المرور.",
- },
- {
- q: "هل بياناتي الشخصية محمية؟",
- a: "نعم، يتم تشفير البيانات باستخدام AES-256-GCM وإجراءات أمان متقدمة.",
- },
- {
- q: "هل يمكن للعميل رؤية طلبات عملاء آخرين؟",
- a: "لا، كل عميل يرى فقط طلباته الخاصة ضمن لوحة التحكم المخصصة له.",
- },
-];
-
-export default function Home() {
- return (
-
-
-
-
-
-
-
-
-
- منصة مباشرة • 3 صلاحيات
-
-
- إدارة لوجستية سهلة، توصيل مضمون في كل مرة.
-
-
- أدِر كل شحنة وعميل وسائق من منصة واحدة آمنة. مصممة للمشرفين
- والعملاء والمستخدمين الميدانيين.
-
-
-
- تسجيل الدخول للوحة التحكم
-
-
-
-
-
-
- تغذية الطلبات المباشرة
-
-
- {[
- [
- "SHIP-202606-00142",
- "في الطريق",
- "bg-amber-100 text-amber-800",
- ],
- [
- "SHIP-202606-00139",
- "تم التسليم",
- "bg-emerald-100 text-emerald-800",
- ],
- [
- "SHIP-202606-00145",
- "تم الإنشاء",
- "bg-blue-100 text-blue-800",
- ],
- ].map(([code, status, badge]) => (
-
-
- {code}
-
-
- {status}
-
-
- ))}
-
-
- تم التحديث للتو
- ● النظام متصل
-
-
-
-
-
-
-
- {stats.map((item) => (
-
-
- {item.label}
-
-
- {item.value}
-
-
- ))}
-
-
-
-
- المميزات الأساسية
-
-
- كل ما يحتاجه فريق اللوجستيك
-
-
- من إدارة الطلبات إلى التتبع المباشر، كل شيء في مكان واحد.
-
-
- {features.map((feature) => (
-
-
- {feature.icon === "truck" ? (
-
-
-
-
-
- ) : feature.icon === "clock" ? (
-
-
-
-
- ) : (
-
-
-
-
-
- )}
-
-
- {feature.title}
-
-
- {feature.text}
-
-
- ))}
-
-
-
-
-
-
-
-
- أدوار المستخدمين
-
-
- منصة واحدة، ثلاثة مداخل
-
-
-
- {roles.map((role) => (
-
-
- {role.tag}
-
-
- {role.title}
-
-
- {role.items.map((item) => (
-
- {" "}
- ✓
- {item}
-
- ))}
-
-
- ))}
-
-
-
-
-
-
-
- الأسئلة الشائعة
-
-
- أسئلة متكررة
-
-
- {faqs.map((faq) => (
-
-
- {faq.q}
-
-
- {faq.a}
-
-
- ))}
-
-
-
-
-
-
- );
-}
+export default function RootPage() {
+ return ;
+}
\ No newline at end of file
diff --git a/app/prices/page.tsx b/app/prices/page.tsx
new file mode 100644
index 0000000..c1d0f04
--- /dev/null
+++ b/app/prices/page.tsx
@@ -0,0 +1,134 @@
+import Link from "next/link";
+import { Check } from "lucide-react";
+import Navbar from "@/app/components/layout/Navbar";
+import Logo from "@/src/utils/logo";
+
+const plans = [
+ {
+ name: "أساسي",
+ price: "499",
+ period: "شهريًا",
+ description: "مناسبة للفرق الصغيرة التي تبدأ في تنظيم أسطولها.",
+ features: [
+ "حتى 10 مركبات",
+ "حتى 15 سائقًا",
+ "إدارة الطلبات والرحلات",
+ "دعم عبر البريد الإلكتروني",
+ ],
+ highlighted: false,
+ },
+ {
+ name: "احترافي",
+ price: "1,299",
+ period: "شهريًا",
+ description: "الأنسب للشركات متوسطة الحجم مع عدة فروع.",
+ features: [
+ "حتى 50 مركبة",
+ "عدد غير محدود من السائقين",
+ "إدارة الفروع والصلاحيات",
+ "تقارير وتحليلات متقدمة",
+ "دعم فني مباشر",
+ ],
+ highlighted: true,
+ },
+ {
+ name: "مؤسسات",
+ price: "تواصل معنا",
+ period: "",
+ description: "حلول مخصصة للمؤسسات الكبيرة وأصحاب الأساطيل الضخمة.",
+ features: [
+ "عدد غير محدود من المركبات والفروع",
+ "تكاملات مخصصة",
+ "مدير حساب مخصص",
+ "اتفاقية مستوى خدمة (SLA)",
+ ],
+ highlighted: false,
+ },
+];
+
+export default function PricesPage() {
+ return (
+
+
+
+
+
+
+ الأسعار
+
+
+ خطط تناسب حجم أسطولك
+
+
+ جميع الأسعار بالريال السعودي وغير شاملة ضريبة القيمة المضافة. يمكنك
+ تغيير خطتك أو إلغاؤها في أي وقت.
+
+
+
+
+
+
+ {plans.map((plan) => (
+
+ {plan.highlighted && (
+
+ الأكثر طلبًا
+
+ )}
+
+ {plan.name}
+
+
+ {plan.description}
+
+
+
+ {plan.price}
+
+ {plan.period && (
+
+ ر.س / {plan.period}
+
+ )}
+
+
+ {plan.features.map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+ {plan.name === "مؤسسات" ? "تواصل مع المبيعات" : "ابدأ الآن"}
+
+
+ ))}
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 78a42f3..37afbe8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,8 @@
"dependencies": {
"@hookform/resolvers": "^3.9.1",
"@tabler/icons-webfont": "^3.44.0",
+ "axios": "^1.18.1",
+ "lucide-react": "^0.460.0",
"next": "16.2.7",
"react": "19.2.4",
"react-dom": "19.2.4",
@@ -2633,6 +2635,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
"node_modules/auto-config-loader": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/auto-config-loader/-/auto-config-loader-2.0.2.tgz",
@@ -2717,6 +2725,43 @@
"node": ">=4"
}
},
+ "node_modules/axios": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz",
+ "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.16.0",
+ "form-data": "^4.0.5",
+ "https-proxy-agent": "^5.0.1",
+ "proxy-from-env": "^2.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/axios/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/axobject-query": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
@@ -3049,7 +3094,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -3224,6 +3268,18 @@
"url": "https://jaywcjlove.github.io/#/sponsor"
}
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
@@ -3478,6 +3534,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -3560,7 +3625,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -3727,7 +3791,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -3737,7 +3800,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -3775,7 +3837,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
"integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -3788,7 +3849,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -4419,6 +4479,26 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/follow-redirects": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/for-each": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
@@ -4451,6 +4531,22 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
+ "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.4",
+ "mime-types": "^2.1.35"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
@@ -4507,7 +4603,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4577,7 +4672,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -4602,7 +4696,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -4750,7 +4843,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -4821,7 +4913,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -4834,7 +4925,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -4850,7 +4940,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
"integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -6031,6 +6120,15 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.460.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.460.0.tgz",
+ "integrity": "sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@@ -6067,7 +6165,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -6109,6 +6206,27 @@
"node": ">=8.6"
}
},
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
@@ -7056,6 +7174,15 @@
"integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==",
"license": "MIT"
},
+ "node_modules/proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
diff --git a/package.json b/package.json
index 3cde41f..e45309f 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,8 @@
"dependencies": {
"@hookform/resolvers": "^3.9.1",
"@tabler/icons-webfont": "^3.44.0",
+ "axios": "^1.18.1",
+ "lucide-react": "^0.460.0",
"next": "16.2.7",
"react": "19.2.4",
"react-dom": "19.2.4",