From bfe48f8c5ede6eea38e0eef03d5d4ded486b0caf Mon Sep 17 00:00:00 2001 From: peter_rabbit <pierrejarriges@gmail.com> Date: Thu, 28 Jan 2021 16:33:19 +0100 Subject: [PATCH] feat: software-service section --- constants.js | 2 +- .../games/fantom_quest/fantom_quest.json | 1 - public/articles/software/index.json | 2 +- .../articles/software/watergun/watergun.json | 1 - .../images/kuadrado-template-screen.png | Bin 0 -> 6294 bytes .../website-template/website-template.json | 13 ++ .../website-template/website-template.txt | 5 + public/assets/images/tech_logos/apache.png | Bin 0 -> 5056 bytes public/assets/images/tech_logos/c.png | Bin 0 -> 8308 bytes public/assets/images/tech_logos/css.png | Bin 0 -> 6155 bytes public/assets/images/tech_logos/docker.png | Bin 0 -> 2045 bytes public/assets/images/tech_logos/html.png | Bin 0 -> 5924 bytes public/assets/images/tech_logos/js.png | Bin 0 -> 4888 bytes public/assets/images/tech_logos/linux.png | Bin 0 -> 12288 bytes public/assets/images/tech_logos/mongodb.png | Bin 0 -> 5656 bytes public/assets/images/tech_logos/mysql.png | Bin 0 -> 1994 bytes public/assets/images/tech_logos/nginx.png | Bin 0 -> 4722 bytes public/assets/images/tech_logos/node.png | Bin 0 -> 4022 bytes public/assets/images/tech_logos/postgre.png | Bin 0 -> 12741 bytes public/assets/images/tech_logos/python.png | Bin 0 -> 4908 bytes public/assets/images/tech_logos/react.png | Bin 0 -> 4299 bytes public/assets/images/tech_logos/rust.png | Bin 0 -> 20396 bytes public/assets/images/tech_logos/sass.png | Bin 0 -> 4953 bytes public/education/education.js | 37 +-- public/games/games.js | 29 +-- public/main.js | 27 ++- .../software-development.js | 210 +++++++++++++++--- .../software-development.css | 6 +- public/style/style.css | 189 +++++++++++++++- src/home-page-components/theme-card.js | 2 +- src/homepage.js | 4 +- src/lib/article-utils.js | 2 +- src/lib/web-page.js | 6 - .../education/components/game-studio-club.js | 5 +- .../education/components/popularization.js | 5 +- src/pages/education/education.js | 2 +- src/pages/games/games.js | 2 +- src/pages/games/games.scss | 2 +- .../components/service-section.js | 129 +++++++++++ .../components/software-articles.js | 24 +- .../software-development.js | 16 +- .../software-development.scss | 152 ++++++++++++- src/style.scss | 9 +- src/template/components/navbar.js | 13 +- src/template/template.js | 4 +- src/theme.scss | 9 + 46 files changed, 785 insertions(+), 123 deletions(-) create mode 100644 public/articles/software/website-template/images/kuadrado-template-screen.png create mode 100644 public/articles/software/website-template/website-template.json create mode 100644 public/articles/software/website-template/website-template.txt create mode 100644 public/assets/images/tech_logos/apache.png create mode 100644 public/assets/images/tech_logos/c.png create mode 100644 public/assets/images/tech_logos/css.png create mode 100644 public/assets/images/tech_logos/docker.png create mode 100644 public/assets/images/tech_logos/html.png create mode 100644 public/assets/images/tech_logos/js.png create mode 100644 public/assets/images/tech_logos/linux.png create mode 100644 public/assets/images/tech_logos/mongodb.png create mode 100644 public/assets/images/tech_logos/mysql.png create mode 100644 public/assets/images/tech_logos/nginx.png create mode 100644 public/assets/images/tech_logos/node.png create mode 100644 public/assets/images/tech_logos/postgre.png create mode 100644 public/assets/images/tech_logos/python.png create mode 100644 public/assets/images/tech_logos/react.png create mode 100644 public/assets/images/tech_logos/rust.png create mode 100644 public/assets/images/tech_logos/sass.png create mode 100644 src/pages/software-development/components/service-section.js diff --git a/constants.js b/constants.js index 67897a2..32116ec 100644 --- a/constants.js +++ b/constants.js @@ -1,6 +1,6 @@ const { getServerUrl } = require("./config"); module.exports = { - images_url: `${getServerUrl()}assets/images`, + images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; diff --git a/public/articles/games/fantom_quest/fantom_quest.json b/public/articles/games/fantom_quest/fantom_quest.json index 3fcaeae..9e0e967 100755 --- a/public/articles/games/fantom_quest/fantom_quest.json +++ b/public/articles/games/fantom_quest/fantom_quest.json @@ -2,7 +2,6 @@ "title": "Fantom Quest", "subtitle": "Le labyrinthe de la quête d'identité", "tags": ["jeu web", "pixelart", "javascript", "labyrinthe"], - "status": "wip", "body": "<file>fantom_quest.txt", "images": [ "screen_fantom_quest_1.jpg", diff --git a/public/articles/software/index.json b/public/articles/software/index.json index b2212f7..9eeda8b 100755 --- a/public/articles/software/index.json +++ b/public/articles/software/index.json @@ -1,3 +1,3 @@ { - "articles": ["watergun"] + "articles": ["watergun", "website-template"] } diff --git a/public/articles/software/watergun/watergun.json b/public/articles/software/watergun/watergun.json index f87ffae..f12c1ba 100755 --- a/public/articles/software/watergun/watergun.json +++ b/public/articles/software/watergun/watergun.json @@ -1,7 +1,6 @@ { "title": "Watergun", "date": "2021/01/23", - "status": "wip", "subtitle": "Un éditeur de site web ultra-light", "body": "<file>watergun.txt", "technical": { diff --git a/public/articles/software/website-template/images/kuadrado-template-screen.png b/public/articles/software/website-template/images/kuadrado-template-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..1604d22f54f25008c6bdbcd7e143b243149db66c GIT binary patch literal 6294 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 Z;FG^7Twgl0|Nf5)ATO&TQz~WR|6iR2mO}sl literal 0 HcmV?d00001 diff --git a/public/articles/software/website-template/website-template.json b/public/articles/software/website-template/website-template.json new file mode 100644 index 0000000..6f5dd94 --- /dev/null +++ b/public/articles/software/website-template/website-template.json @@ -0,0 +1,13 @@ +{ + "title": "Website template", + "date": "2021/01/28", + "subtitle": "Modèle de site statique simple et dynamique", + "body": "<file>website-template.txt", + "technical": { + "stack": ["Javascript", "Browserify", "Nginx", "Docker"], + "license": "MIT", + "repository": "https://gitlab.com/peter_rabbit/kuadrado-website-template", + "version": "0.1.0" + }, + "images": ["kuadrado-template-screen.png"] +} diff --git a/public/articles/software/website-template/website-template.txt b/public/articles/software/website-template/website-template.txt new file mode 100644 index 0000000..49fba5b --- /dev/null +++ b/public/articles/software/website-template/website-template.txt @@ -0,0 +1,5 @@ +Basé sur les mêmes mécanismes de rendu dynamique que pour Watergun, ce modèle de site web propose une base réutilisable pour n'importe quel site statique simple et moderne. + +Aucun framework ni aucune librairie n'est utilisée dans le moteur de rendu du DOM. L'objectif étant un maximum de légèreté et de simplicité à la fois dans le code mais aussi dans le résultat final. + +Ce modèle est celui qui a servi pour le présent site. \ No newline at end of file diff --git a/public/assets/images/tech_logos/apache.png b/public/assets/images/tech_logos/apache.png new file mode 100644 index 0000000000000000000000000000000000000000..24c10f44733ae7c98647f08d031dfa383be38c13 GIT binary patch literal 5056 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 W=8|*#h;NAi0000<MNUMnLSTZJ^_cnq literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/c.png b/public/assets/images/tech_logos/c.png new file mode 100644 index 0000000000000000000000000000000000000000..fc00d068b1255276a15503c4f055fc24f6f233a9 GIT binary patch literal 8308 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/css.png b/public/assets/images/tech_logos/css.png new file mode 100644 index 0000000000000000000000000000000000000000..499afaaab62a968d7ab1baf35b5e04154c92daba GIT binary patch literal 6155 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/docker.png b/public/assets/images/tech_logos/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..61228d658ea6d01bb2a99ca1b24cffe6d5bddcd1 GIT binary patch literal 2045 zcmV<Z2LkwsP)<h;3K|Lk000e1NJLTq0077U006520{{R38TLUb0008@dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=E5lG`8*hTl0wkANhE#Bnf~nckqs?++&4O|~!F zK6NHAF<8iw&?iVZfBhWc2O7D0NNS!-&Jit@RJdZ|@oHr~DW>&Ytv%N0Ssv=K7Z@VJ zDA%jitzRM6j}LA;$Fn^6USZ#c=r+8XOwV)PKL-gpUvf&@P&uzjE^ePgJ+`6V;zua^ zmp-<)+I$aB0z;O%!jUkaLK4^0uLxxRNGitpWO1G|#+<|g1`&GXCS6<FdBV!&o3{M1 z-5Bo#KGN|N(cSzjt$X%Dt8Xabl~&@dA}`6$_xMM7AbnYo+dqHyoP5vtSw7M#g1xmD zDr0mX<GglPQwD;(H}%-!nn4d$n5JtF2rWm$PhrAVFX$d?Y{+qsEgtBN3NbJaO4O;+ zpmU9l8bVBb1~yEX8^}(fi*ez$5U1H`ut||F4$uwdAdvDM3oW-Lwy?Z8Ja>XB6O7H; z_;wH9{a}n)>O?b_y~e8oiFqa)VN7!K2{jO*v6HGR!H@phCRd4*8nPT<xgfE}W#Ul! zxCvx|7APvl>u{3wZ2&2PYeg_5AOLD4N|~ZD8xa!e08|k=OX33rNR>N+<Rp^821g98 z@rlt=Wo3v1<haa0LM4lVO_2&%DJkm5lB0&IiY8UfYU*0FX2~gQ&e`(36sw7)U~1XS z+=^8fPq;O+o4XgUg^S?Q)RK!8FQwE9pB0uXzOGQH_25H}bZ9v8VTT{(s14=QQqz{3 zHE*TW&Rsh0m7cqG@1@t1PL$G_PCfH!r=R7l1En@3j5KuQVZ%om^`^G5e(B$!Mw=Qh zQd7}xYLJ>eOwhbebTR`l4v9eACIS>RPiE06C7$Favsf6XLK#8oWY%dC1Hp6>>!1g_ zz!%X;?w_~?OHbVRZ^?y;?wjPka{CjtbqBXa>^g-rsZntH5M^brP?8f@&w7dX7+wW` zJH8FQ4ZRJ$4ZRJ$4gF7s@Yh+wZ#r#hVXs@)a{vGVhG|1XP)S2WAaHVTW@&6?004NL zeUUpz!%!54|F%kfR2=Le(ji0D#e%4aqgJ5^6+*4hs)NZ*U(lo>NpW!$Tni397OM^} z&bm6d3WDGR#Ldk~(M3u;Hz~A;@xbMN{P+An_nr&*>t&{z9piwiSw<=m7c$vZA@~X( zBIrdoMkQwIbE24pXMNpMH`QH?XL<MiS$#^*WPnc~o@KgW5pNJrZ(2I%ec~`HN(%8g z@t8puB!1+&?D8Aug2R5E88*_XdEzj!P-tVhjaku9iKmF8imFk*KjX5(d5g1JuCnGm z`3pliZDpD3v?54g5lavuKt>fMlwl!8yGDwM6rIOC{6mgkB$rIC5*RraP=N}`@q_=t z@7bF9$q6?p6bCwAZ2Myv2<`%nnr(j{+jipw2s{H<TFYOl12dnb*IHWi2<YDiF0Nae zya!zF0E17uWJrz_pyki!f%h}|rYtaU3-qkHb8DXC^Z`iItdcjt!67hGpzL*zcXzeV z?cbi}{C)sPjB=KKUkP&n000J1OjJe6G*%;&*a-b6WB>pF0d!JMQvg8b*k%9#00Cl4 zM??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ju}A3lSj65Dh;700P}f zL_t(o!|j(lj@vL0hN-Af$u`Aed4ZHEf)wG+Rt$WQT!n@Tm&px6U@yRuz!IFyh<Z>G z$1t4T&Qr<yL~36DP!^)F4uYuLgS<C+KZB&;Qhg7=$B>34t!0VhNEbLFBTEuXfFtS( zF$~dQ54j$|SIBA_-2V}5n#ltIB%UGtT?E!x55zMb07RAmPs|;px|_O6QkBS(w0JA4 z1n<c*o{bTy>vfZzt-#UTQpLU5V*S<(N7CAbI}0qa9I=8Uh9%pm>jZ8k=?)TE4|o#p zApQ>GO3mI#>>Z>SNQz7K%_OlT?z;aL5?JE*!l)(Z3Te6I?1*7WDb0pU!M5QdOTu9U z)B@cSw;SvAaJFR-97)IVRCT&c>26B3oNHxz%;7w*J5U647@&%Apm1*gn#H+PAGr0I zt7_>iB8v6%wf6pb(I4@!54KO0tEsD(vdBGIYOHppQ@0TNAY0M}{H-nZJdtP7qE?*r zBoAd9ns*W`Jwso_jVCDq{Iwkk6u(1}(08J1-*9G;Zmgu?)kCD!_^2mAk9xO?6pG4L zxEdb~D?ur`W+XD<jWiM(ZMM%lAklFmNvP0)#r=Gj1d`s%*g{LgOyf3ZTpDB$Kh#ff z$_qG=$}vVbCyW<kds28yInkeJ&h|$1L&U)Gj!?gW9@PWQpB|SDK{SzarhY}CjZgy( zlavX)ou*H~^awc<HFzS1h@(y9YnaG|h@J@sxFIi@_?1K=ZXtmsaYvTjUgPmS*@JWb zz#qcFYXju9XeXjiOQfbZdM14)Q+8}`Y1d3JqbJI!q>Nha7J?VhB)rBdd{$UNT>C8( ztXxBt!@qtn*arbC7e}Ien*`Qts&*G;XflyWV|1Q6<btHd-jOL2n)z#2HPknGO-BdF z(uw2_bz;aTj}uGxA{o0kd>IcvE0&JO;Kq&*-^W9Qq%*0+%qsah|55E7?MqYaS)luk be-i%yc3|I3rFE5d00000NkvXXu0mjf8C9x{ literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/html.png b/public/assets/images/tech_logos/html.png new file mode 100644 index 0000000000000000000000000000000000000000..5f78f2d438d0fd7e69d52834e0fa6e791838fd72 GIT binary patch literal 5924 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 GLSTZ8^I^OI literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/js.png b/public/assets/images/tech_logos/js.png new file mode 100644 index 0000000000000000000000000000000000000000..f768218684cdb1eec27793b14d49cbac1a1c4dba GIT binary patch literal 4888 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 KMNUMnLSTX&;2!G$ literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/linux.png b/public/assets/images/tech_logos/linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6226359e12db783f46ff21b7bf61fd76d9b42555 GIT binary patch literal 12288 zcmV+bF#peqP)<h;3K|Lk000e1NJLTq0077U0077Y0{{R3Uv{&t001P^dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+NGRnmLxZht^acsy#&s~a!8Oo=k4GvzrRb5NGX+4 zORCB&DMB6|<}?Dh0|+a3{{R2G?tl2xTgfh$*6XO%^Cyoy;^dp|KYzyickucB`~9)+ zpM{@acRzj*c`5NVeg3n}ulG-0FTef5kL#?TUw8fMC$WEBDEzqa`;+v^`hNd@k-Q#1 zuZR3~p>aOn)Y04Tm%6?#w9Wsvl&^pCZ@2gU=)c`hFEn;(7d|M(cv49I{kwlwkn~ST zldt-BOg-wm#P=aJ_kPg7_a=XCDSa<LebyDeUjM#b?|*FI_jdfWq91?yuhIJPUHJ3Y z-5;Zs<JVi#A2z@K`1+@>yHNh{gY@Hb;_p8>_pk5b&##~SxnK9w?R@=n@9y`W&)v;j z2|@k3sqb5P-|@c1N9d!wV`<el{wZ9dy}yIM-A`}q@%H8ye=Up<3F8ep>@dR(=Y6$c zEHTI9V&j__jmYZ7o?0ByUWl{)h8tTNX{SyMjdV!78h@-MypJ8;-21f7C-1;pW8h*z zVgI*(-M{^XdzI=T`2J(BSXYeNY?h(O>EFDKh=lvKspW0(_uoJMQCt%dEZSwql?NNU zK9^V}{DuVS1v>G@!q-o6hPJ;hz!ve*g~fzK1c+KlCDh<sj4cE<vJ;@m(qqbT5rI%j z+$=KYlq#{I#Q11_rG@v_SRyYwUI)yGL`gL@Vl&btSUDH+r{zu#&5}wkrPR_&FQd$w zYObZ$+NwZtw$!p~rPbD2Z==ngdhVsy-g@t&&k;ugG|Q-?jXuVhlh2%7dGgznH_W-> zN-MA8R$XoNHP$rJ$Fdcx)~wsGx#Lb7T-kNE-S^n@ghMKwe9Eb(oqoodmsGpS-F(Zf zx7~inoj;=X71m$={)?!Euc*ZrDZR1%h#If9_I-&UI4O!50gEmNBHk1N5;`hozK5Kn zBBz-75vht2S!7Ync2LBKU_K$18@^-b;wPet+<z4}*YZzsi~niloI>|6Blm0E{w!)+ z#Aq*KpDNU*`b72Ju-9C3oXZW3bGWs^KWEzJlN`HI0yrA`<bVE`uVe0WPFtDZUXATZ z@$?e<ysfZ^?aSv1R6qYN;u|({oG`AhnNPMF&$(d`yJFh9a8n+3)6L=B5-t#EX>kYK z4eNEauhoO?k*UdXde~P~xQ!3Ax%O?s+qm1YxQGdh&v~xPZ*>vD>}*Uv$+7cDfyPJI z%4=Z~_EYvK?0g%c*T%Nnw$s4dJ9kk~h~^fM5({qg63XQ$p1f<^F|Iyh5qRW&&#?kP z__Eodrh7Sc&wcwy75$RUL@kjR_O(MhE4%K`oMdQ>zF8&+Wwfx%SibT3Id6Rsk?Fhk z36z0GHVAH=H~BSL!;Poh=whiI+G>7L5#bs?D=oCe)(n&c3XJ?nr-p-G3H$7Odt=pP z7Td654U|JRik715xu$NOqS?N-wVS__Oe<~8l8u|To~@GZg^PM4K?7l^?L@Yg;Fax@ zi@9~Sa}spLzZ&T__hvWyCR8`>lNDa@_QH<3O+U`KnH;-m%(wtow%*OW$&^UO5u;j) z`PvWl8E4q}W@^~_o!r<;2R5HCQUBzt`>P-PgRiGI16!!DeS?FPN8@$SsYE|dYgK$r z#3V=uk(kvej5AifwN9##?c{#JkxSm*RqLAmy5KJ<R>KC8xW`VFNT2oq<HJwdeR%(F zkb+F(qe)Ap=@{FV?<W?1EBE8Hk@u{beT{Wd|A5Q72Ff3j+aKy|b**y*TWf_XAk1SD zmt6V6&farVaK_S0`rXX~2_fFT6*>ZU0|^M?W_=*}NBU$>J~e98&aN;bkTzl3ei15^ zJSYtwkJ@szN_w(|vysDfuAb((ygkH2X~u0ig>^3PT{+IoMfY~9@;nbg|Ib4A{nh>H z4-QEaPP?Ejm8x_Eo32@Du>raOk?GYD00}mj4Y&Z?5D?x{bDwn(<QzP=5yR<JcD|>P zq^(o^kluoDYMO9?4WGDjfoc%rt+`-Ap>n{BAednVdA@q1-16|iT&uz_Q0h>x*V=+~ zsEy7Q2n>Zn-460-LLo`mc28Co5@k4S?{X~MydF>hKRNb|#<j8X0HVeLbgkqzAs4$7 zQ-c-~AOg`sNuY{_CPJ)zDwpk<7Y14rP^S2RJ(9EtRM5U@FJO*BT#j_OJ*>9toy|sy z6_1jKTn)Db@8{cC0GC_P>jeXOH%L+ibUi#Bk0$O8<`68$<|TrSPlDM%7SI6LEO2ER zdu7P76;GMuL5a!tLCFb7AsDP4galtm^s>(gjZe9dIdyrs5**TYoWi#Ncy+!fJvLwr ztK5sqo74PBta?*x9#l0pmP9A>XX_<rz>OTS#A}h1-Ux#*_?@NN?Q5Qsh{HXz;v$s& zQX?eZf0@&tukOFk=}$^KPgOz#J2i+2mVpb$sGH0k=p|Cm8zhas05Et@Lvw9jzP(#2 zL_vtseYvh0z)}jgNqSQ9%1moMSVe)%120f4adc>z)PzZ}U?{|O)55|8s)zTS(VaGW zA?%9871E=?&j_;?;RZ_XAe4YhTo;?2+s@wfK@^n%9#(g>u+wQ|_H7Lfx2XWM0VM!F zjoW9bmz)7v;V6h4WW+>Kd*CuFI3<w{=|0_8L~xGp;t63Uma!#9a*tF395yesdD0lL zcm;N0XqZx3trC4!Wg`mICTzZ^%LVCzZiUssWt^Q^ii2y63)h~Ys7zp<f>|R;-dz=A zgHb9AMn@uqLQKx2WUHjYGRy!A802n9$8ej-$-(~)71BXjuN47J2}tnQ;#{6hLwoR> z4$gsD!TK23lhntG6HErUv2&nNLrSbQHnJ-spXVf>@0@Btl#38Y9ATiwbrdCh-`SSg zk;-*#)EIcr?UuYcF(4<1Gsv?yzd+$YF{ra%5MLhMhHw~rxQpCtiKz2d?iX_4za{C* z!gqr-VWB{hC(fM&h8Y8~1<JI8DWL7RHNSyc-oN>ug!w}3#F`bF^-@0}xcPKj1+uMa zNvR@T``N~2&*7dgD4ek<4v<TUQu5N|NY&W(is_Die13qM07UfAVHy9tXd!JtDAWyr zWTF60up=kNJlP$C59<GYAufO#4;1L3M$u&4FDe5&lv-O}P-Ocf%s+bk!X0o0?|6Ae zb+~(KB-7?$)55AF8l>{{G_{=dJsCFfIlPeg1-Yjvl-(v-JvUHzGexViV;ikP4s0QU zArHz#QjPsRJxS^VuAs=SBOMY87&s@wZUc(!Bjk8TbDMP=bh0}t7mW%E@o`-rWwj=- z3zdc8ieO%b0Qm=Bf(|Z9-;j{MvqE?d+5m$WVL2^A-ECeFDNx<$rzW&Vh<5}gIMYfF ztt3-d&!FHVKBck~0O9Zwy>ovX+Y@R=vT#olH0eGy%aY(==o>0Q;+r9{Iy8Cxq6UFf z!2($4pd0xFvKF718*erYuBvLaUdeM9xnTA-iW+r@j{{Z=B*ZFm?^HS-jzVxiU5cPh zS)JWMID%jg17%>aD2<p?5hOf@4Xaf*0wjP$7)rd~eSN89(~&lb9ag2WZ(u8Y&BtuQ z?E&~!$rhG?L`Xmwb%okX5aPmrk$PQV1^`s&*(_3pDg@6lmq|eYUnxB50~R3@FzHbC ztGBt<L1D^|f{VBmiWt(*=E{28$6CeULo@=uAE;)wI50)u{_=0Wy7CX-2(b_!1cqun zZCoGeglRn<H$!bW_4d#c<SU#wab6S}`alGa{DLT9iO~pimi~ya6nNUNvK2>$c*YDY ze*v~MgH2OwAtRNox2IExC|Jf{tTBlO7f0+g;RR69$Dnh@8sgJHhavNer{$_r=M<at zHm)hzP*a#>j>sk|sUS3g=?i}4Rh8j*Oi0$tE6Qh(f9|w{=R&>8bX7dv*=R(38Kx6^ zPbnY(4Zmx#MEHU{0<Qqz?Jegc{V%zH9rXgS-68+2l2}i<qT5jUNh&p?+cpdw5MuM% z-e|y8s8hBR>m9L&09bNMV9M^PurOIr7#uhJl$h3{gKi52d$<JdVj;4YFahjBw;IA3 z5lgCIYGk8I@fqcf%|Vi0%sKUejD<VX*yQIUd+jV&XPZ`?!viK&+ot9?;eR4WZC&gN zZvUV`I$n%Ds_;ZXrxuLpzSuo*vqEiP%mk7%6pz{yy)Hi2p$d_^usKeO8(4rL=(bQ0 zghPmmWDBhwG{urMo)?`iaI)PbE2^3lm`4b*L4dpmX5}gwT&gpup+&VPSSgnad&1lJ zDWVFp$&?^}r)(K6OKs(F+>$<Kt*>`gM!>4H7zL$h8swI&_NfSA<UbjKZ|PbLAWFGV zu+g)TV1Z+mkQiILr#jaG^+35_e+W+#Pf#%?5niSeBJxIKfvnR?I5!}V^Ns#ER(QPH z4ue>+1?=|V17)64Ci^RrrNo0;z#Zvmgj?P)wRL#qZXI=~u2HpL-~2~k3+NOS$y*$E z1y{8`I+ae1%9(iezH7#voF&d7U1gUjpAML-HAWDJh$8pZ3aS(@f=JY%fJcHI6)<W6 zdAA;CL<D!3A;R3ohe{cg2ONfX9wc~!zp#?Bh~Uxtdw?N|_)2glHH{Mb&;w8riAW-# z_{pArH^eNAxF|8woM1egcC%B2F2Ef5eHB18J`UB3#zoih>P<xZt2YQ14l0o(Mx3I< zdJ22@5c@Hw#!(V74LFw77sLiCa>6XVs?8pKM^rA@W^L+@<b-p^)Y(_;9qveYCI}K< ze{Gip0rJ^MOtC3&2DgxgSS=ICoI(O2ehHNCGMH+(9<YJ5NNiX^jZFST>c4otd8bGy zCuCy)Gmt;s0)9y}bwkUeiIgGu3-Zn*iLV2`c3dY~3Bn}5BG`2AYi-9ugvU@XE*G>4 zSHnG#3IuBt2gDn{jT4iLEIOKTL&rPAV>&zfD_8ah1CIg$H!5U5x*aw<@B9=1*+RJ1 zL61XvhxEr%VM~^~q!cy_2ZnxPi*V?OQ5?ELD8z?`0Unl7)TPRYWur166)Fxis>Q1r zeH@r1@vS;0C*d3Xz=E2@dW!^^;dSNMMl^CcJDjhk9MS+l3J3IpOs?a@NoI`wX#a$7 z|KjVM4vdiKf1N5t><Je9`$X|o6%}fIQKY7>0O^bz>`|K5Vg_k*Q?Hv1cc_}$&E&e( zQRaT&S6^f_p=)Sm$iA|L$R4s9T0{2_HJp-q6~GNjvA?#@Ef2qfP*4pGwgWzZ;cBpq zKqqyvb0^J)6lNn3kr-JDCK(08s-Wo{sI@|ZV|7`2Sz)W8Ap3*iG?1D401@S{vBm0& z;TKu6lz5an1T-(Sa*q3L%X<DR3~ONRC4(&*(1~C4V)mnkFEZaRUT98-){=E#mKQ~K z^yMa57N0cn`N;hs6C9D*;4ax6go<e6v)<_^`E>_TOF|Ls=TxU2=Tyi)LLo)Rw_FA( zn3Bh;0FparHFh>;xlsdvQoI{)oQ%!JGGg_$cV4zN7ab|i3}1pF>-FDqS_gBl_Bq0G zR02bKp1pd+O|&(NH5U;fiUL*I;6981YIvcL5cx{kLLHX4;C<v7R6}{~cRUne<%&k3 z{vhq@P=es~#LQrm(YjqQZ{x2uD21{S3qaSxX0R%Ry#ciyNJF9%f>%|)oU=?F2;o<5 zgs|nhvU+!55Cy#k<%;5B_Yqp1y<jb+V%((3&VHxIhA09~aQ}v6_c-&ZaRdsPY@+(L zbYovt3oNiWs9POMqDhT~T^sk0{KOR?f7YZ1P+mHjSTMSrbmPO?!R<scm)%3_6@by9 z0;*a@q&w1<5@6|g#RDBK>VvX~)FQ4Al@--I43cv|+7=vwFI<xRiq0g#r^T=^4OxaW zJn+_p16F+fP167P>WUB>F_Xb=g4N_Qd_e#${C>?OKW4c%RGyjce#H<;4Jp1;*H~(| z51`pC<Zq{9fFSY}qJ+_X<~C85=d}@<jjEa<Ee^0cm6L5lq*yTkne+vfij%k_+laGq zUlue(pu>}lE_=#6A#^=&QZHeY>g6P^(sP*B4=gl_aJdMUjHQ-VW6x@U%Hg{psm&fE zx~Ty*`^82cuUd@sQ$eDAQBGLs6x4!p?9HS!6y>0boVI0iWPsrrK>(5IH75_2Xlfx8 z;G*Q?kz>3G5@o;5+!zJNo}&EkRdw(wfb`HosgQCebY7+umo|;4Pbz?VWjiKIg?9Et zbsvXup)%3;{8G)7vbtnPUX!A<y#J|$1GCvG%D7%)fJ@>Y<d3GbO-wj<lgH<xc!*XP zDgf2VCVG@Fe*%?LU{R_cEQaZ73;9m)nQ{V8%p>v|Yu}{rGY;wz<}orh46&mVZTz3= zl6?eu5Tk~Q2MS?r9B@zs0q3TsD%p3W8p$Klj~wIb1kPuS^iab=6$0_7psz#MVFx?{ zGbMz2^=ijhNb2~{*VM62C@*)%Lhb=7x{v!8zHooBgDCUYJC3idaU>=aS&zdAIzR%| z$o2|gg74eNKqqhBF&bpEX;NZup*83SW?c+KBf&O#hFr=hv?rA9h@2&HJBy~MLMg6y z^)ylh=@C!DGyI!pH}Id$P=JfP=Ehg^F``snb7HI2E~z}0*fycb+^C3Qwl$DpI^LJ# zo|6i|DUwH!G!j$tRvng6NA|E}!ZZR4aaMVivTN-Q_LGw&c@RkI^1}g7wzCCD?uMWc zr>N%-{#{ny=6D>1-|KiCuNJm-H!d(M;!?9Pju9VpAp8idx^S4X?$gXLhz_|ou!NRa zFBA|LM)#7a4e)1K9>4z26cve$E5((cET0AfT;Twf>}ER)Cdkk?c#MWa8f5kx%ZWX{ zhG1krxK*8IAbLLQMeb6nVB%eBKUp~r2BTOLSQ^xquW{k4$>N0XgWi)L>M0eNf3^yn z9Aq1pwuuU*(#}{?c<H)cbzE{0nb0ul-Vg>80PMAODf$K~@^4ERg1RX(fQeK?J(23? zHF1uoK3yJs@#>#t{HDF8G<=DC8`7zdal_wkT~F@B*8)Zrm#&;5Sh$o8*5;|g*CCHm zX&E_5E^R{WVeK7oNd|?d{(2aW5>RgosS$MJ)Dg_ijg^i9!#*KV$cq-RbMVnl8LN2+ zdQi)&4}2a>O9?m#GZsu_$8Kj8fM^Dt*<{Ev0DxNv^#B-nzIroPGby3IH6w`JM`r@j z(NT|@dD!eR@j*ku%_cp!;XN!!oWzWD#I2*5z!Y-B0&a7d4sS~OoK*}2`)p%sOhL@0 zLC?Ji9UzH{AyH(CZ|yJNqdX(#PTyxW$*@~$67@VE)2{W>ED6lEjvmPtH3l%f*zbsP zOS-26IvSQ*a(s+)*b$_B&>444+X0x;XyI>bM1}?>G!}Qw_uLmzoC|1y9^!Uy6jT+D zywSwb(qTMeS}6``8)7*w^;LD2OYSXVjWyEH39(B7cY($A>iWTys8=AwbR@PD&cZ6v z5W8xKoQcItKnD^}-4R^l)<FZvD-#E9u!dvPZB%lNJ~U+j*$*?4(-MNLXJ(S8$h{yP zO4_(WZB7D)04sEQ-h<MIzo#3MAcKa6)yybc4d;ZI+9lU3Bwuoc-NIE%VGh&j6<!J? z>G*w%ToLijeY=HK3TaU7QaM3K_AGU3a0b<k;}yW6U#2DnawE6yV8hWDr~=9brfUs_ z@4y5d_*|W%lS^%DFl(SNGs!?yz=#Hwp7xFsC*^@e;>`df`Jy9dq%iuyP1p&!1JJ6` zyfG$$4O%2GEJ*=Ug&DVROCt{#y^L%o;M6K8rty|02*g2Z>;<|2=GD^M)VNWuS!db6 zctN^qnYs(i!e8YWZ*c*n+7siG@;M;{0<9BN9UDa{C6&|NLlcK2?znAv8NRKPYN{aa zs{^eOTqo~_tt8hJH?$R+*O3PsMi%Z@JO|mm0I7#g>W(7%$cw7fLO`@UOLdzhnHsLb zp<>g3F0~jWgt*?iedr8=AnKNnsTU6oU(KbUR@m#MqbA&}LrO=lbDAdAN-Q+pbK*0G zq&0b0xi7MyYkUY5Z8`MyP7xB;L*pGw{ZU}#c}P>(x;Omzc;vUKjDQH~H}BWM8XB}+ zn9Oif(HSejB)_-BDb~edM0)pu1#nXuyp7~A2_=27=Fm6_OJx}|X=0`$@2pJq6atbP zg#ytZWQEgAF7UW0zpLg))_SoLVP-sYDv&Z^W&<_OIPvI1odT7$#zAmHV4o&`oCP3L zE#jL3a%WZU3gA^|kFCj684(0QbSf}3^m{MTLHN4hOD&rO!iSOBC}Rqdaw*spc%hZ2 z+91A$2K-IQ@ph35$r=QtR&j=!{Zl{7R|NZORkohgp$Iy6Y)k#rCEuy`@Y47RxhM3q zsPi^8DL~@`WC2FG;`XmYQ>cdy8Olf@6JSg-ToWt%%%wU~qaKXJ%oo@b5`3+CBm^)n zDWKt!?66-`e1y=bLC4fkJ{VWo<`V(kIFYfY=AEqa(6I-mA2Bpb)3E?r1EmnU(>yil z_)N9otJ&n8r`qEo>aaLW1Y*`+AP&Jt<q0MRuQ>D(O^5kxJy07p`(_Xxatk-7_bO|m zp@cPuSExij2#wr_dMrirXr?&aHjmoJ#xJnh%~b1G@(5Cf(_+v_&@>G$XboG<W|r+$ zfio+)W4zQq(##aysS{U+736IjDARcA2>nF~E1>qO$RFvn;w76+lmrSRK#qo6y4vUD zIMt7MavSkFq_(sii54jevR9L@57n{`7LLXQuFh(ZanKn#_fDvEY=sy<s1aDVN6q|V z@THu^^YI4Nh7o`PM<#9-@Y5;>#F+$Z5Wy*_Vh@1$luL9Ys<}z!vu}kMf&8-FOQRDr zl61XRJ-QL|%n>8N%PKZL2y|ET4oFl_)KP}nbRGvD>Uf@f)Ikk$eo4DPZU!?z>i!PO zU;H7(lGJHm)Oy>RY;A@bf!J_&I%eS-SXpjLvbC!pgV#G7;EAd*xq>95|1>MH!IH>` zWAee1km}ZwN#G_Wr74QuNV|w8Cky#a+#qqBPy<5lAS;P)ML-Z4&yF6=*q-EgO|x92 znQ5BCYotWxkzKf&<Opg`<4y1*pJvBY`l}L_y5>I`O&W(qc)Yo8Al}{wMRKPWER!X% zSq-mavQP1^y{(aYoyxT?r?;@3NqB@+dqM?I2m^o}I{ZTmK(u4xG?a`{bD{u}>1>FM zMz}*GcEpSmRYy8Ik~fnNOMO)|Z5b+9DW5%&6l#=K4Gr{-(M%$bta}<7c^K?rK92~- z*MV;#<el(VqBhhh&ix^eTFa27D5QQhNoOX>pVK9&cflZP{O3|42oB_+X{74G*{Q$6 znU{RJ#PYsNMDgs?x!*P$UL%8kaTbG}(%>IAI+Dh{xy7yHFX{P&bgCMcL<|?~1V*&5 zy$)w(RiK@8a$~P&m5B!CZR?C4H1(PxOt(qypjp&BCNeq&90lxX5j$F)mI<a5wk@eU zJqucDB?MdE(!?5zo+2UWaHp2XPQqh<G5%5($a+l_>F7{HXLwmLutz$bsd>%-h6IfU zHiTV*rI7mw&pCBm0D`lpQO)73Q4H*Lb%+g6&3kSbd1zh(rSBqF`-C_tI$~0+M@E?K zp<!@{4ZVj^0xUANo8RHql8O>^V68(3gX|eM*4R-M5qoyu<j+;(Ph;KR!{#?3s4hlh z;v2eK>hY64RmDz`s-IKY8+GhZpUJbCxQ?vBHr)lfl@-(sqia~3JZn-<#R0-9BhyCe z_(5YA3OC6IAZwxuXOA_*@hvr`0F#DQM`w_Uo1d2s!mj2<-4h^+S(?GKH!^idCbDmg z32_i@&BiSGUCg{k`fnZGBip1SSvPtlCf9B)l6J^74U<mX8+q;#IO?-#vLUTZ;1Pxa zie6Qfq#*=7CNkn{*B+!LrUr9KSrk2<01|;?bCuBhrwET`f4C(LddpAw*Te?)xCGn! zM2}`emuoKqfIJ?ZJFHQ4HmECg8$t%QQ&qF4Bn_ejJ)=SR4mPb9v=P9qXM2>{CCZ#t zjkx+;DKU8yez6fs(=g813n8Al(arDZK$8zbR3hIo)DaeAElYWXfXO<9*0T|>@8hWt zE~9w@g%CTATLK%(dee-2p2n9n7ooFFd<r^}6@{edEi`t-eHWcDT^X)GP`HmE?;noh zEitP`7~1Ls+FbK~9}m1ksCqjqh<M*r{03!#KmZPRm>$P^;st`KhC2wQSubI!&P{Z# z6WN&I;u|H@>{YFjg&I32DLa6xE@RdVx(XVQ)TlVMh&0VXGr(8J(%54|p<w)S+S_!P zFx3^Cqn<t|0(<)v`EXpAWG{~6qBqon0`A`llP5KBaWF-}^644B_IU>!^LfuKMTb@k z*&t{n6E)<<t(><tL)C~Kz}=v+u7n{Gb8_+cGC1-Lc^a4)vGxQf#woQh&?X31Tn_bJ z^;}KYdf3cZ^r)A0$=2dD!1QT2dD9tDih9xr(}jxG+{4=Vw|#Y}=Mg#sX-Ov4_Y{)U zn3{YT;ftzO_mhgFl(`<Y0et|ib$T`{H60Sen1&QVN54r{e-(h4brdy*9JL;W*|LKd zkRnG<Q{#VbfJ<%}EThg)W^dGUK_gwGG1wcFK>PGl&WE7(bvknxaDFW5J%EDbXz!YO zu43cUAOos?WC(=2Jx7BkXck#E=pVtOnQrSyzhu6$%NO#6(vWd_90&9tYH?y@u2)h; z#JG+U5Q9liLFnOCoHiWY5c=CtBjIr}3IJTlQ(gbo@%-;5JV8=Z26I>R4CGc@ofSzS zmE2MP8tql-IvswHp78R}n0)1)4zDBeX4i;cC2z<p?gUqLGz@^xR3&pwjB2E?FeJF6 zBJ5_zsQ_4Kp%;HfsIYZXr#25NhsB1LsoJZ#QpJ_{BZ*3D&L<%s+;w*^+Tot^#2@O3 zlF5z@C2Pn3gAIX?zM){T&a2e(#<+U$p<*FI*W;7tX=74WPo;6M<W$z|A6zGO3&`u7 z1a^d>x4Iha=+$&-gy3<a=%cNP-Zx7E?3lDT?%Put5COU$wptSth{)Wg!66+fz`(o) zAT6%^1_`!1I`@uJv&GMMBjgHB;z((t1yGCEC_muiVHu2F)r<ygqR=rS1{V&?o!563 zssl&$hlMSx;KNvVyHYl4fspAGmxp%&pq(_Vt|K@C6<CWrEg*mjd`&uyjFT-mgLX8k zYi!Ueacj~MnTgErlsFM%2g*c+lHR<ZG=;LGo^z{1T2T)?pe8jtZHSyKOc1$YyiGCy z+j(@B-+)>j{;#J5Izq^}P{H}}ZGkpI#QIi(SxmFz>>m<L!|m`V|Am!9j2vlRP*}&& zqvk&Pg7Tc{z!y*eFCc-_HIAZ_L)??*&MAyY39|~^7$WdJ{jgZ$rciaZ4Y-7jymX1I z#NrV7I9dQG_W*J)x(wTZUyvCAc`863)Z1nQk-jKNsUeMBgSd$E<T~twj6=Ps`{f_6 zW})}cj5KTvK(0C^ytx=J6p~sqVYsELQ~jnVCT+T-S((?%NlQit`~WcLkN`%+>Ht;E zYoYKOLAeF4iQwdpi4a7OOAXV(-yyvJqX8YVN1Z)sxS5;PSt5!uB8#l*Nhv-1#4qXD z>a(sYvLA%j)Com!LC?Jm4V)mc5lP?@Dxb}lKLu)tQpGsGvwgWeJ<BD<uHIxp@WQXL zVp1JoI1v=+;*2f_uyuqhX%#E(I=``D{EZ$ZMR>wRU;u{oO|xyCXpq5V`g=G>hvE>g z{1_~v$y`>b2hYTu7)p6gjYQz-O*>XTNq;m&ht#lyliV&tvb;%03>yB^kh>0=<P`Pf zCHvXXore^?Y9;Fl&Eb{oGGd`UYoh^h2PtW8OipKq@1N->kFDO1@M>*X2TIjI((KHA zbj3b_)96y2AG1fGH#dAPYAWdIu=?(cPep%T4g9=c+x!koh1gR5e%brqe&F6uJh!R= z26W)o^N;wEW$4oP|3%TVMCBaNwYr|HNMwgT)G2h=uo$119qyKtL^4U?1*|c?1CfN- z*OOULwBp->MyWEi=Jo6gic~hw&v&Y<G1__DG|j#aofc&^jb-|l9s|Tm);EKS*2R{Z zPELa!|ClGQ9Cbvrn#N!CkjY?=a4r|Sf*f9mXD>~j)JZV4(zuKtUQjrBi+W!aW6)E+ z>}mrh5#@-CfXhbqSCb~74nLTUIPq<;QpB4EJ)%aMvYt)*2rQ{Cbz5*#aB<N{Xs*RU zmSj{A?IOVSEa}jE4DJBemw>&4!KmssWj#4CFd78GFTi2EF$mNtb{fToC=|}22Efyr z)O0HBwN77Wh!hLCsZj$x3n7+$Pao<W4+2JJ4*YXTJ3B0vp1v4K|F;NLXC89pmB86V zX0!#fRrSW;Q3O^;KwvIwn7jmNnr3<tMy5mYm)8wOja?_9;)YVx_1qZBzOb}M<A=z> zsp{7RXhTM@J&@@QZvu9^WqRN-sk?|MB-u68<!wBQwy0`mJIEEA64+Jq`$@cYD`vFU zKhCfRnP~UFh4D@0{WhEG0004oX+uL$Nkc;*aB^>EX>4Tx0C=2zkvmAkP!xv$wn}|e z9PA*{Aw$*0f~bh2R-p(LLaorMgUL-_(4-+rad8w}3l2UOs}3&Cx;nTDg5U$h&CN;C zMM^w3DYS_3z~z4Y_xwNio(uTvWu}@P<AADJMk)~(GTBuj_zE8)=tVb1C1&b#qL_qd zece+x)m@BddH4NUeM-(`fKMQvWx8PzZxBy!S~}-_;xH>p3h_Ddm_ZjLe&o9B@*C%Z z!+xF_Hqxni;xMsLXk)pJS<z65r--A9s!_f_<Fdkei?dp;vgSSc3qv_=Wtr==B1m8n zOAsMIMinKLVIfAlMv93PoyR@=Lyli0mrSk_7&#VDfeOj-ga5(r*_!#u2{$Pe2RdJD z`(qdg?gEXPZGRuzcH;yHJOfu+%U`JjGoPf_T3Yl7=-&n|u3MVC2VCv|gHO6-NRAYs z<<IAV_cQvYEHH2j^sKpaYo6ou0Z7xVk~hG?Auv*)>~)WKceT&$-=60DegH^}a+ZEy z33C7d02@$DR7D{G02mn-icAh!T3F?Y0GOGT;j~otwE*hu=rVqgm;e9(0d!JMQvg8b z*k%9#00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ju}A3=s*A z?Ss|;00`_!L_t(|+TEPZZsRr-g#%3Oy+Sz1)^h5084at#%fcY+tvwnBUM3lj+y^kC zbzrE_W0#ktBuXYFQlX}UUSI|Z5c%^t_wt|i&5c`79=n?nV?xW={Q$;zl#+oVVmb~) zAQCJh-i;^(SFsye2;%>bA>>d9AyL2rFtL9jha#^TEJiSFLJI~-Y6fU|^e?0UAr*sD z{AYv<36${dmvE~g1f;~C>zBFJ5&}~E*H%jiNZI*rBv(Qh<k5GRawWvGU$R39egNc3 z2=mLkTY(1h=oO-Ki}~dn68&e8*lXUkZuu-PQCvC*ivKqd`~!007t&}ZF-=B+sJ$Z_ ziSuL(NRd~NS;2xv{vqtmUlbuQO!|kgmo24mA#9xV4&iTJreP%^(I}8yajQ&<X9$%L z#Aq0P-}{HWN2?-|DT(%I97w#M75ruIi_2=y5;F#56$Qn+fFu|Ae*{P#vy8us;+jPx zLhc15$74YXR6-6p^py7_w3E2N0g_5C0yPF?9~|!AZ^Mv7D1#*4A(&Ox=iiT~EIWR` z1h+I8qwm6pJP5a0mYuiRc^-zdvKJ2gK@z+w_P=Eea}KlYZ5@_v(Jv$}{>d^fh5gIc z)u81S5*<#N5^sN(gS=PBGHb@`2#~uJLe;XCGl@rkkTh*l&SWzeO1v#ilRw)KMtSkA zWGNU*@`-=QsSP==L;sNMtqCDv35h*IvPMeCIt=G>UhE5k32W?cm5?)GLQ06YhJrso zK+~uzi!m0ym!|kL?}97FT0&r|?+Y@)IDFVP8Q>Odc6wWyPH+@HkS1dh2}p$eL2e%i zr@S2@A1q+ug)rYG_T$$l9L>J+iVBwk5iT%=HbVVDSWiF8AB0V%j#xkvZ#&)0`TOFF z0$E^8{X<~J7^;kz9-<2J=%<1iBu^9u6T)T^2vcuKVR?r&9Q{%ygbATA{l+5m*iYU$ zgkp){LJpT2vh$L6zCTbM0)Y@V(dS#-*ppw-?qD@qp8~;NOHqj94L^QC-UG3!PHF~& zlpTu?zaZ~OKm>&|n6$m@hkYERK;FeJgxD;iQixbW$}=G!DY=)s5Ovg>2R_b(cuH1n z2;Y`awmTm`>K3lII+~Ek+rbmx4;BnX3jcMlKz1K?3$-Ca*+uay{xIZTLW+ivI`bc` zFYeZ=XiAYODtw(e@(s@NMN3Ng+uo0qMoOe%HS*#I!V7p-7$Oh6_?3v=8dF3*q;R*C zl(ggB8w42{N>V=H7k6uBh7^H^_J|v;q%$dl`!A7_4u+DH!G3+}EZ}BR2B$vhb4yLi zK))tQvro~*{-b_Pdfif!GH`sP^~hWF_bdaGq7I7Yq@d^{<0DTA>Vxc2dD=B7DYP*t z8jBcJ=XOK<Qs*fhNkP@Y-2jN4TSdWF^F#fbBsOlbq*Rxfkb5Udt=wWQ1y@qs{i5ZP z!6GSAit~DCQqSgl0uP7qBjuG1B&qyDu71JV%_b#kQjp`KYXT5t!zeB|PKNn40TZlJ z0!g7YBz8;*URgur<p#%<FozuMAPH=L49GlB3AQ2RJSnug9qDkLltW@GNX{Wi1$lIH z%ML<|yn+Ny*Kh6fp0lL{WWFjdYVVc<gtj0%r@SBRA#rv4!yZDNActfygxW*cxaAJv zDY1mWB9e8HNj1*9Kw^6ceaFgVf>IYqYz?^#flx<CV_IYn!ETU1nc%rVr~`!75Huo0 znRQ!2CK5vJnh8LH0g%KQ68uOA{;42*`<In4Jy_;_u#&j3v(*hrergCC>|7vVZ!`d+ zY&P~n#IXvT(%N?QtT8?bzbuPukIK^<c+3`(rmyTR#nzDOBRp|p4S6~e@(mn2*i~@3 zbPy*|cKzctJrlCwPuN20mAow^6<0<qAmG+h`n|q^Ydsg9@@ooYgZll-fx+T+?z+Fi zA<QtA&bS}KZ)Y%$yfa}7Ih8j$Q16_Zxh4PloK|7)7JF<nM?JGhaO+fE$suGbR6X0J zy}T{dGwD_#K#>=wQfs#$^^nINx1LT}J4kBn7C@qIDZGHQYskjhE%58LTZ#d4-q^dv z{bH0=XLHvnA<x!A0P+%a96IDfA?iIb?pI*mw50~fxf?P~PpuRNW+}ND@>hq7w8hBe z?Y&jUn3(G9+H@c^@9D)TB_9BpUN<U!5iu}Hk)JqqgJimpej$?(tcRE~pXwp<BH~KV z&_mcLk-9)+5noHGKA)?HY<e4dGbv&$Ivn&29R!l{>;S3!n$c?p->uTui@`6wU2yqL zLg*C(Ap6r+`_|r`?W?OQ;#ocYrV1mDv=A5{ogl)mxIFBy?_!8OXM@dI_G}Mf%Avjx zy$ZRnZG@ywkd1V!6~IV3AUY`~2=j{-v0evE9L<n7C&&w2uG8s&V{{|ryiKhk;1?>d zLN#@OkQPKvy~Mk7f{;adJMD_mf}E?l7cc&2YY2PrRk=H+d}#rc_U+LCITIHMuP>~L zpc6t|A!LrO8DdFtXRr%?+T1un_#{uq2<|d11b)zrT%8cs-y<!<009J9-Z((u$(Nu> zsg`eA2-mTGc7>#Ya_Le1Am~yDF$w8_z%$EzppRwU__h+l5#+&P(30<O{mlSLuOQqj zvc7SLknaY_F>6Caq(dOfNXxi2K%8bP6-0h~!V<E%afW1O$ek9lHZA3k+iu804>{Km z;0VgErb+#gbVAlk?T6$4B-^H~5DViL&J_N9Yp&t&>XY6O4Tx+Z>yAB~BOzpKRuXCu zQE;bGvgkN!oE}LXoe)%aE=v_s3h6v*Oo;(gLaw_=6>_c^o#&YiF$$+rg4#W#3MtL% zJv5zaDQXEL^#lLtfwU45T7CP{G(EN{@cddg0%QC~rKC=X-45ZjMd42`upUBMm4&TO ze_P2BHne7u{Dq#%vX_5_oW83nZ8De;+R?hozX}|LK>X5xm>4&z<n`SBOSja=jTc3x zO-tRs*lS%2F<(ZhrG)cAUmiB??N%F*fnOaq{mRYidUF#=S%=u=enjgKE$q1?LTeo+ atNsPlR~vi<(hdRu0000<MNUMnLSTaVt>$I` literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/mongodb.png b/public/assets/images/tech_logos/mongodb.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f846655bfa31a5e5b54a352efb0055131e95c8 GIT binary patch literal 5656 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/mysql.png b/public/assets/images/tech_logos/mysql.png new file mode 100644 index 0000000000000000000000000000000000000000..4371026f51f3c40bb1d72739f3c1bb230477418f GIT binary patch literal 1994 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/nginx.png b/public/assets/images/tech_logos/nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bf0f889fb07ecc2a31e5e0d2063c66fc418fc8 GIT binary patch literal 4722 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 A;s5{u literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/node.png b/public/assets/images/tech_logos/node.png new file mode 100644 index 0000000000000000000000000000000000000000..854d7ed021bbce7b68682714bb3608e578d0b1ac GIT binary patch literal 4022 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/postgre.png b/public/assets/images/tech_logos/postgre.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d08ae50cc49a56e3d111ccd5ed99f32ad9eb9a GIT binary patch literal 12741 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 LNkvXXu0mjfu;b@Y literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/python.png b/public/assets/images/tech_logos/python.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9e0c290514c05c2115a3d13748b48f500f1625 GIT binary patch literal 4908 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ÐWiih~eCg&KM0@d=K`*b>YS@<OP%*Gk@GhA| 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/react.png b/public/assets/images/tech_logos/react.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbb5f043f0875e0311c1134f65ac703b41402b7 GIT binary patch literal 4299 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/rust.png b/public/assets/images/tech_logos/rust.png new file mode 100644 index 0000000000000000000000000000000000000000..41a01113e7637228c9034fa4572f56f2eb681bcc GIT binary patch literal 20396 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 b0)qbqd)&)dG(iaj00000NkvXXu0mjf?mF=u literal 0 HcmV?d00001 diff --git a/public/assets/images/tech_logos/sass.png b/public/assets/images/tech_logos/sass.png new file mode 100644 index 0000000000000000000000000000000000000000..88d9104a9101d1c2a44349c4b2df038eef277bc6 GIT binary patch literal 4953 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 XI#iXc#l3QM00000NkvXXu0mjfc?fT9 literal 0 HcmV?d00001 diff --git a/public/education/education.js b/public/education/education.js index 60c301a..100045b 100644 --- a/public/education/education.js +++ b/public/education/education.js @@ -14,7 +14,7 @@ module.exports = { const { getServerUrl } = require("./config"); module.exports = { - images_url: `${getServerUrl()}assets/images`, + images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; @@ -111,12 +111,6 @@ class WebPage { constructor(args) { Object.assign(this, args); } - - // setMeta() { - // if (!this.meta) { - // console.warn("Meta information missing") - // } - // } } module.exports = WebPage; @@ -274,7 +268,8 @@ class GameStudioClub { contents: "Contact", }, { - tag: "span", + tag: "a", + href: "tel:+33475780872", contents: "04 75 78 08 72", }, { @@ -306,7 +301,7 @@ class GameStudioClub { { tag: "img", alt: `learning theme image ${li.title}`, - src: `${images_url}/${li.image}`, + src: `${images_url}${li.image}`, }, { tag: "div", @@ -577,7 +572,8 @@ class Popularization { contents: "Contact", }, { - tag: "span", + tag: "a", + href: "tel:+33475780872", contents: "04 75 78 08 72", }, { @@ -609,7 +605,7 @@ class Popularization { { tag: "img", alt: `learning theme image ${li.title}`, - src: `${images_url}/${li.image}`, + src: `${images_url}${li.image}`, }, { tag: "div", @@ -676,7 +672,7 @@ class EducationPage extends WebPage { { tag: "img", alt: "image brain", - src: `${images_url}/brain.svg`, + src: `${images_url}brain.svg`, }, ], }, @@ -725,7 +721,14 @@ const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], - ["/software-development/", "Software"], + [ + "/software-development/", + "Software", + [ + ["/software-development/#projects", "Nos Projets"], + ["/software-development/#service", "Prestation de services"], + ], + ], [ "/education/", "Pédagogie", @@ -770,13 +773,13 @@ class NavBar { { tag: "img", alt: "Logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -874,13 +877,13 @@ class Template { { tag: "img", alt: `logo Kuadrado`, - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/public/games/games.js b/public/games/games.js index f8474eb..627a2c7 100644 --- a/public/games/games.js +++ b/public/games/games.js @@ -14,7 +14,7 @@ module.exports = { const { getServerUrl } = require("./config"); module.exports = { - images_url: `${getServerUrl()}assets/images`, + images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; @@ -93,7 +93,7 @@ module.exports = ImageCarousel; const { fetchjson, fetchtext } = require("./fetch"); function getArticleBody(text) { - return text.replaceAll("\n", "<br/>").replaceAll(" ", " "); + return text.replaceAll("\n", "<br/>"); } function getArticleDate(date) { @@ -269,12 +269,6 @@ class WebPage { constructor(args) { Object.assign(this, args); } - - // setMeta() { - // if (!this.meta) { - // console.warn("Meta information missing") - // } - // } } module.exports = WebPage; @@ -480,7 +474,7 @@ class GamesPage extends WebPage { { tag: "img", alt: "image game controller", - src: `${images_url}/game_controller.svg`, + src: `${images_url}game_controller.svg`, }, ], }, @@ -529,7 +523,14 @@ const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], - ["/software-development/", "Software"], + [ + "/software-development/", + "Software", + [ + ["/software-development/#projects", "Nos Projets"], + ["/software-development/#service", "Prestation de services"], + ], + ], [ "/education/", "Pédagogie", @@ -574,13 +575,13 @@ class NavBar { { tag: "img", alt: "Logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -678,13 +679,13 @@ class Template { { tag: "img", alt: `logo Kuadrado`, - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/public/main.js b/public/main.js index 19a12c0..6131b2f 100644 --- a/public/main.js +++ b/public/main.js @@ -14,7 +14,7 @@ module.exports = { const { getServerUrl } = require("./config"); module.exports = { - images_url: `${getServerUrl()}assets/images`, + images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; @@ -251,7 +251,7 @@ class ThemeCard { { tag: "div", class: "card-img", - contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}/${this.props.img}` }], + contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}${this.props.img}` }], }, { tag: "div", @@ -298,13 +298,13 @@ class HomePage { { tag: "img", alt: "logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "logo-text", alt: "Kuadrado", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -374,7 +374,7 @@ module.exports = HomePage; const { fetchjson, fetchtext } = require("./fetch"); function getArticleBody(text) { - return text.replaceAll("\n", "<br/>").replaceAll(" ", " "); + return text.replaceAll("\n", "<br/>"); } function getArticleDate(date) { @@ -570,7 +570,14 @@ const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], - ["/software-development/", "Software"], + [ + "/software-development/", + "Software", + [ + ["/software-development/#projects", "Nos Projets"], + ["/software-development/#service", "Prestation de services"], + ], + ], [ "/education/", "Pédagogie", @@ -615,13 +622,13 @@ class NavBar { { tag: "img", alt: "Logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -719,13 +726,13 @@ class Template { { tag: "img", alt: `logo Kuadrado`, - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/public/software-development/software-development.js b/public/software-development/software-development.js index 68e82f3..fc8525e 100644 --- a/public/software-development/software-development.js +++ b/public/software-development/software-development.js @@ -14,7 +14,7 @@ module.exports = { const { getServerUrl } = require("./config"); module.exports = { - images_url: `${getServerUrl()}assets/images`, + images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; @@ -93,7 +93,7 @@ module.exports = ImageCarousel; const { fetchjson, fetchtext } = require("./fetch"); function getArticleBody(text) { - return text.replaceAll("\n", "<br/>").replaceAll(" ", " "); + return text.replaceAll("\n", "<br/>"); } function getArticleDate(date) { @@ -269,25 +269,146 @@ class WebPage { constructor(args) { Object.assign(this, args); } - - // setMeta() { - // if (!this.meta) { - // console.warn("Meta information missing") - // } - // } } module.exports = WebPage; },{}],8:[function(require,module,exports){ "use strict"; +const { images_url } = require("../../../../constants"); + +const SKILL_THEMES = [ + "Applications web", + "Service backend, serveur, API REST, bases de données", + "Sites web statiques, serveurs de fichiers", + "Développement frontend, interfaces", + "Conception et design UX / UI", + "Création graphique bitmap et vectoriel", + "Prototypes embarqués, IoT, Arduino", + "Développement logiciel desktop", + "Applications Android", +]; + +const SKILL_STACK = [ + ["Javascript", "js.png"], + ["Node.js", "node.png"], + ["React.js", "react.png"], + ["Python", "python.png"], + ["C/C++", "c.png"], + ["Rust", "rust.png"], + ["MySQL", "mysql.png"], + ["PostgreSQL", "postgre.png"], + ["MongoDB", "mongodb.png"], + ["HTML", "html.png"], + ["CSS", "css.png"], + ["Sass", "sass.png"], + ["Docker", "docker.png"], + ["Linux", "linux.png"], + ["Nginx", "nginx.png"], + ["Apache", "apache.png"], +]; + +class ServiceSection { + render() { + return { + tag: "section", + class: "page-contents-center", + id: "service-section", + contents: [ + { + tag: "h3", + contents: + "<blue>Nos compétences</blue> pour votre besoin <blue>numérique</blue>", + }, + { + tag: "p", + contents: ` + La demande numérique est omniprésente et de nombreuses entreprises ont besoin de bénéficier d'outils spécifiques réalisés sur mesure, + applications web et mobiles, site statiques, logiciels, ERP, etc, mais n'ont pas forcément les compétences chez elles, + et n'ont pas non plus un besoin suffisamment grand pour embaucher une équipe de développement. + <br /><br /> + <b><blue>Kuadrado</blue></b> propose de répondre à ce cas de figure pour les entreprises locales (Ardèche, Drôme, Rhône, Loire...) en étant leur <b>partenaire + en développement <blue>web et logiciel</blue></b>. + `, + }, + { + tag: "p", + class: "teaser", + contents: [ + { + tag: "strong", + contents: + "Des solutions <blue>sur mesure, légères, simples, maintenables, scalables et ecologiques</blue>", + }, + ], + }, + { + tag: "div", + class: "skills", + contents: [ + { + tag: "ul", + class: "skill-themes", + contents: SKILL_THEMES.map(item => { + return { tag: "li", contents: item }; + }), + }, + { + tag: "ul", + class: "skill-stack", + contents: SKILL_STACK.map(item => { + const [title, img] = item; + return { + tag: "li", + contents: [ + { + tag: "strong", + contents: title, + }, + { + tag: "img", + src: `${images_url}tech_logos/${img}`, + }, + ], + }; + }), + }, + { + tag: "div", + class: "call-us", + contents: [ + { + tag: "h3", + contents: `Un <blue>projet à réaliser</blue> ? + <br/>Besoin d'informations, de conseils ou d'un <blue>devis</blue> ?`, + }, + { + tag: "a", + href: "mailto:contact@kuadrado-software.fr", + contents: "contact@kuadrado-software.fr", + }, + { + tag: "a", + href: "tel:+33475780872", + contents: "04 75 78 08 72", + }, + ], + }, + ], + }, + ], + }; + } +} + +module.exports = ServiceSection; + +},{"../../../../constants":2}],9:[function(require,module,exports){ +"use strict"; + const { articles_url } = require("../../../../constants"); const ImageCarousel = require("../../../generic-components/image-carousel"); -const { - loadArticles, - getArticleBody, - getArticleDate, -} = require("../../../lib/article-utils"); +const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); class SoftwareArticle { @@ -381,6 +502,7 @@ class SoftwareArticle { { tag: "a", href: technical.repository, + target: "_blank", contents: "Dépôt code source", }, ], @@ -411,6 +533,7 @@ class SoftwareArticles { .then(articles => { this.state.articles = articles; this.refresh(); + this.fixScroll(); }) .catch(e => console.log(e)); } @@ -419,7 +542,11 @@ class SoftwareArticles { return { tag: "article", class: "placeholder", - contents: [{ tag: "div" }, { tag: "div" }], + contents: [ + { tag: "div", class: "title" }, + { tag: "div", class: "body" }, + { tag: "div", class: "details" }, + ], }; } @@ -429,6 +556,16 @@ class SoftwareArticles { }); } + fixScroll() { + if (window.location.href.includes("#")) { + window.scrollTo( + 0, + document.getElementById(window.location.href.match(/#.+/)[0].replace("#", "")) + .offsetTop + ); + } + } + render() { const { articles } = this.state; return { @@ -445,11 +582,12 @@ class SoftwareArticles { module.exports = SoftwareArticles; -},{"../../../../constants":2,"../../../generic-components/image-carousel":3,"../../../lib/article-utils":4,"../../../lib/object-html-renderer":6}],9:[function(require,module,exports){ +},{"../../../../constants":2,"../../../generic-components/image-carousel":3,"../../../lib/article-utils":4,"../../../lib/object-html-renderer":6}],10:[function(require,module,exports){ "use strict"; const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); +const ServiceSection = require("./components/service-section"); const SoftwareArticles = require("./components/software-articles"); class SoftwareDevelopment extends WebPage { @@ -473,7 +611,7 @@ class SoftwareDevelopment extends WebPage { { tag: "img", alt: `image mechanic electronic`, - src: `${images_url}/meca_proc.svg`, + src: `${images_url}meca_proc.svg`, }, ], }, @@ -486,7 +624,20 @@ class SoftwareDevelopment extends WebPage { }, ], }, + { + tag: "h2", + id: "projects", //anchor + contents: "Nos projets", + class: "page-section-title", + }, new SoftwareArticles().render(), + { + tag: "h2", + id: "service", //anchor + contents: "Prestation de services", + class: "page-section-title", + }, + new ServiceSection().render(), ], }; } @@ -494,7 +645,7 @@ class SoftwareDevelopment extends WebPage { module.exports = SoftwareDevelopment; -},{"../../../constants":2,"../../lib/web-page":7,"./components/software-articles":8}],10:[function(require,module,exports){ +},{"../../../constants":2,"../../lib/web-page":7,"./components/service-section":8,"./components/software-articles":9}],11:[function(require,module,exports){ "use strict"; "use strict"; @@ -502,7 +653,7 @@ const runPage = require("../../run-page"); const SoftwareDevelopment = require("./software-development"); runPage(SoftwareDevelopment); -},{"../../run-page":11,"./software-development":9}],11:[function(require,module,exports){ +},{"../../run-page":12,"./software-development":10}],12:[function(require,module,exports){ "use strict"; const objectHtmlRenderer = require("./lib/object-html-renderer"); @@ -514,14 +665,21 @@ module.exports = function runPage(PageComponent) { objectHtmlRenderer.renderCycle(); }; -},{"./lib/object-html-renderer":6,"./template/template":13}],12:[function(require,module,exports){ +},{"./lib/object-html-renderer":6,"./template/template":14}],13:[function(require,module,exports){ "use strict"; const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], - ["/software-development/", "Software"], + [ + "/software-development/", + "Software", + [ + ["/software-development/#projects", "Nos Projets"], + ["/software-development/#service", "Prestation de services"], + ], + ], [ "/education/", "Pédagogie", @@ -566,13 +724,13 @@ class NavBar { { tag: "img", alt: "Logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -625,7 +783,7 @@ class NavBar { module.exports = NavBar; -},{"../../../constants":2}],13:[function(require,module,exports){ +},{"../../../constants":2}],14:[function(require,module,exports){ "use strict"; const { in_construction } = require("../../config"); @@ -670,13 +828,13 @@ class Template { { tag: "img", alt: `logo Kuadrado`, - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, @@ -699,4 +857,4 @@ class Template { module.exports = Template; -},{"../../config":1,"../../constants":2,"./components/navbar":12}]},{},[10]); +},{"../../config":1,"../../constants":2,"./components/navbar":13}]},{},[11]); diff --git a/public/style/pages/software-development/software-development.css b/public/style/pages/software-development/software-development.css index ace551e..7446ac3 100644 --- a/public/style/pages/software-development/software-development.css +++ b/public/style/pages/software-development/software-development.css @@ -1,9 +1,9 @@ /* Error: Undefined variable. * , - * 8 | background-color: $dark_2; + * 9 | background-color: $dark_2; * | ^^^^^^^ * ' - * src/pages/software-development/software-development.scss 8:31 root stylesheet */ + * src/pages/software-development/software-development.scss 9:31 root stylesheet */ body::before { font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono", @@ -13,5 +13,5 @@ body::before { padding: 1em; margin-bottom: 1em; border-bottom: 2px solid black; - content: "Error: Undefined variable.\a \2577 \a 8 \2502 background-color: $dark_2;\a \2502 ^^^^^^^\a \2575 \a src/pages/software-development/software-development.scss 8:31 root stylesheet"; + content: "Error: Undefined variable.\a \2577 \a 9 \2502 background-color: $dark_2;\a \2502 ^^^^^^^\a \2575 \a src/pages/software-development/software-development.scss 9:31 root stylesheet"; } diff --git a/public/style/style.css b/public/style/style.css index 86d8eba..4006985 100644 --- a/public/style/style.css +++ b/public/style/style.css @@ -336,6 +336,23 @@ main #page-container .page-contents-center { max-width: 100%; margin: 0 auto; } +@media screen and (max-width: 1300px) { + main #page-container .page-contents-center { + padding: 20px 20px 0; + } +} +main #page-container h2.page-section-title { + color: #4baabb; + padding: 20px 0 10px; + width: 1300px; + max-width: 100%; + margin: 0 auto; +} +@media screen and (max-width: 1300px) { + main #page-container h2.page-section-title { + padding: 20px 20px 0; + } +} main #page-container #home-page { display: flex; flex-direction: column; @@ -842,7 +859,7 @@ main #page-container #games-page .game-articles article { display: grid; grid-template-columns: 0.7fr 1fr; gap: 0 20px; - margin: 20px; + margin: 20px 0; } main #page-container #games-page .game-articles article.game-article { grid-template-rows: repeat(6, auto); @@ -966,10 +983,13 @@ main #page-container #games-page .game-articles article.placeholder * { grid-column: 1/span 2; } } +main #page-container #software-page .software-articles { + margin: 0 auto 50px; +} main #page-container #software-page .software-articles article.software-article { display: grid; grid-template-columns: 1fr 1fr; - margin: 30px 0; + margin: 0 0 30px; gap: 0 30px; background-color: #3c4144; } @@ -1019,7 +1039,7 @@ main #page-container #software-page .software-articles article.software-article main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail { display: grid; grid-template-columns: 1fr auto; - padding: 10px 0; + padding: 5px 0; } main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail:not(:first-child) { border-top: 1px solid #6b7880; @@ -1035,11 +1055,6 @@ main #page-container #software-page .software-articles article.software-article main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail *:not(a) { color: #d4d9dd; } -@media screen and (max-width: 1300px) { - main #page-container #software-page .software-articles article.software-article { - margin: 30px 20px; - } -} @media screen and (max-width: 900px) { main #page-container #software-page .software-articles article.software-article { grid-template-columns: 1fr; @@ -1056,9 +1071,165 @@ main #page-container #software-page .software-articles article.software-article } } main #page-container #software-page .software-articles article.placeholder { + display: flex; + flex-direction: column; + gap: 10px; + margin: 30px; +} +main #page-container #software-page .software-articles article.placeholder * { background-color: #d4d9dd; +} +main #page-container #software-page .software-articles article.placeholder .title { + height: 60px; +} +main #page-container #software-page .software-articles article.placeholder .body { height: 400px; - margin: 30px; +} +main #page-container #software-page .software-articles article.placeholder .details { + height: 200px; +} +main #page-container #software-page #service-section h3 { + margin: 0 0 20px; +} +main #page-container #software-page #service-section .skills { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + gap: 20px; + margin: 20px 0; +} +main #page-container #software-page #service-section .skills ul { + display: grid; + gap: 1px; + max-width: 100%; +} +main #page-container #software-page #service-section .skills ul li { + box-shadow: 0 0 2px #96a5ae; +} +main #page-container #software-page #service-section .skills ul.skill-themes { + width: 600px; + grid-template-columns: repeat(3, 1fr); + background-color: #3c4144; +} +@media screen and (max-width: 560px) { + main #page-container #software-page #service-section .skills ul.skill-themes { + grid-template-columns: 1fr 1fr; + width: 100%; + } +} +@media screen and (max-width: 480px) { + main #page-container #software-page #service-section .skills ul.skill-themes { + grid-template-columns: 1fr; + } +} +main #page-container #software-page #service-section .skills ul.skill-themes li { + font-weight: bold; + color: #d4d9dd; + font-size: 18px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: row; + padding: 10px; + text-align: center; +} +main #page-container #software-page #service-section .skills ul.skill-stack { + width: 400px; + grid-template-columns: repeat(4, 1fr); +} +main #page-container #software-page #service-section .skills ul.skill-stack li { + display: flex; + justify-content: center; + align-items: center; + flex-direction: row; + flex-direction: column; + position: relative; + padding: 10px; +} +main #page-container #software-page #service-section .skills ul.skill-stack li strong { + visibility: hidden; + max-height: 0; + height: 70px; + padding: 0 20px; + transition: max-height 0.3s; + position: absolute; + display: flex; + justify-content: center; + align-items: center; + flex-direction: row; +} +main #page-container #software-page #service-section .skills ul.skill-stack li img { + width: 100%; +} +@media screen and (min-width: 780px) { + main #page-container #software-page #service-section .skills ul.skill-stack li:hover strong { + visibility: visible; + max-height: 80px; + background-color: #fffc; + font-size: 18px; + } +} +@media screen and (max-width: 780px) { + main #page-container #software-page #service-section .skills ul.skill-stack li strong { + visibility: visible; + position: relative; + max-height: unset; + height: unset; + padding: 0; + } +} +@media screen and (max-width: 480px) { + main #page-container #software-page #service-section .skills ul.skill-stack { + grid-template-columns: repeat(3, 1fr); + } +} +main #page-container #software-page #service-section .teaser { + background-image: url("/assets/images/wallpaper_binary.png"); + padding: 40px 30px; + text-align: center; + font-size: 18px; +} +main #page-container #software-page #service-section .teaser strong { + color: #d4d9dd; +} +main #page-container #software-page #service-section .teaser blue { + color: #72e3f0; +} +main #page-container #software-page #service-section .call-us { + display: grid; + grid-template-columns: 1fr 1fr; + width: 100%; + gap: 10px 0; + margin: 40px 0; +} +main #page-container #software-page #service-section .call-us * { + font-weight: bold; +} +main #page-container #software-page #service-section .call-us h3 { + grid-column: 1/span 2; + text-align: center; +} +main #page-container #software-page #service-section .call-us a { + background-color: #3c4144; + font-size: 20px; + text-align: center; + padding: 20px; +} +@media screen and (max-width: 780px) { + main #page-container #software-page #service-section .call-us { + display: flex; + justify-content: center; + align-items: center; + flex-direction: row; + flex-direction: column; + gap: 0; + } + main #page-container #software-page #service-section .call-us h3 { + margin: 0 0 10px; + } + main #page-container #software-page #service-section .call-us a { + width: 100%; + } } main footer { display: flex; diff --git a/src/home-page-components/theme-card.js b/src/home-page-components/theme-card.js index c9a0334..c71643b 100644 --- a/src/home-page-components/theme-card.js +++ b/src/home-page-components/theme-card.js @@ -16,7 +16,7 @@ class ThemeCard { { tag: "div", class: "card-img", - contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}/${this.props.img}` }], + contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}${this.props.img}` }], }, { tag: "div", diff --git a/src/homepage.js b/src/homepage.js index 377b60a..051edb0 100644 --- a/src/homepage.js +++ b/src/homepage.js @@ -25,13 +25,13 @@ class HomePage { { tag: "img", alt: "logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "logo-text", alt: "Kuadrado", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/src/lib/article-utils.js b/src/lib/article-utils.js index ed31a35..3a7d83f 100644 --- a/src/lib/article-utils.js +++ b/src/lib/article-utils.js @@ -3,7 +3,7 @@ const { fetchjson, fetchtext } = require("./fetch"); function getArticleBody(text) { - return text.replaceAll("\n", "<br/>").replaceAll(" ", " "); + return text.replaceAll("\n", "<br/>"); } function getArticleDate(date) { diff --git a/src/lib/web-page.js b/src/lib/web-page.js index 022fd3b..b58f4c0 100644 --- a/src/lib/web-page.js +++ b/src/lib/web-page.js @@ -4,12 +4,6 @@ class WebPage { constructor(args) { Object.assign(this, args); } - - // setMeta() { - // if (!this.meta) { - // console.warn("Meta information missing") - // } - // } } module.exports = WebPage; \ No newline at end of file diff --git a/src/pages/education/components/game-studio-club.js b/src/pages/education/components/game-studio-club.js index 1b98491..3c3fffe 100644 --- a/src/pages/education/components/game-studio-club.js +++ b/src/pages/education/components/game-studio-club.js @@ -151,7 +151,8 @@ class GameStudioClub { contents: "Contact", }, { - tag: "span", + tag: "a", + href: "tel:+33475780872", contents: "04 75 78 08 72", }, { @@ -183,7 +184,7 @@ class GameStudioClub { { tag: "img", alt: `learning theme image ${li.title}`, - src: `${images_url}/${li.image}`, + src: `${images_url}${li.image}`, }, { tag: "div", diff --git a/src/pages/education/components/popularization.js b/src/pages/education/components/popularization.js index d09b59b..e042035 100644 --- a/src/pages/education/components/popularization.js +++ b/src/pages/education/components/popularization.js @@ -101,7 +101,8 @@ class Popularization { contents: "Contact", }, { - tag: "span", + tag: "a", + href: "tel:+33475780872", contents: "04 75 78 08 72", }, { @@ -133,7 +134,7 @@ class Popularization { { tag: "img", alt: `learning theme image ${li.title}`, - src: `${images_url}/${li.image}`, + src: `${images_url}${li.image}`, }, { tag: "div", diff --git a/src/pages/education/education.js b/src/pages/education/education.js index d088914..92af28c 100644 --- a/src/pages/education/education.js +++ b/src/pages/education/education.js @@ -27,7 +27,7 @@ class EducationPage extends WebPage { { tag: "img", alt: "image brain", - src: `${images_url}/brain.svg`, + src: `${images_url}brain.svg`, }, ], }, diff --git a/src/pages/games/games.js b/src/pages/games/games.js index 246ae03..a10e131 100644 --- a/src/pages/games/games.js +++ b/src/pages/games/games.js @@ -25,7 +25,7 @@ class GamesPage extends WebPage { { tag: "img", alt: "image game controller", - src: `${images_url}/game_controller.svg`, + src: `${images_url}game_controller.svg`, }, ], }, diff --git a/src/pages/games/games.scss b/src/pages/games/games.scss index fc26117..df569d7 100644 --- a/src/pages/games/games.scss +++ b/src/pages/games/games.scss @@ -4,7 +4,7 @@ display: grid; grid-template-columns: 0.7fr 1fr; gap: 0 20px; - margin: 20px; + margin: 20px 0; &.game-article { grid-template-rows: repeat(6, auto); background-color: $dark_2; diff --git a/src/pages/software-development/components/service-section.js b/src/pages/software-development/components/service-section.js new file mode 100644 index 0000000..7500ac0 --- /dev/null +++ b/src/pages/software-development/components/service-section.js @@ -0,0 +1,129 @@ +"use strict"; + +const { images_url } = require("../../../../constants"); + +const SKILL_THEMES = [ + "Applications web", + "Service backend, serveur, API REST, bases de données", + "Sites web statiques, serveurs de fichiers", + "Développement frontend, interfaces", + "Conception et design UX / UI", + "Création graphique bitmap et vectoriel", + "Prototypes embarqués, IoT, Arduino", + "Développement logiciel desktop", + "Applications Android", +]; + +const SKILL_STACK = [ + ["Javascript", "js.png"], + ["Node.js", "node.png"], + ["React.js", "react.png"], + ["Python", "python.png"], + ["C/C++", "c.png"], + ["Rust", "rust.png"], + ["MySQL", "mysql.png"], + ["PostgreSQL", "postgre.png"], + ["MongoDB", "mongodb.png"], + ["HTML", "html.png"], + ["CSS", "css.png"], + ["Sass", "sass.png"], + ["Docker", "docker.png"], + ["Linux", "linux.png"], + ["Nginx", "nginx.png"], + ["Apache", "apache.png"], +]; + +class ServiceSection { + render() { + return { + tag: "section", + class: "page-contents-center", + id: "service-section", + contents: [ + { + tag: "h3", + contents: + "<blue>Nos compétences</blue> pour votre besoin <blue>numérique</blue>", + }, + { + tag: "p", + contents: ` + La demande numérique est omniprésente et de nombreuses entreprises ont besoin de bénéficier d'outils spécifiques réalisés sur mesure, + applications web et mobiles, site statiques, logiciels, ERP, etc, mais n'ont pas forcément les compétences chez elles, + et n'ont pas non plus un besoin suffisamment grand pour embaucher une équipe de développement. + <br /><br /> + <b><blue>Kuadrado</blue></b> propose de répondre à ce cas de figure pour les entreprises locales (Ardèche, Drôme, Rhône, Loire...) en étant leur <b>partenaire + en développement <blue>web et logiciel</blue></b>. + `, + }, + { + tag: "p", + class: "teaser", + contents: [ + { + tag: "strong", + contents: + "Des solutions <blue>sur mesure, légères, simples, maintenables, scalables et ecologiques</blue>", + }, + ], + }, + { + tag: "div", + class: "skills", + contents: [ + { + tag: "ul", + class: "skill-themes", + contents: SKILL_THEMES.map(item => { + return { tag: "li", contents: item }; + }), + }, + { + tag: "ul", + class: "skill-stack", + contents: SKILL_STACK.map(item => { + const [title, img] = item; + return { + tag: "li", + contents: [ + { + tag: "strong", + contents: title, + }, + { + tag: "img", + src: `${images_url}tech_logos/${img}`, + }, + ], + }; + }), + }, + { + tag: "div", + class: "call-us", + contents: [ + { + tag: "h3", + contents: `Un <blue>projet à réaliser</blue> ? + <br/>Besoin d'informations, de conseils ou d'un <blue>devis</blue> ?`, + }, + { + tag: "a", + href: "mailto:contact@kuadrado-software.fr", + contents: "contact@kuadrado-software.fr", + }, + { + tag: "a", + href: "tel:+33475780872", + contents: "04 75 78 08 72", + }, + ], + }, + ], + }, + ], + }; + } +} + +module.exports = ServiceSection; diff --git a/src/pages/software-development/components/software-articles.js b/src/pages/software-development/components/software-articles.js index a90420c..41d27f6 100644 --- a/src/pages/software-development/components/software-articles.js +++ b/src/pages/software-development/components/software-articles.js @@ -2,11 +2,7 @@ const { articles_url } = require("../../../../constants"); const ImageCarousel = require("../../../generic-components/image-carousel"); -const { - loadArticles, - getArticleBody, - getArticleDate, -} = require("../../../lib/article-utils"); +const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); class SoftwareArticle { @@ -100,6 +96,7 @@ class SoftwareArticle { { tag: "a", href: technical.repository, + target: "_blank", contents: "Dépôt code source", }, ], @@ -130,6 +127,7 @@ class SoftwareArticles { .then(articles => { this.state.articles = articles; this.refresh(); + this.fixScroll(); }) .catch(e => console.log(e)); } @@ -138,7 +136,11 @@ class SoftwareArticles { return { tag: "article", class: "placeholder", - contents: [{ tag: "div" }, { tag: "div" }], + contents: [ + { tag: "div", class: "title" }, + { tag: "div", class: "body" }, + { tag: "div", class: "details" }, + ], }; } @@ -148,6 +150,16 @@ class SoftwareArticles { }); } + fixScroll() { + if (window.location.href.includes("#")) { + window.scrollTo( + 0, + document.getElementById(window.location.href.match(/#.+/)[0].replace("#", "")) + .offsetTop + ); + } + } + render() { const { articles } = this.state; return { diff --git a/src/pages/software-development/software-development.js b/src/pages/software-development/software-development.js index 3032680..321a7cc 100644 --- a/src/pages/software-development/software-development.js +++ b/src/pages/software-development/software-development.js @@ -2,6 +2,7 @@ const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); +const ServiceSection = require("./components/service-section"); const SoftwareArticles = require("./components/software-articles"); class SoftwareDevelopment extends WebPage { @@ -25,7 +26,7 @@ class SoftwareDevelopment extends WebPage { { tag: "img", alt: `image mechanic electronic`, - src: `${images_url}/meca_proc.svg`, + src: `${images_url}meca_proc.svg`, }, ], }, @@ -38,7 +39,20 @@ class SoftwareDevelopment extends WebPage { }, ], }, + { + tag: "h2", + id: "projects", //anchor + contents: "Nos projets", + class: "page-section-title", + }, new SoftwareArticles().render(), + { + tag: "h2", + id: "service", //anchor + contents: "Prestation de services", + class: "page-section-title", + }, + new ServiceSection().render(), ], }; } diff --git a/src/pages/software-development/software-development.scss b/src/pages/software-development/software-development.scss index 10f2084..64bdd26 100644 --- a/src/pages/software-development/software-development.scss +++ b/src/pages/software-development/software-development.scss @@ -1,9 +1,10 @@ #software-page { .software-articles { + margin: 0 auto 50px; article.software-article { display: grid; grid-template-columns: 1fr 1fr; - margin: 30px 0; + margin: 0 0 30px; gap: 0 30px; background-color: $dark_2; & > * { @@ -55,7 +56,7 @@ &:not(:first-child) { border-top: 1px solid $medium_grey; } - padding: 10px 0; + padding: 5px 0; label { font-weight: bold; } @@ -70,10 +71,6 @@ } } } - - @media screen and (max-width: $page_contents_center_width) { - margin: 30px 20px; - } @media screen and (max-width: $screen_l) { grid-template-columns: 1fr; .software-title { @@ -89,9 +86,148 @@ } } article.placeholder { - background-color: $light_0; - height: 400px; + display: flex; + flex-direction: column; + gap: 10px; margin: 30px; + * { + background-color: $light_0; + } + .title { + height: 60px; + } + .body { + height: 400px; + } + .details { + height: 200px; + } + } + } + #service-section { + h3 { + margin: 0 0 20px; + } + .skills { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + gap: 20px; + margin: 20px 0; + ul { + display: grid; + gap: 1px; + max-width: 100%; + li { + box-shadow: 0 0 2px $light_1; + } + &.skill-themes { + width: 600px; + grid-template-columns: repeat(3, 1fr); + @media screen and (max-width: $screen_s) { + grid-template-columns: 1fr 1fr; + width: 100%; + } + @media screen and (max-width: $screen_xs) { + grid-template-columns: 1fr; + } + background-color: $dark_2; + li { + font-weight: bold; + color: $light_0; + font-size: 18px; + @include flex-center; + padding: 10px; + text-align: center; + } + } + &.skill-stack { + width: 400px; + grid-template-columns: repeat(4, 1fr); + li { + @include flex-center-col; + position: relative; + padding: 10px; + strong { + visibility: hidden; + max-height: 0; + height: 70px; + padding: 0 20px; + transition: max-height 0.3s; + position: absolute; + @include flex-center; + } + img { + width: 100%; + } + @media screen and (min-width: $screen_m) { + &:hover { + strong { + visibility: visible; + max-height: 80px; + background-color: #fffc; + font-size: 18px; + } + } + } + + @media screen and (max-width: $screen_m) { + strong { + visibility: visible; + position: relative; + max-height: unset; + height: unset; + padding: 0; + } + } + } + @media screen and (max-width: $screen_xs) { + grid-template-columns: repeat(3, 1fr); + } + } + } + } + .teaser { + background-image: url("/assets/images/wallpaper_binary.png"); + padding: 40px 30px; + text-align: center; + font-size: 18px; + strong { + color: $light_0; + } + blue { + color: $blue_3; + } + } + .call-us { + * { + font-weight: bold; + } + display: grid; + grid-template-columns: 1fr 1fr; + width: 100%; + gap: 10px 0; + margin: 40px 0; + h3 { + grid-column: 1 / span 2; + text-align: center; + } + a { + background-color: $dark_2; + font-size: 20px; + text-align: center; + padding: 20px; + } + @media screen and (max-width: $screen_m) { + @include flex-center-col; + gap: 0; + h3 { + margin: 0 0 10px; + } + a { + width: 100%; + } + } } } } diff --git a/src/style.scss b/src/style.scss index d7681c7..621f723 100644 --- a/src/style.scss +++ b/src/style.scss @@ -340,9 +340,12 @@ main { } } .page-contents-center { - width: $page_contents_center_width; - max-width: 100%; - margin: 0 auto; + @include page-contents-center; + } + h2.page-section-title { + color: $blue_2; + padding: 20px 0 10px; + @include page-contents-center; } @import "./homepage.scss"; @import "./pages/education/education.scss"; diff --git a/src/template/components/navbar.js b/src/template/components/navbar.js index 06ebafd..d13bde2 100644 --- a/src/template/components/navbar.js +++ b/src/template/components/navbar.js @@ -4,7 +4,14 @@ const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], - ["/software-development/", "Software"], + [ + "/software-development/", + "Software", + [ + ["/software-development/#projects", "Nos Projets"], + ["/software-development/#service", "Prestation de services"], + ], + ], [ "/education/", "Pédagogie", @@ -49,13 +56,13 @@ class NavBar { { tag: "img", alt: "Logo Kuadrado", - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/src/template/template.js b/src/template/template.js index 3b009c0..fc41652 100644 --- a/src/template/template.js +++ b/src/template/template.js @@ -42,13 +42,13 @@ class Template { { tag: "img", alt: `logo Kuadrado`, - src: `${images_url}/logo_kuadrado.svg`, + src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", - src: `${images_url}/logo_kuadrado_txt.svg`, + src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, diff --git a/src/theme.scss b/src/theme.scss index 359933a..8c3add6 100644 --- a/src/theme.scss +++ b/src/theme.scss @@ -40,3 +40,12 @@ $page_contents_center_width: 1300px; @include flex-center; flex-direction: column; } + +@mixin page-contents-center { + width: $page_contents_center_width; + max-width: 100%; + margin: 0 auto; + @media screen and (max-width: $page_contents_center_width) { + padding: 20px 20px 0; + } +} -- GitLab