@lets-events/react 12.10.17 → 12.11.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 (98) hide show
  1. package/.eslintrc.json +2 -2
  2. package/.turbo/turbo-build.log +21 -19
  3. package/CHANGELOG.md +12 -0
  4. package/dist/index.d.mts +19 -7
  5. package/dist/index.d.ts +19 -7
  6. package/dist/index.js +422 -264
  7. package/dist/index.mjs +432 -274
  8. package/package.json +1 -1
  9. package/src/components/Alert.tsx +303 -303
  10. package/src/components/Avatar.tsx +55 -55
  11. package/src/components/Badge.tsx +132 -132
  12. package/src/components/Box.tsx +3 -3
  13. package/src/components/Button/index.tsx +85 -85
  14. package/src/components/Button/styledComponents.ts +361 -361
  15. package/src/components/ButtonGroup.tsx +484 -484
  16. package/src/components/Calendar/index.tsx +168 -168
  17. package/src/components/Calendar/styledComponents.ts +480 -480
  18. package/src/components/Card.tsx +74 -74
  19. package/src/components/CheckboxGroup.tsx +176 -176
  20. package/src/components/Container.tsx +39 -39
  21. package/src/components/Divider.tsx +7 -7
  22. package/src/components/DoubleCalendar/index.tsx +204 -204
  23. package/src/components/Drawer/index.tsx +113 -113
  24. package/src/components/Drawer/styledComponents.ts +97 -97
  25. package/src/components/Dropdown.tsx +302 -302
  26. package/src/components/Filter.tsx +164 -164
  27. package/src/components/Flex.tsx +130 -130
  28. package/src/components/FormFields/AddressFormFields/CityFormField.tsx +111 -111
  29. package/src/components/FormFields/AddressFormFields/CountryFormField.tsx +33 -33
  30. package/src/components/FormFields/AddressFormFields/PostalCodeFormField.tsx +39 -39
  31. package/src/components/FormFields/AddressFormFields/StateFormField.tsx +32 -32
  32. package/src/components/FormFields/AddressFormFields/index.tsx +141 -141
  33. package/src/components/FormFields/BirthDateFormField.tsx +84 -84
  34. package/src/components/FormFields/CNPJFormField.tsx +87 -87
  35. package/src/components/FormFields/CPFFormField.tsx +78 -78
  36. package/src/components/FormFields/CalendarFormField.tsx +98 -98
  37. package/src/components/FormFields/CheckboxGroupFormField.tsx +91 -91
  38. package/src/components/FormFields/DateAndTimeFormField.tsx +217 -217
  39. package/src/components/FormFields/DoubleCalendarFormField.tsx +96 -96
  40. package/src/components/FormFields/EmailFormField.tsx +27 -27
  41. package/src/components/FormFields/Form.tsx +39 -39
  42. package/src/components/FormFields/IdentityDocumentNumberFormField.tsx +32 -32
  43. package/src/components/FormFields/MultiSelectFormField.tsx +64 -64
  44. package/src/components/FormFields/PhoneFormField.tsx +40 -40
  45. package/src/components/FormFields/RadioGroupFormField.tsx +88 -88
  46. package/src/components/FormFields/RichEditorFormField.tsx +128 -128
  47. package/src/components/FormFields/SelectFormField.tsx +113 -113
  48. package/src/components/FormFields/SwitchFormField.tsx +46 -46
  49. package/src/components/FormFields/TextAreaFormField.tsx +61 -61
  50. package/src/components/FormFields/TextFormField.tsx +112 -112
  51. package/src/components/FormFields/TimePickerFormField.tsx +88 -88
  52. package/src/components/FormFields/subComponents/ErrorFormMessage.tsx +36 -36
  53. package/src/components/FormFields/subComponents/FormLabel.tsx +36 -36
  54. package/src/components/FormFields/utils/validation.ts +23 -23
  55. package/src/components/Grid.tsx +137 -137
  56. package/src/components/Icon.tsx +47 -47
  57. package/src/components/MenuDropdown/index.tsx +38 -38
  58. package/src/components/MenuDropdown/styledComponents.ts +31 -31
  59. package/src/components/Modal.tsx +131 -114
  60. package/src/components/MultiSelect/index.tsx +417 -305
  61. package/src/components/MultiSelect/styledComponents.ts +176 -160
  62. package/src/components/RadioGroup.tsx +210 -210
  63. package/src/components/RichEditor/QuillComponent.tsx +419 -419
  64. package/src/components/RichEditor/RichEditor.tsx +53 -53
  65. package/src/components/RichEditor/RichTextPresenter.tsx +18 -18
  66. package/src/components/RichEditor/editorConfig.ts +149 -149
  67. package/src/components/RichEditor/index.ts +3 -3
  68. package/src/components/RichEditor/styledComponents.ts +1175 -1175
  69. package/src/components/RichEditor/types.ts +12 -12
  70. package/src/components/Section.tsx +33 -33
  71. package/src/components/Step.tsx +164 -164
  72. package/src/components/Switch.tsx +108 -108
  73. package/src/components/Text.tsx +54 -54
  74. package/src/components/TextField.tsx +423 -423
  75. package/src/components/TextareaField.tsx +116 -116
  76. package/src/components/TimePicker.tsx +357 -357
  77. package/src/components/Toast/components/ToastItem.tsx +41 -41
  78. package/src/components/Toast/components/ToastProvider.tsx +63 -63
  79. package/src/components/Toast/hooks/useToast.ts +12 -12
  80. package/src/components/Toast/index.tsx +5 -5
  81. package/src/components/Toast/styles/index.ts +135 -135
  82. package/src/components/Toast/types/index.ts +46 -46
  83. package/src/components/ToggleElement/index.tsx +58 -58
  84. package/src/components/Tooltip/index.tsx +126 -73
  85. package/src/components/Tooltip/styles.ts +77 -77
  86. package/src/hooks/useCountries.ts +41 -41
  87. package/src/hooks/useHasHover.ts +21 -0
  88. package/src/hooks/useImageUpload.ts +139 -139
  89. package/src/hooks/useMediaQuery.ts +19 -0
  90. package/src/hooks/useOnClickOutside.tsx +42 -42
  91. package/src/index.tsx +72 -72
  92. package/src/styles/index.ts +41 -41
  93. package/src/types/typographyValues.ts +178 -178
  94. package/src/utils/getNestedValue.ts +3 -3
  95. package/src/utils/states.ts +29 -29
  96. package/src/utils/uploadService.ts +180 -180
  97. package/tsconfig.json +3 -3
  98. package/tsup.config.ts +38 -38
