chore: front page glow

This commit is contained in:
Kisuyo
2024-09-07 14:01:32 +02:00
parent aae2e28353
commit 53f64da9c1
3 changed files with 40 additions and 8 deletions

BIN
bun.lockb

Binary file not shown.

View File

@@ -0,0 +1,26 @@
import { cn } from "@/lib/utils"
import { motion } from "framer-motion"
export default function TextBlurTransition(props: { children: string; className?: string }) {
const words = props.children.split(" ")
return (
<motion.div className={cn("flex w-full flex-wrap justify-center gap-3 transition-all", props.className)}>
{words.map((word, index) => {
return (
<motion.div
key={index}
initial={{ filter: "blur(8px)", translateY: "18px", opacity: 0 }}
animate={{ filter: "blur(0px)", translateY: "0px", opacity: 1 }}
transition={{
duration: index * 0.4 + 0.7,
easings: "cubic-bezier(.77, 0, .175, 1)"
}}
>
{word}
</motion.div>
)
})}
</motion.div>
)
}

View File

@@ -6,6 +6,7 @@ import { motion } from "framer-motion"
import { Autocomplete } from "./Autocomplete"
import { useRouter } from "next/navigation"
import { useAccount } from "@/lib/providers/jazz-provider"
import TextBlurTransition from "@/components/custom/text-blur-transition"
let graph_data_promise = import("./graph-data.json").then(a => a.default)
@@ -33,7 +34,7 @@ export function PublicHomeRoute() {
return (
<>
<div className="relative h-full w-screen">
<div className="relative h-full w-screen overflow-hidden">
<ForceGraphClient
raw_nodes={raw_graph_data}
onNodeClick={val => handleTopicSelect(val)}
@@ -47,14 +48,19 @@ export function PublicHomeRoute() {
transition={{ duration: 0.5 }}
style={{ x: "-50%", y: "-50%" }}
>
<motion.h1
className="mb-2 text-center text-3xl font-bold uppercase sm:mb-4 md:text-5xl"
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.2 }}
>
<div
className="absolute left-1/2 top-1/2 h-[350px] w-[500px] -translate-x-1/2 -translate-y-1/2 transform md:h-[450px] md:w-[700px]"
style={{
background:
"radial-gradient(ellipse 80% 60% at 50% 50%, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0) 70%)",
backgroundSize: "100% 100%",
backgroundPosition: "center",
backgroundRepeat: "no-repeat"
}}
></div>
<TextBlurTransition className="mb-1 text-center text-3xl font-bold uppercase sm:mb-4 md:text-5xl">
I want to learn
</motion.h1>
</TextBlurTransition>
<Autocomplete
topics={raw_graph_data}
onSelect={topic => handleTopicSelect(topic.name)}