xertica-ui 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -121,6 +121,7 @@ interface AssistenteXerticaProps {
121
121
  }
122
122
 
123
123
  import type { Message, Conversa, SearchResult, SearchSource, SearchCommand, Sugestao, MockResponse } from '../contexts/AssistenteContext';
124
+ import { sugestoesPadrao, sugestoesRicas, gerarResposta } from './assistant-utils';
124
125
 
125
126
  // ... (existing code)
126
127
 
@@ -136,104 +137,13 @@ interface AssistenteXerticaProps {
136
137
  // ... (existing code)
137
138
 
138
139
 
139
- const sugestoesPadrao: Sugestao[] = [
140
- { id: '1', texto: 'O que posso pedir para você fazer?' },
141
- { id: '2', texto: 'O que você faz?' },
142
- { id: '3', texto: 'Com quais projetos devo me preocupar agora?' },
143
- { id: '4', texto: 'Qual meu próximo projeto?' },
144
- { id: '5', texto: 'Qual projetos está tendo o melhor desempenho?' }
145
- ];
146
140
 
147
- const sugestoesRicas: Sugestao[] = [
148
- { id: 'rich-1', texto: 'Ver exemplo de Gráfico', icon: <BarChart3 className="w-4 h-4 mr-2" /> },
149
- { id: 'rich-2', texto: 'Ver exemplo de Imagem', icon: <ImageIcon className="w-4 h-4 mr-2" /> },
150
- { id: 'rich-3', texto: 'Ver exemplo de Tabela', icon: <TableIcon className="w-4 h-4 mr-2" /> },
151
- { id: 'rich-4', texto: 'Ver exemplo de Documento', icon: <FileText className="w-4 h-4 mr-2" /> }
152
- ];
153
141
 
154
142
  // Respostas simuladas da IA
155
- const gerarResposta = (mensagemUsuario: string, customResponses?: MockResponse[]): string | Partial<Message> => {
156
- const mensagemLower = mensagemUsuario.toLowerCase();
157
143
 
158
- // 1. Verificar respostas customizadas primeiro
159
- if (customResponses && customResponses.length > 0) {
160
- for (const mock of customResponses) {
161
- const trigger = mock.trigger;
162
- let match = false;
163
144
 
164
- if (trigger instanceof RegExp) {
165
- match = trigger.test(mensagemUsuario);
166
- } else {
167
- match = mensagemLower.includes(trigger.toLowerCase());
168
- }
169
145
 
170
- if (match) {
171
- return mock.response;
172
- }
173
- }
174
- }
175
-
176
- const mensagemOriginal = mensagemUsuario;
177
-
178
- if (mensagemLower.includes('o que') && (mensagemLower.includes('fazer') || mensagemLower.includes('pedir'))) {
179
- return 'Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?';
180
- }
181
- // ... (rest of the function)
182
-
183
- if (mensagemLower.includes('o que você faz') || mensagemLower.includes('quem é você')) {
184
- return 'Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.';
185
- }
186
-
187
- if (mensagemLower.includes('projeto') && (mensagemLower.includes('preocupar') || mensagemLower.includes('atenção'))) {
188
- return 'Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?';
189
- }
190
-
191
- if (mensagemLower.includes('próximo projeto') || mensagemLower.includes('próxima tarefa')) {
192
- return 'Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?';
193
- }
194
-
195
- if (mensagemLower.includes('desempenho') || mensagemLower.includes('performance') || mensagemLower.includes('melhor')) {
196
- return 'Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parab��ns!\n\nQuer ver métricas detalhadas?';
197
- }
198
-
199
- if (mensagemLower.includes('olá') || mensagemLower.includes('oi') || mensagemLower.includes('bom dia') || mensagemLower.includes('boa tarde') || mensagemLower.includes('boa noite')) {
200
- return 'Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.';
201
- }
202
-
203
- if (mensagemLower.includes('obrigado') || mensagemLower.includes('obrigada')) {
204
- return 'Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!';
205
- }
206
-
207
- // Respostas para ações especiais
208
- if (mensagemLower.includes('criar documento')) {
209
- const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, '').trim();
210
- return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
211
- }
212
-
213
- if (mensagemLower.includes('gerar podcast')) {
214
- const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, '').trim();
215
- return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
216
- }
217
-
218
- if (mensagemLower.includes('pesquisar')) {
219
- const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, '').trim();
220
- return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
221
- }
222
-
223
- if (mensagemLower.includes('arquivo') || mensagemLower.includes('documento')) {
224
- return 'Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!';
225
- }
226
-
227
- // Resposta genérica inteligente
228
- const respostasGenericas = [
229
- 'Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?',
230
- 'Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?',
231
- 'Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?',
232
- 'Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?'
233
- ];
234
-
235
- return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
236
- };
146
+
237
147
 
