"use client"; import { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from "@/components/ui/accordion"; import Link from "next/link"; import Image from "next/image"; import { X, EyeOff, Eye, Star } from "lucide-react"; import React, { useState, useEffect, useRef, useCallback, } from "react"; import { Category } from "@/lib/types"; import { Badge } from "../../../components/ui/badge"; import clsx from "clsx"; import { useRouter, useSearchParams } from "next/navigation"; const ScriptBrowser = ({ items, selectedScript, setSelectedScript, }: { items: Category[]; selectedScript: string | null; setSelectedScript: (script: string | null) => void; }) => { const [links, setLinks] = useState([]); const [expandedItems, setExpandedItems] = useState([]); const linkRefs = useRef<{ [key: string]: HTMLAnchorElement | null }>({}); const searchParams = useSearchParams(); useEffect(() => { if (items) { setLinks(items); } }, [items]); useEffect(() => { const id = searchParams.get("id"); if (id) { setSelectedScript(id); } else { setSelectedScript(null); } }, [searchParams]); const handleSelected = useCallback( (title: string) => { setSelectedScript(title); }, [setSelectedScript], ); useEffect(() => { if (selectedScript) { const category = links.find((category) => category.expand.items.some((script) => script.title === selectedScript), ); if (category) { setExpandedItems((prev) => Array.from(new Set([...prev, category.catagoryName])), ); handleSelected(selectedScript); } } }, [selectedScript, links, handleSelected]); const handleAccordionChange = (value: string[]) => { setExpandedItems(value); }; return (

Categories

{links.reduce( (acc, category) => acc + category.expand.items.length, 0, )}{" "} Total scripts

{links.map((category) => (
{category.catagoryName} {category.expand.items.length}
{" "}
{category.expand.items.map((script, index) => (

handleSelected(script.title)} ref={(el) => { linkRefs.current[script.title] = el; }} > {script.title} {script.title} {script.isMostViewed && ( )} {script.item_type}

))}
))}
); }; export default ScriptBrowser;