@rango-dev/ui 0.28.2-next.0 → 0.28.2-next.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 (58) hide show
  1. package/dist/index.js +6 -6
  2. package/dist/index.js.map +4 -4
  3. package/dist/widget/ui/src/components/Alert/Alert.d.ts.map +1 -1
  4. package/dist/widget/ui/src/components/Alert/Alert.styles.d.ts +4 -4
  5. package/dist/widget/ui/src/components/Alert/Alert.types.d.ts +2 -0
  6. package/dist/widget/ui/src/components/Alert/Alert.types.d.ts.map +1 -1
  7. package/dist/widget/ui/src/components/Button/Button.d.ts +6 -6
  8. package/dist/widget/ui/src/components/Button/Button.styles.d.ts +1 -1
  9. package/dist/widget/ui/src/components/Divider/Divider.d.ts +1 -1
  10. package/dist/widget/ui/src/components/Divider/Divider.d.ts.map +1 -1
  11. package/dist/widget/ui/src/components/Divider/Divider.styles.d.ts +2 -2
  12. package/dist/widget/ui/src/components/Icon/common.d.ts +2 -2
  13. package/dist/widget/ui/src/components/MessageBox/MessageBox.styles.d.ts +1 -1
  14. package/dist/widget/ui/src/components/Modal/Modal.d.ts.map +1 -1
  15. package/dist/widget/ui/src/components/Modal/Modal.types.d.ts +6 -1
  16. package/dist/widget/ui/src/components/Modal/Modal.types.d.ts.map +1 -1
  17. package/dist/widget/ui/src/components/RadioGroup/RadioGroup.styles.d.ts +1 -1
  18. package/dist/widget/ui/src/components/StepDetails/StepDetails.styles.d.ts +4 -4
  19. package/dist/widget/ui/src/components/SvgIcon/SvgIcon.style.d.ts +1 -1
  20. package/dist/widget/ui/src/components/Toast/Toast.Provider.d.ts.map +1 -1
  21. package/dist/widget/ui/src/components/Toast/Toast.d.ts.map +1 -1
  22. package/dist/widget/ui/src/components/Toast/Toast.stories.d.ts +4 -3
  23. package/dist/widget/ui/src/components/Toast/Toast.stories.d.ts.map +1 -1
  24. package/dist/widget/ui/src/components/Toast/Toast.styles.d.ts +4 -6
  25. package/dist/widget/ui/src/components/Toast/Toast.styles.d.ts.map +1 -1
  26. package/dist/widget/ui/src/components/Toast/Toast.types.d.ts +14 -14
  27. package/dist/widget/ui/src/components/Toast/Toast.types.d.ts.map +1 -1
  28. package/dist/widget/ui/src/components/TokenAmount/TokenAmount.styles.d.ts +1 -1
  29. package/dist/widget/ui/src/components/Typography/Typography.types.d.ts +1 -1
  30. package/dist/widget/ui/src/components/Typography/Typography.types.d.ts.map +1 -1
  31. package/dist/widget/ui/src/containers/ConnectWalletsModal/ConnectWalletsModal.d.ts.map +1 -1
  32. package/dist/widget/ui/src/containers/SwapInput/SwapInput.styles.d.ts +6 -6
  33. package/dist/widget/ui/src/containers/SwapInput/TokenSection.styles.d.ts +6 -6
  34. package/dist/widget/ui/src/icons/Autorenew.d.ts +5 -0
  35. package/dist/widget/ui/src/icons/Autorenew.d.ts.map +1 -0
  36. package/dist/widget/ui/src/icons/Exit.d.ts +5 -0
  37. package/dist/widget/ui/src/icons/Exit.d.ts.map +1 -0
  38. package/dist/widget/ui/src/icons/Swap.d.ts +5 -0
  39. package/dist/widget/ui/src/icons/Swap.d.ts.map +1 -0
  40. package/dist/widget/ui/src/icons/index.d.ts +3 -0
  41. package/dist/widget/ui/src/icons/index.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/components/Alert/Alert.tsx +2 -0
  44. package/src/components/Alert/Alert.types.ts +2 -0
  45. package/src/components/Divider/Divider.tsx +2 -1
  46. package/src/components/Modal/Modal.tsx +6 -5
  47. package/src/components/Modal/Modal.types.ts +6 -1
  48. package/src/components/Toast/Toast.Provider.tsx +82 -44
  49. package/src/components/Toast/Toast.stories.tsx +18 -21
  50. package/src/components/Toast/Toast.styles.ts +74 -38
  51. package/src/components/Toast/Toast.tsx +54 -27
  52. package/src/components/Toast/Toast.types.ts +19 -17
  53. package/src/components/Typography/Typography.types.tsx +1 -1
  54. package/src/containers/ConnectWalletsModal/ConnectWalletsModal.tsx +3 -1
  55. package/src/icons/Autorenew.tsx +20 -0
  56. package/src/icons/Exit.tsx +20 -0
  57. package/src/icons/Swap.tsx +20 -0
  58. package/src/icons/index.ts +3 -0
