@lunit/oui 1.0.1 → 1.1.0-alpha.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 (229) hide show
  1. package/README.md +3 -0
  2. package/dist/components/EllipsisTypography/EllipsisTypography.js +62 -0
  3. package/dist/components/EllipsisTypography/EllipsisTypography.styled.js +16 -0
  4. package/dist/components/EllipsisTypography/EllipsisTypography.types.js +2 -0
  5. package/dist/components/EllipsisTypography/index.js +3 -0
  6. package/dist/components/MuiCssBaseline.js +16 -0
  7. package/dist/components/ResizeObserver/ResizeObserverContext.js +56 -0
  8. package/dist/components/ResizeObserver/index.js +3 -0
  9. package/dist/components/index.js +1 -0
  10. package/dist/index.js +1 -0
  11. package/dist/types/components/EllipsisTypography/EllipsisTypography.d.ts +3 -0
  12. package/dist/types/components/EllipsisTypography/EllipsisTypography.styled.d.ts +6 -0
  13. package/dist/types/components/EllipsisTypography/EllipsisTypography.types.d.ts +9 -0
  14. package/dist/types/components/EllipsisTypography/index.d.ts +4 -0
  15. package/dist/types/components/ResizeObserver/ResizeObserverContext.d.ts +9 -0
  16. package/dist/types/components/ResizeObserver/index.d.ts +2 -0
  17. package/dist/types/components/index.d.ts +1 -0
  18. package/dist/types/index.d.ts +1 -0
  19. package/package.json +14 -7
  20. package/.git-ftp-include +0 -1
  21. package/src/assets/ic-bell-noti-outlined-20px.tsx +0 -21
  22. package/src/assets/ic-close-large-outlined-20px.tsx +0 -17
  23. package/src/assets/ic-close-small-outlined-20px.tsx +0 -17
  24. package/src/assets/ic-download-pdf-outlined-20px.tsx +0 -18
  25. package/src/assets/ic-ellipse-outlined-20px.tsx +0 -17
  26. package/src/assets/ic-filter-noti-outlined-20px.tsx +0 -21
  27. package/src/assets/ic-hide-large-outlined-20px.tsx +0 -13
  28. package/src/assets/ic-hide-small-outlined-20px.tsx +0 -17
  29. package/src/assets/ic-information-large-outlined-20px.tsx +0 -17
  30. package/src/assets/ic-information-small-outlined-20px.tsx +0 -17
  31. package/src/assets/ic-manufacturer-outlined-20px.tsx +0 -19
  32. package/src/assets/ic-rectangle-outlined-20px.tsx +0 -17
  33. package/src/assets/ic-refresh-left-outlined-20px.tsx +0 -17
  34. package/src/assets/ic-refresh-right-outlined-20px.tsx +0 -13
  35. package/src/assets/ic-show-large-outlined-20px.tsx +0 -17
  36. package/src/assets/ic-show-small-outlined-20px.tsx +0 -17
  37. package/src/assets/ic_bell_noti=outlined_20px.svg +0 -5
  38. package/src/assets/ic_close_large=outlined_20px.svg +0 -4
  39. package/src/assets/ic_close_small=outlined_20px.svg +0 -4
  40. package/src/assets/ic_download_pdf=outlined_20px.svg +0 -7
  41. package/src/assets/ic_ellipse=outlined_20px.svg +0 -4
  42. package/src/assets/ic_filter_noti=outlined_20px.svg +0 -5
  43. package/src/assets/ic_hide_large=outlined_20px.svg +0 -4
  44. package/src/assets/ic_hide_small=outlined_20px.svg +0 -4
  45. package/src/assets/ic_information_large=outlined_20px.svg +0 -4
  46. package/src/assets/ic_information_small=outlined_20px.svg +0 -4
  47. package/src/assets/ic_manufacturer=outlined_20px.svg +0 -3
  48. package/src/assets/ic_rectangle=outlined_20px.svg +0 -4
  49. package/src/assets/ic_refresh_left=outlined_20px.svg +0 -4
  50. package/src/assets/ic_refresh_right=outlined_20px.svg +0 -4
  51. package/src/assets/ic_show_large=outlined_20px.svg +0 -4
  52. package/src/assets/ic_show_small=outlined_20px.svg +0 -4
  53. package/src/assets/index.ts +0 -16
  54. package/src/components/Alert/Alert.styled.ts +0 -44
  55. package/src/components/Alert/Alert.tsx +0 -39
  56. package/src/components/Alert/Alert.types.ts +0 -5
  57. package/src/components/Alert/Alert.utils.tsx +0 -43
  58. package/src/components/Alert/index.ts +0 -5
  59. package/src/components/BaseTextField/BaseTextField.styled.ts +0 -110
  60. package/src/components/BaseTextField/BaseTextField.types.ts +0 -25
  61. package/src/components/BaseTextField/BaseTextField.utils.ts +0 -10
  62. package/src/components/Button/BaseButton.tsx +0 -19
  63. package/src/components/Button/Button.tsx +0 -117
  64. package/src/components/Button/Button.types.ts +0 -36
  65. package/src/components/Button/Button.utils.ts +0 -13
  66. package/src/components/Button/index.ts +0 -6
  67. package/src/components/Button/styleds/BaseButton.styled.ts +0 -57
  68. package/src/components/Button/styleds/ContainedButton.styled.ts +0 -123
  69. package/src/components/Button/styleds/GhostButton.styled.ts +0 -139
  70. package/src/components/Button/styleds/IconButton.styled.ts +0 -25
  71. package/src/components/Button/styleds/OutlinedButton.styled.ts +0 -144
  72. package/src/components/Card/Card.styled.tsx +0 -18
  73. package/src/components/Card/Card.tsx +0 -18
  74. package/src/components/Card/Card.types.ts +0 -10
  75. package/src/components/Card/index.ts +0 -5
  76. package/src/components/Checkbox/Checkbox.styled.tsx +0 -27
  77. package/src/components/Checkbox/Checkbox.tsx +0 -64
  78. package/src/components/Checkbox/Checkbox.types.ts +0 -16
  79. package/src/components/Checkbox/Checkbox.utils.tsx +0 -42
  80. package/src/components/Checkbox/index.ts +0 -5
  81. package/src/components/Chip/Chip.styled.ts +0 -120
  82. package/src/components/Chip/Chip.tsx +0 -33
  83. package/src/components/Chip/Chip.types.ts +0 -18
  84. package/src/components/Chip/Chip.utils.tsx +0 -50
  85. package/src/components/Chip/index.ts +0 -4
  86. package/src/components/DataTable/DataTable.styled.ts +0 -66
  87. package/src/components/DataTable/DataTable.tsx +0 -29
  88. package/src/components/DataTable/index.ts +0 -1
  89. package/src/components/DatePicker/DatePicker.styled.ts +0 -19
  90. package/src/components/DatePicker/DatePicker.tsx +0 -194
  91. package/src/components/DatePicker/DatePicker.types.ts +0 -8
  92. package/src/components/DatePicker/index.ts +0 -4
  93. package/src/components/Dialog/Dialog.styled.ts +0 -87
  94. package/src/components/Dialog/Dialog.tsx +0 -111
  95. package/src/components/Dialog/Dialog.types.ts +0 -19
  96. package/src/components/Dialog/index.ts +0 -5
  97. package/src/components/Divider/Divider.styled.ts +0 -24
  98. package/src/components/Divider/Divider.tsx +0 -13
  99. package/src/components/Divider/Divider.types.ts +0 -7
  100. package/src/components/Divider/index.ts +0 -5
  101. package/src/components/Dropdown/Dropdown.styled.tsx +0 -127
  102. package/src/components/Dropdown/Dropdown.tsx +0 -116
  103. package/src/components/Dropdown/Dropdown.types.ts +0 -31
  104. package/src/components/Dropdown/Dropdown.utils.ts +0 -13
  105. package/src/components/Dropdown/DropdownItem.styled.tsx +0 -66
  106. package/src/components/Dropdown/DropdownItem.tsx +0 -45
  107. package/src/components/Dropdown/DropdownItem.types.ts +0 -14
  108. package/src/components/Dropdown/DropdownItem.utils.ts +0 -14
  109. package/src/components/Dropdown/DropdownSubtitle.styled.ts +0 -13
  110. package/src/components/Dropdown/DropdownSubtitle.tsx +0 -9
  111. package/src/components/Dropdown/DropdownSubtitle.types.ts +0 -6
  112. package/src/components/Dropdown/IconDropdown.styled.tsx +0 -82
  113. package/src/components/Dropdown/IconDropdown.tsx +0 -56
  114. package/src/components/Dropdown/IconDropdown.types.ts +0 -22
  115. package/src/components/Dropdown/index.ts +0 -22
  116. package/src/components/FileDnDZone/FileDnDZone.styled.ts +0 -43
  117. package/src/components/FileDnDZone/FileDnDZone.tsx +0 -81
  118. package/src/components/FileDnDZone/FileDnDZone.types.ts +0 -14
  119. package/src/components/FileDnDZone/FileDnDZone.utils.ts +0 -3
  120. package/src/components/FileDnDZone/index.ts +0 -5
  121. package/src/components/List/List.styled.ts +0 -31
  122. package/src/components/List/List.tsx +0 -71
  123. package/src/components/List/List.types.ts +0 -24
  124. package/src/components/List/List.utils.ts +0 -14
  125. package/src/components/List/ListItem.styled.tsx +0 -61
  126. package/src/components/List/ListItem.tsx +0 -66
  127. package/src/components/List/ListItem.types.ts +0 -40
  128. package/src/components/List/ListItemCaption.styled.tsx +0 -7
  129. package/src/components/List/ListItemCaption.tsx +0 -18
  130. package/src/components/List/ListItemCaption.types.ts +0 -2
  131. package/src/components/List/index.ts +0 -8
  132. package/src/components/LoadingIndicator/LoadingIndicator.styled.tsx +0 -40
  133. package/src/components/LoadingIndicator/LoadingIndicator.tsx +0 -44
  134. package/src/components/LoadingIndicator/LoadingIndicator.types.ts +0 -7
  135. package/src/components/LoadingIndicator/assets/DnaLoadingAnimation.json +0 -769
  136. package/src/components/LoadingIndicator/assets/DotLoadingAnimation.json +0 -426
  137. package/src/components/LoadingIndicator/index.ts +0 -5
  138. package/src/components/Menu/Menu.styled.tsx +0 -42
  139. package/src/components/Menu/Menu.tsx +0 -28
  140. package/src/components/Menu/Menu.types.ts +0 -18
  141. package/src/components/Menu/MenuItem.styled.ts +0 -62
  142. package/src/components/Menu/MenuItem.tsx +0 -45
  143. package/src/components/Menu/MenuItem.types.ts +0 -14
  144. package/src/components/Menu/index.ts +0 -5
  145. package/src/components/MuiCssBaseline.ts +0 -78
  146. package/src/components/MuiInputBase.ts +0 -25
  147. package/src/components/MuiOutlinedInput.ts +0 -57
  148. package/src/components/MuiTextField.ts +0 -17
  149. package/src/components/Pagination/Pagination.styled.tsx +0 -71
  150. package/src/components/Pagination/Pagination.tsx +0 -182
  151. package/src/components/Pagination/Pagination.types.ts +0 -39
  152. package/src/components/Pagination/index.ts +0 -2
  153. package/src/components/ProductLabel/ProductLabel.styled.ts +0 -61
  154. package/src/components/ProductLabel/ProductLabel.tsx +0 -57
  155. package/src/components/ProductLabel/ProductLabel.types.ts +0 -10
  156. package/src/components/ProductLabel/index.ts +0 -5
  157. package/src/components/Progress/CircularProgress.styled.ts +0 -10
  158. package/src/components/Progress/CircularProgress.tsx +0 -15
  159. package/src/components/Progress/CircularProgress.types.ts +0 -6
  160. package/src/components/Progress/LinearProgress.styled.ts +0 -15
  161. package/src/components/Progress/LinearProgress.tsx +0 -16
  162. package/src/components/Progress/LinearProgress.types.ts +0 -7
  163. package/src/components/Progress/index.ts +0 -4
  164. package/src/components/Radio/Radio.styled.ts +0 -35
  165. package/src/components/Radio/Radio.tsx +0 -60
  166. package/src/components/Radio/Radio.types.ts +0 -15
  167. package/src/components/Radio/RadioGroup.styled.ts +0 -6
  168. package/src/components/Radio/RadioGroup.tsx +0 -23
  169. package/src/components/Radio/RadioGroup.types.ts +0 -10
  170. package/src/components/Radio/index.ts +0 -7
  171. package/src/components/Stepper/Stepper.styled.ts +0 -38
  172. package/src/components/Stepper/Stepper.tsx +0 -24
  173. package/src/components/Stepper/Stepper.types.ts +0 -13
  174. package/src/components/Stepper/index.ts +0 -5
  175. package/src/components/TabbedPanel/TabbedPanel.styled.ts +0 -129
  176. package/src/components/TabbedPanel/TabbedPanel.tsx +0 -70
  177. package/src/components/TabbedPanel/TabbedPanel.types.ts +0 -36
  178. package/src/components/TabbedPanel/TabbedPanel.utils.ts +0 -21
  179. package/src/components/TabbedPanel/index.ts +0 -5
  180. package/src/components/TextField/TextArea.styled.tsx +0 -36
  181. package/src/components/TextField/TextArea.tsx +0 -35
  182. package/src/components/TextField/TextArea.types.ts +0 -28
  183. package/src/components/TextField/TextInput.styled.tsx +0 -115
  184. package/src/components/TextField/TextInput.tsx +0 -27
  185. package/src/components/TextField/TextInput.types.ts +0 -46
  186. package/src/components/TextField/TextInput.utils.ts +0 -7
  187. package/src/components/TextField/components/Buttons.tsx +0 -26
  188. package/src/components/TextField/components/NormalTextInput.tsx +0 -95
  189. package/src/components/TextField/components/PasswordInput.tsx +0 -92
  190. package/src/components/TextField/index.ts +0 -7
  191. package/src/components/Tooltip/Tooltip.styled.tsx +0 -36
  192. package/src/components/Tooltip/Tooltip.tsx +0 -58
  193. package/src/components/Tooltip/Tooltip.types.ts +0 -24
  194. package/src/components/Tooltip/Tooltip.utils.ts +0 -46
  195. package/src/components/Tooltip/index.ts +0 -5
  196. package/src/components/UploadManager/UploadManager.styled.ts +0 -49
  197. package/src/components/UploadManager/UploadManager.tsx +0 -271
  198. package/src/components/UploadManager/UploadManager.types.ts +0 -16
  199. package/src/components/UploadManager/index.ts +0 -5
  200. package/src/components/index.ts +0 -23
  201. package/src/foundations/index.ts +0 -4
  202. package/src/foundations/palette.ts +0 -418
  203. package/src/foundations/spacing.ts +0 -5
  204. package/src/foundations/styles.ts +0 -9
  205. package/src/foundations/typography.ts +0 -492
  206. package/src/icons/BellNoti/index.tsx +0 -28
  207. package/src/icons/CloseLarge/index.tsx +0 -28
  208. package/src/icons/CloseSmall/index.tsx +0 -28
  209. package/src/icons/DownloadPdf/index.tsx +0 -28
  210. package/src/icons/Ellipse/index.tsx +0 -28
  211. package/src/icons/FilterNoti/index.tsx +0 -28
  212. package/src/icons/HideLarge/index.tsx +0 -28
  213. package/src/icons/HideSmall/index.tsx +0 -28
  214. package/src/icons/InformationLarge/index.tsx +0 -28
  215. package/src/icons/InformationSmall/index.tsx +0 -28
  216. package/src/icons/Manufacturer/index.tsx +0 -28
  217. package/src/icons/Rectangle/index.tsx +0 -28
  218. package/src/icons/RefreshLeft/index.tsx +0 -28
  219. package/src/icons/RefreshRight/index.tsx +0 -28
  220. package/src/icons/ShowLarge/index.tsx +0 -28
  221. package/src/icons/ShowSmall/index.tsx +0 -28
  222. package/src/icons/index.ts +0 -180
  223. package/src/index.ts +0 -4
  224. package/src/react-app-env.d.ts +0 -71
  225. package/src/reportWebVitals.ts +0 -15
  226. package/src/setupTests.ts +0 -5
  227. package/src/systems/drawer.ts +0 -27
  228. package/src/systems/index.ts +0 -7
  229. package/src/theme.ts +0 -22
