@lunit/oui 1.0.1-alpha.1 → 1.0.1-alpha.11

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 (213) hide show
  1. package/dist/index.js +2 -0
  2. package/dist/types/index.d.ts +2 -0
  3. package/package.json +7 -11
  4. package/.git-ftp-include +0 -1
  5. package/src/assets/ic-bell-noti-outlined-20px.tsx +0 -21
  6. package/src/assets/ic-close-large-outlined-20px.tsx +0 -17
  7. package/src/assets/ic-close-small-outlined-20px.tsx +0 -17
  8. package/src/assets/ic-download-pdf-outlined-20px.tsx +0 -18
  9. package/src/assets/ic-ellipse-outlined-20px.tsx +0 -17
  10. package/src/assets/ic-filter-noti-outlined-20px.tsx +0 -21
  11. package/src/assets/ic-hide-large-outlined-20px.tsx +0 -13
  12. package/src/assets/ic-hide-small-outlined-20px.tsx +0 -17
  13. package/src/assets/ic-information-large-outlined-20px.tsx +0 -17
  14. package/src/assets/ic-information-small-outlined-20px.tsx +0 -17
  15. package/src/assets/ic-manufacturer-outlined-20px.tsx +0 -19
  16. package/src/assets/ic-rectangle-outlined-20px.tsx +0 -17
  17. package/src/assets/ic-refresh-left-outlined-20px.tsx +0 -17
  18. package/src/assets/ic-refresh-right-outlined-20px.tsx +0 -13
  19. package/src/assets/ic-show-large-outlined-20px.tsx +0 -17
  20. package/src/assets/ic-show-small-outlined-20px.tsx +0 -17
  21. package/src/assets/ic_bell_noti=outlined_20px.svg +0 -5
  22. package/src/assets/ic_close_large=outlined_20px.svg +0 -4
  23. package/src/assets/ic_close_small=outlined_20px.svg +0 -4
  24. package/src/assets/ic_download_pdf=outlined_20px.svg +0 -7
  25. package/src/assets/ic_ellipse=outlined_20px.svg +0 -4
  26. package/src/assets/ic_filter_noti=outlined_20px.svg +0 -5
  27. package/src/assets/ic_hide_large=outlined_20px.svg +0 -4
  28. package/src/assets/ic_hide_small=outlined_20px.svg +0 -4
  29. package/src/assets/ic_information_large=outlined_20px.svg +0 -4
  30. package/src/assets/ic_information_small=outlined_20px.svg +0 -4
  31. package/src/assets/ic_manufacturer=outlined_20px.svg +0 -3
  32. package/src/assets/ic_rectangle=outlined_20px.svg +0 -4
  33. package/src/assets/ic_refresh_left=outlined_20px.svg +0 -4
  34. package/src/assets/ic_refresh_right=outlined_20px.svg +0 -4
  35. package/src/assets/ic_show_large=outlined_20px.svg +0 -4
  36. package/src/assets/ic_show_small=outlined_20px.svg +0 -4
  37. package/src/assets/index.ts +0 -16
  38. package/src/components/Alert/Alert.styled.ts +0 -44
  39. package/src/components/Alert/Alert.tsx +0 -39
  40. package/src/components/Alert/Alert.types.ts +0 -5
  41. package/src/components/Alert/Alert.utils.tsx +0 -43
  42. package/src/components/Alert/index.ts +0 -5
  43. package/src/components/BaseTextField/BaseTextField.styled.ts +0 -110
  44. package/src/components/BaseTextField/BaseTextField.types.ts +0 -25
  45. package/src/components/BaseTextField/BaseTextField.utils.ts +0 -10
  46. package/src/components/Button/BaseButton.tsx +0 -19
  47. package/src/components/Button/Button.tsx +0 -117
  48. package/src/components/Button/Button.types.ts +0 -36
  49. package/src/components/Button/Button.utils.ts +0 -13
  50. package/src/components/Button/index.ts +0 -6
  51. package/src/components/Button/styleds/BaseButton.styled.ts +0 -57
  52. package/src/components/Button/styleds/ContainedButton.styled.ts +0 -123
  53. package/src/components/Button/styleds/GhostButton.styled.ts +0 -139
  54. package/src/components/Button/styleds/IconButton.styled.ts +0 -25
  55. package/src/components/Button/styleds/OutlinedButton.styled.ts +0 -144
  56. package/src/components/Card/Card.styled.tsx +0 -18
  57. package/src/components/Card/Card.tsx +0 -18
  58. package/src/components/Card/Card.types.ts +0 -10
  59. package/src/components/Card/index.ts +0 -5
  60. package/src/components/Checkbox/Checkbox.styled.tsx +0 -27
  61. package/src/components/Checkbox/Checkbox.tsx +0 -64
  62. package/src/components/Checkbox/Checkbox.types.ts +0 -16
  63. package/src/components/Checkbox/Checkbox.utils.tsx +0 -42
  64. package/src/components/Checkbox/index.ts +0 -5
  65. package/src/components/Chip/Chip.styled.ts +0 -120
  66. package/src/components/Chip/Chip.tsx +0 -33
  67. package/src/components/Chip/Chip.types.ts +0 -18
  68. package/src/components/Chip/Chip.utils.tsx +0 -50
  69. package/src/components/Chip/index.ts +0 -4
  70. package/src/components/DataTable/DataTable.styled.ts +0 -66
  71. package/src/components/DataTable/DataTable.tsx +0 -29
  72. package/src/components/DataTable/index.ts +0 -1
  73. package/src/components/DatePicker/DatePicker.styled.ts +0 -19
  74. package/src/components/DatePicker/DatePicker.tsx +0 -194
  75. package/src/components/DatePicker/DatePicker.types.ts +0 -8
  76. package/src/components/DatePicker/index.ts +0 -4
  77. package/src/components/Dialog/Dialog.styled.ts +0 -87
  78. package/src/components/Dialog/Dialog.tsx +0 -111
  79. package/src/components/Dialog/Dialog.types.ts +0 -19
  80. package/src/components/Dialog/index.ts +0 -5
  81. package/src/components/Divider/Divider.styled.ts +0 -24
  82. package/src/components/Divider/Divider.tsx +0 -13
  83. package/src/components/Divider/Divider.types.ts +0 -7
  84. package/src/components/Divider/index.ts +0 -5
  85. package/src/components/Dropdown/Dropdown.styled.tsx +0 -127
  86. package/src/components/Dropdown/Dropdown.tsx +0 -116
  87. package/src/components/Dropdown/Dropdown.types.ts +0 -31
  88. package/src/components/Dropdown/Dropdown.utils.ts +0 -13
  89. package/src/components/Dropdown/DropdownItem.styled.tsx +0 -66
  90. package/src/components/Dropdown/DropdownItem.tsx +0 -45
  91. package/src/components/Dropdown/DropdownItem.types.ts +0 -14
  92. package/src/components/Dropdown/DropdownItem.utils.ts +0 -14
  93. package/src/components/Dropdown/DropdownSubtitle.styled.ts +0 -13
  94. package/src/components/Dropdown/DropdownSubtitle.tsx +0 -9
  95. package/src/components/Dropdown/DropdownSubtitle.types.ts +0 -6
  96. package/src/components/Dropdown/IconDropdown.styled.tsx +0 -82
  97. package/src/components/Dropdown/IconDropdown.tsx +0 -56
  98. package/src/components/Dropdown/IconDropdown.types.ts +0 -22
  99. package/src/components/Dropdown/index.ts +0 -22
  100. package/src/components/FileDnDZone/FileDnDZone.styled.ts +0 -43
  101. package/src/components/FileDnDZone/FileDnDZone.tsx +0 -81
  102. package/src/components/FileDnDZone/FileDnDZone.types.ts +0 -14
  103. package/src/components/FileDnDZone/FileDnDZone.utils.ts +0 -3
  104. package/src/components/FileDnDZone/index.ts +0 -5
  105. package/src/components/List/List.styled.ts +0 -31
  106. package/src/components/List/List.tsx +0 -71
  107. package/src/components/List/List.types.ts +0 -24
  108. package/src/components/List/List.utils.ts +0 -14
  109. package/src/components/List/ListItem.styled.tsx +0 -61
  110. package/src/components/List/ListItem.tsx +0 -66
  111. package/src/components/List/ListItem.types.ts +0 -40
  112. package/src/components/List/ListItemCaption.styled.tsx +0 -7
  113. package/src/components/List/ListItemCaption.tsx +0 -18
  114. package/src/components/List/ListItemCaption.types.ts +0 -2
  115. package/src/components/List/index.ts +0 -8
  116. package/src/components/LoadingIndicator/LoadingIndicator.styled.tsx +0 -40
  117. package/src/components/LoadingIndicator/LoadingIndicator.tsx +0 -44
  118. package/src/components/LoadingIndicator/LoadingIndicator.types.ts +0 -7
  119. package/src/components/LoadingIndicator/assets/DnaLoadingAnimation.json +0 -769
  120. package/src/components/LoadingIndicator/assets/DotLoadingAnimation.json +0 -426
  121. package/src/components/LoadingIndicator/index.ts +0 -5
  122. package/src/components/Menu/Menu.styled.tsx +0 -42
  123. package/src/components/Menu/Menu.tsx +0 -28
  124. package/src/components/Menu/Menu.types.ts +0 -18
  125. package/src/components/Menu/MenuItem.styled.ts +0 -62
  126. package/src/components/Menu/MenuItem.tsx +0 -45
  127. package/src/components/Menu/MenuItem.types.ts +0 -14
  128. package/src/components/Menu/index.ts +0 -5
  129. package/src/components/MuiCssBaseline.ts +0 -78
  130. package/src/components/MuiInputBase.ts +0 -25
  131. package/src/components/MuiOutlinedInput.ts +0 -57
  132. package/src/components/MuiTextField.ts +0 -17
  133. package/src/components/Pagination/Pagination.styled.tsx +0 -71
  134. package/src/components/Pagination/Pagination.tsx +0 -182
  135. package/src/components/Pagination/Pagination.types.ts +0 -39
  136. package/src/components/Pagination/index.ts +0 -2
  137. package/src/components/ProductLabel/ProductLabel.styled.ts +0 -61
  138. package/src/components/ProductLabel/ProductLabel.tsx +0 -57
  139. package/src/components/ProductLabel/ProductLabel.types.ts +0 -10
  140. package/src/components/ProductLabel/index.ts +0 -5
  141. package/src/components/Progress/CircularProgress.styled.ts +0 -10
  142. package/src/components/Progress/CircularProgress.tsx +0 -15
  143. package/src/components/Progress/CircularProgress.types.ts +0 -6
  144. package/src/components/Progress/LinearProgress.styled.ts +0 -15
  145. package/src/components/Progress/LinearProgress.tsx +0 -16
  146. package/src/components/Progress/LinearProgress.types.ts +0 -7
  147. package/src/components/Progress/index.ts +0 -4
  148. package/src/components/Radio/Radio.styled.ts +0 -35
  149. package/src/components/Radio/Radio.tsx +0 -60
  150. package/src/components/Radio/Radio.types.ts +0 -15
  151. package/src/components/Radio/RadioGroup.styled.ts +0 -6
  152. package/src/components/Radio/RadioGroup.tsx +0 -23
  153. package/src/components/Radio/RadioGroup.types.ts +0 -10
  154. package/src/components/Radio/index.ts +0 -7
  155. package/src/components/Stepper/Stepper.styled.ts +0 -38
  156. package/src/components/Stepper/Stepper.tsx +0 -24
  157. package/src/components/Stepper/Stepper.types.ts +0 -13
  158. package/src/components/Stepper/index.ts +0 -5
  159. package/src/components/TabbedPanel/TabbedPanel.styled.ts +0 -129
  160. package/src/components/TabbedPanel/TabbedPanel.tsx +0 -70
  161. package/src/components/TabbedPanel/TabbedPanel.types.ts +0 -36
  162. package/src/components/TabbedPanel/TabbedPanel.utils.ts +0 -21
  163. package/src/components/TabbedPanel/index.ts +0 -5
  164. package/src/components/TextField/TextArea.styled.tsx +0 -36
  165. package/src/components/TextField/TextArea.tsx +0 -35
  166. package/src/components/TextField/TextArea.types.ts +0 -28
  167. package/src/components/TextField/TextInput.styled.tsx +0 -115
  168. package/src/components/TextField/TextInput.tsx +0 -27
  169. package/src/components/TextField/TextInput.types.ts +0 -46
  170. package/src/components/TextField/TextInput.utils.ts +0 -7
  171. package/src/components/TextField/components/Buttons.tsx +0 -26
  172. package/src/components/TextField/components/NormalTextInput.tsx +0 -95
  173. package/src/components/TextField/components/PasswordInput.tsx +0 -92
  174. package/src/components/TextField/index.ts +0 -7
  175. package/src/components/Tooltip/Tooltip.styled.tsx +0 -36
  176. package/src/components/Tooltip/Tooltip.tsx +0 -58
  177. package/src/components/Tooltip/Tooltip.types.ts +0 -24
  178. package/src/components/Tooltip/Tooltip.utils.ts +0 -46
  179. package/src/components/Tooltip/index.ts +0 -5
  180. package/src/components/UploadManager/UploadManager.styled.ts +0 -49
  181. package/src/components/UploadManager/UploadManager.tsx +0 -271
  182. package/src/components/UploadManager/UploadManager.types.ts +0 -16
  183. package/src/components/UploadManager/index.ts +0 -5
  184. package/src/components/index.ts +0 -23
  185. package/src/foundations/index.ts +0 -4
  186. package/src/foundations/palette.ts +0 -418
  187. package/src/foundations/spacing.ts +0 -5
  188. package/src/foundations/styles.ts +0 -9
  189. package/src/foundations/typography.ts +0 -492
  190. package/src/icons/BellNoti/index.tsx +0 -28
  191. package/src/icons/CloseLarge/index.tsx +0 -28
  192. package/src/icons/CloseSmall/index.tsx +0 -28
  193. package/src/icons/DownloadPdf/index.tsx +0 -28
  194. package/src/icons/Ellipse/index.tsx +0 -28
  195. package/src/icons/FilterNoti/index.tsx +0 -28
  196. package/src/icons/HideLarge/index.tsx +0 -28
  197. package/src/icons/HideSmall/index.tsx +0 -28
  198. package/src/icons/InformationLarge/index.tsx +0 -28
  199. package/src/icons/InformationSmall/index.tsx +0 -28
  200. package/src/icons/Manufacturer/index.tsx +0 -28
  201. package/src/icons/Rectangle/index.tsx +0 -28
  202. package/src/icons/RefreshLeft/index.tsx +0 -28
  203. package/src/icons/RefreshRight/index.tsx +0 -28
  204. package/src/icons/ShowLarge/index.tsx +0 -28
  205. package/src/icons/ShowSmall/index.tsx +0 -28
  206. package/src/icons/index.ts +0 -180
  207. package/src/index.ts +0 -4
  208. package/src/react-app-env.d.ts +0 -71
  209. package/src/reportWebVitals.ts +0 -15
  210. package/src/setupTests.ts +0 -5
  211. package/src/systems/drawer.ts +0 -27
  212. package/src/systems/index.ts +0 -7
  213. package/src/theme.ts +0 -22
