@bitrise/bitkit 12.17.1 → 12.18.0-alpha-drawer.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.
- package/package.json +1 -1
- package/src/Components/Drawer/Drawer.theme.ts +50 -0
- package/src/Components/Drawer/Drawer.tsx +37 -0
- package/src/Components/Drawer/useDrawer.tsx +49 -0
- package/src/Components/Icons/16x16/{Unlock.tsx → LockOpen.tsx} +2 -2
- package/src/Components/Icons/16x16/index.ts +1 -1
- package/src/Components/Icons/24x24/{Unlock.tsx → LockOpen.tsx} +2 -2
- package/src/Components/Icons/24x24/index.ts +1 -1
- package/src/index.ts +4 -0
- package/src/theme.ts +2 -0
package/package.json
CHANGED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createMultiStyleConfigHelpers } from '@chakra-ui/styled-system';
|
|
2
|
+
|
|
3
|
+
const { defineMultiStyleConfig } = createMultiStyleConfigHelpers([
|
|
4
|
+
'overlay',
|
|
5
|
+
'dialogContainer',
|
|
6
|
+
'dialog',
|
|
7
|
+
'closeButton',
|
|
8
|
+
'header',
|
|
9
|
+
'footer',
|
|
10
|
+
]);
|
|
11
|
+
|
|
12
|
+
const DrawerTheme = defineMultiStyleConfig({
|
|
13
|
+
baseStyle: {
|
|
14
|
+
overlay: {
|
|
15
|
+
backgroundColor: 'rgba(0, 0, 0, 0.2)',
|
|
16
|
+
zIndex: 'dialogOverlay',
|
|
17
|
+
top: '3rem',
|
|
18
|
+
},
|
|
19
|
+
dialogContainer: {
|
|
20
|
+
zIndex: 'dialog',
|
|
21
|
+
top: '3rem',
|
|
22
|
+
},
|
|
23
|
+
dialog: {
|
|
24
|
+
top: '3rem !important',
|
|
25
|
+
background: 'neutral.100',
|
|
26
|
+
maxWidth: '20rem',
|
|
27
|
+
padding: '24',
|
|
28
|
+
display: 'flex',
|
|
29
|
+
flexDirection: 'column',
|
|
30
|
+
gap: '9',
|
|
31
|
+
},
|
|
32
|
+
closeButton: {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
top: '24',
|
|
35
|
+
right: '24',
|
|
36
|
+
},
|
|
37
|
+
header: {
|
|
38
|
+
color: 'neutral.40',
|
|
39
|
+
fontSize: '1',
|
|
40
|
+
lineHeight: '1rem',
|
|
41
|
+
textTransform: 'uppercase',
|
|
42
|
+
},
|
|
43
|
+
footer: {
|
|
44
|
+
marginTop: 'auto',
|
|
45
|
+
justifyContent: 'flex-start',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export default DrawerTheme;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Drawer as ChakraDrawer,
|
|
4
|
+
DrawerBody,
|
|
5
|
+
DrawerFooter,
|
|
6
|
+
DrawerHeader,
|
|
7
|
+
DrawerProps as ChakraDrawerProps,
|
|
8
|
+
DrawerOverlay,
|
|
9
|
+
DrawerContent,
|
|
10
|
+
DrawerCloseButton,
|
|
11
|
+
DrawerContentProps,
|
|
12
|
+
} from '@chakra-ui/react';
|
|
13
|
+
|
|
14
|
+
export interface DrawerProps
|
|
15
|
+
extends Pick<ChakraDrawerProps, 'finalFocusRef' | 'initialFocusRef' | 'isOpen' | 'onClose'> {
|
|
16
|
+
children: DrawerContentProps['children'];
|
|
17
|
+
footer?: ReactNode;
|
|
18
|
+
title: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const Drawer = (props: DrawerProps) => {
|
|
22
|
+
const { children, footer, title, ...drawerProps } = props;
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<ChakraDrawer {...drawerProps}>
|
|
26
|
+
<DrawerOverlay />
|
|
27
|
+
<DrawerContent>
|
|
28
|
+
<DrawerCloseButton />
|
|
29
|
+
<DrawerHeader as="h3">{title}</DrawerHeader>
|
|
30
|
+
<DrawerBody>{children}</DrawerBody>
|
|
31
|
+
{footer && <DrawerFooter>{footer}</DrawerFooter>}
|
|
32
|
+
</DrawerContent>
|
|
33
|
+
</ChakraDrawer>
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export default Drawer;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ReactNode, useState } from 'react';
|
|
2
|
+
import { DrawerProps as ChakraDrawerProps, useDisclosure } from '@chakra-ui/react';
|
|
3
|
+
import Drawer from './Drawer';
|
|
4
|
+
|
|
5
|
+
export type UseDrawerProps = {
|
|
6
|
+
content: Record<
|
|
7
|
+
string,
|
|
8
|
+
{
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
footer?: ReactNode;
|
|
11
|
+
title: string;
|
|
12
|
+
}
|
|
13
|
+
>;
|
|
14
|
+
drawerProps?: Pick<ChakraDrawerProps, 'finalFocusRef' | 'initialFocusRef'>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const useDrawer = (props: UseDrawerProps) => {
|
|
18
|
+
const { content, drawerProps } = props;
|
|
19
|
+
const [activeContent, setActiveContent] = useState<string>('');
|
|
20
|
+
|
|
21
|
+
const { isOpen, onClose, onOpen } = useDisclosure();
|
|
22
|
+
|
|
23
|
+
const closeDrawer = () => {
|
|
24
|
+
onClose();
|
|
25
|
+
setActiveContent('');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const openDrawer = (contentKey: string) => {
|
|
29
|
+
if (!isOpen) {
|
|
30
|
+
onOpen();
|
|
31
|
+
} else if (activeContent === contentKey) {
|
|
32
|
+
closeDrawer();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
setActiveContent(contentKey);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const DrawerComponent = <Drawer {...content[activeContent]} {...drawerProps} isOpen={isOpen} onClose={closeDrawer} />;
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
activeContent,
|
|
43
|
+
DrawerComponent,
|
|
44
|
+
isDrawerOpen: isOpen,
|
|
45
|
+
openDrawer,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default useDrawer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Icon, IconProps, forwardRef } from '@chakra-ui/react';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const LockOpen = forwardRef<IconProps, 'svg'>((props, ref) => (
|
|
4
4
|
<Icon ref={ref} viewBox="0 0 16 20" {...props}>
|
|
5
5
|
<path d="M7 15V12H9V15H7Z" fill="currentColor" />
|
|
6
6
|
<path
|
|
@@ -12,4 +12,4 @@ const Unlock = forwardRef<IconProps, 'svg'>((props, ref) => (
|
|
|
12
12
|
</Icon>
|
|
13
13
|
));
|
|
14
14
|
|
|
15
|
-
export default
|
|
15
|
+
export default LockOpen;
|
|
@@ -104,6 +104,7 @@ export { default as Laptop } from './Laptop';
|
|
|
104
104
|
export { default as Lightbulb } from './Lightbulb';
|
|
105
105
|
export { default as Link } from './Link';
|
|
106
106
|
export { default as Lock } from './Lock';
|
|
107
|
+
export { default as LockOpen } from './LockOpen';
|
|
107
108
|
export { default as Login } from './Login';
|
|
108
109
|
export { default as Logout } from './Logout';
|
|
109
110
|
export { default as Macos } from './Macos';
|
|
@@ -187,7 +188,6 @@ export { default as Trace } from './Trace';
|
|
|
187
188
|
export { default as Trash } from './Trash';
|
|
188
189
|
export { default as Trigger } from './Trigger';
|
|
189
190
|
export { default as Twitter } from './Twitter';
|
|
190
|
-
export { default as Unlock } from './Unlock';
|
|
191
191
|
export { default as ValidateShield } from './ValidateShield';
|
|
192
192
|
export { default as Video } from './Video';
|
|
193
193
|
export { default as Warning } from './Warning';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Icon, IconProps, forwardRef } from '@chakra-ui/react';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const LockOpen = forwardRef<IconProps, 'svg'>((props, ref) => (
|
|
4
4
|
<Icon ref={ref} viewBox="0 0 24 24" {...props}>
|
|
5
5
|
<path d="M7 15V12H9V15H7Z" fill="currentColor" />
|
|
6
6
|
<path
|
|
@@ -12,4 +12,4 @@ const Unlock = forwardRef<IconProps, 'svg'>((props, ref) => (
|
|
|
12
12
|
</Icon>
|
|
13
13
|
));
|
|
14
14
|
|
|
15
|
-
export default
|
|
15
|
+
export default LockOpen;
|
|
@@ -104,6 +104,7 @@ export { default as Laptop } from './Laptop';
|
|
|
104
104
|
export { default as Lightbulb } from './Lightbulb';
|
|
105
105
|
export { default as Link } from './Link';
|
|
106
106
|
export { default as Lock } from './Lock';
|
|
107
|
+
export { default as LockOpen } from './LockOpen';
|
|
107
108
|
export { default as Login } from './Login';
|
|
108
109
|
export { default as Logout } from './Logout';
|
|
109
110
|
export { default as Macos } from './Macos';
|
|
@@ -187,7 +188,6 @@ export { default as Trace } from './Trace';
|
|
|
187
188
|
export { default as Trash } from './Trash';
|
|
188
189
|
export { default as Trigger } from './Trigger';
|
|
189
190
|
export { default as Twitter } from './Twitter';
|
|
190
|
-
export { default as Unlock } from './Unlock';
|
|
191
191
|
export { default as ValidateShield } from './ValidateShield';
|
|
192
192
|
export { default as Video } from './Video';
|
|
193
193
|
export { default as Warning } from './Warning';
|
package/src/index.ts
CHANGED
|
@@ -272,3 +272,7 @@ export { default as ContentSwitcher } from './Components/ContentSwitcher/Content
|
|
|
272
272
|
|
|
273
273
|
export type { ContentSwitcherItemProps } from './Components/ContentSwitcher/ContentSwitcherItem';
|
|
274
274
|
export { default as ContentSwitcherItem } from './Components/ContentSwitcher/ContentSwitcherItem';
|
|
275
|
+
|
|
276
|
+
export type { DrawerProps } from './Components/Drawer/Drawer';
|
|
277
|
+
export { default as Drawer } from './Components/Drawer/Drawer';
|
|
278
|
+
export { default as useDrawer } from './Components/Drawer/useDrawer';
|
package/src/theme.ts
CHANGED
|
@@ -8,6 +8,7 @@ import Checkbox from './Components/Form/Checkbox/Checkbox.theme';
|
|
|
8
8
|
import ColorButton from './Components/ColorButton/ColorButton.theme';
|
|
9
9
|
import Dialog from './Components/Dialog/Dialog.theme';
|
|
10
10
|
import Divider from './Components/Divider/Divider.theme';
|
|
11
|
+
import Drawer from './Components/Drawer/Drawer.theme';
|
|
11
12
|
import EmptyState from './Components/EmptyState/EmptyState.theme';
|
|
12
13
|
import Link from './Components/Link/Link.theme';
|
|
13
14
|
import List from './Components/List/List.theme';
|
|
@@ -88,6 +89,7 @@ const theme = {
|
|
|
88
89
|
Checkbox,
|
|
89
90
|
ColorButton,
|
|
90
91
|
Divider,
|
|
92
|
+
Drawer,
|
|
91
93
|
Dropdown,
|
|
92
94
|
EmptyState,
|
|
93
95
|
...Form,
|