@pipelinesolucoes/form 1.0.0-beta.7 → 1.2.0-beta.10

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 (84) hide show
  1. package/README.md +2 -2
  2. package/dist/components/NotificationSnackbar.d.ts +1 -2
  3. package/dist/components/NotificationSnackbar.js +2 -2
  4. package/dist/components/NotificationSnackbar.js.map +1 -1
  5. package/dist/components/SelectField.d.ts +73 -0
  6. package/dist/components/SelectField.js +140 -0
  7. package/dist/components/SelectField.js.map +1 -0
  8. package/dist/components/TextFieldPassword.d.ts +7 -33
  9. package/dist/components/TextFieldPassword.js +34 -23
  10. package/dist/components/TextFieldPassword.js.map +1 -1
  11. package/dist/components/TextFieldValidate.d.ts +8 -15
  12. package/dist/components/TextFieldValidate.js +47 -44
  13. package/dist/components/TextFieldValidate.js.map +1 -1
  14. package/dist/components/login/ClickResult.d.ts +11 -0
  15. package/dist/components/login/ClickResult.js +2 -0
  16. package/dist/components/login/ClickResult.js.map +1 -0
  17. package/dist/components/login/FormLogin.d.ts +150 -0
  18. package/dist/components/login/FormLogin.js +221 -0
  19. package/dist/components/login/FormLogin.js.map +1 -0
  20. package/dist/components/login/FormPasswordRecovery.d.ts +129 -0
  21. package/dist/components/login/FormPasswordRecovery.js +196 -0
  22. package/dist/components/login/FormPasswordRecovery.js.map +1 -0
  23. package/dist/components/login/FormSignUp.d.ts +147 -0
  24. package/dist/components/login/FormSignUp.js +215 -0
  25. package/dist/components/login/FormSignUp.js.map +1 -0
  26. package/dist/components/login/GoogleButton.d.ts +1 -4
  27. package/dist/components/login/GoogleButton.js.map +1 -1
  28. package/dist/components/login/StyleLogin.d.ts +14 -0
  29. package/dist/components/login/StyleLogin.js +57 -0
  30. package/dist/components/login/StyleLogin.js.map +1 -0
  31. package/dist/components/{FormStyled.d.ts → recaptcha/FormStyled.d.ts} +1 -8
  32. package/dist/components/{FormStyled.js → recaptcha/FormStyled.js} +0 -13
  33. package/dist/components/recaptcha/FormStyled.js.map +1 -0
  34. package/dist/components/recaptcha/RecaptchaForm.js +1 -1
  35. package/dist/components/recaptcha/RecaptchaForm.js.map +1 -1
  36. package/dist/components/style/ButtonFormStyled.d.ts +2 -0
  37. package/dist/components/style/ButtonFormStyled.js +22 -0
  38. package/dist/components/style/ButtonFormStyled.js.map +1 -0
  39. package/dist/components/style/LinkFormStyled.d.ts +7 -0
  40. package/dist/components/style/LinkFormStyled.js +15 -0
  41. package/dist/components/style/LinkFormStyled.js.map +1 -0
  42. package/dist/index.d.ts +4 -7
  43. package/dist/index.js +4 -3
  44. package/dist/index.js.map +1 -1
  45. package/dist/theme.d.ts +2 -2
  46. package/dist/theme.js +46 -20
  47. package/dist/theme.js.map +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/dist/types/FieldProps.d.ts +4 -0
  50. package/package.json +9 -5
  51. package/dist/components/ButtonFormStyled.d.ts +0 -2
  52. package/dist/components/ButtonFormStyled.js +0 -22
  53. package/dist/components/ButtonFormStyled.js.map +0 -1
  54. package/dist/components/FormStyled.js.map +0 -1
  55. package/dist/components/login/LoginForm.d.ts +0 -161
  56. package/dist/components/login/LoginForm.js +0 -198
  57. package/dist/components/login/LoginForm.js.map +0 -1
  58. package/dist/components/login/PasswordRecoveryForm.d.ts +0 -142
  59. package/dist/components/login/PasswordRecoveryForm.js +0 -169
  60. package/dist/components/login/PasswordRecoveryForm.js.map +0 -1
  61. package/dist/components/login/SignUpForm.d.ts +0 -26
  62. package/dist/components/login/SignUpForm.js +0 -138
  63. package/dist/components/login/SignUpForm.js.map +0 -1
  64. package/dist/mui-theme.d.ts +0 -33
  65. package/dist/mui-theme.js +0 -2
  66. package/dist/mui-theme.js.map +0 -1
  67. package/dist/pages/_app.d.ts +0 -2
  68. package/dist/pages/_app.js +0 -20
  69. package/dist/pages/_app.js.map +0 -1
  70. package/dist/pages/_document.d.ts +0 -9
  71. package/dist/pages/_document.js +0 -33
  72. package/dist/pages/_document.js.map +0 -1
  73. package/dist/types/BorderProps.d.ts +0 -6
  74. package/dist/types/BorderProps.js +0 -2
  75. package/dist/types/BorderProps.js.map +0 -1
  76. package/dist/types/ColorProps.d.ts +0 -9
  77. package/dist/types/ColorProps.js +0 -2
  78. package/dist/types/ColorProps.js.map +0 -1
  79. package/dist/types/LayoutProps.d.ts +0 -7
  80. package/dist/types/LayoutProps.js +0 -2
  81. package/dist/types/LayoutProps.js.map +0 -1
  82. package/dist/types/TextProps.d.ts +0 -5
  83. package/dist/types/TextProps.js +0 -2
  84. package/dist/types/TextProps.js.map +0 -1
