import { useState } from 'react'
import { Filter } from '../../../lib/icons'
import { useHasTmdbKey } from '../../../hooks/use-external'
import { CANON_LISTS } from '../../../lib/canon-lists'
import { STUDIOS, NETWORKS } from '../../../lib/studios-and-networks'
import BrandRow from '../../../components/ui/BrandRow'
import CanonListRow from '../../../components/ui/CanonListRow'
import LetterboxdListRow from '../../../components/ui/LetterboxdListRow'
import LetterboxdAddModal from '../../../components/ui/LetterboxdAddModal'
import { useLetterboxdLists } from '../../../stores/letterboxd-lists-store'
/**
* "From the studios" - one row per major film studio.
*/
export function StudioRows() {
const hasTmdb = useHasTmdbKey()
if (!hasTmdb) return null
return (
)
}
/**
* "On the networks" - one row per major TV network.
*/
export function NetworkRows() {
const hasTmdb = useHasTmdbKey()
if (!hasTmdb) return null
return (
)
}
function BrandSectionHeader({ eyebrow, title, subtitle }: { eyebrow: string; title: string; subtitle: string }) {
return (
{eyebrow}
{title}
{subtitle}
)
}
/**
* Discover canon - renders bundled canon lists (AFI, Sight & Sound, IMDb top).
*/
export function DiscoverCanonSection() {
const hasTmdb = useHasTmdbKey()
if (!hasTmdb) return null
return (
{CANON_LISTS.map(list => (
))}
)
}
/**
* Letterboxd lists. Each saved list URL renders as its own row lazy-mounted
* on scroll. The trailing affordance opens a modal to paste a new URL.
*/
export function LetterboxdListsSection() {
const hasTmdb = useHasTmdbKey()
const lists = useLetterboxdLists(s => s.lists)
const [addOpen, setAddOpen] = useState(false)
if (!hasTmdb) return null
return (
<>
{lists.map(saved => (
))}
setAddOpen(false)} />
>
)
}