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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/components/Accordion/CustomAccordionGroup.d.ts +10 -0
  4. package/dist/components/Accordion/CustomAccordionGroup.js +20 -0
  5. package/dist/components/Accordion/CustomAccordionItem.d.ts +12 -0
  6. package/dist/components/Accordion/CustomAccordionItem.js +5 -0
  7. package/dist/components/CustomAlertDialog.d.ts +8 -0
  8. package/dist/components/CustomAlertDialog.js +18 -0
  9. package/dist/components/CustomAutoComplete.d.ts +35 -0
  10. package/dist/components/CustomAutoComplete.js +141 -0
  11. package/dist/components/CustomBadge.d.ts +9 -0
  12. package/dist/components/CustomBadge.js +25 -0
  13. package/dist/components/CustomButton.d.ts +16 -0
  14. package/dist/components/CustomButton.js +18 -0
  15. package/dist/components/CustomCard.d.ts +11 -0
  16. package/dist/components/CustomCard.js +20 -0
  17. package/dist/components/CustomCheckBox.d.ts +12 -0
  18. package/dist/components/CustomCheckBox.js +26 -0
  19. package/dist/components/CustomCheckboxGroup.d.ts +21 -0
  20. package/dist/components/CustomCheckboxGroup.js +28 -0
  21. package/dist/components/CustomDrawer.d.ts +11 -0
  22. package/dist/components/CustomDrawer.js +36 -0
  23. package/dist/components/CustomIconButton.d.ts +7 -0
  24. package/dist/components/CustomIconButton.js +19 -0
  25. package/dist/components/CustomInput.d.ts +19 -0
  26. package/dist/components/CustomInput.js +32 -0
  27. package/dist/components/CustomInputNumber.d.ts +17 -0
  28. package/dist/components/CustomInputNumber.js +23 -0
  29. package/dist/components/CustomList.d.ts +22 -0
  30. package/dist/components/CustomList.js +27 -0
  31. package/dist/components/CustomLoadingCenterPage.d.ts +6 -0
  32. package/dist/components/CustomLoadingCenterPage.js +5 -0
  33. package/dist/components/CustomModal.d.ts +19 -0
  34. package/dist/components/CustomModal.js +83 -0
  35. package/dist/components/CustomModalNfe.d.ts +34 -0
  36. package/dist/components/CustomModalNfe.js +86 -0
  37. package/dist/components/CustomMultSelect.d.ts +28 -0
  38. package/dist/components/CustomMultSelect.js +51 -0
  39. package/dist/components/CustomMultipleInputs.d.ts +36 -0
  40. package/dist/components/CustomMultipleInputs.js +91 -0
  41. package/dist/components/CustomPopover.d.ts +21 -0
  42. package/dist/components/CustomPopover.js +19 -0
  43. package/dist/components/CustomRadioGroup.d.ts +32 -0
  44. package/dist/components/CustomRadioGroup.js +37 -0
  45. package/dist/components/CustomSelect.d.ts +20 -0
  46. package/dist/components/CustomSelect.js +25 -0
  47. package/dist/components/CustomSkeleton.d.ts +9 -0
  48. package/dist/components/CustomSkeleton.js +17 -0
  49. package/dist/components/CustomSwitch.d.ts +20 -0
  50. package/dist/components/CustomSwitch.js +15 -0
  51. package/dist/components/CustomTable.d.ts +51 -0
  52. package/dist/components/CustomTable.js +307 -0
  53. package/dist/components/CustomTabs.d.ts +27 -0
  54. package/dist/components/CustomTabs.js +100 -0
  55. package/dist/components/CustomTextarea.d.ts +14 -0
  56. package/dist/components/CustomTextarea.js +35 -0
  57. package/dist/components/CustomToast.d.ts +10 -0
  58. package/dist/components/CustomToast.js +6 -0
  59. package/dist/components/DatePicker/CustomDatePicker.d.ts +24 -0
  60. package/dist/components/DatePicker/CustomDatePicker.js +628 -0
  61. package/dist/components/Pagination/CustomPagination.d.ts +50 -0
  62. package/dist/components/Pagination/CustomPagination.js +159 -0
  63. package/dist/components/ThemeToggle.d.ts +1 -0
  64. package/dist/components/ThemeToggle.js +30 -0
  65. package/dist/components/index.d.ts +30 -0
  66. package/dist/components/index.js +30 -0
  67. package/dist/contexts/ThemeContext.d.ts +18 -0
  68. package/dist/contexts/ThemeContext.js +34 -0
  69. package/dist/examples/CodeViewer.d.ts +8 -0
  70. package/dist/examples/CodeViewer.js +7 -0
  71. package/dist/examples/FormikExample.d.ts +2 -0
  72. package/dist/examples/FormikExample.js +199 -0
  73. package/dist/examples/NumberInputExample.d.ts +2 -0
  74. package/dist/examples/NumberInputExample.js +198 -0
  75. package/dist/examples/ReactHookFormExample.d.ts +2 -0
  76. package/dist/examples/ReactHookFormExample.js +217 -0
  77. package/dist/examples/SimpleFormExample.d.ts +2 -0
  78. package/dist/examples/SimpleFormExample.js +216 -0
  79. package/dist/examples/TabsExample.d.ts +2 -0
  80. package/dist/examples/TabsExample.js +182 -0
  81. package/dist/examples/index.d.ts +6 -0
  82. package/dist/examples/index.js +6 -0
  83. package/dist/index.d.ts +32 -0
  84. package/dist/index.js +32 -0
  85. package/dist/providers/LsCKFrontProvider.d.ts +6 -0
  86. package/dist/providers/LsCKFrontProvider.js +7 -0
  87. package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionGroup.stories.d.ts +13 -0
  88. package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionGroup.stories.js +787 -0
  89. package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionItem.stories.d.ts +13 -0
  90. package/dist/stories/Londrisoft/Components/Accordion/CustomAccordionItem.stories.js +759 -0
  91. package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckBox.stories.d.ts +15 -0
  92. package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckBox.stories.js +770 -0
  93. package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckboxGroup.stories.d.ts +33 -0
  94. package/dist/stories/Londrisoft/Components/Checkbox/CustomCheckboxGroup.stories.js +2152 -0
  95. package/dist/stories/Londrisoft/Components/CustomAlertDialog.stories.d.ts +24 -0
  96. package/dist/stories/Londrisoft/Components/CustomAlertDialog.stories.js +462 -0
  97. package/dist/stories/Londrisoft/Components/CustomAutoComplete.stories.d.ts +41 -0
  98. package/dist/stories/Londrisoft/Components/CustomAutoComplete.stories.js +1135 -0
  99. package/dist/stories/Londrisoft/Components/CustomBadge.stories.d.ts +21 -0
  100. package/dist/stories/Londrisoft/Components/CustomBadge.stories.js +546 -0
  101. package/dist/stories/Londrisoft/Components/CustomButton.stories.d.ts +17 -0
  102. package/dist/stories/Londrisoft/Components/CustomButton.stories.js +1099 -0
  103. package/dist/stories/Londrisoft/Components/CustomCard.stories.d.ts +17 -0
  104. package/dist/stories/Londrisoft/Components/CustomCard.stories.js +687 -0
  105. package/dist/stories/Londrisoft/Components/CustomDrawer.stories.d.ts +24 -0
  106. package/dist/stories/Londrisoft/Components/CustomDrawer.stories.js +521 -0
  107. package/dist/stories/Londrisoft/Components/CustomIconButton.stories.d.ts +14 -0
  108. package/dist/stories/Londrisoft/Components/CustomIconButton.stories.js +1024 -0
  109. package/dist/stories/Londrisoft/Components/CustomInput.stories.d.ts +15 -0
  110. package/dist/stories/Londrisoft/Components/CustomInput.stories.js +1094 -0
  111. package/dist/stories/Londrisoft/Components/CustomInputNumber.stories.d.ts +11 -0
  112. package/dist/stories/Londrisoft/Components/CustomInputNumber.stories.js +676 -0
  113. package/dist/stories/Londrisoft/Components/CustomList.stories.d.ts +18 -0
  114. package/dist/stories/Londrisoft/Components/CustomList.stories.js +1353 -0
  115. package/dist/stories/Londrisoft/Components/CustomLoadingCenterPage.stories.d.ts +17 -0
  116. package/dist/stories/Londrisoft/Components/CustomLoadingCenterPage.stories.js +304 -0
  117. package/dist/stories/Londrisoft/Components/CustomModal.stories.d.ts +19 -0
  118. package/dist/stories/Londrisoft/Components/CustomModal.stories.js +631 -0
  119. package/dist/stories/Londrisoft/Components/CustomModalNfe.stories.d.ts +19 -0
  120. package/dist/stories/Londrisoft/Components/CustomModalNfe.stories.js +589 -0
  121. package/dist/stories/Londrisoft/Components/CustomMultSelect.stories.d.ts +15 -0
  122. package/dist/stories/Londrisoft/Components/CustomMultSelect.stories.js +447 -0
  123. package/dist/stories/Londrisoft/Components/CustomMultipleInputs.stories.d.ts +15 -0
  124. package/dist/stories/Londrisoft/Components/CustomMultipleInputs.stories.js +1068 -0
  125. package/dist/stories/Londrisoft/Components/CustomPopover.stories.d.ts +10 -0
  126. package/dist/stories/Londrisoft/Components/CustomPopover.stories.js +208 -0
  127. package/dist/stories/Londrisoft/Components/CustomSelect.stories.d.ts +27 -0
  128. package/dist/stories/Londrisoft/Components/CustomSelect.stories.js +1086 -0
  129. package/dist/stories/Londrisoft/Components/CustomSkeleton.stories.d.ts +25 -0
  130. package/dist/stories/Londrisoft/Components/CustomSkeleton.stories.js +534 -0
  131. package/dist/stories/Londrisoft/Components/CustomSwitch.stories.d.ts +15 -0
  132. package/dist/stories/Londrisoft/Components/CustomSwitch.stories.js +422 -0
  133. package/dist/stories/Londrisoft/Components/CustomTable.stories.d.ts +43 -0
  134. package/dist/stories/Londrisoft/Components/CustomTable.stories.js +2121 -0
  135. package/dist/stories/Londrisoft/Components/CustomTabs.stories.d.ts +19 -0
  136. package/dist/stories/Londrisoft/Components/CustomTabs.stories.js +866 -0
  137. package/dist/stories/Londrisoft/Components/CustomTextarea.stories.d.ts +21 -0
  138. package/dist/stories/Londrisoft/Components/CustomTextarea.stories.js +408 -0
  139. package/dist/stories/Londrisoft/Components/CustomToast.stories.d.ts +21 -0
  140. package/dist/stories/Londrisoft/Components/CustomToast.stories.js +1041 -0
  141. package/dist/stories/Londrisoft/Components/DatePicker/CustomDatePicker.stories.d.ts +17 -0
  142. package/dist/stories/Londrisoft/Components/DatePicker/CustomDatePicker.stories.js +653 -0
  143. package/dist/stories/Londrisoft/Components/Pagination/CustomPagination.stories.d.ts +17 -0
  144. package/dist/stories/Londrisoft/Components/Pagination/CustomPagination.stories.js +429 -0
  145. package/dist/stories/Londrisoft/Components/Radio/CustomRadioGroup.stories.d.ts +22 -0
  146. package/dist/stories/Londrisoft/Components/Radio/CustomRadioGroup.stories.js +766 -0
  147. package/dist/stories/Londrisoft/Examples/IntegrationExamples.stories.d.ts +16 -0
  148. package/dist/stories/Londrisoft/Examples/IntegrationExamples.stories.js +514 -0
  149. package/dist/stories/Londrisoft/Theme/ThemeShowcase.stories.d.ts +5 -0
  150. package/dist/stories/Londrisoft/Theme/ThemeShowcase.stories.js +112 -0
  151. package/dist/stories/options.d.ts +13 -0
  152. package/dist/stories/options.js +124 -0
  153. package/dist/theme/bime.d.ts +92 -0
  154. package/dist/theme/bime.js +352 -0
  155. package/dist/theme/index.d.ts +5 -0
  156. package/dist/theme/index.js +8 -0
  157. package/dist/theme/waipe.d.ts +102 -0
  158. package/dist/theme/waipe.js +362 -0
  159. 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 &lt;seu-token&gt;</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> &lt;ChakraProvider&gt;</code><br/>
738
+ <code> {/* Seu conteúdo aqui */}</code><br/>
739
+ <code> &lt;/ChakraProvider&gt;</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
+ };