// Chat sidebar + full-page chat for Regula
const ChatSidebar = ({ scope = "Gruppo", company = null, onExpand }) => {
const [messages, setMessages] = React.useState([
{
role: 'ai',
content: (
<>
Ciao Lorenzo. Ho analizzato i dati del gruppo per aprile 2026. Due segnali da monitorare:
Covenant DSCR di Aqua World in avvicinamento alla soglia contrattuale 1.20×⇱
Marginalità Club Lumière −3.6 p.p. vs budget stagionale Budget 2026⇱
Vuoi che generi un brief prioritizzato?
>
)
}
]);
const [input, setInput] = React.useState('');
const quickPrompts = [
{ icon: 'sparkle', text: "Riepilogo settimanale del gruppo" },
{ icon: 'clock', text: "Quali scadenze nei prossimi 30 giorni?" },
{ icon: 'chat', text: "Confronta EBITDA 2025 vs 2026 per società" },
{ icon: 'file', text: "Genera report trimestrale per il CdA" }
];
const send = () => {
if (!input.trim()) return;
setMessages(m => [...m, { role: 'user', content: input }, {
role: 'ai',
content: <>Elaboro la risposta sul perimetro {scope}… (demo)>
}]);
setInput('');
};
return (
);
};
// ───────────────────────────── Full chat page
const ChatFullPage = () => {
const [scope, setScope] = React.useState('group');
const [messages, setMessages] = React.useState([]);
const [input, setInput] = React.useState('');
const [selectedCompanies, setSelectedCompanies] = React.useState(new Set());
const D = window.REGULA_DATA;
const scopeLabel = scope === 'group' ? 'Tutto il gruppo'
: scope === 'single' ? 'Singola società'
: 'Insieme di società';
const prompts = [
{ tag: "Report", text: "Genera il report trimestrale Q1 2026 per Aqua World" },
{ tag: "Forecast", text: "Previsione cash flow del gruppo a 6 mesi" },
{ tag: "Confronto", text: "Confronta la marginalità 2024 vs 2025 di tutte le società" },
{ tag: "Rischio", text: "Quale società ha l'esposizione debitoria più critica?" }
];
const exampleResponse = (q) => ({
role: 'ai',
content: (
<>
Analizzando i bilanci consolidati Bilancio 20251 e la policy di tesoreria Policy v3.22, l'esposizione debitoria più critica è di Aqua World: PFN/EBITDA = 3.8×, con covenant DSCR a 1.24× (soglia 1.20×).
Società
PFN
PFN/EBITDA
DSCR
Stato
Aqua World
24.8 M€
3.80×
1.24×
A rischio
MetalTech Industries
38.2 M€
1.82×
2.10×
OK
Club Lumière
4.1 M€
7.70×
0.92×
Sforato
Fond. Arte Contemporanea
0.3 M€
0.14×
—
OK
Nota: Club Lumière ha DSCR < 1.0 ma trattasi di situazione stagionale; trend atteso in recupero entro Q3.