@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,87 +0,0 @@
1
- import Dialog from '@mui/material/Dialog';
2
- import DialogTitle from '@mui/material/DialogTitle';
3
- import DialogContent from '@mui/material/DialogContent';
4
- import DialogActions from '@mui/material/DialogActions';
5
- import { styled } from '@mui/material/styles';
6
- import { Box } from '@mui/material';
7
- import type { DialogProps } from './Dialog.types';
8
-
9
- interface StyledDialogProps extends DialogProps {
10
- displayChildren: boolean;
11
- isPrompt?: boolean;
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- sx?: any;
14
- }
15
-
16
- interface StyledDialogTitleProps {
17
- displayChildren: boolean;
18
- isPrompt?: boolean;
19
- }
20
-
21
- const StyledDialog = styled(Dialog, {
22
- shouldForwardProp: (prop) => prop !== 'displayChildren' && prop !== 'isPrompt',
23
- })<StyledDialogProps>(({ theme, displayChildren, isPrompt, sx }) => {
24
- return {
25
- '& .MuiDialog-paper': {
26
- backgroundColor: theme.palette.neutralGrey[90],
27
- width: displayChildren && !isPrompt ? 'auto' : '320px',
28
- maxWidth: displayChildren && !isPrompt ? 'none' : '320px',
29
- borderRadius: '8px',
30
- padding: '28px 20px 24px 20px',
31
- },
32
- ...sx,
33
- };
34
- });
35
-
36
- const StyledHeaderBox = styled(Box, {
37
- shouldForwardProp: (prop) => prop !== 'displayChildren' && prop !== 'isPrompt',
38
- })<StyledDialogTitleProps>(({ displayChildren, isPrompt }) => ({
39
- display: 'flex',
40
- justifyContent: 'space-between',
41
- alignItems: 'center',
42
- height: '24px',
43
- marginBottom: displayChildren && !isPrompt ? '32px' : '16px',
44
- }));
45
-
46
- const StyledTitle = styled(Box)({
47
- display: 'flex',
48
- alignItems: 'center',
49
- });
50
-
51
- const StyledDialogTitle = styled(DialogTitle)(({ theme }) => ({
52
- ...theme.typography.body_sb1,
53
- padding: 0,
54
- display: 'flex',
55
- '& .dialogIcon': {
56
- display: 'flex',
57
- marginRight: '8px',
58
- },
59
- }));
60
-
61
- const StyledDialogContent = styled(DialogContent)(({ theme }) => ({
62
- ...theme.typography.body5,
63
- marginBottom: '16px',
64
- padding: 0,
65
- whiteSpace: 'pre-line',
66
-
67
- '&.childrenDialog': {
68
- display: 'flex',
69
- borderTop: 0,
70
- borderBottom: 0,
71
- maxHeight: 'fit-content',
72
- },
73
- }));
74
-
75
- const StyledDialogActions = styled(DialogActions)(() => ({
76
- padding: 0,
77
- margin: '0 12px',
78
- }));
79
-
80
- export {
81
- StyledDialog,
82
- StyledHeaderBox,
83
- StyledTitle,
84
- StyledDialogTitle,
85
- StyledDialogContent,
86
- StyledDialogActions,
87
- };
@@ -1,111 +0,0 @@
1
- import React from 'react';
2
- import { CloseSmall } from '../../icons';
3
-
4
- import { Box } from '@mui/material';
5
- import theme from '../../theme';
6
- import { Button } from '../Button';
7
-
8
- import {
9
- StyledDialog,
10
- StyledHeaderBox,
11
- StyledDialogTitle,
12
- StyledDialogContent,
13
- StyledDialogActions,
14
- } from './Dialog.styled';
15
- import type { DialogProps } from './Dialog.types';
16
-
17
- function Dialog({
18
- open,
19
- title,
20
- icon,
21
- closable,
22
- isPrompt,
23
- cancelText,
24
- submitText,
25
- onClose,
26
- text,
27
- children,
28
- dialogAction,
29
- buttonSize = 'small',
30
- loading = false,
31
- disableSubmit = false,
32
- sx,
33
- }: DialogProps) {
34
- const handleClose = (event: object | null, reason: string) => {
35
- if (onClose) {
36
- onClose(event, reason);
37
- }
38
- };
39
- const displayChildren = !text && !!children;
40
-
41
- return (
42
- <StyledDialog
43
- open={open}
44
- onClose={handleClose}
45
- displayChildren={displayChildren}
46
- isPrompt={isPrompt}
47
- sx={sx}
48
- className="customDialog"
49
- PaperProps={{
50
- className: 'dialogPaper',
51
- }}
52
- >
53
- <StyledHeaderBox
54
- isPrompt={isPrompt}
55
- displayChildren={displayChildren}
56
- className="dialogTitle"
57
- >
58
- <Box>
59
- <StyledDialogTitle>
60
- {icon && <div className="dialogIcon">{icon}</div>}
61
- {title}
62
- </StyledDialogTitle>
63
- </Box>
64
- {closable && (
65
- <Button
66
- size="small"
67
- variant="ghost"
68
- label=""
69
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
- onClick={(event: any) => handleClose(event, 'cancel')}
71
- icon={<CloseSmall />}
72
- sx={{ color: theme.palette.neutralGrey[0] }}
73
- />
74
- )}
75
- </StyledHeaderBox>
76
-
77
- {!displayChildren && <StyledDialogContent>{text}</StyledDialogContent>}
78
- {displayChildren && (
79
- <StyledDialogContent className="childrenDialog">{children}</StyledDialogContent>
80
- )}
81
-
82
- {dialogAction && <StyledDialogActions>{dialogAction}</StyledDialogActions>}
83
-
84
- {!dialogAction && (cancelText || submitText) && (
85
- <StyledDialogActions>
86
- {cancelText && (
87
- <Button
88
- label={cancelText}
89
- size={buttonSize}
90
- variant="ghost"
91
- onClick={() => handleClose(null, 'cancel')}
92
- />
93
- )}
94
-
95
- {submitText && (
96
- <Button
97
- disabled={disableSubmit}
98
- loading={loading}
99
- label={submitText}
100
- size={buttonSize}
101
- sx={loading ? { width: '75px' } : null}
102
- onClick={() => handleClose(null, 'submit')}
103
- />
104
- )}
105
- </StyledDialogActions>
106
- )}
107
- </StyledDialog>
108
- );
109
- }
110
-
111
- export default Dialog;
@@ -1,19 +0,0 @@
1
- import type { SxProps } from '@mui/system';
2
-
3
- export interface DialogProps {
4
- open: boolean;
5
- title?: string;
6
- icon?: React.ReactNode;
7
- closable?: boolean;
8
- isPrompt?: boolean;
9
- cancelText?: string;
10
- submitText?: string;
11
- onClose?: (event: object | null, reason: string) => void;
12
- text?: string;
13
- children?: React.ReactNode;
14
- dialogAction?: React.ReactNode;
15
- buttonSize?: 'small' | 'medium' | 'large';
16
- loading?: boolean;
17
- disableSubmit?: boolean;
18
- sx?: SxProps;
19
- }
@@ -1,5 +0,0 @@
1
- import Dialog from './Dialog';
2
- import type { DialogProps } from './Dialog.types';
3
-
4
- export { Dialog };
5
- export type { DialogProps };
@@ -1,24 +0,0 @@
1
- import { Divider } from '@mui/material';
2
- import { styled } from '@mui/material/styles';
3
- import type { DividerProps } from './Divider.types';
4
-
5
- const BaseDivider = styled(Divider)<DividerProps>(({ theme, orientation }) => {
6
- if (orientation === 'vertical') {
7
- return {
8
- background: theme.palette.neutralGrey[65],
9
- border: 'none',
10
- height: '100%',
11
- outline: 'none',
12
- width: '1px',
13
- };
14
- }
15
- return {
16
- background: theme.palette.neutralGrey[65],
17
- border: 'none',
18
- height: '1px',
19
- outline: 'none',
20
- width: '100%',
21
- };
22
- });
23
-
24
- export default BaseDivider;
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import BaseDivider from './Divider.styled';
3
- import type { DividerProps } from './Divider.types';
4
-
5
- function Divider({ orientation = 'vertical', ...props }: DividerProps) {
6
- return (
7
- <BaseDivider
8
- orientation={orientation}
9
- {...props}
10
- />
11
- );
12
- }
13
- export default Divider;
@@ -1,7 +0,0 @@
1
- import type { DividerProps as MuiDividerProps } from '@mui/material';
2
-
3
- interface DividerProps extends MuiDividerProps {
4
- orientation?: 'horizontal' | 'vertical';
5
- }
6
-
7
- export type { DividerProps };
@@ -1,5 +0,0 @@
1
- import Divider from './Divider';
2
- import type { DividerProps } from './Divider.types';
3
-
4
- export { Divider };
5
- export type { DividerProps };
@@ -1,127 +0,0 @@
1
- import React from 'react';
2
- import { Select, Typography, Box, styled } from '@mui/material';
3
- import type { Theme } from '@mui/material';
4
- import type { BaseDropdownProps, DropdownContainerProps, PlaceholderProps } from './Dropdown.types';
5
-
6
- const baseDropdownStyle = (theme: Theme) => {
7
- return {
8
- fontFamily:
9
- 'Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"',
10
- fontSize: '14px',
11
- fontWeight: '400',
12
- background: theme.palette.neutralGrey[85],
13
- borderRadius: '8px',
14
- border: '1px solid transparent',
15
- height: '36px',
16
- color: theme.palette.neutralGrey[5],
17
- padding: '0 2px',
18
- '.MuiSelect-select': {
19
- paddingRight: '0px !important',
20
- },
21
- '& fieldset': {
22
- border: 'none',
23
- },
24
- '&.Mui-focused': {
25
- border: `1px solid ${theme.palette.lunitTeal[10]} !important`,
26
- },
27
- '&.Mui-disabled': { border: 'none', background: theme.palette.neutralGrey[75] },
28
- '.MuiSvgIcon-root ': {
29
- cursor: 'pointer',
30
- marginRight: '16px',
31
- color: theme.palette.neutralGrey[5],
32
- '&.Mui-disabled': {
33
- color: theme.palette.neutralGrey[45],
34
- },
35
- },
36
- '&:hover': {
37
- border: `1px solid ${theme.palette.neutralGrey[45]}`,
38
- '&.Mui-disabled': {
39
- border: '1px solid transparent',
40
- },
41
- },
42
- };
43
- };
44
-
45
- const fixedWidthDropdownStyle = {
46
- width: '240px',
47
- };
48
-
49
- const errorDropdownStyle = (theme: Theme) => ({
50
- border: `1px solid ${theme.palette.red[5]} !important`,
51
- });
52
-
53
- const BaseDropdown = styled(Select, {
54
- shouldForwardProp: (prop) => prop !== 'small',
55
- })<BaseDropdownProps>(({ theme, error, autoWidth, fullWidth, open }) => {
56
- let style = baseDropdownStyle(theme);
57
- if (!autoWidth && !fullWidth) {
58
- style = {
59
- ...style,
60
- ...fixedWidthDropdownStyle,
61
- };
62
- }
63
- if (error) {
64
- style = {
65
- ...style,
66
- ...errorDropdownStyle(theme),
67
- };
68
- }
69
- // add FocusStyle when click arrow
70
- const openFocusStyle = open
71
- ? { border: `1px solid ${theme.palette.lunitTeal[10]} !important` }
72
- : {};
73
- return { ...style, ...openFocusStyle };
74
- });
75
-
76
- const DropdownContainer = styled(Box, {
77
- shouldForwardProp: (prop) => prop !== 'fullWidth',
78
- })<DropdownContainerProps>(({ fullWidth }) => {
79
- if (fullWidth) {
80
- return {
81
- position: 'relative',
82
- display: 'flex',
83
- flexDirection: 'column',
84
- width: '100%',
85
- };
86
- }
87
-
88
- return {
89
- position: 'relative',
90
- display: 'flex',
91
- flexDirection: 'column',
92
- width: '240px',
93
- };
94
- });
95
-
96
- const PlaceholderElem = styled(Typography)<PlaceholderProps>(({ theme, disabled }) => {
97
- return {
98
- color: theme.palette.neutralGrey[45],
99
- position: 'absolute' as const,
100
- left: '16px',
101
- top: '8px',
102
- backgroundColor: 'transparent',
103
- height: '30px',
104
- pointerEvents: 'none',
105
- opacity: disabled ? '0.4' : '1',
106
- cursor: 'pointer !important',
107
- };
108
- });
109
-
110
- const DropdownPlaceholder = ({
111
- placeholder,
112
- disabled,
113
- }: {
114
- placeholder: string;
115
- disabled?: boolean;
116
- }) => {
117
- return (
118
- <PlaceholderElem
119
- variant="body5"
120
- disabled={disabled}
121
- >
122
- {placeholder}
123
- </PlaceholderElem>
124
- );
125
- };
126
-
127
- export { BaseDropdown, DropdownPlaceholder, DropdownContainer };
@@ -1,116 +0,0 @@
1
- import React from 'react';
2
- import { ArrowDown } from '../../icons';
3
-
4
- import type { SelectChangeEvent } from '@mui/material';
5
- import { useState } from 'react';
6
- import { BaseDropdown, DropdownContainer, DropdownPlaceholder } from './Dropdown.styled';
7
- import type { DropdownComponent, DropdownProps } from './Dropdown.types';
8
- import { handlePlaceholder } from './Dropdown.utils';
9
-
10
- import theme from '../../theme';
11
- import { InputMsg } from '../BaseTextField/BaseTextField.styled';
12
- import { BUTTON_DROPDOWN_ITEM } from './DropdownItem.utils';
13
-
14
- const Dropdown = (({
15
- children,
16
- placeholder,
17
- value,
18
- error,
19
- helperMsg,
20
- onChange,
21
- sx,
22
- style,
23
- MenuProps = undefined,
24
- ContainerProps,
25
- ...otherProps
26
- }: DropdownProps) => {
27
- // Prevents selecting a DropdownItem with `asButton` property.
28
- const handleChange = (e: SelectChangeEvent<unknown>, child: React.ReactNode) => {
29
- if (!!onChange && e.target.value !== BUTTON_DROPDOWN_ITEM) {
30
- onChange(e, child);
31
- }
32
- };
33
- const [isOpen, setOpen] = useState<boolean>(false);
34
-
35
- return (
36
- <DropdownContainer
37
- {...ContainerProps}
38
- fullWidth={otherProps.fullWidth}
39
- >
40
- <BaseDropdown
41
- sx={sx}
42
- style={style}
43
- IconComponent={() => (
44
- <ArrowDown
45
- onClick={() => {
46
- if (typeof otherProps.open === 'undefined') setOpen(false);
47
- }}
48
- style={
49
- isOpen || otherProps.open
50
- ? {
51
- cursor: 'pointer',
52
- transform: 'scaleY(-1)',
53
- }
54
- : undefined
55
- }
56
- />
57
- )}
58
- onClick={() => {
59
- if (!otherProps.disabled) setOpen(!isOpen);
60
- }}
61
- // https://github.com/mui/material-ui/issues/26076#issuecomment-1014345564
62
- onClose={() => {
63
- setTimeout(() => {
64
- (document.activeElement as HTMLElement).blur();
65
- }, 0);
66
- }}
67
- onChange={handleChange}
68
- error={!!error}
69
- open={
70
- // eslint-disable-next-line no-nested-ternary
71
- typeof otherProps.open !== 'undefined'
72
- ? otherProps.open
73
- : otherProps.disabled
74
- ? false
75
- : isOpen
76
- }
77
- // MUI expects a value of '' if undefined :S
78
- value={value ?? ''}
79
- MenuProps={
80
- MenuProps ?? {
81
- disablePortal: true,
82
- sx: {
83
- '.MuiPaper-root': {
84
- marginTop: '4px',
85
- borderRadius: '8px',
86
- background: theme.palette.neutralGrey[85],
87
- border: 'transparent',
88
- },
89
- },
90
- }
91
- }
92
- {...otherProps}
93
- >
94
- {children}
95
- </BaseDropdown>
96
- {handlePlaceholder(value) && placeholder && (
97
- <DropdownPlaceholder
98
- placeholder={placeholder}
99
- disabled={otherProps.disabled}
100
- />
101
- )}
102
- {error ? (
103
- <InputMsg
104
- variant="body5"
105
- error
106
- >
107
- {error}
108
- </InputMsg>
109
- ) : (
110
- helperMsg && <InputMsg variant="body5">{helperMsg}</InputMsg>
111
- )}
112
- </DropdownContainer>
113
- );
114
- }) as DropdownComponent;
115
-
116
- export default Dropdown;
@@ -1,31 +0,0 @@
1
- import type { BoxProps, SelectProps, TypographyProps } from '@mui/material';
2
- import { IconDropdownOption } from './IconDropdown.types';
3
-
4
- interface DropdownContainerProps extends BoxProps {
5
- fullWidth?: boolean;
6
- }
7
-
8
- type BaseDropdownProps<T = unknown> = SelectProps<T>;
9
- interface DropdownProps<T = unknown>
10
- extends Omit<BaseDropdownProps<T>, 'IconComponent' | 'error' | 'sx' | 'style'> {
11
- error?: string;
12
- helperMsg?: string;
13
- ContainerProps?: BoxProps;
14
- sx?: SelectProps['sx'];
15
- style?: SelectProps['style'];
16
- options?: IconDropdownOption[];
17
- }
18
-
19
- interface PlaceholderProps extends TypographyProps {
20
- disabled?: boolean;
21
- }
22
-
23
- type DropdownComponent = <T>(props: DropdownProps<T>) => JSX.Element;
24
-
25
- export type {
26
- DropdownContainerProps,
27
- DropdownProps,
28
- BaseDropdownProps,
29
- PlaceholderProps,
30
- DropdownComponent,
31
- };
@@ -1,13 +0,0 @@
1
- const PLACEHOLDER_VAL = 'PLACEHOLDER_VAL';
2
-
3
- const handlePlaceholder = (value: unknown) => {
4
- if (Array.isArray(value)) {
5
- if (value.length) {
6
- return false;
7
- }
8
- return true;
9
- }
10
- return !value;
11
- };
12
-
13
- export { PLACEHOLDER_VAL, handlePlaceholder };
@@ -1,66 +0,0 @@
1
- import React from 'react';
2
- import { MenuItem, Typography, styled } from '@mui/material';
3
- import type { Theme } from '@mui/material';
4
- import type { BaseDropdownItemProps } from './DropdownItem.types';
5
-
6
- const baseDropdownItemStyle = (theme: Theme) => {
7
- return {
8
- background: theme.palette.neutralGrey[85],
9
- display: 'flex',
10
- alignItems: 'center',
11
- justifyContent: 'flex-start',
12
- borderRadius: '8px',
13
- position: 'relative' as const,
14
- margin: '0 8px',
15
- gap: '9px',
16
- '&:hover': {
17
- background: theme.palette.neutralGrey[75],
18
- },
19
- '&.Mui-disabled': {
20
- background: theme.palette.neutralGrey[85],
21
- opacity: '1',
22
- color: '#C4C4C4',
23
- cursor: 'pointer !important',
24
- },
25
- '&.Mui-selected': {
26
- background: 'transparent',
27
- '&:hover, &.Mui-selected:hover, &.Mui-focusVisible, &.Mui-selected.Mui-focusVisible': {
28
- borderRadius: '8px',
29
- backgroundColor: theme.palette.neutralGrey[75],
30
- },
31
- },
32
- };
33
- };
34
-
35
- const padNoIconStyle = {
36
- paddingLeft: '45px !important',
37
- };
38
-
39
- const BaseDropdownItem = styled(MenuItem, {
40
- shouldForwardProp: (prop) => prop !== 'emptyIcon',
41
- })<BaseDropdownItemProps>(({ theme, emptyIcon }) => {
42
- let style = baseDropdownItemStyle(theme);
43
-
44
- if (emptyIcon) {
45
- style = {
46
- ...style,
47
- ...padNoIconStyle,
48
- };
49
- }
50
-
51
- return style;
52
- });
53
-
54
- const BaseShortcutLabel = styled(Typography)(({ theme }) => {
55
- return {
56
- color: theme.palette.neutralGrey[45],
57
- position: 'absolute' as const,
58
- right: '20px',
59
- };
60
- });
61
-
62
- const KeyboardShortcut = ({ label }: { label: string }) => {
63
- return <BaseShortcutLabel variant="body_m1">{label}</BaseShortcutLabel>;
64
- };
65
-
66
- export { BaseDropdownItem, KeyboardShortcut };
@@ -1,45 +0,0 @@
1
- import React from 'react';
2
- import { Check } from '../../icons';
3
- import { BaseDropdownItem, KeyboardShortcut } from './DropdownItem.styled';
4
- import type { DropdownItemProps } from './DropdownItem.types';
5
- import { BUTTON_DROPDOWN_ITEM, shouldPadForEmptyIcon } from './DropdownItem.utils';
6
-
7
- const DropdownItem = ({
8
- checkIcon,
9
- customIcon,
10
- children,
11
- emptyIcon,
12
- asButton,
13
- value,
14
- keyboardShortcut,
15
- ...otherProps
16
- }: DropdownItemProps) => {
17
- return (
18
- <BaseDropdownItem
19
- {...otherProps}
20
- value={asButton ? BUTTON_DROPDOWN_ITEM : value}
21
- emptyIcon={shouldPadForEmptyIcon(emptyIcon, checkIcon, customIcon, otherProps.selected)}
22
- >
23
- {/* Custom Icon overrides check icon */}
24
- {customIcon ?? (checkIcon && otherProps.selected && <Check />)}
25
- {children}
26
- {keyboardShortcut && <KeyboardShortcut label={keyboardShortcut} />}
27
- </BaseDropdownItem>
28
- );
29
- };
30
-
31
- export default DropdownItem;
32
-
33
- /*
34
-
35
- if checkicon, add empty padding.
36
- if checkicon and selected, add icon
37
-
38
- if custom icon, add icon
39
- if checkicon and customicon, custom icon
40
-
41
- if emptyicon, add padding
42
- if checkicon and emptyicon, only
43
-
44
-
45
- */
@@ -1,14 +0,0 @@
1
- import type { MenuItemProps } from '@mui/material';
2
-
3
- interface BaseDropdownItemProps extends MenuItemProps {
4
- emptyIcon?: boolean;
5
- }
6
-
7
- interface DropdownItemProps extends BaseDropdownItemProps {
8
- asButton?: boolean;
9
- checkIcon?: boolean;
10
- customIcon?: React.ReactElement;
11
- keyboardShortcut?: string;
12
- }
13
-
14
- export { DropdownItemProps, BaseDropdownItemProps };