@lets-events/react 12.7.1 → 12.7.3

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 (90) 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.js +17 -3
  5. package/dist/index.mjs +17 -3
  6. package/package.json +1 -1
  7. package/src/components/Alert.tsx +303 -303
  8. package/src/components/Avatar.tsx +55 -55
  9. package/src/components/Badge.tsx +123 -125
  10. package/src/components/Box.tsx +3 -3
  11. package/src/components/Button/index.tsx +62 -62
  12. package/src/components/Button/styledComponents.ts +320 -320
  13. package/src/components/ButtonGroup.tsx +484 -484
  14. package/src/components/Calendar/index.tsx +148 -148
  15. package/src/components/Calendar/styledComponents.ts +273 -259
  16. package/src/components/Card.tsx +67 -67
  17. package/src/components/CheckboxGroup.tsx +176 -176
  18. package/src/components/Container.tsx +39 -39
  19. package/src/components/Divider.tsx +7 -7
  20. package/src/components/DoubleCalendar/index.tsx +170 -170
  21. package/src/components/Drawer/index.tsx +100 -100
  22. package/src/components/Drawer/styledComponents.ts +103 -103
  23. package/src/components/Dropdown.tsx +302 -302
  24. package/src/components/Filter.tsx +164 -164
  25. package/src/components/Flex.tsx +118 -118
  26. package/src/components/FormFields/AddressFormFields/CityFormField.tsx +111 -111
  27. package/src/components/FormFields/AddressFormFields/CountryFormField.tsx +33 -33
  28. package/src/components/FormFields/AddressFormFields/PostalCodeFormField.tsx +39 -39
  29. package/src/components/FormFields/AddressFormFields/StateFormField.tsx +32 -32
  30. package/src/components/FormFields/AddressFormFields/index.tsx +141 -141
  31. package/src/components/FormFields/BirthDateFormField.tsx +84 -84
  32. package/src/components/FormFields/CNPJFormField.tsx +87 -87
  33. package/src/components/FormFields/CPFFormField.tsx +78 -78
  34. package/src/components/FormFields/CalendarFormField.tsx +95 -95
  35. package/src/components/FormFields/CheckboxGroupFormField.tsx +91 -91
  36. package/src/components/FormFields/DoubleCalendarFormField.tsx +93 -93
  37. package/src/components/FormFields/EmailFormField.tsx +27 -27
  38. package/src/components/FormFields/Form.tsx +39 -39
  39. package/src/components/FormFields/IdentityDocumentNumberFormField.tsx +32 -32
  40. package/src/components/FormFields/MultiSelectFormField.tsx +64 -64
  41. package/src/components/FormFields/PhoneFormField.tsx +40 -40
  42. package/src/components/FormFields/RadioGroupFormField.tsx +86 -86
  43. package/src/components/FormFields/RichEditorFormField.tsx +103 -103
  44. package/src/components/FormFields/SelectFormField.tsx +93 -93
  45. package/src/components/FormFields/SwitchFormField.tsx +46 -46
  46. package/src/components/FormFields/TextAreaFormField.tsx +61 -61
  47. package/src/components/FormFields/TextFormField.tsx +112 -112
  48. package/src/components/FormFields/TimePickerFormField.tsx +88 -88
  49. package/src/components/FormFields/subComponents/ErrorFormMessage.tsx +36 -36
  50. package/src/components/FormFields/subComponents/FormLabel.tsx +36 -36
  51. package/src/components/FormFields/utils/validation.ts +23 -23
  52. package/src/components/Grid.tsx +137 -137
  53. package/src/components/Icon.tsx +47 -47
  54. package/src/components/MenuDropdown/index.tsx +38 -38
  55. package/src/components/MenuDropdown/styledComponents.ts +31 -31
  56. package/src/components/Modal.tsx +110 -110
  57. package/src/components/MultiSelect/index.tsx +268 -268
  58. package/src/components/MultiSelect/styledComponents.ts +160 -160
  59. package/src/components/RadioGroup.tsx +210 -210
  60. package/src/components/RichEditor/QuillComponent.tsx +468 -468
  61. package/src/components/RichEditor/RichEditor.tsx +49 -49
  62. package/src/components/RichEditor/RichTextPresenter.tsx +18 -18
  63. package/src/components/RichEditor/index.ts +3 -3
  64. package/src/components/RichEditor/styledComponents.ts +1170 -1170
  65. package/src/components/Section.tsx +33 -33
  66. package/src/components/Step.tsx +164 -164
  67. package/src/components/Switch.tsx +108 -108
  68. package/src/components/Text.tsx +38 -38
  69. package/src/components/TextField.tsx +372 -372
  70. package/src/components/TextareaField.tsx +116 -116
  71. package/src/components/TimePicker.tsx +328 -328
  72. package/src/components/Toast/components/ToastItem.tsx +41 -41
  73. package/src/components/Toast/components/ToastProvider.tsx +63 -63
  74. package/src/components/Toast/hooks/useToast.ts +12 -12
  75. package/src/components/Toast/index.tsx +5 -5
  76. package/src/components/Toast/styles/index.ts +135 -135
  77. package/src/components/Toast/types/index.ts +46 -46
  78. package/src/components/Tooltip/index.tsx +73 -73
  79. package/src/components/Tooltip/styles.ts +77 -77
  80. package/src/hooks/useCountries.ts +41 -41
  81. package/src/hooks/useImageUpload.ts +139 -139
  82. package/src/hooks/useOnClickOutside.tsx +42 -42
  83. package/src/index.tsx +71 -71
  84. package/src/styles/index.ts +41 -41
  85. package/src/types/typographyValues.ts +178 -178
  86. package/src/utils/getNestedValue.ts +3 -3
  87. package/src/utils/states.ts +29 -29
  88. package/src/utils/uploadService.ts +180 -180
  89. package/tsconfig.json +3 -3
  90. package/tsup.config.ts +38 -38
