import React, { useState, useMemo } from 'react' import { Search, SlidersHorizontal, X } from 'lucide-react' import { useStoryStore } from '../../store/storyStore' import { useAuthStore } from '../../store/authStore' import { StoryGrid } from '../../components/story/StoryGrid' import { GenreBadge } from '../../components/ui/Badge' const sortOptions = [ { value: 'popular', label: 'Most Popular' }, { value: 'recent', label: 'Most Recent' }, { value: 'views', label: 'Most Viewed' }, ] const allGenres = ['Fantasy', 'Sci-Fi', 'Romance', 'Historical Fiction', 'Adventure', 'Thriller', 'Mystery', 'Horror', 'Contemporary', 'Poetry'] export const BrowsePage: React.FC = () => { const { stories } = useStoryStore() const { currentUser, showMatureContent, setShowMatureContent } = useAuthStore() const [search, setSearch] = useState('') const [selectedGenres, setSelectedGenres] = useState([]) const [sort, setSort] = useState('popular') const [showFilters, setShowFilters] = useState(false) const filtered = useMemo(() => { let list = stories.filter(s => s.status === 'published') if (!showMatureContent) { list = list.filter(s => !s.mature_content) } if (search.trim()) { const q = search.toLowerCase() list = list.filter(s => s.title.toLowerCase().includes(q) || s.short_description.toLowerCase().includes(q) || s.author_username.toLowerCase().includes(q) ) } if (selectedGenres.length > 0) { list = list.filter(s => selectedGenres.some(g => s.genres.includes(g))) } switch (sort) { case 'popular': return [...list].sort((a, b) => b.total_likes - a.total_likes) case 'recent': return [...list].sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime()) case 'views': return [...list].sort((a, b) => b.total_views - a.total_views) default: return list } }, [stories, search, selectedGenres, sort, showMatureContent, currentUser]) const toggleGenre = (g: string) => setSelectedGenres(prev => prev.includes(g) ? prev.filter(x => x !== g) : [...prev, g]) return (
{/* Header */}

Browse Stories

Discover your next favorite read

{/* Search + controls */}
setSearch(e.target.value)} placeholder="Search titles, authors, descriptions..." className="w-full pl-10 pr-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500" /> {search && ( )}
{/* Filters panel */} {showFilters && (

Filter by Genre

{selectedGenres.length > 0 && ( )}
{allGenres.map(g => ( ))}
{currentUser && (
)} {/* Result count */}

{filtered.length} stories found

{selectedGenres.length > 0 && (
Active filters: {selectedGenres.map(g => ( ))}
)}
) }