@@ -18,6 +18,7 @@ export function Alert(props: PropsWithChildren<PropTypes>) {
18
18
  action,
19
19
  containerStyles,
20
20
  variant = 'regular',
21
+ titleAlign,
21
22
  } = props;
22
23
  const isFooterString = typeof footer === 'string';
23
24
 
@@ -36,6 +37,7 @@ export function Alert(props: PropsWithChildren<PropTypes>) {
36
37
  {title && (
37
38
  <Typography
38
39
  color={getColor(type, variant)}
40
+ align={titleAlign}
39
41
  variant="body"
40
42
  className="title_typography"
41
43
  size={variant === 'regular' ? 'xsmall' : 'small'}>
@@ -1,3 +1,4 @@
1
+ import type { BaseAlign } from '../Typography/Typography.types';
1
2
  import type { CSSProperties, ReactNode } from 'react';
2
3
 
3
4
  export type Type = 'success' | 'warning' | 'error' | 'info' | 'loading';
@@ -9,4 +10,5 @@ export interface PropTypes {
9
10
  action?: ReactNode;
10
11
  variant?: 'alarm' | 'regular';
11
12
  containerStyles?: CSSProperties;
13
+ titleAlign?: BaseAlign;
12
14
  }
@@ -9,6 +9,7 @@ const DEFAULT_SIZE = 12;
9
9
  export function Divider({
10
10
  size = DEFAULT_SIZE,
11
11
  direction = 'vertical',
12
+ ...props
12
13
  }: PropTypes) {
13
- return <DividerContainer size={size} direction={direction} />;
14
+ return <DividerContainer size={size} direction={direction} {...props} />;
14
15
  }
@@ -27,7 +27,7 @@ export function Modal(props: PropsWithChildren<PropTypes>) {
27
27
  title,
28
28
  open,
29
29
  onClose,
30
- containerStyle,
30
+ styles,
31
31
  anchor = 'bottom',
32
32
  container = document.body,
33
33
  prefix,
@@ -84,10 +84,11 @@ export function Modal(props: PropsWithChildren<PropTypes>) {
84
84
  <BackDrop
85
85
  active={active}
86
86
  onClick={handleBackDropClick}
87
- anchor={anchor}>
87
+ anchor={anchor}
88
+ css={styles?.root}>
88
89
  <ModalContainer
89
90
  active={active}
90
- css={containerStyle}
91
+ css={styles?.container}
91
92
  anchor={anchor}>
92
93
  {header ?? (
93
94
  <ModalHeader noTitle={!title && dismissible && !prefix}>
@@ -107,9 +108,9 @@ export function Modal(props: PropsWithChildren<PropTypes>) {
107
108
  </Flex>
108
109
  </ModalHeader>
109
110
  )}
110
- <Content>{children}</Content>
111
+ <Content css={styles?.content}>{children}</Content>
111
112
 
112
- <Footer>
113
+ <Footer css={styles?.footer}>
113
114
  {footer && <div className="footer__content">{footer}</div>}
114
115
 
115
116
  <div
@@ -15,7 +15,12 @@ export interface PropTypes {
15
15
  prefix?: React.ReactNode;
16
16
  suffix?: React.ReactNode;
17
17
  container?: HTMLElement;
18
- containerStyle?: Stitches.CSS<typeof config>;
18
+ styles?: {
19
+ root?: Stitches.CSS<typeof config>;
20
+ container?: Stitches.CSS<typeof config>;
21
+ content?: Stitches.CSS<typeof config>;
22
+ footer?: Stitches.CSS<typeof config>;
23
+ };
19
24
  footer?: React.ReactNode;
20
25
  hasWatermark?: boolean;
21
26
  hasCloseIcon?: boolean;
@@ -1,6 +1,7 @@
1
1
  import type {
2
2
  ProviderContext,
3
3
  ProviderPropTypes,
4
+ ToastPosition,
4
5
  ToastProps,
5
6
  ToastType,
6
7
  } from './Toast.types';
@@ -15,61 +16,98 @@ import { ToastContainer } from './Toast.styles';
15
16
 
16
17
  const ToastContext = createContext<ProviderContext | undefined>(undefined);
17
18
 
19
+ const renderToastContainer = (
20
+ toasts: ToastProps[],
21
+ position: ToastPosition
22
+ ) => (
23
+ <>
24
+ {toasts.length > 0 && (
25
+ <ToastContainer style={toasts[0].containerStyle} position={position}>
26
+ {toasts.map((toast) => (
27
+ <Toast {...toast} key={toast.id} />
28
+ ))}
29
+ </ToastContainer>
30
+ )}
31
+ </>
32
+ );
33
+
18
34
  export const ToastProvider = (props: PropsWithChildren<ProviderPropTypes>) => {
19
35
  const generateId = useMemo(() => idGenerator(), []);
20
36
 
21
- const {
22
- children,
23
- anchorOrigin = {
24
- horizontal: 'right',
25
- vertical: 'bottom',
26
- },
27
- container,
28
- containerStyle = {},
29
- } = props;
30
- const [toasts, setToasts] = useState<ToastProps[]>([]);
37
+ const { children, container } = props;
38
+ const [leftTopToasts, setLeftTopToasts] = useState<ToastProps[]>([]);
39
+ const [leftBottomToasts, setLeftBottomToasts] = useState<ToastProps[]>([]);
40
+ const [rightTopToasts, setRightTopToasts] = useState<ToastProps[]>([]);
41
+ const [rightBottomToasts, setRightBottomToasts] = useState<ToastProps[]>([]);
42
+ const [centerTopToasts, setCenterTopToasts] = useState<ToastProps[]>([]);
43
+ const [centerBottomToasts, setCenterBottomToasts] = useState<ToastProps[]>(
44
+ []
45
+ );
31
46
 
32
- // eslint-disable-next-line react/jsx-no-constructed-context-values
33
- const api: ProviderContext = {
34
- addToast(content: ToastType) {
35
- setToasts((toasts) => {
36
- const isToastExistById = toasts.find(
37
- (toast) => toast.id === content.id
47
+ const getToastSetter = (position: ToastPosition) => {
48
+ switch (position) {
49
+ case 'right-top':
50
+ return setRightTopToasts;
51
+ case 'right-bottom':
52
+ return setRightBottomToasts;
53
+ case 'left-top':
54
+ return setLeftTopToasts;
55
+ case 'left-bottom':
56
+ return setLeftBottomToasts;
57
+ case 'center-top':
58
+ return setCenterTopToasts;
59
+ default:
60
+ return setCenterBottomToasts;
61
+ }
62
+ };
63
+
64
+ const handleAddToast = (content: ToastType) => {
65
+ const addToasts = () => getToastSetter(content.position);
66
+
67
+ addToasts()((toasts) => {
68
+ const isToastExistById = toasts.find((toast) => toast.id === content.id);
69
+ if (isToastExistById) {
70
+ console.warn(
71
+ 'Trying to send a toast with an existing ID. Please update the toast ID or use it after the toast is hidden'
38
72
  );
39
- if (isToastExistById) {
40
- console.warn(
41
- 'Trying to send a toast with an existing ID. Please update the toast ID or use it after the toast is hidden'
42
- );
43
- return toasts;
44
- }
45
- return [
46
- ...toasts,
47
- {
48
- ...content,
49
- id: content.id || generateId(),
50
- horizontal: anchorOrigin.horizontal,
51
- },
52
- ];
53
- });
54
- },
55
- removeToast(id: number | string) {
56
- setToasts((toasts) => toasts.filter((t) => t.id !== id));
57
- },
73
+ return toasts;
74
+ }
75
+ return [
76
+ ...toasts,
77
+ {
78
+ ...content,
79
+ id: content.id || generateId(),
80
+ },
81
+ ];
82
+ });
83
+ };
84
+
85
+ const handleRemoveToast = (id: number | string, position: ToastPosition) => {
86
+ const removeFromToasts = () => getToastSetter(position);
87
+
88
+ removeFromToasts()((toasts) => toasts.filter((t) => t.id !== id));
89
+ };
90
+
91
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
92
+ const toastApis = {
93
+ addToast: (content: ToastType) => handleAddToast(content),
94
+ removeToast: (id: number | string, position: ToastPosition) =>
95
+ handleRemoveToast(id, position),
58
96
  };
59
97
 
60
98
  return (
61
- <ToastContext.Provider value={api}>
99
+ <ToastContext.Provider value={toastApis}>
62
100
  {children}
63
101
  {container &&
64
102
  createPortal(
65
- <ToastContainer
66
- style={containerStyle}
67
- horizontal={anchorOrigin.horizontal}
68
- vertical={anchorOrigin.vertical}>
69
- {toasts.map((toast) => (
70
- <Toast {...toast} key={toast.id} />
71
- ))}
72
- </ToastContainer>,
103
+ <>
104
+ {renderToastContainer(rightTopToasts, 'right-top')}
105
+ {renderToastContainer(leftTopToasts, 'left-top')}
106
+ {renderToastContainer(centerTopToasts, 'center-top')}
107
+ {renderToastContainer(rightBottomToasts, 'right-bottom')}
108
+ {renderToastContainer(leftBottomToasts, 'left-bottom')}
109
+ {renderToastContainer(centerBottomToasts, 'center-bottom')}
110
+ </>,
73
111
  container
74
112
  )}
75
113
  </ToastContext.Provider>
@@ -16,7 +16,8 @@ export default {
16
16
  type: 'success',
17
17
  title: 'Please change your wallet network to Polygon',
18
18
  autoHideDuration: 5_000,
19
- horizontal: 'right',
19
+ position: 'right-top',
20
+ variant: 'standard',
20
21
  },
21
22
  argTypes: {
22
23
  type: {
@@ -26,30 +27,26 @@ export default {
26
27
  options: ['success', 'warning', 'error', 'info', 'loading'],
27
28
  },
28
29
  },
30
+ position: {
31
+ name: 'position',
32
+ control: {
33
+ type: 'select',
34
+ options: [
35
+ 'right-top',
36
+ 'left-top',
37
+ 'center-top',
38
+ 'right-bottom',
39
+ 'left-bottom',
40
+ 'center-bottom',
41
+ ],
42
+ },
43
+ },
29
44
  },
30
45
  } as Meta<typeof Toast>;
31
46
 
32
- export const TopToasts = (props: ToastProps) => {
33
- return (
34
- <ToastProvider
35
- container={document.body}
36
- anchorOrigin={{
37
- horizontal: props.horizontal,
38
- vertical: 'top',
39
- }}>
40
- <ToastComponent {...props} />
41
- </ToastProvider>
42
- );
43
- };
44
-
45
- export const BottomToasts = (props: ToastProps) => {
47
+ export const Main = (props: ToastProps) => {
46
48
  return (
47
- <ToastProvider
48
- container={document.body}
49
- anchorOrigin={{
50
- horizontal: props.horizontal,
51
- vertical: 'bottom',
52
- }}>
49
+ <ToastProvider container={document.body}>
53
50
  <ToastComponent {...props} />
54
51
  </ToastProvider>
55
52
  );
@@ -7,18 +7,7 @@ const toastOpacity = keyframes({
7
7
  });
8
8
 
9
9
  export const ToastContentContainer = styled('div', {
10
- variants: {
11
- horizontal: {
12
- right: {
13
- right: 12,
14
- animation: `${toastOpacity} .7s`,
15
- },
16
- left: {
17
- left: 12,
18
- animation: `${toastOpacity} .7s`,
19
- },
20
- },
21
- },
10
+ animation: `${toastOpacity} .7s`,
22
11
  });
23
12
 
24
13
  export const ToastContainer = styled('div', {
@@ -28,20 +17,31 @@ export const ToastContainer = styled('div', {
28
17
  gap: '$4',
29
18
  flexDirection: 'column',
30
19
  variants: {
31
- horizontal: {
32
- right: {
20
+ position: {
21
+ 'right-top': {
33
22
  right: 12,
23
+ top: 2,
34
24
  },
35
- left: {
25
+ 'right-bottom': {
26
+ right: 12,
27
+ bottom: 2,
28
+ },
29
+ 'left-top': {
36
30
  left: 12,
31
+ top: 2,
37
32
  },
38
- },
39
-
40
- vertical: {
41
- top: {
33
+ 'left-bottom': {
34
+ left: 12,
35
+ bottom: 2,
36
+ },
37
+ 'center-top': {
38
+ left: '50%',
39
+ transform: 'translateX(-50%)',
42
40
  top: 2,
43
41
  },
44
- bottom: {
42
+ 'center-bottom': {
43
+ left: '50%',
44
+ transform: 'translateX(-50%)',
45
45
  bottom: 2,
46
46
  },
47
47
  },
@@ -53,36 +53,73 @@ export const AlertBox = styled('div', {
53
53
  borderRadius: '$sm',
54
54
  width: '292px',
55
55
  minHeight: '52px',
56
- backgroundColor: '$background',
57
- borderRight: '1px solid',
58
- [`.${darkTheme} &`]: {
59
- backgroundColor: '#070917',
60
- },
61
- '&:hover': {
62
- backgroundColor: '$info100',
63
- [`.${darkTheme} &`]: {
64
- backgroundColor: '#111733',
65
- },
66
- },
67
56
  variants: {
57
+ variant: {
58
+ custom: {
59
+ backgroundColor: '$background',
60
+ borderRight: '1px solid',
61
+ '&:hover': {
62
+ backgroundColor: '$info100',
63
+ [`.${darkTheme} &`]: {
64
+ backgroundColor: '$neutral300',
65
+ },
66
+ },
67
+ },
68
+ standard: {
69
+ '& ._alert': {
70
+ padding: '$10',
71
+ width: '100%',
72
+ justifyContent: 'center',
73
+ alignItems: 'center',
74
+ },
75
+ },
76
+ },
68
77
  type: {
69
- error: {
78
+ error: {},
79
+ success: {},
80
+ warning: {},
81
+ info: {},
82
+ loading: {},
83
+ },
84
+ },
85
+ compoundVariants: [
86
+ {
87
+ variant: 'custom',
88
+ type: 'error',
89
+
90
+ css: {
70
91
  borderRightColor: '$error500',
71
92
  },
72
- success: {
93
+ },
94
+ {
95
+ variant: 'custom',
96
+ type: 'success',
97
+ css: {
73
98
  borderRightColor: '$success500',
74
99
  },
75
- warning: {
100
+ },
101
+ {
102
+ variant: 'custom',
103
+ type: 'warning',
104
+ css: {
76
105
  borderRightColor: '$warning500',
77
106
  },
78
- info: {
107
+ },
108
+ {
109
+ variant: 'custom',
110
+ type: 'info',
111
+ css: {
79
112
  borderRightColor: '$info500',
80
113
  },
81
- loading: {
114
+ },
115
+ {
116
+ variant: 'custom',
117
+ type: 'loading',
118
+ css: {
82
119
  borderRightColor: '$info500',
83
120
  },
84
121
  },
85
- },
122
+ ],
86
123
  });
87
124
 
88
125
  export const AlertFlexContainer = styled('div', {
@@ -108,6 +145,5 @@ export const StyledTypography = styled(Typography, {
108
145
 
109
146
  export const ToastStoryContainer = styled('div', {
110
147
  display: 'flex',
111
- justifyContent: 'center',
112
148
  alignItems: 'center',
113
149
  });
@@ -2,9 +2,12 @@ import type { ToastProps } from './Toast.types';
2
2
 
3
3
  import React, { useEffect } from 'react';
4
4
 
5
+ import { CloseIcon } from '../../icons';
6
+ import { Alert } from '../Alert';
5
7
  import { IconHighlight } from '../Alert/Alert.styles';
6
8
  import AlertIcon from '../Alert/AlertIcon';
7
9
  import { Divider } from '../Divider';
10
+ import { IconButton } from '../IconButton';
8
11
 
9
12
  import { useToast } from './Toast.Provider';
10
13
  import {
@@ -14,46 +17,70 @@ import {
14
17
  ToastContentContainer,
15
18
  } from './Toast.styles';
16
19
 
17
- const DEFAULT_HIDE_DURATION = 3_000;
18
-
19
20
  export const Toast = (props: ToastProps) => {
20
- const { id, horizontal, autoHideDuration = DEFAULT_HIDE_DURATION } = props;
21
+ const {
22
+ id,
23
+ autoHideDuration,
24
+ onClose,
25
+ type,
26
+ title,
27
+ position,
28
+ hasCloseIcon = true,
29
+ hideOnTap = true,
30
+ variant = 'standard',
31
+ } = props;
21
32
  const { removeToast } = useToast();
22
33
  useEffect(() => {
23
- const timer = setTimeout(() => {
24
- removeToast(id);
25
- }, autoHideDuration);
34
+ let cleanup;
35
+
36
+ if (autoHideDuration) {
37
+ const timer = setTimeout(() => {
38
+ handleClose();
39
+ }, autoHideDuration);
26
40
 
27
- return () => {
28
- clearTimeout(timer);
29
- };
41
+ cleanup = () => clearTimeout(timer);
42
+ }
43
+
44
+ return cleanup;
30
45
  }, [id]);
31
46
 
47
+ const handleClose = () => {
48
+ removeToast(id, position);
49
+ onClose?.();
50
+ };
51
+
32
52
  return (
33
- <ToastContentContainer horizontal={horizontal}>
34
- {'component' in props ? (
35
- props.component
36
- ) : (
37
- <AlertBox
38
- onClick={() => removeToast(id)}
39
- type={props.type}
40
- style={props.style}>
53
+ <ToastContentContainer>
54
+ <AlertBox
55
+ onClick={hideOnTap ? handleClose : undefined}
56
+ variant={variant}
57
+ type={type}>
58
+ {variant === 'custom' ? (
41
59
  <AlertFlexContainer>
42
- <IconHighlight type={props.type} align="center">
43
- <AlertIcon type={props.type} />
60
+ <IconHighlight type={type} align="center">
61
+ <AlertIcon type={type} />
44
62
  </IconHighlight>
45
63
  <Divider direction="horizontal" size={10} />
46
- <StyledTypography
47
- variant="body"
48
- size="small"
49
- color={props.titleColor}
50
- hasColor={!!props.titleColor}
51
- align="left">
64
+ <StyledTypography variant="body" size="small" align="left">
52
65
  {props.title}
53
66
  </StyledTypography>
54
67
  </AlertFlexContainer>
55
- </AlertBox>
56
- )}
68
+ ) : (
69
+ <Alert
70
+ title={title}
71
+ type={type}
72
+ variant="alarm"
73
+ titleAlign="left"
74
+ action={
75
+ hasCloseIcon ? (
76
+ <IconButton variant="ghost" size="xsmall" onClick={handleClose}>
77
+ <CloseIcon size={12} />
78
+ </IconButton>
79
+ ) : undefined
80
+ }
81
+ />
82
+ )}
83
+ </AlertBox>
57
84
  </ToastContentContainer>
58
85
  );
59
86
  };
@@ -1,31 +1,33 @@
1
+ import type { ToastContainer } from './Toast.styles';
1
2
  import type { Type } from '../Alert/Alert.types';
2
- import type { CSSProperties } from '@stitches/react';
3
+ import type * as Stitches from '@stitches/react';
4
+ import type { CSSProperties } from 'react';
3
5
 
6
+ type BaseProps = Stitches.VariantProps<typeof ToastContainer>;
7
+ export type ToastPosition = Exclude<BaseProps['position'], object>;
4
8
  export interface ProviderPropTypes {
5
9
  container: HTMLElement;
6
- anchorOrigin?: {
7
- horizontal: 'left' | 'right';
8
- vertical: 'bottom' | 'top';
9
- };
10
- containerStyle?: CSSProperties;
11
10
  }
12
11
 
13
- export type ToastType = { autoHideDuration?: number; id?: number | string } & (
14
- | {
15
- title: string;
16
- type: Type;
17
- titleColor?: string;
18
- style?: CSSProperties;
19
- }
20
- | { component: React.ReactNode }
21
- );
12
+ export type ToastType = {
13
+ autoHideDuration?: number;
14
+ id?: number | string;
15
+ containerStyle?: CSSProperties;
16
+ onClose?: () => void;
17
+ position: ToastPosition;
18
+ title: string;
19
+ type: Type;
20
+ style?: CSSProperties;
21
+ hasCloseIcon?: boolean;
22
+ hideOnTap?: boolean;
23
+ variant?: 'custom' | 'standard';
24
+ };
22
25
 
23
26
  export type ToastProps = ToastType & {
24
27
  id: number | string;
25
- horizontal: 'left' | 'right';
26
28
  };
27
29
 
28
30
  export type ProviderContext = {
29
31
  addToast: (content: ToastType) => void;
30
- removeToast: (id: number | string) => void;
32
+ removeToast: (id: number | string, position: ToastPosition) => void;
31
33
  };
@@ -4,7 +4,7 @@ import type * as Stitches from '@stitches/react';
4
4
  type BaseProps = Stitches.VariantProps<typeof TypographyContainer>;
5
5
  type BaseSizes = Exclude<BaseProps['size'], object>;
6
6
  type BaseVariants = Exclude<BaseProps['variant'], object>;
7
- type BaseAlign = Exclude<BaseProps['align'], object>;
7
+ export type BaseAlign = Exclude<BaseProps['align'], object>;
8
8
 
9
9
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
10
10
  type margin = 2 | 4 | 8 | 12;
@@ -30,7 +30,9 @@ export function ConnectWalletsModal(props: PropTypes) {
30
30
  title={i18n.t('Connect Wallets')}
31
31
  open={open}
32
32
  onClose={onClose}
33
- containerStyle={{ width: '75%', maxWidth: '30rem', height: '60%' }}>
33
+ styles={{
34
+ container: { width: '75%', maxWidth: '30rem', height: '60%' },
35
+ }}>
34
36
  <ModalContent>
35
37
  {list.map((info) => (
36
38
  <Wallet {...info} key={info.title} onClick={onSelect} />
@@ -0,0 +1,20 @@
1
+ import type { SvgIconPropsWithChildren } from '../components/SvgIcon';
2
+
3
+ import React, { createElement } from 'react';
4
+
5
+ import { SvgIcon } from '../components/SvgIcon';
6
+
7
+ function SvgAutorenew(props: SvgIconPropsWithChildren) {
8
+ return createElement(
9
+ SvgIcon,
10
+ props,
11
+ <svg viewBox="0 0 24 24">
12
+ <path
13
+ fillRule="evenodd"
14
+ d="M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"
15
+ fill="currentColor"
16
+ />
17
+ </svg>
18
+ );
19
+ }
20
+ export default SvgAutorenew;
@@ -0,0 +1,20 @@
1
+ import type { SvgIconPropsWithChildren } from '../components/SvgIcon';
2
+
3
+ import React, { createElement } from 'react';
4
+
5
+ import { SvgIcon } from '../components/SvgIcon';
6
+
7
+ function SvgExit(props: SvgIconPropsWithChildren) {
8
+ return createElement(
9
+ SvgIcon,
10
+ props,
11
+ <svg viewBox="0 0 24 24">
12
+ <path
13
+ fillRule="evenodd"
14
+ d="M10.09 15.59 11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
15
+ fill="currentColor"
16
+ />
17
+ </svg>
18
+ );
19
+ }
20
+ export default SvgExit;