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

View File

@ -132,21 +132,18 @@
"rate": 4, "rate": 4,
"img": "/Note/1.png", "img": "/Note/1.png",
"name": "إليسا اسكندر" "name": "إليسا اسكندر"
}, },
"2": { "2": {
"description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة", "description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate": 4, "rate": 4,
"img": "/Note/1.png", "img": "/Note/1.png",
"name": "إليسا اسكندر" "name": "إليسا اسكندر"
}, },
"3": { "3": {
"description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة", "description": "تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة",
"rate": 4, "rate": 4,
"img": "/Note/1.png", "img": "/Note/1.png",
"name": "إليسا اسكندر" "name": "إليسا اسكندر"
} }
} }
}, },
@ -183,7 +180,6 @@
"title": "اشترك في نشرتنا الإخبارية", "title": "اشترك في نشرتنا الإخبارية",
"description": "نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا", "description": "نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا",
"privacy": "© زاكر 2024.جميع الحقوق محفوظة" "privacy": "© زاكر 2024.جميع الحقوق محفوظة"
}, },
"Links": { "Links": {
"google_play_link": "/", "google_play_link": "/",

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,7 +9,6 @@ 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 />

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,13 +1,10 @@
import {ContactPage as ContactPageData} from '../../../data.json' import { ContactPage as ContactPageData } from '../../../data.json';
const Left = () => { const Left = () => {
return ( return (
<div className='Left'> <div className="Left">
<h1> {ContactPageData.title} </h1> <h1> {ContactPageData.title} </h1>
<p> <p>{ContactPageData.description}</p>
{ContactPageData.description}
</p>
<div> <div>
{Object.entries(ContactPageData.Data)?.map((item, index) => { {Object.entries(ContactPageData.Data)?.map((item, index) => {
return ( return (
@ -18,13 +15,11 @@ const Left = () => {
</div> </div>
<p> {item[1].value} </p> <p> {item[1].value} </p>
</span> </span>
) );
})} })}
</div> </div>
</div> </div>
);
};
) export default Left;
}
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,21 +1,16 @@
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,22 +1,17 @@
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}
/> />

View File

@ -5,17 +5,15 @@ 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 ( return (
<div className='SwipeScreenShoot'> <div className="SwipeScreenShoot">
<Swiper <Swiper
modules={[Pagination, A11y, Autoplay]} modules={[Pagination, A11y, Autoplay]}
spaceBetween={20} spaceBetween={20}
autoplay={{ delay: 3000 }} // Configure autoplay options autoplay={{ delay: 3000 }} // Configure autoplay options
pagination={{ clickable: true }} pagination={{ clickable: true }}
// onSwiper={(swiper) => console.log(swiper)} // onSwiper={(swiper) => console.log(swiper)}
// onSlideChange={() => console.log('slide change')} // onSlideChange={() => console.log('slide change')}
@ -38,16 +36,15 @@ const SwipeScreenShoot = () => {
}} }}
> >
{ScreenShootData.Data.map((item, index) => { {ScreenShootData.Data.map((item, index) => {
return ( return (
<SwiperSlide key={index}> <SwiperSlide key={index}>
<img loading="lazy" src={item} alt={`Screenshot ${index + 1}`} /> <img loading="lazy" src={item} alt={`Screenshot ${index + 1}`} />
</SwiperSlide> </SwiperSlide>
) );
})} })}
</Swiper> </Swiper>
</div> </div>
); );
} };
export default SwipeScreenShoot; 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,11 +1,11 @@
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" />
@ -15,9 +15,7 @@ const Footer = () => {
<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>
@ -31,7 +29,7 @@ const Footer = () => {
</div> </div>
</span> </span>
</div> </div>
) );
}; };
export default Footer; export default Footer;

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;
@ -24,47 +23,50 @@ const NavBar: React.FC = () => {
{ 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 onClick={handleToggle} key={link.path} className={`${"activeLink"}`}> <li
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 = Active === "" && link.path === "#" ? true : Active === link.path; const isActive =
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>
@ -75,7 +77,6 @@ const NavBarContent = (
<FaEllipsis onClick={handleToggle} /> <FaEllipsis onClick={handleToggle} />
</Popover> </Popover>
</article> </article>
</div> </div>
</nav> </nav>
); );

View File

@ -37,9 +37,7 @@ const PageTransition: React.FC<PageTransitionProps> = ({ to, children }) => {
<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>
</> </>
); );
}; };

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

