Skip to content

Commit 2bdd5cc

Browse files
committed
added animation in button
1 parent 55f940d commit 2bdd5cc

5 files changed

Lines changed: 38 additions & 9 deletions

File tree

src/components/modal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default function Modal() {
55
const {theme, setTheme} = useTheme()
66

77
return (
8-
<div className="fixed top-0 left-0 w-screen h-screen bg-white/10 backdrop-blur-sm z-40 transition-opacity ease-in-out">
8+
<div className="fixed top-0 left-0 w-screen h-screen bg-white/10 dark:bg-black/10 backdrop-blur-sm z-40 transition-opacity ease-in-out">
99
<div>
1010
<button
1111
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}

src/components/navbar.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import Link from "next/link";
22
import { useRouter } from "next/router";
3-
import { SquaresFour, X } from "phosphor-react";
3+
import { CircleDashed, CirclesFour, CirclesThreePlus, Plus, X } from "phosphor-react";
44
import { useState } from "react";
55
import Modal from "./modal";
66
import ToggleThemeBtn from "./toggle-theme";
77

88
export default function NavBar() {
99
const router = useRouter();
1010
const [isOpenedModal, setIsOpenedModal] = useState(false);
11+
const [effect, setEffect] = useState(false);
1112

1213
function changeCurrentStateModal() {
1314
setIsOpenedModal(!isOpenedModal);
@@ -40,10 +41,16 @@ export default function NavBar() {
4041
<hr className="hidden sm:block w-0.5 h-5 bg-separator/80 dark:bg-white/25 mx-5 md:mx-7 shadow-md rounded-full" />
4142

4243
<button
43-
onClick={() => changeCurrentStateModal()}
44-
className="relative z-50 text-2xl hover:text-violet-900/80 dark:hover:text-violet-300/70 transition duration-75 ease-in-out mr-3"
44+
className={`relative z-50 text-2xl hover:text-violet-900/80 dark:hover:text-violet-300/70 transition ${effect ? "md:animate-effect" : "md:animate-close"} duration-75 ease-in-out mr-3`}
45+
onClick={() => {
46+
setEffect(true);
47+
changeCurrentStateModal();
48+
}}
49+
onAnimationEnd={() => setEffect(false)}
4550
>
46-
{isOpenedModal ? <X size={32} /> : <SquaresFour />}
51+
{
52+
effect ? <CirclesFour size={25} /> : (isOpenedModal ? <X size={25} /> : <CirclesThreePlus size={25} />)
53+
}
4754
</button>
4855

4956
<ToggleThemeBtn />

src/components/toggle-theme.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import { useEffect, useState } from "react";
55
export default function ToggleThemeBtn() {
66
const [mounted, setMounted] = useState(false);
77
const { theme, setTheme } = useTheme();
8-
8+
const [effect, setEffect] = useState(false);
99

1010
useEffect(() => {
1111
setMounted(true)
12+
setEffect(true);
1213
}, [])
1314

1415
if(!mounted) return null;
@@ -19,8 +20,11 @@ export default function ToggleThemeBtn() {
1920

2021
return (
2122
<button
22-
className="text-2xl hover:text-violet-900/80 dark:hover:text-violet-300/70"
23-
onClick={() => setTheme(isDark() ? "light" : "dark")}
23+
className={`text-2xl hover:text-violet-900/80 dark:hover:text-violet-300/70 ${effect && 'animate-effect-2'}`}
24+
onClick={() => {
25+
setTheme(isDark() ? "light" : "dark")
26+
}}
27+
onAnimationEnd={() => setEffect(false)}
2428
>
2529
{isDark() ? <MoonStars size={25} /> : <SunDim size={26} />}
2630
</button>

src/pages/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default function Home() {
2323
developer
2424
</Link>
2525
</strong>!</p>
26-
<button className="max-w-max h-8 px-2 text-xl font-regular rounded-lg text-black bg-black/25 md:ml-5 shadow-lg shadow-violet-700/25 bakcdrop-blur transition ring-1 ring-violet-700/50">
26+
<button className="max-w-max h-8 px-2 text-xl font-regular rounded-lg text-black dark:text-white bg-black/25 dark:bg-white/25 md:ml-5 dark:border-1 shadow-md dark:shadow-none shadow-violet-700/25 dark:shadow-violet-300/25 bakcdrop-blur transition ring-2 ring-violet-700/30 dark:ring-violet-300/10">
2727
<Link href="/about">
2828
more...
2929
</Link>

tailwind.config.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@ module.exports = {
88
],
99
theme: {
1010
extend: {
11+
keyframes: {
12+
effect: {
13+
"0%, 100%": { transform: "rotate(50deg)" },
14+
"25%": { transform: "rotate(-50deg) scale(0.5)"},
15+
"50%": { transform: "translate(-30%, -20%)"},
16+
"80%": {transform: "translate(-40%, 10%) rotate(0deg)"},
17+
"100%": {transform: "rotate(0deg)"},
18+
},
19+
'effect-2': {
20+
"0%, 100%": { transform: "translate(100%) rotate(20deg)" },
21+
"50%": { transform: "translate(50%) rotate(-20deg)" },
22+
"100%": { transform: "translate(0) rotate(0deg)" },
23+
}
24+
},
25+
animation: {
26+
effect: "effect 1s ease-in-out",
27+
'effect-2': "effect-2 1s ease-in"
28+
},
1129
colors: {
1230
primary: '#1E1E1E',
1331
separator: '#3F3F3F',

0 commit comments

Comments
 (0)