@grazziotin/react-components 1.0.0 → 1.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.
@@ -1,432 +0,0 @@
1
- interface MascaradorCPFCNPJProps {
2
- v: string | number
3
- autoComplete?: boolean
4
- ignoreCNPJ?: boolean
5
- }
6
-
7
- /**
8
- * Função para formatar um CPF ou CNPJ, adicionando as pontuações adequadas.
9
- *
10
- * @param {string} v - O valor do CPF ou CNPJ a ser formatado (como string ou number).
11
- * @returns {string} O valor formatado com as pontuações de CPF ou CNPJ.
12
- *
13
- * @example
14
- * const cpfCnpjFormatado = mascaradorCPFCNPJ('12345678901'); // Retorna '123.456.789-01'
15
- * @author Flaviasoz, Nicolasfmc
16
- * @version 1.6.0
17
- */
18
- export const mascaradorCPFCNPJ = ({
19
- v,
20
- autoComplete,
21
- ignoreCNPJ,
22
- }: MascaradorCPFCNPJProps): string => {
23
- const value = v?.toString().replace(/\D/g, '')
24
-
25
- if (!ignoreCNPJ) {
26
- // Verifica se é um CPF (até 11 dígitos)
27
- if (value?.length <= 11) {
28
- const a = autoComplete ? value?.padStart(11, '0') : value
29
- return a
30
- .replace(/(\d{3})(\d)/, '$1.$2')
31
- .replace(/(\d{3})(\d)/, '$1.$2')
32
- .replace(/(\d{3})(\d{1,2})$/, '$1-$2')
33
- } else {
34
- // Se for um CNPJ
35
- const a = autoComplete ? value?.padStart(14, '0') : value
36
- return a
37
- .replace(/^(\d{2})(\d)/, '$1.$2')
38
- .replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
39
- .replace(/\.(\d{3})(\d)/, '.$1/$2')
40
- .replace(/(\d{4})(\d)/, '$1-$2')
41
- }
42
- } else {
43
- const a = autoComplete ? value?.padStart(11, '0') : value
44
- return a
45
- .slice(0, 11)
46
- .replace(/(\d{3})(\d)/, '$1.$2')
47
- .replace(/(\d{3})(\d)/, '$1.$2')
48
- .replace(/(\d{3})(\d{1,2})$/, '$1-$2')
49
- }
50
- }
51
-
52
- /**
53
- * Função para formatar um número de telefone, adicionando as pontuações adequadas.
54
- *
55
- * @param {string | number} v - O número de telefone a ser formatado (como string ou number).
56
- * @returns {string} O número de telefone formatado com as pontuações adequadas.
57
- *
58
- * @example
59
- * const telefoneFormatado = mascaradorTelefone('1234567890'); // Retorna '(12) 3456-7890'
60
- * @author Flaviasoz
61
- * @version 1.2.0
62
- */
63
- export const mascaradorTelefone = (v: string | number): string => {
64
- v = v?.toString().replace(/\D/g, '')
65
-
66
- if (v.length === 8) {
67
- return v.replace(/(\d{4})(\d{4})/, '$1-$2')
68
- } else if (v.length === 9) {
69
- return v.replace(/(\d{5})(\d{4})/, '$1-$2')
70
- } else if (v.length === 10) {
71
- return v.replace(/(\d{2})(\d{4})(\d{4})/, '($1) $2-$3')
72
- } else if (v.length === 11) {
73
- return v.replace(/(\d{2})(\d{5})(\d{4})/, '($1) $2-$3')
74
- } else if (v.length === 12) {
75
- return v.replace(/(\d{2})(\d{2})(\d{4})(\d{4})/, '+$1 ($2) $3-$4')
76
- } else if (v.length === 13) {
77
- return v.replace(/(\d{2})(\d{2})(\d{5})(\d{4})/, '+$1 ($2) $3-$4')
78
- } else {
79
- return v
80
- }
81
- }
82
-
83
- /**
84
- * Função para adicionar pontos de separação de milhar em um número.
85
- *
86
- * @param {string | number} valor - O valor numérico a ser formatado com pontos de separação de milhar.
87
- * @returns {string} - O valor formatado com pontos de separação de milhar.
88
- *
89
- * @example
90
- * const numeroFormatado = mascaradorMilhar(1234567); // Retorna '1.234.567'
91
- * @author Flaviasoz
92
- * @version 1.0.0
93
- */
94
- export const mascaradorMilhar = (valor: string | number): string => {
95
- return valor?.toString()?.replace(/\B(?=(\d{3})+(?!\d))/g, '.')
96
- }
97
-
98
- /**
99
- * Função para adicionar pontos de separação de milhar e decimais em um número.
100
- *
101
- * @param {string | number} v - O valor numérico a ser formatado com pontos de separação de milhar.
102
- * @returns {string} - O valor formatado com pontos de separação de milhar e duas casas decimais após a vírgula.
103
- *
104
- * @example
105
- * const numeroFormatado = mascaradorMilharDecimal(1234567); // Retorna '1.234.567,00'
106
- * @author Nicolasfmc
107
- * @version 1.0.0
108
- */
109
- export const mascaradorMilharDecimal = (v: string | number): string => {
110
- let res = ''
111
-
112
- if (!v) {
113
- v = 0
114
- }
115
-
116
- res = v
117
- .toLocaleString('pt-BR', {
118
- style: 'currency',
119
- currency: 'BRL',
120
- })
121
- .toString()
122
-
123
- return res.replace('R$', '').trim()
124
- }
125
-
126
- /**
127
- * Função para formatar um valor numérico como moeda brasileira (BRL).
128
- *
129
- * @param {string | number} v - O valor a ser formatado como moeda brasileira.
130
- * @returns {string} O valor formatado como moeda brasileira (BRL), no formato de string.
131
- * @example
132
- * style: 'currency', // Estilo de formatação de moeda
133
- * currency: 'BRL', // Tipo de moeda (Real brasileiro)
134
- * const valorFormatado = mascaradorValorReal(12345.67); // Retorna 'R$ 12.345,67'
135
- * @author Flaviasoz
136
- * @version 1.0.0
137
- */
138
- export const mascaradorValorReal = (v?: string | number | null): string => {
139
- // Convertendo para um número, se for uma string
140
- const valorNumerico = typeof v === 'string' ? parseFloat(v) : v ?? 0
141
-
142
- // Verificando se a conversão foi bem-sucedida
143
- if (!isNaN(valorNumerico)) {
144
- // Formatando o número como moeda
145
- const valorFormatado = valorNumerico.toLocaleString('pt-BR', {
146
- style: 'currency',
147
- currency: 'BRL',
148
- })
149
-
150
- return valorFormatado
151
- } else {
152
- // Tratamento para casos em que a conversão não é bem-sucedida
153
- return 'R$ 0,00'
154
- }
155
- }
156
-
157
- /**
158
- * Função para formatar uma data no formato 'YYYY-MM-DD' para 'DD/MM/YYYY'.
159
- *
160
- * @param {Date | string} data - A data a ser formatada (como objeto Date ou string).
161
- * @returns {string} A data formatada no formato 'DD/MM/YYYY' ou '' se a entrada for inválida.
162
- *
163
- * @example
164
- * const dataFormatada = formatarDataBR('2021-09-26'); // Retorna '26/09/2021'
165
- * @author Flaviasoz
166
- * @version 1.0.0
167
- */
168
- export function formatarDataBR(data: Date | string): string {
169
- const dataformata = data
170
- ?.toString()
171
- ?.substring(0, 10)
172
- ?.split('-')
173
- ?.reverse()
174
- ?.join('/')
175
-
176
- return dataformata || ''
177
- }
178
-
179
- /**
180
- * Função para formatar uma data no formato 'yyyy-mm' e um dia para 'DD/MM/YYYY'.
181
- *
182
- * @param {string} anoMes - A string no formato 'yyyy-mm'.
183
- * @param {string} [dia='01'] - A string representando o dia (opcional, padrão é '01' se não informado).
184
- * @returns {string} A data formatada no formato 'DD/MM/YYYY' ou '' se a entrada for inválida.
185
- *
186
- * @example
187
- * const dataFormatada = formatarMesAno('2023-01'); // Retorna '01/01/2023'
188
- * const dataFormatadaComDia = formatarMesAno('2023-01', '10'); // Retorna '10/01/2023'
189
- * @author Nicolasfmc
190
- * @version 1.1.0
191
- */
192
- export function formatarMesAno(anoMes: string, dia = '01'): string {
193
- const ano = anoMes.substring(0, 4)
194
- const mes = anoMes.substring(5, 7)
195
-
196
- const diaFormatado = dia.padStart(2, '0')
197
-
198
- return `${diaFormatado}/${mes}/${ano}`
199
- }
200
-
201
- /**
202
- * Formata um valor numérico para uma string no formato de moeda brasileira (BRL).
203
- *
204
- * @param {string} v - Valor numérico a ser formatado.
205
- * @returns {string} - Valor formatado como moeda brasileira.
206
- * @example
207
- * const valorFormatado = mascaradorInputMoeda('123456'); // Resultado: 'R$ 1.234,56'
208
- * @author Flaviasoz
209
- * @version 1.0.0
210
- */
211
- export function mascaradorInputMoeda(v: string): string {
212
- let valor = v.replace(/\D/g, '')
213
- // Formata para moeda
214
- valor = (Number(valor) / 100).toLocaleString('pt-BR', {
215
- style: 'currency',
216
- currency: 'BRL',
217
- })
218
- return valor
219
- }
220
-
221
- /**
222
- * Converte uma string formatada como moeda brasileira para um número decimal.
223
- *
224
- * @param {string} valor - String no formato de moeda brasileira a ser convertida.
225
- * @returns {number} - Valor convertido para número decimal.
226
- * @example
227
- * const valorDecimal = formatarInputMoedaFloat('R$1.234,56'); // Resultado: 1234.56
228
- * @author Flaviasoz
229
- * @version 1.0.0
230
- */
231
- export function formatarInputMoedaFloat(valor: string): number {
232
- return parseFloat(
233
- valor.replace('R$', '').replaceAll('.', '').replace(',', '.'),
234
- )
235
- }
236
-
237
- /**
238
- * Função para formatar uma string numérica no formato '00.00.00.0.000'.
239
- *
240
- * @param {string} v - A string numérica a ser formatada.
241
- * @returns {string} A string formatada no formato '00.00.00.0.000'.
242
- * @example
243
- * const stringFormatada = formatarStringNumerica('1234567890'); // Retorna '12.34.56.7.890'
244
- * @author Nicolasfmc
245
- * @version 1.0.0
246
- */
247
- export function mascaradorCodItem(v?: string | undefined): string | undefined {
248
- v = v?.replace(/\D/g, '')
249
-
250
- if (v && v?.length < 10) {
251
- v = v?.padEnd(10, '0')
252
- }
253
-
254
- return v?.replace(/(\d{2})(\d{2})(\d{2})(\d{1})(\d{3})/, '$1.$2.$3.$4.$5')
255
- }
256
-
257
- /**
258
- * Função para formatar uma string numérica no formato dinâmico até '50.50.20.20.5.510'.
259
- *
260
- * @param {string} v - A string numérica a ser formatada.
261
- * @returns {string} A string formatada dinamicamente conforme o número de dígitos.
262
- * @example
263
- * const stringFormatada = mascaradorCodItemRede('1010'); // Retorna '10.10'
264
- * const stringFormatadaComNoveDigitos = mascaradorCodItemRede('505020205'); // Retorna '50.50.20.20.5'
265
- * const stringFormatadaComDozeDigitos = mascaradorCodItemRede('505020205510'); // Retorna '50.50.20.20.5.510'
266
- * @author Flaviasoz
267
- * @version 1.0.1
268
- */
269
- export function mascaradorCodItemRede(v: string): string {
270
- v = v.replace(/\D/g, '') // Remove caracteres não numéricos
271
-
272
- // Formatação dinâmica conforme o comprimento da string
273
- if (v.length <= 2) {
274
- return v
275
- } else if (v.length <= 4) {
276
- return v.replace(/(\d{2})(\d+)/, '$1.$2')
277
- } else if (v.length <= 6) {
278
- return v.replace(/(\d{2})(\d{2})(\d+)/, '$1.$2.$3')
279
- } else if (v.length <= 8) {
280
- return v.replace(/(\d{2})(\d{2})(\d{2})(\d+)/, '$1.$2.$3.$4')
281
- } else if (v.length === 9) {
282
- return v.replace(/(\d{2})(\d{2})(\d{2})(\d{2})(\d+)/, '$1.$2.$3.$4.$5')
283
- } else if (v.length <= 11) {
284
- return v.replace(
285
- /(\d{2})(\d{2})(\d{2})(\d{2})(\d{1})(\d+)/,
286
- '$1.$2.$3.$4.$5.$6',
287
- )
288
- } else {
289
- return v.replace(
290
- /(\d{2})(\d{2})(\d{2})(\d{2})(\d{1})(\d{3})/,
291
- '$1.$2.$3.$4.$5.$6',
292
- )
293
- }
294
- }
295
-
296
- /**
297
- * Formata uma data para uma string no formato 'dia de mês de ano, hora'.
298
- *
299
- * @param {Date} data - A data a ser formatada.
300
- * @returns {string} A data formatada no formato 'dia de mês de ano, hora'.
301
- * @author Flaviasoz
302
- */
303
- export function formatarDataParaString(data: Date): string {
304
- const diasSemana = [
305
- 'Domingo',
306
- 'Segunda-feira',
307
- 'Terça-feira',
308
- 'Quarta-feira',
309
- 'Quinta-feira',
310
- 'Sexta-feira',
311
- 'Sábado',
312
- ]
313
-
314
- const meses = [
315
- 'Janeiro',
316
- 'Fevereiro',
317
- 'Março',
318
- 'Abril',
319
- 'Maio',
320
- 'Junho',
321
- 'Julho',
322
- 'Agosto',
323
- 'Setembro',
324
- 'Outubro',
325
- 'Novembro',
326
- 'Dezembro',
327
- ]
328
-
329
- const diaSemana = diasSemana[data.getDay()]
330
- const dia = data.getDate()
331
- const mes = meses[data.getMonth()]
332
- const ano = data.getFullYear()
333
- const hora = data.toLocaleTimeString('pt-BR', {
334
- hour: '2-digit',
335
- minute: '2-digit',
336
- })
337
-
338
- const dataFormatada = `${diaSemana}, ${dia} de ${mes} de ${ano}, ${hora}`
339
-
340
- return dataFormatada
341
- }
342
-
343
- /**
344
- * Mascara um CPF, adicionando pontos e traço.
345
- *
346
- * @param {string} cpf - O CPF a ser mascarado.
347
- * @param {boolean} autoComplete - Indica se deve completar com zeros à esquerda.
348
- * @returns {string} O CPF mascarado.
349
- */
350
- interface MascararCPF {
351
- cpfCnpj: string | number
352
- autoComplete?: boolean
353
- }
354
- export function mascararCPF({
355
- cpfCnpj,
356
- autoComplete = false,
357
- }: MascararCPF): string {
358
- const value = cpfCnpj?.toString().replace(/\D/g, '')
359
-
360
- const mask = autoComplete ? value?.padStart(11, '0') : value
361
- return mask
362
- .replace(/(\d{3})(\d)/, '$1.$2')
363
- .replace(/(\d{3})(\d)/, '$1.$2')
364
- .replace(/(\d{3})(\d{1,2})$/, '$1-$2')
365
- }
366
-
367
- /**
368
- * Mascara um CNPJ, adicionando pontos, barra e traço.
369
- *
370
- * @param {string} cnpj - O CNPJ a ser mascarado.
371
- * @param {boolean} autoComplete - Indica se deve completar com zeros à esquerda.
372
- * @returns {string} O CNPJ mascarado.
373
- */
374
- export function mascararCNPJ({
375
- cpfCnpj,
376
- autoComplete = false,
377
- }: MascararCPF): string {
378
- const value = cpfCnpj?.toString().replace(/\D/g, '')
379
-
380
- const mask = autoComplete ? value?.padStart(14, '0') : value
381
- return mask
382
- .replace(/^(\d{2})(\d)/, '$1.$2')
383
- .replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
384
- .replace(/\.(\d{3})(\d)/, '.$1/$2')
385
- .replace(/(\d{4})(\d)/, '$1-$2')
386
- }
387
-
388
- export function formatValuesToMoney<T>(obj: T, fieldsToFormat: (keyof T)[]): T {
389
- if (Array.isArray(obj)) {
390
- return obj.map((item) => formatValuesToMoney(item, fieldsToFormat)) as any
391
- } else if (typeof obj === 'object' && obj !== null) {
392
- const newObj: any = {}
393
- for (const key in obj) {
394
- if (Object.hasOwn(obj, key)) {
395
- if (fieldsToFormat.includes(key as keyof T)) {
396
- const value = (obj as any)[key]
397
- if (typeof value === 'number') {
398
- newObj[key] = mascaradorInputMoeda(String(value.toFixed(2)))
399
- } else if (typeof value === 'string') {
400
- const numericValue = parseFloat(value.replace(/[^\d.-]+/g, ''))
401
- newObj[key] = isNaN(numericValue)
402
- ? value
403
- : mascaradorInputMoeda(String(numericValue.toFixed(2)))
404
- } else {
405
- newObj[key] = formatValuesToMoney(value, fieldsToFormat)
406
- }
407
- } else {
408
- newObj[key] = formatValuesToMoney((obj as any)[key], fieldsToFormat)
409
- }
410
- }
411
- }
412
- return newObj as T
413
- } else {
414
- return obj
415
- }
416
- }
417
-
418
- export function limitDecimais(value: string, limit: number): string {
419
- value = value.replace(/[^\d.]/g, '').replace(',', '.')
420
- const parts = value.split('.')
421
- const oldVal = value
422
-
423
- if (parts.length > 2) {
424
- return oldVal.slice(0, oldVal.length - 1)
425
- }
426
-
427
- if (parts.length > 1 && parts[1].length > limit) {
428
- return oldVal.slice(0, oldVal.length - (parts[1].length - limit))
429
- }
430
-
431
- return value
432
- }
@@ -1,60 +0,0 @@
1
- import { useCallback, useEffect, useState } from 'react'
2
-
3
- /**
4
- * Gancho personalizado para tornar os árbitros com estado
5
- *
6
- * @example
7
- * ```ts
8
- * const [inputRef, setInputRef] = useStateRef<HTMLInputElement | null>(null);
9
- *
10
- * <input type = "text" ref = {setInputRef} />
11
- * ```
12
- * @version 1.0.0
13
- * @ViniciusCLoeblein
14
- */
15
- export function useStateRef<T>(initialValue: T): [T, (node: T) => void] {
16
- const [state, setState] = useState(initialValue)
17
- const setRef = useCallback((node: T) => {
18
- setState(node)
19
- }, [])
20
- return [state, setRef]
21
- }
22
-
23
- /**
24
- * usa a dimensão passada por props para saber se a tela é menor, se for retorna True
25
- * @ViniciusCLoeblein @Flaviasoz
26
- * @version 1.2.0
27
- */
28
- export function useDimension(width: number): boolean {
29
- const [state, setState] = useState(false)
30
-
31
- const updateMobileState = useCallback(() => {
32
- const newMobile = window.innerWidth <= width
33
- if (newMobile !== state) {
34
- setState(newMobile)
35
- }
36
- }, [width, state])
37
-
38
- useEffect(() => {
39
- updateMobileState()
40
-
41
- window.addEventListener('resize', updateMobileState)
42
-
43
- return () => window.removeEventListener('resize', updateMobileState)
44
- }, [updateMobileState])
45
-
46
- return state
47
- }
48
-
49
- export const useWindowWidth = () => {
50
- const [width, setWidth] = useState(window.innerWidth)
51
-
52
- useEffect(() => {
53
- const handleResize = () => setWidth(window.innerWidth)
54
-
55
- window.addEventListener('resize', handleResize)
56
- return () => window.removeEventListener('resize', handleResize)
57
- }, [])
58
-
59
- return width
60
- }
package/src/index.tsx DELETED
@@ -1,2 +0,0 @@
1
- export { default as Input } from './components/Inputs/Input'
2
- export type { InputProps } from './components/Inputs/Input'
package/src/lib/utils.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type ClassValue, clsx } from 'clsx'
2
- import { twMerge } from 'tailwind-merge'
3
-
4
- export function cn(...inputs: ClassValue[]) {
5
- return twMerge(clsx(inputs))
6
- }
package/src/styles/sx.ts DELETED
@@ -1,148 +0,0 @@
1
- import { createTheme } from '@mui/material'
2
-
3
- export const sxTextField = {
4
- '& label.Mui-focused': {
5
- color: '#00B2A6',
6
- },
7
- '& .MuiFormHelperText-root': {
8
- margin: '1px 0px 0 1px',
9
- },
10
- '& .MuiInput-underline:after': {
11
- borderBottomColor: '#00B2A6',
12
- },
13
- '& .MuiOutlinedInput-root': {
14
- '& fieldset': {
15
- borderColor: '#00B2A6',
16
- },
17
- '&:hover fieldset': {
18
- borderColor: '#00B2A6',
19
- },
20
- '&.Mui-focused fieldset': {
21
- borderColor: '#00B2A6',
22
- },
23
- },
24
- '& .MuiOutlinedInput-root.Mui-disabled': {
25
- '& fieldset': {
26
- borderColor: '#00B2A6 !important',
27
- },
28
- '& .MuiOutlinedInput-notchedOutline': {
29
- borderColor: '#00B2A6 !important',
30
- },
31
- '& .MuiAutocomplete-input': {
32
- color: '#00B2A6 !important',
33
- },
34
- },
35
- }
36
-
37
- export const theme = createTheme({
38
- palette: {
39
- primary: {
40
- main: '#00B2A6',
41
- light: '#019F95',
42
- dark: '#019F95',
43
- contrastText: '#FFFFFF',
44
- },
45
- secondary: {
46
- main: '#13477B',
47
- light: '#34495E',
48
- dark: '#1565c0',
49
- contrastText: '#FFFFFF',
50
- },
51
- error: {
52
- main: '#EF4058',
53
- light: '#CA3449',
54
- dark: '#CA3449',
55
- contrastText: '#FFFFFF',
56
- },
57
- warning: {
58
- main: '#ECC005',
59
- light: '#E0B605',
60
- dark: '#E0B605',
61
- contrastText: '#FFFFFF',
62
- },
63
- info: {
64
- main: '#FFFFFF',
65
- light: '#FFFFFF',
66
- dark: '#FFFFFF',
67
- contrastText: '#FFFFFF',
68
- },
69
- },
70
- })
71
-
72
- export const sx = {
73
- '& label.Mui-focused': {
74
- color: '#00B2A6',
75
- // fontFamily: 'Montserrat, sans-serif', // Fonte Montserrat
76
- // fontWeight: '600', // Defina o peso da fonte como semi bold
77
- },
78
- '& .MuiFormHelperText-root': {
79
- margin: '1px 0px 0 1px',
80
- },
81
- '& .MuiInput-underline:after': {
82
- borderBottomColor: '#00B2A6',
83
- },
84
- '& .MuiOutlinedInput-root': {
85
- '& fieldset': {
86
- borderColor: '#00B2A6',
87
- },
88
- '&:hover fieldset': {
89
- borderColor: '#00B2A6',
90
- },
91
- '&.Mui-focused fieldset': {
92
- borderColor: '#00B2A6',
93
- },
94
- },
95
- }
96
-
97
- export const standard = {
98
- '& .MuiInput-underline:before': {
99
- borderBottomColor: 'whitesmoke',
100
- },
101
- '& .MuiFormHelperText-root': {
102
- margin: '1px 0px 0 1px',
103
- },
104
- '& .MuiInputLabel-root': {
105
- color: 'white',
106
- },
107
- '& .MuiInputBase-root': {
108
- color: 'white',
109
- },
110
- '& .MuiInput-underline:hover:not(.Mui-disabled):before': {
111
- borderBottomColor: 'white',
112
- },
113
- }
114
-
115
- export const sxAutoComplete = {
116
- '& label.Mui-focused': {
117
- color: '#00B2A6',
118
- },
119
- '& .MuiFormHelperText-root': {
120
- margin: '1px 0px 0 1px',
121
- },
122
- '& .MuiInput-underline:after': {
123
- borderBottomColor: '#00B2A6',
124
- },
125
- '& .MuiOutlinedInput-root': {
126
- '& fieldset': {
127
- borderColor: '#00B2A6',
128
- },
129
- '&:hover fieldset': {
130
- borderColor: '#00B2A6',
131
- },
132
- '&.Mui-focused fieldset': {
133
- borderColor: '#00B2A6',
134
- },
135
- },
136
- // Estilização para o botão desabilitado usando pseudoseletor :disabled
137
- '& .MuiOutlinedInput-root.Mui-disabled': {
138
- '& fieldset': {
139
- borderColor: '#00B2A6 !important',
140
- },
141
- '& .MuiOutlinedInput-notchedOutline': {
142
- borderColor: '#00B2A6 !important',
143
- },
144
- '& .MuiAutocomplete-input': {
145
- color: '#00B2A6 !important',
146
- },
147
- },
148
- }