diff --git a/app/components/scroll-to-top.tsx b/app/components/scroll-to-top.tsx
new file mode 100644
index 0000000..15af7fc
--- /dev/null
+++ b/app/components/scroll-to-top.tsx
@@ -0,0 +1,47 @@
+"use client";
+
+import {useEffect} from "react";
+import {useAnimationControls, useScroll, motion, Variants} from "framer-motion";
+import {FaArrowAltCircleUp, FaArrowCircleUp, FaArrowUp} from "react-icons/fa"
+
+const isBrowser = () => typeof window != 'undefined';
+
+const ScrollToTopContainerVariants: Variants = {
+ hide: {opacity: 0, y: 100},
+ show: {opacity: 1, y: 0},
+}
+
+const scrollToTop = () => {
+ if (!isBrowser()) {
+ return;
+ }
+ window.scrollTo({top: 0, behavior: 'smooth'});
+};
+
+const ScrollToTopButton = () => {
+ const {scrollY} = useScroll();
+ const controls = useAnimationControls();
+
+ useEffect(() => {
+ return scrollY.on('change', (latestValue) => {
+ if (latestValue > window.innerHeight) {
+ controls.start('show');
+ } else {
+ controls.start('hide');
+ }
+ });
+ });
+
+ return (
+