From 6c860db2d984d4b2e6792be493f878120842aea7 Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Sun, 6 Sep 2026 23:44:13 +0330 Subject: [PATCH] feat(skills): add discipline-specific content and tool assets --- public/images/tools/adobe-illustrator.png | Bin 0 -> 2475 bytes public/images/tools/adobe-photoshop.png | Bin 0 -> 3160 bytes public/images/tools/adobe-xd.png | Bin 0 -> 3502 bytes public/images/tools/chatgpt.png | Bin 0 -> 5623 bytes public/images/tools/claude-design.png | Bin 0 -> 5440 bytes public/images/tools/claude.png | Bin 0 -> 5440 bytes public/images/tools/css.png | Bin 0 -> 3877 bytes public/images/tools/figjam.png | Bin 0 -> 3694 bytes public/images/tools/figma.png | Bin 0 -> 2486 bytes public/images/tools/framer.png | Bin 0 -> 1408 bytes public/images/tools/gemini.png | Bin 0 -> 5513 bytes public/images/tools/google-docs.png | Bin 0 -> 1261 bytes public/images/tools/google-sheets.png | Bin 0 -> 1388 bytes public/images/tools/google-slides.png | Bin 0 -> 1175 bytes public/images/tools/html.png | Bin 0 -> 3718 bytes public/images/tools/javascript.png | Bin 0 -> 3445 bytes public/images/tools/jira.png | Bin 0 -> 2647 bytes public/images/tools/mattermost.png | Bin 0 -> 3826 bytes public/images/tools/metabase.png | Bin 0 -> 5553 bytes public/images/tools/microsoft-office.png | Bin 0 -> 3928 bytes public/images/tools/mizito.png | Bin 0 -> 6144 bytes public/images/tools/notion.png | Bin 0 -> 2790 bytes public/images/tools/penpot.png | Bin 0 -> 2152 bytes public/images/tools/porsline.png | Bin 0 -> 2600 bytes public/images/tools/power-bi.png | Bin 0 -> 2689 bytes public/images/tools/sql.png | Bin 0 -> 2328 bytes public/images/tools/tailwind.png | Bin 0 -> 3041 bytes src/components/SkillsSection.module.css | 7 - src/components/SkillsSection.tsx | 51 ++-- src/data/skills.ts | 284 +++++++++++++++++----- 30 files changed, 244 insertions(+), 98 deletions(-) create mode 100644 public/images/tools/adobe-illustrator.png create mode 100644 public/images/tools/adobe-photoshop.png create mode 100644 public/images/tools/adobe-xd.png create mode 100644 public/images/tools/chatgpt.png create mode 100644 public/images/tools/claude-design.png create mode 100644 public/images/tools/claude.png create mode 100644 public/images/tools/css.png create mode 100644 public/images/tools/figjam.png create mode 100644 public/images/tools/figma.png create mode 100644 public/images/tools/framer.png create mode 100644 public/images/tools/gemini.png create mode 100644 public/images/tools/google-docs.png create mode 100644 public/images/tools/google-sheets.png create mode 100644 public/images/tools/google-slides.png create mode 100644 public/images/tools/html.png create mode 100644 public/images/tools/javascript.png create mode 100644 public/images/tools/jira.png create mode 100644 public/images/tools/mattermost.png create mode 100644 public/images/tools/metabase.png create mode 100644 public/images/tools/microsoft-office.png create mode 100644 public/images/tools/mizito.png create mode 100644 public/images/tools/notion.png create mode 100644 public/images/tools/penpot.png create mode 100644 public/images/tools/porsline.png create mode 100644 public/images/tools/power-bi.png create mode 100644 public/images/tools/sql.png create mode 100644 public/images/tools/tailwind.png diff --git a/public/images/tools/adobe-illustrator.png b/public/images/tools/adobe-illustrator.png new file mode 100644 index 0000000000000000000000000000000000000000..64c386da8eba607f874526e9f06f5ddf7e08751d GIT binary patch literal 2475 zcmV;c2~_rpP)ayI}#L2?;4QlrDqK(6p35OSP?q zfVMDvXj(st9j1cPg5!*i`omvNamFA1a5`#R9XjJUwHE9!PK!Fl!CF3a1gmYrA1AR^ zmO@3omr`I!*gZb)y_@9TyLZWM?%myNvd?hXd(ZvYd!F-to%g+2g#z#qpkpHN8MY4Y z#x+onDue=(2GHHlb_v*(1ojnhO@73I4UI}YWo>GWu?9n_M89Ed?M|m($ajt}L2>?@ zZWym*GMRRa4ZRKk0}@OHGB=7uJvy2cSXf_Q%_)peI?c6tw(&YjzM!lX=Q z2h}Nt@rM}4z3wK{Oq|gA@IdFFicwtR5lW8Mx+)EDh)7c177nP}po-NQ#@-q^7V7&_ zsaFPeEP~qTt zVuXwue32nH##GCJ)sP1rVx(&XL3eaw#nx32*vrVt1v zSFs}$@x%^JtPI{q+!deT=uu$NcYs?_IOJ9>OmW`1nA<0Y$Pt)gSb*$&yJAhV3tojOkNz8{v5q-l=&LEgqZEm0~LNJuni^*7T=JZ8}n?kC` z#tu$;kp}e`uhS&LHycdCdyjE~5DX$)^XrEIn-y3!=n9Y#*|Eg&ar*@0si-a=Ku}o4_IVT(>?t(;;UC! z<_JXy5w4}JDhyJT(u4m3-XS@2xNmBNQmHBlK_VISvUp?_AJRk6WfJkj1F!=+=QV7T zDFMr8*~^APV5uX;KT1PW$2OTQ#ui~Sr!XEuaFoQ&OL)JC64E4g!J%G4N;j7Q7kK7?sTKRrwAH)lYdE`^+HBWDz<+GBBKMoFbRbb_vNU=Pe>ct6u4+MMp5Zl)wM zwptzJ3|~I!V@NssPp)MUh|z)23Hl$~6D#@OS$DspwEX&yLoQrw^uE8a-xKO;O4(ia z15+Y}sadHJDnT+JhBtVS#!+AP9Ar@Po5Mqq?F_aT|Ad@;gm5A&|3~kngrV{Xl_0Sj zpPEfq+u)gfZXfGq?#3}<3F7uKX6e6_t7iHPjeIBY{wT0Rp%TQb12)r5Ywx0pG0C1k zyM@KF*|bM*{|&h@5&K&g(U`|7uV$eUBmP zm;d;^H0l+WqRmXx&YZboae*5ikgmVM!eMEu7fDi5~I$yX@$@5(q`bBp>$3 zd{}gQjjENb7yXmvebT2%f1XvPW=Q^pRrV>BLMQ}@dOh*!tn`Ek;dUy+hWncRg|8e4 zOpr)S6YWeJQ>!YB{DKEU`sNjtGuD9#`jFD|C}S31HBm)2KQOpl`H=1LDiIO|Hq!rP z+bG`aoO=Kn>V#$hc!K>=bNKu8li*p6yr$1>$7FjV`yXU(srRVowcIiw5J57I*^GPU zF0hMtP8eKnJpU`;Yrms=FW_FXw%xr6Sixc+ywy;~P+#RFeC}D`7L*r(2ofjs6~;H> zrJT|uA&X-4yq#s21qI$qlI+_URj+)QJMX)XY2N?7rIf^<+RKn~hD3pEkQmPOYi#v$ zLdZHxb?81@_`M{_zMsTgKApRG6*Y@;UDi3zju^^`Km@h2VmhnM$9OVo-2F!JHF3$n zzQ&x9@`<=5k1L@>xf5w4CP;*4<0oL}SG{13>c#!cn-}SJB$@Ve5`;#dgG{6?WHjCo zE$<3{!~}`gBn4@phnOzs1Y;_j7lV-stF=NNz{-JNrM^91Zv2KZljPN_!zHH zLJ%crml_Q(;*3I&l~*lh<|}oiuJ&i)ZYY&_OY1q7n}0{^?-@qT<*ZSmi)9h4Z@Ykja zfufl?qxBd64ICQibLFI%(dzzL=e);s%OV1uZ-r3XD)gFmN+9MMtROPQVr2G1kS5v7( pLsQef87(cZe(RZM_78W>{{e>`g{XMzH|_uc002ovPDHLkV1iSiqa*+T literal 0 HcmV?d00001 diff --git a/public/images/tools/adobe-photoshop.png b/public/images/tools/adobe-photoshop.png new file mode 100644 index 0000000000000000000000000000000000000000..2adc9c5310d7da64464a952a514d9a6ef1fb8258 GIT binary patch literal 3160 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 literal 0 HcmV?d00001 diff --git a/public/images/tools/chatgpt.png b/public/images/tools/chatgpt.png new file mode 100644 index 0000000000000000000000000000000000000000..b51b62b4820c4c4730e4b62d87725cc81d13e40b GIT binary patch literal 5623 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 RU}*pV002ovPDHLkV1koCxhMbt literal 0 HcmV?d00001 diff --git a/public/images/tools/claude-design.png b/public/images/tools/claude-design.png new file mode 100644 index 0000000000000000000000000000000000000000..ab18922e3d7497483edf71aefae9ef133045af7c GIT binary patch literal 5440 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
    !B-nSPRT?g7;$(!bFdaYoDy@pob zl>>L%MBNVdIS=^)g&9o}+EUFxJ)KYN@x9IaCMcBE^HlA3n}ijx&b7~&(L%=hFe8W( zRx0~HDpPBdFJZM5J@s(VMS}3Urq+AW(6o!u7LOTr^R(}i@xBR4k7P@j>@K>A01=d& zYp!D1plZZ$Kfo`Z2*BtthnWPx>2YbPB;}FqI~MH){YEzB<8c$>DFGWXN%qv^JutM& znV<$I(dte%9SEgV3eUmq*ZL;NzmYz9Qa3jhvRFTiIUT05!wvF-q+JiM^~~t-Ge3^I4( zBVT3k=uQoaMFyXoHR09w1oW@%ft_DaVEvG?ka({rx}ANqG|6lYRP8uSES!sGN*L#G z*th*5bar4x3B^&1?{HEw8r&QXvaBzbjGa)y3E8fIP1ud=82s`v6(5V*jrG15Jbs@H}dGrzbs%X#SIF0kX@qA|0M6 z)gQ-P*y8J3(dNK?Z}EhV2r>%eQzWKt$YIu~fTnyEh6Jm6nWc6saavzOqlD%Pv@p$K zhHPlWc?gXBxNj$s(2ja}uOFb;IstRsQ~!PtbC zG?2uYXry0$$AG`=28d#0z2#;F9@wtHgLg5wV-tq~EFGJ;(-m>m-Oe;NBucA=$rI;H zc;iq7-WW6B$Z6A())@9j^c%Fm9uSf4M9$_ubmrI40rt9Y-k{tDv-)n3R)N z%7jj^jt=scXV+kd8LeU`!+jmuppFO<>Az2d{5f z2w5?;d^+373#J_rlpcweMirH+8(kAr57G!a2{t@{QTl*gB31$%rDO@)9yB?l#h-np;~A*f1a69gJBiNr|Vuq4N_&B`L% zj8d)Xe|HpS5IR2_uc&bx)NQaLV9r0+NTKf-r--77gjA3mB&AY4oWSii(Dry9-l+yU z+QA4N6BO(jnGf{#gPzyu4Io@UlYzbWck27KLE}EXASI$IB}52G2@=F=#XurOIJyg3tA+Kqr9eL3Fz*uSb&nlr zV(=-86%h2M@@xr2wp=|rR(++Z_Gw5sTcqIi01HHhm==nG8PJl&nInIjn|$eK=gvR# z45UwW^gdFj6RDjaTUhEf>wmN{ux9%=!s~Z_HyFL^s10z3+htWs6cx=)4<_S#L2^+jWhW06Cic9TKmWmNnVDzLz~XpW_2ZkQrK&|^ zR%6{G;h~;w+d`|ielI$@_3KJ_Xam(@Dms>v%~Cbb>hVnS3TZ2IY9+0-Al0{+7Qh^C zKoyl-;%qMa;hw_uzUR}We~rPZJ>|CJ>vDq2g~hyP6+PGOTHCwsTMtB{TOaL--FP2U z!!fg5MCn4pgzitetfPy9(JNVs)`uyn5Z+(TmNTEem75=Xv2gaqx3ck9lWyZ!j!CT) z>Q?aAy#JQU=Og{M?~1JX;;uk+-Dawi8Krr&H+fn0dKV^V<+hXvQzCs-_tq7yjFp+d#X!rd#$w-&h1TD5Z)o7l-wzLN+M$M`Yt3@WYD#Gd z!z@e}(jUKBoP6y$IUPTcNcyNA=f|PZ nxUM)Emou2p->%{+{>SiNbgZk-0Xw9F00000NkvXXu0mjf&8|(u literal 0 HcmV?d00001 diff --git a/public/images/tools/figjam.png b/public/images/tools/figjam.png new file mode 100644 index 0000000000000000000000000000000000000000..08d27a1ff68430ebcec7e09aa70a90faddf58287 GIT binary patch literal 3694 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 A=Kufz literal 0 HcmV?d00001 diff --git a/public/images/tools/framer.png b/public/images/tools/framer.png new file mode 100644 index 0000000000000000000000000000000000000000..a3516ba3e15173c2bb88d677531cba47cea43410 GIT binary patch literal 1408 zcmV-`1%LX9P)BA0na;F0Fq$n{AcCuxl!VK~YqMs>R_Se9#A>Yim22 zrfJfxb!(D)uIG1eM%iALo1FXSob3yxBs6LHaPGb5o|6(VS^HlT!@gjoHMiiwhXe%5 z9|ZXAV07ou+xvQoeT@R<@_x3lsg2H``Oa6P;$saY&n!@$eR)5=e$6&|F7ZtTL((Ki zG7E$mNE;d-P#2~L{WTPylNPBIAk08&S@jTIm_At{F;b~On2yxhvhopnK6#=dpyCNz zI;3)dFav2_R8*b9WKoFA(BidZXQ6Gjuc&2{{&r}J?57Pi5C!N z9BymtpN4F@R~96mKo}x?rEjp4FK$wBl7}`yh zxvuM~5lIsg$tobsKxzoJr#xprsR;tnC>0LLN+3)}`l6wBPjX~5T2rqOHjpR?l+{3( zj?{De`hBT?Mn0+z6GbE>JAg19=}2qKi?gTy{ZJ$%yMQo6QjXlZ=B4z=`1=7tkn9A) z5JWk=rTLZg=;XU1AlVIs=}587O|PZL&%Eh&Bqx9{1L@|*H!_on*9|1ghnu!18=1()R{5T+x2zN!Abvr{uKvytS{T!!Q|@v{UD93arw=Y^^&-ZNs) zp&P>=>=^hlvHrfTU0I(G&q~~9-BmvD`RgK;W?o}%Uu%E=9`elNop27gr?71{HLYpN z?|<&6Z`~3FYb$!?)6570NKMVd1pB@K+{0r{zoWhFrh{;J@&?$|_yT(hcPFhl^zAdEl(Y4vXC9*=>8 zNbUr}E+U1Sb}3z_@xum)WbT~FA@>4d1tcxf{2Ymm_CjG}0Bp?NKv)3@mapDH1~SLM zW+e9mVTkmfLLp!MB#5&Y&(gk<6sk#NI)3Tk@A7Z$X7Ebzy>7I zfG`4!3@I0Um<*&&g2hN80%2?0}B!r2xB9OA!UR2llaWn>~Rh( zKoS`UGm!GZZ6u!j7A!y#9SAERt+5Uv#(NNQ~x>6;pcGLhs1!gM5dxM`tQhI9(b zK#~&(TSD4GzD)iKB_f#va&&dLgf#u?M%dMDGZ|d`14=+LcMnt5unh21Vya^Na^5Mb z26gIrPznF{&cg;Wq>X8Jk!CY5GxLYwXrr(*^E1f>T0!*?ldr#W-pt=x?~09JZ8(B* z#s09F5k&PjKN`G4+nX6C*}ztYgwOLsBE%2YS2PZ0_9Sf_!=1r4tz!NZcvRegyY~NL zmvvPkm3o<9Lh{RvRL(reKtiRZnTlt{d9R+o?@nF3gG zH!syZ$*ScJX^^a350YXsY4w7c@F#9NRuqLsvTMmzSR^~wq=iJXd(mDvBqw$?gqln` zwe2I!Jjuy@u}hH@71yL)hvf9e;Sy5i{4d~9>{zrHGGlk;sj(h#S^opmFf41mBPPZG O00000P)egL*pPm_JcQ7N{D7YaS!6PK2 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 literal 0 HcmV?d00001 diff --git a/public/images/tools/google-sheets.png b/public/images/tools/google-sheets.png new file mode 100644 index 0000000000000000000000000000000000000000..27631f6b29331033dd4d36a49fb62d57c02b16d7 GIT binary patch literal 1388 zcmV-y1(W)TP)EYGn9!;iD)!J)YeUmu z5wx{e4_@>TK@jxfK@dE6@aENkVm%bWiw8wKd1)<0t+7&xrU+uG1QHSxlaSa=c4p_F z@3*_zRFckn*?n*S^?hJqvzfOu?=!#oz2CeUhCv>OFFxKrG>+r>_u*JWh|yen_%2+Z zyNGvgoT=@PW|-u9DZYf5eEv7Ad55tP#9+)qv&lFyrf&lI%vHQ`<0P6ONw$+A&W}uB z#XXG8khMfk1%{Y!dc{3~a|b6;k>fxk@*O>re-mDWHh@dwfxpZpeRA+eXqF@==vYp5sa45VC0ZqQgCJsC z(#L8?w{8(cR3uRepiojb2_m*7DXNpYO%SnNCn<=eZWKh^9!U))?rs%CC>hA>q!*(cy8!veEQV8C`M8>m~sZ}9A5hQ zJzQG4s_Y;sJk&9IQW+e`-j9ZB-8!KM2xuS5!K3IFrQSs6K3E3#P!nN+K%t0mad_c8Axo0!Ym4Y5jxQ- zs2un#Raug-cG(R}q8*Pk#`HdLVhTk8S|g~O7kGVCUXs}5|8c;-vjy$K65?3zn5k9J zJ|~Bqa8J4qI?*PG9@cv-H-szCo|jtRjYB@n zr)r-sKl7nfyHMFh#qMa0ps2dYVBeOI>2m;C^d@QjqnIRA@Ud!(cn<}p?y6mzAnKkQ zdbs}YUr1ZYn+c)_$McWZqK$^uU)KKkUsUae7y3A|Z@7H@)p3O)37THNiLuX*0sVu? zD|;J=Ut6jPO7YewzBmPB1PS=o0w!Oc!btuQbfNVW%UDiDj;NAOukZY>{~?spf=YU8 z8yYc%q5vaEfYwv26!F2ju*4Hm@^L76I}61UwaaWKwxi$nBB^H(>PBm!ICAe3D89Z{ z8@}%Z4eK5+4pY@pi$1%r&H)nbXb!1k3q`7I>^hQYN@fP2NthfYKwSj!tLmJcRs5rS zr?0#Z>P|XkePO9IzMB0O56oUFUqH43Dlpe++X`zVWr9cvU0^P^^qz+LZJQhBrea7^GWBw u+va6mGEn}E;(2^G|4LO3O*KoUi~j(=1F6n0cA;nh0000``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBK3|DzL`iUdT1k0gQ7VI5W_oVoyp7Y6feM8@ zT^vIy7~jtE&JgjGIQ~Dr^!qy>xm`E!POdIYEEJ!{dR}{;$exbv3K|zRG~8G_f9#Un z`@>1_NVk%mz7UJP5=YgC7oHzQi@KB^S*sb&^jx;<^s19Q9UP&yD_@;7`P!V8@nYV( zUth!Tm(h+6s z!jn@RW)$7_%Cy)Kl2D^u@7Sb!%3#)$i5APB+?SihacWWRcZIYGjY~|Le%y|J$WYzg zyQjy+Y=-L0qvv#rayIgxXLaqQk*i2}o2%25T)7|9PAc}z z==lGOzp3%{J5|Z@lJ~bVG?%f=(p>H*q4dY3r6NJsSMJT)XGa6_gwi$u#wMT#DRS5@9loLG`$d@I2-D33++)ueB0mw)8We&ca! zs)B3CY0uf^Hz!W9cI^5f?Ror}hUWApk*}|p)c!T8+afKSv0?pA(IqRMElGdyd;7)b z-FqV%*nZ8S57jQSmu=x^)+hlyG3hu zb#dh+hEABFqZnnVqwcU@x%kOnjWc`PpS}|cn7ude=KcVlCz3t8E{ObK$$4Bnfo*$} z3!C|S-Dk7qAC~F4DgLs;Sx5R^+LUqnf?STs%t}W3CuQPVo7Ac}x@m~q32TgL-s8@P52DyNe*LpFqweE{2@%I? zw#*24cJk??`-S>hwT3s%b6caQX8b%U8?mV>azl0r&&+=(qqEYg#mjV$oY>3$v2)*L n3CFek1wPt#6K@90-p`b<%;K}<>{c&exxwJ+>gTe~DWM4fdK@I1 literal 0 HcmV?d00001 diff --git a/public/images/tools/html.png b/public/images/tools/html.png new file mode 100644 index 0000000000000000000000000000000000000000..17a38f2c766ef76a76b29eeae56cb6c46d8adbbc GIT binary patch literal 3718 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 Xru7wI`sR#M00000NkvXXu0mjf{4-Z3 literal 0 HcmV?d00001 diff --git a/public/images/tools/jira.png b/public/images/tools/jira.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1d593eb616e40d6106e3d7ee202ece2026db61 GIT binary patch literal 2647 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 literal 0 HcmV?d00001 diff --git a/public/images/tools/microsoft-office.png b/public/images/tools/microsoft-office.png new file mode 100644 index 0000000000000000000000000000000000000000..79d75d6c10448c6758f8bc99a1a063e020616ab4 GIT binary patch literal 3928 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 SQfZz50000E5fc+D50i>9 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 literal 0 HcmV?d00001 diff --git a/public/images/tools/penpot.png b/public/images/tools/penpot.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b9f51cda27608113b9cbc503fdf7f9cce280ff GIT binary patch literal 2152 zcmV-u2$%PXP)J*2nsP)_>OQ zbM`s=9M9fE`-7je_uA|Ft=qrW`qu&4k1qMW-pR%0{a~eYk&~Mvw?d=G$wVhZP6nKe zaWV?+M>jknLn4QZTcOb_zgytR8FcckxTTRas>X9Yzw0E8ij(aPhRqFHdr!dEsAinc z3*=j^E}-s30?>vdSB54gt+BPqRL6^ws@EJXT(De2BIMmKKyX9mPW`elY@_T%p zbf%+#W04kSzmqo(sv zAasFq5V|DgEQA>^?k=a8cqnI^@9RxEO5z$5&s9+#a{+5;JVK@`#@+fk6rropA7?vl zd93lIZb`Sj;)i~_#BaZRKO{PRM+^? z@P)e5`2A4)u0`m6GwY;tq6xcE+%k8yR-515@MDFxpby~3ox#W-Gq}yk12x?F`#M@ct6Jwi`DGz)MHr7bK0Jn?Bli!}=tlv6PW)5GA28SUgvgc(isn?3M@a#r-AgU}jOaHe5_ zwnhGqM9_Oi8+TTSc8RS~7`6s>IUPq7s@rIn9TkPq_>PU@`&Hb(GHy*z_l+u1O3aYF z-v(c^)NBWl4RPAN2vc*c0A^K3m^W(b9JHC|N{zHzf@YR8(?bX~X15u#w4m)#m~rr9 zOWaBrUZ?sjEy$`NjORfUM_blvti7jDt-DxVgNYZFpg~mYNcQDF7s@ju z-s$9N_*r8avN!)ufO+F?0%uj`c?Uwp-VR^3x@d%;KI4}OE|$nya|0+oR2yI9WC^M# zn$#Jt*};m5u_jmxH##{L#m6-Gyt2DCb8b3`VXB54A$ggMP+=8$)&+FKXqKQI66RTiu$qC( zoc!kGV}wn0qEmyo62rZ3?r`erUzaw|!1tIPXftLYOpUt`3e4Yo5VTy~cCb3fe&e?r z?VIN9dad7l*J)i_dY|O6*W_cDDbEbF0hXYh#@#Ae^Gw24f#fguqi2~gtrDc*-uA{Q zEhXk3CpRIGX!F`Jf{>8-T=*jy+oCknzc{%7VY?#>L0mGN2d|h~QU*=_t~6njhLDaE zq_9NIhHp7ZT~D>ytx>onf^{I*yA2*s^4Jv7OWQR0TYg! zY%Da%uw%vo4BtxC@Qiz=@!QCxlRH5QdtSx!tu?4#6X}|cg}n=&6eWn@$;KXp0pAj{ z8h$&LNZMelhr$q~ur)iy$w#OrD(*Jc%|27OaW=`sn?;2v96<_OAfA7{isV&xJR|XW z1^mt?6%6I@cU3itHdZq1VIX0;O|U2G`iB+t=$F)O%as0 zp^;sutu)V{A*`92T06BHc@tzYzQ%K|C=x-1L`hHzN`g{Q5|o0HpcIq@rJy7z1tmc# zC<#hINl*$(f>KZtl!B6=6qE#|pd=^-B|#}D2}(gpPzstQ$l3%I*)}nTJ)3LF!mL?> zj&kx2!oB#S6Q#s3ue{6gF1(Rf!)Sz{aq_E&d9>i*1zcWqQ$wku5oP~$fQ0Zw_AhwL z4?V&r#-c@Nq3?hqr}h_X_^U_>jYv8JQel@=4jv?iMP3a!N2n&a(cz1tDn|4`mSP~4WHnm}Tr_(`%zBU$|K4mEVJ zW8;W{H9F^?k7x^sbt&FV{=~fV`9&m;X}q$@E8uz$ZA20i!_FSJVEC+4tA$x&{)RVL zKPWm(QDBMU&1S1h*?(`a@4Q=~e`(S2sX8y%ft1%2e#CHMHaIz7{QPf-iD8N2dTzbQ ebaBgls{RjubSrYugnj=20000@FL0qW{SOpDD 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 literal 0 HcmV?d00001 diff --git a/public/images/tools/sql.png b/public/images/tools/sql.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e118039b2e4c1b631f227b2aa6240ab84a7630 GIT binary patch literal 2328 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 literal 0 HcmV?d00001 diff --git a/src/components/SkillsSection.module.css b/src/components/SkillsSection.module.css index 3b0e631..cd08de3 100644 --- a/src/components/SkillsSection.module.css +++ b/src/components/SkillsSection.module.css @@ -116,19 +116,12 @@ padding: 0.75rem 0.375rem; box-sizing: border-box; transition: - opacity var(--motion-duration-default) ease, - filter var(--motion-duration-default) ease, border-color var(--motion-duration-fast) ease, box-shadow var(--motion-duration-default) ease, transform var(--motion-duration-default) var(--motion-ease-out); cursor: default; } -.toolDimmed { - opacity: 0.35; - filter: grayscale(0.8); -} - .toolIconContainer { width: clamp(2.25rem, 42%, 3.5rem); height: clamp(2.25rem, 42%, 3.5rem); diff --git a/src/components/SkillsSection.tsx b/src/components/SkillsSection.tsx index eb804ba..d189782 100644 --- a/src/components/SkillsSection.tsx +++ b/src/components/SkillsSection.tsx @@ -4,9 +4,7 @@ import React, { useState } from 'react'; import Image from 'next/image'; import { Code, BarChart2, Wand2 } from 'lucide-react'; import { - skillCategories, - keywordBadges, - toolsList, + skillsByDiscipline, filterTabs, FilterTab, } from '@/data/skills'; @@ -14,6 +12,7 @@ import styles from './SkillsSection.module.css'; export const SkillsSection: React.FC = () => { const [activeFilter, setActiveFilter] = useState('software-engineering'); + const activeDiscipline = skillsByDiscipline[activeFilter]; const getFilterIcon = (id: FilterTab['id']) => { switch (id) { @@ -39,14 +38,14 @@ export const SkillsSection: React.FC = () => { {/* Main Card Container */} -
    +
    {/* Section: Skills */}
    SKILLS - {/* 8 Skill Meters Grid */} + {/* Discipline-specific skill meters */}
    - {skillCategories.map((skill) => ( + {activeDiscipline.skills.map((skill) => (
    {skill.name}
    @@ -65,8 +64,8 @@ export const SkillsSection: React.FC = () => { {/* Keyword Badges */}
    - {keywordBadges.map((badge) => ( - + {activeDiscipline.keywords.map((badge, index) => ( + {badge} ))} @@ -79,34 +78,26 @@ export const SkillsSection: React.FC = () => { {/* 8-Column Grid */}
    - {toolsList.map((tool) => { - const isMatching = tool.category.includes(activeFilter); - return ( -
    -
    - -
    - {tool.name} + {activeDiscipline.tools.map((tool) => ( +
    +
    +
    - ); - })} + {tool.name} +
    + ))}
    {/* Filter Tabs Under Card */} -
    +
    {filterTabs.map((tab) => { const isActive = activeFilter === tab.id; return ( diff --git a/src/data/skills.ts b/src/data/skills.ts index 033beb6..6839309 100644 --- a/src/data/skills.ts +++ b/src/data/skills.ts @@ -1,79 +1,241 @@ +export type DisciplineId = + | 'software-engineering' + | 'product-management' + | 'design-ux'; + export interface SkillCategory { name: string; - level: number; // 1 to 5 + level: number; } export interface ToolItem { id: string; name: string; icon: string; - category: ('software-engineering' | 'product-management' | 'design-ux')[]; } -export const skillCategories: SkillCategory[] = [ - { name: 'Backend', level: 5 }, - { name: 'Databases', level: 4 }, - { name: 'Testing & Quality', level: 3 }, - { name: 'System Design', level: 3 }, - { name: 'Frontend', level: 5 }, - { name: 'DevOps', level: 2 }, - { name: 'Web Scraping', level: 3 }, - { name: 'Version Control', level: 4 }, -]; - -export const keywordBadges: string[] = [ - 'Documentation', - 'Authentication', - 'Authorization', - 'OAuth2', - 'JWT', - 'Caching', - 'Rate Limiting', - 'Throttling', - 'WebSockets', - 'Background Job', - 'Web Scraping', - 'Bash Scripting', - 'Microservices', - 'Performance Optimization', - 'Third-Party Integration', -]; - -export const toolsList: ToolItem[] = [ - // Row 1 - { id: 'vscode', name: 'VS Code', icon: '/images/tools/vscode.png', category: ['software-engineering'] }, - { id: 'codex', name: 'Codex', icon: '/images/tools/codex.png', category: ['software-engineering', 'product-management'] }, - { id: 'antigravity', name: 'Antigravity', icon: '/images/tools/antigravity.png', category: ['software-engineering', 'product-management'] }, - { id: 'git', name: 'Git', icon: '/images/tools/git.png', category: ['software-engineering'] }, - { id: 'github', name: 'GitHub', icon: '/images/tools/github.png', category: ['software-engineering', 'product-management'] }, - { id: 'python', name: 'Python', icon: '/images/tools/python.png', category: ['software-engineering'] }, - { id: 'django', name: 'Django', icon: '/images/tools/django.png', category: ['software-engineering'] }, - { id: 'fastapi', name: 'FastAPI', icon: '/images/tools/fastapi.png', category: ['software-engineering'] }, - // Row 2 - { id: 'celery', name: 'Celery', icon: '/images/tools/celery.png', category: ['software-engineering'] }, - { id: 'postgresql', name: 'PostgreSQL', icon: '/images/tools/postgresql.png', category: ['software-engineering'] }, - { id: 'redis', name: 'Redis', icon: '/images/tools/redis.png', category: ['software-engineering'] }, - { id: 'neo4j', name: 'Neo4j', icon: '/images/tools/neo4j.png', category: ['software-engineering'] }, - { id: 'mongodb', name: 'MongoDB', icon: '/images/tools/mongodb.png', category: ['software-engineering'] }, - { id: 'typescript', name: 'TypeScript', icon: '/images/tools/typescript.png', category: ['software-engineering'] }, - { id: 'react', name: 'React', icon: '/images/tools/react.png', category: ['software-engineering', 'design-ux'] }, - { id: 'nextjs', name: 'Next.js', icon: '/images/tools/nextjs.png', category: ['software-engineering', 'design-ux'] }, - // Row 3 - { id: 'linux', name: 'Linux', icon: '/images/tools/linux.png', category: ['software-engineering'] }, - { id: 'docker', name: 'Docker', icon: '/images/tools/docker.png', category: ['software-engineering'] }, - { id: 'nginx', name: 'Nginx', icon: '/images/tools/nginx.png', category: ['software-engineering'] }, - { id: 'caddy', name: 'Caddy', icon: '/images/tools/caddy.png', category: ['software-engineering'] }, - { id: 'minio', name: 'MinIO', icon: '/images/tools/minio.png', category: ['software-engineering'] }, - { id: 'prometheus', name: 'Prometheus', icon: '/images/tools/prometheus.png', category: ['software-engineering'] }, - { id: 'grafana', name: 'Grafana', icon: '/images/tools/grafana.png', category: ['software-engineering', 'product-management'] }, - { id: 'kubernetes', name: 'Kubernetes', icon: '/images/tools/kubernetes.png', category: ['software-engineering'] }, -]; +export interface SkillDiscipline { + skills: SkillCategory[]; + keywords: string[]; + tools: ToolItem[]; +} export interface FilterTab { - id: 'software-engineering' | 'product-management' | 'design-ux'; + id: DisciplineId; label: string; } +const tool = (id: string, name: string, icon = id): ToolItem => ({ + id, + name, + icon: `/images/tools/${icon}.png`, +}); + +const placeholderTool = (id: string, name: string): ToolItem => ({ + id, + name, + icon: `/images/tools/${id}.png`, +}); + +export const skillsByDiscipline: Record = { + 'software-engineering': { + skills: [ + { name: 'Backend', level: 5 }, + { name: 'Databases', level: 4 }, + { name: 'Testing & Quality', level: 3 }, + { name: 'System Design', level: 3 }, + { name: 'Frontend', level: 3 }, + { name: 'DevOps', level: 2 }, + { name: 'Web Scraping', level: 2 }, + { name: 'Version Control', level: 4 }, + ], + keywords: [ + 'Documentation', + 'Authentication', + 'Authorization', + 'OAuth2', + 'JWT', + 'Caching', + 'Rate Limiting', + 'Throttling', + 'WebSockets', + 'Background Job', + 'Web Scraping', + 'Bash Scripting', + 'Microservices', + 'Performance Optimization', + 'Third-Party Integration', + ], + tools: [ + tool('vscode', 'VS Code'), + tool('codex', 'Codex'), + tool('antigravity', 'Antigravity'), + tool('git', 'Git'), + tool('github', 'GitHub'), + tool('python', 'Python'), + tool('django', 'Django'), + tool('fastapi', 'FastAPI'), + tool('celery', 'Celery'), + tool('postgresql', 'PostgreSQL'), + tool('redis', 'Redis'), + tool('neo4j', 'Neo4j'), + tool('mongodb', 'MongoDB'), + tool('typescript', 'TypeScript'), + tool('react', 'React'), + tool('nextjs', 'Next.js'), + tool('linux', 'Linux'), + tool('docker', 'Docker'), + tool('nginx', 'Nginx'), + tool('caddy', 'Caddy'), + tool('minio', 'MinIO'), + tool('prometheus', 'Prometheus'), + tool('grafana', 'Grafana'), + tool('kubernetes', 'Kubernetes'), + ], + }, + 'product-management': { + skills: [ + { name: 'Technical Product Management', level: 4 }, + { name: 'Product Strategy', level: 3 }, + { name: 'Product Analytics', level: 2 }, + { name: 'Roadmapping & Prioritization', level: 3 }, + { name: 'User Research', level: 3 }, + { name: 'Testing & Quality', level: 3 }, + ], + keywords: [ + 'Market Research', + 'Competitive Analysis', + 'Customer Segmentation', + 'Personas', + 'Jobs to Be Done', + 'Value Proposition', + 'Product-Market Fit', + 'MVP Definition', + 'RICE', + 'MoSCoW', + 'PRDs', + 'Requirements Gathering', + 'User Stories', + 'Acceptance Criteria', + 'Agile', + 'Scrum', + 'Sprint Planning', + 'Kanban', + 'Product Documentation', + 'KPI Definition', + 'OKRs', + 'North Star Metrics', + 'Funnel Analysis', + 'Conversion Analysis', + 'Retention Analysis', + 'Churn Analysis', + 'A/B Testing', + 'Beta Testing', + 'Usability Testing', + 'Customer Interviews', + 'Customer Journey Mapping', + 'Engineering Collaboration', + 'Design Collaboration', + 'Go-to-Market', + 'Technical Trade-offs', + 'Technical Debt', + 'Scalability', + 'Performance', + ], + tools: [ + placeholderTool('notion', 'Notion'), + placeholderTool('mizito', 'Mizito'), + tool('github-projects', 'GitHub Projects', 'github'), + placeholderTool('jira', 'Jira'), + placeholderTool('porsline', 'Porsline'), + placeholderTool('mattermost', 'Mattermost'), + placeholderTool('figma', 'Figma'), + placeholderTool('figjam', 'Fig Jam'), + placeholderTool('sql', 'SQL'), + placeholderTool('power-bi', 'Power BI'), + placeholderTool('metabase', 'Metabase'), + placeholderTool('google-docs', 'Google Docs'), + placeholderTool('google-sheets', 'Google Sheets'), + placeholderTool('google-slides', 'Google Slides'), + placeholderTool('microsoft-office', 'Microsoft Office'), + placeholderTool('chatgpt', 'ChatGPT'), + placeholderTool('gemini', 'Gemini'), + placeholderTool('claude', 'Claude'), + ], + }, + 'design-ux': { + skills: [ + { name: 'Visual Design', level: 4 }, + { name: 'UI Design', level: 3 }, + { name: 'UX Design', level: 2 }, + { name: 'User Research', level: 4 }, + { name: 'Product Thinking', level: 3 }, + { name: 'Prototyping', level: 3 }, + { name: 'Design Systems', level: 3 }, + ], + keywords: [ + 'Typography', + 'Color Theory', + 'Color Theory', + 'Visual Hierarchy', + 'Iconography & Imagery', + 'Interface Patterns', + 'Component Design', + 'States', + 'Interactions', + 'Responsive Design', + 'Design Consistency', + 'User Flows', + 'Information Architecture', + 'Usability Principles', + 'Accessibility', + 'Surveys', + 'Personas', + 'User Segmentation', + 'Problem Definition', + 'Feature Prioritization', + 'Success Metrics', + 'Wireframing', + 'Microinteractions', + 'Motion & Transition Design', + 'Component Libraries', + 'Design Tokens', + 'Pattern Documentation', + 'Scalable Component Architecture', + 'Design-Development Alignment', + 'Usability Testing', + 'A/B Testing', + 'Storytelling', + 'Design Collaboration', + 'Go-to-Market', + 'Technical Trade-offs', + 'Technical Debt', + 'Scalability', + 'Performance', + ], + tools: [ + placeholderTool('figma', 'Figma'), + placeholderTool('figjam', 'Fig Jam'), + placeholderTool('framer', 'Framer'), + placeholderTool('adobe-illustrator', 'Adobe Illustrator'), + placeholderTool('adobe-photoshop', 'Adobe Photoshop'), + placeholderTool('adobe-xd', 'Adobe XD'), + placeholderTool('penpot', 'Penpot'), + placeholderTool('html', 'HTML'), + placeholderTool('css', 'CSS'), + placeholderTool('javascript', 'JavaScript'), + placeholderTool('tailwind', 'Tailwind'), + tool('vscode', 'VS Code'), + tool('github', 'GitHub'), + placeholderTool('chatgpt', 'ChatGPT'), + placeholderTool('gemini', 'Gemini'), + placeholderTool('claude-design', 'Claude Design'), + tool('codex', 'Codex'), + tool('antigravity', 'Antigravity'), + ], + }, +}; + export const filterTabs: FilterTab[] = [ { id: 'software-engineering', label: 'Software Engineering' }, { id: 'product-management', label: 'Product Management' },