This commit is contained in:
Moaz Dawalibi 2024-10-16 12:54:57 +03:00
parent 1fed61d66a
commit 9d623cad0c
50 changed files with 3599 additions and 2706 deletions

390
data.json
View File

@ -1,199 +1,195 @@
{ {
"navBar":{ "navBar": {
"link1":"الرئيسية", "link1": "الرئيسية",
"link2":"الميزات", "link2": "الميزات",
"link3":"كيف يعمل", "link3": "كيف يعمل",
"link4":"لقطة الشاشة", "link4": "لقطة الشاشة",
"link5":"ملاحظة", "link5": "ملاحظة",
"link6":"اتصل بنا" "link6": "اتصل بنا"
}, },
"Home":{ "Home": {
"title":"احصل على تنزيل مجاني لتطبيق", "title": "احصل على تنزيل مجاني لتطبيق",
"ApplicationName":"ذاكر", "ApplicationName": "ذاكر",
"description":"من الحقائق الثابتة منذ فترة طويلة أن القارئ سوف يصرف انتباهه عن المحتوى", "description": "من الحقائق الثابتة منذ فترة طويلة أن القارئ سوف يصرف انتباهه عن المحتوى",
"buttonLabel":"تحميل على المتجر", "buttonLabel": "تحميل على المتجر",
"button1":"جوجل بلاي", "button1": "جوجل بلاي",
"button2":"ابل", "button2": "ابل",
"mainImage":"/Home/Main.png" "mainImage": "/Home/Main.png"
}, },
"Features":{ "Features": {
"title":"ميزات التطبيق", "title": "ميزات التطبيق",
"description":"تقديم قيمة احترافية بموضوعية مع جاهزية متنوعة للويب. نقل خدمة العملاء اللاسلكية بشكل تعاوني دون محفزات موجهة نحو الهدف للتغيير. التعاون.", "description": "تقديم قيمة احترافية بموضوعية مع جاهزية متنوعة للويب. نقل خدمة العملاء اللاسلكية بشكل تعاوني دون محفزات موجهة نحو الهدف للتغيير. التعاون.",
"mainImage":"/Features/main.png", "mainImage": "/Features/main.png",
"Data":{ "Data": {
"1":{ "1": {
"img": "/Features/1.png", "img": "/Features/1.png",
"title": "ميزات غير محدودة", "title": "ميزات غير محدودة",
"description": "استمتع بإمكانيات غير محدودة لتخصيص تجربتك" "description": "استمتع بإمكانيات غير محدودة لتخصيص تجربتك"
}, },
"2":{ "2": {
"img": "/Features/2.png", "img": "/Features/2.png",
"title": "دعم ودود عبر الإنترنت", "title": "دعم ودود عبر الإنترنت",
"description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات" "description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات"
}, },
"3": { "3": {
"img": "/Features/3.png", "img": "/Features/3.png",
"title": "مشاركة اجتماعية", "title": "مشاركة اجتماعية",
"description": "مكون معياري وقابل للتبديل بين التخطيطات وحتى العروض التوضيحية." "description": "مكون معياري وقابل للتبديل بين التخطيطات وحتى العروض التوضيحية."
}, },
"4": { "4": {
"img": "/Features/4.png", "img": "/Features/4.png",
"title": "دقة عالية", "title": "دقة عالية",
"description": "مكون معياري وقابل للتبديل بين التخطيطات وحتى العروض التوضيحية." "description": "مكون معياري وقابل للتبديل بين التخطيطات وحتى العروض التوضيحية."
}, },
"5": { "5": {
"img": "/Features/5.png", "img": "/Features/5.png",
"title": "مشاركة اجتماعية", "title": "مشاركة اجتماعية",
"description": "سهولة مشاركة المحتوى عبر منصات التواصل الاجتماعي" "description": "سهولة مشاركة المحتوى عبر منصات التواصل الاجتماعي"
}, },
"6":{ "6": {
"img": "/Features/6.png", "img": "/Features/6.png",
"title": "استخدم على أي جهاز", "title": "استخدم على أي جهاز",
"description": "توافق مع جميع الأجهزة لضمان تجربة سلسة" "description": "توافق مع جميع الأجهزة لضمان تجربة سلسة"
} }
}
},
"HowItWork":{
"title":"كيف يعمل؟ ",
"description":" استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل.",
"mainImage":"/HowItWorks/main.png",
"Data":{
"1":{
"img": "/HowItWorks/1.png",
"title": "تسجيل الدخول ",
"description": "تسخير المنهجيات الموثوقة وخدمات الويب المتعامدة بشكل مقنع."
},
"2": {
"img": "/HowItWorks/2.png",
"title": "اختيار مادة",
"description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات"
},
"3": {
"img": "/HowItWorks/3.png",
"title": "إنشاء اختبار",
"description": "تسخير المنهجيات الموثوقة وخدمات الويب المتعامدة بشكل مقنع."
},
"4": {
"img": "/HowItWorks/4.png",
"title": "عرض النتيجة",
"description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات"
}
}
},
"VideoPage":{
"title":"منصة التطبيق الأكثر استخداما",
"description":"ابدأ العمل مع ذلك الذي يمكن أن يوفر كل ما تحتاجه لتوليد الوعي وزيادة حركة المرور والتواصل. تحويل القيمة الدقيقة بكفاءة من خلال المحتوى الذي يركز على العميل.",
"mainImage":"/Video/Play.png",
"Data":{
"1":{
"img": "1",
"title": "تنزيلات التطبيق",
"number": "1111"
},
"2":{
"img": "2",
"title": "عملاء سعداء",
"number": "2222"
},
"3":{
"img": "3",
"title": "الحسابات النشطة",
"number": "3333"
},
"4":{
"img": "4",
"title": "ملاحظات",
"number": "4444"
}
}
},
"ScreenShoot":{
"title":"لقطات شاشة التطبيق",
"description":"استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل",
"Data":[
"ScreenShoot/5.png",
"ScreenShoot/4.png",
"ScreenShoot/3.png",
"ScreenShoot/2.png",
"ScreenShoot/1.png",
"ScreenShoot/5.png",
"ScreenShoot/4.png",
"ScreenShoot/3.png",
"ScreenShoot/2.png",
"ScreenShoot/1.png"
]
},
"NotePage":{
"title":"ماذا يقول عملاؤنا عن ذاكر",
"description":" استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل.",
"Data":{
"1":{
"description":"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate":4,
"img":"/Note/1.png",
"name":"إليسا اسكندر"
},
"2":{
"description":"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate":4,
"img":"/Note/1.png",
"name":"إليسا اسكندر"
},
"3":{
"description":"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate":4,
"img":"/Note/1.png",
"name":"إليسا اسكندر"
}
}
},
"DownloadPage":{
"title":"متوفر الآن على",
"description":"ابدأ العمل مع ذلك الذي يمكن أن يوفر كل ما تحتاجه لتوليد الوعي وزيادة حركة المرور والتواصل. تحويل القيمة الدقيقة بكفاءة من خلال المحتوى الذي يركز على العميل",
"buttonLabel":"تحميل على المتجر",
"button1":"جوجل بلاي",
"button2":"المتجر",
"img":"/Download/1.png"
},
"ContactPage":{
"title":"تواصل معنا",
"description":"من السهل جدا الاتصال بنا. ما عليك سوى استخدام نموذج الاتصال أو زيارتنا في المكتب. ابتكار التكنولوجيا التنافسية ديناميكيا بعد مجموعة موسعة من القيادة",
"Data":{
"1": {
"title": "المكتب الرئيسي",
"image": "/contact/1.png",
"value": "121 King St , ملبورن VIC 3000, أستراليا"
},
"2":{
"title": "المكتب الرئيسي",
"image": "/contact/2.png",
"value": "+61 2 8376 6284"
},
"3":{
"title": "المكتب الرئيسي",
"image": "/contact/3.png",
"value": " hello@your domain.com"
}
}
},
"Footer":{
"title":"اشترك في نشرتنا الإخبارية",
"description":"نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا",
"privacy":"© زاكر 2024.جميع الحقوق محفوظة"
},
"Links":{
"google_play_link":"/",
"apple_store_link":"/",
"facebook":"/",
"telegram":"/",
"instagram":"/",
"twitter":"/"
},
"Setting":{
"Logo":"/Setting/LOGO.png"
} }
} },
"HowItWork": {
"title": "كيف يعمل؟ ",
"description": " استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل.",
"mainImage": "/HowItWorks/main.png",
"Data": {
"1": {
"img": "/HowItWorks/1.png",
"title": "تسجيل الدخول ",
"description": "تسخير المنهجيات الموثوقة وخدمات الويب المتعامدة بشكل مقنع."
},
"2": {
"img": "/HowItWorks/2.png",
"title": "اختيار مادة",
"description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات"
},
"3": {
"img": "/HowItWorks/3.png",
"title": "إنشاء اختبار",
"description": "تسخير المنهجيات الموثوقة وخدمات الويب المتعامدة بشكل مقنع."
},
"4": {
"img": "/HowItWorks/4.png",
"title": "عرض النتيجة",
"description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات"
}
}
},
"VideoPage": {
"title": "منصة التطبيق الأكثر استخداما",
"description": "ابدأ العمل مع ذلك الذي يمكن أن يوفر كل ما تحتاجه لتوليد الوعي وزيادة حركة المرور والتواصل. تحويل القيمة الدقيقة بكفاءة من خلال المحتوى الذي يركز على العميل.",
"mainImage": "/Video/Play.png",
"Data": {
"1": {
"img": "1",
"title": "تنزيلات التطبيق",
"number": "1111"
},
"2": {
"img": "2",
"title": "عملاء سعداء",
"number": "2222"
},
"3": {
"img": "3",
"title": "الحسابات النشطة",
"number": "3333"
},
"4": {
"img": "4",
"title": "ملاحظات",
"number": "4444"
}
}
},
"ScreenShoot": {
"title": "لقطات شاشة التطبيق",
"description": "استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل",
"Data": [
"ScreenShoot/5.png",
"ScreenShoot/4.png",
"ScreenShoot/3.png",
"ScreenShoot/2.png",
"ScreenShoot/1.png",
"ScreenShoot/5.png",
"ScreenShoot/4.png",
"ScreenShoot/3.png",
"ScreenShoot/2.png",
"ScreenShoot/1.png"
]
},
"NotePage": {
"title": "ماذا يقول عملاؤنا عن ذاكر",
"description": " استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل.",
"Data": {
"1": {
"description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate": 4,
"img": "/Note/1.png",
"name": "إليسا اسكندر"
},
"2": {
"description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate": 4,
"img": "/Note/1.png",
"name": "إليسا اسكندر"
},
"3": {
"description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate": 4,
"img": "/Note/1.png",
"name": "إليسا اسكندر"
}
}
},
"DownloadPage": {
"title": "متوفر الآن على",
"description": "ابدأ العمل مع ذلك الذي يمكن أن يوفر كل ما تحتاجه لتوليد الوعي وزيادة حركة المرور والتواصل. تحويل القيمة الدقيقة بكفاءة من خلال المحتوى الذي يركز على العميل",
"buttonLabel": "تحميل على المتجر",
"button1": "جوجل بلاي",
"button2": "المتجر",
"img": "/Download/1.png"
},
"ContactPage": {
"title": "تواصل معنا",
"description": "من السهل جدا الاتصال بنا. ما عليك سوى استخدام نموذج الاتصال أو زيارتنا في المكتب. ابتكار التكنولوجيا التنافسية ديناميكيا بعد مجموعة موسعة من القيادة",
"Data": {
"1": {
"title": "المكتب الرئيسي",
"image": "/contact/1.png",
"value": "121 King St , ملبورن VIC 3000, أستراليا"
},
"2": {
"title": "المكتب الرئيسي",
"image": "/contact/2.png",
"value": "+61 2 8376 6284"
},
"3": {
"title": "المكتب الرئيسي",
"image": "/contact/3.png",
"value": " hello@your domain.com"
}
}
},
"Footer": {
"title": "اشترك في نشرتنا الإخبارية",
"description": "نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا",
"privacy": "© زاكر 2024.جميع الحقوق محفوظة"
},
"Links": {
"google_play_link": "/",
"apple_store_link": "/",
"facebook": "/",
"telegram": "/",
"instagram": "/",
"twitter": "/"
},
"Setting": {
"Logo": "/Setting/LOGO.png"
}
}

