@tecsinapse/react-web-kit 1.5.0 → 1.6.3

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 (131) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/components/atoms/Accordion/Accordion.d.ts +9 -0
  3. package/dist/components/atoms/Accordion/Accordion.js +85 -0
  4. package/dist/components/atoms/Accordion/Accordion.js.map +1 -0
  5. package/dist/components/atoms/Accordion/animations.d.ts +41 -0
  6. package/dist/components/atoms/Accordion/animations.js +65 -0
  7. package/dist/components/atoms/Accordion/animations.js.map +1 -0
  8. package/dist/components/atoms/Accordion/index.d.ts +1 -0
  9. package/dist/components/atoms/Accordion/index.js +24 -0
  10. package/dist/components/atoms/Accordion/index.js.map +1 -0
  11. package/dist/components/atoms/Accordion/styled.d.ts +8 -0
  12. package/dist/components/atoms/Accordion/styled.js +53 -0
  13. package/dist/components/atoms/Accordion/styled.js.map +1 -0
  14. package/dist/components/atoms/Badge/index.js +2 -2
  15. package/dist/components/atoms/Button/index.js +2 -2
  16. package/dist/components/atoms/Button/styled.js +5 -3
  17. package/dist/components/atoms/Button/styled.js.map +1 -1
  18. package/dist/components/atoms/Input/index.js +2 -2
  19. package/dist/components/atoms/Modal/Modal.d.ts +8 -0
  20. package/dist/components/atoms/Modal/Modal.js +43 -0
  21. package/dist/components/atoms/Modal/Modal.js.map +1 -0
  22. package/dist/components/atoms/Modal/animations.d.ts +23 -0
  23. package/dist/components/atoms/Modal/animations.js +32 -0
  24. package/dist/components/atoms/Modal/animations.js.map +1 -0
  25. package/dist/components/atoms/Modal/index.d.ts +1 -0
  26. package/dist/components/atoms/Modal/index.js +24 -0
  27. package/dist/components/atoms/Modal/index.js.map +1 -0
  28. package/dist/components/atoms/Modal/styled.d.ts +2 -0
  29. package/dist/components/atoms/Modal/styled.js +39 -0
  30. package/dist/components/atoms/Modal/styled.js.map +1 -0
  31. package/dist/components/atoms/Overlay/Overlay.d.ts +10 -0
  32. package/dist/components/atoms/Overlay/Overlay.js +40 -0
  33. package/dist/components/atoms/Overlay/Overlay.js.map +1 -0
  34. package/dist/components/atoms/Overlay/animations.d.ts +18 -0
  35. package/dist/components/atoms/Overlay/animations.js +27 -0
  36. package/dist/components/atoms/Overlay/animations.js.map +1 -0
  37. package/dist/components/atoms/Overlay/index.d.ts +1 -0
  38. package/dist/components/atoms/Overlay/index.js +16 -0
  39. package/dist/components/atoms/Overlay/index.js.map +1 -0
  40. package/dist/components/atoms/Overlay/styled.d.ts +2 -0
  41. package/dist/components/atoms/Overlay/styled.js +36 -0
  42. package/dist/components/atoms/Overlay/styled.js.map +1 -0
  43. package/dist/components/atoms/Skeleton/index.js +2 -2
  44. package/dist/components/atoms/Table/Toolbar/index.js +2 -2
  45. package/dist/components/atoms/Tag/index.js +2 -2
  46. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/index.js +2 -2
  47. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.d.ts +3 -3
  48. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js +3 -3
  49. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js.map +1 -1
  50. package/dist/components/molecules/Breadcrumbs/index.d.ts +1 -1
  51. package/dist/components/molecules/Breadcrumbs/index.js +8 -2
  52. package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
  53. package/dist/components/molecules/Drawer/Drawer.js +8 -11
  54. package/dist/components/molecules/Drawer/Drawer.js.map +1 -1
  55. package/dist/components/molecules/Drawer/animations.d.ts +0 -18
  56. package/dist/components/molecules/Drawer/animations.js +1 -21
  57. package/dist/components/molecules/Drawer/animations.js.map +1 -1
  58. package/dist/components/molecules/Drawer/index.js +2 -2
  59. package/dist/components/molecules/Drawer/styled.d.ts +0 -1
  60. package/dist/components/molecules/Drawer/styled.js +2 -21
  61. package/dist/components/molecules/Drawer/styled.js.map +1 -1
  62. package/dist/components/molecules/InputPassword/InputPassword.js +2 -2
  63. package/dist/components/molecules/InputPassword/index.js +2 -2
  64. package/dist/components/molecules/Menubar/MenuBlock/MenuBlock.d.ts +4 -3
  65. package/dist/components/molecules/Menubar/MenuBlock/MenuBlock.js +14 -5
  66. package/dist/components/molecules/Menubar/MenuBlock/MenuBlock.js.map +1 -1
  67. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.d.ts +1 -0
  68. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js +6 -3
  69. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js.map +1 -1
  70. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.d.ts +1 -0
  71. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js +4 -2
  72. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js.map +1 -1
  73. package/dist/components/molecules/Menubar/Menubar.d.ts +3 -2
  74. package/dist/components/molecules/Menubar/Menubar.js +26 -33
  75. package/dist/components/molecules/Menubar/Menubar.js.map +1 -1
  76. package/dist/components/molecules/Menubar/MostUsed/MostUsed.d.ts +3 -2
  77. package/dist/components/molecules/Menubar/MostUsed/MostUsed.js +6 -3
  78. package/dist/components/molecules/Menubar/MostUsed/MostUsed.js.map +1 -1
  79. package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.d.ts +1 -0
  80. package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js +4 -2
  81. package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js.map +1 -1
  82. package/dist/components/molecules/Menubar/animations.d.ts +2 -2
  83. package/dist/components/molecules/Menubar/animations.js +14 -22
  84. package/dist/components/molecules/Menubar/animations.js.map +1 -1
  85. package/dist/components/molecules/Menubar/index.d.ts +1 -0
  86. package/dist/components/molecules/Menubar/index.js +26 -3
  87. package/dist/components/molecules/Menubar/index.js.map +1 -1
  88. package/dist/components/molecules/Menubar/styled.js +5 -2
  89. package/dist/components/molecules/Menubar/styled.js.map +1 -1
  90. package/dist/components/molecules/Menubar/types.js +4 -0
  91. package/dist/components/molecules/Select/index.js +2 -2
  92. package/dist/components/molecules/Snackbar/index.js +2 -2
  93. package/dist/components/molecules/Snackbar/styled.js +2 -2
  94. package/dist/components/organisms/DataGrid/index.js +2 -2
  95. package/dist/components/organisms/DataGrid/types.js +4 -0
  96. package/dist/index.d.ts +6 -3
  97. package/dist/index.js +99 -14
  98. package/dist/index.js.map +1 -1
  99. package/package.json +5 -5
  100. package/src/components/atoms/Accordion/Accordion.stories.tsx +35 -0
  101. package/src/components/atoms/Accordion/Accordion.tsx +99 -0
  102. package/src/components/atoms/Accordion/animations.ts +51 -0
  103. package/src/components/atoms/Accordion/index.ts +1 -0
  104. package/src/components/atoms/Accordion/styled.ts +35 -0
  105. package/src/components/atoms/Button/styled.ts +3 -1
  106. package/src/components/atoms/Modal/Modal.stories.tsx +55 -0
  107. package/src/components/atoms/Modal/Modal.tsx +34 -0
  108. package/src/components/atoms/Modal/animations.ts +12 -0
  109. package/src/components/atoms/Modal/index.ts +1 -0
  110. package/src/components/atoms/Modal/styled.ts +17 -0
  111. package/src/components/atoms/Overlay/Overlay.tsx +40 -0
  112. package/src/components/atoms/Overlay/animations.ts +11 -0
  113. package/src/components/atoms/Overlay/index.ts +1 -0
  114. package/src/components/atoms/Overlay/styled.ts +20 -0
  115. package/src/components/molecules/Breadcrumbs/Breadcrumbs.tsx +5 -5
  116. package/src/components/molecules/Breadcrumbs/index.ts +5 -1
  117. package/src/components/molecules/Drawer/Drawer.stories.tsx +10 -20
  118. package/src/components/molecules/Drawer/Drawer.tsx +3 -15
  119. package/src/components/molecules/Drawer/animations.ts +0 -11
  120. package/src/components/molecules/Drawer/styled.ts +1 -14
  121. package/src/components/molecules/Menubar/MenuBlock/MenuBlock.tsx +38 -31
  122. package/src/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.tsx +4 -2
  123. package/src/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.tsx +3 -2
  124. package/src/components/molecules/Menubar/Menubar.stories.tsx +19 -13
  125. package/src/components/molecules/Menubar/Menubar.tsx +48 -57
  126. package/src/components/molecules/Menubar/MostUsed/MostUsed.tsx +4 -2
  127. package/src/components/molecules/Menubar/SearchResultItem/SearchResultItem.tsx +7 -2
  128. package/src/components/molecules/Menubar/animations.ts +14 -21
  129. package/src/components/molecules/Menubar/index.ts +5 -0
  130. package/src/components/molecules/Menubar/styled.ts +3 -2
  131. package/src/index.ts +16 -2
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { Story } from '@storybook/react';
3
+ import Accordion, { AccordionProps } from './Accordion';
4
+ import { Text } from '@tecsinapse/react-core';
5
+
6
+ export default {
7
+ title: 'Components/Accordion',
8
+ component: Accordion,
9
+ parameters: {
10
+ backgrounds: {
11
+ default: 'white',
12
+ },
13
+ },
14
+ };
15
+
16
+ const Template: Story<AccordionProps> = args => {
17
+ return (
18
+ <div style={{ width: 600 }}>
19
+ <Accordion {...args} title="Agreement terms">
20
+ <Text>
21
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris quis
22
+ lorem sed felis pretium posuere quis ut quam. Nunc at mi quis urna
23
+ maximus feugiat id et neque. Nunc sit amet leo magna. Quisque eu risus
24
+ interdum, sagittis neque nec, ultrices ex.
25
+ </Text>
26
+ </Accordion>
27
+ </div>
28
+ );
29
+ };
30
+
31
+ export const Base = Template.bind({});
32
+
33
+ Base.args = {
34
+ title: 'Agreement terms',
35
+ };
@@ -0,0 +1,99 @@
1
+ import React, { useRef } from 'react';
2
+ import { Icon, Text, ThemeProp } from '@tecsinapse/react-core';
3
+ import {
4
+ AccordionContainer,
5
+ IconContainer,
6
+ TitleContainer,
7
+ ContentContainer,
8
+ } from './styled';
9
+ import { Transition } from 'react-transition-group';
10
+ import {
11
+ contentStyle,
12
+ contentTransition,
13
+ titleStyle,
14
+ titleTransition,
15
+ } from './animations';
16
+ import { useTheme } from '@emotion/react';
17
+
18
+ export interface AccordionProps {
19
+ open?: boolean;
20
+ onChange?: () => void;
21
+ title: string;
22
+ /** Transition time for collapse effect in ms */
23
+ transition?: number;
24
+ }
25
+
26
+ const Accordion: React.FC<AccordionProps> = ({
27
+ title,
28
+ open: _open = false,
29
+ onChange,
30
+ transition = 200,
31
+ children,
32
+ }) => {
33
+ const [open, setOpen] = React.useState(_open);
34
+ const [contentHeight, setContentHeight] = React.useState(0);
35
+ const theme = useTheme() as ThemeProp;
36
+
37
+ const ref = useRef<HTMLDivElement | null>(null);
38
+
39
+ React.useEffect(() => setOpen(_open), [_open]);
40
+
41
+ React.useLayoutEffect(() => {
42
+ const size = Array.from(
43
+ (ref.current?.children || []) as HTMLCollection
44
+ ).reduce((prev, curr) => prev + curr.clientHeight, 0);
45
+ setContentHeight(size);
46
+ }, []);
47
+
48
+ const handleClick = React.useCallback(() => {
49
+ if (onChange) {
50
+ onChange();
51
+ return;
52
+ }
53
+ setOpen(state => !state);
54
+ }, [onChange]);
55
+
56
+ return (
57
+ <AccordionContainer>
58
+ <TitleContainer onClick={handleClick}>
59
+ <Transition in={open} timeout={transition}>
60
+ {state => (
61
+ <Text
62
+ typography="h4"
63
+ fontWeight="bold"
64
+ style={{
65
+ ...titleStyle(transition, theme),
66
+ ...titleTransition(theme)[state],
67
+ }}
68
+ >
69
+ {title}
70
+ </Text>
71
+ )}
72
+ </Transition>
73
+ <IconContainer>
74
+ <Icon
75
+ type="material-community"
76
+ name={open ? 'chevron-up' : 'chevron-down'}
77
+ size="kilo"
78
+ fontColor="medium"
79
+ />
80
+ </IconContainer>
81
+ </TitleContainer>
82
+ <Transition in={open} timeout={transition}>
83
+ {state => (
84
+ <ContentContainer
85
+ ref={htmlEl => (ref.current = htmlEl)}
86
+ style={{
87
+ ...contentStyle(open, transition, contentHeight, theme),
88
+ ...contentTransition(contentHeight, theme)[state],
89
+ }}
90
+ >
91
+ {children}
92
+ </ContentContainer>
93
+ )}
94
+ </Transition>
95
+ </AccordionContainer>
96
+ );
97
+ };
98
+
99
+ export default Accordion;
@@ -0,0 +1,51 @@
1
+ import { ThemeProp, extractNumbersFromString } from '@tecsinapse/react-core';
2
+
3
+ export const contentStyle = (
4
+ open: boolean,
5
+ transition: number,
6
+ value: number,
7
+ theme: ThemeProp
8
+ ) => ({
9
+ transition: `padding-bottom ${transition * 2}ms ease-in-out, height ${
10
+ transition * 2
11
+ }ms ease-in-out`,
12
+ paddingBottom: open ? extractNumbersFromString(theme.spacing.kilo) : 0,
13
+ height: open ? value : 0,
14
+ });
15
+
16
+ export const contentTransition = (value: number, theme: ThemeProp) => {
17
+ const paddingBottom = extractNumbersFromString(theme.spacing.kilo);
18
+ return {
19
+ entering: {
20
+ paddingBottom,
21
+ height: value,
22
+ },
23
+ entered: {
24
+ paddingBottom,
25
+ height: value,
26
+ },
27
+ exiting: {
28
+ paddingBottom,
29
+ height: value,
30
+ },
31
+ exited: { paddingBottom: 0, height: 0 },
32
+ };
33
+ };
34
+
35
+ export const titleStyle = (transition: number, theme: ThemeProp) => ({
36
+ transition: `color ${transition * 2}ms ease-in-out`,
37
+ color: theme.font.color.dark,
38
+ });
39
+
40
+ export const titleTransition = (theme: ThemeProp) => ({
41
+ entering: {
42
+ color: theme.font.color.orange,
43
+ },
44
+ entered: {
45
+ color: theme.font.color.orange,
46
+ },
47
+ exiting: {
48
+ color: theme.font.color.orange,
49
+ },
50
+ exited: { color: theme.font.color.dark },
51
+ });
@@ -0,0 +1 @@
1
+ export { default as Accordion, AccordionProps } from './Accordion';
@@ -0,0 +1,35 @@
1
+ import styled from '@emotion/styled';
2
+ import { StyleProps } from '@tecsinapse/react-core';
3
+
4
+ export const IconContainer = styled('div')<Partial<StyleProps>>`
5
+ border-radius: ${({ theme }) => theme.borderRadius.mili};
6
+ border: ${({ theme }) =>
7
+ `${theme.borderWidth.pico} solid ${theme.color.secondary.light}`};
8
+ display: flex;
9
+ text-align: center;
10
+ justify-content: center;
11
+ align-items: center;
12
+ `;
13
+
14
+ export const TitleContainer = styled('div')<Partial<StyleProps>>`
15
+ display: flex;
16
+ flex: 1;
17
+ flex-direction: row;
18
+ justify-content: space-between;
19
+ cursor: pointer;
20
+ padding: ${({ theme }) => theme.spacing.kilo} 0;
21
+ `;
22
+
23
+ export const AccordionContainer = styled('div')<Partial<StyleProps>>`
24
+ display: flex;
25
+ flex-direction: column;
26
+ border-bottom: ${({ theme }) =>
27
+ `${theme.borderWidth.pico} solid ${theme.color.secondary.light}`};
28
+ background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};
29
+ `;
30
+
31
+ export const ContentContainer = styled('div')`
32
+ display: flex;
33
+ flex-direction: column;
34
+ overflow: hidden;
35
+ `;
@@ -4,7 +4,9 @@ import { WebButtonProps } from './Button';
4
4
 