@@ -1,128 +1,128 @@
1
- import { useController } from "react-hook-form";
2
- import { Flex } from "../Flex";
3
- import { FormLabel } from "./subComponents/FormLabel";
4
- import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
5
- import { RichEditor, RichEditorProps } from "../RichEditor";
6
- import { useEffect, useState } from "react";
7
- import { Badge } from "../Badge";
8
- import { RichEditorElement } from "../RichEditor/types";
9
-
10
- const getPlainTextLengthFromHtml = (html: string) => {
11
- if (!html.trim()) return 0;
12
-
13
- if (typeof document === "undefined") {
14
- return html.replace(/<[^>]*>/g, "").trim().length;
15
- }
16
-
17
- const doc = new DOMParser().parseFromString(html, "text/html");
18
- return doc.body.textContent?.trim().length ?? 0;
19
- };
20
-
21
- const getRemainingCharacters = (maxLength: number | undefined, value?: string) => {
22
- if (maxLength === undefined) return maxLength;
23
- return Math.max(0, maxLength - getPlainTextLengthFromHtml(value ?? ""));
24
- };
25
- export type RichEditorFormFieldProps = Omit<
26
- RichEditorProps,
27
- "value" | "onChange"
28
- > & {
29
- name: string;
30
- label?: string;
31
- required?: boolean;
32
- validate?: (value: string) => boolean | string;
33
- maxLength?: number;
34
- validationErrorMessage?: string;
35
- simpleVersion?: boolean;
36
- uploadConfig?: RichEditorProps["uploadConfig"];
37
- disableVideo?: boolean
38
- richEditorElements?: RichEditorElement[];
39
- };
40
-
41
- export const RichEditorFormField = ({
42
- name,
43
- label,
44
- required,
45
- validate,
46
- validationErrorMessage = "Este campo é obrigatório.",
47
- maxLength,
48
- simpleVersion = false,
49
- disableVideo = false,
50
- richEditorElements,
51
- ...props
52
- }: RichEditorFormFieldProps) => {
53
- const { field, fieldState } = useController({
54
- name,
55
- rules: {
56
- required: required ? validationErrorMessage : false,
57
- validate: (value?: string) => {
58
- if (
59
- value === undefined ||
60
- value === null ||
61
- (!required && value.trim() === "")
62
- )
63
- return true;
64
- return validate?.(value) ?? true;
65
- },
66
- },
67
- });
68
- const [caracterQuantity, setCaracterQuantity] = useState(() =>
69
- getRemainingCharacters(maxLength, field.value),
70
- );
71
-
72
- const handleCharacterCountChange = (count: number) => {
73
- if (maxLength !== undefined) {
74
- setCaracterQuantity(Math.max(0, maxLength - count));
75
- }
76
- };
77
-
78
- useEffect(() => {
79
- setCaracterQuantity(getRemainingCharacters(maxLength, field.value));
80
- }, [field.value, maxLength]);
81
- const fieldError = fieldState.error;
82
- const haveError = !!fieldError;
83
- const errorMsg = fieldError?.message;
84
-
85
-
86
- return (
87
- <Flex direction="column">
88
- {maxLength ? (
89
- <Flex direction="row" justify="between">
90
- {label && (
91
- <FormLabel
92
- name={name}
93
- label={label}
94
- required={required}
95
- haveError={haveError}
96
- />
97
- )}
98
- <Badge color="grey" size="xs">
99
- {caracterQuantity}
100
- </Badge>
101
- </Flex>
102
- ) : (
103
- <>
104
- {label && (
105
- <FormLabel
106
- name={name}
107
- label={label}
108
- required={required}
109
- haveError={haveError}
110
- />
111
- )}
112
- </>
113
- )}
114
- <RichEditor
115
- {...props}
116
- value={field.value}
117
- onChange={field.onChange}
118
- aria-labelledby={`${name}-label`}
119
- onCharacterCountChange={handleCharacterCountChange}
120
- maxLength={maxLength}
121
- disableVideo={disableVideo}
122
- simpleVersion={simpleVersion}
123
- richEditorElements={richEditorElements}
124
- />
125
- <ErrorFormMessage message={errorMsg} />
126
- </Flex>
127
- );
128
- };
1
+ import { useController } from "react-hook-form";
2
+ import { Flex } from "../Flex";
3
+ import { FormLabel } from "./subComponents/FormLabel";
4
+ import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
5
+ import { RichEditor, RichEditorProps } from "../RichEditor";
6
+ import { useEffect, useState } from "react";
7
+ import { Badge } from "../Badge";
8
+ import { RichEditorElement } from "../RichEditor/types";
9
+
10
+ const getPlainTextLengthFromHtml = (html: string) => {
11
+ if (!html.trim()) return 0;
12
+
13
+ if (typeof document === "undefined") {
14
+ return html.replace(/<[^>]*>/g, "").trim().length;
15
+ }
16
+
17
+ const doc = new DOMParser().parseFromString(html, "text/html");
18
+ return doc.body.textContent?.trim().length ?? 0;
19
+ };
20
+
21
+ const getRemainingCharacters = (maxLength: number | undefined, value?: string) => {
22
+ if (maxLength === undefined) return maxLength;
23
+ return Math.max(0, maxLength - getPlainTextLengthFromHtml(value ?? ""));
24
+ };
25
+ export type RichEditorFormFieldProps = Omit<
26
+ RichEditorProps,
27
+ "value" | "onChange"
28
+ > & {
29
+ name: string;
30
+ label?: string;
31
+ required?: boolean;
32
+ validate?: (value: string) => boolean | string;
33
+ maxLength?: number;
34
+ validationErrorMessage?: string;
35
+ simpleVersion?: boolean;
36
+ uploadConfig?: RichEditorProps["uploadConfig"];
37
+ disableVideo?: boolean
38
+ richEditorElements?: RichEditorElement[];
39
+ };
40
+
41
+ export const RichEditorFormField = ({
42
+ name,
43
+ label,
44
+ required,
45
+ validate,
46
+ validationErrorMessage = "Este campo é obrigatório.",
47
+ maxLength,
48
+ simpleVersion = false,
49
+ disableVideo = false,
50
+ richEditorElements,
51
+ ...props
52
+ }: RichEditorFormFieldProps) => {
53
+ const { field, fieldState } = useController({
54
+ name,
55
+ rules: {
56
+ required: required ? validationErrorMessage : false,
57
+ validate: (value?: string) => {
58
+ if (
59
+ value === undefined ||
60
+ value === null ||
61
+ (!required && value.trim() === "")
62
+ )
63
+ return true;
64
+ return validate?.(value) ?? true;
65
+ },
66
+ },
67
+ });
68
+ const [caracterQuantity, setCaracterQuantity] = useState(() =>
69
+ getRemainingCharacters(maxLength, field.value),
70
+ );
71
+
72
+ const handleCharacterCountChange = (count: number) => {
73
+ if (maxLength !== undefined) {
74
+ setCaracterQuantity(Math.max(0, maxLength - count));
75
+ }
76
+ };
77
+
78
+ useEffect(() => {
79
+ setCaracterQuantity(getRemainingCharacters(maxLength, field.value));
80
+ }, [field.value, maxLength]);
81
+ const fieldError = fieldState.error;
82
+ const haveError = !!fieldError;
83
+ const errorMsg = fieldError?.message;
84
+
85
+
86
+ return (
87
+ <Flex direction="column">
88
+ {maxLength ? (
89
+ <Flex direction="row" justify="between">
90
+ {label && (
91
+ <FormLabel
92
+ name={name}
93
+ label={label}
94
+ required={required}
95
+ haveError={haveError}
96
+ />
97
+ )}
98
+ <Badge color="grey" size="xs">
99
+ {caracterQuantity}
100
+ </Badge>
101
+ </Flex>
102
+ ) : (
103
+ <>
104
+ {label && (
105
+ <FormLabel
106
+ name={name}
107
+ label={label}
108
+ required={required}
109
+ haveError={haveError}
110
+ />
111
+ )}
112
+ </>
113
+ )}
114
+ <RichEditor
115
+ {...props}
116
+ value={field.value}
117
+ onChange={field.onChange}
118
+ aria-labelledby={`${name}-label`}
119
+ onCharacterCountChange={handleCharacterCountChange}
120
+ maxLength={maxLength}
121
+ disableVideo={disableVideo}
122
+ simpleVersion={simpleVersion}
123
+ richEditorElements={richEditorElements}
124
+ />
125
+ <ErrorFormMessage message={errorMsg} />
126
+ </Flex>
127
+ );
128
+ };
@@ -1,113 +1,113 @@
1
- import { useFormContext, Controller } from "react-hook-form";
2
- import { DropdownMenu, DropdownMenuItem } from "../Dropdown";
3
- import { Flex } from "../Flex";
4
- import { FormLabel } from "./subComponents/FormLabel";
5
- import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
6
- import { getNestedValue } from "../../utils/getNestedValue";
7
- import { Button } from "../Button";
8
-
9
- type Option = {
10
- label: string;
11
- value: string;
12
- };
13
-
14
- export type SelectFormFieldProps = {
15
- name: string;
16
- label: string;
17
- required?: boolean;
18
- placeholder?: string;
19
- options: Option[];
20
- showMoreButton?: boolean;
21
- showMoreButtonLabel?: string;
22
- showMoreButtonOnClick?: () => void;
23
- validation?: {
24
- validate?: (value: string) => boolean | string;
25
- };
26
- validationErrorMessage?: string;
27
- defaultValue?: string;
28
- };
29
-
30
- export const SelectFormField = ({
31
- name,
32
- label,
33
- required,
34
- placeholder = "Selecione",
35
- options,
36
- showMoreButton = false,
37
- showMoreButtonLabel = "Carregar mais",
38
- showMoreButtonOnClick,
39
- validation,
40
- validationErrorMessage = "Este campo é obrigatório.",
41
- defaultValue,
42
- }: SelectFormFieldProps) => {
43
- const {
44
- control,
45
- formState: { errors },
46
- } = useFormContext();
47
-
48
- const fieldError = getNestedValue(errors, name);
49
- const haveError = !!fieldError;
50
- const errorMsg = fieldError?.message;
51
-
52
- const validationRules = {
53
- required: required ? validationErrorMessage : false,
54
- ...validation,
55
- };
56
-
57
- return (
58
- <Flex direction="column">
59
- <FormLabel
60
- name={name}
61
- label={label}
62
- required={required}
63
- haveError={haveError}
64
- />
65
-
66
- <Controller
67
- control={control}
68
- name={name}
69
- rules={validationRules}
70
- defaultValue={defaultValue || ""}
71
- render={({ field: { value, onChange } }) => {
72
- const selectedOption = options.find((opt) => opt.value === value);
73
-
74
- return (
75
- <DropdownMenu
76
- placeholder={selectedOption?.label || placeholder}
77
- fontWeight="regular"
78
- typography="labelLarge"
79
- color={haveError ? "error" : "default"}
80
- >
81
- {options.map((option, index) => (
82
- <DropdownMenuItem
83
- key={`${option.value}${index}`}
84
- value={option.value}
85
- onSelect={() => onChange(option.value)}
86
- fontWeight="regular"
87
- typography="labelLarge"
88
- >
89
- {option.label}
90
- </DropdownMenuItem>
91
- ))}
92
-
93
- {showMoreButton && showMoreButtonOnClick && (
94
- <Button
95
- variant="menuDropdownItem"
96
- color="brand"
97
- onClick={showMoreButtonOnClick}
98
- fontWeight="semibold"
99
- type="button"
100
- css={{ justifyContent: "flex-start", color: "var(--colors-brand500)!important" }}
101
- >
102
- {showMoreButtonLabel}
103
- </Button>
104
- )}
105
- </DropdownMenu>
106
- );
107
- }}
108
- />
109
-
110
- <ErrorFormMessage message={errorMsg} />
111
- </Flex>
112
- );
113
- };
1
+ import { useFormContext, Controller } from "react-hook-form";
2
+ import { DropdownMenu, DropdownMenuItem } from "../Dropdown";
3
+ import { Flex } from "../Flex";
4
+ import { FormLabel } from "./subComponents/FormLabel";
5
+ import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
6
+ import { getNestedValue } from "../../utils/getNestedValue";
7
+ import { Button } from "../Button";
8
+
9
+ type Option = {
10
+ label: string;
11
+ value: string;
12
+ };
13
+
14
+ export type SelectFormFieldProps = {
15
+ name: string;
16
+ label: string;
17
+ required?: boolean;
18
+ placeholder?: string;
19
+ options: Option[];
20
+ showMoreButton?: boolean;
21
+ showMoreButtonLabel?: string;
22
+ showMoreButtonOnClick?: () => void;
23
+ validation?: {
24
+ validate?: (value: string) => boolean | string;
25
+ };
26
+ validationErrorMessage?: string;
27
+ defaultValue?: string;
28
+ };
29
+
30
+ export const SelectFormField = ({
31
+ name,
32
+ label,
33
+ required,
34
+ placeholder = "Selecione",
35
+ options,
36
+ showMoreButton = false,
37
+ showMoreButtonLabel = "Carregar mais",
38
+ showMoreButtonOnClick,
39
+ validation,
40
+ validationErrorMessage = "Este campo é obrigatório.",
41
+ defaultValue,
42
+ }: SelectFormFieldProps) => {
43
+ const {
44
+ control,
45
+ formState: { errors },
46
+ } = useFormContext();
47
+
48
+ const fieldError = getNestedValue(errors, name);
49
+ const haveError = !!fieldError;
50
+ const errorMsg = fieldError?.message;
51
+
52
+ const validationRules = {
53
+ required: required ? validationErrorMessage : false,
54
+ ...validation,
55
+ };
56
+
57
+ return (
58
+ <Flex direction="column">
59
+ <FormLabel
60
+ name={name}
61
+ label={label}
62
+ required={required}
63
+ haveError={haveError}
64
+ />
65
+
66
+ <Controller
67
+ control={control}
68
+ name={name}
69
+ rules={validationRules}
70
+ defaultValue={defaultValue || ""}
71
+ render={({ field: { value, onChange } }) => {
72
+ const selectedOption = options.find((opt) => opt.value === value);
73
+
74
+ return (
75
+ <DropdownMenu
76
+ placeholder={selectedOption?.label || placeholder}
77
+ fontWeight="regular"
78
+ typography="labelLarge"
79
+ color={haveError ? "error" : "default"}
80
+ >
81
+ {options.map((option, index) => (
82
+ <DropdownMenuItem
83
+ key={`${option.value}${index}`}
84
+ value={option.value}
85
+ onSelect={() => onChange(option.value)}
86
+ fontWeight="regular"
87
+ typography="labelLarge"
88
+ >
89
+ {option.label}
90
+ </DropdownMenuItem>
91
+ ))}
92
+
93
+ {showMoreButton && showMoreButtonOnClick && (
94
+ <Button
95
+ variant="menuDropdownItem"
96
+ color="brand"
97
+ onClick={showMoreButtonOnClick}
98
+ fontWeight="semibold"
99
+ type="button"
100
+ css={{ justifyContent: "flex-start", color: "var(--colors-brand500)!important" }}
101
+ >
102
+ {showMoreButtonLabel}
103
+ </Button>
104
+ )}
105
+ </DropdownMenu>
106
+ );
107
+ }}
108
+ />
109
+
110
+ <ErrorFormMessage message={errorMsg} />
111
+ </Flex>
112
+ );
113
+ };
@@ -1,46 +1,46 @@
1
- import { useFormContext, Controller } from "react-hook-form";
2
- import { Flex } from "../Flex";
3
- import { Switch } from "../Switch";
4
- import { Text } from "../Text";
5
-
6
-
7
- export type SwitchFormFieldProps = {
8
- name: string;
9
- label: string;
10
- defaultValue?: boolean;
11
- watch?: boolean;
12
- };
13
-
14
- export const SwitchFormField = ({
15
- name,
16
- label,
17
- defaultValue = false,
18
- watch = false,
19
- }: SwitchFormFieldProps) => {
20
- const {
21
- control,
22
- watch: watchForm,
23
- } = useFormContext();
24
-
25
- if (watch) {
26
- watchForm(name);
27
- }
28
- return (
29
- <Flex justify="between" style={{ margin: '1rem 0' }}>
30
- <Text typography="labelMedium" fontWeight="regular">
31
- {label}
32
- </Text>
33
- <Controller
34
- control={control}
35
- name={name}
36
- defaultValue={defaultValue}
37
- render={({ field }) => (
38
- <Switch
39
- checked={field.value}
40
- onCheckedChange={field.onChange}
41
- />
42
- )}
43
- />
44
- </Flex>
45
- );
46
- };
1
+ import { useFormContext, Controller } from "react-hook-form";
2
+ import { Flex } from "../Flex";
3
+ import { Switch } from "../Switch";
4
+ import { Text } from "../Text";
5
+
6
+
7
+ export type SwitchFormFieldProps = {
8
+ name: string;
9
+ label: string;
10
+ defaultValue?: boolean;
11
+ watch?: boolean;
12
+ };
13
+
14
+ export const SwitchFormField = ({
15
+ name,
16
+ label,
17
+ defaultValue = false,
18
+ watch = false,
19
+ }: SwitchFormFieldProps) => {
20
+ const {
21
+ control,
22
+ watch: watchForm,
23
+ } = useFormContext();
24
+
25
+ if (watch) {
26
+ watchForm(name);
27
+ }
28
+ return (
29
+ <Flex justify="between" style={{ margin: '1rem 0' }}>
30
+ <Text typography="labelMedium" fontWeight="regular">
31
+ {label}
32
+ </Text>
33
+ <Controller
34
+ control={control}
35
+ name={name}
36
+ defaultValue={defaultValue}
37
+ render={({ field }) => (
38
+ <Switch
39
+ checked={field.value}
40
+ onCheckedChange={field.onChange}
41
+ />
42
+ )}
43
+ />
44
+ </Flex>
45
+ );
46
+ };