@ -41,18 +41,12 @@ const FirstLoading: React.FC<FirstLoadingProps> = ({ seconds,children }) => {
<> <>
<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>
</div> {pageUp && children}
{
pageUp && children
}
</> </>
); );
}; };

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,16 +1,14 @@
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) => { const handleClick = (href: string) => {
window.location.href = href 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>
@ -37,14 +35,22 @@ const DownloadPage = () => {
</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 ( return (
<div className='FeaturesPage' id='features'> <div className="FeaturesPage" id="features">
<h1> {Features.title} </h1> <h1> {Features.title} </h1>
<p> {Features.description}</p> <p> {Features.description}</p>
<div> <div>
<span> <span>
{Object.entries(Features.Data).map((item, index) => { {Object.entries(Features.Data).map((item, index) => {
console.log(item,"item"); console.log(item, 'item');
return ( return (
<article key={index}> <article key={index}>
<img loading="lazy" className='scale' src={item[1].img} alt={`${index}`} /> <img
loading="lazy"
className="scale"
src={item[1].img}
alt={`${index}`}
/>
<div> <div>
<h4> <h4>{item[1].title}</h4>
{item[1].title} <p>{item[1].description}</p>
</h4>
<p>
{item[1].description}
</p>
</div> </div>
</article> </article>
) );
})} })}
</span> </span>
<img loading="lazy" className='scale' src={Features.mainImage} alt="" /> <img loading="lazy" className="scale" src={Features.mainImage} alt="" />
</div> </div>
</div> </div>
) );
} };
export default FeaturesPage export default FeaturesPage;

View File

@ -1,17 +1,18 @@
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)}>
@ -34,11 +35,11 @@ const HomePage = () => {
</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}
</p>
<div> <div>
<span> <span>
{Object.entries(HowItWorkData.Data).slice(0,2).map((item, index) => { {Object.entries(HowItWorkData.Data)
.slice(0, 2)
.map((item, index) => {
return ( return (
<article key={index}> <article key={index}>
<img loading="lazy" className='scale' src={item[1].img} alt={`${index}`} /> <img
loading="lazy"
className="scale"
src={item[1].img}
alt={`${index}`}
/>
<div> <div>
<h4> <h4>{item[1].title}</h4>
{item[1].title} <p>{item[1].description}</p>
</h4>
<p>
{item[1].description}
</p>
</div> </div>
</article> </article>
) );
})} })}
</span> </span>
<img loading="lazy" className='scale' src="/HowItWorks/main.png" alt="" /> <img
loading="lazy"
className="scale"
src="/HowItWorks/main.png"
alt=""
/>
<span> <span>
{Object.entries(HowItWorkData.Data).slice(2,4).map((item, index) => { {Object.entries(HowItWorkData.Data)
.slice(2, 4)
.map((item, index) => {
return ( return (
<article key={index}> <article key={index}>
<img loading="lazy" src={item[1].img} alt={`${item[1].img}`} /> <img
loading="lazy"
src={item[1].img}
alt={`${item[1].img}`}
/>
<div> <div>
<h4> <h4>{item[1].title}</h4>
{item[1].title} <p>{item[1].description}</p>
</h4>
<p>
{item[1].description}
</p>
</div> </div>
</article> </article>
) );
})} })}
</span> </span>
</div> </div>
</div> </div>
) );
} };
export default HowItWork export default HowItWork;

View File