@@ -1,9 +1,13 @@
1
1
  export interface FieldProps {
2
2
  backgroundField?: string;
3
3
  colorField?: string;
4
+ backgroundDisabledField?: string;
5
+ colorDisabledField?: string;
6
+ backgroundFocusedField?: string;
4
7
  colorFocusedField?: string;
5
8
  borderRadiusField?: string;
6
9
  boxShadowField?: string;
7
10
  borderColorField?: string;
8
11
  paddingField?: string;
12
+ marginField?: string;
9
13
  }
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@pipelinesolucoes/form",
3
- "version": "1.0.0-beta.7",
3
+ "version": "1.2.0-beta.10",
4
+ "license": "UNLICENSED",
4
5
  "repository": {
5
6
  "type": "git",
6
7
  "url": "https://github.com/pipeline-solucoes/form.git"
@@ -31,11 +32,14 @@
31
32
  }
32
33
  },
33
34
  "scripts": {
34
- "build": "tsc && node scripts/copy-theme-dts.cjs",
35
+ "build": "tsc",
35
36
  "lint": "eslint .",
36
- "prepublishOnly": "npm run build"
37
+ "prepublishOnly": "npm run build",
38
+ "release-theme-beta": "npm uninstall @pipelinesolucoes/theme && npm install @pipelinesolucoes/theme@beta",
39
+ "release-theme": "npm uninstall @pipelinesolucoes/theme && npm install @pipelinesolucoes/theme"
37
40
  },
38
41
  "dependencies": {
42
+ "@pipelinesolucoes/theme": "^1.0.7-beta.1",
39
43
  "react-google-recaptcha": "^3.1.0"
40
44
  },
41
45
  "peerDependencies": {
@@ -60,8 +64,8 @@
60
64
  "@types/react-google-recaptcha": "^2.1.9",
61
65
  "@types/react-input-mask": "^3.0.6",
62
66
  "eslint": "^9",
63
- "eslint-config-next": "15.1.6",
64
- "next": "^16.0.7",
67
+ "eslint-config-next": "15.1.6",
68
+ "next": "^16.0.7",
65
69
  "typescript": "^5"
66
70
  }
67
71
  }
