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,21 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import CustomTextarea from "../../../components/CustomTextarea";
|
|
3
|
+
declare const meta: Meta<typeof CustomTextarea>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof CustomTextarea>;
|
|
6
|
+
/** 💡 Exemplo com tooltip informativo */
|
|
7
|
+
export declare const WithTooltip: Story;
|
|
8
|
+
/** 🎨 Exemplo com label customizado */
|
|
9
|
+
export declare const CustomLabel: Story;
|
|
10
|
+
/** 🔧 Exemplo com todas as funcionalidades */
|
|
11
|
+
export declare const CompleteExample: Story;
|
|
12
|
+
/** 🎯 Exemplo padrão do CustomTextarea */
|
|
13
|
+
export declare const Default: Story;
|
|
14
|
+
/** 📝 Comparação de estilos de label */
|
|
15
|
+
export declare const LabelStyles: Story;
|
|
16
|
+
/** ❗ Exemplo com erro exibido */
|
|
17
|
+
export declare const WithError: Story;
|
|
18
|
+
/** 🚫 Textarea desabilitado */
|
|
19
|
+
export declare const Disabled: Story;
|
|
20
|
+
/** 🛠️ Sem FormControl */
|
|
21
|
+
export declare const WithoutFormControl: Story;
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import CustomTextarea from "../../../components/CustomTextarea";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Londrisoft/Components/Textarea",
|
|
5
|
+
component: CustomTextarea,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
args: {
|
|
8
|
+
label: "Descrição",
|
|
9
|
+
placeholder: "Digite sua mensagem...",
|
|
10
|
+
error: "",
|
|
11
|
+
showError: true,
|
|
12
|
+
withFormControl: true,
|
|
13
|
+
isDisabled: false,
|
|
14
|
+
value: "",
|
|
15
|
+
tooltip: "",
|
|
16
|
+
labelColor: "neutral.400",
|
|
17
|
+
labelBold: true,
|
|
18
|
+
},
|
|
19
|
+
argTypes: {
|
|
20
|
+
label: {
|
|
21
|
+
control: "text",
|
|
22
|
+
description: "Texto exibido como rótulo acima do textarea.",
|
|
23
|
+
table: { category: "Content" },
|
|
24
|
+
},
|
|
25
|
+
placeholder: {
|
|
26
|
+
control: "text",
|
|
27
|
+
description: "Texto exibido quando o campo está vazio.",
|
|
28
|
+
table: { category: "Behavior" },
|
|
29
|
+
},
|
|
30
|
+
error: {
|
|
31
|
+
control: "text",
|
|
32
|
+
description: "Mensagem de erro exibida abaixo do textarea.",
|
|
33
|
+
table: { category: "State" },
|
|
34
|
+
},
|
|
35
|
+
showError: {
|
|
36
|
+
control: "boolean",
|
|
37
|
+
description: "Controla a exibição da mensagem de erro.",
|
|
38
|
+
table: { category: "Behavior" },
|
|
39
|
+
},
|
|
40
|
+
withFormControl: {
|
|
41
|
+
control: "boolean",
|
|
42
|
+
description: "Envolve o textarea em um FormControl para validação.",
|
|
43
|
+
table: { category: "Behavior" },
|
|
44
|
+
},
|
|
45
|
+
isDisabled: {
|
|
46
|
+
control: "boolean",
|
|
47
|
+
description: "Desabilita o textarea, tornando-o somente leitura.",
|
|
48
|
+
table: { category: "Behavior" },
|
|
49
|
+
},
|
|
50
|
+
value: {
|
|
51
|
+
control: "text",
|
|
52
|
+
description: "Valor atual do textarea (modo controlado).",
|
|
53
|
+
table: { category: "State" },
|
|
54
|
+
},
|
|
55
|
+
tooltip: {
|
|
56
|
+
control: "text",
|
|
57
|
+
description: "Tooltip informativo exibido ao lado do label.",
|
|
58
|
+
table: { category: "Content" },
|
|
59
|
+
},
|
|
60
|
+
labelColor: {
|
|
61
|
+
control: "color",
|
|
62
|
+
description: "Cor do label do textarea.",
|
|
63
|
+
table: { category: "Appearance" },
|
|
64
|
+
},
|
|
65
|
+
labelBold: {
|
|
66
|
+
control: "boolean",
|
|
67
|
+
description: "Define se o label deve ser exibido em negrito.",
|
|
68
|
+
table: { category: "Appearance" },
|
|
69
|
+
},
|
|
70
|
+
onChange: {
|
|
71
|
+
action: "onChange",
|
|
72
|
+
table: { disable: true },
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
parameters: {
|
|
76
|
+
docs: {
|
|
77
|
+
description: {
|
|
78
|
+
component: "Textarea customizado com suporte a label em negrito, tooltips informativos, exibição de mensagens de erro, desabilitação e integração com Chakra UI. O componente oferece flexibilidade total para customização visual e funcional.",
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
backgrounds: {
|
|
82
|
+
default: "light",
|
|
83
|
+
values: [
|
|
84
|
+
{ name: "light", value: "#ffffff" },
|
|
85
|
+
{ name: "dark", value: "#000000" },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
a11y: {
|
|
89
|
+
element: "#root",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
export default meta;
|
|
94
|
+
/** 💡 Exemplo com tooltip informativo */
|
|
95
|
+
export const WithTooltip = {
|
|
96
|
+
args: {
|
|
97
|
+
label: "Biografia",
|
|
98
|
+
placeholder: "Conte-nos sobre você...",
|
|
99
|
+
tooltip: "Esta informação será exibida no seu perfil público",
|
|
100
|
+
labelBold: true,
|
|
101
|
+
},
|
|
102
|
+
parameters: {
|
|
103
|
+
docs: {
|
|
104
|
+
source: {
|
|
105
|
+
code: `
|
|
106
|
+
import React, { useState } from 'react';
|
|
107
|
+
import CustomTextarea from './CustomTextarea';
|
|
108
|
+
|
|
109
|
+
// Textarea com tooltip informativo
|
|
110
|
+
const TextareaWithTooltip = () => {
|
|
111
|
+
const [value, setValue] = useState('');
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<CustomTextarea
|
|
115
|
+
label="Biografia"
|
|
116
|
+
placeholder="Conte-nos sobre você..."
|
|
117
|
+
tooltip="Esta informação será exibida no seu perfil público"
|
|
118
|
+
value={value}
|
|
119
|
+
onChange={(e) => setValue(e.target.value)}
|
|
120
|
+
labelBold={true}
|
|
121
|
+
withFormControl={true}
|
|
122
|
+
/>
|
|
123
|
+
);
|
|
124
|
+
};
|
|
125
|
+
`,
|
|
126
|
+
language: "tsx",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
/** 🎨 Exemplo com label customizado */
|
|
132
|
+
export const CustomLabel = {
|
|
133
|
+
args: {
|
|
134
|
+
label: "Comentário",
|
|
135
|
+
placeholder: "Digite seu comentário...",
|
|
136
|
+
labelColor: "#2B6CB0",
|
|
137
|
+
labelBold: true,
|
|
138
|
+
tooltip: "Seus comentários nos ajudam a melhorar",
|
|
139
|
+
},
|
|
140
|
+
parameters: {
|
|
141
|
+
docs: {
|
|
142
|
+
source: {
|
|
143
|
+
code: `
|
|
144
|
+
import React, { useState } from 'react';
|
|
145
|
+
import CustomTextarea from './CustomTextarea';
|
|
146
|
+
|
|
147
|
+
// Textarea com label customizado
|
|
148
|
+
const CustomLabelTextarea = () => {
|
|
149
|
+
const [value, setValue] = useState('');
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
<CustomTextarea
|
|
153
|
+
label="Comentário"
|
|
154
|
+
placeholder="Digite seu comentário..."
|
|
155
|
+
labelColor="blue.500"
|
|
156
|
+
labelBold={true}
|
|
157
|
+
tooltip="Seus comentários nos ajudam a melhorar"
|
|
158
|
+
value={value}
|
|
159
|
+
onChange={(e) => setValue(e.target.value)}
|
|
160
|
+
withFormControl={true}
|
|
161
|
+
/>
|
|
162
|
+
);
|
|
163
|
+
};
|
|
164
|
+
`,
|
|
165
|
+
language: "tsx",
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
/** 🔧 Exemplo com todas as funcionalidades */
|
|
171
|
+
export const CompleteExample = {
|
|
172
|
+
args: {
|
|
173
|
+
label: "Descrição Completa",
|
|
174
|
+
placeholder: "Digite uma descrição detalhada...",
|
|
175
|
+
tooltip: "Inclua todos os detalhes relevantes. Mínimo 20 caracteres.",
|
|
176
|
+
labelColor: "#2D3748",
|
|
177
|
+
labelBold: true,
|
|
178
|
+
required: true,
|
|
179
|
+
rows: 6,
|
|
180
|
+
maxLength: 1000,
|
|
181
|
+
},
|
|
182
|
+
parameters: {
|
|
183
|
+
docs: {
|
|
184
|
+
source: {
|
|
185
|
+
code: `
|
|
186
|
+
import React, { useState } from 'react';
|
|
187
|
+
import CustomTextarea from './CustomTextarea';
|
|
188
|
+
|
|
189
|
+
// Textarea completo com todas as funcionalidades
|
|
190
|
+
const CompleteTextarea = () => {
|
|
191
|
+
const [value, setValue] = useState('');
|
|
192
|
+
const [error, setError] = useState('');
|
|
193
|
+
|
|
194
|
+
const handleChange = (e) => {
|
|
195
|
+
const newValue = e.target.value;
|
|
196
|
+
setValue(newValue);
|
|
197
|
+
|
|
198
|
+
// Validação
|
|
199
|
+
if (newValue.length > 0 && newValue.length < 20) {
|
|
200
|
+
setError('Mínimo 20 caracteres');
|
|
201
|
+
} else {
|
|
202
|
+
setError('');
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
return (
|
|
207
|
+
<CustomTextarea
|
|
208
|
+
label="Descrição Completa"
|
|
209
|
+
placeholder="Digite uma descrição detalhada..."
|
|
210
|
+
tooltip="Inclua todos os detalhes relevantes. Mínimo 20 caracteres."
|
|
211
|
+
labelColor="neutral.400"
|
|
212
|
+
labelBold={true}
|
|
213
|
+
required={true}
|
|
214
|
+
rows={6}
|
|
215
|
+
maxLength={1000}
|
|
216
|
+
value={value}
|
|
217
|
+
onChange={handleChange}
|
|
218
|
+
error={error}
|
|
219
|
+
showError={true}
|
|
220
|
+
withFormControl={true}
|
|
221
|
+
/>
|
|
222
|
+
);
|
|
223
|
+
};
|
|
224
|
+
`,
|
|
225
|
+
language: "tsx",
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
/** 🎯 Exemplo padrão do CustomTextarea */
|
|
231
|
+
export const Default = {
|
|
232
|
+
parameters: {
|
|
233
|
+
docs: {
|
|
234
|
+
source: {
|
|
235
|
+
code: `
|
|
236
|
+
import React, { useState } from 'react';
|
|
237
|
+
import CustomTextarea from './CustomTextarea';
|
|
238
|
+
|
|
239
|
+
// Textarea básico
|
|
240
|
+
const BasicTextarea = () => {
|
|
241
|
+
const [value, setValue] = useState('');
|
|
242
|
+
|
|
243
|
+
return (
|
|
244
|
+
<CustomTextarea
|
|
245
|
+
label="Descrição"
|
|
246
|
+
placeholder="Digite sua mensagem..."
|
|
247
|
+
tooltip="Informação adicional sobre o campo"
|
|
248
|
+
labelColor="blue.500"
|
|
249
|
+
labelBold={true}
|
|
250
|
+
value={value}
|
|
251
|
+
onChange={(e) => setValue(e.target.value)}
|
|
252
|
+
error=""
|
|
253
|
+
showError={true}
|
|
254
|
+
withFormControl={true}
|
|
255
|
+
isDisabled={false}
|
|
256
|
+
/>
|
|
257
|
+
);
|
|
258
|
+
};
|
|
259
|
+
`,
|
|
260
|
+
language: "tsx",
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
/** 📝 Comparação de estilos de label */
|
|
266
|
+
export const LabelStyles = {
|
|
267
|
+
render: () => (_jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "20px" }, children: [_jsx(CustomTextarea, { label: "Label em Negrito (Padr\u00E3o)", placeholder: "Este label est\u00E1 em negrito...", tooltip: "Label com labelBold={true}", labelBold: true, withFormControl: true }), _jsx(CustomTextarea, { label: "Label Normal", placeholder: "Este label est\u00E1 em peso normal...", tooltip: "Label com labelBold={false}", labelBold: false, withFormControl: true }), _jsx(CustomTextarea, { label: "Label Colorido", placeholder: "Este label tem cor customizada...", tooltip: "Label com cor personalizada", labelColor: "blue.500", labelBold: true, withFormControl: true })] })),
|
|
268
|
+
parameters: {
|
|
269
|
+
docs: {
|
|
270
|
+
source: {
|
|
271
|
+
code: `
|
|
272
|
+
import React from 'react';
|
|
273
|
+
import CustomTextarea from './CustomTextarea';
|
|
274
|
+
|
|
275
|
+
const LabelStylesExample = () => {
|
|
276
|
+
return (
|
|
277
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
|
278
|
+
<CustomTextarea
|
|
279
|
+
label="Label em Negrito (Padrão)"
|
|
280
|
+
placeholder="Este label está em negrito..."
|
|
281
|
+
tooltip="Label com labelBold={true}"
|
|
282
|
+
labelBold={true}
|
|
283
|
+
withFormControl={true}
|
|
284
|
+
/>
|
|
285
|
+
|
|
286
|
+
<CustomTextarea
|
|
287
|
+
label="Label Normal"
|
|
288
|
+
placeholder="Este label está em peso normal..."
|
|
289
|
+
tooltip="Label com labelBold={false}"
|
|
290
|
+
labelBold={false}
|
|
291
|
+
withFormControl={true}
|
|
292
|
+
/>
|
|
293
|
+
|
|
294
|
+
<CustomTextarea
|
|
295
|
+
label="Label Colorido"
|
|
296
|
+
placeholder="Este label tem cor customizada..."
|
|
297
|
+
tooltip="Label com cor personalizada"
|
|
298
|
+
labelColor="blue.500"
|
|
299
|
+
labelBold={true}
|
|
300
|
+
withFormControl={true}
|
|
301
|
+
/>
|
|
302
|
+
</div>
|
|
303
|
+
);
|
|
304
|
+
};
|
|
305
|
+
`,
|
|
306
|
+
language: "tsx",
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
};
|
|
311
|
+
/** ❗ Exemplo com erro exibido */
|
|
312
|
+
export const WithError = {
|
|
313
|
+
args: {
|
|
314
|
+
error: "Campo obrigatório",
|
|
315
|
+
showError: true,
|
|
316
|
+
},
|
|
317
|
+
parameters: {
|
|
318
|
+
docs: {
|
|
319
|
+
source: {
|
|
320
|
+
code: `
|
|
321
|
+
import React, { useState } from 'react';
|
|
322
|
+
import CustomTextarea from './CustomTextarea';
|
|
323
|
+
|
|
324
|
+
// Textarea com erro
|
|
325
|
+
const TextareaWithError = () => {
|
|
326
|
+
const [value, setValue] = useState('');
|
|
327
|
+
const [error, setError] = useState('Campo obrigatório');
|
|
328
|
+
|
|
329
|
+
return (
|
|
330
|
+
<CustomTextarea
|
|
331
|
+
label="Descrição"
|
|
332
|
+
placeholder="Digite sua mensagem..."
|
|
333
|
+
value={value}
|
|
334
|
+
onChange={(e) => setValue(e.target.value)}
|
|
335
|
+
error={error}
|
|
336
|
+
showError={true}
|
|
337
|
+
withFormControl={true}
|
|
338
|
+
/>
|
|
339
|
+
);
|
|
340
|
+
};
|
|
341
|
+
`,
|
|
342
|
+
language: "tsx",
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
/** 🚫 Textarea desabilitado */
|
|
348
|
+
export const Disabled = {
|
|
349
|
+
args: {
|
|
350
|
+
isDisabled: true,
|
|
351
|
+
},
|
|
352
|
+
parameters: {
|
|
353
|
+
docs: {
|
|
354
|
+
source: {
|
|
355
|
+
code: `
|
|
356
|
+
import React, { useState } from 'react';
|
|
357
|
+
import CustomTextarea from './CustomTextarea';
|
|
358
|
+
|
|
359
|
+
// Textarea desabilitado
|
|
360
|
+
const DisabledTextarea = () => {
|
|
361
|
+
return (
|
|
362
|
+
<CustomTextarea
|
|
363
|
+
label="Descrição"
|
|
364
|
+
placeholder="Este campo está desabilitado..."
|
|
365
|
+
value="Conteúdo somente leitura"
|
|
366
|
+
isDisabled={true}
|
|
367
|
+
withFormControl={true}
|
|
368
|
+
/>
|
|
369
|
+
);
|
|
370
|
+
};
|
|
371
|
+
`,
|
|
372
|
+
language: "tsx",
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
};
|
|
377
|
+
/** 🛠️ Sem FormControl */
|
|
378
|
+
export const WithoutFormControl = {
|
|
379
|
+
args: {
|
|
380
|
+
withFormControl: false,
|
|
381
|
+
},
|
|
382
|
+
parameters: {
|
|
383
|
+
docs: {
|
|
384
|
+
source: {
|
|
385
|
+
code: `
|
|
386
|
+
import React, { useState } from 'react';
|
|
387
|
+
import CustomTextarea from './CustomTextarea';
|
|
388
|
+
|
|
389
|
+
// Textarea sem FormControl
|
|
390
|
+
const TextareaWithoutFormControl = () => {
|
|
391
|
+
const [value, setValue] = useState('');
|
|
392
|
+
|
|
393
|
+
return (
|
|
394
|
+
<CustomTextarea
|
|
395
|
+
label="Descrição"
|
|
396
|
+
placeholder="Digite sua mensagem..."
|
|
397
|
+
value={value}
|
|
398
|
+
onChange={(e) => setValue(e.target.value)}
|
|
399
|
+
withFormControl={false}
|
|
400
|
+
/>
|
|
401
|
+
);
|
|
402
|
+
};
|
|
403
|
+
`,
|
|
404
|
+
language: "tsx",
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import CustomToast from "../../../components/CustomToast";
|
|
3
|
+
declare const meta: Meta<typeof CustomToast>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof CustomToast>;
|
|
6
|
+
/** 🎯 Exemplo básico do CustomToast */
|
|
7
|
+
export declare const Default: Story;
|
|
8
|
+
/** 📧 Exemplo com ícone */
|
|
9
|
+
export declare const WithIcon: Story;
|
|
10
|
+
/** 🎨 Exemplo com todas as cores de alert */
|
|
11
|
+
export declare const AllAlertColors: Story;
|
|
12
|
+
/** 🎯 Exemplo com ícones e cores de alert */
|
|
13
|
+
export declare const AlertWithIcons: Story;
|
|
14
|
+
/** 🎨 Exemplo com variações de cores */
|
|
15
|
+
export declare const ColorVariations: Story;
|
|
16
|
+
/** 🔄 Exemplo de integração com ações */
|
|
17
|
+
export declare const ActionIntegration: Story;
|
|
18
|
+
/** 📱 Exemplo de toasts para mobile */
|
|
19
|
+
export declare const MobileOptimized: Story;
|
|
20
|
+
/** 🎯 Exemplo de toasts para formulários */
|
|
21
|
+
export declare const FormValidation: Story;
|