@ -1,23 +1,24 @@
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}
</p>
<div> <div>
{Object.entries(NotePageData.Data).map((item, index: number) => { {Object.entries(NotePageData.Data).map((item, index: number) => {
return ( 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=""
width={20}
/>
<p>{item[1].description}</p>
<Rate value={item[1].rate} /> <Rate value={item[1].rate} />
</div> </div>
<span> <span>
@ -25,12 +26,11 @@ const NotePage = () => {
<h5> {item[1].name} </h5> <h5> {item[1].name} </h5>
</span> </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> <h1> {ScreenShootData.title} </h1>
<p> <p>{ScreenShootData.description}</p>
{ScreenShootData.description}
</p>
<SwipeScreenShoot /> <SwipeScreenShoot />
</div> </div>
) );
} };
export default ScreenShoot export default ScreenShoot;

View File

@ -1,39 +1,37 @@
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 = () => { const handlePlayPause = () => {
setIsPlaying(!isPlaying); setIsPlaying(!isPlaying);
}; };
return ( return (
<div className='VideoPage'> <div className="VideoPage">
<img loading="lazy" src="/Video/video.png" alt="" /> <img loading="lazy" src="/Video/video.png" alt="" />
<main> <main>
<h1>{VideoPageData.title}</h1> <h1>{VideoPageData.title}</h1>
<p> <p>{VideoPageData.description}</p>
{VideoPageData.description}
</p>
<img loading="lazy" src={VideoPageData.mainImage} alt="" /> <img loading="lazy" src={VideoPageData.mainImage} alt="" />
</main> </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"
src={`/Video/${item[1].img}.png`}
alt={`${index}`}
/>
<h4>{item[1].number}</h4> <h4>{item[1].number}</h4>
<p>{item[1].title}</p> <p>{item[1].title}</p>
</article> </article>
))} ))}
</span> </span>
</div> </div>
); );
}; };

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);
@ -68,19 +66,18 @@ 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

@ -8,8 +8,7 @@
--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

@ -11,9 +11,6 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.spinner { .spinner {
} }

View File

@ -13,7 +13,9 @@
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 {

View File

@ -12,7 +12,6 @@
position: relative; position: relative;
img { img {
width: 100px; width: 100px;
} }
> div { > div {
display: flex; display: flex;
@ -26,7 +25,6 @@
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 50%; border-radius: 50%;
} }
} }
p { p {
font-size: 16px; font-size: 16px;
@ -86,13 +84,9 @@
} }
} }
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.Footer { .Footer {
background: var(--primary); background: var(--primary);
height: 330px; height: 330px;
@ -108,7 +102,6 @@
padding-bottom: 30px; padding-bottom: 30px;
img { img {
width: 100px; width: 100px;
} }
> div { > div {
display: flex; display: flex;
@ -122,7 +115,6 @@
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 50%; border-radius: 50%;
} }
} }
p { p {
font-size: 14px; font-size: 14px;
@ -183,8 +175,5 @@
cursor: pointer; cursor: pointer;
} }
} }
} }
} }

View File

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

View File

@ -9,20 +9,19 @@
width: calc(100% - 100px); width: calc(100% - 100px);
z-index: 999999999; z-index: 999999999;
font-size: max(20px, 1.5vw); font-size: max(20px, 1.5vw);
img,svg{ img,
svg {
width: 60px; width: 60px;
font-size: 30px; font-size: 30px;
} }
> ul { > ul {
display: flex; display: flex;
li { li {
all: unset; all: unset;
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
&:hover { &:hover {
scale: 1.1; scale: 1.1;
} }
} }
} }
@ -32,15 +31,14 @@
a { a {
color: var(--white) !important; color: var(--white) !important;
opacity: .6; opacity: 0.6;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
font-weight: normal; font-weight: normal;
font-size: 18px; font-size: 18px;
&:hover { &:hover {
color: var(--secondary) !important; color: var(--secondary) !important;
scale: 1.1; scale: 1.1;
opacity: 1; opacity: 1;
} }
} }
.activeLink { .activeLink {
@ -59,21 +57,16 @@
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.NavBar { .NavBar {
.NavBarLinks { .NavBarLinks {
display: none !important; display: none !important;
} }
> div { > div {
display: flex; display: flex;
article { article {
&:nth-child(2) { &:nth-child(2) {
display: block; display: block;
} }
} }
} }
@ -101,11 +94,10 @@
} }
} }
} }
} }
.ant-popover,.ant-popover-inner{ .ant-popover,
.ant-popover-inner {
padding: 0 !important; padding: 0 !important;
z-index: 999; z-index: 999;
margin-inline: 30px; margin-inline: 30px;
} }

View File

@ -21,5 +21,3 @@
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

