"use client"; import { useCallback, useEffect, useRef, useState, type ReactNode } from "react"; import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; export function ScrollableNav({ ariaLabel, children, className, }: { ariaLabel: string; children: ReactNode; className?: string; }) { const navRef = useRef(null); const [canScrollLeft, setCanScrollLeft] = useState(false); const [canScrollRight, setCanScrollRight] = useState(false); const updateScrollState = useCallback(() => { const nav = navRef.current; if (!nav) return; setCanScrollLeft(nav.scrollLeft > 0); setCanScrollRight(nav.scrollLeft + nav.clientWidth < nav.scrollWidth - 1); }, []); useEffect(() => { const nav = navRef.current; if (!nav) return; updateScrollState(); nav.addEventListener("scroll", updateScrollState, { passive: true }); window.addEventListener("resize", updateScrollState); return () => { nav.removeEventListener("scroll", updateScrollState); window.removeEventListener("resize", updateScrollState); }; }, [updateScrollState]); const scroll = (direction: -1 | 1) => { navRef.current?.scrollBy({ left: direction * navRef.current.clientWidth * 0.75, behavior: "smooth" }); }; return (
); }