'use client'; import { useState, useEffect } from 'react'; import { RefreshCw, Plus, Trash2, Loader2, Lightbulb, X } from 'lucide-react'; export default function TopicBank({ channelId }) { const [topics, setTopics] = useState([]); const [total, setTotal] = useState(0); const [loading, setLoading] = useState(true); const [refilling,setRefilling]= useState(false); const [newTopic, setNewTopic] = useState(''); const [adding, setAdding] = useState(false); const [showAdd, setShowAdd] = useState(false); async function load() { setLoading(true); try { const res = await fetch(`/api/topics-bank/${channelId}`).then(r => r.json()); setTopics(res.topics || []); setTotal(res.total_unused || 0); } catch {} setLoading(false); } useEffect(() => { load(); }, [channelId]); async function refill() { setRefilling(true); await fetch(`/api/topics-bank/${channelId}/refill`, { method: 'POST' }); await load(); setRefilling(false); } async function addManual() { if (!newTopic.trim()) return; setAdding(true); await fetch(`/api/topics-bank/${channelId}/add`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ topics: [newTopic.trim()] }), }); setNewTopic(''); setShowAdd(false); await load(); setAdding(false); } async function deleteTopic(id) { await fetch(`/api/topics-bank/item/${id}`, { method: 'DELETE' }); setTopics(t => t.filter(x => x.id !== id)); setTotal(n => Math.max(0, n - 1)); } const unusedTopics = topics.filter(t => !t.is_used); const stockColor = total >= 5 ? 'text-green-400' : total > 0 ? 'text-yellow-400' : 'text-red-400'; return (

Банк тем

{total === 0 ? 'Темы закончились — нужно пополнить' : `${total} тем в запасе`}

{/* Добавить вручную */} {showAdd && (
setNewTopic(e.target.value)} onKeyDown={e => e.key === 'Enter' && addManual()} placeholder="Введите тему поста..." className="input flex-1 text-sm py-1.5" autoFocus />
)} {loading &&
} {!loading && unusedTopics.length === 0 && (
Тем нет. Нажмите ↻ чтобы сгенерировать AI
)} {!loading && unusedTopics.length > 0 && ( )}

Темы используются при автоматической генерации постов. При запасе <5 — AI пополняет автоматически.

); }