@ -22,13 +22,11 @@
margin-bottom: 20px; margin-bottom: 20px;
.ant-input { .ant-input {
min-height: 50px; min-height: 50px;
} }
} }
.TextAreaField { .TextAreaField {
min-width: 97%; min-width: 97%;
} }
} }
button { button {
all: unset; all: unset;
@ -42,7 +40,7 @@
// background-image: linear-gradient(45deg, #55B9E3, #5262E3); // background-image: linear-gradient(45deg, #55B9E3, #5262E3);
background: var(--thirdly); background: var(--thirdly);
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
&:hover { &:hover {
scale: 1.1; scale: 1.1;
} }
@ -74,7 +72,6 @@
img { img {
width: 18px; width: 18px;
} }
} }
p { p {
font-size: 16px; font-size: 16px;
@ -85,7 +82,6 @@
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.ContactPage { .ContactPage {
background: var(--bg); background: var(--bg);
@ -110,13 +106,11 @@
margin-bottom: 20px; margin-bottom: 20px;
.ant-input { .ant-input {
min-height: 50px; min-height: 50px;
} }
} }
.TextAreaField { .TextAreaField {
min-width: 100%; min-width: 100%;
} }
} }
button { button {
all: unset; all: unset;
@ -156,7 +150,6 @@
img { img {
width: 15px; width: 15px;
} }
} }
p { p {
font-size: 14px; font-size: 14px;
@ -166,5 +159,4 @@
} }
} }
} }
} }

View File

@ -23,7 +23,6 @@
gap: 20px; gap: 20px;
color: var(--white); color: var(--white);
font-size: max(4vw, 50px); font-size: max(4vw, 50px);
} }
p { p {
color: var(--white); color: var(--white);
@ -35,7 +34,7 @@
gap: max(1vw, 10px); gap: max(1vw, 10px);
button { button {
all: unset; all: unset;
padding: max(.5vw,8px) max(1.5vw,30px); padding: max(0.5vw, 8px) max(1.5vw, 30px);
display: flex; display: flex;
align-items: center; align-items: center;
gap: max(1vw, 10px); gap: max(1vw, 10px);
@ -43,7 +42,7 @@
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 10px; border-radius: 10px;
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
padding-block: 10px; padding-block: 10px;
&:hover { &:hover {
background: var(--thirdly); background: var(--thirdly);
@ -64,8 +63,6 @@
} }
} }
} }
} }
> div { > div {
position: absolute; position: absolute;
@ -82,9 +79,7 @@
left: 50%; left: 50%;
transform: translate(-50%, 0%); transform: translate(-50%, 0%);
z-index: 9999; z-index: 9999;
} }
} }
.main { .main {
position: relative; position: relative;
@ -93,9 +88,7 @@
width: 80%; width: 80%;
object-fit: contain; object-fit: contain;
margin-inline: auto; margin-inline: auto;
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
@ -124,7 +117,6 @@
gap: 10px; gap: 10px;
color: var(--white); color: var(--white);
font-size: 6vw; font-size: 6vw;
} }
p { p {
color: var(--white); color: var(--white);
@ -136,7 +128,7 @@
gap: max(1vw, 10px); gap: max(1vw, 10px);
button { button {
all: unset; all: unset;
padding: max(.5vw,8px) max(1.5vw,30px); padding: max(0.5vw, 8px) max(1.5vw, 30px);
display: flex; display: flex;
align-items: center; align-items: center;
gap: max(1vw, 10px); gap: max(1vw, 10px);
@ -156,8 +148,6 @@
} }
} }
} }
} }
> div { > div {
position: absolute; position: absolute;
@ -174,9 +164,7 @@
left: 50%; left: 50%;
transform: translate(-50%, 0%); transform: translate(-50%, 0%);
z-index: 1; z-index: 1;
} }
} }
.main { .main {
position: relative; position: relative;
@ -185,9 +173,6 @@
width: 100%; width: 100%;
object-fit: contain; object-fit: contain;
margin-inline: auto; margin-inline: auto;
} }
} }
} }

View File

@ -49,14 +49,12 @@
} }
p { p {
font-weight: normal; font-weight: normal;
font-size: max(.8vw,16px); font-size: max(0.8vw, 16px);
line-height: 30px; line-height: 30px;
} }
} }
} }
} }
} }
} }
@ -93,7 +91,9 @@
width: 300px; width: 300px;
} }
> span { > span {
display: flex;align-items: center;justify-content: center; display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap; flex-wrap: wrap;
width: 100% !important; width: 100% !important;
max-width: 90%; max-width: 90%;
@ -118,13 +118,10 @@
p { p {
font-weight: normal; font-weight: normal;
font-size: max(1vw, 14px); font-size: max(1vw, 14px);
} }
} }
} }
} }
} }
} }
} }

View File

