lsoft-ui 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +82 -0
- package/dist/components/Accordion/CustomAccordionGroup.d.ts +10 -0
- package/dist/components/Accordion/CustomAccordionGroup.js +20 -0
- package/dist/components/Accordion/CustomAccordionItem.d.ts +12 -0
- package/dist/components/Accordion/CustomAccordionItem.js +5 -0
- package/dist/components/CustomAlertDialog.d.ts +8 -0
- package/dist/components/CustomAlertDialog.js +18 -0
- package/dist/components/CustomAutoComplete.d.ts +35 -0
- package/dist/components/CustomAutoComplete.js +141 -0
- package/dist/components/CustomBadge.d.ts +9 -0
- package/dist/components/CustomBadge.js +25 -0
- package/dist/components/CustomButton.d.ts +16 -0
- package/dist/components/CustomButton.js +18 -0
- package/dist/components/CustomCard.d.ts +11 -0
- package/dist/components/CustomCard.js +20 -0
- package/dist/components/CustomCheckBox.d.ts +12 -0
- package/dist/components/CustomCheckBox.js +26 -0
- package/dist/components/CustomCheckboxGroup.d.ts +21 -0
- package/dist/components/CustomCheckboxGroup.js +28 -0
- package/dist/components/CustomDrawer.d.ts +11 -0
- package/dist/components/CustomDrawer.js +36 -0
- package/dist/components/CustomIconButton.d.ts +7 -0
- package/dist/components/CustomIconButton.js +19 -0
- package/dist/components/CustomInput.d.ts +19 -0
- package/dist/components/CustomInput.js +32 -0
- package/dist/components/CustomInputNumber.d.ts +17 -0
- package/dist/components/CustomInputNumber.js +23 -0
- package/dist/components/CustomList.d.ts +22 -0
- package/dist/components/CustomList.js +27 -0
- package/dist/components/CustomLoadingCenterPage.d.ts +6 -0
- package/dist/components/CustomLoadingCenterPage.js +5 -0
- package/dist/components/CustomModal.d.ts +19 -0
- package/dist/components/CustomModal.js +83 -0
- package/dist/components/CustomModalNfe.d.ts +34 -0
- package/dist/components/CustomModalNfe.js +86 -0
- package/dist/components/CustomMultSelect.d.ts +28 -0
- package/dist/components/CustomMultSelect.js +51 -0
- package/dist/components/CustomMultipleInputs.d.ts +36 -0
- package/dist/components/CustomMultipleInputs.js +91 -0
- package/dist/components/CustomPopover.d.ts +21 -0
- package/dist/components/CustomPopover.js +19 -0
- package/dist/components/CustomRadioGroup.d.ts +32 -0
- package/dist/components/CustomRadioGroup.js +37 -0
- package/dist/components/CustomSelect.d.ts +20 -0
- package/dist/components/CustomSelect.js +25 -0
- package/dist/components/CustomSkeleton.d.ts +9 -0
- package/dist/components/CustomSkeleton.js +17 -0
- package/dist/components/CustomSwitch.d.ts +20 -0
- package/dist/components/CustomSwitch.js +15 -0
- package/dist/components/CustomTable.d.ts +51 -0
- package/dist/components/CustomTable.js +307 -0
- package/dist/components/CustomTabs.d.ts +27 -0
- package/dist/components/CustomTabs.js +100 -0
- package/dist/components/CustomTextarea.d.ts +14 -0
- package/dist/components/CustomTextarea.js +35 -0
- package/dist/components/CustomToast.d.ts +10 -0
- package/dist/components/CustomToast.js +6 -0
- package/dist/components/DatePicker/CustomDatePicker.d.ts +24 -0
- package/dist/components/DatePicker/CustomDatePicker.js +628 -0
- package/dist/components/Pagination/CustomPagination.d.ts +50 -0
- package/dist/components/Pagination/CustomPagination.js +159 -0
- package/dist/components/ThemeToggle.d.ts +1 -0
- package/dist/components/ThemeToggle.js +30 -0
- package/dist/components/index.d.ts +30 -0
- package/dist/components/index.js +30 -0
- package/dist/contexts/ThemeContext.d.ts +18 -0
- package/dist/contexts/ThemeContext.js +34 -0
- package/dist/examples/CodeViewer.d.ts +8 -0
- package/dist/examples/CodeViewer.js +7 -0
- package/dist/examples/FormikExample.d.ts +2 -0
- package/dist/examples/FormikExample.js +199 -0
- package/dist/examples/NumberInputExample.d.ts +2 -0
- package/dist/examples/NumberInputExample.js +198 -0
- package/dist/examples/ReactHookFormExample.d.ts +2 -0
- package/dist/examples/ReactHookFormExample.js +217 -0
- package/dist/examples/SimpleFormExample.d.ts +2 -0
- package/dist/examples/SimpleFormExample.js +216 -0
- package/dist/examples/TabsExample.d.ts +2 -0
- package/dist/examples/TabsExample.js +182 -0
- package/dist/examples/index.d.ts +6 -0
- package/dist/examples/index.js +6 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +32 -0
- package/dist/providers/LsCKFrontProvider.d.ts +6 -0
- package/dist/providers/LsCKFrontProvider.js +7 -0
- package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionGroup.stories.d.ts +13 -0
- package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionGroup.stories.js +787 -0
- package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionItem.stories.d.ts +13 -0
- package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionItem.stories.js +759 -0
- package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckBox.stories.d.ts +15 -0
- package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckBox.stories.js +770 -0
- package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckboxGroup.stories.d.ts +33 -0
- package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckboxGroup.stories.js +2152 -0
- package/dist/stories/Londrisoft/Components/CustomAlertDialog.stories.d.ts +24 -0
- package/dist/stories/Londrisoft/Components/CustomAlertDialog.stories.js +462 -0
- package/dist/stories/Londrisoft/Components/CustomAutoComplete.stories.d.ts +41 -0
- package/dist/stories/Londrisoft/Components/CustomAutoComplete.stories.js +1135 -0
- package/dist/stories/Londrisoft/Components/CustomBadge.stories.d.ts +21 -0
- package/dist/stories/Londrisoft/Components/CustomBadge.stories.js +546 -0
- package/dist/stories/Londrisoft/Components/CustomButton.stories.d.ts +17 -0
- package/dist/stories/Londrisoft/Components/CustomButton.stories.js +1099 -0
- package/dist/stories/Londrisoft/Components/CustomCard.stories.d.ts +17 -0
- package/dist/stories/Londrisoft/Components/CustomCard.stories.js +687 -0
- package/dist/stories/Londrisoft/Components/CustomDrawer.stories.d.ts +24 -0
- package/dist/stories/Londrisoft/Components/CustomDrawer.stories.js +521 -0
- package/dist/stories/Londrisoft/Components/CustomIconButton.stories.d.ts +14 -0
- package/dist/stories/Londrisoft/Components/CustomIconButton.stories.js +1024 -0
- package/dist/stories/Londrisoft/Components/CustomInput.stories.d.ts +15 -0
- package/dist/stories/Londrisoft/Components/CustomInput.stories.js +1094 -0
- package/dist/stories/Londrisoft/Components/CustomInputNumber.stories.d.ts +11 -0
- package/dist/stories/Londrisoft/Components/CustomInputNumber.stories.js +676 -0
- package/dist/stories/Londrisoft/Components/CustomList.stories.d.ts +18 -0
- package/dist/stories/Londrisoft/Components/CustomList.stories.js +1353 -0
- package/dist/stories/Londrisoft/Components/CustomLoadingCenterPage.stories.d.ts +17 -0
- package/dist/stories/Londrisoft/Components/CustomLoadingCenterPage.stories.js +304 -0
- package/dist/stories/Londrisoft/Components/CustomModal.stories.d.ts +19 -0
- package/dist/stories/Londrisoft/Components/CustomModal.stories.js +631 -0
- package/dist/stories/Londrisoft/Components/CustomModalNfe.stories.d.ts +19 -0
- package/dist/stories/Londrisoft/Components/CustomModalNfe.stories.js +589 -0
- package/dist/stories/Londrisoft/Components/CustomMultSelect.stories.d.ts +15 -0
- package/dist/stories/Londrisoft/Components/CustomMultSelect.stories.js +447 -0
- package/dist/stories/Londrisoft/Components/CustomMultipleInputs.stories.d.ts +15 -0
- package/dist/stories/Londrisoft/Components/CustomMultipleInputs.stories.js +1068 -0
- package/dist/stories/Londrisoft/Components/CustomPopover.stories.d.ts +10 -0
- package/dist/stories/Londrisoft/Components/CustomPopover.stories.js +208 -0
- package/dist/stories/Londrisoft/Components/CustomSelect.stories.d.ts +27 -0
- package/dist/stories/Londrisoft/Components/CustomSelect.stories.js +1086 -0
- package/dist/stories/Londrisoft/Components/CustomSkeleton.stories.d.ts +25 -0
- package/dist/stories/Londrisoft/Components/CustomSkeleton.stories.js +534 -0
- package/dist/stories/Londrisoft/Components/CustomSwitch.stories.d.ts +15 -0
- package/dist/stories/Londrisoft/Components/CustomSwitch.stories.js +422 -0
- package/dist/stories/Londrisoft/Components/CustomTable.stories.d.ts +43 -0
- package/dist/stories/Londrisoft/Components/CustomTable.stories.js +2121 -0
- package/dist/stories/Londrisoft/Components/CustomTabs.stories.d.ts +19 -0
- package/dist/stories/Londrisoft/Components/CustomTabs.stories.js +866 -0
- package/dist/stories/Londrisoft/Components/CustomTextarea.stories.d.ts +21 -0
- package/dist/stories/Londrisoft/Components/CustomTextarea.stories.js +408 -0
- package/dist/stories/Londrisoft/Components/CustomToast.stories.d.ts +21 -0
- package/dist/stories/Londrisoft/Components/CustomToast.stories.js +1041 -0
- package/dist/stories/Londrisoft/Components/DatePicker/CustomDatePicker.stories.d.ts +17 -0
- package/dist/stories/Londrisoft/Components/DatePicker/CustomDatePicker.stories.js +653 -0
- package/dist/stories/Londrisoft/Components/Pagination/CustomPagination.stories.d.ts +17 -0
- package/dist/stories/Londrisoft/Components/Pagination/CustomPagination.stories.js +429 -0
- package/dist/stories/Londrisoft/Components/Radio/CustomRadioGroup.stories.d.ts +22 -0
- package/dist/stories/Londrisoft/Components/Radio/CustomRadioGroup.stories.js +766 -0
- package/dist/stories/Londrisoft/Examples/IntegrationExamples.stories.d.ts +16 -0
- package/dist/stories/Londrisoft/Examples/IntegrationExamples.stories.js +514 -0
- package/dist/stories/Londrisoft/Theme/ThemeShowcase.stories.d.ts +5 -0
- package/dist/stories/Londrisoft/Theme/ThemeShowcase.stories.js +112 -0
- package/dist/stories/options.d.ts +13 -0
- package/dist/stories/options.js +124 -0
- package/dist/theme/bime.d.ts +92 -0
- package/dist/theme/bime.js +352 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/theme/index.js +8 -0
- package/dist/theme/waipe.d.ts +102 -0
- package/dist/theme/waipe.js +362 -0
- package/package.json +53 -0
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Accordion } from "@chakra-ui/react";
|
|
3
|
+
import { BACKGROUND_OPTIONS, COLOR_OPTIONS } from "../../../options";
|
|
4
|
+
import { CustomAccordionItem } from "../../../../components/Accordion/CustomAccordionItem";
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "Londrisoft/Components/accordion/Accordion-Item",
|
|
7
|
+
component: CustomAccordionItem,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
args: {
|
|
10
|
+
title: "Título do Accordion",
|
|
11
|
+
label: "Seção",
|
|
12
|
+
children: _jsx(_Fragment, { children: "Conte\u00FAdo do item do accordion." }),
|
|
13
|
+
bgColor: "background.secondary",
|
|
14
|
+
hoverColor: "background.primary",
|
|
15
|
+
expandedColor: "background.brand",
|
|
16
|
+
expandedTextColor: "white",
|
|
17
|
+
},
|
|
18
|
+
argTypes: {
|
|
19
|
+
title: {
|
|
20
|
+
control: "text",
|
|
21
|
+
description: "Título exibido no cabeçalho do item.",
|
|
22
|
+
table: { category: "Content" },
|
|
23
|
+
},
|
|
24
|
+
label: {
|
|
25
|
+
control: "text",
|
|
26
|
+
description: "Texto opcional exibido acima do título.",
|
|
27
|
+
table: { category: "Content" },
|
|
28
|
+
},
|
|
29
|
+
bgColor: {
|
|
30
|
+
control: "select",
|
|
31
|
+
options: BACKGROUND_OPTIONS,
|
|
32
|
+
description: "Cor de fundo padrão do botão.",
|
|
33
|
+
table: { category: "Styling" },
|
|
34
|
+
},
|
|
35
|
+
hoverColor: {
|
|
36
|
+
control: "select",
|
|
37
|
+
options: BACKGROUND_OPTIONS,
|
|
38
|
+
description: "Cor de fundo ao passar o mouse sobre o botão.",
|
|
39
|
+
table: { category: "Styling" },
|
|
40
|
+
},
|
|
41
|
+
expandedColor: {
|
|
42
|
+
control: "select",
|
|
43
|
+
options: BACKGROUND_OPTIONS,
|
|
44
|
+
description: "Cor de fundo quando o item está expandido.",
|
|
45
|
+
table: { category: "Styling" },
|
|
46
|
+
},
|
|
47
|
+
expandedTextColor: {
|
|
48
|
+
control: "select",
|
|
49
|
+
options: COLOR_OPTIONS,
|
|
50
|
+
description: "Cor do texto e do ícone quando expandido.",
|
|
51
|
+
table: { category: "Styling" },
|
|
52
|
+
},
|
|
53
|
+
children: {
|
|
54
|
+
table: { disable: true },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
parameters: {
|
|
58
|
+
docs: {
|
|
59
|
+
description: {
|
|
60
|
+
component: "Item de Accordion customizado, com título, label opcional, cores configuráveis para estados normal, hover e expandido, e conteúdo interno livre.",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
backgrounds: {
|
|
64
|
+
default: "light",
|
|
65
|
+
values: [
|
|
66
|
+
{ name: "light", value: "#ffffff" },
|
|
67
|
+
{ name: "dark", value: "#000000" },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
a11y: {
|
|
71
|
+
element: "button[aria-expanded]",
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
export default meta;
|
|
76
|
+
/** 🎯 Item padrão dentro de um Accordion */
|
|
77
|
+
export const Default = {
|
|
78
|
+
render: (args) => (_jsx(Accordion, { allowMultiple: true, children: _jsx(CustomAccordionItem, Object.assign({}, args)) })),
|
|
79
|
+
parameters: {
|
|
80
|
+
docs: {
|
|
81
|
+
source: {
|
|
82
|
+
code: `
|
|
83
|
+
import React from 'react';
|
|
84
|
+
import { Accordion } from '@chakra-ui/react';
|
|
85
|
+
import { CustomAccordionItem } from './CustomAccordionItem';
|
|
86
|
+
|
|
87
|
+
// Accordion item básico
|
|
88
|
+
const BasicAccordionItem = () => {
|
|
89
|
+
return (
|
|
90
|
+
<Accordion allowMultiple>
|
|
91
|
+
<CustomAccordionItem title="Título do Accordion">
|
|
92
|
+
Conteúdo do item do accordion.
|
|
93
|
+
</CustomAccordionItem>
|
|
94
|
+
</Accordion>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// Accordion item com conteúdo estruturado
|
|
99
|
+
const AccordionItemWithStructuredContent = () => {
|
|
100
|
+
return (
|
|
101
|
+
<Accordion allowMultiple>
|
|
102
|
+
<CustomAccordionItem title="Informações do Usuário">
|
|
103
|
+
<div style={{ padding: '16px' }}>
|
|
104
|
+
<h4>Dados Pessoais</h4>
|
|
105
|
+
<p><strong>Nome:</strong> João Silva</p>
|
|
106
|
+
<p><strong>Email:</strong> joao@email.com</p>
|
|
107
|
+
<p><strong>Telefone:</strong> (11) 99999-9999</p>
|
|
108
|
+
<p><strong>Cargo:</strong> Desenvolvedor</p>
|
|
109
|
+
</div>
|
|
110
|
+
</CustomAccordionItem>
|
|
111
|
+
</Accordion>
|
|
112
|
+
);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Accordion item com lista
|
|
116
|
+
const AccordionItemWithList = () => {
|
|
117
|
+
return (
|
|
118
|
+
<Accordion allowMultiple>
|
|
119
|
+
<CustomAccordionItem title="Configurações do Sistema">
|
|
120
|
+
<div style={{ padding: '16px' }}>
|
|
121
|
+
<h4>Configurações Gerais</h4>
|
|
122
|
+
<ul>
|
|
123
|
+
<li>Idioma: Português (Brasil)</li>
|
|
124
|
+
<li>Fuso horário: GMT-3</li>
|
|
125
|
+
<li>Formato de data: DD/MM/AAAA</li>
|
|
126
|
+
<li>Formato de moeda: R$</li>
|
|
127
|
+
</ul>
|
|
128
|
+
</div>
|
|
129
|
+
</CustomAccordionItem>
|
|
130
|
+
</Accordion>
|
|
131
|
+
);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// Accordion item com formulário
|
|
135
|
+
const AccordionItemWithForm = () => {
|
|
136
|
+
return (
|
|
137
|
+
<Accordion allowMultiple>
|
|
138
|
+
<CustomAccordionItem title="Editar Perfil">
|
|
139
|
+
<div style={{ padding: '16px' }}>
|
|
140
|
+
<form>
|
|
141
|
+
<div style={{ marginBottom: '12px' }}>
|
|
142
|
+
<label>Nome:</label>
|
|
143
|
+
<input type="text" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
144
|
+
</div>
|
|
145
|
+
<div style={{ marginBottom: '12px' }}>
|
|
146
|
+
<label>Email:</label>
|
|
147
|
+
<input type="email" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
148
|
+
</div>
|
|
149
|
+
<div style={{ marginBottom: '12px' }}>
|
|
150
|
+
<label>Telefone:</label>
|
|
151
|
+
<input type="tel" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
152
|
+
</div>
|
|
153
|
+
<button type="submit" style={{ padding: '8px 16px', backgroundColor: '#3182ce', color: 'white', border: 'none', borderRadius: '4px' }}>
|
|
154
|
+
Salvar
|
|
155
|
+
</button>
|
|
156
|
+
</form>
|
|
157
|
+
</div>
|
|
158
|
+
</CustomAccordionItem>
|
|
159
|
+
</Accordion>
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// Accordion item com conteúdo rico
|
|
164
|
+
const AccordionItemWithRichContent = () => {
|
|
165
|
+
return (
|
|
166
|
+
<Accordion allowMultiple>
|
|
167
|
+
<CustomAccordionItem title="Relatório Detalhado">
|
|
168
|
+
<div style={{ padding: '16px' }}>
|
|
169
|
+
<h4>Análise de Performance</h4>
|
|
170
|
+
<div style={{ display: 'flex', gap: '16px', marginBottom: '16px' }}>
|
|
171
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
172
|
+
<strong>Usuários Ativos</strong>
|
|
173
|
+
<p style={{ fontSize: '24px', margin: '8px 0', color: '#3182ce' }}>1,234</p>
|
|
174
|
+
</div>
|
|
175
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
176
|
+
<strong>Taxa de Conversão</strong>
|
|
177
|
+
<p style={{ fontSize: '24px', margin: '8px 0', color: '#38a169' }}>15.7%</p>
|
|
178
|
+
</div>
|
|
179
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
180
|
+
<strong>Receita Mensal</strong>
|
|
181
|
+
<p style={{ fontSize: '24px', margin: '8px 0', color: '#d69e2e' }}>R$ 45.6k</p>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
<p>Este relatório mostra o desempenho do sistema nos últimos 30 dias.</p>
|
|
185
|
+
</div>
|
|
186
|
+
</CustomAccordionItem>
|
|
187
|
+
</Accordion>
|
|
188
|
+
);
|
|
189
|
+
};
|
|
190
|
+
`,
|
|
191
|
+
language: "tsx",
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
/** 🖌️ Com label e cores customizadas */
|
|
197
|
+
export const WithLabelAndCustomColors = {
|
|
198
|
+
args: {
|
|
199
|
+
title: "Accordion Personalizado",
|
|
200
|
+
label: "Informações",
|
|
201
|
+
bgColor: "background.primary",
|
|
202
|
+
hoverColor: "background.secondary",
|
|
203
|
+
expandedColor: "border.primary",
|
|
204
|
+
expandedTextColor: "neutral.800",
|
|
205
|
+
children: _jsx(_Fragment, { children: "Este item tem label e cores customizadas ao expandir." }),
|
|
206
|
+
},
|
|
207
|
+
render: (args) => (_jsx(Accordion, { allowMultiple: true, children: _jsx(CustomAccordionItem, Object.assign({}, args)) })),
|
|
208
|
+
parameters: {
|
|
209
|
+
docs: {
|
|
210
|
+
source: {
|
|
211
|
+
code: `
|
|
212
|
+
import React from 'react';
|
|
213
|
+
import { Accordion } from '@chakra-ui/react';
|
|
214
|
+
import { CustomAccordionItem } from './CustomAccordionItem';
|
|
215
|
+
|
|
216
|
+
// Accordion item com label e cores customizadas
|
|
217
|
+
const AccordionItemWithLabelAndCustomColors = () => {
|
|
218
|
+
return (
|
|
219
|
+
<Accordion allowMultiple>
|
|
220
|
+
<CustomAccordionItem
|
|
221
|
+
title="Accordion Personalizado"
|
|
222
|
+
label="Informações"
|
|
223
|
+
bgColor="background.primary"
|
|
224
|
+
hoverColor="background.secondary"
|
|
225
|
+
expandedColor="border.primary"
|
|
226
|
+
expandedTextColor="neutral.800"
|
|
227
|
+
>
|
|
228
|
+
Este item tem label e cores customizadas ao expandir.
|
|
229
|
+
</CustomAccordionItem>
|
|
230
|
+
</Accordion>
|
|
231
|
+
);
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
// Accordion item com diferentes estilos de cores
|
|
235
|
+
const AccordionItemWithDifferentColorStyles = () => {
|
|
236
|
+
return (
|
|
237
|
+
<Accordion allowMultiple>
|
|
238
|
+
<CustomAccordionItem
|
|
239
|
+
title="Item com Cores Primárias"
|
|
240
|
+
label="Estilo 1"
|
|
241
|
+
bgColor="background.primary"
|
|
242
|
+
hoverColor="background.secondary"
|
|
243
|
+
expandedColor="border.primary"
|
|
244
|
+
expandedTextColor="neutral.800"
|
|
245
|
+
>
|
|
246
|
+
<div style={{ padding: '16px' }}>
|
|
247
|
+
<h4>Conteúdo com Cores Primárias</h4>
|
|
248
|
+
<p>Este item usa as cores primárias do design system.</p>
|
|
249
|
+
</div>
|
|
250
|
+
</CustomAccordionItem>
|
|
251
|
+
|
|
252
|
+
<CustomAccordionItem
|
|
253
|
+
title="Item com Cores Secundárias"
|
|
254
|
+
label="Estilo 2"
|
|
255
|
+
bgColor="background.secondary"
|
|
256
|
+
hoverColor="background.primary"
|
|
257
|
+
expandedColor="background.brand"
|
|
258
|
+
expandedTextColor="white"
|
|
259
|
+
>
|
|
260
|
+
<div style={{ padding: '16px' }}>
|
|
261
|
+
<h4>Conteúdo com Cores Secundárias</h4>
|
|
262
|
+
<p>Este item usa as cores secundárias do design system.</p>
|
|
263
|
+
</div>
|
|
264
|
+
</CustomAccordionItem>
|
|
265
|
+
</Accordion>
|
|
266
|
+
);
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// Accordion item com label informativo
|
|
270
|
+
const AccordionItemWithInformativeLabel = () => {
|
|
271
|
+
return (
|
|
272
|
+
<Accordion allowMultiple>
|
|
273
|
+
<CustomAccordionItem
|
|
274
|
+
title="Configurações Avançadas"
|
|
275
|
+
label="Recomendado para usuários experientes"
|
|
276
|
+
bgColor="background.primary"
|
|
277
|
+
hoverColor="background.secondary"
|
|
278
|
+
expandedColor="border.primary"
|
|
279
|
+
expandedTextColor="neutral.800"
|
|
280
|
+
>
|
|
281
|
+
<div style={{ padding: '16px' }}>
|
|
282
|
+
<h4>Configurações do Sistema</h4>
|
|
283
|
+
<ul>
|
|
284
|
+
<li>Modo desenvolvedor: Desativado</li>
|
|
285
|
+
<li>Logs detalhados: Ativado</li>
|
|
286
|
+
<li>Cache avançado: Configurado</li>
|
|
287
|
+
<li>Otimizações: Habilitadas</li>
|
|
288
|
+
</ul>
|
|
289
|
+
</div>
|
|
290
|
+
</CustomAccordionItem>
|
|
291
|
+
</Accordion>
|
|
292
|
+
);
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// Accordion item com label de status
|
|
296
|
+
const AccordionItemWithStatusLabel = () => {
|
|
297
|
+
return (
|
|
298
|
+
<Accordion allowMultiple>
|
|
299
|
+
<CustomAccordionItem
|
|
300
|
+
title="Relatório de Vendas"
|
|
301
|
+
label="Atualizado há 2 horas"
|
|
302
|
+
bgColor="background.primary"
|
|
303
|
+
hoverColor="background.secondary"
|
|
304
|
+
expandedColor="border.primary"
|
|
305
|
+
expandedTextColor="neutral.800"
|
|
306
|
+
>
|
|
307
|
+
<div style={{ padding: '16px' }}>
|
|
308
|
+
<h4>Dados de Vendas</h4>
|
|
309
|
+
<div style={{ display: 'flex', gap: '16px', marginBottom: '16px' }}>
|
|
310
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
311
|
+
<strong>Vendas Hoje</strong>
|
|
312
|
+
<p style={{ fontSize: '20px', margin: '8px 0', color: '#3182ce' }}>R$ 12.450</p>
|
|
313
|
+
</div>
|
|
314
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
315
|
+
<strong>Meta Mensal</strong>
|
|
316
|
+
<p style={{ fontSize: '20px', margin: '8px 0', color: '#38a169' }}>85%</p>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
</CustomAccordionItem>
|
|
321
|
+
</Accordion>
|
|
322
|
+
);
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
// Accordion item com label de prioridade
|
|
326
|
+
const AccordionItemWithPriorityLabel = () => {
|
|
327
|
+
return (
|
|
328
|
+
<Accordion allowMultiple>
|
|
329
|
+
<CustomAccordionItem
|
|
330
|
+
title="Tarefa Crítica"
|
|
331
|
+
label="Alta Prioridade"
|
|
332
|
+
bgColor="background.primary"
|
|
333
|
+
hoverColor="background.secondary"
|
|
334
|
+
expandedColor="border.primary"
|
|
335
|
+
expandedTextColor="neutral.800"
|
|
336
|
+
>
|
|
337
|
+
<div style={{ padding: '16px' }}>
|
|
338
|
+
<h4>Detalhes da Tarefa</h4>
|
|
339
|
+
<p><strong>Descrição:</strong> Corrigir bug crítico no sistema de pagamento</p>
|
|
340
|
+
<p><strong>Responsável:</strong> João Silva</p>
|
|
341
|
+
<p><strong>Prazo:</strong> Hoje às 18:00</p>
|
|
342
|
+
<p><strong>Status:</strong> Em andamento</p>
|
|
343
|
+
</div>
|
|
344
|
+
</CustomAccordionItem>
|
|
345
|
+
</Accordion>
|
|
346
|
+
);
|
|
347
|
+
};
|
|
348
|
+
`,
|
|
349
|
+
language: "tsx",
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
/** 🚫 Sem label */
|
|
355
|
+
export const WithoutLabel = {
|
|
356
|
+
args: {
|
|
357
|
+
title: "Sem Label",
|
|
358
|
+
label: undefined,
|
|
359
|
+
bgColor: "background.brand",
|
|
360
|
+
hoverColor: "background.primary",
|
|
361
|
+
expandedColor: "border.primary",
|
|
362
|
+
expandedTextColor: "white",
|
|
363
|
+
children: _jsx(_Fragment, { children: "Accordion sem label e com cor de fundo diferente." }),
|
|
364
|
+
},
|
|
365
|
+
render: (args) => (_jsx(Accordion, { allowMultiple: true, children: _jsx(CustomAccordionItem, Object.assign({}, args)) })),
|
|
366
|
+
parameters: {
|
|
367
|
+
docs: {
|
|
368
|
+
source: {
|
|
369
|
+
code: `
|
|
370
|
+
import React from 'react';
|
|
371
|
+
import { Accordion } from '@chakra-ui/react';
|
|
372
|
+
import { CustomAccordionItem } from './CustomAccordionItem';
|
|
373
|
+
|
|
374
|
+
// Accordion item sem label
|
|
375
|
+
const AccordionItemWithoutLabel = () => {
|
|
376
|
+
return (
|
|
377
|
+
<Accordion allowMultiple>
|
|
378
|
+
<CustomAccordionItem
|
|
379
|
+
title="Sem Label"
|
|
380
|
+
label={undefined}
|
|
381
|
+
bgColor="background.brand"
|
|
382
|
+
hoverColor="background.primary"
|
|
383
|
+
expandedColor="border.primary"
|
|
384
|
+
expandedTextColor="white"
|
|
385
|
+
>
|
|
386
|
+
Accordion sem label e com cor de fundo diferente.
|
|
387
|
+
</CustomAccordionItem>
|
|
388
|
+
</Accordion>
|
|
389
|
+
);
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
// Accordion items com e sem label
|
|
393
|
+
const AccordionItemsWithAndWithoutLabel = () => {
|
|
394
|
+
return (
|
|
395
|
+
<Accordion allowMultiple>
|
|
396
|
+
<CustomAccordionItem
|
|
397
|
+
title="Item com Label"
|
|
398
|
+
label="Informações"
|
|
399
|
+
bgColor="background.primary"
|
|
400
|
+
hoverColor="background.secondary"
|
|
401
|
+
expandedColor="border.primary"
|
|
402
|
+
expandedTextColor="neutral.800"
|
|
403
|
+
>
|
|
404
|
+
<div style={{ padding: '16px' }}>
|
|
405
|
+
<h4>Item com Label</h4>
|
|
406
|
+
<p>Este item possui um label informativo acima do título.</p>
|
|
407
|
+
</div>
|
|
408
|
+
</CustomAccordionItem>
|
|
409
|
+
|
|
410
|
+
<CustomAccordionItem
|
|
411
|
+
title="Item sem Label"
|
|
412
|
+
label={undefined}
|
|
413
|
+
bgColor="background.brand"
|
|
414
|
+
hoverColor="background.primary"
|
|
415
|
+
expandedColor="border.primary"
|
|
416
|
+
expandedTextColor="white"
|
|
417
|
+
>
|
|
418
|
+
<div style={{ padding: '16px' }}>
|
|
419
|
+
<h4>Item sem Label</h4>
|
|
420
|
+
<p>Este item não possui label, apenas o título.</p>
|
|
421
|
+
</div>
|
|
422
|
+
</CustomAccordionItem>
|
|
423
|
+
</Accordion>
|
|
424
|
+
);
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
// Accordion item simples sem label
|
|
428
|
+
const SimpleAccordionItemWithoutLabel = () => {
|
|
429
|
+
return (
|
|
430
|
+
<Accordion allowMultiple>
|
|
431
|
+
<CustomAccordionItem
|
|
432
|
+
title="Configurações"
|
|
433
|
+
bgColor="background.brand"
|
|
434
|
+
hoverColor="background.primary"
|
|
435
|
+
expandedColor="border.primary"
|
|
436
|
+
expandedTextColor="white"
|
|
437
|
+
>
|
|
438
|
+
<div style={{ padding: '16px' }}>
|
|
439
|
+
<h4>Configurações do Sistema</h4>
|
|
440
|
+
<ul>
|
|
441
|
+
<li>Idioma: Português</li>
|
|
442
|
+
<li>Fuso horário: GMT-3</li>
|
|
443
|
+
<li>Notificações: Ativadas</li>
|
|
444
|
+
<li>Modo escuro: Desativado</li>
|
|
445
|
+
</ul>
|
|
446
|
+
</div>
|
|
447
|
+
</CustomAccordionItem>
|
|
448
|
+
</Accordion>
|
|
449
|
+
);
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
// Accordion item sem label com cores diferentes
|
|
453
|
+
const AccordionItemWithoutLabelWithDifferentColors = () => {
|
|
454
|
+
return (
|
|
455
|
+
<Accordion allowMultiple>
|
|
456
|
+
<CustomAccordionItem
|
|
457
|
+
title="Relatório Simples"
|
|
458
|
+
bgColor="background.secondary"
|
|
459
|
+
hoverColor="background.primary"
|
|
460
|
+
expandedColor="background.brand"
|
|
461
|
+
expandedTextColor="white"
|
|
462
|
+
>
|
|
463
|
+
<div style={{ padding: '16px' }}>
|
|
464
|
+
<h4>Dados do Relatório</h4>
|
|
465
|
+
<p><strong>Total de vendas:</strong> R$ 45.678</p>
|
|
466
|
+
<p><strong>Número de pedidos:</strong> 234</p>
|
|
467
|
+
<p><strong>Taxa de conversão:</strong> 12.5%</p>
|
|
468
|
+
</div>
|
|
469
|
+
</CustomAccordionItem>
|
|
470
|
+
</Accordion>
|
|
471
|
+
);
|
|
472
|
+
};
|
|
473
|
+
|
|
474
|
+
// Accordion item sem label para formulário
|
|
475
|
+
const AccordionItemWithoutLabelForForm = () => {
|
|
476
|
+
return (
|
|
477
|
+
<Accordion allowMultiple>
|
|
478
|
+
<CustomAccordionItem
|
|
479
|
+
title="Editar Dados"
|
|
480
|
+
bgColor="background.brand"
|
|
481
|
+
hoverColor="background.primary"
|
|
482
|
+
expandedColor="border.primary"
|
|
483
|
+
expandedTextColor="white"
|
|
484
|
+
>
|
|
485
|
+
<div style={{ padding: '16px' }}>
|
|
486
|
+
<form>
|
|
487
|
+
<div style={{ marginBottom: '12px' }}>
|
|
488
|
+
<label>Nome:</label>
|
|
489
|
+
<input type="text" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
490
|
+
</div>
|
|
491
|
+
<div style={{ marginBottom: '12px' }}>
|
|
492
|
+
<label>Email:</label>
|
|
493
|
+
<input type="email" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
494
|
+
</div>
|
|
495
|
+
<div style={{ marginBottom: '12px' }}>
|
|
496
|
+
<label>Telefone:</label>
|
|
497
|
+
<input type="tel" style={{ width: '100%', padding: '8px', marginTop: '4px' }} />
|
|
498
|
+
</div>
|
|
499
|
+
<button type="submit" style={{ padding: '8px 16px', backgroundColor: '#3182ce', color: 'white', border: 'none', borderRadius: '4px' }}>
|
|
500
|
+
Salvar Alterações
|
|
501
|
+
</button>
|
|
502
|
+
</form>
|
|
503
|
+
</div>
|
|
504
|
+
</CustomAccordionItem>
|
|
505
|
+
</Accordion>
|
|
506
|
+
);
|
|
507
|
+
};
|
|
508
|
+
`,
|
|
509
|
+
language: "tsx",
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
},
|
|
513
|
+
};
|
|
514
|
+
/** 📜 Conteúdo longo */
|
|
515
|
+
export const LongContent = {
|
|
516
|
+
args: {
|
|
517
|
+
title: "Conteúdo Longo",
|
|
518
|
+
label: "Detalhes",
|
|
519
|
+
children: (_jsx(_Fragment, { children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." })),
|
|
520
|
+
bgColor: "background.secondary",
|
|
521
|
+
hoverColor: "background.primary",
|
|
522
|
+
expandedColor: "background.brand",
|
|
523
|
+
expandedTextColor: "white",
|
|
524
|
+
},
|
|
525
|
+
render: (args) => (_jsx(Accordion, { allowMultiple: true, children: _jsx(CustomAccordionItem, Object.assign({}, args)) })),
|
|
526
|
+
parameters: {
|
|
527
|
+
docs: {
|
|
528
|
+
source: {
|
|
529
|
+
code: `
|
|
530
|
+
import React from 'react';
|
|
531
|
+
import { Accordion } from '@chakra-ui/react';
|
|
532
|
+
import { CustomAccordionItem } from './CustomAccordionItem';
|
|
533
|
+
|
|
534
|
+
// Accordion item com conteúdo longo
|
|
535
|
+
const AccordionItemWithLongContent = () => {
|
|
536
|
+
return (
|
|
537
|
+
<Accordion allowMultiple>
|
|
538
|
+
<CustomAccordionItem
|
|
539
|
+
title="Conteúdo Longo"
|
|
540
|
+
label="Detalhes"
|
|
541
|
+
bgColor="background.secondary"
|
|
542
|
+
hoverColor="background.primary"
|
|
543
|
+
expandedColor="background.brand"
|
|
544
|
+
expandedTextColor="white"
|
|
545
|
+
>
|
|
546
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod
|
|
547
|
+
tempor incididunt ut labore et dolore magna aliqua.
|
|
548
|
+
</CustomAccordionItem>
|
|
549
|
+
</Accordion>
|
|
550
|
+
);
|
|
551
|
+
};
|
|
552
|
+
|
|
553
|
+
// Accordion item com artigo longo
|
|
554
|
+
const AccordionItemWithLongArticle = () => {
|
|
555
|
+
return (
|
|
556
|
+
<Accordion allowMultiple>
|
|
557
|
+
<CustomAccordionItem
|
|
558
|
+
title="Artigo Completo"
|
|
559
|
+
label="Leitura"
|
|
560
|
+
bgColor="background.secondary"
|
|
561
|
+
hoverColor="background.primary"
|
|
562
|
+
expandedColor="background.brand"
|
|
563
|
+
expandedTextColor="white"
|
|
564
|
+
>
|
|
565
|
+
<div style={{ padding: '16px' }}>
|
|
566
|
+
<h4>Introdução</h4>
|
|
567
|
+
<p>
|
|
568
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod
|
|
569
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
|
570
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
|
571
|
+
</p>
|
|
572
|
+
|
|
573
|
+
<h4>Desenvolvimento</h4>
|
|
574
|
+
<p>
|
|
575
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
|
|
576
|
+
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
|
|
577
|
+
sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
578
|
+
</p>
|
|
579
|
+
|
|
580
|
+
<h4>Conclusão</h4>
|
|
581
|
+
<p>
|
|
582
|
+
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
|
|
583
|
+
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
|
|
584
|
+
veritatis et quasi architecto beatae vitae dicta sunt explicabo.
|
|
585
|
+
</p>
|
|
586
|
+
</div>
|
|
587
|
+
</CustomAccordionItem>
|
|
588
|
+
</Accordion>
|
|
589
|
+
);
|
|
590
|
+
};
|
|
591
|
+
|
|
592
|
+
// Accordion item com documentação técnica
|
|
593
|
+
const AccordionItemWithTechnicalDocumentation = () => {
|
|
594
|
+
return (
|
|
595
|
+
<Accordion allowMultiple>
|
|
596
|
+
<CustomAccordionItem
|
|
597
|
+
title="Documentação da API"
|
|
598
|
+
label="Técnico"
|
|
599
|
+
bgColor="background.secondary"
|
|
600
|
+
hoverColor="background.primary"
|
|
601
|
+
expandedColor="background.brand"
|
|
602
|
+
expandedTextColor="white"
|
|
603
|
+
>
|
|
604
|
+
<div style={{ padding: '16px' }}>
|
|
605
|
+
<h4>Visão Geral</h4>
|
|
606
|
+
<p>
|
|
607
|
+
Esta API fornece endpoints para gerenciamento de usuários, produtos e pedidos.
|
|
608
|
+
Todos os endpoints retornam respostas em formato JSON e utilizam autenticação
|
|
609
|
+
baseada em tokens JWT.
|
|
610
|
+
</p>
|
|
611
|
+
|
|
612
|
+
<h4>Autenticação</h4>
|
|
613
|
+
<p>
|
|
614
|
+
Para acessar os endpoints protegidos, inclua o token JWT no header Authorization:
|
|
615
|
+
<code>Authorization: Bearer <seu-token></code>
|
|
616
|
+
</p>
|
|
617
|
+
|
|
618
|
+
<h4>Endpoints Principais</h4>
|
|
619
|
+
<ul>
|
|
620
|
+
<li><strong>GET /users</strong> - Lista todos os usuários</li>
|
|
621
|
+
<li><strong>POST /users</strong> - Cria um novo usuário</li>
|
|
622
|
+
<li><strong>PUT /users/:id</strong> - Atualiza um usuário</li>
|
|
623
|
+
<li><strong>DELETE /users/:id</strong> - Remove um usuário</li>
|
|
624
|
+
</ul>
|
|
625
|
+
|
|
626
|
+
<h4>Códigos de Status</h4>
|
|
627
|
+
<ul>
|
|
628
|
+
<li><strong>200</strong> - Sucesso</li>
|
|
629
|
+
<li><strong>201</strong> - Criado com sucesso</li>
|
|
630
|
+
<li><strong>400</strong> - Requisição inválida</li>
|
|
631
|
+
<li><strong>401</strong> - Não autorizado</li>
|
|
632
|
+
<li><strong>404</strong> - Não encontrado</li>
|
|
633
|
+
<li><strong>500</strong> - Erro interno do servidor</li>
|
|
634
|
+
</ul>
|
|
635
|
+
</div>
|
|
636
|
+
</CustomAccordionItem>
|
|
637
|
+
</Accordion>
|
|
638
|
+
);
|
|
639
|
+
};
|
|
640
|
+
|
|
641
|
+
// Accordion item com relatório detalhado
|
|
642
|
+
const AccordionItemWithDetailedReport = () => {
|
|
643
|
+
return (
|
|
644
|
+
<Accordion allowMultiple>
|
|
645
|
+
<CustomAccordionItem
|
|
646
|
+
title="Relatório Anual 2024"
|
|
647
|
+
label="Completo"
|
|
648
|
+
bgColor="background.secondary"
|
|
649
|
+
hoverColor="background.primary"
|
|
650
|
+
expandedColor="background.brand"
|
|
651
|
+
expandedTextColor="white"
|
|
652
|
+
>
|
|
653
|
+
<div style={{ padding: '16px' }}>
|
|
654
|
+
<h4>Resumo Executivo</h4>
|
|
655
|
+
<p>
|
|
656
|
+
O ano de 2024 foi marcado por crescimento significativo em todas as áreas
|
|
657
|
+
do negócio. A empresa alcançou metas importantes e expandiu sua presença
|
|
658
|
+
no mercado nacional e internacional.
|
|
659
|
+
</p>
|
|
660
|
+
|
|
661
|
+
<h4>Resultados Financeiros</h4>
|
|
662
|
+
<div style={{ display: 'flex', gap: '16px', marginBottom: '16px' }}>
|
|
663
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
664
|
+
<strong>Receita Total</strong>
|
|
665
|
+
<p style={{ fontSize: '20px', margin: '8px 0', color: '#3182ce' }}>R$ 2.5M</p>
|
|
666
|
+
</div>
|
|
667
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
668
|
+
<strong>Crescimento</strong>
|
|
669
|
+
<p style={{ fontSize: '20px', margin: '8px 0', color: '#38a169' }}>+45%</p>
|
|
670
|
+
</div>
|
|
671
|
+
<div style={{ flex: 1, padding: '12px', backgroundColor: '#f7fafc', borderRadius: '6px' }}>
|
|
672
|
+
<strong>Lucro Líquido</strong>
|
|
673
|
+
<p style={{ fontSize: '20px', margin: '8px 0', color: '#d69e2e' }}>R$ 450k</p>
|
|
674
|
+
</div>
|
|
675
|
+
</div>
|
|
676
|
+
|
|
677
|
+
<h4>Principais Conquistas</h4>
|
|
678
|
+
<ul>
|
|
679
|
+
<li>Expansão para 3 novos mercados</li>
|
|
680
|
+
<li>Lançamento de 5 novos produtos</li>
|
|
681
|
+
<li>Aumento de 60% na base de clientes</li>
|
|
682
|
+
<li>Melhoria de 30% na satisfação do cliente</li>
|
|
683
|
+
<li>Redução de 25% nos custos operacionais</li>
|
|
684
|
+
</ul>
|
|
685
|
+
|
|
686
|
+
<h4>Desafios e Oportunidades</h4>
|
|
687
|
+
<p>
|
|
688
|
+
Apesar dos resultados positivos, identificamos desafios importantes
|
|
689
|
+
que precisam ser abordados em 2025, incluindo a necessidade de
|
|
690
|
+
modernização da infraestrutura tecnológica e expansão da equipe.
|
|
691
|
+
</p>
|
|
692
|
+
</div>
|
|
693
|
+
</CustomAccordionItem>
|
|
694
|
+
</Accordion>
|
|
695
|
+
);
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
// Accordion item com tutorial passo a passo
|
|
699
|
+
const AccordionItemWithStepByStepTutorial = () => {
|
|
700
|
+
return (
|
|
701
|
+
<Accordion allowMultiple>
|
|
702
|
+
<CustomAccordionItem
|
|
703
|
+
title="Tutorial: Configuração Inicial"
|
|
704
|
+
label="Guia Completo"
|
|
705
|
+
bgColor="background.secondary"
|
|
706
|
+
hoverColor="background.primary"
|
|
707
|
+
expandedColor="background.brand"
|
|
708
|
+
expandedTextColor="white"
|
|
709
|
+
>
|
|
710
|
+
<div style={{ padding: '16px' }}>
|
|
711
|
+
<h4>Passo 1: Instalação</h4>
|
|
712
|
+
<p>
|
|
713
|
+
Primeiro, certifique-se de ter o Node.js instalado em sua máquina.
|
|
714
|
+
Execute o comando: <code>npm install -g create-react-app</code>
|
|
715
|
+
</p>
|
|
716
|
+
|
|
717
|
+
<h4>Passo 2: Criação do Projeto</h4>
|
|
718
|
+
<p>
|
|
719
|
+
Crie um novo projeto React: <code>npx create-react-app meu-projeto</code>
|
|
720
|
+
Navegue para o diretório: <code>cd meu-projeto</code>
|
|
721
|
+
</p>
|
|
722
|
+
|
|
723
|
+
<h4>Passo 3: Instalação de Dependências</h4>
|
|
724
|
+
<p>
|
|
725
|
+
Instale as dependências necessárias:
|
|
726
|
+
<code>npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion</code>
|
|
727
|
+
</p>
|
|
728
|
+
|
|
729
|
+
<h4>Passo 4: Configuração do Chakra UI</h4>
|
|
730
|
+
<p>
|
|
731
|
+
Configure o Chakra UI no seu arquivo principal:
|
|
732
|
+
</p>
|
|
733
|
+
<div style={{ backgroundColor: '#f7fafc', padding: '12px', borderRadius: '6px', overflow: 'auto' }}>
|
|
734
|
+
<code>import { '{' } ChakraProvider { '}' } from '@chakra-ui/react'</code><br/>
|
|
735
|
+
<code>function App() {'{'}</code><br/>
|
|
736
|
+
<code> return (</code><br/>
|
|
737
|
+
<code> <ChakraProvider></code><br/>
|
|
738
|
+
<code> {/* Seu conteúdo aqui */}</code><br/>
|
|
739
|
+
<code> </ChakraProvider></code><br/>
|
|
740
|
+
<code> )</code><br/>
|
|
741
|
+
<code>{'}'}</code>
|
|
742
|
+
</div>
|
|
743
|
+
|
|
744
|
+
<h4>Passo 5: Teste</h4>
|
|
745
|
+
<p>
|
|
746
|
+
Execute o projeto: <code>npm start</code>
|
|
747
|
+
Abra http://localhost:3000 no seu navegador.
|
|
748
|
+
</p>
|
|
749
|
+
</div>
|
|
750
|
+
</CustomAccordionItem>
|
|
751
|
+
</Accordion>
|
|
752
|
+
);
|
|
753
|
+
};
|
|
754
|
+
`,
|
|
755
|
+
language: "tsx",
|
|
756
|
+
},
|
|
757
|
+
},
|
|
758
|
+
},
|
|
759
|
+
};
|