norma-library 0.5.131 → 0.5.133

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 (184) hide show
  1. package/.babelrc.json +18 -18
  2. package/.prettierignore +10 -10
  3. package/.prettierrc.json +20 -20
  4. package/.storybook/main.ts +20 -20
  5. package/.storybook/preview.ts +15 -15
  6. package/README.md +43 -43
  7. package/commitlint.config.js +1 -1
  8. package/dist/esm/components/Box/styles.d.ts +1 -1
  9. package/dist/esm/components/Breadcrumb/styles.d.ts +4 -4
  10. package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
  11. package/dist/esm/components/DateInput/styles.d.ts +2 -2
  12. package/dist/esm/components/Icons.d.ts +1 -1
  13. package/dist/esm/components/Modal.js +4 -4
  14. package/dist/esm/components/Modal.js.map +1 -1
  15. package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +1 -1
  16. package/dist/esm/components/MultiSelectInput/styles.d.ts +2 -2
  17. package/dist/esm/components/ProgressBar.d.ts +1 -1
  18. package/dist/esm/components/ProgressBar.js +19 -8
  19. package/dist/esm/components/ProgressBar.js.map +1 -1
  20. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +1 -1
  21. package/dist/esm/components/SelectInput/styles.d.ts +2 -2
  22. package/dist/esm/components/Table/components/header/styles.d.ts +8 -8
  23. package/dist/esm/components/Table/components/pagination/styles.d.ts +1 -1
  24. package/dist/esm/components/Table/components/tbody/styles.d.ts +1 -1
  25. package/dist/esm/components/Table/styles.d.ts +10 -10
  26. package/dist/esm/components/TextInput/styles.d.ts +3 -3
  27. package/dist/esm/components/Typography/Text/styles.d.ts +1 -1
  28. package/dist/esm/components/Typography/Title/styles.d.ts +1 -1
  29. package/dist/esm/components/UncontrolledTable/components/header/styles.d.ts +8 -8
  30. package/dist/esm/components/UncontrolledTable/components/pagination/styles.d.ts +1 -1
  31. package/dist/esm/components/UncontrolledTable/components/tbody/styles.d.ts +1 -1
  32. package/dist/esm/components/UncontrolledTable/styles.d.ts +10 -10
  33. package/dist/esm/components/UncontrolledTabs/UncontrolledTabs.style.d.ts +1 -1
  34. package/dist/esm/interfaces/ProgressBar.d.ts +5 -1
  35. package/docs/index.md +118 -118
  36. package/package.json +136 -136
  37. package/src/components/Accordion.tsx +39 -39
  38. package/src/components/Avatar.tsx +17 -17
  39. package/src/components/Badge.tsx +14 -14
  40. package/src/components/Box/index.tsx +12 -12
  41. package/src/components/Box/interfaces.ts +3 -3
  42. package/src/components/Box/styles.tsx +22 -22
  43. package/src/components/Breadcrumb/index.tsx +27 -27
  44. package/src/components/Breadcrumb/interface.ts +8 -8
  45. package/src/components/Breadcrumb/styles.tsx +32 -32
  46. package/src/components/Button.tsx +26 -26
  47. package/src/components/Card.tsx +37 -37
  48. package/src/components/ChatMessage.tsx +87 -87
  49. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  50. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  51. package/src/components/CheckBox.tsx +21 -21
  52. package/src/components/DateInput/index.tsx +34 -34
  53. package/src/components/DateInput/interface.ts +13 -13
  54. package/src/components/DateInput/styles.tsx +27 -27
  55. package/src/components/DatePicker.tsx +67 -67
  56. package/src/components/DropDown.tsx +24 -24
  57. package/src/components/IconButton.tsx +37 -37
  58. package/src/components/Icons.tsx +82 -82
  59. package/src/components/Modal.tsx +103 -113
  60. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  61. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  62. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  63. package/src/components/MultiSelectInput/index.tsx +60 -60
  64. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  65. package/src/components/MultiSelectInput/styles.tsx +43 -43
  66. package/src/components/Paper.tsx +12 -12
  67. package/src/components/ProgressBar.tsx +63 -50
  68. package/src/components/RadioGroup.tsx +43 -43
  69. package/src/components/RangerSlider.tsx +65 -65
  70. package/src/components/Select.tsx +74 -74
  71. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  72. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  73. package/src/components/SelectInput/index.tsx +45 -45
  74. package/src/components/SelectInput/interfaces.ts +15 -15
  75. package/src/components/SelectInput/styles.tsx +31 -31
  76. package/src/components/Svgs.tsx +506 -506
  77. package/src/components/Table/components/header/index.tsx +86 -86
  78. package/src/components/Table/components/header/styles.tsx +59 -59
  79. package/src/components/Table/components/index.tsx +8 -8
  80. package/src/components/Table/components/pagination/index.tsx +39 -39
  81. package/src/components/Table/components/pagination/styles.tsx +28 -28
  82. package/src/components/Table/components/tbody/index.tsx +30 -30
  83. package/src/components/Table/components/tbody/styles.tsx +4 -4
  84. package/src/components/Table/index.tsx +317 -317
  85. package/src/components/Table/interface.ts +23 -23
  86. package/src/components/Table/styles.tsx +117 -117
  87. package/src/components/Tabs.tsx +105 -105
  88. package/src/components/Tag.tsx +33 -33
  89. package/src/components/TextField.tsx +19 -19
  90. package/src/components/TextInput/index.tsx +37 -37
  91. package/src/components/TextInput/interface.ts +9 -9
  92. package/src/components/TextInput/styles.tsx +23 -23
  93. package/src/components/TimeLine.tsx +89 -89
  94. package/src/components/TimePicker.tsx +78 -78
  95. package/src/components/Typography/Text/index.tsx +20 -20
  96. package/src/components/Typography/Text/interfaces.ts +5 -5
  97. package/src/components/Typography/Text/styles.tsx +40 -40
  98. package/src/components/Typography/Title/index.tsx +22 -22
  99. package/src/components/Typography/Title/interfaces.ts +6 -6
  100. package/src/components/Typography/Title/styles.tsx +40 -40
  101. package/src/components/Typography/index.tsx +6 -6
  102. package/src/components/UncontrolledTable/components/header/index.tsx +63 -63
  103. package/src/components/UncontrolledTable/components/header/styles.tsx +59 -59
  104. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  105. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  106. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  107. package/src/components/UncontrolledTable/components/tbody/index.tsx +30 -30
  108. package/src/components/UncontrolledTable/components/tbody/styles.tsx +4 -4
  109. package/src/components/UncontrolledTable/index.tsx +226 -226
  110. package/src/components/UncontrolledTable/interface.ts +42 -42
  111. package/src/components/UncontrolledTable/styles.tsx +120 -120
  112. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +51 -51
  113. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  114. package/src/components/index.ts +24 -24
  115. package/src/helpers/alignments.ts +14 -14
  116. package/src/helpers/borders.ts +18 -18
  117. package/src/helpers/colors.ts +206 -206
  118. package/src/helpers/index.ts +5 -5
  119. package/src/helpers/radios.ts +24 -24
  120. package/src/helpers/sizes.ts +72 -72
  121. package/src/index.ts +66 -66
  122. package/src/interfaces/Accordion.ts +12 -12
  123. package/src/interfaces/Avatar.tsx +15 -15
  124. package/src/interfaces/Badge.ts +19 -19
  125. package/src/interfaces/Button.ts +22 -22
  126. package/src/interfaces/Card.ts +11 -11
  127. package/src/interfaces/ChatMessage.ts +12 -12
  128. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  129. package/src/interfaces/CheckBox.ts +27 -27
  130. package/src/interfaces/DatePicker.ts +13 -13
  131. package/src/interfaces/DropDown.ts +14 -14
  132. package/src/interfaces/IconButton.ts +22 -22
  133. package/src/interfaces/Icons.ts +17 -17
  134. package/src/interfaces/Modal.ts +16 -16
  135. package/src/interfaces/Paper.ts +12 -12
  136. package/src/interfaces/ProgressBar.ts +25 -19
  137. package/src/interfaces/RadioGroup.ts +23 -23
  138. package/src/interfaces/RangerSlider.ts +21 -21
  139. package/src/interfaces/Select.ts +17 -17
  140. package/src/interfaces/Tabs.ts +19 -19
  141. package/src/interfaces/Tag.ts +17 -17
  142. package/src/interfaces/TextField.ts +44 -44
  143. package/src/interfaces/TimeLine.ts +11 -11
  144. package/src/interfaces/TimePicker.ts +13 -13
  145. package/src/interfaces/index.ts +23 -23
  146. package/src/providers/NormaProvider.tsx +13 -13
  147. package/src/sample-data-2.json +178 -178
  148. package/src/sample-data.json +177 -177
  149. package/src/stories/Accordion.stories.tsx +65 -65
  150. package/src/stories/Avatar.stories.tsx +123 -123
  151. package/src/stories/Badge.stories.tsx +39 -39
  152. package/src/stories/Box.stories.tsx +35 -35
  153. package/src/stories/Breadcrumb.stories.tsx +44 -44
  154. package/src/stories/Button.stories.tsx +93 -93
  155. package/src/stories/Card.stories.tsx +39 -39
  156. package/src/stories/ChatMessage.stories.tsx +84 -84
  157. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  158. package/src/stories/CheckBox.stories.tsx +88 -88
  159. package/src/stories/DateInput.stories.tsx +51 -51
  160. package/src/stories/DatePicker.stories.tsx +50 -50
  161. package/src/stories/DropDown.stories.tsx +57 -57
  162. package/src/stories/IconButton.stories.tsx +78 -78
  163. package/src/stories/Modal.stories.tsx +195 -195
  164. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  165. package/src/stories/Paper.stories.tsx +53 -53
  166. package/src/stories/ProgressBar.stories.tsx +113 -95
  167. package/src/stories/RadioGroup.stories.tsx +87 -87
  168. package/src/stories/RangerSlider.stories.tsx +158 -58
  169. package/src/stories/Select.stories.tsx +100 -100
  170. package/src/stories/SelectInput.stories.tsx +78 -78
  171. package/src/stories/Table.stories.tsx +372 -372
  172. package/src/stories/Tabs.stories.tsx +61 -61
  173. package/src/stories/Tag.stories.tsx +56 -56
  174. package/src/stories/Text.stories.tsx +37 -37
  175. package/src/stories/TextField.stories.tsx +310 -310
  176. package/src/stories/TextInput.stories.tsx +52 -52
  177. package/src/stories/TimeLine.stories.tsx +35 -35
  178. package/src/stories/TimePicker.stories.tsx +87 -87
  179. package/src/stories/Title.stories.tsx +43 -43
  180. package/src/stories/UncontrolledTable.stories.tsx +337 -337
  181. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  182. package/src/styles/globals.scss +17 -17
  183. package/src/types/index.ts +204 -204
  184. package/vite.config.ts +15 -15