@ -36,7 +36,7 @@
gap: max(1vw, 10px); gap: max(1vw, 10px);
button { button {
all: unset; all: unset;
padding: max(.5vw,8px) max(1.5vw,30px); padding: max(0.5vw, 8px) max(1.5vw, 30px);
display: flex; display: flex;
align-items: center; align-items: center;
gap: max(1vw, 10px); gap: max(1vw, 10px);
@ -44,7 +44,7 @@
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 10px; border-radius: 10px;
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
padding-block: 10px; padding-block: 10px;
&:hover { &:hover {
background: var(--thirdly); background: var(--thirdly);
@ -65,8 +65,6 @@
} }
} }
} }
} }
.shape { .shape {
position: absolute; position: absolute;
@ -76,8 +74,6 @@
min-height: 60vh; min-height: 60vh;
object-fit: cover; object-fit: cover;
} }
.circle { .circle {
position: absolute; position: absolute;
@ -85,8 +81,6 @@
top: 73%; top: 73%;
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
.slider { .slider {
position: absolute; position: absolute;
@ -95,13 +89,8 @@
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.HomePage { .HomePage {
min-height: 100vh; min-height: 100vh;
@ -145,7 +134,7 @@
gap: max(1vw, 10px); gap: max(1vw, 10px);
button { button {
all: unset; all: unset;
padding: max(.5vw,8px) max(1.5vw,20px); padding: max(0.5vw, 8px) max(1.5vw, 20px);
display: flex; display: flex;
align-items: center; align-items: center;
gap: max(1vw, 10px); gap: max(1vw, 10px);
@ -153,7 +142,7 @@
border: 1px solid var(--white); border: 1px solid var(--white);
border-radius: 10px; border-radius: 10px;
cursor: pointer; cursor: pointer;
transition: .5s ease-in-out; transition: 0.5s ease-in-out;
padding-block: 8px; padding-block: 8px;
// width: 90% !important; // width: 90% !important;
&:hover { &:hover {
@ -177,33 +166,22 @@
} }
svg { svg {
font-size: max(20px, 1.3vw); font-size: max(20px, 1.3vw);
} }
} }
} }
} }
.shape { .shape {
display: none; display: none;
} }
.circle { .circle {
position: absolute; position: absolute;
width: 800px; width: 800px;
top: 500px; top: 500px;
} }
.slider { .slider {
position: absolute; position: absolute;
width: 600px; width: 600px;
top: 600px; top: 600px;
} }
} }
} }

View File

@ -60,13 +60,10 @@
} }
} }
} }
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.HowItWork { .HowItWork {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
@ -100,7 +97,6 @@
> img { > img {
width: 300px; width: 300px;
order: 0; order: 0;
} }
> span { > span {
order: 2; order: 2;
@ -133,13 +129,10 @@
font-weight: normal; font-weight: normal;
font-size: max(1vw, 14px); font-size: max(1vw, 14px);
width: 100%; width: 100%;
} }
} }
} }
} }
}
}
} }
} }

View File

@ -58,7 +58,6 @@
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.NotePage { .NotePage {
background: var(--bg2); background: var(--bg2);
display: flex; display: flex;
@ -117,6 +116,4 @@
} }
} }
} }
} }

View File

@ -30,8 +30,6 @@
width: 250px; width: 250px;
margin-inline: auto; margin-inline: auto;
} }
} }
} }
@ -42,10 +40,7 @@
display: flex; display: flex;
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.ScreenShoot { .ScreenShoot {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
@ -79,8 +74,6 @@
width: 280px; width: 280px;
margin-inline: auto; margin-inline: auto;
} }
} }
} }
@ -90,6 +83,4 @@
.swiper-slide { .swiper-slide {
display: flex; display: flex;
} }
} }

View File

@ -10,13 +10,10 @@
position: relative; position: relative;
> img { > img {
width: 100%; width: 100%;
object-fit: cover; object-fit: cover;
} }
main { main {
position: absolute; position: absolute;
top: 30%; top: 30%;
@ -62,9 +59,7 @@
} }
} }
@media screen and (max-width: 900px) { @media screen and (max-width: 900px) {
.VideoPage { .VideoPage {
background: var(--bg); background: var(--bg);
display: flex; display: flex;
@ -77,14 +72,11 @@
position: relative; position: relative;
> img { > img {
width: 100%; width: 100%;
height: 600px; height: 600px;
object-fit: cover; object-fit: cover;
} }
main { main {
position: absolute; position: absolute;
top: 30%; top: 30%;
@ -141,10 +133,7 @@
p { p {
font-size: 13px; 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

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