@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,56 +1,56 @@
1
- import { ComponentProps, ElementType } from 'react'
2
- import { styled } from '../styles'
3
- import { Avatar as AvatarRadix } from "@radix-ui/themes";
4
- export const AvatarStyled = styled(AvatarRadix, {
5
- fontFamily: '$default',
6
- color: '$gray100',
7
- letterSpacing: '0px',
8
- variants: {
9
- size: {
10
- 'xs': { width: '$24', height: '$24', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$10', },
11
- 'sm': { width: '$32', height: '$32', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$14', },
12
- 'md': { width: '$40', height: '$40', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$16', },
13
- 'lg': { width: '$48', height: '$48', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$18', },
14
- 'xl': { width: '$64', height: '$64', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$24', },
15
- },
16
- radii: {
17
- full: { borderRadius: '$full' },
18
- },
19
- variant: {
20
- 'without-image': {
21
- border: '1px solid $brand500',
22
- backgroundColor: '$dark50',
23
- color: '$dark700',
24
- fontStyle: 'normal',
25
- fontWeight: 500,
26
- lineHeight: 'normal',
27
- textTransform: 'uppercase',
28
-
29
- },
30
- 'with-image': {
31
- border: 0,
32
- 'img': {
33
- width: '100%',
34
- height: '100%',
35
- objectFit: 'cover',
36
- borderRadius: '$full',
37
- }
38
- },
39
- }
40
- },
41
-
42
- defaultVariants: {
43
- size: 'md',
44
- radii: 'full',
45
- variant: 'without-image'
46
- },
47
- })
48
-
49
- export type AvatarProps = ComponentProps<typeof AvatarStyled> & {
50
- as?: ElementType
51
- fallback?: string
52
- src?: string
53
- }
54
- export function Avatar({ asChild, ...props }: AvatarProps) {
55
- return <AvatarStyled as={AvatarRadix} {...props} />
1
+ import { ComponentProps, ElementType } from 'react'
2
+ import { styled } from '../styles'
3
+ import { Avatar as AvatarRadix } from "@radix-ui/themes";
4
+ export const AvatarStyled = styled(AvatarRadix, {
5
+ fontFamily: '$default',
6
+ color: '$gray100',
7
+ letterSpacing: '0px',
8
+ variants: {
9
+ size: {
10
+ 'xs': { width: '$24', height: '$24', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$10', },
11
+ 'sm': { width: '$32', height: '$32', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$14', },
12
+ 'md': { width: '$40', height: '$40', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$16', },
13
+ 'lg': { width: '$48', height: '$48', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$18', },
14
+ 'xl': { width: '$64', height: '$64', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '$24', },
15
+ },
16
+ radii: {
17
+ full: { borderRadius: '$full' },
18
+ },
19
+ variant: {
20
+ 'without-image': {
21
+ border: '1px solid $brand500',
22
+ backgroundColor: '$dark50',
23
+ color: '$dark700',
24
+ fontStyle: 'normal',
25
+ fontWeight: 500,
26
+ lineHeight: 'normal',
27
+ textTransform: 'uppercase',
28
+
29
+ },
30
+ 'with-image': {
31
+ border: 0,
32
+ 'img': {
33
+ width: '100%',
34
+ height: '100%',
35
+ objectFit: 'cover',
36
+ borderRadius: '$full',
37
+ }
38
+ },
39
+ }
40
+ },
41
+
42
+ defaultVariants: {
43
+ size: 'md',
44
+ radii: 'full',
45
+ variant: 'without-image'
46
+ },
47
+ })
48
+
49
+ export type AvatarProps = ComponentProps<typeof AvatarStyled> & {
50
+ as?: ElementType
51
+ fallback?: string
52
+ src?: string
53
+ }
54
+ export function Avatar({ asChild, ...props }: AvatarProps) {
55
+ return <AvatarStyled as={AvatarRadix} {...props} />
56
56
  }
@@ -1,132 +1,132 @@
1
- import React, { ComponentProps, CSSProperties, ElementType, ReactNode } from "react";
2
- import type { CSS } from "@stitches/react";
3
- import { styled, config } from "../styles";
4
- import { Badge as BadgeRadix } from "@radix-ui/themes";
5
- export const BadgeStyled = styled(BadgeRadix, {
6
- fontFamily: "$default",
7
- borderRadius: "$sm",
8
- verticalAlign: "middle",
9
- variants: {
10
- color: {
11
- primary: {
12
- backgroundColor: "$brand100",
13
- color: "$dark700",
14
- },
15
- dark: {
16
- backgroundColor: "$dark700",
17
- color: "$grey50",
18
- },
19
- light: {
20
- backgroundColor: "$neutral200",
21
- color: "$dark700",
22
- },
23
- red: {
24
- backgroundColor: "$red100",
25
- color: "$dark700",
26
- },
27
- green: {
28
- backgroundColor: "$green100",
29
- color: "$dark700",
30
- },
31
- yellow: {
32
- backgroundColor: "$yellow100",
33
- color: "$dark700",
34
- },
35
- orange: {
36
- backgroundColor: "$orange100",
37
- color: "$dark700",
38
- },
39
- blue: {
40
- backgroundColor: "$blue100",
41
- color: "$dark700",
42
- },
43
- pink: {
44
- backgroundColor: "$pink100",
45
- color: "$dark700",
46
- },
47
- purple: {
48
- backgroundColor: "$purple100",
49
- color: "$dark700",
50
- },
51
- grey: {
52
- backgroundColor: "$grey200",
53
- color: "$dark700",
54
- },
55
- disable: {
56
- backgroundColor: "$neutral200",
57
- color: "$grey500",
58
- },
59
- },
60
- size: {
61
- xs: {
62
- padding: "$4 $6",
63
- fontSize: "$badgeExtraSmall",
64
- borderRadius: "$2xs",
65
- lineHeight: "$badgeExtraSmall",
66
- },
67
- sm: {
68
- padding: "$4 $8",
69
- fontSize: "$badgeSmall",
70
- borderRadius: "$xs",
71
- lineHeight: "$badgeSmall",
72
- },
73
- md: {
74
- padding: "$8 $10",
75
- fontSize: "$badgeMedium",
76
- borderRadius: "$sm",
77
- lineHeight: "$badgeMedium",
78
- },
79
- xl: {
80
- padding: "$12 $12",
81
- fontSize: "$badgeLarge",
82
- borderRadius: "$sm",
83
- lineHeight: "$badgeLarge",
84
- },
85
- },
86
- fontWeight: {
87
- regular: { fontWeight: "$regular" },
88
- medium: { fontWeight: "$medium" },
89
- semibold: { fontWeight: "$semibold" },
90
- bold: { fontWeight: "$bold" },
91
- },
92
- radii: {
93
- full: {
94
- borderRadius: "$full",
95
- },
96
- },
97
- },
98
-
99
- defaultVariants: {
100
- size: "md",
101
- color: "primary",
102
- fontWeight: "regular",
103
- },
104
- });
105
-
106
- export type BadgeProps = {
107
- as?: ElementType;
108
- asChild?: boolean;
109
- color?: "primary" | "dark" | "light" | "red" | "green" | "yellow" | "orange" | "blue" | "pink" | "purple" | "grey" | "disable";
110
- size?: "xs" | "sm" | "md" | "xl";
111
- fontWeight?: "regular" | "medium" | "semibold" | "bold";
112
- radii?: "full";
113
- icon?: boolean;
114
- children: ReactNode;
115
- id?: string;
116
- className?: string;
117
- style?: CSSProperties;
118
- css?: CSS<typeof config>;
119
- };
120
-
121
- export function Badge({ asChild, children, ...props }: BadgeProps) {
122
- return (
123
- <BadgeStyled {...(props as ComponentProps<typeof BadgeStyled>)}>
124
- {React.Children.map(children, (child) => {
125
- if (React.isValidElement(child)) {
126
- return React.cloneElement(child, { size: props.size } as any);
127
- }
128
- return child;
129
- })}
130
- </BadgeStyled>
131
- );
132
- }
1
+ import React, { ComponentProps, CSSProperties, ElementType, ReactNode } from "react";
2
+ import type { CSS } from "@stitches/react";
3
+ import { styled, config } from "../styles";
4
+ import { Badge as BadgeRadix } from "@radix-ui/themes";
5
+ export const BadgeStyled = styled(BadgeRadix, {
6
+ fontFamily: "$default",
7
+ borderRadius: "$sm",
8
+ verticalAlign: "middle",
9
+ variants: {
10
+ color: {
11
+ primary: {
12
+ backgroundColor: "$brand100",
13
+ color: "$dark700",
14
+ },
15
+ dark: {
16
+ backgroundColor: "$dark700",
17
+ color: "$grey50",
18
+ },
19
+ light: {
20
+ backgroundColor: "$neutral200",
21
+ color: "$dark700",
22
+ },
23
+ red: {
24
+ backgroundColor: "$red100",
25
+ color: "$dark700",
26
+ },
27
+ green: {
28
+ backgroundColor: "$green100",
29
+ color: "$dark700",
30
+ },
31
+ yellow: {
32
+ backgroundColor: "$yellow100",
33
+ color: "$dark700",
34
+ },
35
+ orange: {
36
+ backgroundColor: "$orange100",
37
+ color: "$dark700",
38
+ },
39
+ blue: {
40
+ backgroundColor: "$blue100",
41
+ color: "$dark700",
42
+ },
43
+ pink: {
44
+ backgroundColor: "$pink100",
45
+ color: "$dark700",
46
+ },
47
+ purple: {
48
+ backgroundColor: "$purple100",
49
+ color: "$dark700",
50
+ },
51
+ grey: {
52
+ backgroundColor: "$grey200",
53
+ color: "$dark700",
54
+ },
55
+ disable: {
56
+ backgroundColor: "$neutral200",
57
+ color: "$grey500",
58
+ },
59
+ },
60
+ size: {
61
+ xs: {
62
+ padding: "$4 $6",
63
+ fontSize: "$badgeExtraSmall",
64
+ borderRadius: "$2xs",
65
+ lineHeight: "$badgeExtraSmall",
66
+ },
67
+ sm: {
68
+ padding: "$4 $8",
69
+ fontSize: "$badgeSmall",
70
+ borderRadius: "$xs",
71
+ lineHeight: "$badgeSmall",
72
+ },
73
+ md: {
74
+ padding: "$8 $10",
75
+ fontSize: "$badgeMedium",
76
+ borderRadius: "$sm",
77
+ lineHeight: "$badgeMedium",
78
+ },
79
+ xl: {
80
+ padding: "$12 $12",
81
+ fontSize: "$badgeLarge",
82
+ borderRadius: "$sm",
83
+ lineHeight: "$badgeLarge",
84
+ },
85
+ },
86
+ fontWeight: {
87
+ regular: { fontWeight: "$regular" },
88
+ medium: { fontWeight: "$medium" },
89
+ semibold: { fontWeight: "$semibold" },
90
+ bold: { fontWeight: "$bold" },
91
+ },
92
+ radii: {
93
+ full: {
94
+ borderRadius: "$full",
95
+ },
96
+ },
97
+ },
98
+
99
+ defaultVariants: {
100
+ size: "md",
101
+ color: "primary",
102
+ fontWeight: "regular",
103
+ },
104
+ });
105
+
106
+ export type BadgeProps = {
107
+ as?: ElementType;
108
+ asChild?: boolean;
109
+ color?: "primary" | "dark" | "light" | "red" | "green" | "yellow" | "orange" | "blue" | "pink" | "purple" | "grey" | "disable";
110
+ size?: "xs" | "sm" | "md" | "xl";
111
+ fontWeight?: "regular" | "medium" | "semibold" | "bold";
112
+ radii?: "full";
113
+ icon?: boolean;
114
+ children: ReactNode;
115
+ id?: string;
116
+ className?: string;
117
+ style?: CSSProperties;
118
+ css?: CSS<typeof config>;
119
+ };
120
+
121
+ export function Badge({ asChild, children, ...props }: BadgeProps) {
122
+ return (
123
+ <BadgeStyled {...(props as ComponentProps<typeof BadgeStyled>)}>
124
+ {React.Children.map(children, (child) => {
125
+ if (React.isValidElement(child)) {
126
+ return React.cloneElement(child, { size: props.size } as any);
127
+ }
128
+ return child;
129
+ })}
130
+ </BadgeStyled>
131
+ );
132
+ }
@@ -1,3 +1,3 @@
1
- import { Box as BoxRadix } from "@radix-ui/themes";
2
- export const Box = BoxRadix
3
-
1
+ import { Box as BoxRadix } from "@radix-ui/themes";
2
+ export const Box = BoxRadix
3
+
@@ -1,85 +1,85 @@
1
- import { ButtonHTMLAttributes, ComponentProps, CSSProperties, ReactNode, useMemo } from "react";
2
- import type { CSS } from "@stitches/react";
3
- import { ButtonStyled, SpinningDiv } from "./styledComponents";
4
- import { config } from "../../styles";
5
- import { Button as ButtonRadix } from "@radix-ui/themes";
6
- import Icon, { IconProps } from "../Icon";
7
- import { Flex } from "../Flex";
8
-
9
- type TextAlign = "center" | "left" | "right";
10
-
11
- const getJustifyByTextAlign = (textAlign: TextAlign) => {
12
- switch (textAlign) {
13
- case "left":
14
- return "start";
15
- case "right":
16
- return "end";
17
- default:
18
- return "center";
19
- }
20
- };
21
-
22
- export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
23
- color?: "brand" | "purple" | "error" | "info" | "success" | "warning" | "neutral" | "white";
24
- size?: "extraSmall" | "small" | "medium" | "large";
25
- variant?: "text" | "toggle" | "contained" | "outlined" | "menuDropdownItem" | "menuDropdownItemDelete";
26
- fontWeight?: "regular" | "medium" | "semibold" | "bold";
27
- textAlign?: TextAlign;
28
- outlinedBgColor?: "neutral" | "transparent";
29
- radii?: "full";
30
- isCircle?: boolean;
31
- asChild?: boolean;
32
- loading?: boolean;
33
- children?: ReactNode;
34
- className?: string;
35
- style?: CSSProperties;
36
- css?: CSS<typeof config>;
37
- }
38
-
39
- export function Button({ asChild, children, loading, ...props }: ButtonProps) {
40
- const Component = asChild ? ButtonRadix : "button";
41
- const { size, disabled, textAlign = "center" } = props;
42
-
43
- const spinnerSize = useMemo((): IconProps["size"] => {
44
- switch (size) {
45
- case "small":
46
- return "sm";
47
- case "extraSmall":
48
- return "xs";
49
- case "medium":
50
- return "md";
51
- case "large":
52
- return "xl";
53
- default:
54
- return "md";
55
- }
56
- }, [size]);
57
-
58
- return (
59
- <ButtonStyled as={Component} {...(props as ComponentProps<typeof ButtonStyled>)} disabled={disabled || loading}>
60
- <div style={{ position: "relative" }}>
61
- <Flex
62
- justify={getJustifyByTextAlign(textAlign)}
63
- align={"center"}
64
- css={{ visibility: loading ? "hidden" : undefined }}
65
- >
66
- {children}
67
- </Flex>
68
- {loading && (
69
- <div
70
- style={{
71
- position: "absolute",
72
- top: "50%",
73
- left: "50%",
74
- transform: "translate(-50%, -50%)",
75
- }}
76
- >
77
- <SpinningDiv>
78
- <Icon name="circle-notch" size={spinnerSize} />
79
- </SpinningDiv>
80
- </div>
81
- )}
82
- </div>
83
- </ButtonStyled>
84
- );
85
- }
1
+ import { ButtonHTMLAttributes, ComponentProps, CSSProperties, ReactNode, useMemo } from "react";
2
+ import type { CSS } from "@stitches/react";
3
+ import { ButtonStyled, SpinningDiv } from "./styledComponents";
4
+ import { config } from "../../styles";
5
+ import { Button as ButtonRadix } from "@radix-ui/themes";
6
+ import Icon, { IconProps } from "../Icon";
7
+ import { Flex } from "../Flex";
8
+
9
+ type TextAlign = "center" | "left" | "right";
10
+
11
+ const getJustifyByTextAlign = (textAlign: TextAlign) => {
12
+ switch (textAlign) {
13
+ case "left":
14
+ return "start";
15
+ case "right":
16
+ return "end";
17
+ default:
18
+ return "center";
19
+ }
20
+ };
21
+
22
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
23
+ color?: "brand" | "purple" | "error" | "info" | "success" | "warning" | "neutral" | "white";
24
+ size?: "extraSmall" | "small" | "medium" | "large";
25
+ variant?: "text" | "toggle" | "contained" | "outlined" | "menuDropdownItem" | "menuDropdownItemDelete";
26
+ fontWeight?: "regular" | "medium" | "semibold" | "bold";
27
+ textAlign?: TextAlign;
28
+ outlinedBgColor?: "neutral" | "transparent";
29
+ radii?: "full";
30
+ isCircle?: boolean;
31
+ asChild?: boolean;
32
+ loading?: boolean;
33
+ children?: ReactNode;
34
+ className?: string;
35
+ style?: CSSProperties;
36
+ css?: CSS<typeof config>;
37
+ }
38
+
39
+ export function Button({ asChild, children, loading, ...props }: ButtonProps) {
40
+ const Component = asChild ? ButtonRadix : "button";
41
+ const { size, disabled, textAlign = "center" } = props;
42
+
43
+ const spinnerSize = useMemo((): IconProps["size"] => {
44
+ switch (size) {
45
+ case "small":
46
+ return "sm";
47
+ case "extraSmall":
48
+ return "xs";
49
+ case "medium":
50
+ return "md";
51
+ case "large":
52
+ return "xl";
53
+ default:
54
+ return "md";
55
+ }
56
+ }, [size]);
57
+
58
+ return (
59
+ <ButtonStyled as={Component} {...(props as ComponentProps<typeof ButtonStyled>)} disabled={disabled || loading}>
60
+ <div style={{ position: "relative" }}>
61
+ <Flex
62
+ justify={getJustifyByTextAlign(textAlign)}
63
+ align={"center"}
64
+ css={{ visibility: loading ? "hidden" : undefined }}
65
+ >
66
+ {children}
67
+ </Flex>
68
+ {loading && (
69
+ <div
70
+ style={{
71
+ position: "absolute",
72
+ top: "50%",
73
+ left: "50%",
74
+ transform: "translate(-50%, -50%)",
75
+ }}
76
+ >
77
+ <SpinningDiv>
78
+ <Icon name="circle-notch" size={spinnerSize} />
79
+ </SpinningDiv>
80
+ </div>
81
+ )}
82
+ </div>
83
+ </ButtonStyled>
84
+ );
85
+ }