'use client'; import { useState, useEffect, useMemo } from 'react'; import { useInventoryStore } from '@/store/useInventoryStore'; import shared from '../../styles/shared.module.css'; import styles from '../../styles/Characters.module.css'; import { fetchPerks } from '../../lib/db'; import { getPerkIconUrl, Perk } from './types'; export default function PerksPage() { const store = useInventoryStore(); const [perks, setPerks] = useState([]); const [search, setSearch] = useState(''); const [roleFilter, setRoleFilter] = useState<'all' | 'killer' | 'survivor'>( 'all' ); useEffect(() => { fetchPerks().then(setPerks); }, []); const filtered = useMemo(() => { return perks.filter((p) => { if (roleFilter === 'killer' && p.role !== 1) return false; if (roleFilter === 'survivor' && p.role !== 2) return false; if (search.trim() && !p.name.toLowerCase().includes(search.toLowerCase())) return false; return true; }); }, [perks, search, roleFilter]); const handleClearAll = () => store.clearCategory('perks'); const handleUnlockVisible = () => store.unlockAllInCategory( 'perks', Array.from( new Set([...store.unlockedPerks, ...filtered.map((p) => p.id)]) ) ); const handleLockVisible = () => store.unlockAllInCategory( 'perks', store.unlockedPerks.filter((id) => !filtered.find((p) => p.id === id)) ); const activeCount = store.unlockedPerks.length; return (

Perks

{activeCount} active out of {perks.length} total

setSearch(e.target.value)} />
{filtered.length} shown
{filtered.map((perk) => { const unlocked = store.unlockedPerks.includes(perk.id); const killer = perk.role === 1; return (
store.toggleItem(perk.id, 'perks')} > {perk.name} {perk.name} {killer ? 'Killer' : 'Survivor'}
); })}
); }