// NotesSearchFilter Component // Advanced multi-criteria filtering for notes function NotesSearchFilter({ metadata, activeFilters, onFilterChange }) { const [localFilters, setLocalFilters] = useState(activeFilters || { subject: null, group: null, timeline: null }); const timelineOptions = [ { value: 'today', label: '📅 Today', emoji: '📅' }, { value: 'yesterday', label: '📆 Yesterday', emoji: '📆' }, { value: 'this_week', label: '📊 This Week', emoji: '📊' }, { value: 'this_month', label: '📈 This Month', emoji: '📈' }, { value: 'older', label: '📚 Older', emoji: '📚' } ]; const updateFilter = (key, value) => { const newFilters = { ...localFilters, [key]: value }; setLocalFilters(newFilters); if (onFilterChange) { onFilterChange(newFilters); } }; const clearFilters = () => { const emptyFilters = { subject: null, group: null, timeline: null }; setLocalFilters(emptyFilters); if (onFilterChange) { onFilterChange(emptyFilters); } }; const getActiveFilterCount = () => { return Object.values(localFilters).filter(Boolean).length; }; const removeFilter = (key) => { updateFilter(key, null); }; return (
{/* Header */}

{/* 🔍 */} {getActiveFilterCount() > 0 && ( {getActiveFilterCount()} )}

{getActiveFilterCount() > 0 && ( )}
{/* Subject and Group Dropdowns */}
{/* Subject Filter */}
{/* Group Filter */}
{/* Timeline Pills */}
{timelineOptions.map(option => ( ))}
{/* Active Filters Display */} {getActiveFilterCount() > 0 && (
Active Filters
{localFilters.subject && ( 📚 {localFilters.subject} )} {localFilters.group && ( 📁 {localFilters.group} )} {localFilters.timeline && ( ⏰ {timelineOptions.find(t => t.value === localFilters.timeline)?.label.replace(/^.+ /, '')} )}
)}
); } // Export to global scope window.NotesSearchFilter = NotesSearchFilter;