const mm = gsap.matchMedia();
mm.add("(min-width: 1024px)", () => {
slots.forEach((slot, i) => {
ScrollTrigger.create({
trigger: slot,
start: top + i * REVEAL,
pin: card,
pinSpacing: false,
});
});
});
export const revalidate = 3600;
async function getProjects() {
const { data, error } = await supabase
.from("projects")
.select("*")
.order("year", { ascending: false });
if (error) return localProjects;
return data;
}
const mm = gsap.matchMedia();
mm.add("(min-width: 1024px)", () => {
slots.forEach((slot, i) => {
ScrollTrigger.create({
trigger: slot,
start: top + i * REVEAL,
pin: card,
pinSpacing: false,
});
});
});
export const revalidate = 3600;
async function getProjects() {
const { data, error } = await supabase
.from("projects")
.select("*")
.order("year", { ascending: false });
if (error) return localProjects;
return data;
}
const mm = gsap.matchMedia();
mm.add("(min-width: 1024px)", () => {
slots.forEach((slot, i) => {
ScrollTrigger.create({
trigger: slot,
start: top + i * REVEAL,
pin: card,
pinSpacing: false,
});
});
});
export const revalidate = 3600;
async function getProjects() {
const { data, error } = await supabase
.from("projects")
.select("*")
.order("year", { ascending: false });
if (error) return localProjects;
return data;
}
const mm = gsap.matchMedia();
mm.add("(min-width: 1024px)", () => {
slots.forEach((slot, i) => {
ScrollTrigger.create({
trigger: slot,
start: top + i * REVEAL,
pin: card,
pinSpacing: false,
});
});
});
export const revalidate = 3600;
async function getProjects() {
const { data, error } = await supabase
.from("projects")
.select("*")
.order("year", { ascending: false });
if (error) return localProjects;
return data;
}
export function HeroSection() {
return (
<section className="relative h-svh">
<h1 className="hero-heading">
Hi, i'm linh
</h1>
</section>
);
}
const loadGsap = once(async () => {
const [gsap, ScrollTrigger] = await Promise.all([
import("gsap"),
import("gsap/ScrollTrigger"),
]);
gsap.registerPlugin(ScrollTrigger);
return { gsap, ScrollTrigger };
});
export function HeroSection() {
return (
<section className="relative h-svh">
<h1 className="hero-heading">
Hi, i'm linh
</h1>
</section>
);
}
const loadGsap = once(async () => {
const [gsap, ScrollTrigger] = await Promise.all([
import("gsap"),
import("gsap/ScrollTrigger"),
]);
gsap.registerPlugin(ScrollTrigger);
return { gsap, ScrollTrigger };
});
export function HeroSection() {
return (
<section className="relative h-svh">
<h1 className="hero-heading">
Hi, i'm linh
</h1>
</section>
);
}
const loadGsap = once(async () => {
const [gsap, ScrollTrigger] = await Promise.all([
import("gsap"),
import("gsap/ScrollTrigger"),
]);
gsap.registerPlugin(ScrollTrigger);
return { gsap, ScrollTrigger };
});
export function HeroSection() {
return (
<section className="relative h-svh">
<h1 className="hero-heading">
Hi, i'm linh
</h1>
</section>
);
}
const loadGsap = once(async () => {
const [gsap, ScrollTrigger] = await Promise.all([
import("gsap"),
import("gsap/ScrollTrigger"),
]);
gsap.registerPlugin(ScrollTrigger);
return { gsap, ScrollTrigger };
});