From 54ce6ed114670c5081459023928e7fd387e3d059 Mon Sep 17 00:00:00 2001 From: yotakii Date: Mon, 5 Jan 2026 11:35:54 +0300 Subject: [PATCH] final updates --- client/build/images/logo.png | Bin 22367 -> 19570 bytes client/package-lock.json | 42 ++-- client/package.json | 7 +- client/public/images/logo.png | Bin 22367 -> 19570 bytes client/src/components/layout/Header.js | 122 ++++----- client/src/index.css | 5 +- client/src/locales/ar.json | 6 +- client/src/locales/en.json | 2 + client/src/locales/fr.json | 5 + client/src/pages/About.js | 178 ++++++------- client/src/pages/Contact.js | 258 +++++++++---------- client/src/pages/Home.js | 330 ++++++++++--------------- 12 files changed, 447 insertions(+), 508 deletions(-) diff --git a/client/build/images/logo.png b/client/build/images/logo.png index e198825c2e6101614710aefcdc3cfd1c0c7fb774..f720038696d2513f5f49cda31b59b79ed8c3a0fa 100644 GIT binary patch literal 19570 zcmeEu^g??2*xJib5pK&G$rI_El9KCkDscMtWn80mTFArJ`TJ#Fd+#L)GeFWC(#=fZS8RZRC@>I;D>iU!K0YgZmtL zfx)Og`E#nDTQ17iGO=x(;i`Y`cg5Y7<}c^<<(Nds`GhieVXvC+zl|~Mx8pwa&c9G+ zsq3}vH^$#S6V5hG54HGR`r`4M>-o31xL!_ZsEniq)E%q8)Ku9dZokeVu60HE)QMda zLic6hw(Bzj4@AM&rg!em~#e)0I>75!oe*C*W3&XB%EEfwTKz3w+Fb?z!o16pEbayXd_Di8f; z*0YGwtzisy`?r}Y_@1`#Btv5Q=G0fapWPrv^I0Q{5sV-ctta){`1-ezGYp z(y8ZzsldO@oJn~R1cfGW>-*Y-Rwsk?HTUb25W}JMsP8)z>Y3L8A-OpAopuoU!`hSJ6E|p%*`rd(;q<0uUwJGkg%eD$zap58iRReUB^m;lH*S z?<6~-qt`=7*6Y~}vr77qD}P`!5ZAimKlu7iB-#?oM%mW=hSO+^9q8NOHz-p*d2YCh zv5-F#yngod|4n8mD`HYf6M17+n#VSfe6p?KYORGlb+B{d8zuqtEEK>yegZNV_qsQMJhfBPepQ%H`Fa* zGmiL6U=m!iO4ml3N5<}?ZDxgP^CfV|{*p@4h4$fZ%wfJ@k4_mP__K>c=i3N# zdDe*TaTbrOkUA;%2BX5t%@lSzM3iqk1AQ*DO|jH!6YA27E>l8EW*tt_To(cd|FHu> zGa2?MzE`pt9ne$gzHA4H6}gLjM(smir~BCDgv-Xh5oWXFBb$O#S9}yWGFy^*yL_2$ z#;u96oDcRybKSt<{-#ol;P_$1dM8IKFslTEK)IM?#&5|zK^XfGJ@83}5V0gC$m^_O zf+1bEZtC==m!M64s}g&YlLp=G25`7L3eBBdRCE=Uy(#%QdP(poC%HDct(ZAxo0Tm@ z>YhJ3)_vztOe_2@J*gWgj%Iq_(nCjn$ion^rCV|taQ@54?MmHmL1{(PCtUONIOu+> zEAjld+$^V#UgVEhl#B2jQZ}XBBX%$UseHNcTmTl&b1>=-IgE!ey}a?IG`mv-h*Ee? z%KDkcXwiMbJD^tX@wQ1jgTQp#Hl?Xy>TLwcH>6A;Xb0I8Dd9P0iHw!V_*mv!w$uvm zyGfaKicPypc{g}pr0gTR|KN)+MK3wW`Va!t58Hul+k2#WTL7OZCWLm}WYcV>($oY7 zvIm#Wa7o%nO5NAM)EG1guUp3r_4q%X3IIMXyYYi7FnwX+V47Rqg9Y#pn{nlS-vfPk zch5%#)F=0F29&R)YqpqKu`)GpoST8X*ZM@UFd0aB@v4wKhvjkcO>{>)=iXlX9@XG< zM8$Oh81q)A>e~aM?R|mIHSxuU$W53KM?jkUah%NkrdQ;zd0%LvqJYET&I#VTI4|1w zsC~0H$8i<$#uK{WM@;cD9WJZVc>2k3ppRFD1EP8X>S|6)u_&LVm6D8R(vM6 zsVv}xKhym3RAe~0?frOo#xuiJ0-HrWpD#IZ%xiuAUAV)c9S8)GJBaC>Z&W_x#Cm54 zuLijr}raJ z<3ajSUP?hbWizUJ-$zaJQ+`!3 zPFiU;a&y>0H+%BNaGu}2RhpNQ-t-pa$ine-CyoZ2rM1h~gyx3EFjuIjKnIsX|-`KXBcZfD@vcA4dO6(oH>;nG_Bs&Gb|wVdemGC4G}Pix#g0g@G!Z| z91*Z>!ph_!IR70nQ(xy&@Pp$-(GL1e_u}Lc)0f-S3XSoar}@Du#tnHR#ai_Njxyp4 zoT6mcb#x?ZDpXMX^^mz%8;QG*kASL&0afjJ;=crt=IoELuDMNff6_?ah55#hj^( zH~MoWO=Eno7P@IMVQJ6XqOegx;L?WZV+e4g^M0foKM}ZCg~g^I6MTE2VNNOc3qpaV z{y)K-1#k51gJC zDlcgqrt(eQNh+`&*Hr!}e-&v7AxA-7E0nm_EVY926Xf9>Hgv5cz-4K*eU_bXwsVht zW2MPZA_G*_;kI%)b8PNn432opmL^=%Fg|PkYHGo5tj!LSKt1nnlo2kXT-fVh z|DLdgS$+PnQd|IQ+`qOfAz+*ju@ls4qOyMv(X$3w%5L5mG0S{j!bcEqp+1>2PSYHk z6EUmt%P>8cX-F%VXe_}%3ItA;*M5l0c&+(6!ELtA0>o#o^Tz#(Pm{BNwU(Qy^mNdd zJ2){9PxcDUr2r3wa_1EkzJHw`TVT0ba*lJev(taVWaz7l&|X)#UIpU$qB}pdX8Ae>!Q>OS|IN%RtOlb zM{Q+VV}`X|{8%P)PbkI9$imhcM4W$~|k`wE!I1~;i~;(hpSrasHD1$IDspv{GA&vcTlwc?0b3{%)i`Q4FM=*X?vEwMTL z^6PGq{O5bVE?ZC4SAm2Fm2|io2}>fu`7t9!m^~N&2HPJ}9PC!LstcDuoCA4oq`h69 z$-3$amFAka+R=_72L9~Up!TX<46hXEWn%=9OX`ggwPR=Z*g@Sl3fEE z+hx4eRaZ!zTgFC$%MFo^W{J8MBN+z5!he>JCp_7Y5Um|Fi7Hg7oWRp?0v{YbKbjE0 z3oWPcH3(KF_tZLg;=7mZSTZzzSUgRmR%>?s%QWMX?T0VQavCvWoWauejlYyVh`n3y zO~ddS(p$+?H2Zk!{N7Is_0yc+ih2JwTsDR1$Jf@E#dpriYl`K|QwR921!m2s%_QPB zT6{{mxMV&E_gD3%#P5A;n((?jiW3{Vm9BdK+oL?yW0)=%LeGj2G6O-yn}XlW~~Net@F3K&$tFI zgl;q@PIx^8&w9zGSgE&JsRwDczIEkFfMXcX4t*dL{rilVy>OYfF#EgS)y;soCMSLg zh{V6m`%hP@aqVui{xXC{!hOTt-fT6EiBMOr*s^@;lL61a6Y=bp9%-UWlGz915esp| z1;~%HGwN-9>}KV6$*?YP@o^DV{L%~Mj5wEw#sI(PGlQKTCTae_q5W9yl+Eew6C(|1 z?i~mI{^_@oVCxW2oc+%QW~$WI(qAha=JhP-APL=l%FTltmjj$KT)E!D>F|dqS$>yY z0>71PBn#mirPG}D|LB|+Ziw_z$c125gS|FE!!;!4jv1}gk$G=6W$qp`B{XQjO*weT z^Ty46ipY80M+VVzPER$Pm~#i#I&AGl>uBF6L11n`(_&EGvN&6*G0q&(yDm8ctpS+l=F)LDE25#x;kZ&Ju*c%ZGx~iGrFXl*o#OSPfbWhfsC=Uf14TH z;E|!&iyh;R9DA$O(_IH=|wo`Db+m=6E-=H?u3 zZEsNV+b-X~Y^>QtWS9Eq!W~FPoYAGlL}-6(4WE-9^BuDM9$om)F4f3(5wi4PKy{a% z5H>!Ay7|`GnIU&>XnBkeu5Q-rfhGNH?Aq_-?wVE)nvQN&#v?d=l8W=wO+0CZN;6)iPN+Feil(q)z3^#_TU}ouzh$nai!u;oLQOYK*djnrg7vhE^&tzpsG-YoDm?TJgH?GS(3eTpa; zlr^1H%;#NqmsRq0wzyh&2O{{R%F89-FSfR)IyC<@2rOs%aqg0A)kXjcgIlrZPLQdb zRT1KVZfdBjuuT;YK}px8=dTFCH1_u!p7ty@3P5=)tKya@F?vl5(piCWzvi4oUzW^& zXQI3s>Y@wN zkRfdxE>;Ewe(Lq+Txe~R6!LO#5;yf?QL3w8pgMdw!o!1=;~fYceqI~n$WNbkKkXrQ z=>jr8V`y%sc%^crSj&GHf zkF7HsP#w-h>+^6%$F4~(AS(b&oLH+P)Aom5KzcSCrpC8?aYra%A&@1&ClQ%4;eNWI z-Tu4@razKfeeV@_908c(|LkzQqQwceV0U`MK#Qyjxch z;7#T8Rd%5zgACuqyQK!TNjC!!h*H%^D=QOF{B|L#(|76{qK>EJ1sfvV`xgiy*8@lJ zG0MpogJXx^W#ite9qUO5pV(uHL4jlH)i0&$%Th8g9_X7$=CWbId0}&&>--cZl_chy zdrk$XKY8qnkq6JYX{Nw z^#CXe<3}?$Mxclw6Z?fPuJhz?iaFMWT6#?d$4Fd5mvQo61sgz%?qLip4Z~Qj3(uKo z(3zbF_I+|N=3QuLKM3shX4m~~T>C~VDf4L@sV|L!|9*C6zA9>7aAN&| z8Zp{NebNqwSK8i3xt{^H?2>IhuTVwzv&hx}cHMcXRkp7_CJ?5LP9qatp3ce=>!-_H zK&DSTSrHymeLe8YvqDdZ_}m!@~IMlK+Dtn7CYsY75A9=B{53o zzkagqxZONZr3QhwCZur5#Ym|a|14s&Uyz#M!wKaqTnr}k2oK@{()!xe-Zk*Aa1K<8 zjwtIyWP1n5{%G^kS5KOAG9*c&9(1lDgu4hlCFE zZ^DwkTj^<{9bUDT&JuXRqLtu$eix(%O_)0#>F(UD3^N9e65zgbeoG){U;Fv=r2L#Tr&&#D&HftGx)9>})%Ceo5;~!LfZ? zZ6qR(JxxztlzX(PB*^GaG%$uD9YqV!#Bc$M#Q{EFL{Nk&0J=caGJ67xbrzUtVoFn0 z(~%ack;U!7{q%bwuv64mRF$0TYGzYa+HFv{4G`IBO&vlb^Kse1*Uwhi-mKK3!;vw1 zZ~ozS`xnEM=iTLmE6Udfzj=Kqqgk#bePuKqA{~Y^aaR7O)rJUu;2C+E@#w6@5lAS# z!H!^C@Mw1q*0dKBc{>|lqZdc5ISi(kybYQ{KC{i;Ixw9+y< z!a+)`N0btBY5tB%XXEM4Ss5&Yr$lq5aFj)62nIpdbRDF!R{tU&V7epF01O3?l$Fa=Is8LyFN5JtmtTW!L@16s8ZW) z_yo_!&E$YQ-W{T!(p zsua$ECpdtrxPUsuCQew%O5;aZ3~R1v1wu_YA%hOL6TF{U=w)2>2Z=5-N(!`mkSU#Y zPLz+B)ig^9h{H@{ipP;yBOkC(#^5H1+;+<JlXO1_GxJfrvk)OFzoFBo%s?^G)b~$oYc13bo!lcudGdE<=Hix0 z*M)Td@`C|wLnDG$+2Ll=+uLDGSrWQBBR?^)K=f;X1;5T)J zKL>I6D)pl8sijQoq+#k6){lL`c>(gv8PE_EC@DcvigmBiFbv(GVrlM}AO1T0S5Qsj zo`#%zvzjC&IKQV1$$LlKBJvdR&`k3)3dSnr7ydCp;B{; zj;$Zt>`*dcG*V_Yh#A%vZzwb+Y^vJKZ}(aX&B-TrW4MD$Ao2QoJ1CnHcGf9ku*zRgUwlYv-;clz6ozuxQwTKTXwdc`K43-!nzEIh-(r`cUJy1puFtZ zdLG@zOe?zgknYm$)os$+c(JskRO#xZEpbyJ`I67x3t5#-{R+?9ZgAfW9RDy&VRjhy zmkIJ;rgG#wy z4iLD!to-G{j! zkOI_^Nu%4bkCJmY@tL=<<$NVBCG$tp8kqEtl-HgB=q}Y6S!TE54O5z>+>OgD#qeh= zyP$hm&;Tu|&T$w-)Xw{z#bx_@>1OZidS#*SnOO`9QYO3_x#8jPydjC3X?CuI ztHBn-=W&rT_Z1!K3FcgFk8wg4T}5TD^Iz1AALurCCCo!(9g2ZifvD|B)KJ>lJf!x9_0FvgB%6w%?b! z*b3Ar+`nfzf9H$L^0Etv0~s1^7+IXxiuTlAC`rH?$PaG%7@0;l@m%D^82@k10llk> z#Y=k=4Kcz>mpcRi?%f!-GVpd&XFHV*9-&skgGzGyS%9c9JnkG{DFHJG@-u zDBf>7MO<8(3%sLNXilwQzeY{w>w}9VrHyfv(n?Y2$5_MT6oK~?)DtG(_ZO=J#s_Dy zO6!%6qTkk~ee6E>mWc97Cyq++eG)!9(>glb8q?@cCuV%|$6(Xv!z^FOd-`9)zOIRn zVvjyOdY)91_h=7vQJNx9O=jD0Vv0zAf?L?1%+tP@$~tn z)uygSj>BgwzWlhD!UbG&Cx-w-4aLxPn>vW?xN@%Pe`+(}Yb>sQVru>?`NPK!2I>zraK`rKa22r^B z#;uxHvx&o(f|;>d1ls=dSO)x8K_3U+k@LU!Dg%ZKat+4sm849uQBE!k9p8_xRT(~K zUvXE)8xr){7RB(W?w7GBTJBxnM)Oohr=xxj0Z-vzN`vofE9s|kza-sQYaaUr8LxP2 z{pb?}_6iRQz4hD__n5*)Ja_Ma*=d2lLO>H=ykrj2b$A{-G<{D4bNo5k#Z0a-PvPyp zoWNLy^cX~7MDRhaM9phk^JvfLfoQ?`=m1)ukSl4tUQ=~ zK3T)v`>oS8#`3;=v5RAaO}|FaP0&pVuF1)AItlElJxY)$bNK^f3}|*@00DXX_JyU! z`fqwqo!!_Pc4I1ytTG+1da3_Fq>f)%<8s$p76CH1(UlB$S9z(wFI`)@IiV)^@TcFf z>DYV~=c9q@lPf}jCiC!-dkw1l zML01~Ka7r_aJNsH3|l< z@edxCeNmy~MMt^58?4WGcS)0~?O4z`7VI)wt7^;Xs`kJ->)1Ef5NKbz^Y@(SO7Xy^ zGZ8%);$YlvrfDkq7&G9kT@zYuO-*(^bytlZ{7_u2@0*LNM)EKDM~c&NPs<;JlI{dF zmISk=^s>c4X`luUS-pro-UeMo(u92<9%KfmjT?>W@Ulp*Uh#07b`0F?6-^IUm)*J% z{LIEXCFGHs z5W%vV(YM!MVdGS)v#q?xJ_49rLBlj_1EWW;{Y! zg1Z*r07D2~y`3h_HZ{Zf-4g|&V^bZt?_-`uxPRCmeAxA^YT(nA4Q1(`gCpIRLl-%)`iTu0#pHMM?Cy2Y$Q8vcO~jGrzBGaC-E_Z#2kOOR`w z$!fPIwLqB}vFBi9SqInbnN!axJck3G^8^r5PQ2k&`C*g%8s&bLzrU}XJ*w%^>_-7f zE#1Nql^fTCLnP15T!+<{@m_Z&B$wlA`olz*DR=*t0~$mVAN0f+>?;G*WiGV?=}M2Z z2Eza3TYwJ7Wrw5ViWVIl;TdlzSgf-&*9NLP%E{C6FWXWm1oj}>r0@Z=a8zpeq6rZ%$@OXqyX3qrh|5J~0Y{%3{)P~r8XCi5v ziaB^)R{05=X&u&l63G7sD+0=6g*4&We*?ePa2iJ<>(wda};EEYtFC}(Uv3bhku8|V|8?-rikhWjwV zCwx^b@D2&3?1y0xrunK!RILP`Jm#*yNxZC;RIq+q-q=YRip=SVUc)VaUz#v16LxXS ziCh}ccIQbe{@0WZaygS_*p^l2Cs$}0UjgJ+)t6XS~IEuucfYkk@M{Z&$bmvQo|I0uSj$`lhQyFXG z%dV=F`r4aErXT|6D6!l}H34Fv^|Sp9sJnd}-AA6myS`JRlzNWjJ12)n1>WU{TF_05 zsiV#(cd3jgpzUQ?#9<|Ulv=2yws{mOJUyTE_8zp^w?BXRb*f18i*PUxxr6g!qxymC(!1!Uk!&B4G^FI0Ll~h=qmO` zyQz0i&6xvT2;NSWJMD|&srFu|zV-{?+gOf?+srv)@uV_K={ny@(Y346~_(2Ja#T4#53uJIo*Sb`y zGYyod7SwJV?RA5Gcv6ynJ*e=+vT>x-dd}bKqilAyFxB8H=xq3ZWo)PidNFvg#fi--WGL<5EJT>J=zsSr-z_Wq z{x%PG*y*3KD`KT5CuNIRNf2Gej%fw{3Q(n2TXm5fO<}NB z+2jvRMm~|}?*A-bM-c@(%yX_ynYg>;kM7Crh-I&OTOT)4_p4DW#6AVu%roR^*8^|u zAPj;-ev!tUI<-^2gj1Ji0-%RrCi-L$6%Bm_p?hd

