Loading items...
;
if (error) return
-
{tagName ? `Tag: ${tagName}` : 'Items'}
+
{title}
{items.length === 0 ? (
No items found.
) : (
)}
diff --git a/frontend/src/components/FeedList.css b/frontend/src/components/FeedList.css
index 485fab3..b8ca7e6 100644
--- a/frontend/src/components/FeedList.css
+++ b/frontend/src/components/FeedList.css
@@ -80,3 +80,27 @@
background: #dde2e6;
color: #000;
}
+
+.filter-section {
+ padding-bottom: 1rem;
+ border-bottom: 1px solid #eee;
+ margin-bottom: 1rem;
+}
+
+.filter-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ gap: 1rem;
+}
+
+.filter-list li a {
+ text-decoration: none;
+ color: #333;
+ font-weight: 500;
+}
+
+.filter-list li a:hover {
+ color: #007bff;
+}
diff --git a/frontend/src/components/FeedList.tsx b/frontend/src/components/FeedList.tsx
index f17fdc7..d1a4625 100644
--- a/frontend/src/components/FeedList.tsx
+++ b/frontend/src/components/FeedList.tsx
@@ -36,6 +36,13 @@ export default function FeedList() {
return (
+
+
+ Unread
+ All
+ Starred
+
+
Feeds
{feeds.length === 0 ? (
diff --git a/frontend/src/components/TagView.test.tsx b/frontend/src/components/TagView.test.tsx
index 8a724cd..6304fb2 100644
--- a/frontend/src/components/TagView.test.tsx
+++ b/frontend/src/components/TagView.test.tsx
@@ -76,6 +76,9 @@ describe('Tag View Integration', () => {
expect(screen.getByText('Tag Item 1')).toBeInTheDocument();
});
- expect(global.fetch).toHaveBeenCalledWith('/api/stream?tag=Tech');
+ const params = new URLSearchParams();
+ params.append('tag', 'Tech');
+ params.append('read_filter', 'unread');
+ expect(global.fetch).toHaveBeenCalledWith(`/api/stream?${params.toString()}`);
});
});
--
cgit v1.2.3