// discover.jsx — Discover page (Vidu-style, uses shared components) const _discoverAPI = { banners: (position = 'discover') => fetch('/api/v1/banners?position=' + position).then(r => r.json()), templates: (mediaType = '', category = '', q = '', page = 1, pageSize = 20) => { let url = '/api/v1/templates?page=' + page + '&page_size=' + pageSize; if (mediaType) url += '&media_type=' + mediaType; if (category) url += '&category=' + category; if (q) url += '&q=' + encodeURIComponent(q); return fetch(url).then(r => r.json()); }, }; // ─── Banner carousel ────────────────────────────────────────────────────────── const BannerCarousel = ({ banners }) => { const { isMobile } = useBreakpoint(); if (isMobile || !banners || banners.length === 0) return null; return (