29_(eRPj>NF8<;Z(0aaONq${NgM7{c|6UBaJkU~P-|MQ4J(r7K}xht^mTdlqN zKIO}V)!|81WE03r{-)cm zn)@tjnLq>Ff{B5|d(}jc&*lFW;0{c%6_t5zv5CNj_0q`(jFO4 z_kWwYqhu~`6#?%97=GRoGIl6HO_1VM_@x0FEq84kI8OsER`iyN?TGoHRKqJ zmPe_4s8{63#nglm~@+r`7tH9jj_`-95 zZK@*;B<>#yDvh78t_#n#n9ev3?u7_SXVmnHkbx^$Z$&Unj1Ieh&i1~0>UTOWVnW_J zEVX)o@JIYrb>iI`6`WC!{eejXvw{U?rtz8Q{IV=jjE`s7li-0s{umLbyq;gpn%Nhk7wC8z(m1e@k-F4kjy!!enDNy?I&_R;^`#w z&Kl4B%hY6_SJLTDX`AMJE^c!a-I0KCP--%m$2c4cz9kOj7E(YspiG9$RZ_8FUfY0?YWrsC-?C2 z1?!WWs)FE0s*`Hg8FjSa&9+ft{)aJMX(Qm-^uIK6bPQ^+2HaK0A8oL6J^o6_%!{ z8`FiJMKb$ezP{RcV))SJ#MVzlHEuz&w=#O>?_>ol9+m1b$yD#|w4Fv%qA<`0U8T90C;b*mg*hX_;u{JEObtEiT-`90<^twCzs zYYLKBSJhA){i2!pr%J`LsA)_0Z36uaH)x8Df@VFiWzzepw1p4ElojGD%*JNC?Q50g zn?=ztZbAw_)w(b{f=m#iuI}%IlDMIG$4|1*y)n?`z*m5pj6%rJ3jh+{ii2>r=WA8l zBT`499`=FiuCCXkw02Kr>GYR7{#6H_Q{*pXo}FJcx$~f{9ym4lt>YE%h^^M%ax%=3 znoLIA0IRscFI}&XRB#S;n{rhSvjzK*4A={5T_T;$jj2aJxQhel_!387S960=RcMYk zL}etGDYBN`vM5YblbYO_Yp@}ynQr+O&fu=RNIHD}=5wD~trOYD?s@WL-=pVsVuW6< zyi>jlb47uMa{F~EqsWRE6o_Xkv z@I;dPt{(GIpQmON79`Z6eOx;OHSN~^Xyk1_$wTy9H?b8VbBzkA6wjYVO3Qlnv?SK2 z@3ZVD=&~KCZ%6*R02V_KbR-Xb#XT! zb;FsBciPPNf>xJya6hzbuI{>{3-@bY02+0QOV6`YSSLl)8~!_h+?WmL(a@ zoQ+FkX})?zwZv1F9bB8(ZvQ|Oya$uwcU%S6=}2o29SzBEA{H5&um^I-N(RQll>0pj zSzNJ|Qdjv~PRaR2oaV|o91pd?6`A%dCJgl0YpDBvIQ*$iULF*gFXnOi!ED%O_gpp<+Ac*@c_V;S`n@Ew!PW z61N+o54u?d&FjLvv;c#Lt*uVr0|gd6_sD9B+Jrd7_#SVeQO|Ffz3QV>u~L+BLIxp8 z2hYf$Q)bs2o)k}bfbSNI_Ok**EN;lmq1fW_hVHqfPgjHWpU}UwD5Hx-{by>0zxMgV z!MEOz=Or{eapO17in2JH!FmerkUz{~dxAm-i8393idtR?aK#&ih~UMOPPr5Ec|rva z!;~vADelM3?rj1<_>!e`#5(%TdQfL@4{20LIG7rzohJsUn{zpo|FmE zd0=dkAR!YT*g5d+#SU-S^35&DAS5fa_HGl-IpS#ll;WzmVv)bsXD!KYNl1t2skdo( zn#8UB6z_`s`!d3A7@_{U7abc3ZqUKNGu5rPTWT6Csvt`0_^}^G~Zn7!7jeOrcdmKEvGo7UUo_!yDTwuX) z(C}`H+ao2t(C=Ebk4v_Ag;$s7_FeDidrw{d!&7Vg7`X%s)ruR*qGP{55f{jWh%7t0 zErs74q&Zd^S{BIb+(kPQejZd>`^^!vSC_00C-^c)U(>W=7QXZWO){jPi;S7rC;*bx z=AR6Ts7UJoaBI{8N)=!cl}5w1(4(`nA?Gf`?}KTa-H5VA`7WQj9qB(KIwudSck5#L z^%+amJhn4pYRc3=c6c`Dc1D?qE5|@gC)OibtbCy@zs7 z_>!`N;DyQ~);k<7EL?QW&`NI(SPH?n1peFXYs7q){4|cU%?4270g+`W-6*tdJ*0SJ z>f>oEUgx5_+66w^O@c^>PqAU=U=aRhatgH_^TD!G%|o1F4Wq#MrPlz45uNgO&JyfP z&hY<)4vc@ZZxQ$U@P?JTni5;YL(kIMGp^~wttXcD!LCpn zXoX~BguBkiaHFst;S$|_lZ0b{Htm6Zz;q^1F?=@^$M5^+F|io!9~tFU575a92GBhczr)z z5CzebC`{f2^i!!AW<$@@LPFlbr2|awt^5RRbEY?>8)hyIRy~X5x*e-}VqRB6Pexml ziLg*&Il%YT>S3Elqk*lVIV@<@G0bjnfWm^NYiILx1pRr8L+F0uo9Bu>LdLVY?ZsZq zR*E#QRv=F_pZ;ALldUBgJPuOZeI9>Gg0V>kDe!S_z(7K}xA2DQr*%$}8`3Qo9@0Za zJM-o224bgv?5QBqskmL`U(#?Bi~t86xT9I!wWB+HI!0gD>I>7p@MP3HoE8g5X+zZb!vE$DGapEWDiv!;y( zm4%gWskZ^X!Gp9ZY+`S~o@l@_dGSod*MUTtNB#ozMrm`BLTK}zML#*ZOaHvph-)0Q zCS4TjrTmKqxPf3^({=^CyPQr_e9EpbyMa!3paVtrnDyt23LYxhxzO-n=xvysM59h# z3bT3gxtoiH?g3^ld!N?|X>E9+xM8GfbKju!V*4qwydS0bmKshn=-rwCT$VF-}GM)f5rZV>M26$8#W0&HW!u1Tb%TU>%n+05pe!BA;g#ZvAMxW0ZC= zi_Ei;1KJ*q$vu79$Uq)~mrZzII5q}*2h`6)MKZdG4>g~jghMy!NZ@8IlVHlQWsg(V z83FY@YPRet!R((vY!oBb*y!4m0_lH!1^_mY|I{ww#;X6?#lCRXXJ=Byfm>aFrjG1# zY9k8G6^r=GU?j`t<3}CSIyPY2g4rb+UzZHXl0tLU8>;rkwht$FbI_3M5a4`=el~h_ z3eS0OcB5+XtskVR^&T((bW9M-lgeKGmfFITPJ({heWs{Nhk%Y61WqRm^jRKIL}&)< zv@$8L;lDINPcR4!Nijn=_W)9IMC+(S3P-4yfTU}Z<4*Y z!L*0>?EZTcc}idHXc)meV*nIgXR^ID7eH3-#3!-37Mg*=HZnmRcSeBno*K z?}_Pm26eI+gT2(Ya(L57crD3{-frW0U%3?!KN=2X$0RGYR=K?DVycn#jlU!|-bK&)l6b4cO$deeT+iqK}6wrFzNW7(H+txQCprC1(;rSzW z>YwJ6Z=(_$H{!v_do&8D6R`NQ(wg1&^BK6w)2UxDM6U1)xGs%00+ZgygGe4ed+g({n(-JGR2`1>na!qK}LZ{8*tl(4ho6qSZFSb*Gm# zopShSimCi6lg`=-@GA7mA6132yj;qH<6x5i2Tf;Z!f4o=wY9qdJ(4F~0d-{ePcx6!-5zGmV z)megxNU4UsgBiYVk>UcAbMvQ5fhm>pYc+)?gU9%K>uIn%{Q$z_Z*^AWr;vU*u)wd} z`}le=h7{`_^mpwB{vHvV=df6w7UkpEfE@0?4F7 ze(;ql3Xo`D=QZzv_E9Sb{mo)K%dJ6EH*g#<`kyMUs}@wYweNB9I~;3=_6DQpcN8G+ z--0u+a`YjI=y#3i*w30jGtAB(D;XL>g5R+=Q`xt8T=YsPhW3rAZZ~S=$w45jSHZ?Y z(R3RrV2$)*D5SaSKjZ$_>8(_@8}ThJ9H4{%TB097G48GDx6*aiN!ZJx3$_B|z4uL0 zUf>ovp5i40>X~~1SP9RQYc31~cwUp!#uG>s_y&ZBer0durTpF56xnYRLSmttc?3-e zWXOi`e_cg?D6qnZuh)J-g7v^uu*~f5J5IVBHA(|d!9*Y=uZPDKGO=g=cIT9_(Lj*9 zepc{w9(evrFiqSs%bIgSbri~5LZHb>e$(@HrG~mW-l;1)Jta`m6AFcboev;*AzboQ zd|y0=7SWBW$zfCRKv=b%!(n)Ha6YVg^#8mh`K$k;f2F_!s?%dz{I6tO!EApZE7ZHM z;qOfoGZ>Hq=jI>S0`QoSBya~ZHl#nKcpwDh8#VZrQ{ttIhwK?h;;CllnFA45qMq0} zcJvJ{kqp~sg@kI7lBvOL5>0=U3}d6u;$vcZJb=^}v@)sTJ&0?4> zPl0Woe&s|9sh-oaPVRsa@)wA#zo3fa5X)(~$I>E|tmHz!Q}3gQ3<9Z}lU-8xec@+Ag$Iw`K{#Jzyp(E-Tg ze|(EZobm5+tBDll(u-C(9u1{q=@iuW>$`lAr3kR}HL!HPOhsd4!d;&n3@8;&zkvcw zh-$X!s`JqB~XVGCaue(@o%qcs~K7?>^5Qz!Z)@}$vuAMd?P-6;0) zh3{pWEE9g*Uo>Vn0D!5StN5?dcYRo+G>v+-CUYz&byXKo9@EoFYT&VL)DJIqeOO98 z=33|^fo?f9Xe) zkWktG8_*@d0dXdVIlxWe3cG<3(Oo3};j_ke)@ZlChqCzJDLt}M+SX;l$WRLm>EI$^ z!FapRd(CneuVFjaXrfdnDj1%bz47`-@1>uw`|o*cR=09OU2<)?s(UxWJ zH^n7K@Ljxm-v7Cj0T=9m2Vj-jGY@!_3b1@?1RfB;zyKVq9p#LM!JtnE2mar$ljQ~` zRR*3<+vgo!w~2#6f&*0S^8nBKVPIfm0wrc*K=>Px# literal 22367 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 HyQu#Ie>4mp diff --git a/client/package-lock.json b/client/package-lock.json index 187cdcb..e9e17bc 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -30,6 +30,9 @@ "react-router-dom": "^6.19.0", "react-scripts": "^5.0.1", "swiper": "^11.0.5" + }, + "devDependencies": { + "cross-env": "^10.1.0" } }, "node_modules/@alloc/quick-lru": { @@ -2526,6 +2529,13 @@ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", "license": "MIT" }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", @@ -6565,6 +6575,24 @@ "node": ">=10" } }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -16978,20 +17006,6 @@ } } }, - "node_modules/tailwindcss/node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - } - }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", diff --git a/client/package.json b/client/package.json index b455171..ecb2805 100644 --- a/client/package.json +++ b/client/package.json @@ -27,7 +27,7 @@ "swiper": "^11.0.5" }, "scripts": { - "start": "PORT=3060 react-scripts start", + "start": "cross-env PORT=3060 react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" @@ -50,5 +50,8 @@ "last 1 safari version" ] }, - "proxy": "http://localhost:5080" + "proxy": "http://localhost:5080", + "devDependencies": { + "cross-env": "^10.1.0" + } } diff --git a/client/public/images/logo.png b/client/public/images/logo.png index e198825c2e6101614710aefcdc3cfd1c0c7fb774..f720038696d2513f5f49cda31b59b79ed8c3a0fa 100644 GIT binary patch literal 19570 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 literal 22367 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 HyQu#Ie>4mp diff --git a/client/src/components/layout/Header.js b/client/src/components/layout/Header.js index 393cee9..eb1ace4 100644 --- a/client/src/components/layout/Header.js +++ b/client/src/components/layout/Header.js @@ -2,7 +2,6 @@ import React, { useState, useEffect } from 'react'; import { AppBar, Toolbar, - Typography, Button, Box, IconButton, @@ -15,8 +14,6 @@ import { ListItemText, useMediaQuery, useTheme, - Select, - FormControl, } from '@mui/material'; import { Menu as MenuIcon, @@ -32,11 +29,21 @@ const Header = () => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('lg')); const location = useLocation(); - + const [mobileOpen, setMobileOpen] = useState(false); const [languageAnchor, setLanguageAnchor] = useState(null); const [scrolled, setScrolled] = useState(false); + // ✅ لون غامق ثابت للهيدر الفاتح (حتى لو الثيم Dark) + const lightHeaderText = '#1a1a1a'; + + // ✅ Pending 17: Book Now -> WhatsApp with preset message + const WA_NUMBER = '963986105010'; + const WA_TEXT = encodeURIComponent( + 'For all booking inquiries and reservation confirmations, kindly contact us via WhatsApp' + ); + const WA_LINK = `https://wa.me/${WA_NUMBER}?text=${WA_TEXT}`; + const navigationItems = [ { label: t('nav.home'), path: '/' }, { label: t('nav.about'), path: '/about' }, @@ -53,25 +60,24 @@ const Header = () => { ]; useEffect(() => { - const handleScroll = () => { - setScrolled(window.scrollY > 50); - }; + const handleScroll = () => setScrolled(window.scrollY > 50); window.addEventListener('scroll', handleScroll); + handleScroll(); return () => window.removeEventListener('scroll', handleScroll); }, []); - const handleDrawerToggle = () => { - setMobileOpen(!mobileOpen); - }; + // ✅ صفحات الخلفية عندها فاتحة (زيدي هون أي route تاني) + const lightHeaderRoutes = ['/facilities', '/contact']; + const forceLightHeader = lightHeaderRoutes.some( + (r) => location.pathname === r || location.pathname.startsWith(r + '/') + ); - const handleLanguageClick = (event) => { - setLanguageAnchor(event.currentTarget); - }; + const isLightHeader = scrolled || forceLightHeader; - const handleLanguageClose = () => { - setLanguageAnchor(null); - }; + const handleDrawerToggle = () => setMobileOpen((prev) => !prev); + const handleLanguageClick = (event) => setLanguageAnchor(event.currentTarget); + const handleLanguageClose = () => setLanguageAnchor(null); const handleLanguageChange = (languageCode) => { i18n.changeLanguage(languageCode); handleLanguageClose(); @@ -100,7 +106,7 @@ const Header = () => { - + {navigationItems.map((item) => ( @@ -110,7 +116,7 @@ const Header = () => { sx={{ textAlign: 'center', backgroundColor: isActiveRoute(item.path) ? 'primary.main' : 'transparent', - color: isActiveRoute(item.path) ? 'white' : 'text.primary', + color: isActiveRoute(item.path) ? 'white' : lightHeaderText, '&:hover': { backgroundColor: 'primary.light', color: 'white', @@ -121,20 +127,21 @@ const Header = () => { ))} - + + {/* ✅ Pending 17: Drawer Book Now -> WhatsApp */} @@ -149,15 +156,22 @@ const Header = () => { - + {/* Logo */} { display: 'flex', alignItems: 'center', textDecoration: 'none', - '&:hover': { - opacity: 0.8, - }, + '&:hover': { opacity: 0.8 }, }} > Old Vine Hotel { component={Link} to={item.path} sx={{ - color: scrolled - ? (isActiveRoute(item.path) ? 'secondary.main' : 'text.primary') - : (isActiveRoute(item.path) ? 'white' : 'white'), + color: isLightHeader + ? (isActiveRoute(item.path) ? 'secondary.main' : lightHeaderText) + : 'white', fontWeight: isActiveRoute(item.path) ? 600 : 400, borderBottom: isActiveRoute(item.path) ? 2 : 0, borderColor: 'secondary.main', borderRadius: 0, - opacity: isActiveRoute(item.path) ? 1 : 0.8, + opacity: isActiveRoute(item.path) ? 1 : 0.85, '&:hover': { backgroundColor: 'transparent', - color: scrolled ? 'secondary.main' : 'white', + color: isLightHeader ? 'secondary.main' : 'white', opacity: 1, }, }} @@ -221,27 +233,26 @@ const Header = () => { ))} - + {/* Language Selector */} - - {/* Book Now Button */} + + {/* ✅ Pending 17: Book Now -> WhatsApp */} @@ -249,17 +260,13 @@ const Header = () => { )} - {/* Mobile Menu Button */} + {/* Mobile */} {isMobile && ( - + @@ -273,9 +280,7 @@ const Header = () => { anchor="right" open={mobileOpen} onClose={handleDrawerToggle} - ModalProps={{ - keepMounted: true, - }} + ModalProps={{ keepMounted: true }} sx={{ '& .MuiDrawer-paper': { boxSizing: 'border-box', @@ -307,9 +312,8 @@ const Header = () => { ))} - ); }; -export default Header; \ No newline at end of file +export default Header; diff --git a/client/src/index.css b/client/src/index.css index d276692..9f4870b 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -9,8 +9,8 @@ html { } body { - font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", + "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -18,6 +18,7 @@ body { line-height: 1.6; } + code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; diff --git a/client/src/locales/ar.json b/client/src/locales/ar.json index ca2c0bc..7238bb5 100644 --- a/client/src/locales/ar.json +++ b/client/src/locales/ar.json @@ -17,10 +17,12 @@ "exploreRooms": "استكشف الغرف" }, "home": { - "welcomeTitle": "مرحباً بكم في فندق العريشة القديمة", + "welcomeTitle": "مرحباً بكم في فندق الدالية القديمة", "welcomeSubtitle": "حيث تلتقي الرفاهية بالتقاليد", "welcomeDescription": "اكتشف تجربة ضيافة استثنائية في فندق العريشة القديمة، حيث كل تفصيل مصمم ليمنحك لحظات لا تُنسى من الراحة والأناقة.", "featuresTitle": "لماذا تختارنا", + "feature6Title": "قاعة اجتماعات", + "feature6Description": "يوفّر بيئة فريدة لرجال الأعمال لعقد اجتماعاتهم ومؤتمراتهم.", "feature1Title": "إقامة فاخرة", "feature1Description": "غرف وأجنحة أنيقة مع وسائل راحة متميزة", "feature2Title": "مطاعم راقية", @@ -97,6 +99,8 @@ "message": "الرسالة", "sendMessage": "إرسال رسالة", "messageSent": "تم إرسال الرسالة بنجاح!", + "whatsappOpened": "تم فتح واتساب. اضغط إرسال داخل واتساب لإرسال الرسالة.", + "requiredFields": "رجاءً املأ الحقول المطلوبة (الاسم، البريد، الرسالة).", "directions": "احصل على الاتجاهات", "whatsapp": "واتساب" }, diff --git a/client/src/locales/en.json b/client/src/locales/en.json index 3d66c7c..7542c31 100644 --- a/client/src/locales/en.json +++ b/client/src/locales/en.json @@ -32,6 +32,8 @@ "roomsTitle": "Our Rooms & Suites", "roomsSubtitle": "Comfort and elegance in every detail", "viewAllRooms": "View All Rooms", + "feature6Title": "Meeting Room", + "feature6Description": "A unique setting for business meetings and conferences.", "offersTitle": "Special Offers", "offersSubtitle": "Exclusive deals for your perfect stay" }, diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json index 38d9b0a..a97cec8 100644 --- a/client/src/locales/fr.json +++ b/client/src/locales/fr.json @@ -27,6 +27,8 @@ "feature2Description": "Cuisine exquise et expériences culinaires de classe mondiale", "feature4Title": "Emplacement privilégié", "feature5Title": "Belles terrasses", + "feature6Title": "Salle de réunion", + "feature6Description": "Un cadre unique pour les réunions d’affaires et les conférences.", "feature5Description": "Détendez-vous sur nos magnifiques terrasses avec des vues imprenables sur la vieille Damas", "feature4Description": "Parfaitement situé pour les affaires et les loisirs", "roomsTitle": "Nos chambres et suites", @@ -95,8 +97,11 @@ "hours": "Heures", "name": "Nom complet", "message": "Message", + "subject": "Sujet", "sendMessage": "Envoyer le message", "messageSent": "Message envoyé avec succès !", + "whatsappOpened": "WhatsApp est ouvert. Appuyez sur Envoyer dans WhatsApp pour envoyer votre message.", + "requiredFields": "Veuillez remplir les champs obligatoires (nom, e-mail, message).", "directions": "Obtenir l'itinéraire", "whatsapp": "WhatsApp" }, diff --git a/client/src/pages/About.js b/client/src/pages/About.js index 3f00d9a..28c688e 100644 --- a/client/src/pages/About.js +++ b/client/src/pages/About.js @@ -332,102 +332,104 @@ const About = () => { + {false && ( + + + + Our Journey + - {/* Timeline Section */} - - - + {/* Timeline line */} + + + {milestones.map((milestone, index) => ( + - Our Journey - - - - {/* Timeline line */} - - {milestones.map((milestone, index) => ( - - + + - - - - {milestone.year} - - - {milestone.title} - - - {milestone.description} - - - - - {/* Timeline dot */} - - - - - - ))} - - - + + {milestone.year} + + + {milestone.title} + + + {milestone.description} + + + + + {/* Timeline dot */} + + + + + + ))} + + + +)} ); diff --git a/client/src/pages/Contact.js b/client/src/pages/Contact.js index 7d02c67..eb3c025 100644 --- a/client/src/pages/Contact.js +++ b/client/src/pages/Contact.js @@ -5,18 +5,15 @@ import { Typography, Grid, Card, - CardContent, TextField, Button, IconButton, Alert, - useTheme, } from '@mui/material'; import { Phone, Email, LocationOn, - AccessTime, WhatsApp, Facebook, Instagram, @@ -26,132 +23,153 @@ import { import { useTranslation } from 'react-i18next'; import { motion } from 'framer-motion'; import { Helmet } from 'react-helmet-async'; -import { useQuery, useMutation } from 'react-query'; +import { useQuery } from 'react-query'; import axios from 'axios'; +const HOTEL_WHATSAPP = '963986105010'; + const Contact = () => { - const { t } = useTranslation(); - const theme = useTheme(); - + const { t, i18n } = useTranslation(); + + const lang = (i18n.resolvedLanguage || i18n.language || 'en').toLowerCase(); + const isAr = lang.startsWith('ar'); + const isFr = lang.startsWith('fr'); + + const tf = (key, en, ar, fr) => t(key, isAr ? ar : isFr ? fr : en); + const [formData, setFormData] = useState({ name: '', email: '', phone: '', subject: '', - message: '' + message: '', }); const [submitStatus, setSubmitStatus] = useState(null); - // Fetch contact information const { data: contactInfo } = useQuery( 'contactInfo', - () => axios.get('/api/contact/info').then(res => res.data.data), + () => axios.get('/api/contact/info').then((res) => res.data.data), { - staleTime: 5 * 60 * 1000, // 5 minutes - } - ); - - // Submit contact form - const submitContactForm = useMutation( - (formData) => axios.post('/api/contact', formData), - { - onSuccess: () => { - setSubmitStatus({ type: 'success', message: t('contact.messageSent') }); - setFormData({ name: '', email: '', phone: '', subject: '', message: '' }); - }, - onError: (error) => { - setSubmitStatus({ - type: 'error', - message: error.response?.data?.message || 'Failed to send message' - }); - } + staleTime: 5 * 60 * 1000, + retry: 0, } ); const handleInputChange = (e) => { - setFormData({ - ...formData, - [e.target.name]: e.target.value - }); + setFormData((prev) => ({ + ...prev, + [e.target.name]: e.target.value, + })); + }; + + const openWhatsApp = () => { + const lines = [ + tf( + 'contact.whatsappNewMessageHeader', + 'New message from website:', + 'رسالة جديدة من موقع الفندق:', + 'Nouveau message du site web :' + ), + `${tf('contact.whatsappLabelName', 'Name', 'الاسم', 'Nom')}: ${formData.name}`, + `${tf('contact.whatsappLabelEmail', 'Email', 'البريد الإلكتروني', 'E-mail')}: ${formData.email}`, + `${tf('contact.whatsappLabelPhone', 'Phone', 'الهاتف', 'Téléphone')}: ${formData.phone || '-'}`, + `${tf('contact.whatsappLabelSubject', 'Subject', 'الموضوع', 'Sujet')}: ${formData.subject || '-'}`, + `${tf('contact.whatsappLabelMessage', 'Message', 'الرسالة', 'Message')}: ${formData.message}`, + ]; + + const text = encodeURIComponent(lines.join('\n')); + const url = `https://wa.me/${HOTEL_WHATSAPP}?text=${text}`; + window.open(url, '_blank', 'noopener,noreferrer'); }; const handleSubmit = (e) => { e.preventDefault(); - if (formData.name && formData.email && formData.message) { - submitContactForm.mutate(formData); + + if (!formData.name || !formData.email || !formData.message) { + setSubmitStatus({ + type: 'error', + message: tf( + 'contact.requiredFields', + 'Please fill the required fields (name, email, message).', + 'يرجى تعبئة الحقول المطلوبة (الاسم، البريد الإلكتروني، الرسالة).', + 'Veuillez remplir les champs obligatoires (nom, e-mail, message).' + ), + }); + return; } + + openWhatsApp(); + + setSubmitStatus({ + type: 'success', + message: tf( + 'contact.whatsappOpened', + 'WhatsApp opened. Press Send inside WhatsApp to deliver your message.', + 'تم فتح واتساب. اضغط "إرسال" داخل واتساب لإرسال رسالتك.', + 'WhatsApp s’est ouvert. Appuyez sur Envoyer داخل WhatsApp pour إرسال رسالتك.' + ), + }); + + setFormData({ name: '', email: '', phone: '', subject: '', message: '' }); }; const contactCards = [ { - title: 'Phone', + title: tf('contact.cardPhoneTitle', 'Phone', 'الهاتف', 'Téléphone'), icon: , primary: '0112241609', - secondary: '24/7 Available', - action: 'tel:0112241609' + secondary: tf('contact.cardPhoneSecondary', '24/7 Available', 'متاح 24/7', 'Disponible 24/7'), + action: 'tel:0112241609', }, { - title: 'Email', + title: tf('contact.cardEmailTitle', 'Email', 'البريد الإلكتروني', 'E-mail'), icon: , primary: 'reservations@oldvinehotel.com', - secondary: 'Response within 24 hours', - action: 'mailto:reservations@oldvinehotel.com' + secondary: tf( + 'contact.cardEmailSecondary', + 'Response within 24 hours', + 'الرد خلال 24 ساعة', + 'Réponse sous 24 heures' + ), + action: 'mailto:reservations@oldvinehotel.com', }, { - title: 'WhatsApp', + title: tf('contact.cardWhatsAppTitle', 'WhatsApp', 'واتساب', 'WhatsApp'), icon: , primary: '+963986105010', - secondary: 'Quick responses', - action: 'https://wa.me/963986105010' + secondary: tf('contact.cardWhatsAppSecondary', 'Quick responses', 'رد سريع', 'Réponses rapides'), + action: `https://wa.me/${HOTEL_WHATSAPP}`, }, { - title: 'Address', + title: tf('contact.cardAddressTitle', 'Address', 'العنوان', 'Adresse'), icon: , - primary: contactInfo?.hotel?.address?.formatted || 'Old Damascus City', + primary: contactInfo?.hotel?.address?.formatted || tf('contact.addressFallback', 'Old Vine Hotel, Damascus', 'فندق أولد فاين - دمشق', 'Old Vine Hotel, Damas'), secondary: t('contact.directions'), - action: 'https://maps.google.com/?q=' + encodeURIComponent(contactInfo?.hotel?.address?.formatted || 'Old Damascus City') - } - ]; - - const departments = [ - { - name: 'Reservations', - phone: contactInfo?.departments?.reservations?.phone || '+1 (555) 123-4567', - email: contactInfo?.departments?.reservations?.email || 'reservations@oldvinehotel.com', - hours: contactInfo?.departments?.reservations?.hours || '24/7' + action: 'https://www.google.com/maps/search/?api=1&query=Old%20Vine%20Hotel%20Damascus', }, - { - name: 'Concierge', - phone: contactInfo?.departments?.concierge?.phone || '+1 (555) 123-4568', - email: contactInfo?.departments?.concierge?.email || 'concierge@oldvinehotel.com', - hours: contactInfo?.departments?.concierge?.hours || '6:00 AM - 12:00 AM' - }, - { - name: 'Restaurant', - phone: contactInfo?.departments?.restaurant?.phone || '+1 (555) 123-4569', - email: contactInfo?.departments?.restaurant?.email || 'restaurant@oldvinehotel.com', - hours: contactInfo?.departments?.restaurant?.hours || '6:30 AM - 11:00 PM' - }, - { - name: 'Spa & Wellness', - phone: contactInfo?.departments?.spa?.phone || '+1 (555) 123-4570', - email: contactInfo?.departments?.spa?.email || 'spa@oldvinehotel.com', - hours: contactInfo?.departments?.spa?.hours || '8:00 AM - 9:00 PM' - } ]; return ( <> - Contact Us - The Old Vine Hotel - + {tf('contact.pageTitle', 'Contact Us - The Old Vine Hotel', 'تواصل معنا - فندق أولد فاين', 'Contact - The Old Vine Hotel')} + {/* Hero Section */} { component="h1" sx={{ mb: 3, - fontFamily: 'Playfair Display', fontSize: { xs: '2.5rem', md: '3.5rem' }, }} > @@ -223,17 +240,10 @@ const Contact = () => { }, }} > - + {card.icon} - + {card.title} @@ -248,9 +258,8 @@ const Contact = () => { ))} - {/* Contact Form and Departments */} + {/* Contact Form */} - {/* Contact Form */} { viewport={{ once: true }} > - - Send us a Message + + {tf('contact.sendUsMessageTitle', 'Send us a Message', 'أرسل لنا رسالة', 'Envoyez-nous un message')} - + {submitStatus && ( - setSubmitStatus(null)} > @@ -315,7 +317,7 @@ const Contact = () => { { onChange={handleInputChange} /> + @@ -352,7 +354,7 @@ const Contact = () => { - {/* Social Media Section */} + {/* Social Media */} { transition={{ duration: 0.8 }} viewport={{ once: true }} > - {/* Social Media */} - - Follow Us + + {tf('contact.followUs', 'Follow Us', 'تابعنا', 'Suivez-nous')} - + @@ -392,11 +382,7 @@ const Contact = () => { href={contactInfo?.socialMedia?.instagram || '#'} target="_blank" rel="noopener noreferrer" - sx={{ - backgroundColor: '#E4405F', - color: 'white', - '&:hover': { backgroundColor: '#D62D4A' }, - }} + sx={{ backgroundColor: '#E4405F', color: 'white' }} > @@ -405,24 +391,16 @@ const Contact = () => { href={contactInfo?.socialMedia?.twitter || '#'} target="_blank" rel="noopener noreferrer" - sx={{ - backgroundColor: '#1DA1F2', - color: 'white', - '&:hover': { backgroundColor: '#1A91DA' }, - }} + sx={{ backgroundColor: '#1DA1F2', color: 'white' }} > @@ -436,18 +414,18 @@ const Contact = () => { {/* Map Section */}