"use client"; import { Badge } from "@/ui/badge"; import { ChevronDown, Eye } from "lucide-react"; import { memo, useEffect, useRef, useState } from "react"; import type { SpacesDropdownProps } from "@/types"; import * as styles from "./spaces-dropdown.css"; export const SpacesDropdown = memo( ({ selectedSpace, availableSpaces, spaceMemoryCounts, onSpaceChange }) => { const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setIsOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const totalMemories = Object.values(spaceMemoryCounts).reduce( (sum, count) => sum + count, 0, ); return (
{isOpen && (
{availableSpaces.map((space) => ( ))}
)}
); }, ); SpacesDropdown.displayName = "SpacesDropdown";