norma-library 0.4.9 → 0.5.0

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 (246) hide show
  1. package/.babelrc.json +1 -1
  2. package/.husky/commit-msg +4 -0
  3. package/.prettierignore +11 -0
  4. package/.prettierrc.json +20 -0
  5. package/CHANGELOG.md +0 -0
  6. package/CONTRIBUTING.md +0 -0
  7. package/README.md +42 -0
  8. package/commitlint.config.js +1 -0
  9. package/dist/Button/index.d.ts +9 -0
  10. package/dist/Button/types.d.ts +18 -0
  11. package/dist/Card/Card.d.ts +3 -0
  12. package/dist/Card/CardHeader.d.ts +3 -0
  13. package/dist/Card/index.d.ts +4 -0
  14. package/dist/Card/styles.d.ts +546 -0
  15. package/dist/Card/types.d.ts +8 -0
  16. package/dist/esm/components/Accordion.d.ts +2 -2
  17. package/dist/esm/components/Accordion.js +8 -8
  18. package/dist/esm/components/Accordion.js.map +1 -1
  19. package/dist/esm/components/Avatar.d.ts +2 -2
  20. package/dist/esm/components/Avatar.js +7 -7
  21. package/dist/esm/components/Avatar.js.map +1 -1
  22. package/dist/esm/components/Badge.d.ts +2 -2
  23. package/dist/esm/components/Badge.js +5 -5
  24. package/dist/esm/components/Badge.js.map +1 -1
  25. package/dist/esm/components/Button.d.ts +2 -2
  26. package/dist/esm/components/Button.js +10 -10
  27. package/dist/esm/components/Button.js.map +1 -1
  28. package/dist/esm/components/Card.d.ts +3 -3
  29. package/dist/esm/components/Card.js +8 -8
  30. package/dist/esm/components/Card.js.map +1 -1
  31. package/dist/esm/components/ChatMessage.d.ts +2 -2
  32. package/dist/esm/components/ChatMessage.js +35 -35
  33. package/dist/esm/components/ChatMessage.js.map +1 -1
  34. package/dist/esm/components/CheckBox.d.ts +2 -2
  35. package/dist/esm/components/CheckBox.js +5 -5
  36. package/dist/esm/components/CheckBox.js.map +1 -1
  37. package/dist/esm/components/DataGrid/base/dropdown.d.ts +2 -2
  38. package/dist/esm/components/DataGrid/base/dropdown.js +32 -32
  39. package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -1
  40. package/dist/esm/components/DataGrid/base/number-filter.d.ts +2 -2
  41. package/dist/esm/components/DataGrid/base/number-filter.js +21 -21
  42. package/dist/esm/components/DataGrid/base/sorting.d.ts +2 -2
  43. package/dist/esm/components/DataGrid/base/sorting.js +1 -1
  44. package/dist/esm/components/DataGrid/base/sorting.js.map +1 -1
  45. package/dist/esm/components/DataGrid/icons.d.ts +1 -1
  46. package/dist/esm/components/DataGrid/icons.js +1 -1
  47. package/dist/esm/components/DataGrid/icons.js.map +1 -1
  48. package/dist/esm/components/DataGrid/index.d.ts +2 -2
  49. package/dist/esm/components/DataGrid/index.js +35 -44
  50. package/dist/esm/components/DataGrid/index.js.map +1 -1
  51. package/dist/esm/components/DataGrid/shared.d.ts +1 -1
  52. package/dist/esm/components/DataGrid/shared.js +19 -32
  53. package/dist/esm/components/DataGrid/shared.js.map +1 -1
  54. package/dist/esm/components/DataGrid/styled.d.ts +2 -2
  55. package/dist/esm/components/DataGrid/styled.js +35 -35
  56. package/dist/esm/components/DataGrid/styled.js.map +1 -1
  57. package/dist/esm/components/DatePicker.d.ts +5 -5
  58. package/dist/esm/components/DatePicker.js +37 -37
  59. package/dist/esm/components/DatePicker.js.map +1 -1
  60. package/dist/esm/components/DropDown.d.ts +2 -2
  61. package/dist/esm/components/DropDown.js +6 -6
  62. package/dist/esm/components/DropDown.js.map +1 -1
  63. package/dist/esm/components/IconButton.d.ts +2 -2
  64. package/dist/esm/components/IconButton.js +7 -7
  65. package/dist/esm/components/IconButton.js.map +1 -1
  66. package/dist/esm/components/Icons.d.ts +2 -2
  67. package/dist/esm/components/Icons.js +10 -10
  68. package/dist/esm/components/Icons.js.map +1 -1
  69. package/dist/esm/components/Modal.d.ts +2 -2
  70. package/dist/esm/components/Modal.js +8 -8
  71. package/dist/esm/components/Modal.js.map +1 -1
  72. package/dist/esm/components/Paper.d.ts +2 -2
  73. package/dist/esm/components/Paper.js +5 -5
  74. package/dist/esm/components/Paper.js.map +1 -1
  75. package/dist/esm/components/ProgressBar.d.ts +2 -2
  76. package/dist/esm/components/ProgressBar.js +11 -11
  77. package/dist/esm/components/ProgressBar.js.map +1 -1
  78. package/dist/esm/components/RadioGroup.d.ts +2 -2
  79. package/dist/esm/components/RadioGroup.js +7 -7
  80. package/dist/esm/components/RadioGroup.js.map +1 -1
  81. package/dist/esm/components/RangerSlider.d.ts +2 -2
  82. package/dist/esm/components/RangerSlider.js +31 -31
  83. package/dist/esm/components/RangerSlider.js.map +1 -1
  84. package/dist/esm/components/Select.d.ts +2 -2
  85. package/dist/esm/components/Select.js +14 -14
  86. package/dist/esm/components/Select.js.map +1 -1
  87. package/dist/esm/components/Svgs.d.ts +1 -1
  88. package/dist/esm/components/Svgs.js +1 -1
  89. package/dist/esm/components/Svgs.js.map +1 -1
  90. package/dist/esm/components/Tabs.d.ts +2 -2
  91. package/dist/esm/components/Tabs.js +25 -26
  92. package/dist/esm/components/Tabs.js.map +1 -1
  93. package/dist/esm/components/Tag.d.ts +2 -2
  94. package/dist/esm/components/Tag.js +8 -8
  95. package/dist/esm/components/Tag.js.map +1 -1
  96. package/dist/esm/components/TextField.d.ts +2 -2
  97. package/dist/esm/components/TextField.js +8 -8
  98. package/dist/esm/components/TextField.js.map +1 -1
  99. package/dist/esm/components/TimeLine.d.ts +2 -2
  100. package/dist/esm/components/TimeLine.js +20 -20
  101. package/dist/esm/components/TimeLine.js.map +1 -1
  102. package/dist/esm/components/TimePicker.d.ts +8 -8
  103. package/dist/esm/components/TimePicker.js +43 -43
  104. package/dist/esm/components/TimePicker.js.map +1 -1
  105. package/dist/esm/components/index.d.ts +23 -23
  106. package/dist/esm/components/index.js +23 -23
  107. package/dist/esm/helpers/alignments.js +7 -7
  108. package/dist/esm/helpers/borders.js +11 -11
  109. package/dist/esm/helpers/colors.js +41 -41
  110. package/dist/esm/helpers/index.d.ts +5 -5
  111. package/dist/esm/helpers/index.js +5 -5
  112. package/dist/esm/helpers/sizes.d.ts +1 -1
  113. package/dist/esm/helpers/sizes.js +39 -39
  114. package/dist/esm/helpers/sizes.js.map +1 -1
  115. package/dist/esm/index.d.ts +17 -17
  116. package/dist/esm/index.js +17 -17
  117. package/dist/esm/interfaces/Accordion.d.ts +3 -3
  118. package/dist/esm/interfaces/Avatar.d.ts +6 -6
  119. package/dist/esm/interfaces/Badge.d.ts +7 -7
  120. package/dist/esm/interfaces/Button.d.ts +5 -5
  121. package/dist/esm/interfaces/Card.d.ts +3 -3
  122. package/dist/esm/interfaces/ChatMessage.d.ts +1 -1
  123. package/dist/esm/interfaces/CheckBox.d.ts +10 -10
  124. package/dist/esm/interfaces/DataGrid.d.ts +4 -4
  125. package/dist/esm/interfaces/DatePicker.d.ts +3 -3
  126. package/dist/esm/interfaces/DropDown.d.ts +4 -4
  127. package/dist/esm/interfaces/IconButton.d.ts +5 -5
  128. package/dist/esm/interfaces/Icons.d.ts +3 -3
  129. package/dist/esm/interfaces/Modal.d.ts +3 -3
  130. package/dist/esm/interfaces/Paper.d.ts +4 -4
  131. package/dist/esm/interfaces/ProgressBar.d.ts +5 -5
  132. package/dist/esm/interfaces/RadioGroup.d.ts +4 -4
  133. package/dist/esm/interfaces/RangerSlider.d.ts +8 -8
  134. package/dist/esm/interfaces/Select.d.ts +3 -3
  135. package/dist/esm/interfaces/Tabs.d.ts +3 -3
  136. package/dist/esm/interfaces/Tag.d.ts +5 -5
  137. package/dist/esm/interfaces/TextField.d.ts +12 -12
  138. package/dist/esm/interfaces/TimeLine.d.ts +3 -3
  139. package/dist/esm/interfaces/TimePicker.d.ts +3 -3
  140. package/dist/esm/interfaces/index.d.ts +23 -23
  141. package/dist/esm/interfaces/index.js +23 -23
  142. package/dist/esm/types/index.d.ts +41 -41
  143. package/dist/esm/types/index.js +2 -2
  144. package/dist/esm/types/index.js.map +1 -1
  145. package/dist/index.d.ts +2 -0
  146. package/dist/index.es.js +6992 -0
  147. package/dist/index.es.js.map +1 -0
  148. package/dist/index.umd.js +266 -0
  149. package/dist/index.umd.js.map +1 -0
  150. package/dist/vite.svg +1 -0
  151. package/docs/index.md +118 -0
  152. package/package.json +64 -8
  153. package/src/components/Accordion.tsx +47 -64
  154. package/src/components/Avatar.tsx +22 -29
  155. package/src/components/Badge.tsx +19 -22
  156. package/src/components/Button.tsx +12 -19
  157. package/src/components/Card.tsx +44 -47
  158. package/src/components/ChatMessage.tsx +87 -89
  159. package/src/components/CheckBox.tsx +8 -19
  160. package/src/components/DataGrid/allData.json +2918 -2918
  161. package/src/components/DataGrid/base/dropdown.tsx +212 -235
  162. package/src/components/DataGrid/base/number-filter.tsx +43 -43
  163. package/src/components/DataGrid/base/sorting.tsx +29 -35
  164. package/src/components/DataGrid/icons.tsx +53 -61
  165. package/src/components/DataGrid/index.tsx +254 -319
  166. package/src/components/DataGrid/shared.ts +154 -179
  167. package/src/components/DataGrid/styled.ts +96 -102
  168. package/src/components/DataGrid/styles/dropdown.module.css +86 -86
  169. package/src/components/DataGrid/styles/number-filter.module.css +16 -16
  170. package/src/components/DataGrid/styles/styles.module.css +107 -107
  171. package/src/components/DatePicker.tsx +73 -84
  172. package/src/components/DropDown.tsx +31 -38
  173. package/src/components/IconButton.tsx +12 -29
  174. package/src/components/Icons.tsx +82 -87
  175. package/src/components/Modal.tsx +114 -123
  176. package/src/components/Paper.tsx +19 -22
  177. package/src/components/ProgressBar.tsx +54 -63
  178. package/src/components/RadioGroup.tsx +47 -55
  179. package/src/components/RangerSlider.tsx +70 -81
  180. package/src/components/Select.tsx +82 -98
  181. package/src/components/Svgs.tsx +498 -522
  182. package/src/components/Tabs.tsx +111 -140
  183. package/src/components/Tag.tsx +37 -45
  184. package/src/components/TextField.tsx +11 -22
  185. package/src/components/TimeLine.tsx +93 -103
  186. package/src/components/TimePicker.tsx +84 -95
  187. package/src/components/index.ts +23 -23
  188. package/src/helpers/alignments.ts +7 -7
  189. package/src/helpers/borders.ts +11 -11
  190. package/src/helpers/colors.ts +42 -42
  191. package/src/helpers/index.ts +5 -5
  192. package/src/helpers/sizes.ts +39 -46
  193. package/src/index.ts +17 -17
  194. package/src/interfaces/Accordion.ts +12 -12
  195. package/src/interfaces/Avatar.tsx +15 -18
  196. package/src/interfaces/Badge.ts +19 -32
  197. package/src/interfaces/Button.ts +5 -10
  198. package/src/interfaces/Card.ts +11 -11
  199. package/src/interfaces/ChatMessage.ts +12 -12
  200. package/src/interfaces/CheckBox.ts +12 -18
  201. package/src/interfaces/DataGrid.ts +46 -51
  202. package/src/interfaces/DatePicker.ts +13 -13
  203. package/src/interfaces/DropDown.ts +14 -14
  204. package/src/interfaces/IconButton.ts +5 -10
  205. package/src/interfaces/Icons.ts +17 -17
  206. package/src/interfaces/Modal.ts +15 -15
  207. package/src/interfaces/Paper.ts +12 -12
  208. package/src/interfaces/ProgressBar.ts +18 -25
  209. package/src/interfaces/RadioGroup.ts +22 -28
  210. package/src/interfaces/RangerSlider.ts +21 -32
  211. package/src/interfaces/Select.ts +17 -17
  212. package/src/interfaces/Tabs.ts +19 -24
  213. package/src/interfaces/Tag.ts +17 -17
  214. package/src/interfaces/TextField.ts +14 -34
  215. package/src/interfaces/TimeLine.ts +11 -16
  216. package/src/interfaces/TimePicker.ts +13 -13
  217. package/src/interfaces/index.ts +23 -23
  218. package/src/sample-data.json +178 -178
  219. package/src/stories/Accordion.stories.tsx +65 -65
  220. package/src/stories/Avatar.stories.tsx +123 -139
  221. package/src/stories/Badge.stories.tsx +39 -47
  222. package/src/stories/Button.stories.tsx +18 -26
  223. package/src/stories/Card.stories.tsx +40 -55
  224. package/src/stories/ChatMessage.stories.tsx +84 -85
  225. package/src/stories/CheckBox.stories.tsx +17 -23
  226. package/src/stories/DataGrid.stories.tsx +28 -28
  227. package/src/stories/DatePicker.stories.tsx +50 -77
  228. package/src/stories/DropDown.stories.tsx +57 -57
  229. package/src/stories/IconButton.stories.tsx +78 -114
  230. package/src/stories/Modal.stories.tsx +190 -190
  231. package/src/stories/Paper.stories.tsx +53 -53
  232. package/src/stories/ProgressBar.stories.tsx +95 -139
  233. package/src/stories/RadioGroup.stories.tsx +21 -28
  234. package/src/stories/RangerSlider.stories.tsx +58 -68
  235. package/src/stories/Select.stories.tsx +100 -128
  236. package/src/stories/Tabs.stories.tsx +62 -62
  237. package/src/stories/Tag.stories.tsx +56 -74
  238. package/src/stories/TextField.stories.tsx +54 -189
  239. package/src/stories/TimeLine.stories.tsx +35 -43
  240. package/src/stories/TimePicker.stories.tsx +87 -113
  241. package/src/types/index.ts +90 -155
  242. package/tsconfig.json +1 -1
  243. package/buildcache/front-end +0 -1
  244. package/norma-library.tar +0 -0
  245. package/postcss.config.js +0 -6
  246. package/tailwind.config.js +0 -58