@@ -1,67 +1,67 @@
1
- import React from 'react';
2
- import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
3
- import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
4
- import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
5
- import { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker';
6
- import { MobileDatePicker as MuiMobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker';
7
- import { DesktopDatePicker as MuiDesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';
8
- import { DatePickerBaseProps } from '../interfaces';
9
- import { styled } from '@mui/material/styles';
10
-
11
- import 'dayjs/locale/pt-br';
12
- import 'dayjs/locale/en';
13
- import 'dayjs/locale/es';
14
-
15
- const MuiDatePickerStyled = styled(MuiDatePicker)({
16
- '& .MuiOutlinedInput-notchedOutline': {
17
- border: 'none',
18
- borderRadius: 0,
19
- borderBottom: '1px solid #666666',
20
- },
21
- '& .MuiFormLabel-root': {
22
- backgroundColor: '#fff',
23
- padding: '0 5px',
24
- },
25
- });
26
-
27
- const MuiMobileDatePickerStyled = styled(MuiMobileDatePicker)({
28
- '& .MuiOutlinedInput-notchedOutline': {
29
- border: 'none',
30
- borderRadius: 0,
31
- borderBottom: '1px solid #666666',
32
- },
33
- '& .MuiFormLabel-root': {
34
- backgroundColor: '#fff',
35
- padding: '0 5px',
36
- },
37
- });
38
-
39
- const MuiDesktopDatePickerStyled = styled(MuiDesktopDatePicker)({
40
- '& .MuiOutlinedInput-notchedOutline': {
41
- border: 'none',
42
- borderRadius: 0,
43
- borderBottom: '1px solid #666666',
44
- },
45
- '& .MuiFormLabel-root': {
46
- backgroundColor: '#fff',
47
- padding: '0 5px',
48
- },
49
- });
50
-
51
- export const DatePicker = ({
52
- label,
53
- format = 'DD/MM/YYYY',
54
- language = 'pt-br',
55
- variant = 'desktop',
56
- }: DatePickerBaseProps) => {
57
-
58
- return (
59
- <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={language}>
60
- <DemoContainer components={['TimePicker', 'MobileTimePicker', 'DesktopTimePicker']}>
61
- {variant === 'responsive' && <MuiDatePickerStyled label={label} format={format} />}
62
- {variant === 'mobile' && <MuiMobileDatePickerStyled label={label} format={format} />}
63
- {variant === 'desktop' && <MuiDesktopDatePickerStyled label={label} format={format} />}
64
- </DemoContainer>
65
- </LocalizationProvider>
66
- );
67
- };
1
+ import React from 'react';
2
+ import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
3
+ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
4
+ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
5
+ import { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker';
6
+ import { MobileDatePicker as MuiMobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker';
7
+ import { DesktopDatePicker as MuiDesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';
8
+ import { DatePickerBaseProps } from '../interfaces';
9
+ import { styled } from '@mui/material/styles';
10
+
11
+ import 'dayjs/locale/pt-br';
12
+ import 'dayjs/locale/en';
13
+ import 'dayjs/locale/es';
14
+
15
+ const MuiDatePickerStyled = styled(MuiDatePicker)({
16
+ '& .MuiOutlinedInput-notchedOutline': {
17
+ border: 'none',
18
+ borderRadius: 0,
19
+ borderBottom: '1px solid #666666',
20
+ },
21
+ '& .MuiFormLabel-root': {
22
+ backgroundColor: '#fff',
23
+ padding: '0 5px',
24
+ },
25
+ });
26
+
27
+ const MuiMobileDatePickerStyled = styled(MuiMobileDatePicker)({
28
+ '& .MuiOutlinedInput-notchedOutline': {
29
+ border: 'none',
30
+ borderRadius: 0,
31
+ borderBottom: '1px solid #666666',
32
+ },
33
+ '& .MuiFormLabel-root': {
34
+ backgroundColor: '#fff',
35
+ padding: '0 5px',
36
+ },
37
+ });
38
+
39
+ const MuiDesktopDatePickerStyled = styled(MuiDesktopDatePicker)({
40
+ '& .MuiOutlinedInput-notchedOutline': {
41
+ border: 'none',
42
+ borderRadius: 0,
43
+ borderBottom: '1px solid #666666',
44
+ },
45
+ '& .MuiFormLabel-root': {
46
+ backgroundColor: '#fff',
47
+ padding: '0 5px',
48
+ },
49
+ });
50
+
51
+ export const DatePicker = ({
52
+ label,
53
+ format = 'DD/MM/YYYY',
54
+ language = 'pt-br',
55
+ variant = 'desktop',
56
+ }: DatePickerBaseProps) => {
57
+
58
+ return (
59
+ <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={language}>
60
+ <DemoContainer components={['TimePicker', 'MobileTimePicker', 'DesktopTimePicker']}>
61
+ {variant === 'responsive' && <MuiDatePickerStyled label={label} format={format} />}
62
+ {variant === 'mobile' && <MuiMobileDatePickerStyled label={label} format={format} />}
63
+ {variant === 'desktop' && <MuiDesktopDatePickerStyled label={label} format={format} />}
64
+ </DemoContainer>
65
+ </LocalizationProvider>
66
+ );
67
+ };
@@ -1,24 +1,24 @@
1
- import React from 'react';
2
- import { Menu as MuiDropDown } from '@mui/material';
3
- import { DropDownBaseProps } from '../interfaces';
4
- import { styled } from '@mui/material/styles';
5
-
6
- const DropDownStyled = styled(MuiDropDown)({});
7
-
8
- export const DropDown = ({ open, children, ...props }: DropDownBaseProps) => {
9
-
10
- return (
11
- <DropDownStyled
12
- open
13
- id="basic-menu"
14
- anchorEl={props.anchorEl}
15
- onClose={props.onClose}
16
- MenuListProps={{
17
- 'aria-labelledby': 'basic-button',
18
- }}
19
- {...props}
20
- >
21
- {children}
22
- </DropDownStyled>
23
- );
24
- };
1
+ import React from 'react';
2
+ import { Menu as MuiDropDown } from '@mui/material';
3
+ import { DropDownBaseProps } from '../interfaces';
4
+ import { styled } from '@mui/material/styles';
5
+
6
+ const DropDownStyled = styled(MuiDropDown)({});
7
+
8
+ export const DropDown = ({ open, children, ...props }: DropDownBaseProps) => {
9
+
10
+ return (
11
+ <DropDownStyled
12
+ open
13
+ id="basic-menu"
14
+ anchorEl={props.anchorEl}
15
+ onClose={props.onClose}
16
+ MenuListProps={{
17
+ 'aria-labelledby': 'basic-button',
18
+ }}
19
+ {...props}
20
+ >
21
+ {children}
22
+ </DropDownStyled>
23
+ );
24
+ };
@@ -1,37 +1,37 @@
1
- import React from 'react';
2
- import { IconButton as MuiIconButton } from '@mui/material';
3
- import { IconButtonBaseProps } from '../interfaces';
4
- import { palette } from '../helpers';
5
- import { styled } from '@mui/material/styles';
6
- import { ButtonVariant, ColorVariant } from '@/types';
7
-
8
- const colorMap: Record<ColorVariant, string> = {
9
- inherit: palette.inherit,
10
- primary: palette.primary,
11
- secondary: palette.secondary,
12
- error: palette.error,
13
- warning: palette.warning,
14
- info: palette.info,
15
- success: palette.success,
16
- };
17
-
18
- const IconButtonStyled = styled(MuiIconButton)<{
19
- circle: boolean;
20
- color: ColorVariant;
21
- variant: ButtonVariant;
22
- cursor: string;
23
- }>(({ circle, color, variant, cursor }) => ({
24
- borderRadius: circle === true ? 99 : 5,
25
- border: variant === 'outlined' ? `1px solid ${colorMap[color]}` : 'none',
26
- backgroundColor: variant === 'contained' ? `${colorMap[color]}` : 'none',
27
- cursor: cursor,
28
- }));
29
-
30
- export const IconButton = ({ circle = false, children, ...props }: IconButtonBaseProps) => {
31
-
32
- return (
33
- <IconButtonStyled circle={circle} color="primary" variant="text" cursor="default" {...props}>
34
- {children}
35
- </IconButtonStyled>
36
- );
37
- };
1
+ import React from 'react';
2
+ import { IconButton as MuiIconButton } from '@mui/material';
3
+ import { IconButtonBaseProps } from '../interfaces';
4
+ import { palette } from '../helpers';
5
+ import { styled } from '@mui/material/styles';
6
+ import { ButtonVariant, ColorVariant } from '@/types';
7
+
8
+ const colorMap: Record<ColorVariant, string> = {
9
+ inherit: palette.inherit,
10
+ primary: palette.primary,
11
+ secondary: palette.secondary,
12
+ error: palette.error,
13
+ warning: palette.warning,
14
+ info: palette.info,
15
+ success: palette.success,
16
+ };
17
+
18
+ const IconButtonStyled = styled(MuiIconButton)<{
19
+ circle: boolean;
20
+ color: ColorVariant;
21
+ variant: ButtonVariant;
22
+ cursor: string;
23
+ }>(({ circle, color, variant, cursor }) => ({
24
+ borderRadius: circle === true ? 99 : 5,
25
+ border: variant === 'outlined' ? `1px solid ${colorMap[color]}` : 'none',
26
+ backgroundColor: variant === 'contained' ? `${colorMap[color]}` : 'none',
27
+ cursor: cursor,
28
+ }));
29
+
30
+ export const IconButton = ({ circle = false, children, ...props }: IconButtonBaseProps) => {
31
+
32
+ return (
33
+ <IconButtonStyled circle={circle} color="primary" variant="text" cursor="default" {...props}>
34
+ {children}
35
+ </IconButtonStyled>
36
+ );
37
+ };
@@ -1,82 +1,82 @@
1
- import React, { FunctionComponent } from 'react';
2
- import { iconsSVG } from './Svgs';
3
- import { IconColors, IconScale } from '../types';
4
- import { IconsProps, SvgProps } from '../interfaces/Icons';
5
- import styled from '@emotion/styled';
6
- import { palette } from '../helpers';
7
-
8
- export const Svg = styled.svg<SvgProps>(
9
- {
10
- shapeRendering: 'inherit',
11
- transform: 'translate3d(0,0,0)',
12
- },
13
- ({ inline }) => (inline ? { display: 'inline-block' } : { display: 'block' }),
14
- );
15
-
16
- const scaleSize: Record<IconScale, number> = {
17
- xsmall: 14,
18
- small: 20,
19
- medium: 24,
20
- large: 28,
21
- xlarge: 32,
22
- '2xlarge': 36,
23
- '3xlarge': 40,
24
- };
25
-
26
- // Definindo um objeto com as cores de preenchimento e traço com base no MUI
27
- const colors: Record<IconColors, string> = {
28
- inherit: palette.inherit,
29
- primary: palette.primary,
30
- secondary: palette.secondary,
31
- error: palette.error,
32
- info: palette.info,
33
- success: palette.success,
34
- warning: palette.warning,
35
- white: palette.white,
36
- black: palette.black,
37
- };
38
-
39
- export const Icons: FunctionComponent<IconsProps> = ({
40
- icon,
41
- scale,
42
- useSymbol,
43
- color = 'inherit',
44
- ...props
45
- }: IconsProps) => {
46
- let width = 24;
47
- let height = 24;
48
- if (scale) {
49
- width = scaleSize[scale];
50
- height = scaleSize[scale];
51
- }
52
-
53
- // Obtém a cor de preenchimento e traço com base no valor da prop 'color'
54
- const fill = colors[color];
55
- const stroke = colors[color];
56
-
57
- const Svg = styled.svg`
58
- display: inline-block;
59
- shape-rendering: inherit;
60
- vertical-align: middle;
61
- fill: ${fill};
62
- path {
63
- stroke: ${stroke};
64
- }
65
- circle {
66
- stroke: ${stroke};
67
- }
68
- rect {
69
- stroke: ${stroke};
70
- }
71
- `;
72
-
73
- return (
74
- <Svg viewBox="0 0 56 56" width={`${width}px`} height={`${height}px`} {...props}>
75
- {useSymbol ? (
76
- <use xlinkHref={`#icon--${icon}`} fill={fill} stroke={stroke} />
77
- ) : (
78
- React.cloneElement(iconsSVG[icon], { fill, stroke })
79
- )}
80
- </Svg>
81
- );
82
- };
1
+ import React, { FunctionComponent } from 'react';
2
+ import { iconsSVG } from './Svgs';
3
+ import { IconColors, IconScale } from '../types';
4
+ import { IconsProps, SvgProps } from '../interfaces/Icons';
5
+ import styled from '@emotion/styled';
6
+ import { palette } from '../helpers';
7
+
8
+ export const Svg = styled.svg<SvgProps>(
9
+ {
10
+ shapeRendering: 'inherit',
11
+ transform: 'translate3d(0,0,0)',
12
+ },
13
+ ({ inline }) => (inline ? { display: 'inline-block' } : { display: 'block' }),
14
+ );
15
+
16
+ const scaleSize: Record<IconScale, number> = {
17
+ xsmall: 14,
18
+ small: 20,
19
+ medium: 24,
20
+ large: 28,
21
+ xlarge: 32,
22
+ '2xlarge': 36,
23
+ '3xlarge': 40,
24
+ };
25
+
26
+ // Definindo um objeto com as cores de preenchimento e traço com base no MUI
27
+ const colors: Record<IconColors, string> = {
28
+ inherit: palette.inherit,
29
+ primary: palette.primary,
30
+ secondary: palette.secondary,
31
+ error: palette.error,
32
+ info: palette.info,
33
+ success: palette.success,
34
+ warning: palette.warning,
35
+ white: palette.white,
36
+ black: palette.black,
37
+ };
38
+
39
+ export const Icons: FunctionComponent<IconsProps> = ({
40
+ icon,
41
+ scale,
42
+ useSymbol,
43
+ color = 'inherit',
44
+ ...props
45
+ }: IconsProps) => {
46
+ let width = 24;
47
+ let height = 24;
48
+ if (scale) {
49
+ width = scaleSize[scale];
50
+ height = scaleSize[scale];
51
+ }
52
+
53
+ // Obtém a cor de preenchimento e traço com base no valor da prop 'color'
54
+ const fill = colors[color];
55
+ const stroke = colors[color];
56
+
57
+ const Svg = styled.svg`
58
+ display: inline-block;
59
+ shape-rendering: inherit;
60
+ vertical-align: middle;
61
+ fill: ${fill};
62
+ path {
63
+ stroke: ${stroke};
64
+ }
65
+ circle {
66
+ stroke: ${stroke};
67
+ }
68
+ rect {
69
+ stroke: ${stroke};
70
+ }
71
+ `;
72
+
73
+ return (
74
+ <Svg viewBox="0 0 56 56" width={`${width}px`} height={`${height}px`} {...props}>
75
+ {useSymbol ? (
76
+ <use xlinkHref={`#icon--${icon}`} fill={fill} stroke={stroke} />
77
+ ) : (
78
+ React.cloneElement(iconsSVG[icon], { fill, stroke })
79
+ )}
80
+ </Svg>
81
+ );
82
+ };
@@ -1,113 +1,103 @@
1
- import React from 'react';
2
- import { Modal as MuiModal, Paper, Box, Typography } from '@mui/material';
3
- import { ModalBaseProps } from '../interfaces';
4
- import { styled } from '@mui/material/styles';
5
- import { IconButton } from './IconButton';
6
- import { Button } from './Button';
7
-
8
- const ModalStyled = styled(MuiModal)({});
9
-
10
- const ModalContentStyled = styled(Paper)`
11
- border: 1px solid #00000033;
12
- border-radius: 4px;
13
- position: absolute;
14
- top: 50%;
15
- left: 50%;
16
- width: 421px;
17
- transform: translate(-50%, -50%);
18
- background-color: #FFF;
19
- box-shadow: 24px;
20
- `;
21
-
22
- const ModalHeaderStyled = styled(Box)`
23
- text-align: left;
24
- border-bottom: 1px solid #00000033;
25
- box-sizing: border-box;
26
- margin: 0;
27
- position: relative;
28
- padding: 22px 26px 15px 26px;
29
- justify-content: space-between;
30
- display: flex;
31
-
32
- & h2 {
33
- font: normal normal 600 18px/30px Source Sans Pro;
34
- color: #292929;
35
- }
36
- `;
37
-
38
- const ModalFooterStyled = styled(Box)`
39
- border-top: 1px solid #00000033;
40
- box-sizing: border-box;
41
- position: relative;
42
- padding: 24px;
43
- display: flex;
44
- justify-content: end;
45
- gap: 24px;
46
- `;
47
-
48
- const ModalContainerChildrenStyled = styled(Box)`
49
- box-sizing: border-box;
50
- padding: 24px;
51
- `;
52
-
53
- export function Close() {
54
- return (
55
- <svg
56
- fill="#808080"
57
- viewBox="0 0 24 24"
58
- xmlns="http://www.w3.org/2000/svg"
59
- aria-hidden="true"
60
- height="24"
61
- width="24"
62
- >
63
- <path
64
- clipRule="evenodd"
65
- fillRule="evenodd"
66
- d="M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z"
67
- />
68
- </svg>
69
- );
70
- }
71
-
72
- export const Modal = ({ open, children, paperProps, ...props }: ModalBaseProps) => {
73
- return (
74
- <ModalStyled open {...props}>
75
- <ModalContentStyled {...paperProps}>
76
- {props.title && (
77
- <ModalHeaderStyled>
78
- <Typography variant='h2'>{props.title}</Typography>
79
- <IconButton
80
- onClick={props.onClose}
81
- size="small"
82
- color="inherit"
83
- variant="text"
84
- cursor="pointer"
85
- sx={{padding: "0"}}
86
- >
87
- <Close />
88
- </IconButton>
89
- </ModalHeaderStyled>
90
- )}
91
- <ModalContainerChildrenStyled>
92
- {children}
93
- </ModalContainerChildrenStyled>
94
- {!!props.action?.length && (
95
- <ModalFooterStyled>
96
- {props.action.map(({color, variant, action, size, label, ...rest}, key) => (
97
- <Button
98
- color={color}
99
- variant={variant}
100
- key={key}
101
- onClick={action}
102
- size={size}
103
- {...rest}
104
- >
105
- {label}
106
- </Button>
107
- ))}
108
- </ModalFooterStyled>
109
- )}
110
- </ModalContentStyled>
111
- </ModalStyled>
112
- );
113
- };
1
+ import React from 'react';
2
+ import { Modal as MuiModal, Paper, Box, Typography } from '@mui/material';
3
+ import { ModalBaseProps } from '../interfaces';
4
+ import { styled } from '@mui/material/styles';
5
+ import { IconButton } from './IconButton';
6
+ import { Button } from './Button';
7
+
8
+ const ModalStyled = styled(MuiModal)({});
9
+
10
+ const ModalContentStyled = styled(Paper)`
11
+ border: 1px solid #00000033;
12
+ border-radius: 4px;
13
+ position: absolute;
14
+ top: 50%;
15
+ left: 50%;
16
+ width: 421px;
17
+ transform: translate(-50%, -50%);
18
+ background-color: #fff;
19
+ box-shadow: 24px;
20
+ `;
21
+
22
+ const ModalHeaderStyled = styled(Box)`
23
+ text-align: left;
24
+ border-bottom: 1px solid #00000033;
25
+ box-sizing: border-box;
26
+ margin: 0;
27
+ position: relative;
28
+ padding: 22px 26px 15px 26px;
29
+ justify-content: space-between;
30
+ display: flex;
31
+
32
+ & h2 {
33
+ color: #292929;
34
+ }
35
+ `;
36
+
37
+ const ModalFooterStyled = styled(Box)`
38
+ border-top: 1px solid #00000033;
39
+ box-sizing: border-box;
40
+ position: relative;
41
+ padding: 24px;
42
+ display: flex;
43
+ justify-content: end;
44
+ gap: 24px;
45
+ `;
46
+
47
+ const ModalContainerChildrenStyled = styled(Box)`
48
+ box-sizing: border-box;
49
+ padding: 24px;
50
+ `;
51
+
52
+ export function Close() {
53
+ return (
54
+ <svg
55
+ fill="#808080"
56
+ viewBox="0 0 24 24"
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ aria-hidden="true"
59
+ height="24"
60
+ width="24"
61
+ >
62
+ <path
63
+ clipRule="evenodd"
64
+ fillRule="evenodd"
65
+ d="M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z"
66
+ />
67
+ </svg>
68
+ );
69
+ }
70
+
71
+ export const Modal = ({ open, children, paperProps, ...props }: ModalBaseProps) => {
72
+ return (
73
+ <ModalStyled open {...props}>
74
+ <ModalContentStyled {...paperProps}>
75
+ {props.title && (
76
+ <ModalHeaderStyled>
77
+ <Typography variant="h2">{props.title}</Typography>
78
+ <IconButton
79
+ onClick={props.onClose}
80
+ size="small"
81
+ color="inherit"
82
+ variant="text"
83
+ cursor="pointer"
84
+ sx={{ padding: '0' }}
85
+ >
86
+ <Close />
87
+ </IconButton>
88
+ </ModalHeaderStyled>
89
+ )}
90
+ <ModalContainerChildrenStyled>{children}</ModalContainerChildrenStyled>
91
+ {!!props.action?.length && (
92
+ <ModalFooterStyled>
93
+ {props.action.map(({ color, variant, action, size, label, ...rest }, key) => (
94
+ <Button color={color} variant={variant} key={key} onClick={action} size={size} {...rest}>
95
+ {label}
96
+ </Button>
97
+ ))}
98
+ </ModalFooterStyled>
99
+ )}
100
+ </ModalContentStyled>
101
+ </ModalStyled>
102
+ );
103
+ };