// app/(tabs)/library/_layout.tsx import { View } from 'react-native'; import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs'; import { Text } from '@/components/ui/text'; import { ThemeToggle } from '@/components/ThemeToggle'; import { SearchPopover } from '@/components/library/SearchPopover'; import { FilterPopover } from '@/components/library/FilterPopover'; import { FilterSheet, type FilterOptions, type SourceType } from '@/components/library/FilterSheet'; import ExercisesScreen from './exercises'; import TemplatesScreen from './templates'; import ProgramsScreen from './programs'; import Header from '@/components/Header'; import { useState } from 'react'; import { useTheme } from '@react-navigation/native'; import type { CustomTheme } from '@/lib/theme'; import { TabScreen } from '@/components/layout/TabScreen'; const Tab = createMaterialTopTabNavigator(); // Default available filters const availableFilters = { equipment: ['Barbell', 'Dumbbell', 'Bodyweight', 'Machine', 'Cables', 'Other'], tags: ['Strength', 'Cardio', 'Mobility', 'Recovery'], source: ['local', 'powr', 'nostr'] as SourceType[] }; // Initial filter state const initialFilters: FilterOptions = { equipment: [], tags: [], source: [] }; export default function LibraryLayout() { const theme = useTheme() as CustomTheme; const [searchQuery, setSearchQuery] = useState(''); const [activeFilters, setActiveFilters] = useState(0); const [filterSheetOpen, setFilterSheetOpen] = useState(false); const [currentFilters, setCurrentFilters] = useState(initialFilters); const handleApplyFilters = (filters: FilterOptions) => { setCurrentFilters(filters); const totalFilters = Object.values(filters).reduce( (acc, curr) => acc + curr.length, 0 ); setActiveFilters(totalFilters); }; return (
setFilterSheetOpen(true)} /> } /> setFilterSheetOpen(false)} options={currentFilters} onApplyFilters={handleApplyFilters} availableFilters={availableFilters} /> ); }