From 8c8af8bac8df5870098fc975369c116c33b63a7b Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Mon, 17 Nov 2025 21:22:26 +0100 Subject: [PATCH] feat(contact): notifications system + action --- app/assets/fonts/nds-10px.woff2 | Bin 2684 -> 2724 bytes .../contact/bottom-screen/bottom-bar.png | Bin 24838 -> 24838 bytes .../contact/bottom-screen/notification.png | Bin 0 -> 20839 bytes .../contact/bottom-screen/ok-button.png | Bin 0 -> 5976 bytes .../images/contact/bottom-screen/top-bar.png | Bin 24838 -> 24838 bytes .../contact/top-screen/left-bar-things.png | Bin 15145 -> 15145 bytes app/components/Contact/BottomScreen/Bars.vue | 28 ++++-- .../Contact/BottomScreen/BottomScreen.vue | 29 +++++- .../Contact/TopScreen/Notifications.vue | 83 ++++++++++++++++++ app/components/Contact/TopScreen/Title.vue | 24 ----- .../Contact/TopScreen/TopScreen.vue | 5 +- app/stores/contact.ts | 13 +++ 12 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 app/assets/images/contact/bottom-screen/notification.png create mode 100644 app/assets/images/contact/bottom-screen/ok-button.png create mode 100644 app/components/Contact/TopScreen/Notifications.vue delete mode 100644 app/components/Contact/TopScreen/Title.vue diff --git a/app/assets/fonts/nds-10px.woff2 b/app/assets/fonts/nds-10px.woff2 index be529bc2723c38f315922861325ba6f26090667d..adbc80f6892cef51bcccd2a6458240d0e5bb744c 100644 GIT binary patch delta 2704 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 K(9Iv{H30zddNcI^ delta 2664 zcmV-u3YYby75o$!cTYw#PgGP-000Vn00{s9001Vy000U!kr*+5BN4VNPF;(lR7|Su zuM&7Nr>5t@F>v5v7V|_@5$`=e?%LnF3WrEJH%8*Q@I2Y|-?>%Q?ctO9gK$LdIszwJ zFaO;Rj_k(!jyn@@}EAz<`vnnw^+uO_*>h)PQ(Bsjl zAB?|vg!>AITH$Gb@#KU#jRlQHSoTfX4@F!I0&enVEt2rZkMJmZgdGn&@aV?h|9<)@ z{p(h#v1hIuLGDQa4kFTdx;pc%t=gh&D=4ke=<2?|F6~Qcl{Ub_+yF8_X{;lZ;UOr1 zhSN|MgtPCv^|B7vY=h2HdAU;X?<*&|ENAl*dwC~TaRMQKBuKZrr(hH!;tuaS#{0lO zLd$#w`AW%Gh2*PMzDDOu&5=;5Q=$5AYN&q;&9Trvl0I@I``?|^f3Ib*L`<_@qb9X# z-tx_P=x5^~2&)+LZjhn1zTsyV&D+qj(<^m3N&h%;o`&*!megw2VL_=S zw^nap@G1u(y1@(?ZgJbB+T+Y!-sof!Rp}Hv9rQC z=6v85xmVqauSoc=1KGtD!*GFLMnXY$!r*}2*C*;fm6 zL8rvl+x5r#Z?oNeZvOB0^gz$Fr!V@UU;5*8$MI%Q{U*QIZ~Yg?7m`Fz)>uASye1Y- zPq}%2MMhiwA^+AE+cRZ1-qVW?`69>1##?7NXP{Q{ebPGvBM!Uogzd;PZRI%9?b(de zAYz1NOY&vMN9x(DTQW%44cJ?*t!e?DNDyln$Uz72%`*kO0d2MMfvLs%2=$kLW>`MCp54SHQ2MVD4V7JYTiHz?gNz`6+6>{QBRhc&Q>xMHX;Fm`k_r&Db~sstc^ zrz|lXb3>#nK%d-#da!5I=w^Bqk%HP=qFpAf4dOVis;)ffxMxMDr8~WX^~~MUtPCAR zN47Phb zX-pK=EGth5NhcdfrfOr1m_Cga1v77d>B~|{FVu_g1MJa9XafPzS~5yyj$W0v#u~0K zU~O+6xALP}2gnqo@Nqq2pL9Az*=X?nw-j(ieE373r4MzBWZ=Cr4orjl6VBOfGDkiI=B+gu)*5dv~=6j2u|Qd zt>V^e4+hUO)b-C+K5!-+DDXEaoj#(?YFAJfv9t`VT3WWWk&xIG*IuGQb|A&LdRD#= zM2BPRmidl@PNZJ!P@Y#i_W@3SLlJ_LH*eU@5CNel&okuA4@`ZMb{33XYj}!yqPl2d1RD}7c(vkx)+qKZ!0PSr2}Pc^de7%0<3PGVv7 z_xgK?ZKi|%T-i&2Vf*8Yr+aWXsH4@Kj%>&3pj}o2_eidT*`^Dn^FA^i zW{-xEFb8OV`TEm7($K1qPQ9Q=(h)_I)?W;f@nTVIz1SoMta;#;#`FDbcc2LA-WEmD zyeOJ<-x5RAPsF0Q|Ah#(x;-YvA~&EeML4KuNGa{%7PCUx6DDb(svoQDgY0>hE1BHyY(;rB*OS%xN5~-kjw} z#*_6%Yq41_Fsi%tg}r6w!XNd?HN4+ug(}kjlL;Y^|A(%a*>dC}sFu#bh#(*#P$rH> W)uULNn~$K^yZ0=4H-5St5dZ+=GA@4r diff --git a/app/assets/images/contact/bottom-screen/bottom-bar.png b/app/assets/images/contact/bottom-screen/bottom-bar.png index ca1bfd5372a5391d957d5dbeb34133ce7e5999cd..aedabf75bf6217415b6678eae36da6c1f5f8e6fe 100644 GIT binary patch literal 24838 zcmeGlO-Niv_^q1#e*rI7Sc|1QOrYBU()9*k95*xXEWXzZbwrfEbta=GZtD`xQQf`#qfuH~ddSdx z3&zcFM&lG1yb*!3Tmaebikt(f^yf#Tv~ zPPntP1BMYb-QwaRtf$-r@p>3NL-Cz3z8K)?^q35Cl@GOCbw%$raiA(#nw00m@o`vN zTT|jxS69Qz$_g*5sj1=d^7670mkl?tu&@BD-t-)$j8uTe)bA^CT~KDyTzmew>&a!Q zfH zfq?-y-xf)RlJT;@%WQB;7I5&A0}Xyy@!Hy2UW|hu4unffOG;x9A1isXtaRrC!C;v} zMr^qf3WXBNcXxN8sHg}q#`&4%YwQJR5QNDAmroef@?`AH{XIvzO-OrDX0 zgM&CN<$PQr%LIc#4pPdKku#V#uHFAW=`@%@U9>14EWjoKi&?-zsfWE0n4Fxn!1AYf zWMl*?o3m@u@y8P8QY}{j=A^Nbs;bxqG6qdd(d3CGn8t|{=M9`ZX%bcKB7NBY;hps& z;j5SR^MY5v4HInqo}L~zEYe0B4u|36VQ+8q(xz-08Q*!c;C=E1uoC0RnLt^Y>TEet zG+s92_6~!1_fK#UmPqX!qR#`YZDx5hl8nV_vO=j08+m4ChMxgoTD)2!xN7f@xU;jf z5;t{LJ`c#YTNt(0{z6?%2c$afzbS7PBOVqwtjmTsv!u#t0C7dQm?l2xgkUGQz2&qcBj0eG z-3uscZ}(0>L7H|@5M6s%C)L5+0>;W8o7y?V+&+0IizKL}OwFS&AaLT+$muL%U z3*@^6T;B`2F%VuWjkEWV#Ir#+{7w>WM@NTteLYDHo~F8bauw)Sw~2`f$fomTxAjRU zJ-R*Poi_%3)tOF9=PvID|9$keU0(pPmZ#|I)UQ}nhK`oKi0SGXub<_=l9CcGR+NMI zB3#ZRff+vH;ys2~F5{Hb>^r_4z_-opzHlUV zezP>bZ-NgbzIcQ$u+l}On8&oZ4UymWr99G$Zvo42kw5Aq^EJ~kRrvb)I$sUocAzN9=b>EetNey!jjuKz1nE*?k!;boVb@^&LO%5IQni9y;`5CnADa-#=7W=af z4lHo<%R%k)?7&_cRc!(87ygWW(h;vSbgb>5`$6tL2Ty*Pxy>H)2K*lZsXWWS{q*hU UU%VRm6^DxOr7NwEE_UDl9~eE!WB>pF delta 596 zcmY*WODIH97@q&$>l$MggK1`xVn&G#H(AVr8n;n1lY}P80!xY#N)~EHl1Iw*Z=}$W zlE-))v9UM?3%glcFiOfo&DzR;A6|=dzVko6@BjYJdmaXgq=~T@JkTC2>zE`Av7@VWA(noWp&|KuJ>S{CFn6;j-*y2XX+6>XF^-IxaFX z?eJs5-K6mV=>|}dhVZ1=j~{NQ#-l{7q|^vIb*ci(dN?5Q>5&66(?)^^28+uX9X0MG zvPa`SgUIESh4(sY+=aPF0lu}@;Z7f?^Gc_ItO4w1J;1KYzlWG@3p6MW(nRX~0k^6~ zDY^zE-{$<^o=LEDbpi!xhnF69u&nX_RWfK+_1(C9_oGNlg0P!cgrEMrGAUv#GS1v>;{5UX7hHCY7pF&A?qACJioq*3_t2Y;!VaKryux+~VrG14YNUKKFe=MdO zBM<$CLyfCetXgq18IbWkKE-&?4X{+tE#PZ!k|Yx1-+>k2@~$s_+HAI9G~5~|wBd6| WaYx3_v+tYJD|#Z@))7vtgR@@{82C8= diff --git a/app/assets/images/contact/bottom-screen/notification.png b/app/assets/images/contact/bottom-screen/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..11283c9f8786a4abcb42c4b2f8170e9c40aa37f6 GIT binary patch literal 20839 zcmeI4&r2IY6vy94ll3RmONE{SLQhsaiy)B%lS9M?DOfxxMLc*B{DF9>lwLe}6{#Ks zuPr^+YY(mefxY$C);}Q;w(o5j(Xe>R%v)!_fn+n2FyHq+Z{OS5olOqr=VpicpZ62d zP`y@Z^7fja&w7hQ=IghK3vQUr=Io65c{%ou8&B5CjWW@f!-1QX0=G+VYt07H-V37r z4@52Q+W$keJ;4Jl6HOiwjck0pcs0cz^lj7@H;KkaGom5K{42#ak6o6}%lG_R>_{ ziM@E(A(GUncDwDpTy)ssyjds|lDa5Dp*yQ{0B|0{6akfLm|}OolL-N zx(KR6xLQL86x6HrlQ;HW04Oke>Bq!N(xnJ9{|T$4%%ogk1g0=Pt&v4FrF5J)3{L`|cDJ`l(l0VHb10`h=4 zrz>s#KZ2*{^1lENd<`FkP5?<8dW7L$5Co8@L4*-bgigS&sfwRivI#xf@bA$OuuC-d p28g?fYMsCj94!fKK|qhdz1%$8etlC~`t@7PsaNMJpJtZd{{slfim?Cy literal 0 HcmV?d00001 diff --git a/app/assets/images/contact/bottom-screen/ok-button.png b/app/assets/images/contact/bottom-screen/ok-button.png new file mode 100644 index 0000000000000000000000000000000000000000..31916cc9d07c6d9ffcdda42e88e78b17f906c70f GIT binary patch literal 5976 zcmeHLOGs2v82*n;IckGWgo&Vx1g&y(6%uNUC^~_Uq=kYDqeaZluott@A_Ch8tp;gT zM9@MQ7dhA>&=w7C)LFHf&`q}SwHt%m`Of%X$2)h%duQerf0d;TT8Vy-6WxdqU7mQebh}*+R7~`ZP7?XA;1N&X-+U~Q^?f-V2xNW9`>(5!KEIy90MdD#W|mu`LmL^;Y}&<%6Wm4=xbR&CMyQhK2^(+}zCK z*xA`37YRXib#-d+;NT#O2ndXeU@)kejvA0cs?rG?8yjh3W5Yl~1l2;S(+RUEG7w62 zI2_JEr9V46J4w?tT3K1i8q0@pVbJIE<)q0smdR98Q=__;os-F&?^`S^ENEV@H;bmD zqr>)e+uGV>oFy2ih3E(&2tv&gBul$QAaZ~*GwTp)1jMQ^2x6lwrvsR*fC@?|6tY75 z&uL^erDFokX09|^#JRq_yiE88*v)&ROkwJY2XeKDKbJgOt9-fSorKr3 z+Gx2MRq4#!=x=+s;8d$_k-nXYtWjE!5Fy)RAx%V&G}w85|ruI?OCCF6xDInkMl-Y{d$Q zlOUkXXaLtxDO&6`*ci>8>gsBxx)gdK$SFByvX$Y7FTI3uoM~!m${Z`|8~Y$`H3005 z*nZa5*7R)%cqcY;$aNZ$$)w6al(3$G*!M~uMN9LUP4N{|sz+;K8#QN{-OCudhFS1Y59Y KpnJY+{P|x7Gb}m) literal 0 HcmV?d00001 diff --git a/app/assets/images/contact/bottom-screen/top-bar.png b/app/assets/images/contact/bottom-screen/top-bar.png index b9c29c14ef4d4e111a6d2662a9bedf21fe534288..4d0eab766ecc02f763692b0c480cc91547db0074 100644 GIT binary patch literal 24838 zcmeHQPe>F|7=KTuEdRhphyGonqEku7ib51k_n??`se@@9B7#y(kuHe@p%=+6Q9&rw zF|bP@bm|b%LCRBfFez~B;vOY}?R~TU@^hHkowvKr%+9-WCz`+e`v@4dG(`{oT! z_H=hN)*Y-9LNum3+j@nNDl7Ky+NpBa9`1dk6gk}6(JH@wJaJzs){T~~79r-R>;Dey zQ2OEPoxNQ`+&eDB_yZySDARaGh>=r5{O%Xx>=PmO4L)DEcuqNX4|ZN27NY4WedO57 z=22y=y_@c8ul-fOr=g+g(BmtwRFNXx)^ce~%9H(HUdW|yKXM8dTC(1LSgdH}qkY|C zYL1BYm*mjQT&N6G&k#7N&E;}JN_$58V(5a1y9!)5xn3ymhNt!+hVsC`&g+8wB3r^BtyY3V=7tR;sr6m7$m0MC{d|oxWmqAdX93 z2G4U$RP$18Uc~0PfODgUNXO=k*A5;Z7{qg%Tb`Fie#Ak##YEL+t!Cr%TtJ=p`oGmn zc}mp3>Dzr`=+Ug0zH`;qVYdP758@HaTwAj6gFD0#2(~Q&5mplaY&gPW6G+q4u3#Yb zm`WnbfY}y~=)eTktg87H5ELOvtH*vWa3GbkZ(fWvJkU+7nFq<42j;hS z0s9sZM?{UxZ;2Tm3=gzMk}wZs(%+P1UxwOQJT*d~;?jOvMKX$s+UvJ%I@l=oHOX!I zxw3N1?^yuOQ~qvXo%*kX zFSq|e*QeXwLc9mblWx0fqTD#$&IF04x+ppM%Ud_?G;t|G0uLRsn4SD|>;O17o$B%H zN4=1UgHB~pf(}1q-n&_!6X#b44ie>)sF{^{v@;sp~v;jI{VB>ho^K!ZF7VCzk7?kbwlg}hQ2F%;SdVCqQ zVIWovm{Vb~8cx$0!+;(G=3KBIUj}U$h!q1el}g3t<-k~tjOmPFK$C&bBe#}S$Z7f? b0h*yUyt(I$^=xGI9VzMd?zY#h{S*HHx-o2z delta 432 zcmYLFze_?<6n^Kur&zr~u*l&R5)m2|LJqZw8Clq`r6q^{iN*#?q9Ul6z0NfZ%T zomSylEm6U1YKjUJYU(XbCa-%{XgcTnanHwh*Kc6`26neRUSH2(-(uR&_CA;y#{0fB zp1RX`B!`&k#g&#YGyQ_4V`TxD8E8-`RegE?#FAE{Q}?Wlrjp^pCZ8wV{KU)%720wx zW+sK7)7y=A189x7sHoRKdHb~Kd8h{TH~=zTXdpMWUuZ6`ih4W0)=k+!7m%fCbsmd) zS#cbPN?HftnP-|S*U$*^pE+-ju^69sf82E?#5B(Q09-Ms)G49Ol8x>-V|RzgsNL`(HE1 zPnctmzdu>xCaIXu-K=<~GQ07fEqcjB#g60?y?T@e5NI}=!mA_jEVu!-hhODP0UfTL z3VfZ^Znw1#`4|xJJkQQ;zEsUAp65Cl*vOJ(~ z=%-k2C$5t+cW96Pa%9KZkk8#RVjZ=$9`a-F0^5xG4B2+#8*p`ZNVk7bM_c)>HdCcn zL^Cz{FMz8VK~lFdYCggca4HCZ00@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?x bfWUzh`21<@+>1v2hjd(=5A(0*mRElRgYvXV delta 179 zcmZ2kwz6zOm$-nanvUUK4hseb1qM$S$B+zG#tf_JM>jhvCh$$RS74QA00PIz%>N)7 z889+3GVEJ6ZL=V22lM6$f`ObM)hr;D6Ay|o?_WNBvLNfs&D&*)7&jZR7BaE?6*6zz sJWpY{C`cU-%p{0<4R&PHHeTRh6!CDDbe^GpL<6MI)78&qol`;+0BI>OOaK4? diff --git a/app/components/Contact/BottomScreen/Bars.vue b/app/components/Contact/BottomScreen/Bars.vue index 9e161e9..ca0d5cf 100644 --- a/app/components/Contact/BottomScreen/Bars.vue +++ b/app/components/Contact/BottomScreen/Bars.vue @@ -1,20 +1,31 @@ @@ -29,4 +40,9 @@ useRender((ctx) => { src="/assets/images/contact/bottom-screen/bottom-bar.png" hidden /> + diff --git a/app/components/Contact/BottomScreen/BottomScreen.vue b/app/components/Contact/BottomScreen/BottomScreen.vue index d82747c..b0a76e9 100644 --- a/app/components/Contact/BottomScreen/BottomScreen.vue +++ b/app/components/Contact/BottomScreen/BottomScreen.vue @@ -6,7 +6,17 @@ import Bars from "./Bars.vue"; const store = useContactStore(); -const { selectorPosition } = useButtonNavigation({ +const ACTIONS = { + github: ["Open", "Github profile", "https://github.com/pihkaal"], + email: ["Copy", "Email", "hello@pihkaal.me"], + website: ["Copy", "Website link", "https://pihkaal.me"], + cv: ["Open", "CV", "https://pihkaal.me/cv"], +} as const satisfies Record< + string, + [action: "Copy" | "Open", verb: string, content: string] +>; + +const { selectedButton, selectorPosition } = useButtonNavigation({ buttons: { github: [26, 27, 202, 42], email: [26, 59, 202, 42], @@ -30,8 +40,19 @@ const { selectorPosition } = useButtonNavigation({ }, }, initialButton: "github", - onButtonClick: (buttonName) => { - console.log("Clicked on selected button:", buttonName); + onButtonClick: async (button) => { + const [action, verb, content] = ACTIONS[button]; + if (action === "Copy") { + try { + await navigator.clipboard.writeText(content); + store.pushNotification(`${verb} copied to clipboard`); + } catch (error) { + console.error("Failed to copy to clipboard:", error); + } + } else { + await navigateTo(content, { open: { target: "_blank " } }); + store.pushNotification(`${verb} opened`); + } }, }); @@ -45,5 +66,5 @@ const { selectorPosition } = useButtonNavigation({ :opacity="store.isIntro ? store.intro.stage3Opacity : 1" /> - + diff --git a/app/components/Contact/TopScreen/Notifications.vue b/app/components/Contact/TopScreen/Notifications.vue new file mode 100644 index 0000000..5ba8df1 --- /dev/null +++ b/app/components/Contact/TopScreen/Notifications.vue @@ -0,0 +1,83 @@ + + + diff --git a/app/components/Contact/TopScreen/Title.vue b/app/components/Contact/TopScreen/Title.vue deleted file mode 100644 index 92270d3..0000000 --- a/app/components/Contact/TopScreen/Title.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/app/components/Contact/TopScreen/TopScreen.vue b/app/components/Contact/TopScreen/TopScreen.vue index 2dae452..9d03d30 100644 --- a/app/components/Contact/TopScreen/TopScreen.vue +++ b/app/components/Contact/TopScreen/TopScreen.vue @@ -1,7 +1,7 @@