norma-library 0.5.131 → 0.5.132

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 (182) 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/MultiSelectInput/components/Option/styles.d.ts +1 -1
  14. package/dist/esm/components/MultiSelectInput/styles.d.ts +2 -2
  15. package/dist/esm/components/ProgressBar.d.ts +1 -1
  16. package/dist/esm/components/ProgressBar.js +19 -8
  17. package/dist/esm/components/ProgressBar.js.map +1 -1
  18. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +1 -1
  19. package/dist/esm/components/SelectInput/styles.d.ts +2 -2
  20. package/dist/esm/components/Table/components/header/styles.d.ts +8 -8
  21. package/dist/esm/components/Table/components/pagination/styles.d.ts +1 -1
  22. package/dist/esm/components/Table/components/tbody/styles.d.ts +1 -1
  23. package/dist/esm/components/Table/styles.d.ts +10 -10
  24. package/dist/esm/components/TextInput/styles.d.ts +3 -3
  25. package/dist/esm/components/Typography/Text/styles.d.ts +1 -1
  26. package/dist/esm/components/Typography/Title/styles.d.ts +1 -1
  27. package/dist/esm/components/UncontrolledTable/components/header/styles.d.ts +8 -8
  28. package/dist/esm/components/UncontrolledTable/components/pagination/styles.d.ts +1 -1
  29. package/dist/esm/components/UncontrolledTable/components/tbody/styles.d.ts +1 -1
  30. package/dist/esm/components/UncontrolledTable/styles.d.ts +10 -10
  31. package/dist/esm/components/UncontrolledTabs/UncontrolledTabs.style.d.ts +1 -1
  32. package/dist/esm/interfaces/ProgressBar.d.ts +5 -1
  33. package/docs/index.md +118 -118
  34. package/package.json +136 -136
  35. package/src/components/Accordion.tsx +39 -39
  36. package/src/components/Avatar.tsx +17 -17
  37. package/src/components/Badge.tsx +14 -14
  38. package/src/components/Box/index.tsx +12 -12
  39. package/src/components/Box/interfaces.ts +3 -3
  40. package/src/components/Box/styles.tsx +22 -22
  41. package/src/components/Breadcrumb/index.tsx +27 -27
  42. package/src/components/Breadcrumb/interface.ts +8 -8
  43. package/src/components/Breadcrumb/styles.tsx +32 -32
  44. package/src/components/Button.tsx +26 -26
  45. package/src/components/Card.tsx +37 -37
  46. package/src/components/ChatMessage.tsx +87 -87
  47. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  48. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  49. package/src/components/CheckBox.tsx +21 -21
  50. package/src/components/DateInput/index.tsx +34 -34
  51. package/src/components/DateInput/interface.ts +13 -13
  52. package/src/components/DateInput/styles.tsx +27 -27
  53. package/src/components/DatePicker.tsx +67 -67
  54. package/src/components/DropDown.tsx +24 -24
  55. package/src/components/IconButton.tsx +37 -37
  56. package/src/components/Icons.tsx +82 -82
  57. package/src/components/Modal.tsx +113 -113
  58. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  59. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  60. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  61. package/src/components/MultiSelectInput/index.tsx +60 -60
  62. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  63. package/src/components/MultiSelectInput/styles.tsx +43 -43
  64. package/src/components/Paper.tsx +12 -12
  65. package/src/components/ProgressBar.tsx +63 -50
  66. package/src/components/RadioGroup.tsx +43 -43
  67. package/src/components/RangerSlider.tsx +65 -65
  68. package/src/components/Select.tsx +74 -74
  69. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  70. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  71. package/src/components/SelectInput/index.tsx +45 -45
  72. package/src/components/SelectInput/interfaces.ts +15 -15
  73. package/src/components/SelectInput/styles.tsx +31 -31
  74. package/src/components/Svgs.tsx +506 -506
  75. package/src/components/Table/components/header/index.tsx +86 -86
  76. package/src/components/Table/components/header/styles.tsx +59 -59
  77. package/src/components/Table/components/index.tsx +8 -8
  78. package/src/components/Table/components/pagination/index.tsx +39 -39
  79. package/src/components/Table/components/pagination/styles.tsx +28 -28
  80. package/src/components/Table/components/tbody/index.tsx +30 -30
  81. package/src/components/Table/components/tbody/styles.tsx +4 -4
  82. package/src/components/Table/index.tsx +317 -317
  83. package/src/components/Table/interface.ts +23 -23
  84. package/src/components/Table/styles.tsx +117 -117
  85. package/src/components/Tabs.tsx +105 -105
  86. package/src/components/Tag.tsx +33 -33
  87. package/src/components/TextField.tsx +19 -19
  88. package/src/components/TextInput/index.tsx +37 -37
  89. package/src/components/TextInput/interface.ts +9 -9
  90. package/src/components/TextInput/styles.tsx +23 -23
  91. package/src/components/TimeLine.tsx +89 -89
  92. package/src/components/TimePicker.tsx +78 -78
  93. package/src/components/Typography/Text/index.tsx +20 -20
  94. package/src/components/Typography/Text/interfaces.ts +5 -5
  95. package/src/components/Typography/Text/styles.tsx +40 -40
  96. package/src/components/Typography/Title/index.tsx +22 -22
  97. package/src/components/Typography/Title/interfaces.ts +6 -6
  98. package/src/components/Typography/Title/styles.tsx +40 -40
  99. package/src/components/Typography/index.tsx +6 -6
  100. package/src/components/UncontrolledTable/components/header/index.tsx +63 -63
  101. package/src/components/UncontrolledTable/components/header/styles.tsx +59 -59
  102. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  103. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  104. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  105. package/src/components/UncontrolledTable/components/tbody/index.tsx +30 -30
  106. package/src/components/UncontrolledTable/components/tbody/styles.tsx +4 -4
  107. package/src/components/UncontrolledTable/index.tsx +226 -226
  108. package/src/components/UncontrolledTable/interface.ts +42 -42
  109. package/src/components/UncontrolledTable/styles.tsx +120 -120
  110. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +51 -51
  111. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  112. package/src/components/index.ts +24 -24
  113. package/src/helpers/alignments.ts +14 -14
  114. package/src/helpers/borders.ts +18 -18
  115. package/src/helpers/colors.ts +206 -206
  116. package/src/helpers/index.ts +5 -5
  117. package/src/helpers/radios.ts +24 -24
  118. package/src/helpers/sizes.ts +72 -72
  119. package/src/index.ts +66 -66
  120. package/src/interfaces/Accordion.ts +12 -12
  121. package/src/interfaces/Avatar.tsx +15 -15
  122. package/src/interfaces/Badge.ts +19 -19
  123. package/src/interfaces/Button.ts +22 -22
  124. package/src/interfaces/Card.ts +11 -11
  125. package/src/interfaces/ChatMessage.ts +12 -12
  126. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  127. package/src/interfaces/CheckBox.ts +27 -27
  128. package/src/interfaces/DatePicker.ts +13 -13
  129. package/src/interfaces/DropDown.ts +14 -14
  130. package/src/interfaces/IconButton.ts +22 -22
  131. package/src/interfaces/Icons.ts +17 -17
  132. package/src/interfaces/Modal.ts +16 -16
  133. package/src/interfaces/Paper.ts +12 -12
  134. package/src/interfaces/ProgressBar.ts +25 -19
  135. package/src/interfaces/RadioGroup.ts +23 -23
  136. package/src/interfaces/RangerSlider.ts +21 -21
  137. package/src/interfaces/Select.ts +17 -17
  138. package/src/interfaces/Tabs.ts +19 -19
  139. package/src/interfaces/Tag.ts +17 -17
  140. package/src/interfaces/TextField.ts +44 -44
  141. package/src/interfaces/TimeLine.ts +11 -11
  142. package/src/interfaces/TimePicker.ts +13 -13
  143. package/src/interfaces/index.ts +23 -23
  144. package/src/providers/NormaProvider.tsx +13 -13
  145. package/src/sample-data-2.json +178 -178
  146. package/src/sample-data.json +177 -177
  147. package/src/stories/Accordion.stories.tsx +65 -65
  148. package/src/stories/Avatar.stories.tsx +123 -123
  149. package/src/stories/Badge.stories.tsx +39 -39
  150. package/src/stories/Box.stories.tsx +35 -35
  151. package/src/stories/Breadcrumb.stories.tsx +44 -44
  152. package/src/stories/Button.stories.tsx +93 -93
  153. package/src/stories/Card.stories.tsx +39 -39
  154. package/src/stories/ChatMessage.stories.tsx +84 -84
  155. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  156. package/src/stories/CheckBox.stories.tsx +88 -88
  157. package/src/stories/DateInput.stories.tsx +51 -51
  158. package/src/stories/DatePicker.stories.tsx +50 -50
  159. package/src/stories/DropDown.stories.tsx +57 -57
  160. package/src/stories/IconButton.stories.tsx +78 -78
  161. package/src/stories/Modal.stories.tsx +195 -195
  162. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  163. package/src/stories/Paper.stories.tsx +53 -53
  164. package/src/stories/ProgressBar.stories.tsx +113 -95
  165. package/src/stories/RadioGroup.stories.tsx +87 -87
  166. package/src/stories/RangerSlider.stories.tsx +58 -58
  167. package/src/stories/Select.stories.tsx +100 -100
  168. package/src/stories/SelectInput.stories.tsx +78 -78
  169. package/src/stories/Table.stories.tsx +372 -372
  170. package/src/stories/Tabs.stories.tsx +61 -61
  171. package/src/stories/Tag.stories.tsx +56 -56
  172. package/src/stories/Text.stories.tsx +37 -37
  173. package/src/stories/TextField.stories.tsx +310 -310
  174. package/src/stories/TextInput.stories.tsx +52 -52
  175. package/src/stories/TimeLine.stories.tsx +35 -35
  176. package/src/stories/TimePicker.stories.tsx +87 -87
  177. package/src/stories/Title.stories.tsx +43 -43
  178. package/src/stories/UncontrolledTable.stories.tsx +337 -337
  179. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  180. package/src/styles/globals.scss +17 -17
  181. package/src/types/index.ts +204 -204
  182. package/vite.config.ts +15 -15
