import React, { useRef, useEffect } from 'react'; import { Feed, FeedEntry } from '../../types'; import { Star, ChevronRight } from 'lucide-react'; interface StarredTabViewProps { entries: FeedEntry[]; feeds: Feed[]; onSelectFeedFilter: (feedId?: string) => void; onOpenAllStarred: () => void; savedScrollTop?: number; onScrollPosChange?: (pos: number) => void; } export const StarredTabView: React.FC = ({ entries, feeds, onSelectFeedFilter, onOpenAllStarred, savedScrollTop = 0, onScrollPosChange, }) => { const containerRef = useRef(null); // Restore scroll position on mount useEffect(() => { if (containerRef.current && savedScrollTop > 0) { containerRef.current.scrollTop = savedScrollTop; } }, []); const handleAllStarredClick = () => { if (containerRef.current && onScrollPosChange) { onScrollPosChange(containerRef.current.scrollTop); } onOpenAllStarred(); }; const handleFeedClick = (feedId: string) => { if (containerRef.current && onScrollPosChange) { onScrollPosChange(containerRef.current.scrollTop); } onSelectFeedFilter(feedId); }; const starredEntries = entries.filter((e) => e.is_starred); // Group starred count by feed const starredCountsByFeed: Record = {}; starredEntries.forEach((e) => { starredCountsByFeed[e.feed_id] = (starredCountsByFeed[e.feed_id] || 0) + 1; }); const feedsWithStarred = feeds.filter((f) => starredCountsByFeed[f.id] > 0); return (

Starred Items

{starredEntries.length} saved articles across {feedsWithStarred.length} sources
All Starred Articles
{starredEntries.length}
{feedsWithStarred.map((feed) => (
handleFeedClick(feed.id)} >
{feed.title}
{starredCountsByFeed[feed.id]}
))}
); };