5
5
  const webStyles = () => {
6
6
  return css`
7
- user-select: none;
7
+ & * {
8
+ user-select: none;
9
+ }
8
10
  `;
9
11
  };
10
12
 
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { Story } from '@storybook/react';
3
+ import { Text } from '@tecsinapse/react-core';
4
+ import Modal, { ModalProps } from './Modal';
5
+ import { Button } from '../Button';
6
+
7
+ export default {
8
+ title: 'Components/Modal',
9
+ component: Modal,
10
+ };
11
+
12
+ const Template: Story<ModalProps> = ({ open: _open, ...args }) => {
13
+ const [open, setOpen] = React.useState(_open);
14
+
15
+ React.useEffect(() => setOpen(_open), [_open]);
16
+
17
+ const toggleOpen = () => setOpen(state => !state);
18
+
19
+ return (
20
+ <>
21
+ <Modal {...args} onClose={toggleOpen} open={open}>
22
+ <div
23
+ style={{
24
+ width: 350,
25
+ height: 200,
26
+ display: 'flex',
27
+ flexDirection: 'column',
28
+ alignItems: 'center',
29
+ justifyContent: 'space-between',
30
+ }}
31
+ >
32
+ <Text colorVariant="primary" typography="h3" colorTone="dark">
33
+ Are you sure?
34
+ </Text>
35
+ <Text>
36
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris quis
37
+ lorem sed felis pretium posuere quis ut quam. Nunc at mi quis urna
38
+ maximus feugiat id et neque. Nunc sit amet leo magna. Quisque eu
39
+ risus interdum, sagittis neque nec, ultrices ex.
40
+ </Text>
41
+ <Button onPress={toggleOpen}>
42
+ <Text fontColor="light">Close Modal</Text>
43
+ </Button>
44
+ </div>
45
+ </Modal>
46
+ <Button onPress={toggleOpen}>
47
+ <Text fontColor="light">Open Modal</Text>
48
+ </Button>
49
+ </>
50
+ );
51
+ };
52
+
53
+ export const Base = Template.bind({});
54
+
55
+ Base.args = { open: true };
@@ -0,0 +1,34 @@
1
+ import React, { CSSProperties } from 'react';
2
+ import { Transition } from 'react-transition-group';
3
+ import { Overlay } from '../Overlay';
4
+ import { ModalContainer } from './styled';
5
+ import { defaultStyleOverlay, transitionStylesOverlay } from './animations';
6
+
7
+ export interface ModalProps {
8
+ open: boolean;
9
+ onClose: () => void;
10
+ style?: CSSProperties;
11
+ }
12
+
13
+ const Modal: React.FC<ModalProps> = ({ children, open, onClose, style }) => {
14
+ return (
15
+ <>
16
+ <Overlay open={open} onClose={onClose} zIndex="modal" />
17
+ <Transition in={open} timeout={400}>
18
+ {state => (
19
+ <ModalContainer
20
+ style={{
21
+ ...style,
22
+ ...defaultStyleOverlay,
23
+ ...transitionStylesOverlay[state],
24
+ }}
25
+ >
26
+ {children}
27
+ </ModalContainer>
28
+ )}
29
+ </Transition>
30
+ </>
31
+ );
32
+ };
33
+
34
+ export default Modal;
@@ -0,0 +1,12 @@
1
+ export const defaultStyleOverlay = {
2
+ transition: `opacity 800ms ease-in-out, visibility 600ms ease-in-out`,
3
+ opacity: 0,
4
+ visibility: 'hidden',
5
+ };
6
+
7
+ export const transitionStylesOverlay = {
8
+ entering: { opacity: 1, visibility: 'visible' },
9
+ entered: { opacity: 1, visibility: 'visible' },
10
+ exiting: { opacity: 0, visibility: 'visible' },
11
+ exited: { opacity: 0, visibility: 'hidden' },
12
+ };
@@ -0,0 +1 @@
1
+ export { default as Modal, ModalProps } from './Modal';
@@ -0,0 +1,17 @@
1
+ import styled from '@emotion/styled';
2
+ import { hex2rgba, StyleProps } from '@tecsinapse/react-core';
3
+
4
+ export const ModalContainer = styled('div')<Partial<StyleProps>>`
5
+ background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};
6
+ margin: auto;
7
+ position: fixed;
8
+ z-index: ${({ theme }) => theme.zIndex.modal};
9
+ top: 50%;
10
+ left: 50%;
11
+ transform: translate(-50%, -50%);
12
+ border-radius: ${({ theme }) => theme.borderRadius.micro};
13
+ padding: ${({ theme }) => theme.spacing.kilo};
14
+ display: flex;
15
+ box-shadow: 0 2px 8px
16
+ ${({ theme }) => hex2rgba(theme.miscellaneous.shadow, 0.08)};
17
+ `;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { Transition } from 'react-transition-group';
3
+ import { ZIndex } from '@tecsinapse/react-core';
4
+ import { defaultStyleOverlay, transitionStylesOverlay } from './animations';
5
+ import { StyledOverlay } from './styled';
6
+
7
+ export interface OverlayProps {
8
+ timeout?: number;
9
+ open: boolean;
10
+ onClose: () => void;
11
+ zIndex: keyof ZIndex;
12
+ }
13
+
14
+ const Overlay: React.FC<OverlayProps> = ({
15
+ timeout = 300,
16
+ open,
17
+ onClose,
18
+ zIndex = 'default',
19
+ children,
20
+ }) => {
21
+ return (
22
+ <Transition in={open} timeout={timeout}>
23
+ {state => (
24
+ <StyledOverlay
25
+ style={{
26
+ ...defaultStyleOverlay,
27
+ ...transitionStylesOverlay[state],
28
+ }}
29
+ onClick={open ? onClose : undefined}
30
+ show={open}
31
+ zIndex={zIndex}
32
+ >
33
+ {children}
34
+ </StyledOverlay>
35
+ )}
36
+ </Transition>
37
+ );
38
+ };
39
+
40
+ export default Overlay;
@@ -0,0 +1,11 @@
1
+ export const defaultStyleOverlay = {
2
+ transition: `opacity 700ms ease-in-out`,
3
+ opacity: 0,
4
+ };
5
+
6
+ export const transitionStylesOverlay = {
7
+ entering: { opacity: 1 },
8
+ entered: { opacity: 1 },
9
+ exiting: { opacity: 0 },
10
+ exited: { opacity: 0 },
11
+ };
@@ -0,0 +1 @@
1
+ export { default as Overlay } from './Overlay';
@@ -0,0 +1,20 @@
1
+ import styled from '@emotion/styled';
2
+ import { hex2rgba, StyleProps, ZIndex } from '@tecsinapse/react-core';
3
+
4
+ type InjectedProps = { show: boolean; zIndex: keyof ZIndex };
5
+
6
+ export const StyledOverlay = styled('div')<Partial<StyleProps> & InjectedProps>`
7
+ background: ${({ theme }: StyleProps) =>
8
+ hex2rgba(theme.miscellaneous.overlay, 0.5)};
9
+ top: 0;
10
+ left: 0;
11
+ right: 0;
12
+ bottom: 0;
13
+ display: flex;
14
+ z-index: ${({ theme, show, zIndex }: StyleProps & InjectedProps) =>
15
+ show ? theme.zIndex[zIndex] - 1 : -1};
16
+ cursor: ${({ show }) => (show ? 'pointer' : 'default')};
17
+ position: fixed;
18
+ align-items: center;
19
+ justify-content: center;
20
+ `;