/** SettingsPanelContent — ADR-119 extracted from usePanelContent.tsx */
import React from 'react';
import { Loader2, Bot, Users, User, Settings, Save, Trash2, AlertCircle, Inbox } from 'lucide-react';
import { cn } from '@/shared/utils/cn';
import { ContextSettingsSection } from '../../components/ChatPanels/ContextSettingsSection';
import { TasksSourceInlineSelector } from '../../../TasksSourceInlineSelector';
import { FilesSourceInlineSelector } from '../../../FilesSourceInlineSelector';
import type { TasksSourceConfig } from '../../../AIChatPanel.types';
import type { PanelContentDeps } from './PanelContentTypes';
const DEFAULT_QUICK_EMOJIS = ['\uD83D\uDC4D', '\u2764\uFE0F', '\uD83D\uDE02', '\uD83D\uDD25', '\uD83D\uDCAF', '\uD83D\uDE4F', '\uD83D\uDE0D', '\uD83D\uDE2E'];
export function SettingsPanelContent(d: PanelContentDeps) {
return (
{(['ai', 'people', 'widget'] as const).map(tab => {
const icons = { ai: Bot, people: Users, widget: Settings };
const labels = { ai: 'AI', people: 'Люди', widget: 'Виджет' };
const colors = { ai: 'purple', people: 'blue', widget: 'primary' };
const Icon = icons[tab];
const colorVar = colors[tab] === 'primary' ? 'var(--color-primary-500)' : `rgb(var(--color-${colors[tab]}-500))`;
return (
);
})}
{d.settingsTab === 'ai' && (
{d.currentAgent?.icon || '\uD83E\uDD16'}
AI Агент
{d.currentAgent && (
<>
{d.isAdminOrOwner && (d.chatOperatorId !== (d.currentAgent.provider_id || d.currentAgent.operator_id) || d.chatModelId !== d.currentAgent.model || d.chatSystemPrompt !== d.currentAgent.system_prompt) && (
)}
>
)}
{d.currentAgent && (
)}
)}
{d.settingsTab === 'people' && (
{d.chatPartner?.type === 'user' ? (
d.chatPartner.avatarUrl ?

:
) : (
)}
{d.chatPartner?.name || 'Не выбран'}
{d.chatPartner?.email || 'Выберите контакт'}
)}
{d.settingsTab === 'widget' && (
Источник задач
{d.tasksSource ? (
<>
{d.tasksSource.tableIcon || '\uD83D\uDCCB'}{d.tasksSource.tableName}
{d.tasksTableColumns.length > 0 && (
Маппинг полей
{(['displayColumn', 'descriptionColumn', 'statusColumn', 'priorityColumn'] as const).map(field => {
const labels: Record
= { displayColumn: 'Название', descriptionColumn: 'Описание', statusColumn: 'Статус', priorityColumn: 'Приоритет' };
return (
);
})}
)}
>
) : (
d.updateTasksSource(config)} onCancel={() => {}} showHeader={false} />
)}
Источник файлов
{d.filesSource ? (
{d.filesSource.tableIcon || '\uD83D\uDCC1'}{d.filesSource.tableName}
) : (
d.updateFilesSource(config)} onCancel={() => {}} showHeader={false} />
)}
Агент по умолчанию
Быстрые реакции
{d.quickEmojis.map((emoji, index) => (
{ const m = e.target.value.match(/\p{Extended_Pictographic}/gu); const last = m ? m[m.length - 1] : emoji; const ne = [...d.quickEmojis]; ne[index] = last; d.setQuickEmojis(ne); }} disabled={!d.isAdminOrOwner}
className="w-10 h-10 text-center text-xl rounded-lg bg-[var(--bg-tertiary)] border border-[var(--border-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-primary-500)]/30 disabled:opacity-50" maxLength={4} />
{d.isAdminOrOwner && d.quickEmojis.length > 1 && (
)}
))}
{d.isAdminOrOwner && d.quickEmojis.length < 6 && (
)}
{d.isAdminOrOwner && (
)}
Голосовой ввод
{(['webSpeech', 'whisper'] as const).map(mode => (
))}
{d.voiceError && (
)}
)}
);
}