@@ -1,170 +1,170 @@
1
- import React, { ComponentProps, useRef, useEffect, useState } from "react";
2
- import { useOnClickOutside } from "../../hooks/useOnClickOutside";
3
- import { DayPicker } from "react-day-picker";
4
- import { ptBR } from "date-fns/locale";
5
- import { format, addYears } from "date-fns";
6
- import { Button } from "../Button";
7
- import { Box } from "../Box";
8
- import { TextField, TextFieldSlot } from "../TextField";
9
- import Icon from "../Icon";
10
- import {
11
- CalendarContentStyled,
12
- CalendarFooterStyled,
13
- CalendarStyled,
14
- DayPickerWrapperStyled,
15
- CalendarButtonStyled,
16
- } from "../Calendar/styledComponents";
17
-
18
- export type DateRange = { from?: Date; to?: Date } | undefined;
19
-
20
- export type DoubleCalendarProps = ComponentProps<typeof CalendarStyled> & {
21
- calendarLayout?: "label" | "dropdown" | "dropdown-months" | "dropdown-years";
22
- selected: DateRange;
23
- setSelected: React.Dispatch<React.SetStateAction<DateRange>>;
24
- position?: "top" | "bottom" | "top-right" | "bottom-right";
25
- action?: boolean;
26
- actionText?: string;
27
- hasError?: boolean;
28
- expand?: boolean;
29
- allowPastDates?: boolean;
30
- maxYearsFromNow?: number;
31
- disabled?: boolean;
32
- };
33
-
34
- export function DoubleCalendar({
35
- action,
36
- actionText,
37
- calendarLayout,
38
- selected,
39
- setSelected,
40
- position = "bottom",
41
- hasError,
42
- expand,
43
- allowPastDates = false,
44
- maxYearsFromNow = 20,
45
- disabled = false,
46
- ...props
47
- }: DoubleCalendarProps) {
48
- const [startValue, setStartValue] = useState("");
49
- const [endValue, setEndValue] = useState("");
50
- const [showContainer, setShowCalendar] = useState(false);
51
- const initialSelectedRef = useRef<DateRange | undefined>(undefined);
52
-
53
- const dropdownRef = useRef<HTMLDivElement>(null);
54
-
55
- useOnClickOutside(dropdownRef, () => {
56
- setShowCalendar(false);
57
- });
58
- const today = new Date();
59
- const maxDate = addYears(today, maxYearsFromNow);
60
-
61
- useEffect(() => {
62
- if (selected && selected.from) {
63
- setStartValue(format(selected.from, "dd/MM/yyyy"));
64
- } else {
65
- setStartValue("");
66
- }
67
-
68
- if (selected && selected.to) {
69
- setEndValue(format(selected.to, "dd/MM/yyyy"));
70
- } else {
71
- setEndValue("");
72
- }
73
- }, [selected]);
74
-
75
- return (
76
- <div>
77
- <CalendarStyled {...props} expand={expand} ref={dropdownRef}>
78
- <CalendarButtonStyled
79
- expand={expand}
80
- type="button"
81
- onClick={() =>
82
- setShowCalendar((prev) => {
83
- const next = !prev;
84
- if (!prev) initialSelectedRef.current = selected;
85
- return next;
86
- })
87
- }
88
- disabled={disabled}
89
- >
90
- <div style={{ display: "flex", gap: "8px", width: "100%" }}>
91
- <TextField
92
- placeholder="00/00/0000 - 00/00/0000"
93
- type="text"
94
- value={`${startValue || "00/00/0000"} - ${endValue || "00/00/0000"}`}
95
- readOnly
96
- inputMode="numeric"
97
- textAlign={"right"}
98
- color={hasError ? "error" : "default"}
99
- disabled={disabled}
100
- >
101
- <TextFieldSlot>
102
- <Icon name="calendar" size={"xl"} />
103
- </TextFieldSlot>
104
- </TextField>
105
- </div>
106
- </CalendarButtonStyled>
107
-
108
- {showContainer && (
109
- <CalendarContentStyled position={position}>
110
- <Box>
111
- <DayPickerWrapperStyled>
112
- <DayPicker
113
- mode="range"
114
- numberOfMonths={2}
115
- captionLayout={calendarLayout}
116
- selected={selected as any}
117
- onSelect={setSelected}
118
- required
119
- locale={ptBR}
120
- disabled={allowPastDates ? undefined : { before: today }}
121
- fromMonth={allowPastDates ? undefined : today}
122
- toMonth={maxDate}
123
- />
124
- </DayPickerWrapperStyled>
125
- </Box>
126
-
127
- {action && (
128
- <CalendarFooterStyled>
129
- <div style={{ textAlign: "center", padding: "1rem" }}>
130
- <span>
131
- {`${selected?.from ? format(selected.from, "dd/MM/yyyy") : "00/00/0000"} — ${selected?.to ? format(selected.to, "dd/MM/yyyy") : "00/00/0000"}`}
132
- </span>
133
- </div>
134
- <Button
135
- style={{ margin: "0 0.5rem" }}
136
- variant="text"
137
- color="neutral"
138
- type="button"
139
- onClick={() => {
140
- setSelected(initialSelectedRef.current);
141
- setShowCalendar(false);
142
- }}
143
- size={"medium"}
144
- fontWeight="regular"
145
- >
146
- Cancelar
147
- </Button>
148
- <Button
149
- style={{ margin: "0 0.5rem" }}
150
- variant="text"
151
- color="brand"
152
- type="button"
153
- onClick={() => {
154
- setShowCalendar(false);
155
- }}
156
- size={"medium"}
157
- fontWeight="medium"
158
- >
159
- {actionText ?? "Aplicar"}
160
- </Button>
161
- </CalendarFooterStyled>
162
- )}
163
- </CalendarContentStyled>
164
- )}
165
- </CalendarStyled>
166
- </div>
167
- );
168
- }
169
-
170
- export default DoubleCalendar;
1
+ import React, { ComponentProps, useRef, useEffect, useState } from "react";
2
+ import { useOnClickOutside } from "../../hooks/useOnClickOutside";
3
+ import { DayPicker } from "react-day-picker";
4
+ import { ptBR } from "date-fns/locale";
5
+ import { format, addYears } from "date-fns";
6
+ import { Button } from "../Button";
7
+ import { Box } from "../Box";
8
+ import { TextField, TextFieldSlot } from "../TextField";
9
+ import Icon from "../Icon";
10
+ import {
11
+ CalendarContentStyled,
12
+ CalendarFooterStyled,
13
+ CalendarStyled,
14
+ DayPickerWrapperStyled,
15
+ CalendarButtonStyled,
16
+ } from "../Calendar/styledComponents";
17
+
18
+ export type DateRange = { from?: Date; to?: Date } | undefined;
19
+
20
+ export type DoubleCalendarProps = ComponentProps<typeof CalendarStyled> & {
21
+ calendarLayout?: "label" | "dropdown" | "dropdown-months" | "dropdown-years";
22
+ selected: DateRange;
23
+ setSelected: React.Dispatch<React.SetStateAction<DateRange>>;
24
+ position?: "top" | "bottom" | "top-right" | "bottom-right";
25
+ action?: boolean;
26
+ actionText?: string;
27
+ hasError?: boolean;
28
+ expand?: boolean;
29
+ allowPastDates?: boolean;
30
+ maxYearsFromNow?: number;
31
+ disabled?: boolean;
32
+ };
33
+
34
+ export function DoubleCalendar({
35
+ action,
36
+ actionText,
37
+ calendarLayout,
38
+ selected,
39
+ setSelected,
40
+ position = "bottom",
41
+ hasError,
42
+ expand,
43
+ allowPastDates = false,
44
+ maxYearsFromNow = 20,
45
+ disabled = false,
46
+ ...props
47
+ }: DoubleCalendarProps) {
48
+ const [startValue, setStartValue] = useState("");
49
+ const [endValue, setEndValue] = useState("");
50
+ const [showContainer, setShowCalendar] = useState(false);
51
+ const initialSelectedRef = useRef<DateRange | undefined>(undefined);
52
+
53
+ const dropdownRef = useRef<HTMLDivElement>(null);
54
+
55
+ useOnClickOutside(dropdownRef, () => {
56
+ setShowCalendar(false);
57
+ });
58
+ const today = new Date();
59
+ const maxDate = addYears(today, maxYearsFromNow);
60
+
61
+ useEffect(() => {
62
+ if (selected && selected.from) {
63
+ setStartValue(format(selected.from, "dd/MM/yyyy"));
64
+ } else {
65
+ setStartValue("");
66
+ }
67
+
68
+ if (selected && selected.to) {
69
+ setEndValue(format(selected.to, "dd/MM/yyyy"));
70
+ } else {
71
+ setEndValue("");
72
+ }
73
+ }, [selected]);
74
+
75
+ return (
76
+ <div>
77
+ <CalendarStyled {...props} expand={expand} ref={dropdownRef}>
78
+ <CalendarButtonStyled
79
+ expand={expand}
80
+ type="button"
81
+ onClick={() =>
82
+ setShowCalendar((prev) => {
83
+ const next = !prev;
84
+ if (!prev) initialSelectedRef.current = selected;
85
+ return next;
86
+ })
87
+ }
88
+ disabled={disabled}
89
+ >
90
+ <div style={{ display: "flex", gap: "8px", width: "100%" }}>
91
+ <TextField
92
+ placeholder="00/00/0000 - 00/00/0000"
93
+ type="text"
94
+ value={`${startValue || "00/00/0000"} - ${endValue || "00/00/0000"}`}
95
+ readOnly
96
+ inputMode="numeric"
97
+ textAlign={"right"}
98
+ color={hasError ? "error" : "default"}
99
+ disabled={disabled}
100
+ >
101
+ <TextFieldSlot>
102
+ <Icon name="calendar" size={"xl"} />
103
+ </TextFieldSlot>
104
+ </TextField>
105
+ </div>
106
+ </CalendarButtonStyled>
107
+
108
+ {showContainer && (
109
+ <CalendarContentStyled position={position}>
110
+ <Box>
111
+ <DayPickerWrapperStyled>
112
+ <DayPicker
113
+ mode="range"
114
+ numberOfMonths={2}
115
+ captionLayout={calendarLayout}
116
+ selected={selected as any}
117
+ onSelect={setSelected}
118
+ required
119
+ locale={ptBR}
120
+ disabled={allowPastDates ? undefined : { before: today }}
121
+ fromMonth={allowPastDates ? undefined : today}
122
+ toMonth={maxDate}
123
+ />
124
+ </DayPickerWrapperStyled>
125
+ </Box>
126
+
127
+ {action && (
128
+ <CalendarFooterStyled>
129
+ <div style={{ textAlign: "center", padding: "1rem" }}>
130
+ <span>
131
+ {`${selected?.from ? format(selected.from, "dd/MM/yyyy") : "00/00/0000"} — ${selected?.to ? format(selected.to, "dd/MM/yyyy") : "00/00/0000"}`}
132
+ </span>
133
+ </div>
134
+ <Button
135
+ style={{ margin: "0 0.5rem" }}
136
+ variant="text"
137
+ color="neutral"
138
+ type="button"
139
+ onClick={() => {
140
+ setSelected(initialSelectedRef.current);
141
+ setShowCalendar(false);
142
+ }}
143
+ size={"medium"}
144
+ fontWeight="regular"
145
+ >
146
+ Cancelar
147
+ </Button>
148
+ <Button
149
+ style={{ margin: "0 0.5rem" }}
150
+ variant="text"
151
+ color="brand"
152
+ type="button"
153
+ onClick={() => {
154
+ setShowCalendar(false);
155
+ }}
156
+ size={"medium"}
157
+ fontWeight="medium"
158
+ >
159
+ {actionText ?? "Aplicar"}
160
+ </Button>
161
+ </CalendarFooterStyled>
162
+ )}
163
+ </CalendarContentStyled>
164
+ )}
165
+ </CalendarStyled>
166
+ </div>
167
+ );
168
+ }
169
+
170
+ export default DoubleCalendar;
@@ -1,100 +1,100 @@
1
- import { ComponentProps, ReactNode, useEffect, useRef } from "react";
2
- import { colors, Colors } from "@lets-events/tokens";
3
- import Icon from "../Icon";
4
- import {
5
- DrawerOverlayStyled,
6
- DrawerContainerStyled,
7
- DrawerHeaderDiv,
8
- DrawerHeaderTitle,
9
- DrawerHeaderCloseButton,
10
- GoBackButtonStyled,
11
- DrawerWrapper,
12
- } from "./styledComponents";
13
- import { useOnClickOutside } from "../../hooks/useOnClickOutside";
14
- import { Flex } from "../Flex";
15
-
16
- export type DrawerProps = ComponentProps<typeof DrawerOverlayStyled> & {
17
- isOpen: boolean;
18
- onClose: () => void;
19
- width?: string;
20
- backgroundColor?: keyof Colors;
21
- title: string;
22
- children?: ReactNode;
23
- goBackIcon?: ReactNode;
24
- goBackAction?: () => void;
25
- zIndex?: number;
26
- clickOutsideAvailable?: boolean;
27
- };
28
-
29
- export function Drawer({
30
- isOpen,
31
- onClose,
32
- width,
33
- backgroundColor,
34
- title,
35
- children,
36
- goBackIcon,
37
- goBackAction,
38
- zIndex = 1000,
39
- clickOutsideAvailable = true,
40
- }: DrawerProps) {
41
- useEffect(() => {
42
- if (isOpen) {
43
- const scrollbarWidth =
44
- window.innerWidth - document.documentElement.clientWidth;
45
-
46
- document.body.style.overflow = "hidden";
47
- document.body.style.paddingRight = `${scrollbarWidth}px`;
48
- } else {
49
- document.body.style.overflow = "";
50
- document.body.style.paddingRight = "";
51
- }
52
-
53
- return () => {
54
- document.body.style.overflow = "";
55
- document.body.style.paddingRight = "";
56
- };
57
- }, [isOpen]);
58
-
59
- return (
60
- <>
61
- <DrawerOverlayStyled
62
- css={{
63
- zIndex,
64
- }}
65
- onClick={clickOutsideAvailable ? onClose : undefined}
66
- open={isOpen}
67
- />
68
- <DrawerWrapper
69
- css={{
70
- zIndex: zIndex + 1,
71
- width: width ?? "34.25rem",
72
- maxWidth: "100%"
73
- }}
74
- open={isOpen}
75
- >
76
- <DrawerContainerStyled
77
- open={isOpen}
78
- css={{
79
- backgroundColor: colors[backgroundColor ?? "neutral50"],
80
- }}
81
- >
82
- <DrawerHeaderDiv>
83
- <Flex gap={8} align="center">
84
- {goBackIcon && goBackIcon && (
85
- <GoBackButtonStyled type="button" onClick={goBackAction}>
86
- {goBackIcon}
87
- </GoBackButtonStyled>
88
- )}
89
- <DrawerHeaderTitle>{title}</DrawerHeaderTitle>
90
- </Flex>
91
- <DrawerHeaderCloseButton onClick={onClose}>
92
- <Icon size={"xl"} color="$dark600" name="xmark" />
93
- </DrawerHeaderCloseButton>
94
- </DrawerHeaderDiv>
95
- {isOpen ? children : null}
96
- </DrawerContainerStyled>
97
- </DrawerWrapper>
98
- </>
99
- );
100
- }
1
+ import { ComponentProps, ReactNode, useEffect, useRef } from "react";
2
+ import { colors, Colors } from "@lets-events/tokens";
3
+ import Icon from "../Icon";
4
+ import {
5
+ DrawerOverlayStyled,
6
+ DrawerContainerStyled,
7
+ DrawerHeaderDiv,
8
+ DrawerHeaderTitle,
9
+ DrawerHeaderCloseButton,
10
+ GoBackButtonStyled,
11
+ DrawerWrapper,
12
+ } from "./styledComponents";
13
+ import { useOnClickOutside } from "../../hooks/useOnClickOutside";
14
+ import { Flex } from "../Flex";
15
+
16
+ export type DrawerProps = ComponentProps<typeof DrawerOverlayStyled> & {
17
+ isOpen: boolean;
18
+ onClose: () => void;
19
+ width?: string;
20
+ backgroundColor?: keyof Colors;
21
+ title: string;
22
+ children?: ReactNode;
23
+ goBackIcon?: ReactNode;
24
+ goBackAction?: () => void;
25
+ zIndex?: number;
26
+ clickOutsideAvailable?: boolean;
27
+ };
28
+
29
+ export function Drawer({
30
+ isOpen,
31
+ onClose,
32
+ width,
33
+ backgroundColor,
34
+ title,
35
+ children,
36
+ goBackIcon,
37
+ goBackAction,
38
+ zIndex = 1000,
39
+ clickOutsideAvailable = true,
40
+ }: DrawerProps) {
41
+ useEffect(() => {
42
+ if (isOpen) {
43
+ const scrollbarWidth =
44
+ window.innerWidth - document.documentElement.clientWidth;
45
+
46
+ document.body.style.overflow = "hidden";
47
+ document.body.style.paddingRight = `${scrollbarWidth}px`;
48
+ } else {
49
+ document.body.style.overflow = "";
50
+ document.body.style.paddingRight = "";
51
+ }
52
+
53
+ return () => {
54
+ document.body.style.overflow = "";
55
+ document.body.style.paddingRight = "";
56
+ };
57
+ }, [isOpen]);
58
+
59
+ return (
60
+ <>
61
+ <DrawerOverlayStyled
62
+ css={{
63
+ zIndex,
64
+ }}
65
+ onClick={clickOutsideAvailable ? onClose : undefined}
66
+ open={isOpen}
67
+ />
68
+ <DrawerWrapper
69
+ css={{
70
+ zIndex: zIndex + 1,
71
+ width: width ?? "34.25rem",
72
+ maxWidth: "100%"
73
+ }}
74
+ open={isOpen}
75
+ >
76
+ <DrawerContainerStyled
77
+ open={isOpen}
78
+ css={{
79
+ backgroundColor: colors[backgroundColor ?? "neutral50"],
80
+ }}
81
+ >
82
+ <DrawerHeaderDiv>
83
+ <Flex gap={8} align="center">
84
+ {goBackIcon && goBackIcon && (
85
+ <GoBackButtonStyled type="button" onClick={goBackAction}>
86
+ {goBackIcon}
87
+ </GoBackButtonStyled>
88
+ )}
89
+ <DrawerHeaderTitle>{title}</DrawerHeaderTitle>
90
+ </Flex>
91
+ <DrawerHeaderCloseButton onClick={onClose}>
92
+ <Icon size={"xl"} color="$dark600" name="xmark" />
93
+ </DrawerHeaderCloseButton>
94
+ </DrawerHeaderDiv>
95
+ {isOpen ? children : null}
96
+ </DrawerContainerStyled>
97
+ </DrawerWrapper>
98
+ </>
99
+ );
100
+ }