View File

@ -4,11 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="manifest" href="/site.webmanifest" /> <link rel="manifest" href="/site.webmanifest" />
<link <link rel="icon" type="image/webp" href="/ Setting/LOGO.png" />
rel="icon"
type="image/webp"
href="/ Setting/LOGO.png"
/>
<meta name="description" content=" description of your web app" /> <meta name="description" content=" description of your web app" />
<title>Website</title> <title>Website</title>
</head> </head>

File diff suppressed because it is too large Load Diff

View File

@ -9,18 +9,17 @@ import VideoPage from './pages/VideoPage';
import ContactPage from './pages/ContactPage'; import ContactPage from './pages/ContactPage';
import './styles/App/index.scss'; import './styles/App/index.scss';
const App = () => { const App = () => {
return ( return (
<Layout> <Layout>
<HomePage /> <HomePage />
<FeaturesPage/> <FeaturesPage />
<HowItWork/> <HowItWork />
<VideoPage/> <VideoPage />
<ScreenShoot/> <ScreenShoot />
<NotePage/> <NotePage />
<DownloadPage/> <DownloadPage />
<ContactPage/> <ContactPage />
</Layout> </Layout>
); );
}; };

View File

@ -4,9 +4,9 @@ import I18nProvider from './lib/I18nProvider';
function ProviderContainer({ children }: { children: React.ReactNode }) { function ProviderContainer({ children }: { children: React.ReactNode }) {
return ( return (
<QueryProvider> <QueryProvider>
<I18nProvider>{children}</I18nProvider> <I18nProvider>{children}</I18nProvider>
</QueryProvider> </QueryProvider>
); );
} }

View File

@ -2,9 +2,7 @@ import './styles/App/index.scss';
import HomePage from './pages/HomePage'; import HomePage from './pages/HomePage';
const Routes = () => { const Routes = () => {
return ( return <HomePage />;
<HomePage />
);
}; };
export default Routes; export default Routes;

View File

@ -1,30 +1,25 @@
import {ContactPage as ContactPageData} from '../../../data.json' import { ContactPage as ContactPageData } from '../../../data.json';
const Left = () => { const Left = () => {
return (
<div className="Left">
<h1> {ContactPageData.title} </h1>
<p>{ContactPageData.description}</p>
<div>
{Object.entries(ContactPageData.Data)?.map((item, index) => {
return (
<span key={index}>
<div>
<img loading="lazy" src={item[1].image} alt="" />
<h6> {item[1].title} </h6>
</div>
<p> {item[1].value} </p>
</span>
);
})}
</div>
</div>
);
};
return ( export default Left;
<div className='Left'>
<h1> {ContactPageData.title} </h1>
<p>
{ContactPageData.description}
</p>
<div>
{Object.entries(ContactPageData.Data)?.map((item, index) => {
return (
<span key={index}>
<div>
<img loading="lazy" src={item[1].image} alt="" />
<h6> {item[1].title} </h6>
</div>
<p> {item[1].value} </p>
</span>
)
})}
</div>
</div>
)
}
export default Left

View File

@ -1,32 +1,27 @@
import { Form, Formik } from 'formik' import { Form, Formik } from 'formik';
import React from 'react' import React from 'react';
import InputField from '../Field/InputField' import InputField from '../Field/InputField';
import TextAreaField from '../Field/TextAreaField' import TextAreaField from '../Field/TextAreaField';
const Right = () => { const Right = () => {
const handleSubmit = ()=>{ const handleSubmit = () => {};
}
return ( return (
<div className='Right'> <div className="Right">
<h1>تواصل معنا بسرعة</h1> <h1>تواصل معنا بسرعة</h1>
<Formik initialValues={handleSubmit} onSubmit={handleSubmit} > <Formik initialValues={handleSubmit} onSubmit={handleSubmit}>
<Form> <Form>
<div className='Forms'> <div className="Forms">
<InputField name='name' placeholder='أدخل الاسم' /> <InputField name="name" placeholder="أدخل الاسم" />
<InputField name='email' placeholder='أدخل البريد الإلكتروني' /> <InputField name="email" placeholder="أدخل البريد الإلكتروني" />
<InputField name='number' placeholder='هاتفك' /> <InputField name="number" placeholder="هاتفك" />
<InputField name='company' placeholder='شركتك' /> <InputField name="company" placeholder="شركتك" />
<TextAreaField name='message' placeholder='رسالة' /> <TextAreaField name="message" placeholder="رسالة" />
</div> </div>
<button className='scale' > <button className="scale">ارسل رسالة</button>
ارسل رسالة
</button>
</Form> </Form>
</Formik> </Formik>
</div> </div>
) );
} };
export default Right export default Right;

View File

@ -1,23 +1,18 @@
import { Input, InputProps } from "antd"; import { Input, InputProps } from 'antd';
import React from "react"; import React from 'react';
import { Field } from "formik"; import { Field } from 'formik';
const InputField = ({
name,
...props
}: InputProps) => {
const InputField = ({ name, ...props }: InputProps) => {
return ( return (
<div className="ValidationField w-100"> <div className="ValidationField w-100">
<Field
<Field as={Input}
as={Input} name={name}
name={name} id={name}
id={name} size="large"
size="large" styles={{ width: '100%' }}
styles={{width:"100%"}} {...props}
{...props} />
/>
</div> </div>
); );
}; };

View File

@ -1,25 +1,20 @@
import { InputProps } from "antd"; import { InputProps } from 'antd';
import React from "react"; import React from 'react';
import { Field } from "formik"; import { Field } from 'formik';
import TextArea from "antd/es/input/TextArea"; import TextArea from 'antd/es/input/TextArea';
const TextAreaField = ({
name,
...props
}: InputProps) => {
const TextAreaField = ({ name, ...props }: InputProps) => {
return ( return (
<div className="ValidationField TextAreaField"> <div className="ValidationField TextAreaField">
<Field
<Field as={TextArea}
as={TextArea} name={name}
name={name} id={name}
id={name} size="large"
size="large" styles={{ width: '100%' }}
styles={{width:"100%"}} autoSize={{ minRows: 4, maxRows: 10 }}
autoSize={{ minRows: 4, maxRows: 10 }} {...props}
{...props} />
/>
</div> </div>
); );
}; };

View File

@ -1,53 +1,50 @@
// Import Swiper React components // Import Swiper React components
import { Pagination, A11y ,Autoplay} from 'swiper/modules'; import { Pagination, A11y, Autoplay } from 'swiper/modules';
import { Swiper, SwiperSlide } from 'swiper/react'; import { Swiper, SwiperSlide } from 'swiper/react';
import 'swiper/css'; import 'swiper/css';
import 'swiper/css/navigation'; import 'swiper/css/navigation';
import 'swiper/css/pagination'; import 'swiper/css/pagination';
import 'swiper/css/scrollbar'; import 'swiper/css/scrollbar';
import {ScreenShoot as ScreenShootData} from '../../data.json' import { ScreenShoot as ScreenShootData } from '../../data.json';
const SwipeScreenShoot = () => { const SwipeScreenShoot = () => {
return (
<div className="SwipeScreenShoot">
<Swiper
modules={[Pagination, A11y, Autoplay]}
spaceBetween={20}
autoplay={{ delay: 3000 }} // Configure autoplay options
pagination={{ clickable: true }}
// onSwiper={(swiper) => console.log(swiper)}
// onSlideChange={() => console.log('slide change')}
breakpoints={{
400: {
slidesPerView: 1,
},
800: {
slidesPerView: 2,
},
1200: {
slidesPerView: 3,
},
1500: {
slidesPerView: 5,
},
2000: {
slidesPerView: 7,
},
}}
>
{ScreenShootData.Data.map((item, index) => {
return (
<SwiperSlide key={index}>
<img loading="lazy" src={item} alt={`Screenshot ${index + 1}`} />
</SwiperSlide>
);
})}
</Swiper>
</div>
);
};
return ( export default SwipeScreenShoot;
<div className='SwipeScreenShoot'>
<Swiper
modules={[Pagination, A11y, Autoplay]}
spaceBetween={20}
autoplay={{ delay: 3000 }} // Configure autoplay options
pagination={{ clickable: true }}
// onSwiper={(swiper) => console.log(swiper)}
// onSlideChange={() => console.log('slide change')}
breakpoints={{
400: {
slidesPerView: 1,
},
800: {
slidesPerView: 2,
},
1200: {
slidesPerView: 3,
},
1500: {
slidesPerView: 5,
},
2000: {
slidesPerView: 7,
},
}}
>
{ScreenShootData.Data.map((item, index) => {
return (
<SwiperSlide key={index}>
<img loading="lazy" src={item} alt={`Screenshot ${index + 1}`} />
</SwiperSlide>
)
})}
</Swiper>
</div>
);
}
export default SwipeScreenShoot;

View File

@ -1,5 +1,5 @@
import { Button } from 'antd'; import { Button } from 'antd';
import { FaHandPointUp } from "react-icons/fa"; import { FaHandPointUp } from 'react-icons/fa';
import useScroll from '../../hooks/useScroll'; import useScroll from '../../hooks/useScroll';
const BackToTopButton = () => { const BackToTopButton = () => {

View File

@ -1,37 +1,35 @@
import { Input } from "antd"; import { Input } from 'antd';
import { FaFacebook, FaInstagram, FaTelegram, FaTwitter } from "react-icons/fa"; import { FaFacebook, FaInstagram, FaTelegram, FaTwitter } from 'react-icons/fa';
import {Footer as FooterData,Links,Setting} from '../../../data.json' import { Footer as FooterData, Links, Setting } from '../../../data.json';
const Footer = () => { const Footer = () => {
const handleClick = (href:string)=>{ const handleClick = (href: string) => {
window.location.href = href window.location.href = href;
} };
return ( return (
<div className="Footer"> <div className="Footer">
<img loading="lazy" src={Setting.Logo} alt="logo" /> <img loading="lazy" src={Setting.Logo} alt="logo" />
<div> <div>
<FaTelegram onClick={()=>handleClick(Links.telegram)}/> <FaTelegram onClick={() => handleClick(Links.telegram)} />
<FaFacebook onClick={()=>handleClick(Links.facebook)} /> <FaFacebook onClick={() => handleClick(Links.facebook)} />
<FaInstagram onClick={()=>handleClick(Links.instagram)} /> <FaInstagram onClick={() => handleClick(Links.instagram)} />
<FaTwitter onClick={()=>handleClick(Links.twitter)} /> <FaTwitter onClick={() => handleClick(Links.twitter)} />
</div> </div>
<p> <p>{FooterData.privacy}</p>
{FooterData.privacy}
</p>
<span className="FooterHeader"> <span className="FooterHeader">
<span> <span>
<h1>{FooterData.title}</h1> <h1>{FooterData.title}</h1>
<p>{FooterData.description}</p> <p>{FooterData.description}</p>
</span> </span>
<div>
<Input placeholder="أدخل بريدك الإلكتروني" />
<div> <div>
<Input placeholder="أدخل بريدك الإلكتروني" /> <FaTelegram />
<div>
<FaTelegram/>
</div>
</div> </div>
</div>
</span> </span>
</div> </div>
) );
}; };
export default Footer; export default Footer;

View File

@ -9,7 +9,7 @@ const Layout = ({ children }: { children: React.ReactNode }) => {
<NavBar /> <NavBar />
{children} {children}
<Footer /> <Footer />
<BackToTopButton/> <BackToTopButton />
</div> </div>
); );
}; };

View File

