forked from admin/zeropost-tool
feat: P6 Inbox UI — InboxTab + API routes
ChannelView: вкладка 'Inbox' рядом с 'Аналитика' InboxTab.js: - Webhook setup кнопка (если не настроен) - Табы: Новые / Все / Отвечено / Игнорировано - Карточки сообщений с иконкой типа (question/praise/complaint/spam) - AI-предложенный ответ с кнопкой 'Использовать →' - Форма ответа прямо в карточке - Кнопки: Ответить / Игнорировать / Спам API routes: /api/inbox/[channelId], /reply, /status, /setup-webhook
This commit is contained in:
@@ -13,6 +13,7 @@ import ChannelAnalytics from './ChannelAnalytics';
|
||||
import FromUrlModal from './FromUrlModal';
|
||||
import PollModal from './PollModal';
|
||||
import HashtagSuggest from './HashtagSuggest';
|
||||
import InboxTab from './InboxTab';
|
||||
|
||||
const GOAL_LABELS = {
|
||||
educational: 'Обучение', news: 'Новости',
|
||||
@@ -356,7 +357,7 @@ export default function ChannelView({ channel }) {
|
||||
|
||||
{/* Вкладки */}
|
||||
<div className="flex items-center gap-0.5 rounded-lg p-0.5 bg-surface2 border border-border self-start mb-2">
|
||||
{[['generate','Создать пост'],['analytics','Аналитика']].map(([id,label]) => (
|
||||
{[['generate','Создать пост'],['analytics','Аналитика'],['inbox','Inbox']].map(([id,label]) => (
|
||||
<button key={id} onClick={() => setActiveTab(id)}
|
||||
className={`px-4 py-1.5 rounded-md text-sm font-medium transition-colors
|
||||
${activeTab===id ? 'bg-surface text-text shadow-sm' : 'text-text-soft hover:text-text'}`}>
|
||||
@@ -369,6 +370,10 @@ export default function ChannelView({ channel }) {
|
||||
<ChannelAnalytics channelId={channel.id} channelName={channel.tg_username} />
|
||||
)}
|
||||
|
||||
{activeTab === 'inbox' && (
|
||||
<InboxTab channel={channel} />
|
||||
)}
|
||||
|
||||
{activeTab === 'generate' && <>
|
||||
{/* Generator */}
|
||||
<div className="card p-5 mb-6">
|
||||
|
||||
Reference in New Issue
Block a user