@@ -1,14 +1,14 @@
1
- import React from 'react';
2
-
3
- import { Badge as MuiBadge } from '@mui/material';
4
-
5
- import { BadgeBaseProps } from '../interfaces';
6
- import { styled } from '@mui/material/styles';
7
-
8
- const BadgeStyled = styled(MuiBadge)({});
9
-
10
- export const Badge: React.FC<BadgeBaseProps> = ({ ...props }) => {
11
- return (
12
- <BadgeStyled {...props} />
13
- );
14
- };
1
+ import React from 'react';
2
+
3
+ import { Badge as MuiBadge } from '@mui/material';
4
+
5
+ import { BadgeBaseProps } from '../interfaces';
6
+ import { styled } from '@mui/material/styles';
7
+
8
+ const BadgeStyled = styled(MuiBadge)({});
9
+
10
+ export const Badge: React.FC<BadgeBaseProps> = ({ ...props }) => {
11
+ return (
12
+ <BadgeStyled {...props} />
13
+ );
14
+ };
@@ -1,13 +1,13 @@
1
- import React from 'react'
2
- import * as S from "./styles"
3
- import { BoxProps } from "./interfaces"
4
-
5
- const Box:React.FC<BoxProps> = ({ children, size }) => {
6
- return (
7
- <S.Container size={size}>
8
- {children}
9
- </S.Container>
10
- )
11
- }
12
-
1
+ import React from 'react'
2
+ import * as S from "./styles"
3
+ import { BoxProps } from "./interfaces"
4
+
5
+ const Box:React.FC<BoxProps> = ({ children, size }) => {
6
+ return (
7
+ <S.Container size={size}>
8
+ {children}
9
+ </S.Container>
10
+ )
11
+ }
12
+
13
13
  export default Box
