"use client"; import { useMemo, useState } from "react"; import { StyleData } from "@/lib/types"; import { Filters, DEFAULT_FILTERS, filterStyles, getUniqueValues, } from "@/lib/filterStyles"; import { StyleCard } from "./StyleCard"; import { StyleDetailModal } from "./StyleDetailModal"; import { SearchInput } from "./SearchInput"; import { FilterBar } from "./FilterBar"; import { DarkModeToggle } from "./DarkModeToggle"; interface GalleryGridProps { styles: StyleData[]; } export function GalleryGrid({ styles }: GalleryGridProps) { const [filters, setFilters] = useState(DEFAULT_FILTERS); const [selectedStyle, setSelectedStyle] = useState(null); const types = useMemo(() => getUniqueValues(styles, "type"), [styles]); const complexities = useMemo( () => getUniqueValues(styles, "complexity"), [styles] ); const eras = useMemo(() => getUniqueValues(styles, "eraOrigin"), [styles]); const filtered = useMemo( () => filterStyles(styles, filters), [styles, filters] ); return (
{/* Header */}

Style Gallery

Browse {styles.length} UI styles from Antigravity Kit

{/* Search */}
setFilters((f) => ({ ...f, search }))} />
{/* Filters */}
{/* Grid */} {filtered.length > 0 ? (
{filtered.map((style) => ( ))}
) : (

No styles match your filters.

)} {/* Style Detail Modal */} {selectedStyle && ( setSelectedStyle(null)} /> )}
); }