238
148
 
239
149
  export function AssistenteXertica({
@@ -0,0 +1,101 @@
1
+ import type { Message, MockResponse, Sugestao } from '../contexts/AssistenteContext';
2
+ import { BarChart3, ImageIcon, Table as TableIcon, FileText } from 'lucide-react';
3
+ import React from 'react';
4
+
5
+ export const sugestoesPadrao: Sugestao[] = [
6
+ { id: '1', texto: 'O que posso pedir para você fazer?' },
7
+ { id: '2', texto: 'O que você faz?' },
8
+ { id: '3', texto: 'Com quais projetos devo me preocupar agora?' },
9
+ { id: '4', texto: 'Qual meu próximo projeto?' },
10
+ { id: '5', texto: 'Qual projetos está tendo o melhor desempenho?' }
11
+ ];
12
+
13
+ export const sugestoesRicas: Sugestao[] = [
14
+ { id: 'rich-1', texto: 'Ver exemplo de Gráfico', icon: React.createElement(BarChart3, { className: "w-4 h-4 mr-2" }) },
15
+ { id: 'rich-2', texto: 'Ver exemplo de Imagem', icon: React.createElement(ImageIcon, { className: "w-4 h-4 mr-2" }) },
16
+ { id: 'rich-3', texto: 'Ver exemplo de Tabela', icon: React.createElement(TableIcon, { className: "w-4 h-4 mr-2" }) },
17
+ { id: 'rich-4', texto: 'Ver exemplo de Documento', icon: React.createElement(FileText, { className: "w-4 h-4 mr-2" }) }
18
+ ];
19
+
20
+ // Respostas simuladas da IA
21
+ export const gerarResposta = (mensagemUsuario: string, customResponses?: MockResponse[]): string | Partial<Message> => {
22
+ const mensagemLower = mensagemUsuario.toLowerCase();
23
+
24
+ // 1. Verificar respostas customizadas primeiro
25
+ if (customResponses && customResponses.length > 0) {
26
+ for (const mock of customResponses) {
27
+ const trigger = mock.trigger;
28
+ let match = false;
29
+
30
+ if (trigger instanceof RegExp) {
31
+ match = trigger.test(mensagemUsuario);
32
+ } else {
33
+ match = mensagemLower.includes(trigger.toLowerCase());
34
+ }
35
+
36
+ if (match) {
37
+ return mock.response;
38
+ }
39
+ }
40
+ }
41
+
42
+ const mensagemOriginal = mensagemUsuario;
43
+
44
+ if (mensagemLower.includes('o que') && (mensagemLower.includes('fazer') || mensagemLower.includes('pedir'))) {
45
+ return 'Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?';
46
+ }
47
+
48
+ if (mensagemLower.includes('o que você faz') || mensagemLower.includes('quem é você')) {
49
+ return 'Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.';
50
+ }
51
+
52
+ if (mensagemLower.includes('projeto') && (mensagemLower.includes('preocupar') || mensagemLower.includes('atenção'))) {
53
+ return 'Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?';
54
+ }
55
+
56
+ if (mensagemLower.includes('próximo projeto') || mensagemLower.includes('próxima tarefa')) {
57
+ return 'Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?';
58
+ }
59
+
60
+ if (mensagemLower.includes('desempenho') || mensagemLower.includes('performance') || mensagemLower.includes('melhor')) {
61
+ return 'Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parabéns!\n\nQuer ver métricas detalhadas?';
62
+ }
63
+
64
+ if (mensagemLower.includes('olá') || mensagemLower.includes('oi') || mensagemLower.includes('bom dia') || mensagemLower.includes('boa tarde') || mensagemLower.includes('boa noite')) {
65
+ return 'Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.';
66
+ }
67
+
68
+ if (mensagemLower.includes('obrigado') || mensagemLower.includes('obrigada')) {
69
+ return 'Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!';
70
+ }
71
+
72
+ // Respostas para ações especiais
73
+ if (mensagemLower.includes('criar documento')) {
74
+ const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, '').trim();
75
+ return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
76
+ }
77
+
78
+ if (mensagemLower.includes('gerar podcast')) {
79
+ const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, '').trim();
80
+ return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
81
+ }
82
+
83
+ if (mensagemLower.includes('pesquisar')) {
84
+ const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, '').trim();
85
+ return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
86
+ }
87
+
88
+ if (mensagemLower.includes('arquivo') || mensagemLower.includes('documento')) {
89
+ return 'Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!';
90
+ }
91
+
92
+ // Resposta genérica inteligente
93
+ const respostasGenericas = [
94
+ 'Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?',
95
+ 'Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?',
96
+ 'Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?',
97
+ 'Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?'
98
+ ];
99
+
100
+ return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
101
+ };
@@ -81,12 +81,12 @@ function AssistantTooltipContent({
81
81
  /**
82
82
  * Tipos de mensagem suportados pelo assistente
83
83
  */
84
- export type MessageType = 'user' | 'assistant';
84
+ export type MessageType = 'user' | 'assistant' | 'system';
85
85
 
86
86
  /**
87
87
  * Tipos de anexo que podem ser incluídos em mensagens
88
88
  */
89
- export type AttachmentType = 'file' | 'audio' | 'image' | 'document' | 'podcast' | 'search';
89
+ export type AttachmentType = 'file' | 'audio' | 'image' | 'video' | 'document' | 'podcast' | 'search';
90
90
 
91
91
  /**
92
92
  * Tipo de busca que pode ser realizada
@@ -141,6 +141,15 @@ export interface Message {
141
141
  searchResults?: SearchResult[];
142
142
  searchSources?: SearchSource[];
143
143
  searchCommands?: SearchCommand[];
144
+ chartData?: any[];
145
+ chartConfig?: any;
146
+ tableData?: {
147
+ caption?: string;
148
+ headers: string[];
149
+ rows: (string | React.ReactNode)[][];
150
+ };
151
+ evaluation?: 'like' | 'dislike';
152
+ evaluationReason?: string;
144
153
  }
145
154
 
146
155
  /**
@@ -177,6 +186,9 @@ export type AssistantTab = 'chat' | 'historico' | 'favoritos';
177
186
  // Props do Componente
178
187
  // ============================================================================
179
188
 
189
+ import type { MockResponse } from '../../contexts/AssistenteContext';
190
+ import { gerarResposta } from '../assistant-utils';
191
+
180
192
  export interface XerticaAssistantProps {
181
193
  /**
182
194
  * Modo de exibição do assistente
@@ -207,6 +219,16 @@ export interface XerticaAssistantProps {
207
219
  */
208
220
  showApiWarning?: boolean;
209
221
 
222
+ /**
223
+ * Ativa o modo de demonstração (sem API key)
224
+ */
225
+ demoMode?: boolean;
226
+
227
+ /**
228
+ * Respostas customizadas para o modo de demonstração
229
+ */
230
+ customResponses?: MockResponse[];
231
+
210
232
  /**
211
233
  * Chave da API do Gemini (se disponível)
212
234
  */
@@ -330,6 +352,8 @@ export function XerticaAssistant({
330
352
  height,
331
353
  className = '',
332
354
  mobileFloating = false,
355
+ demoMode = false,
356
+ customResponses = []
333
357
  }: XerticaAssistantProps) {
334
358
  // ============================================================================
335
359
  // State Management
@@ -435,10 +459,37 @@ export function XerticaAssistant({
435
459
 
436
460
  setMensagens(prev => [...prev, novaMensagem]);
437
461
 
462
+
438
463
  if (onSendMessage) {
439
464
  onSendMessage(mensagem);
440
465
  }
441
466
 
467
+ if (demoMode) {
468
+ // Simular resposta no modo demo se não houver handler externo ou se o handler for apenas para log/side-effect
469
+ // Mas cuidado para não duplicar se onSendMessage também gerar resposta.
470
+ // Assumindo que demoMode é autossuficiente.
471
+ const mensagemAtual = mensagem;
472
+ setTimeout(() => {
473
+ const resposta = gerarResposta(mensagemAtual, customResponses);
474
+
475
+ let novaMensagemIA: Message = {
476
+ id: `msg-${Date.now()}-ia`,
477
+ type: 'assistant',
478
+ content: '',
479
+ timestamp: new Date(),
480
+ isFavorite: false
481
+ };
482
+
483
+ if (typeof resposta === 'string') {
484
+ novaMensagemIA.content = resposta;
485
+ } else {
486
+ novaMensagemIA = { ...novaMensagemIA, ...resposta };
487
+ }
488
+
489
+ setMensagens(prev => [...prev, novaMensagemIA]);
490
+ }, 1000 + Math.random() * 1000);
491
+ }
492
+
442
493
  setMensagem('');
443
494
  };
444
495
 
@@ -0,0 +1,4 @@
1
+ import type { Message, MockResponse, Sugestao } from '../contexts/AssistenteContext';
2
+ export declare const sugestoesPadrao: Sugestao[];
3
+ export declare const sugestoesRicas: Sugestao[];
4
+ export declare const gerarResposta: (mensagemUsuario: string, customResponses?: MockResponse[]) => string | Partial<Message>;
@@ -1,11 +1,12 @@
1
+ import React from 'react';
1
2
  /**
2
3
  * Tipos de mensagem suportados pelo assistente
3
4
  */
4
- export type MessageType = 'user' | 'assistant';
5
+ export type MessageType = 'user' | 'assistant' | 'system';
5
6
  /**
6
7
  * Tipos de anexo que podem ser incluídos em mensagens
7
8
  */
8
- export type AttachmentType = 'file' | 'audio' | 'image' | 'document' | 'podcast' | 'search';
9
+ export type AttachmentType = 'file' | 'audio' | 'image' | 'video' | 'document' | 'podcast' | 'search';
9
10
  /**
10
11
  * Tipo de busca que pode ser realizada
11
12
  */
@@ -55,6 +56,15 @@ export interface Message {
55
56
  searchResults?: SearchResult[];
56
57
  searchSources?: SearchSource[];
57
58
  searchCommands?: SearchCommand[];
59
+ chartData?: any[];
60
+ chartConfig?: any;
61
+ tableData?: {
62
+ caption?: string;
63
+ headers: string[];
64
+ rows: (string | React.ReactNode)[][];
65
+ };
66
+ evaluation?: 'like' | 'dislike';
67
+ evaluationReason?: string;
58
68
  }
59
69
  /**
60
70
  * Interface para uma conversa salva
@@ -82,6 +92,7 @@ export type AssistantMode = 'collapsed' | 'expanded' | 'fullPage';
82
92
  * Abas disponíveis no assistente
83
93
  */
84
94
  export type AssistantTab = 'chat' | 'historico' | 'favoritos';
95
+ import type { MockResponse } from '../../contexts/AssistenteContext';
85
96
  export interface XerticaAssistantProps {
86
97
  /**
87
98
  * Modo de exibição do assistente
@@ -107,6 +118,14 @@ export interface XerticaAssistantProps {
107
118
  * @default true
108
119
  */
109
120
  showApiWarning?: boolean;
121
+ /**
122
+ * Ativa o modo de demonstração (sem API key)
123
+ */
124
+ demoMode?: boolean;
125
+ /**
126
+ * Respostas customizadas para o modo de demonstração
127
+ */
128
+ customResponses?: MockResponse[];
110
129
  /**
111
130
  * Chave da API do Gemini (se disponível)
112
131
  */
@@ -193,4 +212,4 @@ export interface XerticaAssistantProps {
193
212
  * />
194
213
  * ```
195
214
  */
196
- export declare function XerticaAssistant({ mode, isExpanded: controlledIsExpanded, onToggle, defaultTab, showApiWarning, apiKey, onNavigateSettings, onNavigateFullPage, userName, initialMessages, savedConversations, suggestions: propSuggestions, onSendMessage, onFileAttach, isProcessing, width, height, className, mobileFloating, }: XerticaAssistantProps): import("react/jsx-runtime").JSX.Element;
215
+ export declare function XerticaAssistant({ mode, isExpanded: controlledIsExpanded, onToggle, defaultTab, showApiWarning, apiKey, onNavigateSettings, onNavigateFullPage, userName, initialMessages, savedConversations, suggestions: propSuggestions, onSendMessage, onFileAttach, isProcessing, width, height, className, mobileFloating, demoMode, customResponses }: XerticaAssistantProps): import("react/jsx-runtime").JSX.Element;
package/dist/index.es.js CHANGED
@@ -19687,6 +19687,80 @@ function TooltipContent({
19687
19687
  }
19688
19688
  ) });
19689
19689
  }
19690
+ const sugestoesPadrao = [
19691
+ { id: "1", texto: "O que posso pedir para você fazer?" },
19692
+ { id: "2", texto: "O que você faz?" },
19693
+ { id: "3", texto: "Com quais projetos devo me preocupar agora?" },
19694
+ { id: "4", texto: "Qual meu próximo projeto?" },
19695
+ { id: "5", texto: "Qual projetos está tendo o melhor desempenho?" }
19696
+ ];
19697
+ const sugestoesRicas = [
19698
+ { id: "rich-1", texto: "Ver exemplo de Gráfico", icon: React__default.createElement(ChartColumn, { className: "w-4 h-4 mr-2" }) },
19699
+ { id: "rich-2", texto: "Ver exemplo de Imagem", icon: React__default.createElement(Image$1, { className: "w-4 h-4 mr-2" }) },
19700
+ { id: "rich-3", texto: "Ver exemplo de Tabela", icon: React__default.createElement(Table$1, { className: "w-4 h-4 mr-2" }) },
19701
+ { id: "rich-4", texto: "Ver exemplo de Documento", icon: React__default.createElement(FileText, { className: "w-4 h-4 mr-2" }) }
19702
+ ];
19703
+ const gerarResposta = (mensagemUsuario, customResponses) => {
19704
+ const mensagemLower = mensagemUsuario.toLowerCase();
19705
+ if (customResponses && customResponses.length > 0) {
19706
+ for (const mock of customResponses) {
19707
+ const trigger = mock.trigger;
19708
+ let match2 = false;
19709
+ if (trigger instanceof RegExp) {
19710
+ match2 = trigger.test(mensagemUsuario);
19711
+ } else {
19712
+ match2 = mensagemLower.includes(trigger.toLowerCase());
19713
+ }
19714
+ if (match2) {
19715
+ return mock.response;
19716
+ }
19717
+ }
19718
+ }
19719
+ const mensagemOriginal = mensagemUsuario;
19720
+ if (mensagemLower.includes("o que") && (mensagemLower.includes("fazer") || mensagemLower.includes("pedir"))) {
19721
+ return "Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?";
19722
+ }
19723
+ if (mensagemLower.includes("o que você faz") || mensagemLower.includes("quem é você")) {
19724
+ return "Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.";
19725
+ }
19726
+ if (mensagemLower.includes("projeto") && (mensagemLower.includes("preocupar") || mensagemLower.includes("atenção"))) {
19727
+ return "Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?";
19728
+ }
19729
+ if (mensagemLower.includes("próximo projeto") || mensagemLower.includes("próxima tarefa")) {
19730
+ return "Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?";
19731
+ }
19732
+ if (mensagemLower.includes("desempenho") || mensagemLower.includes("performance") || mensagemLower.includes("melhor")) {
19733
+ return "Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parabéns!\n\nQuer ver métricas detalhadas?";
19734
+ }
19735
+ if (mensagemLower.includes("olá") || mensagemLower.includes("oi") || mensagemLower.includes("bom dia") || mensagemLower.includes("boa tarde") || mensagemLower.includes("boa noite")) {
19736
+ return "Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.";
19737
+ }
19738
+ if (mensagemLower.includes("obrigado") || mensagemLower.includes("obrigada")) {
19739
+ return "Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!";
19740
+ }
19741
+ if (mensagemLower.includes("criar documento")) {
19742
+ const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, "").trim();
19743
+ return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
19744
+ }
19745
+ if (mensagemLower.includes("gerar podcast")) {
19746
+ const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, "").trim();
19747
+ return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
19748
+ }
19749
+ if (mensagemLower.includes("pesquisar")) {
19750
+ const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, "").trim();
19751
+ return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
19752
+ }
19753
+ if (mensagemLower.includes("arquivo") || mensagemLower.includes("documento")) {
19754
+ return "Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!";
19755
+ }
19756
+ const respostasGenericas = [
19757
+ "Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?",
19758
+ "Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?",
19759
+ "Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?",
19760
+ "Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?"
19761
+ ];
19762
+ return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
19763
+ };
19690
19764
  const __vite_import_meta_env__$2 = {};
19691
19765
  function AssistantTooltipContent$1({
19692
19766
  className,
@@ -19737,7 +19811,9 @@ function XerticaAssistant({
19737
19811
  width,
19738
19812
  height,
19739
19813
  className = "",
19740
- mobileFloating = false
19814
+ mobileFloating = false,
19815
+ demoMode = false,
19816
+ customResponses = []
19741
19817
  }) {
19742
19818
  const isFullPage = mode === "fullPage";
19743
19819
  const [internalIsExpanded, setInternalIsExpanded] = useState(controlledIsExpanded ?? true);
@@ -19802,6 +19878,25 @@ function XerticaAssistant({
19802
19878
  if (onSendMessage) {
19803
19879
  onSendMessage(mensagem);
19804
19880
  }
19881
+ if (demoMode) {
19882
+ const mensagemAtual = mensagem;
19883
+ setTimeout(() => {
19884
+ const resposta = gerarResposta(mensagemAtual, customResponses);
19885
+ let novaMensagemIA = {
19886
+ id: `msg-${Date.now()}-ia`,
19887
+ type: "assistant",
19888
+ content: "",
19889
+ timestamp: /* @__PURE__ */ new Date(),
19890
+ isFavorite: false
19891
+ };
19892
+ if (typeof resposta === "string") {
19893
+ novaMensagemIA.content = resposta;
19894
+ } else {
19895
+ novaMensagemIA = { ...novaMensagemIA, ...resposta };
19896
+ }
19897
+ setMensagens((prev) => [...prev, novaMensagemIA]);
19898
+ }, 1e3 + Math.random() * 1e3);
19899
+ }
19805
19900
  setMensagem("");
19806
19901
  };
19807
19902
  const handleToggleFavorite = (messageId) => {
@@ -56387,80 +56482,6 @@ function AssistantTooltipContent({
56387
56482
  }
56388
56483
  ) });
56389
56484
  }
56390
- const sugestoesPadrao = [
56391
- { id: "1", texto: "O que posso pedir para você fazer?" },
56392
- { id: "2", texto: "O que você faz?" },
56393
- { id: "3", texto: "Com quais projetos devo me preocupar agora?" },
56394
- { id: "4", texto: "Qual meu próximo projeto?" },
56395
- { id: "5", texto: "Qual projetos está tendo o melhor desempenho?" }
56396
- ];
56397
- const sugestoesRicas = [
56398
- { id: "rich-1", texto: "Ver exemplo de Gráfico", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(ChartColumn, { className: "w-4 h-4 mr-2" }) },
56399
- { id: "rich-2", texto: "Ver exemplo de Imagem", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Image$1, { className: "w-4 h-4 mr-2" }) },
56400
- { id: "rich-3", texto: "Ver exemplo de Tabela", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Table$1, { className: "w-4 h-4 mr-2" }) },
56401
- { id: "rich-4", texto: "Ver exemplo de Documento", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FileText, { className: "w-4 h-4 mr-2" }) }
56402
- ];
56403
- const gerarResposta = (mensagemUsuario, customResponses) => {
56404
- const mensagemLower = mensagemUsuario.toLowerCase();
56405
- if (customResponses && customResponses.length > 0) {
56406
- for (const mock of customResponses) {
56407
- const trigger = mock.trigger;
56408
- let match2 = false;
56409
- if (trigger instanceof RegExp) {
56410
- match2 = trigger.test(mensagemUsuario);
56411
- } else {
56412
- match2 = mensagemLower.includes(trigger.toLowerCase());
56413
- }
56414
- if (match2) {
56415
- return mock.response;
56416
- }
56417
- }
56418
- }
56419
- const mensagemOriginal = mensagemUsuario;
56420
- if (mensagemLower.includes("o que") && (mensagemLower.includes("fazer") || mensagemLower.includes("pedir"))) {
56421
- return "Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?";
56422
- }
56423
- if (mensagemLower.includes("o que você faz") || mensagemLower.includes("quem é você")) {
56424
- return "Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.";
56425
- }
56426
- if (mensagemLower.includes("projeto") && (mensagemLower.includes("preocupar") || mensagemLower.includes("atenção"))) {
56427
- return "Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?";
56428
- }
56429
- if (mensagemLower.includes("próximo projeto") || mensagemLower.includes("próxima tarefa")) {
56430
- return "Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?";
56431
- }
56432
- if (mensagemLower.includes("desempenho") || mensagemLower.includes("performance") || mensagemLower.includes("melhor")) {
56433
- return "Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parab��ns!\n\nQuer ver métricas detalhadas?";
56434
- }
56435
- if (mensagemLower.includes("olá") || mensagemLower.includes("oi") || mensagemLower.includes("bom dia") || mensagemLower.includes("boa tarde") || mensagemLower.includes("boa noite")) {
56436
- return "Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.";
56437
- }
56438
- if (mensagemLower.includes("obrigado") || mensagemLower.includes("obrigada")) {
56439
- return "Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!";
56440
- }
56441
- if (mensagemLower.includes("criar documento")) {
56442
- const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, "").trim();
56443
- return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
56444
- }
56445
- if (mensagemLower.includes("gerar podcast")) {
56446
- const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, "").trim();
56447
- return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
56448
- }
56449
- if (mensagemLower.includes("pesquisar")) {
56450
- const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, "").trim();
56451
- return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
56452
- }
56453
- if (mensagemLower.includes("arquivo") || mensagemLower.includes("documento")) {
56454
- return "Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!";
56455
- }
56456
- const respostasGenericas = [
56457
- "Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?",
56458
- "Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?",
56459
- "Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?",
56460
- "Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?"
56461
- ];
56462
- return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
56463
- };
56464
56485
  function AssistenteXertica({
56465
56486
  isExpanded,
56466
56487
  onToggle,
package/dist/index.umd.js CHANGED
@@ -19706,6 +19706,80 @@
19706
19706
  }
19707
19707
  ) });
19708
19708
  }
19709
+ const sugestoesPadrao = [
19710
+ { id: "1", texto: "O que posso pedir para você fazer?" },
19711
+ { id: "2", texto: "O que você faz?" },
19712
+ { id: "3", texto: "Com quais projetos devo me preocupar agora?" },
19713
+ { id: "4", texto: "Qual meu próximo projeto?" },
19714
+ { id: "5", texto: "Qual projetos está tendo o melhor desempenho?" }
19715
+ ];
19716
+ const sugestoesRicas = [
19717
+ { id: "rich-1", texto: "Ver exemplo de Gráfico", icon: React.createElement(ChartColumn, { className: "w-4 h-4 mr-2" }) },
19718
+ { id: "rich-2", texto: "Ver exemplo de Imagem", icon: React.createElement(Image$1, { className: "w-4 h-4 mr-2" }) },
19719
+ { id: "rich-3", texto: "Ver exemplo de Tabela", icon: React.createElement(Table$1, { className: "w-4 h-4 mr-2" }) },
19720
+ { id: "rich-4", texto: "Ver exemplo de Documento", icon: React.createElement(FileText, { className: "w-4 h-4 mr-2" }) }
19721
+ ];
19722
+ const gerarResposta = (mensagemUsuario, customResponses) => {
19723
+ const mensagemLower = mensagemUsuario.toLowerCase();
19724
+ if (customResponses && customResponses.length > 0) {
19725
+ for (const mock of customResponses) {
19726
+ const trigger = mock.trigger;
19727
+ let match2 = false;
19728
+ if (trigger instanceof RegExp) {
19729
+ match2 = trigger.test(mensagemUsuario);
19730
+ } else {
19731
+ match2 = mensagemLower.includes(trigger.toLowerCase());
19732
+ }
19733
+ if (match2) {
19734
+ return mock.response;
19735
+ }
19736
+ }
19737
+ }
19738
+ const mensagemOriginal = mensagemUsuario;
19739
+ if (mensagemLower.includes("o que") && (mensagemLower.includes("fazer") || mensagemLower.includes("pedir"))) {
19740
+ return "Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?";
19741
+ }
19742
+ if (mensagemLower.includes("o que você faz") || mensagemLower.includes("quem é você")) {
19743
+ return "Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.";
19744
+ }
19745
+ if (mensagemLower.includes("projeto") && (mensagemLower.includes("preocupar") || mensagemLower.includes("atenção"))) {
19746
+ return "Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?";
19747
+ }
19748
+ if (mensagemLower.includes("próximo projeto") || mensagemLower.includes("próxima tarefa")) {
19749
+ return "Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?";
19750
+ }
19751
+ if (mensagemLower.includes("desempenho") || mensagemLower.includes("performance") || mensagemLower.includes("melhor")) {
19752
+ return "Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parabéns!\n\nQuer ver métricas detalhadas?";
19753
+ }
19754
+ if (mensagemLower.includes("olá") || mensagemLower.includes("oi") || mensagemLower.includes("bom dia") || mensagemLower.includes("boa tarde") || mensagemLower.includes("boa noite")) {
19755
+ return "Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.";
19756
+ }
19757
+ if (mensagemLower.includes("obrigado") || mensagemLower.includes("obrigada")) {
19758
+ return "Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!";
19759
+ }
19760
+ if (mensagemLower.includes("criar documento")) {
19761
+ const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, "").trim();
19762
+ return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
19763
+ }
19764
+ if (mensagemLower.includes("gerar podcast")) {
19765
+ const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, "").trim();
19766
+ return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
19767
+ }
19768
+ if (mensagemLower.includes("pesquisar")) {
19769
+ const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, "").trim();
19770
+ return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
19771
+ }
19772
+ if (mensagemLower.includes("arquivo") || mensagemLower.includes("documento")) {
19773
+ return "Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!";
19774
+ }
19775
+ const respostasGenericas = [
19776
+ "Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?",
19777
+ "Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?",
19778
+ "Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?",
19779
+ "Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?"
19780
+ ];
19781
+ return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
19782
+ };
19709
19783
  const __vite_import_meta_env__$2 = {};
19710
19784
  function AssistantTooltipContent$1({
19711
19785
  className,
@@ -19756,7 +19830,9 @@
19756
19830
  width,
19757
19831
  height,
19758
19832
  className = "",
19759
- mobileFloating = false
19833
+ mobileFloating = false,
19834
+ demoMode = false,
19835
+ customResponses = []
19760
19836
  }) {
19761
19837
  const isFullPage = mode === "fullPage";
19762
19838
  const [internalIsExpanded, setInternalIsExpanded] = React.useState(controlledIsExpanded ?? true);
@@ -19821,6 +19897,25 @@
19821
19897
  if (onSendMessage) {
19822
19898
  onSendMessage(mensagem);
19823
19899
  }
19900
+ if (demoMode) {
19901
+ const mensagemAtual = mensagem;
19902
+ setTimeout(() => {
19903
+ const resposta = gerarResposta(mensagemAtual, customResponses);
19904
+ let novaMensagemIA = {
19905
+ id: `msg-${Date.now()}-ia`,
19906
+ type: "assistant",
19907
+ content: "",
19908
+ timestamp: /* @__PURE__ */ new Date(),
19909
+ isFavorite: false
19910
+ };
19911
+ if (typeof resposta === "string") {
19912
+ novaMensagemIA.content = resposta;
19913
+ } else {
19914
+ novaMensagemIA = { ...novaMensagemIA, ...resposta };
19915
+ }
19916
+ setMensagens((prev) => [...prev, novaMensagemIA]);
19917
+ }, 1e3 + Math.random() * 1e3);
19918
+ }
19824
19919
  setMensagem("");
19825
19920
  };
19826
19921
  const handleToggleFavorite = (messageId) => {
@@ -56406,80 +56501,6 @@ ${colorConfig.map(([key, itemConfig]) => {
56406
56501
  }
56407
56502
  ) });
56408
56503
  }
56409
- const sugestoesPadrao = [
56410
- { id: "1", texto: "O que posso pedir para você fazer?" },
56411
- { id: "2", texto: "O que você faz?" },
56412
- { id: "3", texto: "Com quais projetos devo me preocupar agora?" },
56413
- { id: "4", texto: "Qual meu próximo projeto?" },
56414
- { id: "5", texto: "Qual projetos está tendo o melhor desempenho?" }
56415
- ];
56416
- const sugestoesRicas = [
56417
- { id: "rich-1", texto: "Ver exemplo de Gráfico", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(ChartColumn, { className: "w-4 h-4 mr-2" }) },
56418
- { id: "rich-2", texto: "Ver exemplo de Imagem", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Image$1, { className: "w-4 h-4 mr-2" }) },
56419
- { id: "rich-3", texto: "Ver exemplo de Tabela", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Table$1, { className: "w-4 h-4 mr-2" }) },
56420
- { id: "rich-4", texto: "Ver exemplo de Documento", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FileText, { className: "w-4 h-4 mr-2" }) }
56421
- ];
56422
- const gerarResposta = (mensagemUsuario, customResponses) => {
56423
- const mensagemLower = mensagemUsuario.toLowerCase();
56424
- if (customResponses && customResponses.length > 0) {
56425
- for (const mock of customResponses) {
56426
- const trigger = mock.trigger;
56427
- let match2 = false;
56428
- if (trigger instanceof RegExp) {
56429
- match2 = trigger.test(mensagemUsuario);
56430
- } else {
56431
- match2 = mensagemLower.includes(trigger.toLowerCase());
56432
- }
56433
- if (match2) {
56434
- return mock.response;
56435
- }
56436
- }
56437
- }
56438
- const mensagemOriginal = mensagemUsuario;
56439
- if (mensagemLower.includes("o que") && (mensagemLower.includes("fazer") || mensagemLower.includes("pedir"))) {
56440
- return "Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?";
56441
- }
56442
- if (mensagemLower.includes("o que você faz") || mensagemLower.includes("quem é você")) {
56443
- return "Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.";
56444
- }
56445
- if (mensagemLower.includes("projeto") && (mensagemLower.includes("preocupar") || mensagemLower.includes("atenção"))) {
56446
- return "Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?";
56447
- }
56448
- if (mensagemLower.includes("próximo projeto") || mensagemLower.includes("próxima tarefa")) {
56449
- return "Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?";
56450
- }
56451
- if (mensagemLower.includes("desempenho") || mensagemLower.includes("performance") || mensagemLower.includes("melhor")) {
56452
- return "Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parab��ns!\n\nQuer ver métricas detalhadas?";
56453
- }
56454
- if (mensagemLower.includes("olá") || mensagemLower.includes("oi") || mensagemLower.includes("bom dia") || mensagemLower.includes("boa tarde") || mensagemLower.includes("boa noite")) {
56455
- return "Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.";
56456
- }
56457
- if (mensagemLower.includes("obrigado") || mensagemLower.includes("obrigada")) {
56458
- return "Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!";
56459
- }
56460
- if (mensagemLower.includes("criar documento")) {
56461
- const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, "").trim();
56462
- return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
56463
- }
56464
- if (mensagemLower.includes("gerar podcast")) {
56465
- const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, "").trim();
56466
- return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
56467
- }
56468
- if (mensagemLower.includes("pesquisar")) {
56469
- const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, "").trim();
56470
- return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
56471
- }
56472
- if (mensagemLower.includes("arquivo") || mensagemLower.includes("documento")) {
56473
- return "Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!";
56474
- }
56475
- const respostasGenericas = [
56476
- "Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?",
56477
- "Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?",
56478
- "Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?",
56479
- "Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?"
56480
- ];
56481
- return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
56482
- };
56483
56504
  function AssistenteXertica({
56484
56505
  isExpanded,
56485
56506
  onToggle,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xertica-ui",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "Xertica UI - Design System completo com componentes React e Tailwind CSS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.umd.js",