diff --git a/data.json b/data.json new file mode 100644 index 0000000..e77e2c2 --- /dev/null +++ b/data.json @@ -0,0 +1,200 @@ +{ + "navBar":{ + "link1":"الرئيسية", + "link2":"الميزات", + "link3":"كيف يعمل", + "link4":"لقطة الشاشة", + "link5":"ملاحظة", + "link6":"اتصل بنا" + }, + "Home":{ + "title":"احصل على تنزيل مجاني لتطبيق", + "ApplicationName":"Quiz", + "description":"من الحقائق الثابتة منذ فترة طويلة أن القارئ سوف يصرف انتباهه عن المحتوى", + "buttonLabel":"تحميل على المتجر", + "button1":"جوجل بلاي", + "button2":"ابل", + "mainImage":"/Home/Main.png" + }, + "Features":{ + "title":"ميزات غير محدودة", + "description":"تقديم قيمة احترافية بموضوعية مع جاهزية متنوعة للويب. نقل خدمة العملاء اللاسلكية بشكل تعاوني دون محفزات موجهة نحو الهدف للتغيير. التعاون.", + "mainImage":"/Features/main.png", + "Data":{ + "1":{ + "img": "/Features/1.png", + "title": "دعم ودود عبر الإنترنت", + "description": "توفير دعم فني متاح على مدار الساعة لمساعدتك في أي استفسارات" + }, + "2":{ + "img": "/Features/2.png", + "title": "ميزات غير محدودة", + "description": "استمتع بإمكانيات غير محدودة لتخصيص تجربتك" + }, + "3": { + "img": "/Features/3.png", + "title": "مكون معياري وقابل للتبديل", + "description": "تبديل بين التخطيطات وحتى العروض التوضيحية بسهولة" + }, + "4": { + "img": "/Features/4.png", + "title": "دقة عالية", + "description": "احصل على جودة صور وفيديو عالية الدقة" + }, + "5": { + "img": "/Features/5.png", + "title": "مشاركة اجتماعية", + "description": "سهولة مشاركة المحتوى عبر منصات التواصل الاجتماعي" + }, + "6":{ + "img": "/Features/6.png", + "title": "استخدم على أي جهاز", + "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/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.png", + "ScreenShoot/1.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": "121 King St , ملبورن VIC 3000, أستراليا" + }, + "3":{ + "title": "المكتب الرئيسي", + "image": "/contact/3.png", + "value": "121 King St , ملبورن VIC 3000, أستراليا" + } + } + }, + "Footer":{ + "title":"اشترك في نشرتنا الإخبارية", + "description":"نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا", + "privacy":"© زاكر 2024.جميع الحقوق محفوظة" + + }, + "Links":{ + "google_play_link":"/", + "apple_store_link":"/", + "facebook":"/", + "telegram":"/", + "instagram":"/", + "twitter":"/" + }, + "Settting":{ + "Logo":"/LOGO.png" + } +} \ No newline at end of file diff --git a/public/Slider.png b/public/Home/Main.png similarity index 100% rename from public/Slider.png rename to public/Home/Main.png diff --git a/public/HomeImage.png b/public/HomeImage.png deleted file mode 100644 index 4b582dd..0000000 Binary files a/public/HomeImage.png and /dev/null differ diff --git a/public/SwipeScreenShoot/1.png b/public/ScreenShoot/1.png similarity index 100% rename from public/SwipeScreenShoot/1.png rename to public/ScreenShoot/1.png diff --git a/public/LOGO.png b/public/Settting/LOGO.png similarity index 100% rename from public/LOGO.png rename to public/Settting/LOGO.png diff --git a/public/SwipeScreenShoot/2.png b/public/SwipeScreenShoot/2.png deleted file mode 100644 index 395f91b..0000000 Binary files a/public/SwipeScreenShoot/2.png and /dev/null differ diff --git a/public/SwipeScreenShoot/3.png b/public/SwipeScreenShoot/3.png deleted file mode 100644 index 379e109..0000000 Binary files a/public/SwipeScreenShoot/3.png and /dev/null differ diff --git a/public/SwipeScreenShoot/4.png b/public/SwipeScreenShoot/4.png deleted file mode 100644 index e2b08a0..0000000 Binary files a/public/SwipeScreenShoot/4.png and /dev/null differ diff --git a/public/SwipeScreenShoot/5.png b/public/SwipeScreenShoot/5.png deleted file mode 100644 index 15bd1ba..0000000 Binary files a/public/SwipeScreenShoot/5.png and /dev/null differ diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Routes.tsx b/src/Routes.tsx index ce831ff..7eb9389 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -1,32 +1,9 @@ -import { lazy, Suspense } from 'react'; -import { Route, Routes as RoutesContainer } from 'react-router-dom'; import './styles/App/index.scss'; -import SpinContainer from './components/layout/SpinContainer'; import HomePage from './pages/HomePage'; -import Layout from './components/layout/Layout'; -import { RoutesEnums } from './enums/RoutesEnums'; -const Page404 = lazy(() => import('./components/layout/NotFoundPage')); const Routes = () => { return ( - - - - - } - /> - }> - - - } - /> - + ); }; diff --git a/src/components/Contact/Left.tsx b/src/components/Contact/Left.tsx index 0aaa1ed..4d33cb5 100644 --- a/src/components/Contact/Left.tsx +++ b/src/components/Contact/Left.tsx @@ -1,38 +1,23 @@ import React from 'react' +import {ContactPage as ContactPageData} from '../../../data.json' const Left = () => { - const Left = [ - { - title: "المكتب الرئيسي", - image: "/contact/1.png", - value: "121 King St , ملبورن VIC 3000, أستراليا" - }, - { - title: "المكتب الرئيسي", - image: "/contact/2.png", - value: "121 King St , ملبورن VIC 3000, أستراليا" - }, - { - title: "المكتب الرئيسي", - image: "/contact/3.png", - value: "121 King St , ملبورن VIC 3000, أستراليا" - } - ] + return (
-

تواصل معنا

+

{ContactPageData.title}

- من السهل جدا الاتصال بنا. ما عليك سوى استخدام نموذج الاتصال أو زيارتنا في المكتب. ابتكار التكنولوجيا التنافسية ديناميكيا بعد مجموعة موسعة من القيادة. + {ContactPageData.description}

- {Left?.map((item, index) => { + {Object.entries(ContactPageData.Data)?.map((item, index) => { return (
- -
{item.title}
+ +
{item[1].title}
-

{item.value}

+

{item[1].value}

) })} diff --git a/src/components/SwiperScreenShoot.tsx b/src/components/SwiperScreenShoot.tsx index 38f4527..d333676 100644 --- a/src/components/SwiperScreenShoot.tsx +++ b/src/components/SwiperScreenShoot.tsx @@ -6,6 +6,7 @@ import 'swiper/css'; import 'swiper/css/navigation'; import 'swiper/css/pagination'; import 'swiper/css/scrollbar'; +import {ScreenShoot as ScreenShootData} from '../../data.json' const SwipeScreenShoot = () => { const SwipeScreenShoot = [ @@ -54,11 +55,14 @@ const SwipeScreenShoot = () => { }, }} > - {SwipeScreenShoot.map((item, index) => ( - - {`Screenshot - - ))} + {ScreenShootData.Data.map((item, index) => { + + return ( + + {`Screenshot + + ) + })}
); diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx index 31e9b19..1bb0dcc 100644 --- a/src/components/layout/Footer.tsx +++ b/src/components/layout/Footer.tsx @@ -1,23 +1,27 @@ import { Input } from "antd"; import { FaFacebook, FaInstagram, FaTelegram, FaTwitter } from "react-icons/fa"; +import {Footer as FooterData,Links} from '../../../data.json' const Footer = () => { + const handleClick = (href:string)=>{ + window.location.href = href + } return (
logo
- - - - + handleClick(Links.telegram)}/> + handleClick(Links.facebook)} /> + handleClick(Links.instagram)} /> + handleClick(Links.twitter)} />

- © زاكر 2024.جميع الحقوق محفوظة + {FooterData.privacy}

-

اشترك في نشرتنا الإخبارية

-

نحن فريق من غير المتشائمين الذين يهتمون حقا بعملنا.

+

{FooterData.title}

+

{FooterData.description}

diff --git a/src/components/layout/NavBar.tsx b/src/components/layout/NavBar.tsx index a1f8ecb..2afb75b 100644 --- a/src/components/layout/NavBar.tsx +++ b/src/components/layout/NavBar.tsx @@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'; import { MdLanguage } from "react-icons/md"; import { FaEllipsis } from 'react-icons/fa6'; import { Popover } from 'antd'; - +import {navBar as navBarData,Settting} from '../../../data.json' // Define an enum for the routes @@ -19,12 +19,12 @@ const NavBar: React.FC = () => { // Define an array of link objects using the RoutesEnums const [t] = useTranslation() const links: NavLink[] = [ - { path: RoutesEnums.HOME, label: t('home') }, - { path: RoutesEnums.FEATURES, label: t('features') }, - { path: RoutesEnums.HOW_IT_WORK, label: t('how_it_work') }, - { path: RoutesEnums.SCREEN_SHOOT, label: t('screen_shoot') }, - { path: RoutesEnums.NOTE, label: t('note') }, - { path: RoutesEnums.CONTACT, label: t('contact_us') }, + { path: RoutesEnums.HOME, label: navBarData.link1 }, + { path: RoutesEnums.FEATURES, label: navBarData.link2 }, + { path: RoutesEnums.HOW_IT_WORK, label: navBarData.link3}, + { path: RoutesEnums.SCREEN_SHOOT, label: navBarData.link4 }, + { path: RoutesEnums.NOTE, label:navBarData.link5 }, + { path: RoutesEnums.CONTACT, label: navBarData.link6 }, ]; const [Open, setOpen] = useState(false) const handleToggle = ()=>{ @@ -54,7 +54,7 @@ const NavBarContent = ( return (
) diff --git a/src/pages/FeaturesPage.tsx b/src/pages/FeaturesPage.tsx index 56f4032..abf38ad 100644 --- a/src/pages/FeaturesPage.tsx +++ b/src/pages/FeaturesPage.tsx @@ -1,56 +1,29 @@ import { useTranslation } from 'react-i18next' +import {Features} from '../../data.json' const FeaturesPage = () => { - const features = [ - { - "img": "1", - "title": "Friendly_Online_Support", - "description": "Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries" - }, - { - "img": "2", - "title": "Unlimited_Features", - "description": "Enjoy_limitless_possibilities_to_customize_your_experience" - }, - { - "img": "3", - "title": "Modular_and_Switchable_Component", - "description": "Easily_switch_between_layouts_and_even_demos" - }, - { - "img": "4", - "title": "High_Resolution", - "description": "Get_high_quality_images_and_videos" - }, - { - "img": "5", - "title": "Social_Sharing", - "description": "Easily_share_content_across_social_media_platforms" - }, - { - "img": "6", - "title": "Use_on_Any_Device", - "description": "Compatibility_with_all_devices_for_a_seamless_experience" - } - ] const [t] = useTranslation() + console.log(); + return (
-

{t("Application_Features")}

-

{t("Providing_professional_value_objectively_with_varied_web_readiness_Collaborative_wireless_customer_service_without_targeted_incentives_for_change_Collaboration")}

+

{Features.title}

+

{Features.description}

- {features.map((item, index) => { + {Object.entries(Features.Data).map((item, index) => { + console.log(item,"item"); + return (
- {`${index}`} + {`${index}`}

- {t(item.title)} + {t(item[1].title)}

- {t(item.description)} + {t(item[1].description)}

@@ -58,7 +31,7 @@ const FeaturesPage = () => { })}
- +
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index b7c2423..40875d5 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,39 +1,42 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' import { BsGooglePlay } from 'react-icons/bs' import { FaApple } from 'react-icons/fa' +import {Home,Links} from '../../data.json' const HomePage = () => { - const { t } = useTranslation() + + const handleClick = (href:string)=>{ + window.location.href = href + } + return (
-

{t('get_free_download')}

{t('quiz_app')}

-

{t('reader_distracted')}

+

{Home.title}

{Home.ApplicationName}

+

{Home.description}

- -
- +
) } diff --git a/src/pages/HowItWork.tsx b/src/pages/HowItWork.tsx index 165ba75..41d4275 100644 --- a/src/pages/HowItWork.tsx +++ b/src/pages/HowItWork.tsx @@ -1,50 +1,29 @@ import React from 'react' import { useTranslation } from 'react-i18next' +import {HowItWork as HowItWorkData} from '../../data.json' const HowItWork = () => { - const HowItWorks = [ - { - "img": "1", - "title": "Friendly_Online_Support", - "description": "Providing_round_the_clock_technical_support_to_assist_you_with_any_inquiries" - }, - { - "img": "2", - "title": "Unlimited_Features", - "description": "Enjoy_limitless_possibilities_to_customize_your_experience" - }, - { - "img": "3", - "title": "Modular_and_Switchable_Component", - "description": "Easily_switch_between_layouts_and_even_demos" - }, - { - "img": "4", - "title": "High_Resolution", - "description": "Get_high_quality_images_and_videos" - }, - ] const [t] = useTranslation() return (
-

كيف يعمل؟

+

{HowItWorkData.title}

- استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل. + {HowItWorkData.description}

- {HowItWorks.slice(0,2).map((item, index) => { + {Object.entries(HowItWorkData.Data).slice(0,2).map((item, index) => { return (
- {`${index}`} + {`${index}`}

- {t(item.title)} + {t(item[1].title)}

- {t(item.description)} + {t(item[1].description)}

@@ -53,16 +32,16 @@ const HowItWork = () => {
- {HowItWorks.slice(2,4).map((item, index) => { + {Object.entries(HowItWorkData.Data).slice(2,4).map((item, index) => { return (
- {`${index}`} + {`${item[1].img}`}

- {t(item.title)} + {t(item[1].title)}

- {t(item.description)} + {t(item[1].description)}

diff --git a/src/pages/NotePage.tsx b/src/pages/NotePage.tsx index fdaa0d9..08c5474 100644 --- a/src/pages/NotePage.tsx +++ b/src/pages/NotePage.tsx @@ -1,50 +1,27 @@ import React from 'react' import { Rate } from 'antd'; +import {NotePage as NotePageData} from '../../data.json' const NotePage = () => { - const Note = [ - { - description:"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة", - rate:4, - img:"/Note/1.png", - name:"إليسا اسكندر" - - }, - { - description:"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة", - rate:4, - img:"/Note/1.png", - name:"إليسا اسكندر" - - }, - { - description:"تسهيل الضرورات الوظيفية بشكل جوهري بدون خدمات وصفية من الجيل التالي. إحداث ثورة مقنعة في المستخدمين في جميع أنحاء العالم مقابل أفضل ممارسات المؤسسة", - rate:4, - img:"/Note/1.png", - name:"إليسا اسكندر" - - }, - - ] return (
-

ماذا يقول عملاؤنا عن ذاكر

+

{NotePageData.title}

- استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل. + {NotePageData.description}

- {Note.map((item,index:number)=>{ + {Object.entries(NotePageData.Data).map((item,index:number)=>{ return (

- {item.description} + {item[1].description}

- +
- -
{item.name}
+ +
{item[1].name}
diff --git a/src/pages/ScreenShoot.tsx b/src/pages/ScreenShoot.tsx index 8d25d4e..2d1cf98 100644 --- a/src/pages/ScreenShoot.tsx +++ b/src/pages/ScreenShoot.tsx @@ -1,13 +1,16 @@ import React from 'react' import SwipeScreenShoot from '../components/SwiperScreenShoot' +import {ScreenShoot as ScreenShootData} from '../../data.json' + + const ScreenShoot = () => { return (
-

لقطات شاشة التطبيق

+

{ScreenShootData.title}

- استضافة احترافية بسعر مناسب. تلخيص الكفاءات الأساسية التي تركز على المبدأ بشكل مميز من خلال الكفاءات الأساسية التي تركز على العميل. + {ScreenShootData.description}

diff --git a/src/pages/VideoPage.tsx b/src/pages/VideoPage.tsx index b9b7514..464d01c 100644 --- a/src/pages/VideoPage.tsx +++ b/src/pages/VideoPage.tsx @@ -1,35 +1,11 @@ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPlayCircle } from 'react-icons/fa'; -import { PiPlayCircle } from 'react-icons/pi'; -import ReactPlayer from 'react-player'; +import {VideoPage as VideoPageData} from '../../data.json' const VideoPage = () => { const [isPlaying, setIsPlaying] = useState(false); const [t] = useTranslation(); - const details = [ - { - "img": "1", - "title": "Friendly_Online_Support", - "number": "1111" - }, - { - "img": "2", - "title": "Unlimited_Features", - "number": "2222" - }, - { - "img": "3", - "title": "Modular_and_Switchable_Component", - "number": "3333" - }, - { - "img": "4", - "title": "High_Resolution", - "number": "4444" - }, - ]; const handlePlayPause = () => { setIsPlaying(!isPlaying); @@ -41,20 +17,20 @@ const VideoPage = () => {
-

منصة التطبيق الأكثر استخداما

+

{VideoPageData.title}

- ابدأ العمل مع ذلك الذي يمكن أن يوفر كل ما تحتاجه لتوليد الوعي وزيادة حركة المرور والتواصل. تحويل القيمة الدقيقة بكفاءة من خلال المحتوى الذي يركز على العميل. + {VideoPageData.description}

- +
- {details.map((item, index) => ( + {Object.entries(VideoPageData.Data).map((item, index) => (
- {`${index}`} + {`${index}`} -

{t(item.number)}

-

{t(item.title)}

+

{t(item[1].number)}

+

{t(item[1].title)}

))} diff --git a/src/styles/pages/ContactPage.scss b/src/styles/pages/ContactPage.scss index ae9e04d..9421b18 100644 --- a/src/styles/pages/ContactPage.scss +++ b/src/styles/pages/ContactPage.scss @@ -11,6 +11,7 @@ display: flex; flex-direction: column; gap: 10px; + .Forms{ display: flex; flex-wrap: wrap; @@ -50,6 +51,7 @@ display: flex; flex-direction: column; gap: 20px; + min-width: 40vw; p{ color: var(--text); }