aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/components/pages/home-shared/FadeIn.tsx
diff options
context:
space:
mode:
authorHsiangNianian <admin@jyunko.cn>2023-04-22 19:52:26 +0800
committerHsiangNianian <admin@jyunko.cn>2023-04-22 19:52:26 +0800
commit4838df315931bb883f704ec3e1abe2685f296cdf (patch)
tree57a8550c4cd5338f1126364bb518c6cde8d96e7d /docs/components/pages/home-shared/FadeIn.tsx
parentdb74ade0234a40c2120ad5f2a41bee50ce13de02 (diff)
downloadHydroRoll-4838df315931bb883f704ec3e1abe2685f296cdf.tar.gz
HydroRoll-4838df315931bb883f704ec3e1abe2685f296cdf.zip
😀
Diffstat (limited to 'docs/components/pages/home-shared/FadeIn.tsx')
-rw-r--r--docs/components/pages/home-shared/FadeIn.tsx50
1 files changed, 50 insertions, 0 deletions
diff --git a/docs/components/pages/home-shared/FadeIn.tsx b/docs/components/pages/home-shared/FadeIn.tsx
new file mode 100644
index 0000000..826a078
--- /dev/null
+++ b/docs/components/pages/home-shared/FadeIn.tsx
@@ -0,0 +1,50 @@
+import { motion, useInView } from "framer-motion";
+import { useRef } from "react";
+
+export function FadeIn({
+ children,
+ className,
+ noVertical,
+ delay,
+ viewTriggerOffset,
+}: {
+ children: React.ReactNode;
+ className?: string;
+ noVertical?: boolean;
+ delay?: number;
+ viewTriggerOffset?: boolean;
+}) {
+ const ref = useRef(null);
+ const inView = useInView(ref, {
+ once: true,
+ margin: viewTriggerOffset ? "-128px" : "0px",
+ });
+
+ const fadeUpVariants = {
+ initial: {
+ opacity: 0,
+ y: noVertical ? 0 : 24,
+ },
+ animate: {
+ opacity: 1,
+ y: 0,
+ },
+ };
+
+ return (
+ <motion.div
+ ref={ref}
+ animate={inView ? "animate" : "initial"}
+ variants={fadeUpVariants}
+ className={className}
+ initial={false}
+ transition={{
+ duration: 1,
+ delay: delay || 0,
+ ease: [0.21, 0.47, 0.32, 0.98],
+ }}
+ >
+ {children}
+ </motion.div>
+ );
+}