@@ -1,13 +1,9 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- IconButton as MuiIconButton,
4
- ThemeProvider,
5
- useMediaQuery,
6
- } from "@mui/material";
7
- import { IconButtonBaseProps } from "../interfaces";
8
- import { palette, themes } from "../helpers";
9
- import { styled } from "@mui/material/styles";
10
- import { ButtonVariant, ColorVariant } from "@/types";
1
+ import React, { useMemo } from 'react';
2
+ import { IconButton as MuiIconButton, ThemeProvider, useMediaQuery } from '@mui/material';
3
+ import { IconButtonBaseProps } from '../interfaces';
4
+ import { palette, themes } from '../helpers';
5
+ import { styled } from '@mui/material/styles';
6
+ import { ButtonVariant, ColorVariant } from '@/types';
11
7
 
12
8
  const colorMap: Record<ColorVariant, string> = {
13
9
  inherit: palette.inherit,
@@ -26,31 +22,18 @@ const IconButtonStyled = styled(MuiIconButton)<{
26
22
  cursor: string;
27
23
  }>(({ circle, color, variant, cursor }) => ({
28
24
  borderRadius: circle === true ? 99 : 5,
29
- border: variant === "outlined" ? `1px solid ${colorMap[color]}` : "none",
30
- backgroundColor: variant === "contained" ? `${colorMap[color]}` : "none",
25
+ border: variant === 'outlined' ? `1px solid ${colorMap[color]}` : 'none',
26
+ backgroundColor: variant === 'contained' ? `${colorMap[color]}` : 'none',
31
27
  cursor: cursor,
32
28
  }));
33
29
 
34
- export const IconButton = ({
35
- circle = false,
36
- children,
37
- ...props
38
- }: IconButtonBaseProps) => {
39
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
40
- const theme = useMemo(
41
- () => (prefersDarkMode ? themes.dark : themes.light),
42
- [prefersDarkMode]
43
- );
30
+ export const IconButton = ({ circle = false, children, ...props }: IconButtonBaseProps) => {
31
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
32
+ const theme = useMemo(() => (prefersDarkMode ? themes.dark : themes.light), [prefersDarkMode]);
44
33
 
45
34
  return (
46
35
  <ThemeProvider theme={theme}>
47
- <IconButtonStyled
48
- circle={circle}
49
- color="primary"
50
- variant="text"
51
- cursor="default"
52
- {...props}
53
- >
36
+ <IconButtonStyled circle={circle} color="primary" variant="text" cursor="default" {...props}>
54
37
  {children}
55
38
  </IconButtonStyled>
56
39
  </ThemeProvider>
@@ -1,87 +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
75
- viewBox="0 0 56 56"
76
- width={`${width}px`}
77
- height={`${height}px`}
78
- {...props}
79
- >
80
- {useSymbol ? (
81
- <use xlinkHref={`#icon--${icon}`} fill={fill} stroke={stroke} />
82
- ) : (
83
- React.cloneElement(iconsSVG[icon], { fill, stroke })
84
- )}
85
- </Svg>
86
- );
87
- };
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,123 +1,114 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- Modal as MuiModal,
4
- Paper,
5
- Box,
6
- ThemeProvider,
7
- useMediaQuery,
8
- } from "@mui/material";
9
- import { ModalBaseProps } from "../interfaces";
10
- import { themes } from "../helpers";
11
- import { styled } from "@mui/material/styles";
12
- import { IconButton } from "./IconButton";
13
- import { Button } from "./Button";
14
-
15
- const ModalStyled = styled(MuiModal)({});
16
-
17
- const ModalContentStyled = styled(Paper)`
18
- border: 1px solid #00000033;
19
- border-radius: 4px;
20
- position: absolute;
21
- top: 50%;
22
- left: 50%;
23
- width: 421px;
24
- transform: translate(-50%, -50%);
25
- bgcolor: background.paper;
26
- box-shadow: 24px;
27
- padding: 16px;
28
- `;
29
-
30
- const ModalHeaderStyled = styled(Box)`
31
- text-align: left;
32
- border-bottom: 1px solid #00000033;
33
- margin: 0;
34
- top: -5px;
35
- position: relative;
36
- padding: 0 5px;
37
- display: flex;
38
-
39
- & h2 {
40
- font: normal normal 600 18px/30px Source Sans Pro;
41
- color: #292929;
42
- }
43
- `;
44
-
45
- const ModalFooterStyled = styled(Box)`
46
- text-align: left;
47
- border-top: 1px solid #00000033;
48
- margin-top: 16px;
49
- bottom: -5px;
50
- position: relative;
51
- padding: 10px 5px 5px;
52
- display: flex;
53
- justify-content: end;
54
- `;
55
-
56
- export function Close() {
57
- return (
58
- <svg
59
- fill="#808080"
60
- viewBox="0 0 24 24"
61
- xmlns="http://www.w3.org/2000/svg"
62
- aria-hidden="true"
63
- height="24"
64
- width="24"
65
- >
66
- <path
67
- clipRule="evenodd"
68
- fillRule="evenodd"
69
- 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"
70
- />
71
- </svg>
72
- );
73
- }
74
-
75
- export const Modal = ({ open, children, ...props }: ModalBaseProps) => {
76
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
77
- const theme = useMemo(
78
- () => (prefersDarkMode ? themes.light : themes.dark),
79
- [prefersDarkMode]
80
- );
81
-
82
- return (
83
- <ThemeProvider theme={theme}>
84
- <ModalStyled open {...props}>
85
- <ModalContentStyled>
86
- {props.title && (
87
- <ModalHeaderStyled>
88
- <>
89
- <h2>{props.title}</h2>
90
- <IconButton
91
- onClick={props.onClose}
92
- size="small"
93
- color="inherit"
94
- variant="text"
95
- cursor="pointer"
96
- sx={{ position: "absolute", right: 0, top: 5 }}
97
- >
98
- <Close />
99
- </IconButton>
100
- </>
101
- </ModalHeaderStyled>
102
- )}
103
- {children}
104
- {props.action && (
105
- <ModalFooterStyled>
106
- {props.action.map((item, key) => (
107
- <Button
108
- color={item.color}
109
- variant={item.variant}
110
- key={key}
111
- onClick={item.action}
112
- style={{ marginLeft: 10 }}
113
- >
114
- {item.label}
115
- </Button>
116
- ))}
117
- </ModalFooterStyled>
118
- )}
119
- </ModalContentStyled>
120
- </ModalStyled>
121
- </ThemeProvider>
122
- );
123
- };
1
+ import React, { useMemo } from 'react';
2
+ import { Modal as MuiModal, Paper, Box, ThemeProvider, useMediaQuery } from '@mui/material';
3
+ import { ModalBaseProps } from '../interfaces';
4
+ import { themes } from '../helpers';
5
+ import { styled } from '@mui/material/styles';
6
+ import { IconButton } from './IconButton';
7
+ import { Button } from './Button';
8
+
9
+ const ModalStyled = styled(MuiModal)({});
10
+
11
+ const ModalContentStyled = styled(Paper)`
12
+ border: 1px solid #00000033;
13
+ border-radius: 4px;
14
+ position: absolute;
15
+ top: 50%;
16
+ left: 50%;
17
+ width: 421px;
18
+ transform: translate(-50%, -50%);
19
+ bgcolor: background.paper;
20
+ box-shadow: 24px;
21
+ padding: 16px;
22
+ `;
23
+
24
+ const ModalHeaderStyled = styled(Box)`
25
+ text-align: left;
26
+ border-bottom: 1px solid #00000033;
27
+ margin: 0;
28
+ top: -5px;
29
+ position: relative;
30
+ padding: 0 5px;
31
+ display: flex;
32
+
33
+ & h2 {
34
+ font: normal normal 600 18px/30px Source Sans Pro;
35
+ color: #292929;
36
+ }
37
+ `;
38
+
39
+ const ModalFooterStyled = styled(Box)`
40
+ text-align: left;
41
+ border-top: 1px solid #00000033;
42
+ margin-top: 16px;
43
+ bottom: -5px;
44
+ position: relative;
45
+ padding: 10px 5px 5px;
46
+ display: flex;
47
+ justify-content: end;
48
+ `;
49
+
50
+ export function Close() {
51
+ return (
52
+ <svg
53
+ fill="#808080"
54
+ viewBox="0 0 24 24"
55
+ xmlns="http://www.w3.org/2000/svg"
56
+ aria-hidden="true"
57
+ height="24"
58
+ width="24"
59
+ >
60
+ <path
61
+ clipRule="evenodd"
62
+ fillRule="evenodd"
63
+ 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"
64
+ />
65
+ </svg>
66
+ );
67
+ }
68
+
69
+ export const Modal = ({ open, children, ...props }: ModalBaseProps) => {
70
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
71
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
72
+
73
+ return (
74
+ <ThemeProvider theme={theme}>
75
+ <ModalStyled open {...props}>
76
+ <ModalContentStyled>
77
+ {props.title && (
78
+ <ModalHeaderStyled>
79
+ <>
80
+ <h2>{props.title}</h2>
81
+ <IconButton
82
+ onClick={props.onClose}
83
+ size="small"
84
+ color="inherit"
85
+ variant="text"
86
+ cursor="pointer"
87
+ sx={{ position: 'absolute', right: 0, top: 5 }}
88
+ >
89
+ <Close />
90
+ </IconButton>
91
+ </>
92
+ </ModalHeaderStyled>
93
+ )}
94
+ {children}
95
+ {props.action && (
96
+ <ModalFooterStyled>
97
+ {props.action.map((item, key) => (
98
+ <Button
99
+ color={item.color}
100
+ variant={item.variant}
101
+ key={key}
102
+ onClick={item.action}
103
+ style={{ marginLeft: 10 }}
104
+ >
105
+ {item.label}
106
+ </Button>
107
+ ))}
108
+ </ModalFooterStyled>
109
+ )}
110
+ </ModalContentStyled>
111
+ </ModalStyled>
112
+ </ThemeProvider>
113
+ );
114
+ };
@@ -1,22 +1,19 @@
1
- import React, { useMemo } from "react";
2
- import { Paper as MuiPaper, ThemeProvider, useMediaQuery } from "@mui/material";
3
- import { PaperBaseProps } from "../interfaces";
4
- import { themes } from "../helpers";
5
- import { styled } from "@mui/material/styles";
6
-
7
- const PaperStyled = styled(MuiPaper)({});
8
-
9
- export const Paper = ({ children, ...props }: PaperBaseProps & {}) => {
10
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
11
-
12
- const theme = useMemo(
13
- () => (prefersDarkMode ? themes.light : themes.dark),
14
- [prefersDarkMode]
15
- );
16
-
17
- return (
18
- <ThemeProvider theme={theme}>
19
- <PaperStyled {...props}>{children}</PaperStyled>
20
- </ThemeProvider>
21
- );
22
- };
1
+ import React, { useMemo } from 'react';
2
+ import { Paper as MuiPaper, ThemeProvider, useMediaQuery } from '@mui/material';
3
+ import { PaperBaseProps } from '../interfaces';
4
+ import { themes } from '../helpers';
5
+ import { styled } from '@mui/material/styles';
6
+
7
+ const PaperStyled = styled(MuiPaper)({});
8
+
9
+ export const Paper = ({ children, ...props }: PaperBaseProps & {}) => {
10
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
11
+
12
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
13
+
14
+ return (
15
+ <ThemeProvider theme={theme}>
16
+ <PaperStyled {...props}>{children}</PaperStyled>
17
+ </ThemeProvider>
18
+ );
19
+ };
@@ -1,63 +1,54 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- LinearProgress as MuiProgressBar,
4
- linearProgressClasses,
5
- ThemeProvider,
6
- useMediaQuery,
7
- Typography,
8
- } from "@mui/material";
9
-
10
- import { ProgressBarBaseProps } from "../interfaces";
11
- import { themes } from "../helpers";
12
- import { styled } from "@mui/material/styles";
13
-
14
- const ProgressBarStyled = styled(MuiProgressBar)({
15
- width: "100%",
16
- height: "10px",
17
- borderRadius: "10px",
18
- position: "relative",
19
- backgroundColor: `&.${linearProgressClasses.determinate} {
20
- background-color: #e0e0e0,
21
- }`,
22
- });
23
-
24
- const ProgressBarLabelStyled = styled(Typography)`
25
- display: flex;
26
- justify-content: space-between;
27
- align-items: center;
28
- margin-bottom: 8px;
29
- position: relative;
30
- text-align: left;
31
- font: normal normal normal 16px/20px Source Sans Pro;
32
- `;
33
-
34
- export const ProgressBar = ({
35
- value = 0,
36
- label,
37
- variant = "determinate",
38
- total,
39
- ...props
40
- }: ProgressBarBaseProps) => {
41
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
42
- const percentage = value && total ? (value / total) * 100 : 0;
43
- const theme = useMemo(
44
- () => (prefersDarkMode ? themes.light : themes.dark),
45
- [prefersDarkMode]
46
- );
47
-
48
- return (
49
- <ThemeProvider theme={theme}>
50
- <div style={{ minWidth: "100px" }}>
51
- {label && (
52
- <ProgressBarLabelStyled>
53
- {label}
54
- <span style={{ right: 0 }}>
55
- {total} ({percentage.toFixed(2)}%)
56
- </span>
57
- </ProgressBarLabelStyled>
58
- )}
59
- <ProgressBarStyled value={value} variant={variant} {...props} />
60
- </div>
61
- </ThemeProvider>
62
- );
63
- };
1
+ import React, { useMemo } from 'react';
2
+ import {
3
+ LinearProgress as MuiProgressBar,
4
+ linearProgressClasses,
5
+ ThemeProvider,
6
+ useMediaQuery,
7
+ Typography,
8
+ } from '@mui/material';
9
+
10
+ import { ProgressBarBaseProps } from '../interfaces';
11
+ import { themes } from '../helpers';
12
+ import { styled } from '@mui/material/styles';
13
+
14
+ const ProgressBarStyled = styled(MuiProgressBar)({
15
+ width: '100%',
16
+ height: '10px',
17
+ borderRadius: '10px',
18
+ position: 'relative',
19
+ backgroundColor: `&.${linearProgressClasses.determinate} {
20
+ background-color: #e0e0e0,
21
+ }`,
22
+ });
23
+
24
+ const ProgressBarLabelStyled = styled(Typography)`
25
+ display: flex;
26
+ justify-content: space-between;
27
+ align-items: center;
28
+ margin-bottom: 8px;
29
+ position: relative;
30
+ text-align: left;
31
+ font: normal normal normal 16px/20px Source Sans Pro;
32
+ `;
33
+
34
+ export const ProgressBar = ({ value = 0, label, variant = 'determinate', total, ...props }: ProgressBarBaseProps) => {
35
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
36
+ const percentage = value && total ? (value / total) * 100 : 0;
37
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
38
+
39
+ return (
40
+ <ThemeProvider theme={theme}>
41
+ <div style={{ minWidth: '100px' }}>
42
+ {label && (
43
+ <ProgressBarLabelStyled>
44
+ {label}
45
+ <span style={{ right: 0 }}>
46
+ {total} ({percentage.toFixed(2)}%)
47
+ </span>
48
+ </ProgressBarLabelStyled>
49
+ )}
50
+ <ProgressBarStyled value={value} variant={variant} {...props} />
51
+ </div>
52
+ </ThemeProvider>
53
+ );
54
+ };