@@ -1,4 +1,4 @@
1
- export interface BoxProps {
2
- children: JSX.Element[] | JSX.Element
3
- size: string
1
+ export interface BoxProps {
2
+ children: JSX.Element[] | JSX.Element
3
+ size: string
4
4
  }
@@ -1,23 +1,23 @@
1
- import styled from 'styled-components'
2
- import { BoxProps } from "./interfaces"
3
-
4
- const setSizeSelected = (size: string) => {
5
- switch (size) {
6
- case "small":
7
- return "10px";
8
- case "medium":
9
- return "16px";
10
- case "large":
11
- return "24px"
12
- default:
13
- return "16px";
14
- }
15
- }
16
-
17
- export const Container = styled.div<BoxProps>`
18
- background: #fff;
19
- border-radius: 5px;
20
- width: 100%;
21
- box-shadow: 0px 2px 6px #0000000A;
22
- padding: ${props => setSizeSelected(props.size)}
1
+ import styled from 'styled-components'
2
+ import { BoxProps } from "./interfaces"
3
+
4
+ const setSizeSelected = (size: string) => {
5
+ switch (size) {
6
+ case "small":
7
+ return "10px";
8
+ case "medium":
9
+ return "16px";
10
+ case "large":
11
+ return "24px"
12
+ default:
13
+ return "16px";
14
+ }
15
+ }
16
+
17
+ export const Container = styled.div<BoxProps>`
18
+ background: #fff;
19
+ border-radius: 5px;
20
+ width: 100%;
21
+ box-shadow: 0px 2px 6px #0000000A;
22
+ padding: ${props => setSizeSelected(props.size)}
23
23
  `
@@ -1,27 +1,27 @@
1
- import React, { useMemo } from 'react';
2
- import * as S from "./styles"
3
- import { BreadcrumbProps, Link } from './interface';
4
-
5
- const Breadcrumb:React.FC<BreadcrumbProps> = ({ links, onChange }) => {
6
- const listLinks = useMemo(() => {
7
- return links.map((link: Link, index: number, self: Link[]) => {
8
- const showIcon = self.length > index + 1
9
- return (
10
- <div className='content' key={index}>
11
- <S.Link onClick={() => onChange(link)}>{link.name}</S.Link>
12
- { showIcon ? <S.Arrow><i className="icon"></i></S.Arrow> : null }
13
- </div>
14
- )
15
- })
16
- }, [links])
17
-
18
- return (
19
- <S.Container>
20
- <S.ListLinks>
21
- { listLinks }
22
- </S.ListLinks>
23
- </S.Container>
24
- )
25
- }
26
-
27
- export default Breadcrumb
1
+ import React, { useMemo } from 'react';
2
+ import * as S from "./styles"
3
+ import { BreadcrumbProps, Link } from './interface';
4
+
5
+ const Breadcrumb:React.FC<BreadcrumbProps> = ({ links, onChange }) => {
6
+ const listLinks = useMemo(() => {
7
+ return links.map((link: Link, index: number, self: Link[]) => {
8
+ const showIcon = self.length > index + 1
9
+ return (
10
+ <div className='content' key={index}>
11
+ <S.Link onClick={() => onChange(link)}>{link.name}</S.Link>
12
+ { showIcon ? <S.Arrow><i className="icon"></i></S.Arrow> : null }
13
+ </div>
14
+ )
15
+ })
16
+ }, [links])
17
+
18
+ return (
19
+ <S.Container>
20
+ <S.ListLinks>
21
+ { listLinks }
22
+ </S.ListLinks>
23
+ </S.Container>
24
+ )
25
+ }
26
+
27
+ export default Breadcrumb
@@ -1,9 +1,9 @@
1
- export interface Link {
2
- name: string
3
- route: string
4
- }
5
-
6
- export interface BreadcrumbProps {
7
- links: Link[]
8
- onChange: Function
1
+ export interface Link {
2
+ name: string
3
+ route: string
4
+ }
5
+
6
+ export interface BreadcrumbProps {
7
+ links: Link[]
8
+ onChange: Function
9
9
  }
@@ -1,33 +1,33 @@
1
- import styled from "styled-components";
2
-
3
- export const Container = styled.div`
4
- margin: 0 0 16px 0;
5
- `
6
-
7
- export const ListLinks = styled.div`
8
- display: flex;
9
- gap: 8px;
10
- .content {
11
- display: flex;
12
- gap: 8px;
13
- }
14
- `
15
-
16
- export const Link = styled.p`
17
- color: #666;
18
- font-size: 14px;
19
- cursor: pointer;
20
- `
21
-
22
- export const Arrow = styled.div`
23
- display: flex;
24
- align-items: center;
25
- .icon {
26
- border: solid #999;
27
- border-width: 0 2px 2px 0;
28
- display: inline-block;
29
- padding: 2px;
30
- transform: rotate(-45deg);
31
- -webkit-transform: rotate(-45deg);
32
- }
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ margin: 0 0 16px 0;
5
+ `
6
+
7
+ export const ListLinks = styled.div`
8
+ display: flex;
9
+ gap: 8px;
10
+ .content {
11
+ display: flex;
12
+ gap: 8px;
13
+ }
14
+ `
15
+
16
+ export const Link = styled.p`
17
+ color: #666;
18
+ font-size: 14px;
19
+ cursor: pointer;
20
+ `
21
+
22
+ export const Arrow = styled.div`
23
+ display: flex;
24
+ align-items: center;
25
+ .icon {
26
+ border: solid #999;
27
+ border-width: 0 2px 2px 0;
28
+ display: inline-block;
29
+ padding: 2px;
30
+ transform: rotate(-45deg);
31
+ -webkit-transform: rotate(-45deg);
32
+ }
33
33
  `
@@ -1,26 +1,26 @@
1
- import React from 'react';
2
- import { Button as MuiButton } from '@mui/material';
3
- import { ButtonBaseProps } from '../interfaces';
4
- import { styled } from '@mui/material/styles';
5
-
6
- const ButtonStyled = styled(MuiButton)({
7
- textTransform: 'none',
8
- '& .MuiButton-sizeLarge': {
9
- height: '75px',
10
- backgroundColor: 'red',
11
- },
12
- });
13
-
14
- export const Button = ({ label, children, ...props }: ButtonBaseProps) => {
15
-
16
- return (
17
- <ButtonStyled
18
- {...props}
19
- sx={{
20
- color: props.variant === 'contained' ? '#FFFF' : props.color,
21
- }}
22
- >
23
- {label ? label : children}
24
- </ButtonStyled>
25
- );
26
- };
1
+ import React from 'react';
2
+ import { Button as MuiButton } from '@mui/material';
3
+ import { ButtonBaseProps } from '../interfaces';
4
+ import { styled } from '@mui/material/styles';
5
+
6
+ const ButtonStyled = styled(MuiButton)({
7
+ textTransform: 'none',
8
+ '& .MuiButton-sizeLarge': {
9
+ height: '75px',
10
+ backgroundColor: 'red',
11
+ },
12
+ });
13
+
14
+ export const Button = ({ label, children, ...props }: ButtonBaseProps) => {
15
+
16
+ return (
17
+ <ButtonStyled
18
+ {...props}
19
+ sx={{
20
+ color: props.variant === 'contained' ? '#FFFF' : props.color,
21
+ }}
22
+ >
23
+ {label ? label : children}
24
+ </ButtonStyled>
25
+ );
26
+ };
@@ -1,38 +1,38 @@
1
- import React from 'react';
2
- import { Card as MuiCard } from '@mui/material';
3
- import { CardBaseProps } from '../interfaces';
4
- import { palette } from '../helpers';
5
- import { styled } from '@mui/material/styles';
6
- import { 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 CardStyled = styled(MuiCard)<{
19
- borderColor?: ColorVariant;
20
- }>(({ borderColor }) => ({
21
- padding: 16,
22
- borderRadius: 5,
23
- boxShadow: '0px 2px 8px #00000053',
24
- borderLeft: borderColor ? `7px solid ${colorMap[borderColor]}` : 'none',
25
- }));
26
-
27
- export const Card = ({
28
- children,
29
- border,
30
- color = 'inherit',
31
- ...props
32
- }: CardBaseProps & { border?: boolean; color?: ColorVariant }) => {
33
- return (
34
- <CardStyled borderColor={border ? color : undefined} {...props}>
35
- {children}
36
- </CardStyled>
37
- );
1
+ import React from 'react';
2
+ import { Card as MuiCard } from '@mui/material';
3
+ import { CardBaseProps } from '../interfaces';
4
+ import { palette } from '../helpers';
5
+ import { styled } from '@mui/material/styles';
6
+ import { 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 CardStyled = styled(MuiCard)<{
19
+ borderColor?: ColorVariant;
20
+ }>(({ borderColor }) => ({
21
+ padding: 16,
22
+ borderRadius: 5,
23
+ boxShadow: '0px 2px 8px #00000053',
24
+ borderLeft: borderColor ? `7px solid ${colorMap[borderColor]}` : 'none',
25
+ }));
26
+
27
+ export const Card = ({
28
+ children,
29
+ border,
30
+ color = 'inherit',
31
+ ...props
32
+ }: CardBaseProps & { border?: boolean; color?: ColorVariant }) => {
33
+ return (
34
+ <CardStyled borderColor={border ? color : undefined} {...props}>
35
+ {children}
36
+ </CardStyled>
37
+ );
38
38
  };
@@ -1,87 +1,87 @@
1
- import React from 'react';
2
- import { Box, Typography } from '@mui/material';
3
- import { styled } from '@mui/material/styles';
4
- import { ChatMessageProps } from '@/interfaces';
5
-
6
- const Item = styled(Box)<{
7
- orient?: string;
8
- }>(({ orient }) => ({
9
- borderColor: '#ccc',
10
- display: 'flex',
11
- position: 'relative',
12
- width: '100%',
13
- justifyContent: orient === 'replay' ? 'flex-end' : 'flex-start',
14
- marginBottom: '10px',
15
- alignItems: 'center',
16
- }));
17
-
18
- const ContainerStyled = styled(Box)({
19
- display: 'flex',
20
- flexDirection: 'column',
21
- alignItems: 'center',
22
- minWidth: '640px',
23
- backgroundColor: '#F0F0F0',
24
- padding: '10px',
25
- });
26
-
27
- const BoxStyled = styled(Box)<{
28
- orient?: string;
29
- }>(({ orient }) => ({
30
- width: '70%',
31
- backgroundColor: orient === 'replay' ? '#E18B50' : '#FFF',
32
- color: orient === 'replay' ? '#FFF' : '#4D4F5C',
33
- borderTopLeftRadius: 30,
34
- borderTopRightRadius: 30,
35
- borderBottomLeftRadius: orient === 'me' ? 2 : 30,
36
- borderBottomRightRadius: orient === 'me' ? 30 : 2,
37
- marginLeft: orient === 'replay' ? '10px' : 0,
38
- marginRight: orient === 'me' ? '10px' : 0,
39
- padding: 20,
40
- }));
41
-
42
- export const ChatMessage: React.FC<ChatMessageProps> = ({ data }) => {
43
- return (
44
- <ContainerStyled>
45
- {data.map((item, key) => (
46
- <Item key={key} orient={item.send}>
47
- {item.emotion && item.send === 'replay' && <>{item.emotion}</>}
48
- <BoxStyled orient={item.send}>
49
- <Typography
50
- variant="subtitle2"
51
- style={{
52
- marginBottom: '5px',
53
- font: 'normal normal 600 16px/20px Source Sans Pro',
54
- }}
55
- >
56
- {item.name}
57
- </Typography>
58
- <Typography
59
- variant="body1"
60
- style={{
61
- font: 'normal normal normal 16px/20px Source Sans Pro',
62
- }}
63
- >
64
- {item.message}
65
- </Typography>
66
- <Typography
67
- variant="caption"
68
- style={{
69
- position: 'absolute',
70
- bottom: '-18px',
71
- left: item.send === 'me' ? 0 : 'auto',
72
- right: item.send === 'me' ? 'auto' : 0,
73
- font: 'normal normal normal 11px/13px Source Sans Pro',
74
- opacity: 0.5,
75
- color: '#4D4F5C',
76
- }}
77
- >
78
- {item.time}
79
- </Typography>
80
- </BoxStyled>
81
- {item.emotion && item.send === 'me' && <>{item.emotion}</>}
82
- {item.emotionReplay && item.send === 'me' && <>{item.emotionReplay}</>}
83
- </Item>
84
- ))}
85
- </ContainerStyled>
86
- );
87
- };
1
+ import React from 'react';
2
+ import { Box, Typography } from '@mui/material';
3
+ import { styled } from '@mui/material/styles';
4
+ import { ChatMessageProps } from '@/interfaces';
5
+
6
+ const Item = styled(Box)<{
7
+ orient?: string;
8
+ }>(({ orient }) => ({
9
+ borderColor: '#ccc',
10
+ display: 'flex',
11
+ position: 'relative',
12
+ width: '100%',
13
+ justifyContent: orient === 'replay' ? 'flex-end' : 'flex-start',
14
+ marginBottom: '10px',
15
+ alignItems: 'center',
16
+ }));
17
+
18
+ const ContainerStyled = styled(Box)({
19
+ display: 'flex',
20
+ flexDirection: 'column',
21
+ alignItems: 'center',
22
+ minWidth: '640px',
23
+ backgroundColor: '#F0F0F0',
24
+ padding: '10px',
25
+ });
26
+
27
+ const BoxStyled = styled(Box)<{
28
+ orient?: string;
29
+ }>(({ orient }) => ({
30
+ width: '70%',
31
+ backgroundColor: orient === 'replay' ? '#E18B50' : '#FFF',
32
+ color: orient === 'replay' ? '#FFF' : '#4D4F5C',
33
+ borderTopLeftRadius: 30,
34
+ borderTopRightRadius: 30,
35
+ borderBottomLeftRadius: orient === 'me' ? 2 : 30,
36
+ borderBottomRightRadius: orient === 'me' ? 30 : 2,
37
+ marginLeft: orient === 'replay' ? '10px' : 0,
38
+ marginRight: orient === 'me' ? '10px' : 0,
39
+ padding: 20,
40
+ }));
41
+
42
+ export const ChatMessage: React.FC<ChatMessageProps> = ({ data }) => {
43
+ return (
44
+ <ContainerStyled>
45
+ {data.map((item, key) => (
46
+ <Item key={key} orient={item.send}>
47
+ {item.emotion && item.send === 'replay' && <>{item.emotion}</>}
48
+ <BoxStyled orient={item.send}>
49
+ <Typography
50
+ variant="subtitle2"
51
+ style={{
52
+ marginBottom: '5px',
53
+ font: 'normal normal 600 16px/20px Source Sans Pro',
54
+ }}
55
+ >
56
+ {item.name}
57
+ </Typography>
58
+ <Typography
59
+ variant="body1"
60
+ style={{
61
+ font: 'normal normal normal 16px/20px Source Sans Pro',
62
+ }}
63
+ >
64
+ {item.message}
65
+ </Typography>
66
+ <Typography
67
+ variant="caption"
68
+ style={{
69
+ position: 'absolute',
70
+ bottom: '-18px',
71
+ left: item.send === 'me' ? 0 : 'auto',
72
+ right: item.send === 'me' ? 'auto' : 0,
73
+ font: 'normal normal normal 11px/13px Source Sans Pro',
74
+ opacity: 0.5,
75
+ color: '#4D4F5C',
76
+ }}
77
+ >
78
+ {item.time}
79
+ </Typography>
80
+ </BoxStyled>
81
+ {item.emotion && item.send === 'me' && <>{item.emotion}</>}
82
+ {item.emotionReplay && item.send === 'me' && <>{item.emotionReplay}</>}
83
+ </Item>
84
+ ))}
85
+ </ContainerStyled>
86
+ );
87
+ };
@@ -1,56 +1,56 @@
1
- import { Box, Typography } from '@mui/material';
2
- import { styled } from '@mui/material/styles';
3
-
4
- export const ChatMessageBalloonContainerStyle = styled(Box)({
5
- display: 'flex',
6
- flexDirection: "column",
7
- });
8
-
9
- export const ChatMessageBalloonRowStyle = styled('div')<{ direction: string }>`
10
- display: flex;
11
- margin-bottom: 8px;
12
- flex-direction: ${(props) => (props.direction === "I") ? "row-reverse" : "row"};
13
-
14
- &:last-child {
15
- margin-bottom: 0px;
16
- }
17
- `
18
-
19
- export const ChatMessageBalloonStyle = styled('div')<{ direction: string }>`
20
- background-color: ${(props) => (props.direction === "I") ? "#FFF" : "#E18B50"};
21
- border: 2px solid transparent;
22
- border-radius: ${(props) => (props.direction === "I") ? "20px 20px 0px 20px" : "20px 20px 20px 0px"};
23
- box-sizing: border-box;
24
- color: ${(props) => (props.direction === "I") ? "#4D4F5B" : "#FFF"};
25
- display: flex;
26
- flex-direction: column;
27
- padding: 12px 24px;
28
- width: 60%;
29
- transition: border 0.6s cubic-bezier(0.16, 1, 0.3, 1);
30
-
31
- &.is-highlight {
32
- border: 2px solid #8a8888;
33
- }
34
-
35
- &.is-interactive {
36
- cursor: pointer;
37
-
38
- &:hover {
39
- border: 2px solid #8a8888;
40
- }
41
- }
42
- `
43
-
44
- export const ChatMessageDateStyle = styled(Typography)`
45
- color: #43425D;
46
- opacity: .5;
47
- `
48
-
49
- export const ChatMessageChildrenStyle = styled('div')<{ direction: string }>`
50
- align-items: center;
51
- box-sizing: border-box;
52
- display: flex;
53
- flex: 1;
54
- justify-content: ${(props) => (props.direction === "I") ? "end" : "start"};
55
- padding: 8px;
56
- `;
1
+ import { Box, Typography } from '@mui/material';
2
+ import { styled } from '@mui/material/styles';
3
+
4
+ export const ChatMessageBalloonContainerStyle = styled(Box)({
5
+ display: 'flex',
6
+ flexDirection: "column",
7
+ });
8
+
9
+ export const ChatMessageBalloonRowStyle = styled('div')<{ direction: string }>`
10
+ display: flex;
11
+ margin-bottom: 8px;
12
+ flex-direction: ${(props) => (props.direction === "I") ? "row-reverse" : "row"};
13
+
14
+ &:last-child {
15
+ margin-bottom: 0px;
16
+ }
17
+ `
18
+
19
+ export const ChatMessageBalloonStyle = styled('div')<{ direction: string }>`
20
+ background-color: ${(props) => (props.direction === "I") ? "#FFF" : "#E18B50"};
21
+ border: 2px solid transparent;
22
+ border-radius: ${(props) => (props.direction === "I") ? "20px 20px 0px 20px" : "20px 20px 20px 0px"};
23
+ box-sizing: border-box;
24
+ color: ${(props) => (props.direction === "I") ? "#4D4F5B" : "#FFF"};
25
+ display: flex;
26
+ flex-direction: column;
27
+ padding: 12px 24px;
28
+ width: 60%;
29
+ transition: border 0.6s cubic-bezier(0.16, 1, 0.3, 1);
30
+
31
+ &.is-highlight {
32
+ border: 2px solid #8a8888;
33
+ }
34
+
35
+ &.is-interactive {
36
+ cursor: pointer;
37
+
38
+ &:hover {
39
+ border: 2px solid #8a8888;
40
+ }
41
+ }
42
+ `
43
+
44
+ export const ChatMessageDateStyle = styled(Typography)`
45
+ color: #43425D;
46
+ opacity: .5;
47
+ `
48
+
49
+ export const ChatMessageChildrenStyle = styled('div')<{ direction: string }>`
50
+ align-items: center;
51
+ box-sizing: border-box;
52
+ display: flex;
53
+ flex: 1;
54
+ justify-content: ${(props) => (props.direction === "I") ? "end" : "start"};
55
+ padding: 8px;
56
+ `;