@ -1,13 +1,12 @@
// NavBar.tsx // NavBar.tsx
import React, { useState } from 'react'; import React, { useState } from 'react';
import { RoutesEnums } from '../../enums/RoutesEnums'; import { RoutesEnums } from '../../enums/RoutesEnums';
import { MdLanguage } from "react-icons/md"; import { MdLanguage } from 'react-icons/md';
import { FaEllipsis } from 'react-icons/fa6'; import { FaEllipsis } from 'react-icons/fa6';
import { Popover } from 'antd'; import { Popover } from 'antd';
import {navBar as navBarData,Setting} from '../../../data.json' import { navBar as navBarData, Setting } from '../../../data.json';
// Define an enum for the routes // Define an enum for the routes
// Define a type for the link objects // Define a type for the link objects
interface NavLink { interface NavLink {
path: RoutesEnums; path: RoutesEnums;
@ -19,66 +18,68 @@ const NavBar: React.FC = () => {
const links: NavLink[] = [ const links: NavLink[] = [
{ path: RoutesEnums.HOME, label: navBarData.link1 }, { path: RoutesEnums.HOME, label: navBarData.link1 },
{ path: RoutesEnums.FEATURES, label: navBarData.link2 }, { path: RoutesEnums.FEATURES, label: navBarData.link2 },
{ path: RoutesEnums.HOW_IT_WORK, label: navBarData.link3}, { path: RoutesEnums.HOW_IT_WORK, label: navBarData.link3 },
{ path: RoutesEnums.SCREEN_SHOOT, label: navBarData.link4 }, { path: RoutesEnums.SCREEN_SHOOT, label: navBarData.link4 },
{ path: RoutesEnums.NOTE, label:navBarData.link5 }, { path: RoutesEnums.NOTE, label: navBarData.link5 },
{ path: RoutesEnums.CONTACT, label: navBarData.link6 }, { path: RoutesEnums.CONTACT, label: navBarData.link6 },
]; ];
const [Open, setOpen] = useState(false) const [Open, setOpen] = useState(false);
const handleToggle = ()=>{ const handleToggle = () => {
setOpen(!Open) setOpen(!Open);
} };
const NavBarContent = (
const NavBarContent = ( <div className="NavBarContent">
<div className='NavBarContent'> <ul className="NavBarLinks">
<ul className='NavBarLinks'> {links.map((link) => {
{links.map((link) =>{ return (
return ( <li
<li onClick={handleToggle} key={link.path} className={`${"activeLink"}`}> onClick={handleToggle}
key={link.path}
className={`${'activeLink'}`}
>
<a href={link.path}>{link.label}</a> <a href={link.path}>{link.label}</a>
</li> </li>
) );
})} })}
</ul> </ul>
</div>
);
</div> const [Active, setActive] = useState(location.hash);
);
const [Active, setActive] = useState(location.hash)
return ( return (
<nav className='NavBar'> <nav className="NavBar">
<img loading="lazy" src={Setting.Logo} className='scale' alt="" /> <img loading="lazy" src={Setting.Logo} className="scale" alt="" />
<ul className='NavBarLinks'> <ul className="NavBarLinks">
{links.map((link) =>{ {links.map((link) => {
const handleClick = () => {
const handleClick =()=>{ setActive(link.path);
setActive(link.path) };
} const isActive =
const isActive = Active === "" && link.path === "#" ? true : Active === link.path; Active === '' && link.path === '#' ? true : Active === link.path;
return ( return (
<li key={link.path} onClick={handleClick} className={`${isActive ? "activeLink" : ""}`}> <li
key={link.path}
onClick={handleClick}
className={`${isActive ? 'activeLink' : ''}`}
>
<a href={link.path}>{link.label}</a> <a href={link.path}>{link.label}</a>
</li> </li>
) );
})} })}
</ul> </ul>
<div> <div>
<MdLanguage /> <MdLanguage />
<article> <article>
<Popover open={Open} content={NavBarContent} > <Popover open={Open} content={NavBarContent}>
<FaEllipsis onClick={handleToggle} /> <FaEllipsis onClick={handleToggle} />
</Popover> </Popover>
</article> </article>
</div>
</div>
</nav> </nav>
); );
}; };
export default NavBar; export default NavBar;

View File

@ -2,46 +2,44 @@ import React, { useState, useEffect, ReactNode } from 'react';
import { useNavigate, useLocation } from 'react-router-dom'; import { useNavigate, useLocation } from 'react-router-dom';
interface PageTransitionProps { interface PageTransitionProps {
to: string; to: string;
children: ReactNode; children: ReactNode;
} }
const PageTransition: React.FC<PageTransitionProps> = ({ to, children }) => { const PageTransition: React.FC<PageTransitionProps> = ({ to, children }) => {
const [transitioning, setTransitioning] = useState(false); const [transitioning, setTransitioning] = useState(false);
const [reversed, setReversed] = useState(false); const [reversed, setReversed] = useState(false);
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation(); const location = useLocation();
const handleClick = () => { const handleClick = () => {
if (location.pathname === to) { if (location.pathname === to) {
return; // Prevent navigation to the same route return; // Prevent navigation to the same route
} }
setTransitioning(true); setTransitioning(true);
setTimeout(() => { setTimeout(() => {
navigate(to); navigate(to);
setReversed(true); // Set reversed for the entrance animation setReversed(true); // Set reversed for the entrance animation
}, 1000); // Match this timing with the exit animation duration }, 1000); // Match this timing with the exit animation duration
}; };
useEffect(() => { useEffect(() => {
if (reversed) { if (reversed) {
setTimeout(() => { setTimeout(() => {
setReversed(false); // Clear the reversed state after the animation setReversed(false); // Clear the reversed state after the animation
setTransitioning(false); setTransitioning(false);
}, 1000); // Match this timing with the entrance animation duration }, 1000); // Match this timing with the entrance animation duration
} }
}, [reversed]); }, [reversed]);
return ( return (
<> <>
<div <div
className={`transition-overlay ${transitioning ? (reversed ? 'enter' : 'exit') : ''}`} className={`transition-overlay ${transitioning ? (reversed ? 'enter' : 'exit') : ''}`}
/> />
<div onClick={handleClick}> <div onClick={handleClick}>{children}</div>
{children} </>
</div> );
</>
);
}; };
export default PageTransition; export default PageTransition;

View File

@ -2,11 +2,10 @@ import React from 'react';
const SpinContainer: React.FC = () => { const SpinContainer: React.FC = () => {
return ( return (
<div className='full-screen-center'> <div className="full-screen-center">
<div className="loader"></div> <div className="loader"></div>
</div> </div>
); );
}; };
export default SpinContainer;
export default SpinContainer;

View File

@ -5,7 +5,7 @@ interface FirstLoadingProps {
seconds: number; seconds: number;
children: React.ReactNode; // Add children prop children: React.ReactNode; // Add children prop
} }
const FirstLoading: React.FC<FirstLoadingProps> = ({ seconds,children }) => { const FirstLoading: React.FC<FirstLoadingProps> = ({ seconds, children }) => {
const [currentNumber, setCurrentNumber] = useState(1); const [currentNumber, setCurrentNumber] = useState(1);
const [animate, setAnimate] = useState(false); const [animate, setAnimate] = useState(false);
const [pageUp, setPageUp] = useState(false); // New state for page movement const [pageUp, setPageUp] = useState(false); // New state for page movement
@ -39,21 +39,15 @@ const FirstLoading: React.FC<FirstLoadingProps> = ({ seconds,children }) => {
return ( return (
<> <>
<div className={`FirstLoading ${pageUp ? 'PageUp' : ''}`}> <div className={`FirstLoading ${pageUp ? 'PageUp' : ''}`}>
<div> <div>
<img loading="lazy" src={Logo} className='Logo' alt="" /> <img loading="lazy" src={Logo} className="Logo" alt="" />
<div className={`Info`}> <div className={`Info`}>[{currentNumber} %]</div>
[{currentNumber} %] </div>
</div> </div>
</div> {pageUp && children}
</div>
{
pageUp && children
}
</> </>
); );
}; };
export default FirstLoading; export default FirstLoading;

View File

@ -1,8 +1,8 @@
export enum RoutesEnums { export enum RoutesEnums {
HOME = '#', HOME = '#',
FEATURES = '#features', FEATURES = '#features',
HOW_IT_WORK = '#how_it_work', HOW_IT_WORK = '#how_it_work',
SCREEN_SHOOT = '#screen_shoot', SCREEN_SHOOT = '#screen_shoot',
NOTE = '#note', NOTE = '#note',
CONTACT = '#contact_us', CONTACT = '#contact_us',
} }

View File

@ -10,7 +10,8 @@ interface I18nProviderProps {
const I18nProvider: React.FC<I18nProviderProps> = ({ children }) => { const I18nProvider: React.FC<I18nProviderProps> = ({ children }) => {
useEffect(() => { useEffect(() => {
const currentLanguage =(LocalStorageManager.getItem(LocalStorageEnum.LANGUAGE_KEY) as string) === const currentLanguage =
(LocalStorageManager.getItem(LocalStorageEnum.LANGUAGE_KEY) as string) ===
'en' 'en'
? 'en' ? 'en'
: 'ar'; : 'ar';

View File

@ -1,9 +1,7 @@
import React from 'react' import React from 'react';
const AboutUs = () => { const AboutUs = () => {
return ( return <div className="AboutUs">AboutUs</div>;
<div className='AboutUs'>AboutUs</div> };
)
}
export default AboutUs export default AboutUs;

View File

@ -1,15 +1,14 @@
import React from 'react' import React from 'react';
import Left from '../components/Contact/Left' import Left from '../components/Contact/Left';
import Right from '../components/Contact/Right' import Right from '../components/Contact/Right';
const ContactPage = () => { const ContactPage = () => {
return ( return (
<div className='ContactPage' id='contact_us'> <div className="ContactPage" id="contact_us">
<Left/> <Left />
<Right/> <Right />
</div> </div>
) );
} };
export default ContactPage export default ContactPage;

View File

@ -1,50 +1,56 @@
import { BsGooglePlay } from 'react-icons/bs' import { BsGooglePlay } from 'react-icons/bs';
import { FaApple } from 'react-icons/fa' import { FaApple } from 'react-icons/fa';
import {DownloadPage as DownloadPageData,Links} from '../../data.json' import { DownloadPage as DownloadPageData, Links } from '../../data.json';
const DownloadPage = () => { const DownloadPage = () => {
const handleClick = (href: string) => {
window.location.href = href;
};
const handleClick = (href:string)=>{
window.location.href = href
}
return ( return (
<div className='DownloadPage' > <div className="DownloadPage">
<main> <main>
<h1> {DownloadPageData.title} </h1> <h1> {DownloadPageData.title} </h1>
<p> {DownloadPageData.description} </p> <p> {DownloadPageData.description} </p>
<div > <div>
<button onClick={()=>handleClick(Links.google_play_link)}> <button onClick={() => handleClick(Links.google_play_link)}>
<div> <div>
<BsGooglePlay /> <BsGooglePlay />
</div> </div>
<div> <div>
<h6>{DownloadPageData.buttonLabel}</h6> <h6>{DownloadPageData.buttonLabel}</h6>
<h5> {DownloadPageData.button1} </h5> <h5> {DownloadPageData.button1} </h5>
</div> </div>
</button> </button>
<button onClick={()=>handleClick(Links.apple_store_link)}> <button onClick={() => handleClick(Links.apple_store_link)}>
<div> <div>
<FaApple /> <FaApple />
</div> </div>
<div> <div>
<h6>{DownloadPageData.buttonLabel}</h6> <h6>{DownloadPageData.buttonLabel}</h6>
<h5> {DownloadPageData.button2} </h5> <h5> {DownloadPageData.button2} </h5>
</div> </div>
</button> </button>
</div> </div>
</main> </main>
<div> <div>
<img loading="lazy" className='circle' src="/Setting/circle.png" alt="" /> <img
loading="lazy"
className="circle"
src="/Setting/circle.png"
alt=""
/>
</div> </div>
<img loading="lazy" className='main scale' src={DownloadPageData.img} alt="" /> <img
loading="lazy"
className="main scale"
src={DownloadPageData.img}
alt=""
/>
</div> </div>
);
) };
}
export default DownloadPage export default DownloadPage;

View File

@ -1,39 +1,37 @@
import {Features} from '../../data.json' import { Features } from '../../data.json';
const FeaturesPage = () => { const FeaturesPage = () => {
console.log();
console.log(); return (
<div className="FeaturesPage" id="features">
return ( <h1> {Features.title} </h1>
<div className='FeaturesPage' id='features'> <p> {Features.description}</p>
<h1> {Features.title} </h1> <div>
<p> {Features.description}</p> <span>
<div> {Object.entries(Features.Data).map((item, index) => {
<span> console.log(item, 'item');
{Object.entries(Features.Data).map((item, index) => {
console.log(item,"item");
return (
<article key={index}>
<img loading="lazy" className='scale' src={item[1].img} alt={`${index}`} />
<div>
<h4>
{item[1].title}
</h4>
<p>
{item[1].description}
</p>
</div>
</article>
)
})}
</span> return (
<img loading="lazy" className='scale' src={Features.mainImage} alt="" /> <article key={index}>
<img
loading="lazy"
className="scale"
src={item[1].img}
alt={`${index}`}
/>
<div>
<h4>{item[1].title}</h4>
<p>{item[1].description}</p>
</div>
</article>
);
})}
</span>
<img loading="lazy" className="scale" src={Features.mainImage} alt="" />
</div>
</div>
);
};
</div> export default FeaturesPage;
</div>
)
}
export default FeaturesPage

View File

@ -1,44 +1,45 @@
import { BsGooglePlay } from 'react-icons/bs' import { BsGooglePlay } from 'react-icons/bs';
import { FaApple } from 'react-icons/fa' import { FaApple } from 'react-icons/fa';
import {Home,Links} from '../../data.json' import { Home, Links } from '../../data.json';
const HomePage = () => { const HomePage = () => {
const handleClick = (href: string) => {
const handleClick = (href:string)=>{ window.location.href = href;
window.location.href = href };
}
return ( return (
<div className='HomePage' id='#'> <div className="HomePage" id="#">
<main> <main>
<h1>{Home.title} <h2> {Home.ApplicationName} </h2></h1> <h1>
{Home.title} <h2> {Home.ApplicationName} </h2>
</h1>
<p>{Home.description}</p> <p>{Home.description}</p>
<div> <div>
<button onClick={()=>handleClick(Links.google_play_link)}> <button onClick={() => handleClick(Links.google_play_link)}>
<div> <div>
<BsGooglePlay /> <BsGooglePlay />
</div> </div>
<div > <div>
<h6>{Home.buttonLabel}</h6> <h6>{Home.buttonLabel}</h6>
<h5> {Home.button1} </h5> <h5> {Home.button1} </h5>
</div> </div>
</button> </button>
<button onClick={()=>handleClick(Links.apple_store_link)}> <button onClick={() => handleClick(Links.apple_store_link)}>
<div> <div>
<FaApple /> <FaApple />
</div> </div>
<div > <div>
<h6>{Home.buttonLabel}</h6> <h6>{Home.buttonLabel}</h6>
<h5> {Home.button2} </h5> <h5> {Home.button2} </h5>
</div> </div>
</button> </button>
</div> </div>
</main> </main>
<img loading="lazy" className='circle' src="/Setting/circle.png" alt="" /> <img loading="lazy" className="circle" src="/Setting/circle.png" alt="" />
<img loading="lazy" className='shape' src="/Setting/shape.svg" alt="" /> <img loading="lazy" className="shape" src="/Setting/shape.svg" alt="" />
<img loading="lazy" className='slider' src={Home.mainImage} alt="" /> <img loading="lazy" className="slider" src={Home.mainImage} alt="" />
</div> </div>
) );
} };
export default HomePage export default HomePage;

View File

@ -1,54 +1,60 @@
import React from 'react' import React from 'react';
import {HowItWork as HowItWorkData} from '../../data.json' import { HowItWork as HowItWorkData } from '../../data.json';
const HowItWork = () => { const HowItWork = () => {
return ( return (
<div className='HowItWork' id='how_it_work'> <div className="HowItWork" id="how_it_work">
<h1> {HowItWorkData.title}</h1> <h1> {HowItWorkData.title}</h1>
<p> <p>{HowItWorkData.description}</p>
{HowItWorkData.description} <div>
</p> <span>
<div> {Object.entries(HowItWorkData.Data)
<span> .slice(0, 2)
{Object.entries(HowItWorkData.Data).slice(0,2).map((item, index) => { .map((item, index) => {
return ( return (
<article key={index}> <article key={index}>
<img loading="lazy" className='scale' src={item[1].img} alt={`${index}`} /> <img
<div> loading="lazy"
<h4> className="scale"
{item[1].title} src={item[1].img}
</h4> alt={`${index}`}
<p> />
{item[1].description} <div>
</p> <h4>{item[1].title}</h4>
</div> <p>{item[1].description}</p>
</article> </div>
) </article>
);
})} })}
</span> </span>
<img loading="lazy" className='scale' src="/HowItWorks/main.png" alt="" /> <img
<span> loading="lazy"
{Object.entries(HowItWorkData.Data).slice(2,4).map((item, index) => { className="scale"
return ( src="/HowItWorks/main.png"
<article key={index}> alt=""
<img loading="lazy" src={item[1].img} alt={`${item[1].img}`} /> />
<div> <span>
<h4> {Object.entries(HowItWorkData.Data)
{item[1].title} .slice(2, 4)
</h4> .map((item, index) => {
<p> return (
{item[1].description} <article key={index}>
</p> <img
</div> loading="lazy"
</article> src={item[1].img}
) alt={`${item[1].img}`}
})} />
</span> <div>
</div> <h4>{item[1].title}</h4>
<p>{item[1].description}</p>
</div>
</article>
);
})}
</span>
</div>
</div> </div>
) );
} };
export default HowItWork export default HowItWork;

View File

@ -1,36 +1,36 @@
import React from 'react' import React from 'react';
import { Rate } from 'antd'; import { Rate } from 'antd';
import {NotePage as NotePageData} from '../../data.json' import { NotePage as NotePageData } from '../../data.json';
const NotePage = () => { const NotePage = () => {
return ( return (
<div className='NotePage' id='note' > <div className="NotePage" id="note">
<h1> {NotePageData.title} </h1> <h1> {NotePageData.title} </h1>
<p> <p>{NotePageData.description}</p>
{NotePageData.description} <div>
</p> {Object.entries(NotePageData.Data).map((item, index: number) => {
<div> return (
{Object.entries(NotePageData.Data).map((item,index:number)=>{
return (
<article key={index}> <article key={index}>
<div> <div>
<img className='message_form' src="/Note/message.png" alt="" width={20}/> <img
<p> className="message_form"
{item[1].description} src="/Note/message.png"
</p> alt=""
<Rate value={item[1].rate} /> width={20}
</div> />
<span> <p>{item[1].description}</p>
<img loading="lazy" src={item[1].img} alt="" /> <Rate value={item[1].rate} />
<h5> {item[1].name} </h5> </div>
</span> <span>
<img loading="lazy" src={item[1].img} alt="" />
<h5> {item[1].name} </h5>
</span>
</article> </article>
);
) })}
})} </div>
</div>
</div> </div>
) );
} };
export default NotePage export default NotePage;

View File

@ -1,21 +1,17 @@
import React from 'react' import React from 'react';
import SwipeScreenShoot from '../components/SwiperScreenShoot' import SwipeScreenShoot from '../components/SwiperScreenShoot';
import {ScreenShoot as ScreenShootData} from '../../data.json'
import { ScreenShoot as ScreenShootData } from '../../data.json';
const ScreenShoot = () => { const ScreenShoot = () => {
return ( return (
<div className='ScreenShoot' id='screen_shoot'> <div className="ScreenShoot" id="screen_shoot">
<h1> {ScreenShootData.title} </h1>
<p>{ScreenShootData.description}</p>
<h1> {ScreenShootData.title} </h1> <SwipeScreenShoot />
<p>
{ScreenShootData.description}
</p>
<SwipeScreenShoot/>
</div> </div>
) );
} };
export default ScreenShoot export default ScreenShoot;

View File

@ -1,41 +1,39 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import {VideoPage as VideoPageData} from '../../data.json' import { VideoPage as VideoPageData } from '../../data.json';
const VideoPage = () => { const VideoPage = () => {
const [isPlaying, setIsPlaying] = useState(false); const [isPlaying, setIsPlaying] = useState(false);
const handlePlayPause = () => {
setIsPlaying(!isPlaying);
};
const handlePlayPause = () => { return (
setIsPlaying(!isPlaying); <div className="VideoPage">
}; <img loading="lazy" src="/Video/video.png" alt="" />
return ( <main>
<div className='VideoPage'> <h1>{VideoPageData.title}</h1>
<p>{VideoPageData.description}</p>
<img loading="lazy" src="/Video/video.png" alt="" /> <img loading="lazy" src={VideoPageData.mainImage} alt="" />
</main>
<main>
<h1>{VideoPageData.title}</h1>
<p>
{VideoPageData.description}
</p>
<img loading="lazy" src={VideoPageData.mainImage} alt="" />
</main>
<span> <span>
{Object.entries(VideoPageData.Data).map((item, index) => ( {Object.entries(VideoPageData.Data).map((item, index) => (
<article key={index}> <article key={index}>
<img loading="lazy" src={`/Video/${item[1].img}.png`} alt={`${index}`} /> <img
loading="lazy"
<h4>{item[1].number}</h4> src={`/Video/${item[1].img}.png`}
<p>{item[1].title}</p> alt={`${index}`}
/>
</article>
))} <h4>{item[1].number}</h4>
</span> <p>{item[1].title}</p>
</article>
</div> ))}
); </span>
</div>
);
}; };
export default VideoPage; export default VideoPage;

View File

@ -1,7 +1,5 @@
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@400;700&display=swap');
html, html,
body { body {
background: var(--bg); background: var(--bg);
@ -22,7 +20,7 @@ body {
// line-height: normal; // line-height: normal;
// font-size: 16px; // font-size: 16px;
} }
p{ p {
font-weight: normal; font-weight: normal;
} }
h1, h1,
@ -68,20 +66,19 @@ input:-webkit-autofill:active {
box-shadow: inset 0 0 20px 20px #23232329; box-shadow: inset 0 0 20px 20px #23232329;
} }
button {
button{
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
&:hover{ &:hover {
scale: 1.02; scale: 1.02;
} }
} }
svg,
svg,.scale{ .scale {
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
&:hover{ &:hover {
scale: 1.1; scale: 1.1;
} }
} }

View File

@ -1,15 +1,14 @@
:root { :root {
--primary: #222838; --primary: #222838;
--secondary: #fdba2d; --secondary: #fdba2d;
--thirdly:#0093d4; --thirdly: #0093d4;
--white:white; --white: white;
--text: #000; --text: #000;
--black:#000; --black: #000;
--placeholder: rgb(0, 0, 0, 0.3); --placeholder: rgb(0, 0, 0, 0.3);
--bg: rgb(245 247 251); --bg: rgb(245 247 251);
--bg2: white; --bg2: white;
--gradient : linear-gradient(45deg, #55B9E3, #5262E3); --gradient: linear-gradient(45deg, #55b9e3, #5262e3);
} }
:root:has(.dark) { :root:has(.dark) {

View File

@ -3,7 +3,7 @@
background-color: red; background-color: red;
} }
.full-screen-center{ .full-screen-center {
position: absolute; position: absolute;
z-index: 999; z-index: 999;
height: 100vh; height: 100vh;
@ -11,9 +11,6 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.spinner{ .spinner {
} }

View File

@ -1,43 +1,45 @@
.FirstLoading { .FirstLoading {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
background: black; background: black;
color: white; color: white;
z-index: 9999999999; z-index: 9999999999;
overflow: hidden; overflow: hidden;
transition: transform 1s cubic-bezier(.25,1,.5,1), visibility 1ms linear 1s; transition:
transform 1s cubic-bezier(0.25, 1, 0.5, 1),
visibility 1ms linear 1s;
} }
.Logo { .Logo {
width: 30vw; width: 30vw;
mix-blend-mode: difference; mix-blend-mode: difference;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
.Info { .Info {
font-size: 1vw; font-size: 1vw;
transition: transform 0.5s ease; transition: transform 0.5s ease;
} }
/* New animation for page movement */ /* New animation for page movement */
@keyframes pageUp { @keyframes pageUp {
0% { 0% {
transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0);
} }
100% { 100% {
transform: translate3d(0, -100vh, 0); transform: translate3d(0, -100vh, 0);
visibility: hidden; visibility: hidden;
} }
} }
.PageUp { .PageUp {
animation: pageUp 0.8s ease-in-out forwards; animation: pageUp 0.8s ease-in-out forwards;
} }

View File

@ -1,190 +1,179 @@
.Footer{ .Footer {
background: var(--primary); background: var(--primary);
height: 350px; height: 350px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 30px; gap: 30px;
margin-top: 250px; margin-top: 250px;
width: 100%; width: 100%;
z-index: 999; z-index: 999;
position: relative; position: relative;
img{ img {
width: 100px; width: 100px;
}
} > div {
>div{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 10px; gap: 10px;
svg{ svg {
font-size: 20px;
color: var(--white);
padding: 10px;
border: 1px solid var(--white);
border-radius: 50%;
}
}
p {
font-size: 16px;
color: var(--white);
}
}
.FooterHeader {
position: absolute;
top: -25%;
background: var(--thirdly);
width: 70%;
height: 150px;
display: flex;
justify-content: space-between;
align-items: center;
padding-inline: 5%;
color: var(--white);
border-radius: 6px;
> span {
display: flex;
flex-direction: column;
gap: 10px;
p {
font-weight: normal;
}
}
> div {
background: var(--white);
width: 300px;
height: 40px;
display: flex;
padding: 5px;
gap: 10px;
.ant-input {
border: none;
height: 40px;
all: unset;
min-width: 240px;
color: var(--text);
&::placeholder {
font-size: 10px;
}
}
div {
background: var(--thirdly);
width: 50px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 5px;
cursor: pointer;
svg {
font-size: 30px;
width: 30px;
}
}
}
}
@media screen and (max-width: 900px) {
.Footer {
background: var(--primary);
height: 330px;
display: flex;
flex-direction: column;
justify-content: end;
align-items: center;
gap: 30px;
margin-top: 250px;
width: 100%;
z-index: 999;
position: relative;
padding-bottom: 30px;
img {
width: 100px;
}
> div {
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
svg {
font-size: 20px; font-size: 20px;
color: var(--white); color: var(--white);
padding: 10px; padding: 10px;
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 50%; border-radius: 50%;
}
} }
p {
} font-size: 14px;
p{ }
font-size: 16px; }
color: var(--white);
}
}
.FooterHeader{ .FooterHeader {
position: absolute; position: absolute;
top: -25%; top: -40%;
background: var(--thirdly); background: var(--thirdly);
width: 70%; width: 60%;
height: 150px; height: fit-content;
padding-block: 20px;
display: flex; display: flex;
justify-content: space-between; justify-content: center;
gap: 30px;
align-items: center; align-items: center;
flex-direction: column;
padding-inline: 5%; padding-inline: 10%;
color: var(--white); color: var(--white);
border-radius: 6px; > span {
>span{ display: flex;
display: flex; flex-direction: column;
flex-direction: column; gap: 10px;
gap: 10px; h1 {
p{ font-size: 20px;
font-weight: normal; }
} p {
font-size: 14px;
font-weight: normal;
}
} }
>div{ > div {
background: var(--white); background: var(--white);
width: 300px; width: 200px;
height: 40px;
display: flex;
padding: 5px;
gap: 10px;
.ant-input {
border: none;
height: 40px; height: 40px;
display: flex; all: unset;
padding: 5px; min-width: 140px;
gap: 10px; color: var(--text);
.ant-input{ &::placeholder {
border: none; font-size: 10px;
height: 40px;
all: unset;
min-width: 240px;
color: var(--text);
&::placeholder{
font-size: 10px;
}
} }
div{ }
background: var(--thirdly); div {
width: 50px; background: var(--thirdly);
display: flex; width: 50px;
justify-content: center;
align-items: center;
border-radius: 5px;
cursor: pointer;
svg{
font-size: 30px;
width: 30px;
}
}
}
}
@media screen and (max-width:900px) {
.Footer{
background: var(--primary);
height: 330px;
display: flex; display: flex;
flex-direction: column; justify-content: center;
justify-content: end;
align-items: center; align-items: center;
gap: 30px; border-radius: 5px;
margin-top: 250px; cursor: pointer;
width: 100%; }
z-index: 999; }
position: relative; }
padding-bottom: 30px; }
img{
width: 100px;
}
>div{
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
svg{
font-size: 20px;
color: var(--white);
padding: 10px;
border: 1px solid var(--white);
border-radius: 50%;
}
}
p{
font-size: 14px;
}
}
.FooterHeader{
position: absolute;
top: -40%;
background: var(--thirdly);
width: 60%;
height: fit-content;
padding-block: 20px;
display: flex;
justify-content: center;
gap: 30px;
align-items: center;
flex-direction: column;
padding-inline: 10%;
color: var(--white);
>span{
display: flex;
flex-direction: column;
gap: 10px;
h1{
font-size: 20px;
}
p{
font-size: 14px;
font-weight: normal;
}
}
>div{
background: var(--white);
width: 200px;
height: 40px;
display: flex;
padding: 5px;
gap: 10px;
.ant-input{
border: none;
height: 40px;
all: unset;
min-width: 140px;
color: var(--text);
&::placeholder{
font-size: 10px;
}
}
div{
background: var(--thirdly);
width: 50px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 5px;
cursor: pointer;
}
}
}
}

View File

@ -11,6 +11,3 @@
// z-index: 1000; // z-index: 1000;
// background: black; // background: black;
// } // }

View File

@ -1,111 +1,103 @@
.NavBar{ .NavBar {
background-color: var(--primary); background-color: var(--primary);
color: var(--white); color: var(--white);
display: flex;
justify-content: space-between;
align-items: center;
padding: max(3vh, 10px) max(50px, 4vw);
position: fixed;
width: calc(100% - 100px);
z-index: 999999999;
font-size: max(20px, 1.5vw);
img,
svg {
width: 60px;
font-size: 30px;
}
> ul {
display: flex; display: flex;
justify-content: space-between; li {
align-items: center; all: unset;
padding: max(3vh,10px) max(50px,4vw); cursor: pointer;
position: fixed; transition: 0.5s ease-in-out;
width: calc(100% - 100px); &:hover {
z-index: 999999999; scale: 1.1;
font-size: max(20px , 1.5vw); }
img,svg{
width: 60px;
font-size: 30px;
} }
>ul{ }
.NavBarLinks {
display: flex;
gap: max(20px, 2vw);
display: flex; a {
li{ color: var(--white) !important;
all: unset; opacity: 0.6;
cursor: pointer; transition: 0.5s ease-in-out;
transition: .5s ease-in-out; font-weight: normal;
&:hover{ font-size: 18px;
scale: 1.1; &:hover {
color: var(--secondary) !important;
} scale: 1.1;
} opacity: 1;
}
} }
.NavBarLinks{ .activeLink {
display: flex; a {
gap: max(20px,2vw); color: var(--thirdly) !important;
opacity: 1;
a{ }
color: var(--white) !important;
opacity: .6;
transition: .5s ease-in-out;
font-weight: normal;
font-size: 18px;
&:hover{
color: var(--secondary) !important;
scale: 1.1;
opacity: 1;
}
}
.activeLink{
a{
color: var(--thirdly) !important;
opacity: 1;
}
}
} }
>div{ }
article{ > div {
&:nth-child(2){ article {
display: none; &:nth-child(2) {
} display: none;
} }
} }
}
} }
@media screen and (max-width: 900px) {
.NavBar {
@media screen and (max-width:900px) { .NavBarLinks {
.NavBar{ display: none !important;
.NavBarLinks{
display: none !important;
}
>div{
display: flex;
article{
&:nth-child(2){
display: block;
}
}
}
} }
> div {
display: flex;
article {
&:nth-child(2) {
display: block;
}
}
}
}
} }
.NavBarContent{ .NavBarContent {
position: relative; position: relative;
z-index: 9999999999; z-index: 9999999999;
background: var(--thirdly); background: var(--thirdly);
width: 150px; width: 150px;
min-height: 200px; min-height: 200px;
padding-top: 20px; padding-top: 20px;
.NavBarLinks{ .NavBarLinks {
all: unset; all: unset;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
color: var(--white); color: var(--white);
li{ li {
border-bottom: 1px solid var(--white); border-bottom: 1px solid var(--white);
padding: 10px; padding: 10px;
&:last-child{ &:last-child {
border: none; border: none;
} }
}
} }
}
}
.ant-popover,
.ant-popover-inner {
padding: 0 !important;
z-index: 999;
margin-inline: 30px;
} }
.ant-popover,.ant-popover-inner{
padding: 0 !important;
z-index: 999;
margin-inline: 30px;
}

View File

@ -1,25 +1,23 @@
.transition-overlay { .transition-overlay {
position: fixed; position: fixed;
top: 100%; top: 100%;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: red; background-color: red;
z-index: 1000; z-index: 1000;
pointer-events: none; pointer-events: none;
transition: top 1s ease-in-out; transition: top 1s ease-in-out;
} }
/* Exit Animation: Moves up */ /* Exit Animation: Moves up */
.transition-overlay.exit { .transition-overlay.exit {
top: 0; top: 0;
} }
/* Entrance Animation: Moves down */ /* Entrance Animation: Moves down */
.transition-overlay.enter { .transition-overlay.enter {
top: -100%; top: -100%;
transition: top 1s ease-in-out; transition: top 1s ease-in-out;
top: 100%; top: 100%;
} }

View File

@ -1,6 +1,6 @@
@import './FirstLoading.scss'; @import './FirstLoading.scss';
@import './Layout.scss'; @import './Layout.scss';
@import "./PageTransition.scss"; @import './PageTransition.scss';
@import './NavBar.scss'; @import './NavBar.scss';
@import './Footer.scss'; @import './Footer.scss';
@import './BackToTop.scss'; @import './BackToTop.scss';

View File

@ -1,170 +1,162 @@
.ContactPage{ .ContactPage {
background: var(--bg); background: var(--bg);
display: flex;
padding-inline: 5%;
gap: 30px;
width: 80%;
margin-bottom: 100px;
margin-inline: auto;
.Right {
display: flex; display: flex;
flex-direction: column;
padding-inline: 5%; gap: 10px;
gap: 30px;
width: 80%; .Forms {
margin-bottom: 100px; display: flex;
margin-inline: auto; flex-wrap: wrap;
.Right{ gap: 1%;
max-width: 100%;
.ValidationField {
min-width: 48%;
margin-bottom: 20px;
.ant-input {
min-height: 50px;
}
}
.TextAreaField {
min-width: 97%;
}
}
button {
all: unset;
padding: 14px 30px;
display: flex;
align-items: center;
gap: max(1vw, 10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 7px;
// background-image: linear-gradient(45deg, #55B9E3, #5262E3);
background: var(--thirdly);
cursor: pointer;
transition: 0.5s ease-in-out;
&:hover {
scale: 1.1;
}
}
}
.Left {
display: flex;
flex-direction: column;
gap: 20px;
min-width: 40vw;
p {
color: var(--text);
}
> div {
display: flex;
flex-direction: column;
gap: 20px;
> span {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 10px; gap: 2px;
> div {
.Forms{ display: flex;
display: flex; align-items: center;
flex-wrap: wrap; gap: 10px;
gap: 1%; h6 {
max-width: 100%; font-size: 20px;
.ValidationField{ }
min-width: 48%; img {
margin-bottom: 20px; width: 18px;
.ant-input{ }
min-height: 50px;
}
}
.TextAreaField{
min-width: 97%;
}
} }
button{ p {
all: unset; font-size: 16px;
padding: 14px 30px; font-weight: normal;
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 7px;
// background-image: linear-gradient(45deg, #55B9E3, #5262E3);
background: var(--thirdly);
cursor: pointer;
transition: .5s ease-in-out;
&:hover{
scale: 1.1;
}
}
}
.Left{
display: flex;
flex-direction: column;
gap: 20px;
min-width: 40vw;
p{
color: var(--text);
}
>div{
display: flex;
flex-direction: column;
gap: 20px;
>span{
display: flex;
flex-direction: column;
gap: 2px;
>div{
display: flex;
align-items: center;
gap: 10px;
h6{
font-size: 20px;
}
img{
width: 18px;
}
}
p{
font-size: 16px;
font-weight: normal;
}
}
} }
}
} }
}
} }
@media screen and (max-width: 900px) {
@media screen and (max-width:900px) { .ContactPage {
.ContactPage{ background: var(--bg);
background: var(--bg); display: flex;
flex-direction: column;
padding-inline: 5%;
width: 90%;
margin-block: 0 100px;
margin-inline: auto;
gap: 10px;
.Right {
display: flex;
flex-direction: column;
gap: 20px;
.Forms {
display: flex;
flex-wrap: wrap;
gap: 1%;
max-width: 100%;
.ValidationField {
min-width: 100%;
margin-bottom: 20px;
.ant-input {
min-height: 50px;
}
}
.TextAreaField {
min-width: 100%;
}
}
button {
all: unset;
padding: 14px 30px;
display: flex;
align-items: center;
gap: max(1vw, 10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 7px;
background: var(--thirdly);
// background-image: linear-gradient(45deg, #55B9E3, #5262E3);
}
}
.Left {
display: flex;
flex-direction: column;
gap: 20px;
p {
color: var(--text);
}
> div {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding-inline: 5%;
width: 90%;
margin-block: 0 100px;
margin-inline: auto;
gap: 10px; gap: 10px;
.Right{ > span {
display: flex;
flex-direction: column;
gap: 0px;
> div {
display: flex; display: flex;
flex-direction: column; align-items: center;
gap: 20px; gap: 10px;
.Forms{ h6 {
display: flex; font-size: 18px;
flex-wrap: wrap;
gap: 1%;
max-width: 100%;
.ValidationField{
min-width: 100%;
margin-bottom: 20px;
.ant-input{
min-height: 50px;
}
}
.TextAreaField{
min-width: 100%;
}
} }
button{ img {
all: unset; width: 15px;
padding: 14px 30px;
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 7px;
background: var(--thirdly);
// background-image: linear-gradient(45deg, #55B9E3, #5262E3);
}
}
.Left{
display: flex;
flex-direction: column;
gap: 20px;
p{
color: var(--text);
}
>div{
display: flex;
flex-direction: column;
gap: 10px;
>span{
display: flex;
flex-direction: column;
gap: 0px;
>div{
display: flex;
align-items: center;
gap: 10px;
h6{
font-size: 18px;
}
img{
width: 15px;
}
}
p{
font-size: 14px;
font-weight: normal;
}
}
} }
}
p {
font-size: 14px;
font-weight: normal;
}
} }
}
} }
}
} }

View File

@ -1,193 +1,178 @@
.DownloadPage{ .DownloadPage {
background: var(--bg);
display: flex;
gap: 50px;
width: 100%;
padding-block: 100px;
position: relative;
flex-direction: column;
> main {
position: relative;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
gap: max(2vh, 25px);
text-align: center;
z-index: 99;
padding-top: 0px;
> h1 {
display: flex;
align-items: center;
gap: 20px;
color: var(--white);
font-size: max(4vw, 50px);
}
p {
color: var(--white);
font-size: max(1.3vw, 15px);
width: 50%;
}
> div {
display: flex;
gap: max(1vw, 10px);
button {
all: unset;
padding: max(0.5vw, 8px) max(1.5vw, 30px);
display: flex;
align-items: center;
gap: max(1vw, 10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: 0.5s ease-in-out;
padding-block: 10px;
&:hover {
background: var(--thirdly);
scale: 1.1;
}
h6 {
font-size: max(10px, 1vw);
font-weight: normal;
line-height: 21px;
}
h5 {
font-weight: bold;
font-size: max(12px, 1vw);
line-height: 21px;
}
svg {
font-size: max(20px, 1.3vw);
}
}
}
}
> div {
position: absolute;
z-index: 1;
top: 0;
width: 100%;
height: 700px;
background: var(--primary);
overflow: hidden;
.circle {
position: absolute;
width: 66%;
top: 0%;
left: 50%;
transform: translate(-50%, 0%);
z-index: 9999;
}
}
.main {
position: relative;
z-index: 99999;
// margin-top: 300px;
width: 80%;
object-fit: contain;
margin-inline: auto;
}
}
@media screen and (max-width: 900px) {
.DownloadPage {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
gap: 50px; gap: 40px;
width: 100%; width: 100%;
padding-block: 100px; padding-block: 50px;
position: relative; position: relative;
flex-direction: column; flex-direction: column;
>main{ > main {
position: relative; position: relative;
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: max(2vh,25px); gap: max(2vh, 15px);
text-align: center; text-align: center;
z-index: 99; z-index: 99;
padding-top: 0px ; padding-top: 50px;
>h1{ > h1 {
display: flex;
align-items: center;
gap: 20px;
color: var(--white);
font-size: max(4vw,50px);
}
p{
color: var(--white);
font-size: max(1.3vw,15px);
width: 50%;
}
>div{
display: flex;
gap: max(1vw,10px);
button{
all: unset;
padding: max(.5vw,8px) max(1.5vw,30px);
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: .5s ease-in-out;
padding-block: 10px;
&:hover{
background: var(--thirdly);
scale: 1.1;
}
h6{
font-size: max(10px,1vw);
font-weight: normal;
line-height: 21px;
}
h5{
font-weight: bold;
font-size: max(12px,1vw);
line-height: 21px;
}
svg{
font-size: max(20px,1.3vw);
}
}
}
}
>div{
position: absolute;
z-index: 1;
top: 0;
width: 100%;
height: 700px;
background: var(--primary);
overflow: hidden;
.circle{
position: absolute;
width: 66%;
top: 0%;
left: 50%;
transform: translate(-50%,0%);
z-index: 9999;
}
}
.main{
position: relative;
z-index: 99999;
// margin-top: 300px;
width: 80%;
object-fit: contain;
margin-inline: auto;
}
}
@media screen and (max-width:900px) {
.DownloadPage{
background: var(--bg);
display: flex; display: flex;
gap: 40px; align-items: center;
width: 100%; gap: 10px;
padding-block: 50px; color: var(--white);
position: relative; font-size: 6vw;
flex-direction: column; }
p {
>main{ color: var(--white);
position: relative; font-size: 4vw;
width: 100%; width: 80%;
display: flex; }
flex-direction: column; > div {
align-items: center; display: flex;
gap: max(2vh,15px); gap: max(1vw, 10px);
text-align: center; button {
z-index: 99; all: unset;
padding-top: 50px ; padding: max(0.5vw, 8px) max(1.5vw, 30px);
>h1{ display: flex;
display: flex; align-items: center;
align-items: center; gap: max(1vw, 10px);
gap: 10px; color: var(--white);
color: var(--white); border: 1px solid var(--white);
font-size: 6vw; border-radius: 10px;
cursor: pointer;
} h6 {
p{ font-size: max(12px, 1vw);
color: var(--white); }
font-size: 4vw; h5 {
width: 80%; font-weight: bold;
} font-size: max(14px, 1vw);
>div{ }
display: flex; svg {
gap: max(1vw,10px); font-size: max(20px, 1.3vw);
button{ }
all: unset;
padding: max(.5vw,8px) max(1.5vw,30px);
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
h6{
font-size: max(12px,1vw);
}
h5{
font-weight: bold;
font-size: max(14px,1vw);
}
svg{
font-size: max(20px,1.3vw);
}
}
}
} }
>div{ }
position: absolute;
z-index: 1;
top: 0;
width: 100%;
height: 630px;
background: var(--primary);
overflow: hidden;
.circle{
position: absolute;
width: 800px;
top: 0%;
left: 50%;
transform: translate(-50%,0%);
z-index: 1;
}
}
.main{
position: relative;
z-index: 3;
// margin-top: 300px;
width: 100%;
object-fit: contain;
margin-inline: auto;
}
} }
> div {
} position: absolute;
z-index: 1;
top: 0;
width: 100%;
height: 630px;
background: var(--primary);
overflow: hidden;
.circle {
position: absolute;
width: 800px;
top: 0%;
left: 50%;
transform: translate(-50%, 0%);
z-index: 1;
}
}
.main {
position: relative;
z-index: 3;
// margin-top: 300px;
width: 100%;
object-fit: contain;
margin-inline: auto;
}
}
}

View File

@ -1,130 +1,127 @@
.FeaturesPage{ .FeaturesPage {
background: var(--bg);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 20px;
width: 100%;
margin-bottom: 100px;
> h1 {
font-size: 3vw;
color: #000;
}
> p {
font-weight: 500;
font-size: 1.2vw;
text-wrap: pretty;
width: 52%;
text-align: center;
color: var(--text);
}
> div {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
gap: 40px;
> img {
width: 400px;
}
> span {
display: flex;
flex-wrap: wrap;
max-width: 45%;
gap: 50px;
article {
display: flex;
align-items: center;
gap: 20px;
max-width: 40%;
img {
width: 55px;
object-fit: contain;
}
div {
h4 {
font-size: max(1.2vw, 16px);
color: var(--black);
}
p {
font-weight: normal;
font-size: max(0.8vw, 16px);
line-height: 30px;
}
}
}
}
}
}
@media screen and (max-width: 900px) {
.FeaturesPage {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 20px; gap: 30px;
width: 100%; width: 100%;
margin-bottom: 100px; margin-block: 50px;
>h1{ > h1 {
font-size: 3vw; font-size: 8vw;
color: #000; color: var(--text);
} }
>p{ > p {
font-weight: 500; font-weight: 500;
font-size: 1.2vw; font-size: 3vw;
text-wrap: pretty; text-wrap: pretty;
width: 52%; width: 60%;
text-align: center; text-align: center;
color: var(--text); color: var(--text);
} }
>div{ > div {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column-reverse;
width: 100%;
gap: 40px;
> img {
width: 300px;
}
> span {
display: flex; display: flex;
justify-content: center;
align-items: center; align-items: center;
width: 100%; justify-content: center;
gap: 40px; flex-wrap: wrap;
>img{ width: 100% !important;
width: 400px; max-width: 90%;
}
>span{
display: flex;
flex-wrap: wrap;
max-width: 45%;
gap: 50px;
article{
display: flex;
align-items: center;
gap: 20px;
max-width: 40%;
img{
width: 55px;
object-fit: contain;
}
div{
h4{
font-size: max(1.2vw,16px);
color: var(--black);
}
p{
font-weight: normal;
font-size: max(.8vw,16px);
line-height:30px;
}
}
}
}
}
}
@media screen and (max-width:900px) { gap: 50px;
.FeaturesPage{ article {
background: var(--bg); display: flex;
display: flex; align-items: center;
flex-direction: column; flex-direction: column;
align-items: center; justify-content: center;
justify-content: center; gap: 20px;
gap: 30px; max-width: 90% !important;
width: 100%; img {
margin-block: 50px; width: 50px;
>h1{ object-fit: contain;
font-size: 8vw; }
color: var(--text); div {
}
>p{
font-weight: 500;
font-size: 3vw;
text-wrap: pretty;
width: 60%;
text-align: center; text-align: center;
color: var(--text); h4 {
} font-size: max(1.2vw, 16px);
>div{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column-reverse;
width: 100%;
gap: 40px;
>img{
width: 300px;
} }
>span{ p {
display: flex;align-items: center;justify-content: center; font-weight: normal;
flex-wrap: wrap; font-size: max(1vw, 14px);
width: 100% !important;
max-width: 90%;
gap: 50px;
article{
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
gap: 20px;
max-width: 90% !important;
img{
width: 50px;
object-fit: contain;
}
div{
text-align: center;
h4{
font-size: max(1.2vw,16px);
}
p{
font-weight: normal;
font-size: max(1vw,14px);
}
}
}
} }
}
} }
}
} }
}
} }

View File

@ -1,209 +1,187 @@
.HomePage{ .HomePage {
min-height: 100vh;
background: var(--primary);
position: relative;
overflow: hidden;
margin-bottom: 20px;
> main {
position: relative;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: max(12vh, 120px);
gap: 0px;
z-index: 99;
> h1 {
display: flex;
align-items: center;
gap: 20px;
color: var(--white);
font-size: max(3vw, 40px);
h2 {
color: var(--secondary);
font-size: max(3vw, 40px);
}
}
p {
color: var(--white);
font-size: max(1.5vw, 15px);
margin-bottom: 10px;
}
> div {
display: flex;
gap: max(1vw, 10px);
button {
all: unset;
padding: max(0.5vw, 8px) max(1.5vw, 30px);
display: flex;
align-items: center;
gap: max(1vw, 10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: 0.5s ease-in-out;
padding-block: 10px;
&:hover {
background: var(--thirdly);
scale: 1.1;
}
h6 {
font-size: max(10px, 1vw);
font-weight: normal;
line-height: 21px;
}
h5 {
font-weight: bold;
font-size: max(12px, 1vw);
line-height: 21px;
}
svg {
font-size: max(20px, 1.3vw);
}
}
}
}
.shape {
position: absolute;
bottom: -18%;
width: 100%;
height: 300px;
min-height: 60vh;
object-fit: cover;
}
.circle {
position: absolute;
width: 66%;
top: 73%;
left: 50%;
transform: translate(-50%, -50%);
}
.slider {
position: absolute;
width: 50%;
top: 74%;
left: 50%;
transform: translate(-50%, -50%);
}
}
@media screen and (max-width: 900px) {
.HomePage {
min-height: 100vh; min-height: 100vh;
background: var(--primary); background: var(--primary);
position: relative; position: relative;
overflow: hidden; overflow: hidden;
margin-bottom: 20px; padding-bottom: 120px;
>main{ > main {
position: relative; position: relative;
width: 100%; width: 90%;
margin-inline: auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: max(11vh, 100px);
gap: 0px;
z-index: 99;
> h1 {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 0px;
color: var(--white);
font-size: max(4vw, 20px);
h2 {
color: var(--secondary);
font-size: max(4vw, 22px);
}
}
p {
color: var(--white);
font-size: max(3vw, 14px);
width: 94%;
text-align: center;
}
> div {
display: flex;
gap: max(1vw, 10px);
button {
all: unset;
padding: max(0.5vw, 8px) max(1.5vw, 20px);
display: flex;
align-items: center;
gap: max(1vw, 10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: 0.5s ease-in-out;
padding-block: 8px;
// width: 90% !important;
&:hover {
background: var(--thirdly);
scale: 1.1;
}
h6 {
font-size: max(10px, 1vw);
font-weight: normal;
line-height: 15px;
}
h5 {
font-weight: bold;
font-size: max(12px, 1vw);
line-height: 15px;
}
div:has(svg) {
display: flex; display: flex;
flex-direction: column;
align-items: center;
justify-content: center; justify-content: center;
margin-top: max(12vh,120px); align-items: center;
gap:0px; }
svg {
z-index: 99; font-size: max(20px, 1.3vw);
>h1{ }
display: flex; }
align-items: center; }
gap: 20px;
color: var(--white);
font-size: max(3vw,40px);
h2{
color: var(--secondary);
font-size: max(3vw,40px);
}
}
p{
color: var(--white);
font-size: max(1.5vw,15px);
margin-bottom: 10px;
}
>div{
display: flex;
gap: max(1vw,10px);
button{
all: unset;
padding: max(.5vw,8px) max(1.5vw,30px);
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: .5s ease-in-out;
padding-block: 10px;
&:hover{
background: var(--thirdly);
scale: 1.1;
}
h6{
font-size: max(10px,1vw);
font-weight: normal;
line-height: 21px;
}
h5{
font-weight: bold;
font-size: max(12px,1vw);
line-height: 21px;
}
svg{
font-size: max(20px,1.3vw);
}
}
}
} }
.shape{ .shape {
position: absolute; display: none;
bottom: -18%; }
width: 100%; .circle {
height: 300px; position: absolute;
min-height: 60vh; width: 800px;
top: 500px;
object-fit: cover; }
.slider {
position: absolute;
} width: 600px;
.circle{ top: 600px;
position: absolute; }
width: 66%; }
top: 73%;
left: 50%;
transform: translate(-50%,-50%);
}
.slider{
position: absolute;
width: 50%;
top: 74%;
left: 50%;
transform: translate(-50%,-50%);
}
} }
@media screen and (max-width:900px) {
.HomePage{
min-height: 100vh;
background: var(--primary);
position: relative;
overflow: hidden;
padding-bottom: 120px;
>main{
position: relative;
width: 90%;
margin-inline: auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: max(11vh,100px);
gap: 0px;
z-index: 99;
>h1{
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 0px;
color: var(--white);
font-size: max(4vw,20px);
h2{
color: var(--secondary);
font-size: max(4vw,22px);
}
}
p{
color: var(--white);
font-size: max(3vw,14px);
width: 94%;
text-align: center;
}
>div{
display: flex;
gap: max(1vw,10px);
button{
all: unset;
padding: max(.5vw,8px) max(1.5vw,20px);
display: flex;
align-items: center;
gap: max(1vw,10px);
color: var(--white);
border: 1px solid var(--white);
border-radius: 10px;
cursor: pointer;
transition: .5s ease-in-out;
padding-block: 8px;
// width: 90% !important;
&:hover{
background: var(--thirdly);
scale: 1.1;
}
h6{
font-size: max(10px,1vw);
font-weight: normal;
line-height: 15px;
}
h5{
font-weight: bold;
font-size: max(12px,1vw);
line-height: 15px;
}
div:has(svg){
display: flex;
justify-content: center;
align-items: center;
}
svg{
font-size: max(20px,1.3vw);
}
}
}
}
.shape{
display: none;
}
.circle{
position: absolute;
width: 800px;
top: 500px;
}
.slider{
position: absolute;
width: 600px;
top: 600px;
}
}
}

View File

@ -1,145 +1,138 @@
.HowItWork{ .HowItWork {
background: var(--bg);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 20px;
width: 100%;
margin-bottom: 100px;
> h1 {
font-size: 3vw;
color: #000;
}
> p {
font-weight: 500;
font-size: 1.2vw;
text-wrap: pretty;
width: 52%;
text-align: center;
color: var(--text);
}
> div {
display: flex;
justify-content: center;
width: 80%;
gap: 40px;
margin-top: 40px;
> img {
width: 600px;
}
> span {
display: flex;
flex-direction: column;
justify-content: space-between;
max-width: 100%;
height: 100%;
gap: 100px;
padding-block: 10%;
article {
display: flex;
align-items: center;
gap: 20px;
max-width: 100%;
img {
width: 50px;
object-fit: contain;
}
div {
width: 100% !important;
h4 {
font-size: max(1.2vw, 16px);
}
p {
font-weight: normal;
font-size: max(1vw, 14px);
width: 100%;
}
}
}
}
}
}
@media screen and (max-width: 900px) {
.HowItWork {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 20px; gap: 30px;
width: 100%; width: 100%;
margin-bottom: 100px; margin-block: 100px;
>h1{ > h1 {
font-size: 3vw; font-size: 7vw;
color: #000; color: var(--text);
} }
>p{ > p {
font-weight: 500; font-weight: 500;
font-size: 1.2vw; font-size: 3vw;
text-wrap: pretty; text-wrap: pretty;
width: 52%; width: 60%;
text-align: center; text-align: center;
color: var(--text); color: var(--text);
} }
>div{ > div {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column;
width: 80%; align-items: center;
gap: 40px; width: 80%;
margin-top: 40px; gap: 40px;
>img{ margin-top: 40px;
width: 600px; > img {
} width: 300px;
>span{ order: 0;
display: flex; }
flex-direction: column; > span {
justify-content: space-between; order: 2;
max-width: 100%;
height: 100%;
gap: 100px;
padding-block: 10%;
article{
display: flex;
align-items: center;
gap: 20px;
max-width: 100%;
img{
width: 50px;
object-fit: contain;
}
div{
width: 100% !important;
h4{
font-size: max(1.2vw,16px);
}
p{
font-weight: normal;
font-size: max(1vw,14px);
width: 100%;
}
}
}
}
}
}
@media screen and (max-width:900px) {
.HowItWork{
background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; justify-content: space-between;
justify-content: center; min-width: 100%;
gap: 30px; height: 100%;
width: 100%; gap: 20px;
margin-block: 100px; padding-block: 0%;
>h1{ article {
font-size: 7vw; display: flex;
color: var(--text); flex-direction: column;
} align-items: flex-start;
>p{ gap: 20px;
font-weight: 500; max-width: 100%;
font-size: 3vw; background: var(--bg2);
text-wrap: pretty; padding: 20px;
width: 60%; img {
text-align: center; width: 50px;
color: var(--text); object-fit: contain;
} }
>div{ div {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
width: 80%; width: 80%;
gap: 40px; h4 {
margin-top: 40px; font-size: max(1.2vw, 16px);
>img{
width: 300px;
order: 0;
} }
>span{ p {
order: 2; font-weight: normal;
display: flex; font-size: max(1vw, 14px);
flex-direction: column; width: 100%;
justify-content: space-between;
min-width: 100%;
height: 100%;
gap: 20px;
padding-block: 0%;
article{
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 20px;
max-width: 100%;
background: var(--bg2);
padding:20px;
img{
width: 50px;
object-fit: contain;
}
div{
width: 80%;
h4{
font-size: max(1.2vw,16px);
}
p{
font-weight: normal;
font-size: max(1vw,14px);
width: 100%;
}
}
}
} }
}
} }
}
} }
} }
}

View File

@ -1,122 +1,119 @@
.NotePage{ .NotePage {
background: var(--bg2);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 20px;
width: 100%;
padding-block: 100px;
> h1 {
font-size: 3vw;
color: #000;
}
> p {
font-weight: 500;
font-size: 1.2vw;
text-wrap: pretty;
width: 52%;
text-align: center;
color: var(--text);
}
> div {
display: flex;
justify-content: center;
align-items: center;
gap: 40px;
padding-block: 30px;
article {
width: 40vw;
max-width: 450px;
display: flex;
flex-direction: column;
gap: 30px;
> div {
display: flex;
gap: 10px;
flex-direction: column;
padding: 30px 10px;
background: var(--bg);
position: relative;
.message_form {
position: absolute;
bottom: -10%;
}
}
> span {
display: flex;
align-items: center;
gap: 20px;
img {
width: 50px;
}
}
}
}
}
@media screen and (max-width: 900px) {
.NotePage {
background: var(--bg2); background: var(--bg2);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 20px; gap: 0px;
width: 100%; width: 100%;
padding-block: 100px; padding-block: 50px;
>h1{ > h1 {
font-size: 3vw; font-size: 5vw;
color: #000; color: var(--text);
} }
>p{ > p {
font-weight: 500; font-weight: 500;
font-size: 1.2vw; font-size: 3vw;
text-wrap: pretty; text-wrap: pretty;
width: 52%; width: 80%;
text-align: center; text-align: center;
color: var(--text); color: var(--text);
} }
>div{ > div {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
flex-direction: column;
gap: 40px; width: 90%;
padding-block: 30px; gap: 40px;
article{ padding-block: 30px;
width: 40vw; article {
max-width: 450px; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 30px; gap: 30px;
>div{ > div {
display: flex; display: flex;
gap: 10px; gap: 10px;
flex-direction: column; flex-direction: column;
padding: 30px 10px; padding: 30px 10px;
background: var(--bg); background: var(--bg);
position: relative; position: relative;
.message_form{ .message_form {
position: absolute; position: absolute;
bottom: -10% ; bottom: -8%;
} }
} }
>span{ > span {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 20px; gap: 20px;
img{ img {
width: 50px; width: 50px;
} }
} }
}
} }
}
} }
}
@media screen and (max-width:900px) {
.NotePage{
background: var(--bg2);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0px;
width: 100%;
padding-block: 50px;
>h1{
font-size: 5vw;
color: var(--text);
}
>p{
font-weight: 500;
font-size: 3vw;
text-wrap: pretty;
width: 80%;
text-align: center;
color: var(--text);
}
>div{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 90%;
gap: 40px;
padding-block: 30px;
article{
width: 100%;
display: flex;
flex-direction: column;
gap: 30px;
>div{
display: flex;
gap: 10px;
flex-direction: column;
padding: 30px 10px;
background: var(--bg);
position: relative;
.message_form{
position: absolute;
bottom: -8% ;
}
}
>span{
display: flex;
align-items: center;
gap: 20px;
img{
width: 50px;
}
}
}
}
}
}

View File

@ -1,52 +1,47 @@
.ScreenShoot{ .ScreenShoot {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 20px; gap: 20px;
width: 100%; width: 100%;
margin-bottom: 100px; margin-bottom: 100px;
position: relative; position: relative;
>h1{ > h1 {
font-size: 3vw; font-size: 3vw;
color: #000; color: #000;
} }
>p{ > p {
font-weight: 500; font-weight: 500;
font-size: 1.2vw; font-size: 1.2vw;
text-wrap: pretty; text-wrap: pretty;
width: 52%; width: 52%;
text-align: center; text-align: center;
color: var(--text); color: var(--text);
} }
.SwipeScreenShoot{ .SwipeScreenShoot {
color: white; color: white;
width: 88%; width: 88%;
margin-inline: auto; margin-inline: auto;
img{ img {
width: 250px; width: 250px;
margin-inline: auto; margin-inline: auto;
} }
} }
} }
.swiper-pagination-bullets.swiper-pagination-horizontal{ .swiper-pagination-bullets.swiper-pagination-horizontal {
transform: translateY(10px); transform: translateY(10px);
} }
.swiper-slide{ .swiper-slide {
display: flex; display: flex;
} }
@media screen and (max-width: 900px) {
.ScreenShoot {
@media screen and (max-width:900px) {
.ScreenShoot{
background: var(--bg); background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -56,40 +51,36 @@
width: 100%; width: 100%;
margin-block: 50px; margin-block: 50px;
position: relative; position: relative;
>h1{
font-size: 6vw;
color: var(--text);
}
>p{
font-weight: 500;
font-size: 12px;
text-wrap: pretty;
width: 80%;
text-align: center;
color: var(--text);
margin-bottom: 20px;
}
.SwipeScreenShoot{
color: white;
width: 80%;
margin-inline: auto; > h1 {
img{ font-size: 6vw;
color: var(--text);
}
> p {
font-weight: 500;
font-size: 12px;
text-wrap: pretty;
width: 80%;
text-align: center;
color: var(--text);
margin-bottom: 20px;
}
.SwipeScreenShoot {
color: white;
width: 80%;
margin-inline: auto;
img {
width: 280px; width: 280px;
margin-inline: auto; margin-inline: auto;
}
} }
}
.swiper-pagination-bullets.swiper-pagination-horizontal {
transform: translateY(10px);
}
.swiper-slide {
display: flex;
} }
} }
.swiper-pagination-bullets.swiper-pagination-horizontal{
transform: translateY(10px);
}
.swiper-slide{
display: flex;
}
}

View File

@ -1,150 +1,139 @@
.VideoPage{ .VideoPage {
background: var(--bg);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 30px;
width: 100%;
margin-bottom: 130px;
position: relative;
> img {
width: 100%;
object-fit: cover;
}
main {
position: absolute;
top: 30%;
left: 50%;
transform: translate(-50%, -50%);
color: var(--white);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
// gap: 10px ;
h1 {
font-size: 3vw;
}
p {
margin-bottom: 30px;
font-weight: normal;
}
img {
width: 80px;
object-fit: contain;
cursor: pointer;
}
}
> span {
position: absolute;
bottom: -13%;
display: flex;
justify-content: space-around;
align-items: center;
background: var(--white);
border-radius: 10px;
width: 80%;
z-index: 99;
min-height: 230px;
article {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 10px;
}
}
}
@media screen and (max-width: 900px) {
.VideoPage {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 30px; gap: 20px;
width: 100%; width: 100%;
margin-bottom: 130px; margin-bottom: 100px;
position: relative; position: relative;
>img{ > img {
width: 100%;
width: 100%; height: 600px;
object-fit: cover; object-fit: cover;
}
main{
position: absolute;
top:30%;
left: 50%;
transform: translate(-50%,-50%);
color: var(--white);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
// gap: 10px ;
h1{
font-size: 3vw;
}
p{
margin-bottom: 30px;
font-weight: normal;
}
img{
width: 80px;
object-fit: contain;
cursor: pointer;
}
} }
>span{
position: absolute; main {
bottom: -13%; position: absolute;
display: flex; top: 30%;
justify-content: space-around; left: 50%;
align-items: center; transform: translate(-50%, -50%);
background:var(--white); color: var(--white);
border-radius: 10px; display: flex;
width: 80%; flex-direction: column;
z-index: 99; align-items: center;
min-height: 230px; text-align: center;
article{ gap: 0px;
display: flex; width: 80%;
flex-direction: column; h1 {
align-items: center; font-size: 5vw;
text-align: center; }
gap: 10px; p {
} font-weight: normal;
line-height: 30px;
font-size: 3vw;
}
img {
width: 80px;
object-fit: contain;
cursor: pointer;
}
} }
} > span {
position: absolute;
bottom: -10%;
@media screen and (max-width:900px) { display: flex;
justify-content: space-around;
.VideoPage{ align-items: center;
background: var(--bg); flex-wrap: wrap;
background: var(--white);
border-radius: 10px;
width: 60%;
z-index: 99;
min-height: 200px;
padding: 40px 20px;
gap: 20px;
article {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; text-align: center;
gap: 20px; gap: 10px;
width: 100%; min-width: 30%;
margin-bottom: 100px; img {
position: relative; width: 30px;
>img{
width: 100%;
height: 600px;
object-fit: cover;
}
main{
position: absolute;
top:30%;
left: 50%;
transform: translate(-50%,-50%);
color: var(--white);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 0px;
width: 80%;
h1{
font-size: 5vw;
}
p{
font-weight: normal;
line-height: 30px;
font-size: 3vw;
}
img{
width: 80px;
object-fit: contain;
cursor: pointer;
}
} }
>span{ h4 {
position: absolute; font-size: 16px;
bottom: -10%;
display: flex;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
background:var(--white);
border-radius: 10px;
width: 60%;
z-index: 99;
min-height: 200px;
padding: 40px 20px;
gap: 20px;
article{
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 10px;
min-width: 30%;
img{
width: 30px;
}
h4{
font-size: 16px;
}
p{
font-size: 13px;
}
}
} }
p {
font-size: 13px;
}
}
} }
}
}
}

View File

@ -5,4 +5,4 @@
@import './ScreenShoot.scss'; @import './ScreenShoot.scss';
@import './NotePage.scss'; @import './NotePage.scss';
@import './DownloadPage.scss'; @import './DownloadPage.scss';
@import './ContactPage.scss' @import './ContactPage.scss';

View File

@ -14,19 +14,19 @@
"available_on": "متاح على", "available_on": "متاح على",
"google_play": "جوجل بلاي", "google_play": "جوجل بلاي",
"Friendly_Online_Support": "دعم ودود عبر الإنترنت", "Friendly_Online_Support": "دعم ودود عبر الإنترنت",
"Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات.", "Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات.",
"Unlimited_Features": "ميزات غير محدودة", "Unlimited_Features": "ميزات غير محدودة",
"Enjoy_limitless_possibilities_to_customize_your_experience": "استمتع بإمكانيات غير محدودة لتخصيص تجربتك.", "Enjoy_limitless_possibilities_to_customize_your_experience": "استمتع بإمكانيات غير محدودة لتخصيص تجربتك.",
"Modular_and_Switchable_Component": "مكون معياري وقابل للتبديل", "Modular_and_Switchable_Component": "مكون معياري وقابل للتبديل",
"Easily_switch_between_layouts_and_even_demos": "تبديل بين التخطيطات وحتى العروض التوضيحية بسهولة.", "Easily_switch_between_layouts_and_even_demos": "تبديل بين التخطيطات وحتى العروض التوضيحية بسهولة.",
"High_Resolution": "دقة عالية", "High_Resolution": "دقة عالية",
"Get_high_quality_images_and_videos": "احصل على جودة صور وفيديو عالية الدقة.", "Get_high_quality_images_and_videos": "احصل على جودة صور وفيديو عالية الدقة.",
"Social_Sharing": "مشاركة اجتماعية", "Social_Sharing": "مشاركة اجتماعية",
"Easily_share_content_across_social_media_platforms": "سهولة مشاركة المحتوى عبر منصات التواصل الاجتماعي.", "Easily_share_content_across_social_media_platforms": "سهولة مشاركة المحتوى عبر منصات التواصل الاجتماعي.",
"Use_on_Any_Device": "استخدم على أي جهاز", "Use_on_Any_Device": "استخدم على أي جهاز",
"Compatibility_with_all_devices_for_a_seamless_experience": "توافق مع جميع الأجهزة لضمان تجربة سلسة.", "Compatibility_with_all_devices_for_a_seamless_experience": "توافق مع جميع الأجهزة لضمان تجربة سلسة.",
"Creative_Design": "التصميم الإبداعي", "Creative_Design": "التصميم الإبداعي",
"Attractive_and_innovative_design_that_meets_your_needs": "تصميم جذاب وابتكاري يلبي احتياجاتك.", "Attractive_and_innovative_design_that_meets_your_needs": "تصميم جذاب وابتكاري يلبي احتياجاتك.",
"Providing_professional_value_objectively_with_varied_web_readiness_Collaborative_wireless_customer_service_without_targeted_incentives_for_change_Collaboration" :"تقديم قيمة احترافية بموضوعية مع جاهزية متنوعة للويب. نقل خدمة العملاء اللاسلكية بشكل تعاوني دون محفزات موجهة نحو الهدف للتغيير. التعاون.", "Providing_professional_value_objectively_with_varied_web_readiness_Collaborative_wireless_customer_service_without_targeted_incentives_for_change_Collaboration": "تقديم قيمة احترافية بموضوعية مع جاهزية متنوعة للويب. نقل خدمة العملاء اللاسلكية بشكل تعاوني دون محفزات موجهة نحو الهدف للتغيير. التعاون.",
"Application_Features":"ميزات التطبيق" "Application_Features": "ميزات التطبيق"
} }

View File

@ -8,20 +8,20 @@
"available_on": "Available on", "available_on": "Available on",
"google_play": "Google Play", "google_play": "Google Play",
"Friendly_Online_Support": "Friendly Online Support", "Friendly_Online_Support": "Friendly Online Support",
"Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries": "Providing round-the-clock technical support to assist you with any inquiries.", "Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries": "Providing round-the-clock technical support to assist you with any inquiries.",
"Unlimited_Features": "Unlimited Features", "Unlimited_Features": "Unlimited Features",
"Enjoy_limitless_possibilities_to_customize_your_experience": "Enjoy limitless possibilities to customize your experience.", "Enjoy_limitless_possibilities_to_customize_your_experience": "Enjoy limitless possibilities to customize your experience.",
"Modular_and_Switchable_Component": "Modular and Switchable Component", "Modular_and_Switchable_Component": "Modular and Switchable Component",
"Easily_switch_between_layouts_and_even_demos": "Easily switch between layouts and even demos.", "Easily_switch_between_layouts_and_even_demos": "Easily switch between layouts and even demos.",
"High_Resolution": "High Resolution", "High_Resolution": "High Resolution",
"Get_high_quality_images_and_videos": "Get high-quality images and videos.", "Get_high_quality_images_and_videos": "Get high-quality images and videos.",
"Social_Sharing": "Social Sharing", "Social_Sharing": "Social Sharing",
"Easily_share_content_across_social_media_platforms": "Easily share content across social media platforms.", "Easily_share_content_across_social_media_platforms": "Easily share content across social media platforms.",
"Use_on_Any_Device": "Use on Any Device", "Use_on_Any_Device": "Use on Any Device",
"Compatibility_with_all_devices_for_a_seamless_experience": "Compatibility with all devices for a seamless experience.", "Compatibility_with_all_devices_for_a_seamless_experience": "Compatibility with all devices for a seamless experience.",
"Creative_Design": "Creative Design", "Creative_Design": "Creative Design",
"Attractive_and_innovative_design_that_meets_your_needs": "Attractive and innovative design that meets your needs.", "Attractive_and_innovative_design_that_meets_your_needs": "Attractive and innovative design that meets your needs.",
"Application_Features": "Features of the Application", "Application_Features": "Features of the Application",
"Providing_professional_value_objectively_with_varied_web_readiness_Collaborative_wireless_customer_service_without_targeted_incentives_for_change_Collaboration": "Providing professional value objectively with diverse web readiness Transferring wireless customer service collaboratively without targeted incentives for change Collaboration", "Providing_professional_value_objectively_with_varied_web_readiness_Collaborative_wireless_customer_service_without_targeted_incentives_for_change_Collaboration": "Providing professional value objectively with diverse web readiness Transferring wireless customer service collaboratively without targeted incentives for change Collaboration",
"":"" "": ""
} }

View File

@ -1,6 +1,3 @@
import Logo from '../assets/core/logo.svg' import Logo from '../assets/core/logo.svg';
export { Logo };
export {
Logo
}