@@ -1,81 +0,0 @@
1
- import React from 'react';
2
- import { Typography } from '@mui/material';
3
- import {
4
- BaseFileDnDZone,
5
- DnDSection,
6
- DnDMainBox,
7
- FileDnDZoneContainer,
8
- } from './FileDnDZone.styled';
9
- import FileDnDZoneProps from './FileDnDZone.types';
10
-
11
- import theme from '../../theme';
12
- import { DEFAULT_FILE_FORMATS } from './FileDnDZone.utils';
13
-
14
- const FileDnDZone = ({
15
- slidesUploaded,
16
- maxSlideLimit = 500,
17
- acceptedFileFormats = DEFAULT_FILE_FORMATS,
18
- disabled,
19
- WrapperProps,
20
- OuterBoxProps,
21
- InnerBoxProps,
22
- SectionBoxProps,
23
- }: FileDnDZoneProps) => {
24
- const disabledSX = {
25
- opacity: 0.4,
26
- };
27
-
28
- return (
29
- <FileDnDZoneContainer
30
- sx={disabled ? disabledSX : {}}
31
- {...WrapperProps}
32
- >
33
- <BaseFileDnDZone {...OuterBoxProps}>
34
- <Typography
35
- variant="h7"
36
- sx={{ color: theme.palette.neutralGrey[25] }}
37
- >
38
- Drag and drop your slide files here
39
- </Typography>
40
- <DnDMainBox {...InnerBoxProps}>
41
- <DnDSection {...SectionBoxProps}>
42
- <Typography
43
- variant="body_sb1"
44
- sx={{ color: theme.palette.neutralGrey[45] }}
45
- >
46
- Supported file formats
47
- </Typography>
48
- <Typography
49
- variant="body_sb1"
50
- sx={{ color: theme.palette.neutralGrey[25], padding: '0 18px', textAlign: 'center' }}
51
- >
52
- {acceptedFileFormats}
53
- </Typography>
54
- </DnDSection>
55
- <DnDSection {...SectionBoxProps}>
56
- <Typography
57
- variant="body_sb1"
58
- sx={{ color: theme.palette.neutralGrey[45] }}
59
- >
60
- Allowed number of slides
61
- </Typography>
62
- <Typography
63
- variant="body_sb1"
64
- sx={{ color: theme.palette.neutralGrey[25] }}
65
- >
66
- {`You have uploaded ${slidesUploaded.toLocaleString()} slides on Lunit SCOPE.`}
67
- </Typography>
68
- <Typography
69
- variant="body_sb1"
70
- sx={{ color: theme.palette.neutralGrey[25] }}
71
- >
72
- {`The number of slides cannot exceed ${maxSlideLimit.toLocaleString()}.`}
73
- </Typography>
74
- </DnDSection>
75
- </DnDMainBox>
76
- </BaseFileDnDZone>
77
- </FileDnDZoneContainer>
78
- );
79
- };
80
-
81
- export default FileDnDZone;
@@ -1,14 +0,0 @@
1
- import type { BoxProps } from '@mui/material';
2
-
3
- interface FileDnDZoneProps {
4
- slidesUploaded: number;
5
- maxSlideLimit?: number;
6
- acceptedFileFormats?: string;
7
- disabled?: boolean;
8
- WrapperProps?: BoxProps;
9
- OuterBoxProps?: BoxProps;
10
- InnerBoxProps?: BoxProps;
11
- SectionBoxProps?: BoxProps;
12
- }
13
-
14
- export default FileDnDZoneProps;
@@ -1,3 +0,0 @@
1
- const DEFAULT_FILE_FORMATS = 'Leica(.svs), 3DHistech(.mrxs), and Philips(.isyntax, .tiff)';
2
-
3
- export { DEFAULT_FILE_FORMATS };
@@ -1,5 +0,0 @@
1
- import FileDnDZone from './FileDnDZone';
2
- import type FileDnDZoneProps from './FileDnDZone.types';
3
-
4
- export { FileDnDZone };
5
- export type { FileDnDZoneProps };
@@ -1,31 +0,0 @@
1
- import { styled, List, ListSubheader } from '@mui/material';
2
- import type { ListSubheaderProps } from './List.types';
3
-
4
- export const MuiList = styled(List)(({ theme }) => ({
5
- padding: theme.spacing(2),
6
- }));
7
-
8
- export const MuiListSubheader = styled(ListSubheader, {
9
- shouldForwardProp: (prop) => !['type', 'clickable'].includes(prop.toString()),
10
- })<ListSubheaderProps>(({ type, clickable, theme }) => ({
11
- display: 'flex',
12
- justifyContent: 'space-between',
13
- alignItems: 'center',
14
- height: '36px',
15
- padding: '0px 8px',
16
- backgroundColor: 'transparent',
17
- ...(type === 'bold'
18
- ? {
19
- ...theme.typography.body_b1,
20
- color: theme.palette.neutralGrey[0],
21
- }
22
- : {
23
- ...theme.typography.small_body_m1,
24
- color: theme.palette.neutralGrey[40],
25
- }),
26
- ...(clickable && { cursor: 'pointer' }),
27
- svg: {
28
- width: '20px',
29
- height: '20px',
30
- },
31
- }));
@@ -1,71 +0,0 @@
1
- /* eslint-disable no-nested-ternary */
2
- import React from 'react';
3
- import { createContext, useMemo } from 'react';
4
- import { ArrowDownSm, ArrowUpSm } from '../../icons';
5
- import { Collapse } from '@mui/material';
6
- import { MuiList, MuiListSubheader } from './List.styled';
7
- import type { ListProps, ListContextValue } from './List.types';
8
-
9
- export const ListContext = createContext<ListContextValue>({
10
- size: 'small',
11
- showCheck: false,
12
- });
13
-
14
- const List = ({
15
- size = 'small',
16
- showCheck = false,
17
- subheader,
18
- subheaderType = 'bold',
19
- open = 'visible',
20
- children,
21
- onOpen,
22
- onClose,
23
- ...props
24
- }: ListProps) => {
25
- const contextValue = useMemo<ListContextValue>(() => ({ size, showCheck }), [size, showCheck]);
26
-
27
- const collapsible = open !== 'visible';
28
-
29
- const onSubheaderClick = ((event: React.MouseEvent<HTMLLIElement>) => {
30
- if (open === 'visible') {
31
- return;
32
- }
33
- const handler = open ? onClose : onOpen;
34
- handler?.(event);
35
- }) as React.ComponentProps<typeof MuiListSubheader>['onClick'];
36
-
37
- return (
38
- <ListContext.Provider value={contextValue}>
39
- <MuiList
40
- {...props}
41
- subheader={
42
- subheader ? (
43
- <MuiListSubheader
44
- type={subheaderType}
45
- clickable={collapsible}
46
- tabIndex={collapsible ? 0 : undefined}
47
- onClick={onSubheaderClick}
48
- >
49
- {subheader}
50
- {collapsible && (open ? <ArrowDownSm /> : <ArrowUpSm />)}
51
- </MuiListSubheader>
52
- ) : null
53
- }
54
- >
55
- {collapsible ? (
56
- <Collapse
57
- in={open}
58
- timeout="auto"
59
- unmountOnExit
60
- >
61
- {children}
62
- </Collapse>
63
- ) : (
64
- children
65
- )}
66
- </MuiList>
67
- </ListContext.Provider>
68
- );
69
- };
70
-
71
- export default List;
@@ -1,24 +0,0 @@
1
- import type {
2
- ListProps as MuiListProps,
3
- ListSubheaderProps as MuiListSubheaderProps,
4
- } from '@mui/material';
5
-
6
- export type ListSize = 'small' | 'medium' | 'large';
7
-
8
- export interface ListProps extends MuiListProps {
9
- size?: ListSize;
10
- subheaderType?: ListSubheaderProps['type'];
11
- open?: boolean | 'visible';
12
- onOpen?: (event: React.MouseEvent<HTMLLIElement>) => void;
13
- onClose?: (event: React.MouseEvent<HTMLLIElement>) => void;
14
- showCheck?: boolean;
15
- }
16
-
17
- export interface ListSubheaderProps extends MuiListSubheaderProps {
18
- type?: 'bold' | 'normal';
19
- clickable?: boolean;
20
- }
21
- export interface ListContextValue {
22
- size: ListSize;
23
- showCheck: boolean;
24
- }
@@ -1,14 +0,0 @@
1
- import { ListSize } from './List.types';
2
-
3
- const getPadding = (size: ListSize) => {
4
- if (size === 'large') {
5
- return '14px';
6
- }
7
- if (size === 'medium') {
8
- return '10px';
9
- }
10
- // 'small'
11
- return '6px';
12
- };
13
-
14
- export default getPadding;
@@ -1,61 +0,0 @@
1
- import React from 'react';
2
- import {
3
- ListItem,
4
- ListItemButton,
5
- ListItemIcon,
6
- ListItemText,
7
- styled,
8
- typographyClasses,
9
- } from '@mui/material';
10
- import { Check, Dummy } from '../../icons';
11
- import getPadding from './List.utils';
12
- import type { StyledListItemButtonProps } from './ListItem.types';
13
-
14
- export const StyledListItem = styled(ListItem)({
15
- width: '100%',
16
- });
17
-
18
- export const StyledListItemButton = styled(({ size, ...props }: StyledListItemButtonProps) => (
19
- <ListItemButton {...props} />
20
- ))(({ theme, size }) => ({
21
- borderRadius: '8px',
22
- padding: `${getPadding(size)} 8px`,
23
- '&.Mui-selected': {
24
- background: 'transparent',
25
- },
26
- '&:hover, &.Mui-selected:hover, &.Mui-focusVisible, &.Mui-selected.Mui-focusVisible': {
27
- backgroundColor: theme.palette.neutralGrey[75],
28
- },
29
- }));
30
-
31
- export const slotStyles = {
32
- minWidth: '20px',
33
- height: '20px',
34
- color: 'currentColor',
35
- svg: {
36
- width: '100%',
37
- height: '100%',
38
- color: 'currentColor !important',
39
- },
40
- };
41
-
42
- export const StyledListItemText = styled(ListItemText)(({ theme }) => ({
43
- margin: 0,
44
- [`& .${typographyClasses.body1}`]: {
45
- ...theme.typography.body5,
46
- },
47
- }));
48
-
49
- export const StyledListItemStartSlot = styled(ListItemIcon)(({ theme }) => ({
50
- ...slotStyles,
51
- marginRight: theme.spacing(2),
52
- }));
53
-
54
- export const StyledListItemEndSlot = styled(ListItemIcon)(({ theme }) => ({
55
- ...slotStyles,
56
- justifyContent: 'flex-end',
57
- marginLeft: theme.spacing(2),
58
- }));
59
-
60
- export const CheckIcon = styled(Check)({ color: '#fff' });
61
- export const EmptyIcon = styled(Dummy)({ visibility: 'hidden' });
@@ -1,66 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { ListContext } from '../List/List';
3
- import {
4
- StyledListItem,
5
- StyledListItemButton,
6
- StyledListItemText,
7
- StyledListItemStartSlot,
8
- StyledListItemEndSlot,
9
- CheckIcon,
10
- EmptyIcon,
11
- } from './ListItem.styled';
12
- import type { ListItemComponent, ListItemProps } from './ListItem.types';
13
-
14
- const ListItem = (({
15
- // Root props
16
- rootProps,
17
- className,
18
- classes,
19
- style,
20
- sx,
21
- // Button props
22
- label,
23
- startElement,
24
- endElement,
25
- selected,
26
- ...props
27
- }: ListItemProps) => {
28
- const { size, showCheck } = useContext(ListContext);
29
-
30
- const checkElement = (() => {
31
- if (showCheck) {
32
- if (selected) {
33
- return <CheckIcon />;
34
- }
35
- return <EmptyIcon />;
36
- }
37
- return null;
38
- })();
39
-
40
- return (
41
- <StyledListItem
42
- {...rootProps}
43
- disablePadding
44
- className={className}
45
- classes={classes}
46
- style={style}
47
- sx={sx}
48
- >
49
- <StyledListItemButton
50
- {...props}
51
- disableRipple
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- component={(props as any).component ?? 'span'}
54
- size={size}
55
- selected={selected}
56
- >
57
- {checkElement && <StyledListItemStartSlot>{checkElement}</StyledListItemStartSlot>}
58
- {startElement && <StyledListItemStartSlot>{startElement}</StyledListItemStartSlot>}
59
- <StyledListItemText primary={label} />
60
- {endElement && <StyledListItemEndSlot>{endElement}</StyledListItemEndSlot>}
61
- </StyledListItemButton>
62
- </StyledListItem>
63
- );
64
- }) as ListItemComponent;
65
-
66
- export default ListItem;
@@ -1,40 +0,0 @@
1
- import {
2
- ExtendButtonBase,
3
- ExtendButtonBaseTypeMap,
4
- ListItemProps as MuiListItemProps,
5
- ListItemButtonProps as MuiListItemButtonProps,
6
- } from '@mui/material';
7
- import { OverrideProps } from '@mui/material/OverridableComponent';
8
- import type { ListSize } from '../List/List.types';
9
-
10
- type ListItemRootBasePropsKey = 'className' | 'classes' | 'style' | 'sx';
11
-
12
- export interface ListItemBaseProps
13
- extends Omit<MuiListItemButtonProps, ListItemRootBasePropsKey>,
14
- Pick<MuiListItemProps, ListItemRootBasePropsKey> {
15
- label?: React.ReactNode | string;
16
- startElement?: React.ReactNode;
17
- endElement?: React.ReactNode;
18
- rootProps?: MuiListItemProps;
19
- }
20
-
21
- export type ListItemTypeMap<
22
- P = {},
23
- D extends React.ElementType = 'span',
24
- > = ExtendButtonBaseTypeMap<{
25
- props: P & ListItemBaseProps;
26
- defaultComponent: D;
27
- }>;
28
-
29
- /** @see ListItemButton {@link @mui/material/ListItemButton} */
30
- export type ListItemComponent = ExtendButtonBase<ListItemTypeMap>;
31
-
32
- export type ListItemProps<
33
- D extends React.ElementType = ListItemTypeMap['defaultComponent'],
34
- P = {},
35
- > = OverrideProps<ListItemTypeMap<P, D>, D>;
36
-
37
- export interface StyledListItemButtonProps extends MuiListItemButtonProps {
38
- component?: React.ElementType;
39
- size: ListSize;
40
- }
@@ -1,7 +0,0 @@
1
- import { styled, Typography } from '@mui/material';
2
-
3
- // eslint-disable-next-line import/prefer-default-export
4
- export const StyledListItemCaption = styled(Typography)(({ theme }) => ({
5
- ...theme.typography.body_m1,
6
- color: theme.palette.neutralGrey[45],
7
- }));
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import clsx from 'clsx';
3
- import { StyledListItemCaption } from './ListItemCaption.styled';
4
- import { ListItemCaptionProps } from './ListItemCaption.types';
5
-
6
- export const ListItemCaptionClassName = 'ListItemCaption';
7
-
8
- const ListItemCaption = (props: ListItemCaptionProps) => {
9
- const { className, ...otherProps } = props;
10
- return (
11
- <StyledListItemCaption
12
- {...otherProps}
13
- className={clsx(ListItemCaptionClassName, className)}
14
- />
15
- );
16
- };
17
-
18
- export default ListItemCaption;
@@ -1,2 +0,0 @@
1
- // eslint-disable-next-line import/prefer-default-export
2
- export { TypographyProps as ListItemCaptionProps } from '@mui/material';
@@ -1,8 +0,0 @@
1
- export { default as List } from './List';
2
- export type { ListProps } from './List.types';
3
-
4
- export { default as ListItem } from './ListItem';
5
- export type { ListItemProps } from './ListItem.types';
6
-
7
- export { default as ListItemCaption } from './ListItemCaption';
8
- export type { ListItemCaptionProps } from './ListItemCaption.types';
@@ -1,40 +0,0 @@
1
- import { Box, styled, Typography } from '@mui/material';
2
-
3
- export const LoadingOverlay = styled(Box)({
4
- position: 'fixed',
5
- top: 0,
6
- left: 0,
7
- right: 0,
8
- bottom: 0,
9
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
10
- zIndex: 99999,
11
- });
12
-
13
- export const LoadingIndicatorBox = styled(Box)(({ theme }) => ({
14
- display: 'flex',
15
- flexDirection: 'column',
16
- justifyContent: 'center',
17
- alignItems: 'center',
18
- position: 'absolute',
19
- top: '50%',
20
- left: '50%',
21
- transform: 'translate(-50%, -50%)',
22
- width: '440px',
23
- height: '360px',
24
- padding: `${theme.spacing(13)} ${theme.spacing(4)}`,
25
- borderRadius: '12px',
26
- backgroundColor: theme.palette.neutralGrey[85],
27
- color: theme.palette.neutralGrey[0],
28
- boxSizing: 'border-box',
29
- }));
30
-
31
- export const LoadingMessage = styled(Typography)(({ theme }) => ({
32
- ...theme.typography.h8,
33
- marginTop: theme.spacing(12),
34
- marginBottom: theme.spacing(5),
35
- }));
36
-
37
- export const LoadingDetails = styled(Typography)(({ theme }) => ({
38
- ...theme.typography.body1,
39
- textAlign: 'center',
40
- }));
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- /* eslint-disable @typescript-eslint/no-var-requires */
3
- import { Player } from '@lottiefiles/react-lottie-player';
4
- import {
5
- LoadingOverlay,
6
- LoadingIndicatorBox,
7
- LoadingMessage,
8
- LoadingDetails,
9
- } from './LoadingIndicator.styled';
10
- import type { LoadingIndicatorProps } from './LoadingIndicator.types';
11
-
12
- const DotLoadingAnimation = require('./assets/DotLoadingAnimation.json');
13
- const DnaLoadingAnimation = require('./assets/DnaLoadingAnimation.json');
14
-
15
- const LoadingIndicator = ({
16
- message,
17
- details,
18
- loadingAnimation = 'dot',
19
- }: LoadingIndicatorProps) => {
20
- return (
21
- <LoadingOverlay>
22
- <LoadingIndicatorBox>
23
- <Player
24
- autoplay
25
- loop
26
- src={loadingAnimation === 'dot' ? DotLoadingAnimation : DnaLoadingAnimation}
27
- style={{ height: '112px', width: '140px' }}
28
- />
29
- <LoadingMessage>{message}</LoadingMessage>
30
- <LoadingDetails>
31
- {details || (
32
- <>
33
- Please wait.
34
- <br />
35
- It may take a few minutes.
36
- </>
37
- )}
38
- </LoadingDetails>
39
- </LoadingIndicatorBox>
40
- </LoadingOverlay>
41
- );
42
- };
43
-
44
- export default LoadingIndicator;
@@ -1,7 +0,0 @@
1
- import { ReactNode } from 'react';
2
-
3
- export interface LoadingIndicatorProps {
4
- message?: string;
5
- details?: ReactNode;
6
- loadingAnimation?: 'dot' | 'dna';
7
- }