Files
PodTui/tasks/podcast-tui-app/30-source-management.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

2.0 KiB

29. Build Feed List Component (Public/Private Feeds)

meta: id: podcast-tui-app-29 feature: podcast-tui-app priority: P0 depends_on: [28] tags: [feed-list, components, solidjs, opentui]

objective:

  • Create a scrollable feed list component
  • Display public and private feeds
  • Implement feed selection and display
  • Add reverse chronological ordering

deliverables:

  • src/components/FeedList.tsx with feed list component
  • src/components/FeedItem.tsx with individual feed item
  • src/components/FeedFilter.tsx with public/private toggle

steps:

  • Create src/components/FeedList.tsx:
    • Use <scrollbox> for scrollable list
    • Accept feeds array as prop
    • Implement feed rendering with createSignal for selection
    • Add keyboard navigation (arrow keys, enter)
    • Display feed title, description, episode count
  • Create src/components/FeedItem.tsx:
    • Display feed information
    • Show public/private indicator
    • Highlight selected feed
    • Add hover effects
  • Create src/components/FeedFilter.tsx:
    • Toggle button for public/private feeds
    • Filter logic implementation
    • Update parent FeedList when filtered
  • Add feed list to "My Feeds" navigation tab

tests:

  • Unit: Test FeedList renders with feeds
  • Unit: Test FeedItem displays correctly
  • Integration: Test public/private filtering
  • Integration: Test keyboard navigation in feed list

acceptance_criteria:

  • Feed list displays all feeds correctly
  • Public/private toggle filters feeds
  • Feed selection is visually indicated
  • Keyboard navigation works (arrow keys, enter)
  • List scrolls properly when many feeds

validation:

  • Run application and navigate to "My Feeds"
  • Add some feeds and verify they appear
  • Test public/private toggle
  • Use arrow keys to navigate feeds
  • Scroll list with many feeds

notes:

  • Use SolidJS createSignal for selection state
  • Follow OpenTUI component patterns from components/REFERENCE.md
  • Feed list should be scrollable with many items
  • Use Flexbox for layout