@@ -1,115 +0,0 @@
1
- import { styled, Theme } from '@mui/material';
2
- import { InputMsg, styles } from '../BaseTextField/BaseTextField.styled';
3
- import type { RootTextInputProps } from './TextInput.types';
4
-
5
- const baseTextInputStyle = (theme: Theme) => {
6
- return {
7
- ...styles.baseTextFieldStyle(theme),
8
- textOverflow: 'ellipsis',
9
- };
10
- };
11
-
12
- const textInputLarge = {
13
- padding: '11px 16px',
14
- };
15
-
16
- const textInputWithLeftIcon = {
17
- paddingLeft: '44px',
18
- };
19
-
20
- const BaseTextInput = styled('input', {
21
- shouldForwardProp: (prop) =>
22
- ![
23
- 'error',
24
- 'large',
25
- 'showClear',
26
- 'leftIcon',
27
- 'width',
28
- 'OuterBoxProps',
29
- 'InputContainerProps',
30
- ].includes(prop.toString()),
31
- })<RootTextInputProps>(({ theme, large, error, leftIcon, width }) => {
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- let resultStyle: any = {
34
- ...baseTextInputStyle(theme),
35
- width:
36
- // eslint-disable-next-line no-nested-ternary
37
- typeof width !== 'undefined' ? (typeof width === 'number' ? `${width}px` : width) : width,
38
- };
39
-
40
- if (error) {
41
- resultStyle = {
42
- ...resultStyle,
43
- ...styles.baseTextFieldErrorStyle(theme),
44
- };
45
- }
46
-
47
- if (large) {
48
- resultStyle = {
49
- ...resultStyle,
50
- ...textInputLarge,
51
- };
52
- }
53
-
54
- if (leftIcon) {
55
- resultStyle = {
56
- ...resultStyle,
57
- ...textInputWithLeftIcon,
58
- };
59
- }
60
-
61
- return resultStyle;
62
- });
63
-
64
- const LeftIconContainer = styled('div')(() => {
65
- return {
66
- position: 'absolute',
67
- left: '0px',
68
- top: '0px',
69
- zIndex: '2',
70
- height: '100%',
71
- display: 'flex',
72
- alignItems: 'center',
73
- justifyContent: 'center',
74
- paddingLeft: '16px',
75
- paddingRight: '8px',
76
- pointerEvents: 'none',
77
- };
78
- });
79
- const RightIconContainer = styled('div')<{ error?: string }>(() => {
80
- return {
81
- position: 'absolute',
82
- right: '16px',
83
- top: '0px',
84
- zIndex: '2',
85
- height: '36px',
86
- display: 'flex',
87
- alignItems: 'center',
88
- justifyContent: 'center',
89
- };
90
- });
91
-
92
- const ButtonWrapper = styled('button')(({ theme }) => {
93
- return {
94
- width: '28px',
95
- height: '28px',
96
- backgroundColor: 'transparent',
97
- opacity: '0.8',
98
- border: 'none',
99
- color: theme.palette.neutralGrey[45],
100
- display: 'flex',
101
- justifyContent: 'center',
102
- alignItems: 'center',
103
- borderRadius: '8px',
104
- padding: 0,
105
- '&:hover': {
106
- backgroundColor: theme.palette.neutralGrey[70],
107
- cursor: 'pointer',
108
- },
109
- '&:active': {
110
- backgroundColor: theme.palette.neutralGrey[60],
111
- },
112
- };
113
- });
114
-
115
- export { BaseTextInput, InputMsg, LeftIconContainer, RightIconContainer, ButtonWrapper };
@@ -1,27 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import PasswordInput from './components/PasswordInput';
3
- import NormalTextInput from './components/NormalTextInput';
4
-
5
- import isPasswordInput from './TextInput.utils';
6
- import type { TextInputProps } from './TextInput.types';
7
-
8
- const TextInput = forwardRef(
9
- (props: TextInputProps, ref?: React.ForwardedRef<HTMLInputElement>) => {
10
- if (isPasswordInput(props)) {
11
- return (
12
- <PasswordInput
13
- {...props}
14
- ref={ref}
15
- />
16
- );
17
- }
18
- return (
19
- <NormalTextInput
20
- {...props}
21
- ref={ref}
22
- />
23
- );
24
- },
25
- );
26
-
27
- export default TextInput;
@@ -1,46 +0,0 @@
1
- import type { BoxProps, InputProps as MuiInputProps } from '@mui/material';
2
- import type { RootTextFieldProps, HelperMsgProps } from '../BaseTextField/BaseTextField.types';
3
-
4
- // props we defined for the input element itself
5
- interface RootTextInputProps
6
- extends RootTextFieldProps,
7
- Omit<MuiInputProps, 'size' | 'error' | 'ref' | 'value' | 'defaultValue' | 'onChange'> {
8
- large?: boolean;
9
- leftIcon?: React.ReactNode;
10
- rightIcon?: React.ReactNode;
11
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
12
- OuterBoxProps?: BoxProps;
13
- InputContainerProps?: BoxProps;
14
- inputSX?: MuiInputProps['sx'];
15
- }
16
-
17
- // common props for a wrapped input and helper message
18
- interface InputWithHelperMsgProps
19
- extends Omit<RootTextInputProps, 'error'>,
20
- Omit<HelperMsgProps, 'error'> {
21
- error?: string;
22
- }
23
-
24
- // props specifically for password input with helper message
25
- interface PasswordInputWithHelperMsgProps
26
- extends Omit<
27
- InputWithHelperMsgProps,
28
- 'rightIcon' | 'readOnly' | 'onClearButtonClick' | 'InputContainerProps'
29
- > {
30
- type: 'password';
31
- }
32
-
33
- // Props for TextInput when used for normal input
34
- interface NormalTextInputProps extends InputWithHelperMsgProps {
35
- onClearButtonClick?: () => void;
36
- rightIcon?: React.ReactNode;
37
- }
38
-
39
- // Props for TextInput when used for passwords
40
- interface PasswordTextInputProps extends PasswordInputWithHelperMsgProps {}
41
-
42
- // Prop type for TextInput
43
- type TextInputProps = PasswordTextInputProps | NormalTextInputProps;
44
-
45
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
46
- export type { TextInputProps, NormalTextInputProps, PasswordTextInputProps, RootTextInputProps };
@@ -1,7 +0,0 @@
1
- import type { PasswordTextInputProps, TextInputProps } from './TextInput.types';
2
-
3
- // Function for inferring required input by props
4
- function isPasswordInput(props: TextInputProps): props is PasswordTextInputProps {
5
- return props.type === 'password';
6
- }
7
- export default isPasswordInput;
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
- import { CloseSmall, HideSmall, ShowSmall } from '../../../icons';
3
- import { ButtonWrapper } from '../TextInput.styled';
4
-
5
- function ClearButton({ onClick }: { onClick?: () => void }) {
6
- return (
7
- <ButtonWrapper onClick={onClick}>
8
- <CloseSmall fontSize="small" />
9
- </ButtonWrapper>
10
- );
11
- }
12
-
13
- function ShowHidePasswordButton({
14
- onClick,
15
- isHidden,
16
- }: {
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- onClick?: (event: any) => void;
19
- isHidden: boolean;
20
- }) {
21
- return (
22
- <ButtonWrapper onClick={onClick}>{isHidden ? <HideSmall /> : <ShowSmall />}</ButtonWrapper>
23
- );
24
- }
25
-
26
- export { ClearButton, ShowHidePasswordButton };
@@ -1,95 +0,0 @@
1
- import React, { forwardRef, useMemo, useState } from 'react';
2
- import {
3
- InputMsg,
4
- BaseTextFieldContainer,
5
- BaseTextFieldBox,
6
- } from '../../BaseTextField/BaseTextField.styled';
7
- import { BaseTextInput, LeftIconContainer, RightIconContainer } from '../TextInput.styled';
8
- import { ClearButton } from './Buttons';
9
-
10
- import type { NormalTextInputProps } from '../TextInput.types';
11
-
12
- const NormalTextInput = forwardRef(
13
- (props: NormalTextInputProps, ref?: React.ForwardedRef<HTMLInputElement>) => {
14
- const { error, helperMsg, leftIcon, rightIcon, onClearButtonClick, inputSX, ...inputProps } =
15
- props;
16
-
17
- const [showClear, setShowClear] = useState(!!props.defaultValue ?? false);
18
-
19
- const showRightIcon = useMemo(() => {
20
- return (
21
- rightIcon ?? // if rightIcon is passed, use it, else use clear button
22
- (!props.disabled && // hide if disabled
23
- !props.readOnly && // hide if readonly
24
- !!onClearButtonClick && // hide if no function (it doesn't do anything)
25
- showClear)
26
- );
27
- }, [props.disabled, onClearButtonClick, props.readOnly, rightIcon, showClear]);
28
-
29
- function handleClearButtonClick() {
30
- onClearButtonClick?.();
31
- setShowClear(false);
32
- }
33
-
34
- function changeHandler(e: React.ChangeEvent<HTMLInputElement>) {
35
- // wrap incoming onChange
36
- if (props.onChange) {
37
- props.onChange(e);
38
- }
39
-
40
- // rightIcon overrides clear button
41
- if (rightIcon) return;
42
-
43
- // handle show/hide of clear button
44
- if (e.target.value) {
45
- if (!showClear) setShowClear(true);
46
- } else if (showClear) setShowClear(false);
47
- }
48
-
49
- return (
50
- <BaseTextFieldBox
51
- {...props.OuterBoxProps}
52
- width={props.width}
53
- >
54
- <BaseTextFieldContainer
55
- {...props.InputContainerProps}
56
- width={props.width}
57
- >
58
- {leftIcon && (
59
- <LeftIconContainer sx={inputProps.disabled ? { opacity: '0.8' } : undefined}>
60
- {leftIcon}
61
- </LeftIconContainer>
62
- )}
63
-
64
- <BaseTextInput
65
- ref={ref}
66
- {...inputProps}
67
- error={!!error}
68
- onChange={(e) => changeHandler(e)}
69
- leftIcon={leftIcon}
70
- sx={inputSX ?? { paddingRight: showRightIcon ? '44px' : '16px' }}
71
- />
72
-
73
- {showRightIcon && (
74
- <RightIconContainer>
75
- {rightIcon && rightIcon}
76
- {!rightIcon && <ClearButton onClick={() => handleClearButtonClick()} />}
77
- </RightIconContainer>
78
- )}
79
- </BaseTextFieldContainer>
80
- {error ? (
81
- <InputMsg
82
- variant="body5"
83
- error
84
- >
85
- {error}
86
- </InputMsg>
87
- ) : (
88
- helperMsg && <InputMsg variant="body5">{helperMsg}</InputMsg>
89
- )}
90
- </BaseTextFieldBox>
91
- );
92
- },
93
- );
94
-
95
- export default NormalTextInput;
@@ -1,92 +0,0 @@
1
- import React, { forwardRef, useState } from 'react';
2
- import { InputMsg, BaseTextFieldContainer } from '../../BaseTextField/BaseTextField.styled';
3
- import { BaseTextInput, LeftIconContainer, RightIconContainer } from '../TextInput.styled';
4
- import { ShowHidePasswordButton } from './Buttons';
5
-
6
- import type { PasswordTextInputProps } from '../TextInput.types';
7
-
8
- interface PasswordInputContainerProps extends PasswordTextInputProps {
9
- children: React.ReactNode;
10
- hidePassword: boolean;
11
- handlePasswordShowHide: () => void;
12
- width?: string | number;
13
- }
14
-
15
- function PasswordInputContainer(props: PasswordInputContainerProps) {
16
- const {
17
- error,
18
- disabled,
19
- helperMsg,
20
- leftIcon,
21
- children,
22
- hidePassword,
23
- handlePasswordShowHide,
24
- width,
25
- OuterBoxProps,
26
- } = props;
27
-
28
- return (
29
- <BaseTextFieldContainer
30
- {...OuterBoxProps}
31
- width={width}
32
- >
33
- {leftIcon && (
34
- <LeftIconContainer sx={disabled ? { opacity: '0.8' } : undefined}>
35
- {leftIcon}
36
- </LeftIconContainer>
37
- )}
38
- {children}
39
- <RightIconContainer error={error}>
40
- {!disabled && (
41
- <ShowHidePasswordButton
42
- onClick={(event) => {
43
- event.preventDefault();
44
- handlePasswordShowHide();
45
- }}
46
- isHidden={hidePassword}
47
- />
48
- )}
49
- </RightIconContainer>
50
- {error ? (
51
- <InputMsg
52
- variant="body5"
53
- error
54
- >
55
- {error}
56
- </InputMsg>
57
- ) : (
58
- helperMsg && <InputMsg variant="body5">{helperMsg}</InputMsg>
59
- )}
60
- </BaseTextFieldContainer>
61
- );
62
- }
63
-
64
- const PasswordInput = forwardRef(
65
- (props: PasswordTextInputProps, ref: React.ForwardedRef<HTMLInputElement>) => {
66
- const { error, helperMsg, leftIcon, type, inputSX, ...otherInputProps } = props;
67
-
68
- const [hidePassword, setHidePassword] = useState(true);
69
-
70
- function handlePasswordShowHide() {
71
- setHidePassword(!hidePassword);
72
- }
73
-
74
- return (
75
- <PasswordInputContainer
76
- {...props}
77
- hidePassword={hidePassword}
78
- handlePasswordShowHide={() => handlePasswordShowHide()}
79
- >
80
- <BaseTextInput
81
- type={hidePassword ? 'password' : 'text'}
82
- ref={ref}
83
- {...otherInputProps}
84
- leftIcon={leftIcon}
85
- sx={inputSX}
86
- />
87
- </PasswordInputContainer>
88
- );
89
- },
90
- );
91
-
92
- export default PasswordInput;
@@ -1,7 +0,0 @@
1
- import TextInput from './TextInput';
2
- import type { TextInputProps } from './TextInput.types';
3
- import TextArea from './TextArea';
4
- import type { TextAreaProps } from './TextArea.types';
5
-
6
- export { TextInput, TextArea };
7
- export type { TextInputProps, TextAreaProps };
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- import { Tooltip as MuiTooltip, styled, tooltipClasses } from '@mui/material';
3
- import typographyOptions from '../../foundations/typography';
4
- import { resizeArrowBySize, setMarginByPlacement, setPaddingBySize } from './Tooltip.utils';
5
- import type { TooltipProps } from './Tooltip.types';
6
-
7
- const BaseTooltip = styled(
8
- ({ className, ref, ...props }: TooltipProps) => (
9
- <MuiTooltip
10
- {...props}
11
- ref={ref}
12
- classes={{ popper: className }}
13
- />
14
- ),
15
- {
16
- shouldForwardProp: (prop) => prop !== 'noPadding',
17
- },
18
- )(({ theme, size = 'small', placement = 'bottom', noPadding }) => ({
19
- [`& .${tooltipClasses.tooltip}`]: {
20
- ...typographyOptions.body5,
21
- margin: '0px !important',
22
- padding: noPadding ? '0px !important' : setPaddingBySize(size),
23
- backgroundColor: theme.palette.neutralGrey[75],
24
- borderRadius: size === 'small' ? '4px' : '8px',
25
- filter:
26
- 'drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.32)) drop-shadow(0px 4px 12px rgba(0, 0, 0, 0.4))',
27
- },
28
- [`& .${tooltipClasses.arrow}`]: {
29
- color: theme.palette.neutralGrey[75],
30
- margin: `${setMarginByPlacement(placement, resizeArrowBySize(size, placement))} !important`,
31
- width: `${resizeArrowBySize(size, placement).width}px !important`,
32
- height: `${resizeArrowBySize(size, placement).height}px !important`,
33
- },
34
- }));
35
-
36
- export default BaseTooltip;
@@ -1,58 +0,0 @@
1
- import React from 'react';
2
- import { Box, Typography } from '@mui/material';
3
- import { forwardRef } from 'react';
4
- import BaseTooltip from './Tooltip.styled';
5
- import type { TooltipProps } from './Tooltip.types';
6
-
7
- const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
8
- (
9
- {
10
- icon,
11
- title,
12
- children,
13
- size = 'small',
14
- placement = 'bottom',
15
- noPadding = false,
16
- ...otherProps
17
- }: TooltipProps,
18
- ref,
19
- ) => {
20
- return (
21
- <BaseTooltip
22
- ref={ref}
23
- arrow
24
- size={size}
25
- PopperProps={{
26
- popperOptions: {
27
- modifiers: [
28
- {
29
- name: 'offset',
30
- enabled: true,
31
- options: {
32
- offset: [0, 6],
33
- },
34
- },
35
- ],
36
- },
37
- }}
38
- title={
39
- icon && size === 'small' ? (
40
- <Box sx={{ display: 'flex', flexDirection: 'row', gap: '8px' }}>
41
- {icon}
42
- {title && <Typography variant="body5">{title}</Typography>}
43
- </Box>
44
- ) : (
45
- title
46
- )
47
- }
48
- placement={placement}
49
- noPadding={noPadding}
50
- {...otherProps}
51
- >
52
- {children}
53
- </BaseTooltip>
54
- );
55
- },
56
- );
57
-
58
- export default Tooltip;
@@ -1,24 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import type { TooltipClasses, TooltipProps as MuiTooltipProps } from '@mui/material';
3
-
4
- export type Position = Pick<TooltipProps, 'placement'>;
5
-
6
- export type TooltipSizes = 'small' | 'large';
7
-
8
- export type TooltipSize = { width: number; height: number };
9
-
10
- export type TooltipPlacement =
11
- | TooltipClasses['tooltipPlacementBottom']
12
- | TooltipClasses['tooltipPlacementLeft']
13
- | TooltipClasses['tooltipPlacementRight']
14
- | TooltipClasses['tooltipPlacementTop'];
15
-
16
- export type ArrowSizeBySize = Record<TooltipSizes, TooltipSize>;
17
-
18
- export type TooltipPlacementToSize = Record<TooltipPlacement, ArrowSizeBySize>;
19
-
20
- export interface TooltipProps extends MuiTooltipProps {
21
- icon?: ReactNode;
22
- size?: TooltipSizes;
23
- noPadding?: boolean;
24
- }
@@ -1,46 +0,0 @@
1
- import type {
2
- TooltipPlacement,
3
- TooltipPlacementToSize,
4
- TooltipSize,
5
- ArrowSizeBySize,
6
- TooltipSizes,
7
- } from './Tooltip.types';
8
-
9
- // small(10px * 6px) -> (10/2)^2 + 6^2 = 7.8^2
10
- // large(16px * 8px) -> (16/2)^2 + 8^2 = 11.3^2
11
- const setArrowSizeBySize: ArrowSizeBySize = {
12
- small: { width: 11, height: 7.8 },
13
- large: { width: 16, height: 11.3 },
14
- };
15
-
16
- const tooltipPlacementToSize: TooltipPlacementToSize = {
17
- bottom: setArrowSizeBySize,
18
- left: setArrowSizeBySize,
19
- right: setArrowSizeBySize,
20
- top: setArrowSizeBySize,
21
- };
22
-
23
- export const resizeArrowBySize = (
24
- tooltipType: TooltipSizes,
25
- tooltipPlacement: TooltipPlacement,
26
- ): TooltipSize => {
27
- const size = tooltipPlacementToSize[tooltipPlacement][tooltipType];
28
- if (tooltipPlacement === 'left' || tooltipPlacement === 'right') {
29
- return { width: size.height, height: size.width };
30
- }
31
- return size;
32
- };
33
-
34
- export const setMarginByPlacement = (tooltipPlacement: TooltipPlacement, margin: TooltipSize) =>
35
- ({
36
- bottom: `-${margin.height}px 0 0 0`,
37
- right: `0 0 0 -${margin.width}px`,
38
- left: `0 -${margin.width}px 0 0`,
39
- top: `0 0 -${margin.height}px 0`,
40
- })[tooltipPlacement];
41
-
42
- export const setPaddingBySize = (tooltipSize: TooltipSizes) =>
43
- ({
44
- small: '6px 8px',
45
- large: '12px 16px',
46
- })[tooltipSize];
@@ -1,5 +0,0 @@
1
- import Tooltip from './Tooltip';
2
- import type { TooltipProps } from './Tooltip.types';
3
-
4
- export { Tooltip };
5
- export type { TooltipProps };
@@ -1,49 +0,0 @@
1
- import { Paper, Toolbar, Collapse } from '@mui/material';
2
- import { styled } from '@mui/material/styles';
3
-
4
- const StyledPaper = styled(Paper)(({ theme }) => ({
5
- overflow: 'hidden',
6
- borderRadius: '10px',
7
- width: '500px',
8
- backgroundColor: theme.palette.neutralGrey[90],
9
- }));
10
-
11
- const StyledToolbar = styled(Toolbar)({
12
- padding: '20px 40px 20px 32px',
13
- paddingRight: '40px !important',
14
- paddingLeft: '32px !important',
15
- color: '#fff',
16
- minHeight: 'unset !important',
17
- });
18
-
19
- const StyledToolbarButtonContainer = styled(Toolbar)({
20
- position: 'absolute',
21
- display: 'flex',
22
- gap: '12px',
23
- right: '30px',
24
- paddingRight: '4px !important',
25
- });
26
-
27
- const StyledCollapse = styled(Collapse)({
28
- maxHeight: '320px',
29
- overflowY: 'auto',
30
- overflowX: 'hidden',
31
- });
32
-
33
- const StyledUploadFile = styled('div')({
34
- display: 'flex',
35
- justifyContent: 'space-between',
36
- gap: '16px',
37
- alignItems: 'center',
38
- padding: '20px 30px 20px 32px',
39
- paddingRight: '30x !important',
40
- paddingLeft: '32px !important',
41
- });
42
-
43
- export {
44
- StyledPaper,
45
- StyledToolbar,
46
- StyledToolbarButtonContainer,
47
- StyledCollapse,
48
- StyledUploadFile,
49
- };