code7-leia 0.1.118 → 0.1.122

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.
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface Option {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ interface MultiSelectProps {
7
+ options: Option[];
8
+ presset: string[];
9
+ setPresset: React.Dispatch<React.SetStateAction<string[]>>;
10
+ }
11
+ declare const MultiSelect: React.FC<MultiSelectProps>;
12
+ export default MultiSelect;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const MultiSelectWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
3
+ export declare const SelectBox: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
4
+ export declare const OverSelect: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
5
+ export declare const Checkboxes: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
6
+ export declare const CheckboxLabel: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, never>>;
@@ -24,12 +24,12 @@ export declare const deleteFilesActionSuccess: ({ files }: any) => {
24
24
  files: any;
25
25
  };
26
26
  };
27
- export declare const uploadFilesAction: (file: any, id: string, pressets: [string], language: string) => {
27
+ export declare const uploadFilesAction: (file: any, id: string, pressets: string[], language: string) => {
28
28
  type: string;
29
29
  payload: {
30
30
  file: any;
31
31
  id: string;
32
- pressets: [string];
32
+ pressets: string[];
33
33
  language: string;
34
34
  };
35
35
  };
@@ -0,0 +1,2 @@
1
+ import { Language } from "../../interface/Language";
2
+ export declare const enTranslation: Language;
@@ -0,0 +1,2 @@
1
+ import { Language } from "../../interface/Language";
2
+ export declare const esTranslation: Language;
@@ -0,0 +1,2 @@
1
+ import { Language } from "../../interface/Language";
2
+ export declare const ptTranslation: Language;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.118",
2
+ "version": "0.1.122",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -88,7 +88,9 @@ const AreaUpload: React.FC<AreaUploadProps> = ({
88
88
 
89
89
  return (
90
90
  <>
91
- {multipleFile || myFiles?.length === 0 ? (
91
+ {console.log('!!file: ', !!file)}
92
+ {console.log('file: ', file)}
93
+ {(multipleFile || myFiles?.length === 0) || !!file ? (
92
94
  <Container
93
95
  {...getRootProps({ isDragActive, isDragAccept, isDragReject })}
94
96
  >
@@ -14,7 +14,7 @@ import Modal from './components/Modal'
14
14
  import ModalFooter from './components/Modal/ModalFooter'
15
15
  import ModalContent from './components/Modal/ModalContent'
16
16
  import EmptyState from '../EmptyState';
17
- import Select from '../Select'
17
+ import MultiSelect from '../MultiSelect';
18
18
  import AreaUpload from './components/AreaUpload';
19
19
  import { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';
20
20
  import { deleteFilesAction, getFilesAction, uploadFilesAction } from '../../store/modules/actions';
@@ -27,7 +27,7 @@ export const FileArea = () => {
27
27
  const [modal, setModal] = useState(false)
28
28
  const [modalDelete, setModalDelete] = useState(false)
29
29
  const [fileDelete, setFileDelete] = useState('')
30
- const [presset, setPresset] = useState('');
30
+ const [presset, setPresset] = useState<string[]>([]);
31
31
  const t = getLanguage(language)
32
32
  const dispatch = useDispatch();
33
33
  const initFiles = useSelector((state: any) => state.files);
@@ -61,6 +61,10 @@ export const FileArea = () => {
61
61
  }
62
62
 
63
63
  const handleOpenModal = () => {
64
+ if(modal){
65
+ setUploadFile(undefined)
66
+ setPresset([])
67
+ }
64
68
  setModal(!modal)
65
69
  }
66
70
 
@@ -75,10 +79,11 @@ export const FileArea = () => {
75
79
  }
76
80
 
77
81
  const handleUploadFile = () => {
78
- dispatch(uploadFilesAction(uploadFile, id, [presset], language))
82
+ console.log('presset: ', presset)
83
+ dispatch(uploadFilesAction(uploadFile, id, presset, language))
79
84
  setModal(false)
80
85
  setUploadFile(undefined)
81
- setPresset('')
86
+ setPresset([])
82
87
  };
83
88
 
84
89
  const renderFiles = () => {
@@ -152,7 +157,7 @@ export const FileArea = () => {
152
157
  </div>
153
158
  <div className='presset'>
154
159
  <p>Presset</p>
155
- <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={setPresset} />
160
+ <MultiSelect options={optionsPresset} presset={presset} setPresset={setPresset} />
156
161
  </div>
157
162
  </ModalContent>
158
163
  <ModalFooter>
@@ -0,0 +1,63 @@
1
+ import React, { useState } from 'react';
2
+ import * as S from './styles';
3
+
4
+ interface Option {
5
+ label: string;
6
+ value: string;
7
+ }
8
+
9
+ interface MultiSelectProps {
10
+ options: Option[];
11
+ presset: string[];
12
+ setPresset: React.Dispatch<React.SetStateAction<string[]>>;
13
+ }
14
+
15
+ const MultiSelect: React.FC<MultiSelectProps> = ({ options, presset, setPresset }) => {
16
+ const [expanded, setExpanded] = useState(false);
17
+
18
+ const handleCheckboxChange = (value: string) => {
19
+ setPresset(prevPresset => {
20
+ if (prevPresset.includes(value)) {
21
+ return prevPresset.filter(val => val !== value);
22
+ } else {
23
+ return [...prevPresset, value];
24
+ }
25
+ });
26
+ }
27
+
28
+ const showCheckboxes = () => {
29
+ if (!expanded) {
30
+ setExpanded(true);
31
+ } else {
32
+ setExpanded(false);
33
+ }
34
+ }
35
+
36
+ return (
37
+ <form>
38
+ <S.MultiSelectWrapper>
39
+ <S.SelectBox onClick={showCheckboxes}>
40
+ <select>
41
+ <option>Select an option</option>
42
+ </select>
43
+ <S.OverSelect />
44
+ </S.SelectBox>
45
+ <S.Checkboxes style={{ display: expanded ? 'block' : 'none' }}>
46
+ {options.map((option, index) => (
47
+ <S.CheckboxLabel key={index} htmlFor={option.value}>
48
+ <input
49
+ type="checkbox"
50
+ id={option.value}
51
+ checked={presset.includes(option.value)}
52
+ onChange={() => handleCheckboxChange(option.value)}
53
+ />
54
+ {option.label}
55
+ </S.CheckboxLabel>
56
+ ))}
57
+ </S.Checkboxes>
58
+ </S.MultiSelectWrapper>
59
+ </form>
60
+ );
61
+ }
62
+
63
+ export default MultiSelect;
@@ -0,0 +1,35 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const MultiSelectWrapper = styled.div`
4
+ width: 200px;
5
+ `;
6
+
7
+ export const SelectBox = styled.div`
8
+ position: relative;
9
+
10
+ select {
11
+ width: 100%;
12
+ font-weight: bold;
13
+ }
14
+ `;
15
+
16
+ export const OverSelect = styled.div`
17
+ position: absolute;
18
+ left: 0;
19
+ right: 0;
20
+ top: 0;
21
+ bottom: 0;
22
+ `;
23
+
24
+ export const Checkboxes = styled.div`
25
+ display: none;
26
+ border: 1px #dadada solid;
27
+ `;
28
+
29
+ export const CheckboxLabel = styled.label`
30
+ display: block;
31
+
32
+ &:hover {
33
+ background-color: #1e90ff;
34
+ }
35
+ `;
@@ -50,36 +50,44 @@ export const TestArea = () => {
50
50
  dispatch(testAction(search, profile, presset, id))
51
51
  };
52
52
 
53
+ const returnTest = () => {
54
+ return (
55
+ <S.Container isLoading={isLoading}>
56
+ <S.Header>
57
+ <div className='infos'>
58
+ <h2>{t.test}</h2>
59
+ <p>{t.testArea.description}</p>
60
+ </div>
61
+ </S.Header>
62
+ <S.Inputs>
63
+ <InputTest placeholder={t.testArea.typeSentence} onChange={handleSearch} onRecordAudio={handleRecordAudio} />
64
+ <Select placeholder={t.testArea.selectPersona} options={optionsPersona} onSelect={handleSelectPersona} />
65
+ <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={handleSelectPresset} />
66
+ <button onClick={handleTest}><PiWaveformBold /> {t.buttons.test}</button>
67
+ </S.Inputs>
68
+ {
69
+ !results ? (
70
+ <EmptyState
71
+ icon={<FaList></FaList>}
72
+ title={t.testArea.emptyState.title}
73
+ description={t.testArea.emptyState.description}
74
+ activeButton={false}
75
+ />
76
+ ) : <S.Result>
77
+ <div className='icon'>
78
+ <MdPerson2 />
79
+ </div>
80
+ <div className='text'>{results}</div>
81
+ </S.Result>
82
+ }
83
+ </S.Container>
84
+ )
85
+ }
86
+
53
87
  return (
54
88
  <SharedPropsProvider id={id} language={language} propTags={{ tags: [] }} personas={personas}>
55
- <S.Container isLoading={isLoading}>
56
- <S.Header>
57
- <div className='infos'>
58
- <h2>{t.test}</h2>
59
- <p>{t.testArea.description}</p>
60
- </div>
61
- </S.Header>
62
- <S.Inputs>
63
- <InputTest placeholder={t.testArea.typeSentence} onChange={handleSearch} onRecordAudio={handleRecordAudio} />
64
- <Select placeholder={t.testArea.selectPersona} options={optionsPersona} onSelect={handleSelectPersona} />
65
- <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={handleSelectPresset} />
66
- <button onClick={handleTest}><PiWaveformBold /> {t.buttons.test}</button>
67
- </S.Inputs>
68
- {
69
- !results ? (
70
- <EmptyState
71
- icon={<FaList></FaList>}
72
- title={t.testArea.emptyState.title}
73
- description={t.testArea.emptyState.description}
74
- activeButton={false}
75
- />
76
- ) : <S.Result>
77
- <div className='icon'>
78
- <MdPerson2 />
79
- </div>
80
- <div className='text'>{results}</div>
81
- </S.Result>
82
- }
89
+ <S.Container>
90
+ {returnTest()}
83
91
  </S.Container>
84
92
  </SharedPropsProvider>
85
93
  );
@@ -28,7 +28,7 @@ export const deleteFilesActionSuccess = ({ files }: any) => {
28
28
  }
29
29
  }
30
30
 
31
- export const uploadFilesAction = (file: any, id: string, pressets: [string], language: string) => {
31
+ export const uploadFilesAction = (file: any, id: string, pressets: string[], language: string) => {
32
32
  return {
33
33
  type: types.UPLOAD_FILES_REQUEST,
34
34
  payload: { file, id, pressets, language }
@@ -1,220 +1,17 @@
1
-
2
- import { Language } from '../interface/Language'
3
-
4
- const defaultLanguage: Language = {
5
- files: 'Files',
6
- test: 'Test',
7
- fileArea: {
8
- description: 'bla bla bla bla bla',
9
- fileName: 'File name',
10
- presset: 'Presset',
11
- actions: 'Actions',
12
- search: 'Search',
13
- fileUpload: 'File upload',
14
- emptyState: {
15
- title: 'No data',
16
- description: 'bla bla bla bla bla',
17
- },
18
- modal: {
19
- descriptionUpload: 'Drag and drop files here or',
20
- chooseFile: 'Choose a file',
21
- uploadFile: 'Upload a file',
22
- deleteFileTitle: 'Delete a file',
23
- deleteFile: 'Important! By deleting this file, you will lose all its information and will not be able to recover it.'
24
- },
25
- },
26
- buttons: {
27
- cancel: 'Cancel',
28
- send: 'Send',
29
- delete: 'Delete',
30
- test: 'Test',
31
- },
32
- testArea: {
33
- description: 'bla bla bla bla bla',
34
- typeSentence: 'Type a sentence',
35
- selectPersona: 'Select a Persona',
36
- selectPresset: 'Select a presset',
37
- emptyState: {
38
- title: 'No data for analysis',
39
- description: 'Do a search, click the "Test" button.',
40
- },
41
- },
42
- toast: {
43
- deleteFile: {
44
- success: {
45
- title: 'Success',
46
- description: 'File deleted successfully!'
47
- },
48
- fail: {
49
- title: 'Failure',
50
- description: 'Error deleting the file!'
51
- }
52
- },
53
- uploadFile: {
54
- success: {
55
- title: 'Success',
56
- description: 'File uploaded successfully!'
57
- },
58
- fail: {
59
- title: 'Failure',
60
- description: 'Error uploading the file!'
61
- }
62
- },
63
- Test: {
64
- fail: {
65
- title: 'Failure',
66
- description: 'Error testing Le-IA'
67
- }
68
- }
69
- }
70
- };
1
+ import { Language } from '../interface/Language';
2
+ import { enTranslation } from './languages/en';
3
+ import { ptTranslation } from './languages/pt-br';
4
+ import { esTranslation } from './languages/es';
71
5
 
72
6
  export const getLanguage = (language: keyof Record<'en' | 'pt-br' | 'es', Language>): Language => {
73
- const languages = {
74
- en: defaultLanguage,
75
- 'pt-br': {
76
- files: 'Arquivos',
77
- test: 'Teste',
78
- fileArea: {
79
- ...defaultLanguage.fileArea,
80
- fileName: 'Nome do arquivo',
81
- presset: 'Presset',
82
- actions: 'Ações',
83
- search: 'Pesquisar',
84
- fileUpload: 'Upload de arquivo',
85
- emptyState: {
86
- ...defaultLanguage.fileArea.emptyState,
87
- title: 'Sem dados',
88
- },
89
- modal: {
90
- ...defaultLanguage.fileArea.modal,
91
- descriptionUpload: 'Arraste e solte os arquivos aqui ou',
92
- chooseFile: 'Escolha um arquivo',
93
- uploadFile: 'Enviar um arquivo',
94
- deleteFileTitle: 'Deletar um arquivo',
95
- deleteFile: 'Importante! Ao deletar esse arquivo você perderá todas as informações dele e não terá como recuperá-las.'
96
- },
97
- },
98
- buttons: {
99
- ...defaultLanguage.buttons,
100
- cancel: 'Cancelar',
101
- send: 'Enviar',
102
- delete: 'Excluir',
103
- test: 'Testar',
104
- },
105
- testArea: {
106
- ...defaultLanguage.testArea,
107
- description: 'Digite uma frase para testar a inteligência artificial.',
108
- typeSentence: 'Digite uma frase',
109
- selectPersona: 'Selecione uma Persona',
110
- selectPresset: 'Selecione uma predefinição',
111
- emptyState: {
112
- ...defaultLanguage.testArea.emptyState,
113
- title: 'Sem dados para análise',
114
- description: 'Faça uma pesquisa, clique no botão "Teste".',
115
- },
116
- },
117
- toast: {
118
- deleteFile: {
119
- success: {
120
- title: 'Sucesso',
121
- description: 'Arquivo deletado com sucesso!'
122
- },
123
- fail: {
124
- title: 'Falha',
125
- description: 'Erro ao deletar o arquivo!'
126
- }
127
- },
128
- uploadFile: {
129
- success: {
130
- title: 'Sucesso',
131
- description: 'Arquivo enviado com sucesso!'
132
- },
133
- fail: {
134
- title: 'Falha',
135
- description: 'Erro ao enviar o arquivo!'
136
- }
137
- },
138
- Test: {
139
- fail: {
140
- title: 'Falha',
141
- description: 'Erro ao testar a Le-IA'
142
- }
143
- }
144
- }
145
- },
146
- es: {
147
- ...defaultLanguage,
148
- files: 'Archivos',
149
- test: 'Prueba',
150
- fileArea: {
151
- ...defaultLanguage.fileArea,
152
- fileName: 'Nombre del archivo',
153
- presset: 'Presset',
154
- actions: 'Acciones',
155
- search: 'Buscar',
156
- fileUpload: 'Carga de archivos',
157
- emptyState: {
158
- ...defaultLanguage.fileArea.emptyState,
159
- title: 'Sin datos',
160
- },
161
- modal: {
162
- ...defaultLanguage.fileArea.modal,
163
- descriptionUpload: 'Arrastre y suelte los archivos aquí o',
164
- chooseFile: 'Elegir un archivo',
165
- deleteFileTitle: 'Eliminar un archivo',
166
- deleteFile: '¡Importante! Al borrar este archivo perderás toda la información contenida en él y no podrás recuperarla.'
167
- },
168
- },
169
- buttons: {
170
- ...defaultLanguage.buttons,
171
- cancel: 'Cancelar',
172
- send: 'Enviar',
173
- delete: 'Eliminar',
174
- test: 'Probar',
175
- },
176
- testArea: {
177
- ...defaultLanguage.testArea,
178
- description: 'bla bla bla bla bla',
179
- typeSentence: 'Escribe una oración',
180
- selectPersona: 'Seleccionar una Persona',
181
- selectPresset: 'Seleccionar una configuración preestablecida',
182
- emptyState: {
183
- ...defaultLanguage.testArea.emptyState,
184
- title: 'Sin datos para el análisis',
185
- description: 'Realiza una búsqueda, haz clic en el botón "Prueba".',
186
- },
187
- },
188
- toast: {
189
- deleteFile: {
190
- success: {
191
- title: 'Éxito',
192
- description: '¡Archivo eliminado correctamente!'
193
- },
194
- fail: {
195
- title: 'Fallo',
196
- description: 'Error al eliminar el archivo!'
197
- }
198
- },
199
- uploadFile: {
200
- success: {
201
- title: 'Éxito',
202
- description: '¡Archivo subido correctamente!'
203
- },
204
- fail: {
205
- title: 'Fallo',
206
- description: 'Error al subir el archivo!'
207
- }
208
- },
209
- Test: {
210
- fail: {
211
- title: 'Fallo',
212
- description: 'Error al probar Le-IA'
213
- }
214
- }
215
- }
216
- },
217
- };
218
-
219
- return languages[language] || defaultLanguage;
220
- };
7
+ switch (language) {
8
+ case 'en':
9
+ return enTranslation;
10
+ case 'pt-br':
11
+ return ptTranslation;
12
+ case 'es':
13
+ return esTranslation;
14
+ default:
15
+ return enTranslation;
16
+ }
17
+ };
@@ -0,0 +1,69 @@
1
+ import { Language } from "../../interface/Language";
2
+
3
+ export const enTranslation: Language = {
4
+ files: 'Files',
5
+ test: 'Test',
6
+ fileArea: {
7
+ description: 'Manage your files with ease! Add new ones and delete old ones as desired.',
8
+ fileName: 'File name',
9
+ presset: 'Presset',
10
+ actions: 'Actions',
11
+ search: 'Search',
12
+ fileUpload: 'File upload',
13
+ emptyState: {
14
+ title: 'No data',
15
+ description: 'No files uploaded yet. Start by adding your documents now!',
16
+ },
17
+ modal: {
18
+ descriptionUpload: 'Drag and drop files here or',
19
+ chooseFile: 'Choose a file',
20
+ uploadFile: 'Upload a file',
21
+ deleteFileTitle: 'Delete a file',
22
+ deleteFile: 'Important! By deleting this file, you will lose all its information and will not be able to recover it.'
23
+ },
24
+ },
25
+ buttons: {
26
+ cancel: 'Cancel',
27
+ send: 'Send',
28
+ delete: 'Delete',
29
+ test: 'Test',
30
+ },
31
+ testArea: {
32
+ description: 'bla bla bla bla bla',
33
+ typeSentence: 'Type a sentence',
34
+ selectPersona: 'Select a Persona',
35
+ selectPresset: 'Select a presset',
36
+ emptyState: {
37
+ title: 'No data for analysis',
38
+ description: 'Do a search, click the "Test" button.',
39
+ },
40
+ },
41
+ toast: {
42
+ deleteFile: {
43
+ success: {
44
+ title: 'Success',
45
+ description: 'File deleted successfully!'
46
+ },
47
+ fail: {
48
+ title: 'Failure',
49
+ description: 'Error deleting the file!'
50
+ }
51
+ },
52
+ uploadFile: {
53
+ success: {
54
+ title: 'Success',
55
+ description: 'File uploaded successfully!'
56
+ },
57
+ fail: {
58
+ title: 'Failure',
59
+ description: 'Error uploading the file!'
60
+ }
61
+ },
62
+ Test: {
63
+ fail: {
64
+ title: 'Failure',
65
+ description: 'Error testing Le-IA'
66
+ }
67
+ }
68
+ }
69
+ };
@@ -0,0 +1,69 @@
1
+ import { Language } from "../../interface/Language";
2
+
3
+ export const esTranslation: Language = {
4
+ files: 'Archivos',
5
+ test: 'Prueba',
6
+ fileArea: {
7
+ description: '¡Administre sus archivos fácilmente! Agregue nuevos y elimine los antiguos según desee.',
8
+ fileName: 'Nombre del archivo',
9
+ presset: 'Preconfiguración',
10
+ actions: 'Acciones',
11
+ search: 'Buscar',
12
+ fileUpload: 'Subir archivo',
13
+ emptyState: {
14
+ title: 'Sin datos',
15
+ description: 'Aún no se han subido archivos. ¡Comience agregando sus documentos ahora!',
16
+ },
17
+ modal: {
18
+ descriptionUpload: 'Arrastre y suelte los archivos aquí o',
19
+ chooseFile: 'Elegir un archivo',
20
+ uploadFile: 'Subir un archivo',
21
+ deleteFileTitle: 'Eliminar un archivo',
22
+ deleteFile: '¡Importante! Al eliminar este archivo, perderá toda su información y no podrá recuperarla.'
23
+ },
24
+ },
25
+ buttons: {
26
+ cancel: 'Cancelar',
27
+ send: 'Enviar',
28
+ delete: 'Eliminar',
29
+ test: 'Prueba',
30
+ },
31
+ testArea: {
32
+ description: 'bla bla bla bla bla',
33
+ typeSentence: 'Escribe una oración',
34
+ selectPersona: 'Seleccionar una Persona',
35
+ selectPresset: 'Seleccionar una preconfiguración',
36
+ emptyState: {
37
+ title: 'Sin datos para el análisis',
38
+ description: 'Realice una búsqueda, haga clic en el botón "Prueba".',
39
+ },
40
+ },
41
+ toast: {
42
+ deleteFile: {
43
+ success: {
44
+ title: 'Éxito',
45
+ description: '¡Archivo eliminado correctamente!'
46
+ },
47
+ fail: {
48
+ title: 'Error',
49
+ description: 'Error al eliminar el archivo!'
50
+ }
51
+ },
52
+ uploadFile: {
53
+ success: {
54
+ title: 'Éxito',
55
+ description: '¡Archivo subido correctamente!'
56
+ },
57
+ fail: {
58
+ title: 'Error',
59
+ description: 'Error al subir el archivo!'
60
+ }
61
+ },
62
+ Test: {
63
+ fail: {
64
+ title: 'Error',
65
+ description: 'Error al probar Le-IA'
66
+ }
67
+ }
68
+ }
69
+ };