@@ -1,2 +0,0 @@
1
- import { ButtonProps } from "../types/ButtonProps";
2
- export declare const ButtonFormStyled: import("@emotion/styled").StyledComponent<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "variant" | "classes" | "className" | "style" | "children" | "color" | "disabled" | "fullWidth" | "size" | "sx" | "tabIndex" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "href" | "disableElevation" | "disableFocusRipple" | "endIcon" | "loading" | "loadingIndicator" | "loadingPosition" | "startIcon"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & ButtonProps, {}, {}>;
@@ -1,22 +0,0 @@
1
- import { BUTTON_STYLE_FORWARD_PROPS } from "../types/ButtonProps";
2
- import { Button, styled } from "@mui/material";
3
- export const ButtonFormStyled = styled(Button, {
4
- shouldForwardProp: (prop) => !BUTTON_STYLE_FORWARD_PROPS.includes(prop),
5
- })(({ backgroundButton, backgroundHoverButton, colorButton, colorHoverButton, borderRadiusButton, borderButton, boxShadowButton, widthButton, heightButton, paddingButton, marginButton, }) => ({
6
- color: colorButton,
7
- background: backgroundButton,
8
- borderRadius: borderRadiusButton,
9
- textTransform: "none",
10
- cursor: "pointer",
11
- padding: paddingButton,
12
- boxShadow: boxShadowButton,
13
- width: widthButton,
14
- height: heightButton,
15
- border: borderButton,
16
- margin: marginButton,
17
- "&:hover": {
18
- background: backgroundHoverButton,
19
- color: colorHoverButton,
20
- },
21
- }));
22
- //# sourceMappingURL=ButtonFormStyled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonFormStyled.js","sourceRoot":"","sources":["../../src/components/ButtonFormStyled.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IAC3C,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAyB,CAAC;CAC/F,CAAC,CACA,CAAC,EACC,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,GACb,EAAE,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,MAAM;IACrB,MAAM,EAAE,SAAS;IAEjB,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IAEpB,SAAS,EAAE;QACT,UAAU,EAAE,qBAAqB;QACjC,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormStyled.js","sourceRoot":"","sources":["../../src/components/FormStyled.tsx"],"names":[],"mappings":"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"}
@@ -1,161 +0,0 @@
1
- import React from 'react';
2
- import { TypographyVariant } from '@mui/material/styles';
3
- import { SvgIconProps } from '@mui/material';
4
- import { ButtonProps } from '../../types/ButtonProps';
5
- import { FieldProps } from '@/types/FieldProps';
6
- import { ColorProps } from '../../types/ColorProps';
7
- import { BorderProps } from '../../types/BorderProps';
8
- /**
9
- * Retorno do onClick/onSubmit do componente pai.
10
- * - success: define se a ação foi bem sucedida
11
- * - message: mensagem para exibir no próprio LoginForm
12
- * - color: cor opcional para a mensagem (caso queira sobrescrever as cores padrão)
13
- */
14
- export interface ClickResult {
15
- success: boolean;
16
- message: string;
17
- color?: string;
18
- }
19
- export interface LoginFormProps extends ColorProps, BorderProps, ButtonProps, FieldProps {
20
- Icon?: React.ElementType<SvgIconProps>;
21
- titulo?: () => React.ReactElement;
22
- googleButton: () => React.ReactElement;
23
- color: string;
24
- background?: string;
25
- borderRadius?: string;
26
- border?: string;
27
- boxShadow?: string;
28
- backgroundField?: string;
29
- colorField?: string;
30
- colorFocusedField?: string;
31
- borderRadiusField?: string;
32
- boxShadowField?: string;
33
- borderColorField?: string;
34
- paddingField?: string;
35
- textButton?: string;
36
- variantButton?: TypographyVariant;
37
- backgroundButton?: string;
38
- backgroundHoverButton?: string;
39
- colorButton?: string;
40
- colorHoverButton?: string;
41
- borderRadiusButton?: string;
42
- borderButton?: string;
43
- boxShadowButton?: string;
44
- widthButton?: string;
45
- heightButton?: string;
46
- paddingButton?: string;
47
- marginButton?: string;
48
- /** Cores padrão para mensagem (caso o pai não retorne color no ClickResult) */
49
- color_message_sucess: string;
50
- color_message_erro: string;
51
- color_link: string;
52
- color_separador: string;
53
- urlRecuperarConta: string;
54
- urlCriarConta: string;
55
- children?: React.ReactNode;
56
- /**
57
- * Evento disparado ao clicar no botão principal.
58
- * O componente pai devolve a mensagem e o sucesso/erro.
59
- */
60
- onClick?: (data: {
61
- email: string;
62
- password: string;
63
- }) => Promise<ClickResult> | ClickResult;
64
- }
65
- /**
66
- * Componente de formulário de login com suporte a autenticação via Google e login por email/senha.
67
- * Inclui validação básica de email, exibição de mensagens de erro/sucesso retornadas pelo handler `onClick`
68
- * e customização visual via props (container, campos, botão e links).
69
- *
70
- * @param {string} urlRecuperarConta URL para a página de recuperação de conta/senha. Obrigatório.
71
- * @param {string} urlCriarConta URL para a página de criação de conta. Obrigatório.
72
- * @param {React.ElementType<SvgIconProps>} [Icon] Ícone opcional (MUI SvgIcon) exibido no topo do formulário.
73
- * @param {() => React.ReactElement} [titulo] Função que retorna o conteúdo do título exibido no topo do formulário.
74
- * @param {() => React.ReactElement} googleButton Função que retorna o botão de login com Google. Obrigatório.
75
- *
76
- * @param {string} color Cor usada em alguns textos/containers auxiliares (ex.: wrapper dos links). Obrigatório.
77
- * @param {string} [background='transparent'] Cor de fundo do container principal.
78
- * @param {string} [borderRadius='0'] Raio da borda do container principal.
79
- * @param {string} [border='none'] Borda do container principal.
80
- * @param {string} [boxShadow='none'] Sombra do container principal.
81
- *
82
- * @param {string} [backgroundField='transparent'] Fundo dos campos (email/senha).
83
- * @param {string} [colorField='#000'] Cor do texto dos campos (email/senha).
84
- * @param {string} [colorFocusedField] Cor do estado focado do campo (se suportado pelos campos internos).
85
- * @param {string} [borderRadiusField='0px'] Raio da borda dos campos.
86
- * @param {string} [boxShadowField='none'] Sombra dos campos.
87
- * @param {string} [borderColorField='#ccc'] Cor da borda dos campos.
88
- * @param {string} [paddingField='4px 8px'] Espaçamento interno dos campos.
89
- *
90
- * @param {string} [textButton='Enviar'] Texto do botão principal.
91
- * @param {TypographyVariant} [variantButton='body1'] Variante do Typography usada no texto do botão.
92
- * @param {string} [backgroundButton='transparent'] Fundo do botão principal.
93
- * @param {string} [backgroundHoverButton='transparent'] Fundo do botão no hover.
94
- * @param {string} [colorButton='#000'] Cor do texto do botão.
95
- * @param {string} [colorHoverButton='#000'] Cor do texto do botão no hover.
96
- * @param {string} [borderRadiusButton='0'] Raio da borda do botão.
97
- * @param {string} [borderButton='none'] Borda do botão.
98
- * @param {string} [boxShadowButton='none'] Sombra do botão.
99
- * @param {string} [widthButton='auto'] Largura do botão.
100
- * @param {string} [heightButton='auto'] Altura do botão.
101
- * @param {string} [paddingButton='4px 24px'] Padding do botão.
102
- * @param {string} [marginButton='0'] Margem do botão.
103
- *
104
- * @param {string} color_message_sucess Cor padrão para mensagem de sucesso (caso `onClick` não retorne `color`). Obrigatório.
105
- * @param {string} color_message_erro Cor padrão para mensagem de erro (caso `onClick` não retorne `color`). Obrigatório.
106
- * @param {string} color_link Cor aplicada nos links "Esqueceu sua senha?" e "Criar conta". Obrigatório.
107
- * @param {string} color_separador Cor da linha separadora (Divider). Obrigatório.
108
- *
109
- * @param {(data: { email: string; password: string }) => Promise<ClickResult> | ClickResult} [onClick]
110
- * Handler chamado ao submeter o formulário. Recebe `{ email, password }` e deve retornar um `ClickResult`.
111
- * - Se `success` for `true`, exibe `message` com `color_message_sucess` (ou `result.color` se fornecida)
112
- * - Se `success` for `false`, exibe `message` com `color_message_erro` (ou `result.color` se fornecida)
113
- * Se não for informado, o componente exibirá a mensagem: "Nenhuma ação foi configurada para o botão.".
114
- *
115
- * @param {React.ReactNode} [children] Conteúdo extra renderizado ao final do container (abaixo da mensagem).
116
- *
117
- * @example
118
- * ```tsx
119
- * import LoginForm from '@/components/LoginForm';
120
- * import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
121
- * import { Button } from '@mui/material';
122
- *
123
- * export default function Example() {
124
- * return (
125
- * <LoginForm
126
- * urlRecuperarConta="/recuperar"
127
- * urlCriarConta="/cadastro"
128
- * Icon={LockOutlinedIcon}
129
- * titulo={() => <h2>Entrar</h2>}
130
- * googleButton={() => <Button variant="outlined">Continuar com Google</Button>}
131
- * color="#111"
132
- * background="#fff"
133
- * borderRadius="12px"
134
- * boxShadow="0 10px 30px rgba(0,0,0,0.08)"
135
- * backgroundField="#fafafa"
136
- * borderColorField="#e0e0e0"
137
- * paddingField="10px 12px"
138
- * textButton="Acessar"
139
- * backgroundButton="#111"
140
- * backgroundHoverButton="#000"
141
- * colorButton="#fff"
142
- * colorHoverButton="#fff"
143
- * borderRadiusButton="10px"
144
- * paddingButton="10px 16px"
145
- * color_message_sucess="#1b5e20"
146
- * color_message_erro="#b71c1c"
147
- * color_link="#1976d2"
148
- * color_separador="#e0e0e0"
149
- * onClick={async ({ email, password }) => {
150
- * if (email === 'teste@exemplo.com' && password === '123') {
151
- * return { success: true, message: 'Login realizado com sucesso!' };
152
- * }
153
- * return { success: false, message: 'Email ou senha inválidos.' };
154
- * }}
155
- * />
156
- * );
157
- * }
158
- * ```
159
- */
160
- declare const LoginForm: React.FC<LoginFormProps>;
161
- export default LoginForm;
@@ -1,198 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { styled } from '@mui/material/styles';
5
- import { Box, Divider, Typography } from '@mui/material';
6
- import { LinkFormStyled } from '../FormStyled';
7
- import { ButtonFormStyled } from '../ButtonFormStyled';
8
- import { validateEmailMessage } from '../../utils/validateEmail';
9
- import TextFieldValidate from '../TextFieldValidate';
10
- import TextFieldPassword from '../TextFieldPassword';
11
- const FormContainer = styled('div')(() => ({
12
- display: 'flex',
13
- flexDirection: 'column',
14
- gap: '16px',
15
- width: '100%',
16
- margin: 'auto',
17
- padding: '0px',
18
- }));
19
- const DivPassword = styled('div')(() => ({
20
- display: 'flex',
21
- flexDirection: 'column',
22
- gap: '8px',
23
- width: '100%',
24
- margin: '0',
25
- padding: '0',
26
- }));
27
- const DivTitulo = styled('div')(() => ({
28
- display: 'flex',
29
- flexDirection: 'column',
30
- gap: '8px',
31
- width: '100%',
32
- margin: '0',
33
- padding: '0',
34
- alignItems: 'center',
35
- justifyContent: 'center',
36
- }));
37
- const DivLink = styled('div', {
38
- shouldForwardProp: (prop) => !['text_color', 'align'].includes(prop),
39
- })(({ text_color, align }) => ({
40
- display: 'flex',
41
- flexDirection: 'row',
42
- alignItems: 'center',
43
- justifyContent: align,
44
- width: '100%',
45
- padding: '0',
46
- flex: '1',
47
- color: text_color,
48
- }));
49
- /**
50
- * Componente de formulário de login com suporte a autenticação via Google e login por email/senha.
51
- * Inclui validação básica de email, exibição de mensagens de erro/sucesso retornadas pelo handler `onClick`
52
- * e customização visual via props (container, campos, botão e links).
53
- *
54
- * @param {string} urlRecuperarConta URL para a página de recuperação de conta/senha. Obrigatório.
55
- * @param {string} urlCriarConta URL para a página de criação de conta. Obrigatório.
56
- * @param {React.ElementType<SvgIconProps>} [Icon] Ícone opcional (MUI SvgIcon) exibido no topo do formulário.
57
- * @param {() => React.ReactElement} [titulo] Função que retorna o conteúdo do título exibido no topo do formulário.
58
- * @param {() => React.ReactElement} googleButton Função que retorna o botão de login com Google. Obrigatório.
59
- *
60
- * @param {string} color Cor usada em alguns textos/containers auxiliares (ex.: wrapper dos links). Obrigatório.
61
- * @param {string} [background='transparent'] Cor de fundo do container principal.
62
- * @param {string} [borderRadius='0'] Raio da borda do container principal.
63
- * @param {string} [border='none'] Borda do container principal.
64
- * @param {string} [boxShadow='none'] Sombra do container principal.
65
- *
66
- * @param {string} [backgroundField='transparent'] Fundo dos campos (email/senha).
67
- * @param {string} [colorField='#000'] Cor do texto dos campos (email/senha).
68
- * @param {string} [colorFocusedField] Cor do estado focado do campo (se suportado pelos campos internos).
69
- * @param {string} [borderRadiusField='0px'] Raio da borda dos campos.
70
- * @param {string} [boxShadowField='none'] Sombra dos campos.
71
- * @param {string} [borderColorField='#ccc'] Cor da borda dos campos.
72
- * @param {string} [paddingField='4px 8px'] Espaçamento interno dos campos.
73
- *
74
- * @param {string} [textButton='Enviar'] Texto do botão principal.
75
- * @param {TypographyVariant} [variantButton='body1'] Variante do Typography usada no texto do botão.
76
- * @param {string} [backgroundButton='transparent'] Fundo do botão principal.
77
- * @param {string} [backgroundHoverButton='transparent'] Fundo do botão no hover.
78
- * @param {string} [colorButton='#000'] Cor do texto do botão.
79
- * @param {string} [colorHoverButton='#000'] Cor do texto do botão no hover.
80
- * @param {string} [borderRadiusButton='0'] Raio da borda do botão.
81
- * @param {string} [borderButton='none'] Borda do botão.
82
- * @param {string} [boxShadowButton='none'] Sombra do botão.
83
- * @param {string} [widthButton='auto'] Largura do botão.
84
- * @param {string} [heightButton='auto'] Altura do botão.
85
- * @param {string} [paddingButton='4px 24px'] Padding do botão.
86
- * @param {string} [marginButton='0'] Margem do botão.
87
- *
88
- * @param {string} color_message_sucess Cor padrão para mensagem de sucesso (caso `onClick` não retorne `color`). Obrigatório.
89
- * @param {string} color_message_erro Cor padrão para mensagem de erro (caso `onClick` não retorne `color`). Obrigatório.
90
- * @param {string} color_link Cor aplicada nos links "Esqueceu sua senha?" e "Criar conta". Obrigatório.
91
- * @param {string} color_separador Cor da linha separadora (Divider). Obrigatório.
92
- *
93
- * @param {(data: { email: string; password: string }) => Promise<ClickResult> | ClickResult} [onClick]
94
- * Handler chamado ao submeter o formulário. Recebe `{ email, password }` e deve retornar um `ClickResult`.
95
- * - Se `success` for `true`, exibe `message` com `color_message_sucess` (ou `result.color` se fornecida)
96
- * - Se `success` for `false`, exibe `message` com `color_message_erro` (ou `result.color` se fornecida)
97
- * Se não for informado, o componente exibirá a mensagem: "Nenhuma ação foi configurada para o botão.".
98
- *
99
- * @param {React.ReactNode} [children] Conteúdo extra renderizado ao final do container (abaixo da mensagem).
100
- *
101
- * @example
102
- * ```tsx
103
- * import LoginForm from '@/components/LoginForm';
104
- * import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
105
- * import { Button } from '@mui/material';
106
- *
107
- * export default function Example() {
108
- * return (
109
- * <LoginForm
110
- * urlRecuperarConta="/recuperar"
111
- * urlCriarConta="/cadastro"
112
- * Icon={LockOutlinedIcon}
113
- * titulo={() => <h2>Entrar</h2>}
114
- * googleButton={() => <Button variant="outlined">Continuar com Google</Button>}
115
- * color="#111"
116
- * background="#fff"
117
- * borderRadius="12px"
118
- * boxShadow="0 10px 30px rgba(0,0,0,0.08)"
119
- * backgroundField="#fafafa"
120
- * borderColorField="#e0e0e0"
121
- * paddingField="10px 12px"
122
- * textButton="Acessar"
123
- * backgroundButton="#111"
124
- * backgroundHoverButton="#000"
125
- * colorButton="#fff"
126
- * colorHoverButton="#fff"
127
- * borderRadiusButton="10px"
128
- * paddingButton="10px 16px"
129
- * color_message_sucess="#1b5e20"
130
- * color_message_erro="#b71c1c"
131
- * color_link="#1976d2"
132
- * color_separador="#e0e0e0"
133
- * onClick={async ({ email, password }) => {
134
- * if (email === 'teste@exemplo.com' && password === '123') {
135
- * return { success: true, message: 'Login realizado com sucesso!' };
136
- * }
137
- * return { success: false, message: 'Email ou senha inválidos.' };
138
- * }}
139
- * />
140
- * );
141
- * }
142
- * ```
143
- */
144
- const LoginForm = ({ urlRecuperarConta, urlCriarConta, Icon, titulo, googleButton, color, background = 'transparent', borderRadius = '0', border = 'none', boxShadow = 'none', backgroundField = 'transparent', colorField = '#000', borderRadiusField = '0px', boxShadowField = 'none', borderColorField = '#ccc', paddingField = '4px 8px', textButton = 'Enviar', variantButton = 'body1', backgroundButton = 'transparent', backgroundHoverButton = 'transparent', colorButton = '#000', colorHoverButton = '#000', borderRadiusButton = '0', borderButton = 'none', boxShadowButton = 'none', widthButton = 'auto', heightButton = 'auto', paddingButton = '4px 24px', marginButton = '0', color_message_sucess, color_message_erro, color_link, color_separador, onClick, children, }) => {
145
- const [mensagemApi, setMensagemApi] = useState('');
146
- const [corMensagemApi, setCorMensagemApi] = useState(color_message_erro);
147
- const [email, setEmail] = useState('');
148
- const [password, setPassword] = useState('');
149
- const [errors, setErrors] = useState({});
150
- const [isLoading, setIsLoading] = useState(false);
151
- const validateEmail = (value) => /\S+@\S+\.\S+/.test(value);
152
- const handleClick = async (e) => {
153
- var _a, _b, _c;
154
- e.preventDefault();
155
- // validação local básica (mantém o comportamento atual)
156
- const newErrors = {
157
- email: !validateEmail(email),
158
- };
159
- setErrors(newErrors);
160
- const hasErrors = Object.values(newErrors).some(Boolean);
161
- if (hasErrors) {
162
- setCorMensagemApi(color_message_erro);
163
- setMensagemApi('Alguns dos dados fornecidos estão inválidos. Por favor, revise as informações preenchidas e corrija os campos destacados.');
164
- return;
165
- }
166
- setIsLoading(true);
167
- setMensagemApi('');
168
- try {
169
- if (!onClick) {
170
- // Se o pai não passou handler, mantém feedback amigável
171
- setCorMensagemApi(color_message_erro);
172
- setMensagemApi('Nenhuma ação foi configurada para o botão.');
173
- return;
174
- }
175
- const result = await onClick({ email, password });
176
- if (result === null || result === void 0 ? void 0 : result.success) {
177
- setCorMensagemApi((_a = result.color) !== null && _a !== void 0 ? _a : color_message_sucess);
178
- setMensagemApi(result.message);
179
- }
180
- else {
181
- setCorMensagemApi((_b = result.color) !== null && _b !== void 0 ? _b : color_message_erro);
182
- setMensagemApi((_c = result === null || result === void 0 ? void 0 : result.message) !== null && _c !== void 0 ? _c : 'Falha ao realizar a operação.');
183
- }
184
- }
185
- catch (err) {
186
- setCorMensagemApi(color_message_erro);
187
- setMensagemApi('Erro inesperado ao processar a solicitação.');
188
- }
189
- finally {
190
- setIsLoading(false);
191
- }
192
- };
193
- return (_jsxs(Box, { display: "flex", flexDirection: "column", justifyContent: "center", gap: "24px", flex: 1, sx: { padding: '24px', borderRadius: borderRadius,
194
- background: background, border: border,
195
- boxShadow: boxShadow }, children: [(Icon || titulo) && (_jsxs(DivTitulo, { children: [Icon && _jsx(Icon, {}), titulo && titulo()] })), _jsxs(FormContainer, { children: [googleButton && googleButton(), _jsx(Divider, { sx: { borderColor: color_separador }, children: "ou" }), _jsx(TextFieldValidate, { id: "email", label: "Email", placeholder: "Email", background: backgroundField, color: colorField, borderRadius: borderRadiusField, borderColor: borderColorField, boxShadow: boxShadowField, padding: paddingField, value: email, onChange: (e) => setEmail(e.target.value), required: true, requiredMessage: "Campo obrigat\u00F3rio", validate: validateEmailMessage, showErrorOn: "blur" }), _jsxs(DivPassword, { children: [_jsx(TextFieldPassword, { id: "password", label: "Senha", placeholder: "Senha", required: true, background: backgroundField, color: colorField, borderRadius: borderRadiusField, borderColor: borderColorField, boxShadow: boxShadowField, padding: paddingField, value: password, onPasswordChange: (p) => setPassword(p) }), _jsx(DivLink, { text_color: color, align: "flex-start", children: _jsx(LinkFormStyled, { href: urlRecuperarConta, width: "auto", height: "auto", text_color: color_link, font_size: "0.8rem", children: "Esqueceu sua senha?" }) })] }), _jsx(ButtonFormStyled, { backgroundButton: backgroundButton, backgroundHoverButton: backgroundHoverButton, colorButton: colorButton, colorHoverButton: colorHoverButton, borderRadiusButton: borderRadiusButton, borderButton: borderButton, boxShadowButton: boxShadowButton, widthButton: widthButton, heightButton: heightButton, paddingButton: paddingButton, marginButton: marginButton, disabled: isLoading, onClick: handleClick, children: isLoading ? ('Enviando...') : (_jsx(Typography, { variant: variantButton, component: "span", children: textButton })) }), _jsx(DivLink, { text_color: color, align: "center", children: _jsx(LinkFormStyled, { href: urlCriarConta, width: "auto", height: "100%", text_color: color_link, margin: "0", children: "Criar conta" }) })] }), mensagemApi && (_jsx(Typography, { variant: "body2", sx: { color: corMensagemApi }, children: mensagemApi })), children] }));
196
- };
197
- export default LoginForm;
198
- //# sourceMappingURL=LoginForm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoginForm.js","sourceRoot":"","sources":["../../../src/components/login/LoginForm.tsx"],"names":[],"mappings":"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"}
@@ -1,142 +0,0 @@
1
- import React from 'react';
2
- import { TypographyVariant } from '@mui/material/styles';
3
- import { SvgIconProps } from '@mui/material';
4
- import { ButtonProps } from '../../types/ButtonProps';
5
- import { ColorProps } from '../../types/ColorProps';
6
- import { BorderProps } from '../../types/BorderProps';
7
- import { FieldProps } from '../../types/FieldProps';
8
- interface RecuperarSenhaSubmitResult {
9
- success: boolean;
10
- message: string;
11
- }
12
- interface PasswordRecoveryFormProps extends ButtonProps, ColorProps, BorderProps, FieldProps {
13
- Icon?: React.ElementType<SvgIconProps>;
14
- titulo?: () => React.ReactElement;
15
- subTitulo?: () => React.ReactElement;
16
- background?: string;
17
- borderRadius?: string;
18
- backgroundField?: string;
19
- colorField?: string;
20
- colorFocusedField?: string;
21
- borderRadiusField?: string;
22
- boxShadowField?: string;
23
- borderColorField?: string;
24
- paddingField?: string;
25
- textButton?: string;
26
- variantButton?: TypographyVariant;
27
- backgroundButton?: string;
28
- backgroundHoverButton?: string;
29
- colorButton?: string;
30
- colorHoverButton?: string;
31
- borderRadiusButton?: string;
32
- borderButton?: string;
33
- boxShadowButton?: string;
34
- widthButton?: string;
35
- heightButton?: string;
36
- paddingButton?: string;
37
- marginButton?: string;
38
- color_message_sucess: string;
39
- color_message_erro: string;
40
- /**
41
- * Callback assíncrono obrigatório: deve retornar sempre { success, message }.
42
- * A mensagem exibida no componente virá SEMPRE daqui.
43
- */
44
- onSubmit: (email: string) => Promise<RecuperarSenhaSubmitResult>;
45
- /**
46
- * Callback opcional com o resultado final do submit.
47
- */
48
- onResult?: (success: boolean) => void;
49
- children?: React.ReactNode;
50
- }
51
- /**
52
- * Componente de formulário para recuperação de senha via e-mail.
53
- * Faz a validação do e-mail, dispara um `onSubmit` assíncrono (obrigatório) e exibe a mensagem retornada.
54
- *
55
- * @param {React.ElementType<SvgIconProps>} [Icon] Ícone do Material UI exibido no topo do formulário.
56
- * @param {() => React.ReactElement} [titulo] Função que renderiza o título (ex.: <Typography />).
57
- * @param {() => React.ReactElement} [subTitulo] Função que renderiza o subtítulo (ex.: <Typography />).
58
- *
59
- * @param {string} [background='transparent'] Cor/estilo de fundo do container externo.
60
- * @param {string} [borderRadius='0px'] Borda arredondada do container externo.
61
- *
62
- * @param {string} [backgroundField='transparent'] Cor/estilo de fundo do campo de e-mail.
63
- * @param {string} [colorField='#000'] Cor do texto do campo de e-mail.
64
- * @param {string} [borderRadiusField='0px'] Borda arredondada do campo de e-mail.
65
- * @param {string} [boxShadowField='none'] Sombra do campo de e-mail.
66
- * @param {string} [borderColorField='#ccc'] Cor da borda do campo de e-mail.
67
- * @param {string} [paddingField='4px 8px'] Espaçamento interno do campo de e-mail.
68
- *
69
- * @param {string} [textButton='Enviar'] Texto exibido no botão quando não está carregando.
70
- * @param {TypographyVariant} [variantButton='body1'] Variant do Typography usado dentro do botão.
71
- * @param {string} [backgroundButton='transparent'] Cor/estilo de fundo do botão.
72
- * @param {string} [backgroundHoverButton='transparent'] Cor/estilo de fundo do botão no hover.
73
- * @param {string} [colorButton='#000'] Cor do texto do botão.
74
- * @param {string} [colorHoverButton='#000'] Cor do texto do botão no hover.
75
- * @param {string} [borderRadiusButton='0'] Borda arredondada do botão.
76
- * @param {string} [borderButton='none'] Borda do botão.
77
- * @param {string} [boxShadowButton='none'] Sombra do botão.
78
- * @param {string} [widthButton='auto'] Largura do botão.
79
- * @param {string} [heightButton='auto'] Altura do botão.
80
- * @param {string} [paddingButton='4px 24px'] Espaçamento interno do botão.
81
- * @param {string} [marginButton='0'] Margem externa do botão.
82
- *
83
- * @param {string} color_message_sucess Cor aplicada na mensagem quando o submit retorna sucesso.
84
- * @param {string} color_message_erro Cor aplicada na mensagem quando o submit retorna erro ou validação falha.
85
- *
86
- * @param {(email: string) => Promise<{ success: boolean; message: string }>} onSubmit
87
- * Callback assíncrono obrigatório chamado após validação do e-mail. Deve retornar `{ success, message }`.
88
- *
89
- * @param {(success: boolean) => void} [onResult]
90
- * Callback opcional disparado com o resultado final (true/false) após o submit (ou validação falhar).
91
- *
92
- * @param {React.ReactNode} [children] Conteúdo extra renderizado abaixo do formulário (ex.: links, textos auxiliares).
93
- *
94
- * @example
95
- * ```tsx
96
- * import RecuperarSenhaForm from '@/components/RecuperarSenhaForm';
97
- * import { Typography } from '@mui/material';
98
- *
99
- * const Page = () => {
100
- * return (
101
- * <RecuperarSenhaForm
102
- * titulo={() => <Typography variant="h5">Recuperar senha</Typography>}
103
- * subTitulo={() => <Typography variant="body2">Digite seu e-mail para receber o link.</Typography>}
104
- * background="#fff"
105
- * borderRadius="12px"
106
- * backgroundField="#fafafa"
107
- * borderRadiusField="8px"
108
- * borderColorField="#e0e0e0"
109
- * paddingField="10px 12px"
110
- * textButton="Enviar link"
111
- * variantButton="button"
112
- * backgroundButton="#1976d2"
113
- * backgroundHoverButton="#1565c0"
114
- * colorButton="#fff"
115
- * colorHoverButton="#fff"
116
- * borderRadiusButton="10px"
117
- * widthButton="100%"
118
- * color_message_sucess="green"
119
- * color_message_erro="red"
120
- * onSubmit={async (email) => {
121
- * const response = await fetch('/api/recover', {
122
- * method: 'POST',
123
- * headers: { 'Content-Type': 'application/json' },
124
- * body: JSON.stringify({ email }),
125
- * });
126
- *
127
- * if (!response.ok) {
128
- * return { success: false, message: 'Falha ao enviar o e-mail. Tente novamente.' };
129
- * }
130
- *
131
- * return { success: true, message: 'Se o e-mail existir, enviaremos um link de recuperação.' };
132
- * }}
133
- * onResult={(success) => console.log('Resultado:', success)}
134
- * >
135
- * <Typography variant="caption">Verifique também sua caixa de spam.</Typography>
136
- * </RecuperarSenhaForm>
137
- * );
138
- * };
139
- * ```
140
- */
141
- declare const PasswordRecoveryForm: React.FC<PasswordRecoveryFormProps>;
142
- export default PasswordRecoveryForm;