From 08e8f5ba2eee47696fd3280429088d4f3207dde0 Mon Sep 17 00:00:00 2001 From: Joiakim Dasek Date: Mon, 24 Jun 2024 01:16:07 +0200 Subject: [PATCH] Added flip animation for flip card & boomerang animation on the closed console --- bun.lockb | Bin 157966 -> 159827 bytes package.json | 26 +-- src/components/Card/CardFan.tsx | 183 +++++++++---------- src/components/Console/Console.tsx | 2 +- src/components/Console/ConsoleBackground.tsx | 6 + 5 files changed, 106 insertions(+), 111 deletions(-) diff --git a/bun.lockb b/bun.lockb index 324d56f763759b184554f58de6ff791b3dcac8b1..b3c847fb29d7bad7c26fb13aa1bce5b6383d8843 100644 GIT binary patch delta 23788 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�Y3rPfD+&;t%}6_0#F5koV^Xy z1MUL%0CK(*cmzBE9s<7s6g29L0!d{G7{!HR@*LO=Q2jID1@JrY61WP`AmyWfc^9Jv zgBA{&YP62idfo*fgJ@SHB^^OK0PO+V?cM`u$ETg2&QM69HK-j>3#bg#1S$bl0V}`( zr~%jlbShv?`!qGAMv_|Y07Z0OKnJu(xk?2&wX*@L{Y6F{7yxQZZ3xl${K<7bPC*)}>fEG3*KnAn`LIBOUicV1^ zaE_I!b3q{p2n3n~0YGh_0pJf%RLCelfI{a3cmvIVra%**G0+HT2-FAM0Y^YH*coLq z!U>?LQlD;sHO=OFs?Y<}3#bd!0mukXfDWJo3FJLdI)=)cV)Bd(CZ&JZu~z>d$I$qb zkitv~s7wh&;rzQYC6-o4$56zmon{<`oecI><)n*viXgQkX#G&zOlm-(p$bw+LMoG- zI-`W4aJ2*|8q^WBAxb%-9Y;g>t}^9MMV(qd82>8rcvEGt@LbHCGvBY!mK@dW(477| zp6X0MXMobA9Z<2qDDaxC6^|!BXp}3o&6I;ciA=MQ8c+h$#L$wL61OWrc}U8r4Mn&c zKohBgvhskEjt>Bu7!)`UAd{kCcbq0m`FZKu;hV=mC&&>X4LBnJ6uo zf9;e!t|R9ex?k&w~WF$$Cv zwgrgSwv>u(%RNS0+B(L9!kA3?%wV*tfGnbp&oBkb?6 zng%eTz9B|mfAMH3^Xusw>>CtHU*nd4c&q&q6^(*W6RZTe3Un<~f0K%u5Z@5rK=}*! z@~@=h{uoowZG-1+i4+I4@C_BCmNAo6pl?8c*u9K7DW%KHn0IRlZ#1x^rPEKk@e^+J zIp@~JpIqmBKOe`+wg>3)AjKJ6)&!TZ7YU#AiZ8DzY`dJ<+KG=hGB>el1#_qzN~Q;h zE*qJv6%3sr?xDoE7GQ?0(`P^aNMimloKD0F>noAdeikgTuOYET zuX{yaK69!Abr&FUf<*f%u@yti11Ta8>Wk8R=9r11_UaGq_s4%W(q0at{X+TA8twHV z+HaWutkGUDqW#MG&l>F&B--zwsiux%jrNuj?WfY^2Z<5+%w1a4K-A4=F0NlUkTWZ* z|3;fwOTyH|S_rsrfUmz!8-=fq(AW`$DuIL(2#H`?kRJ7Cj1Ctx6%j0piUD z<{~z3WqRSg8RIuulz@on8_cn8fYCQpr@ft|#p(k&?U%G$4JH1*fyiIoV)1V}V!f~j zX=WLlLRSO0Pzm!adh`D4S}eRxa1fg5sK#e#qOQZ&FJf=;mfb|^7S@366@FWotN$@9 zbu^2be7)w$lTG;uOn4iZh{3&t8k$9ozMPWOwD9gyszFL$guCLGEzC~r-omN~sgSuz zY0X9LLKY|jx3Vuq)>g{U4a`B`VIcM4o^r=AZKQLc|OLfPqp20=mIfd!VmFcL1NoMP{WgRmUXAp5Og?k;q{hNg19ZS7xXe74R<(dio~I+3oTP0Y<@oZ7^F zUFOf<+}eUOvw^|B{urgJd1x|u1VFF~k$<8jU2m1>PfO`vZe79!mtu@i@O(%vX?t+dgV zX2y{}pn=ghCEKcoYuI}3Fc|yPNneVmN;gD>; zeB42?1P#=78YvR@cCxPQxoBAg9rHy}5p(s>-kj5?$B}MkyUhonqXp6oeY=K<6-BIz zRK2w*ErNr~gkcxUmO8f)vv#p8saG3OeK(8u&|Z;~)U@{Cujdc`Kw?O93O`jIk}B1lm;lfKvn!%WnI^z4`+QRw?G@5WJQVP-@}!uqRma_Y-OZC zJ;Wh3wYQ}7`eA$%Z;w!HxI(z@V_q1*T{kh_d(f!^%qW7_eSG8%e~3wyc9LiI7EA+ z&&H~klg8$3J)_!-5Y+3UEcLcd&-<0mx;jZc6x)$%irTr-tCZYDd~+NFB};>(N?k?D z&&<&ZNv4=0W*_hYOna1 zDcT-`CRL$ghoZ1nmJG}W&K)3OO{{C=H4hrAL@ci1vD+lP&JE zZbuxW)C17J_5z~IQ;J=jj+be9@RyM+Pr^mw!B0p$?R7>E;(odFbozuYY8at!huHOJ zvbt-pL8@W3^x8*(9$9L?$iLgd_88VcCF*KExu|(f$>i4J-N~)JY$<8ccV2VNMSGx? zRy@QBUqJZj7y_idmdUQm(LSwHo6PvrUzeW3;W!KQD1VVt&cWQG*mc*{76@T@PcaCo z?$NQQ{KPQp>vOSR@1MDGn%n|AQ;@EAPjR&b%cD9eLf$>P+UuiQbQ$mMyX=uKbOhsU z5$D~?1a;S5I5pPC``*N6Zgky1r;`ZKB;j`gGk6xPaKr+!_VL(HVspI;+@n5?$!>Y?Q{&X_6T};BE?%K<*&fFby@w(dw8`K8SeM97<0edBmfOu#x(b7Al zZ(F{&gO*L00u6h8aT1ZxUh5URe!yd|#OSlCkpUrpNjDLHk_EFl!s|3$=x9rWgh4q8 zHEe^ZdIr7b3U&c|%!ocBDW(y+IvNeI0c8aw}4f>7IxRf z=h~`vAXlG>WoRHNL+4l<@zq`>wmi2=i#pq9JyMlne6NcKXsei6P86e5p=z5pi)6R7 z6m@@hS}6X#Gg`ra7p?z6tumGWS0mn9z5k1`YCCn2Q@5D^K`3uc&XxRi6%UcuOLZl? zb`JZ~Tj5j}BXu*-=J@3Eayx8$PF5H%)ev=Kd-se|H7l0>SN|x>ls=tkpHeyyUtV~t zTg7P2G*$Tuk$nZn7Kp_l9`D{Vl*D!n#loY#*Uh6t_UPLer8;W5q2G5TBGO)-DB8ZR zP8*@W#5|RNRS2s4yVtX~$NT?jS3%`}St8Y4MziA2!6^{^FC#8;%xYD}RW2TZ&`F6? zD5llB7v*;>wTOUhygdAm#k0$7iD{*VXtTsMKJA4r@nU@mF2a&&7so@)*k}-l_|# zspZR8z;&FX{F$ZYnOJci(2XO^17yX2%@{g4{x1ooRR0eb0n`uO5pt9I4HwBb;Hz>? zq{lUedgUX<4Hw_tK)h0ii&C^;S;BA=j>wlgL2Qi}g=-ny9Gpo)<;sTb5tnY_LQuON zxh8CH;j-?}%PsBQh*es*$=<-`tdj>vK55cThxQ)FVUIRHiVjY13SV&Z4Ht4`?DBiKFgz~K+{2xNEh6kbW|a2+$J#+1 z%(urcsHY|-22{Sm8swq9(lNRAue;7&Y|v6-M!M~TEAZG<5%~a9OM4~cI?pQy&uwb| z^v@RaMcI8sT5X6i!Uef&IV;x&iQNy_Ft%1SeaIF|))`{|L$-)b6y`^NZRsk$dBlRX zTW}3lk5Ml23?p0bzuRNc4v9_1eWDgPQ;vPgU>&}+@Jv)LWsmLJV3O0Fzp0@iN7>lw zZ$zh37AX#vGJm(fRvmn%9J*sJiSrqrHg;&L zd59%GBhe>5O%&IX8agO#(#8z&i8H5;Nl5k?D*_y)n!?vnsv$-=OSWRJqtryyaguDr zAVS6~ZV-qJVBMe?tV&rQk_d)=jJ%7cS09?}PmLn+>a&1sev!3c9Cz0Nw#Z;WN| z*wnO)G(;l~@3O@c1##2^>dIWqI(jX>2ZiQekswa6BwrL=peZRc_>f&sBM22jtnLIMif(R1v3B)xwo&<@8!=yX^ E2L+>=Hvj+t delta 22902 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 diff --git a/package.json b/package.json index 545cd3b..88d373a 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,15 @@ "lint": "next lint" }, "dependencies": { - "@react-three/fiber": "^8.16.3", + "@react-three/fiber": "^8.16.8", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", - "framer-motion": "^11.1.8", - "framer-motion-3d": "^11.1.8", + "framer-motion": "^11.2.11", + "framer-motion-3d": "^11.2.11", "lucide-react": "^0.378.0", - "next": "14.2.3", - "react": "^18", - "react-dom": "^18", + "next": "^14.2.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-resizable-panels": "^2.0.19", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7", @@ -25,13 +25,13 @@ "use-sound": "^4.0.1" }, "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", + "@types/node": "^20.14.8", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "eslint": "^8.57.0", "eslint-config-next": "14.2.3", - "postcss": "^8", - "tailwindcss": "^3.4.1", - "typescript": "^5" + "postcss": "^8.4.38", + "tailwindcss": "^3.4.4", + "typescript": "^5.5.2" } } diff --git a/src/components/Card/CardFan.tsx b/src/components/Card/CardFan.tsx index dfb42e9..6ead882 100644 --- a/src/components/Card/CardFan.tsx +++ b/src/components/Card/CardFan.tsx @@ -12,129 +12,118 @@ interface CardFanProps { export const CardFan: FC = () => { const {isWindowReduced} = useContext(globalContext); const {cards} = useRotateCards([ - { - id: 0, - title: "2015", - description: "Description 1", - rotate: 0 - }, - { - id: 1, - title: "2016", - description: "Description 2", - rotate: 0 - }, - { - id: 2, - title: "2018", - description: "Description 3", - rotate: 0 - }, - { - id: 3, - title: "2020", - description: "Description 4", - rotate: 0 - }, - { - id: 4, - title: "2022", - description: "Description 5", - rotate: 0 - }, - { - id: 5, - title: "2024", - description: "Description 6", - rotate: 0 - } + {id: 0, title: "2015", description: "Description 1", rotate: 0}, + {id: 1, title: "2016", description: "Description 2", rotate: 0}, + {id: 2, title: "2018", description: "Description 3", rotate: 0}, + {id: 3, title: "2020", description: "Description 4", rotate: 0}, + {id: 4, title: "2022", description: "Description 5", rotate: 0}, + {id: 5, title: "2024", description: "Description 6", rotate: 0} ]); + + const [clickedCard, setClickedCard] = useState(null); + return ( - +
- { - cards.map(({id, title, description, rotate}) => ( - - )) - } + className={`${isWindowReduced ? 'flex' : 'hidden'} fixed top-1/4 left-1/2 transform -translate-y-1/4 -translate-x-1/2 z-[1]`}> + {cards.map(({id, title, description, rotate}) => ( + setClickedCard(id)} + /> + ))}
); }; interface CardProps { + id: number; title: string; description: string; rotate: number; + isClicked: boolean; + onClick: () => void; } -const Card: FC = ({title, description, rotate}) => { +const Card: FC = ({id, title, description, rotate, isClicked, onClick}) => { const {isWindowReduced} = useContext(globalContext); const [cardIsOverlapped, setCardIsOverlapped] = useState(false); + return ( { - setCardIsOverlapped(true); - }} - onMouseOut={() => { - setCardIsOverlapped(false); - }} - initial={{ - rotate: 0 - }} + onMouseOver={() => setCardIsOverlapped(true)} + onMouseOut={() => setCardIsOverlapped(false)} + onClick={onClick} + initial={{rotateY: 0}} animate={{ rotate: isWindowReduced ? rotate : 0, - y: cardIsOverlapped && -50 || 0 + rotateY: isClicked ? 180 : 0, + y: cardIsOverlapped ? -50 : 0 }} transition={{ - rotate: { - duration: isWindowReduced ? 1 : .33 - }, - y: { - duration: .33 - } - }} - exit={{ - rotate: isWindowReduced ? rotate : 0, - }} - style={{ - zIndex: cardIsOverlapped && 1 || 0 + rotate: {duration: isWindowReduced ? 1 : 0.33}, + rotateY: {duration: 0.5}, + y: {duration: 0.33} }} + exit={{rotate: isWindowReduced ? rotate : 0}} + style={{zIndex: cardIsOverlapped ? 1 : 0}} > -

- {title} -

-

- {description} -

- +

{title}

+

{description}

+
- ) - ; + ); }; + +const pathData = "M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"; + +interface AnimatedLineProps { +} + +export const AnimatedLine: FC = () => { + return ( + + + + ); +}; \ No newline at end of file diff --git a/src/components/Console/Console.tsx b/src/components/Console/Console.tsx index f7871ad..3412327 100644 --- a/src/components/Console/Console.tsx +++ b/src/components/Console/Console.tsx @@ -13,7 +13,7 @@ interface FadeInProps { export const Console: FC = ({children}) => { const {isWindowReduced, setIsWindowReduced, isConsoleClosed} = useContext(globalContext); - useCloseConsole(5000); + useCloseConsole(8000); return ( = ({children}) => { }} transition={{type: "spring", duration: 1, bounce: .5}} > + { + isConsoleClosed && ( + + ) + } {children}