import React from "react" import Link from "next/link" import { usePathname } from "next/navigation" import { useAccount } from "@/lib/providers/jazz-provider" import { cn } from "@/lib/utils" import { PersonalLinkLists } from "@/lib/schema/personal-link" import { useQueryState, parseAsStringLiteral } from "nuqs" import { LEARNING_STATES } from "@/lib/constants" const ALL_STATES = [{ label: "All", value: "all", icon: "List", className: "text-foreground" }, ...LEARNING_STATES] const ALL_STATES_STRING = ALL_STATES.map(ls => ls.value) interface LinkSectionProps { pathname: string } export const LinkSection: React.FC = ({ pathname }) => { const { me } = useAccount({ root: { personalLinks: [] } }) if (!me) return null const linkCount = me.root.personalLinks?.length || 0 const isActive = pathname === "/links" return (
) } interface LinkSectionHeaderProps { linkCount: number isActive: boolean } const LinkSectionHeader: React.FC = ({ linkCount }) => { const pathname = usePathname() const [state] = useQueryState("state", parseAsStringLiteral(ALL_STATES_STRING)) const isLinksActive = pathname.startsWith("/links") && (!state || state === "all") return (

Links {linkCount > 0 && {linkCount}}

) } interface ListProps { personalLinks: PersonalLinkLists } const List: React.FC = ({ personalLinks }) => { const pathname = usePathname() const [state] = useQueryState("state", parseAsStringLiteral(LEARNING_STATES.map(ls => ls.value))) const linkCounts = { wantToLearn: personalLinks.filter(link => link?.learningState === "wantToLearn").length, learning: personalLinks.filter(link => link?.learningState === "learning").length, learned: personalLinks.filter(link => link?.learningState === "learned").length } const isActive = (checkState: string) => pathname === "/links" && state === checkState return (
) } interface ListItemProps { label: string href: string count: number isActive: boolean } const ListItem: React.FC = ({ label, href, count, isActive }) => (

{label}

{count > 0 && ( {count} )}
)