@zendeskgarden/react-chrome 8.75.1 → 8.76.0
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/dist/esm/elements/Chrome.js +99 -0
- package/dist/esm/elements/SkipNav.js +70 -0
- package/dist/esm/elements/body/Body.js +68 -0
- package/dist/esm/elements/body/Content.js +59 -0
- package/dist/esm/elements/body/Main.js +52 -0
- package/dist/esm/elements/body/Sidebar.js +52 -0
- package/dist/esm/elements/footer/Footer.js +52 -0
- package/dist/esm/elements/footer/FooterItem.js +52 -0
- package/dist/esm/elements/header/Header.js +56 -0
- package/dist/esm/elements/header/HeaderItem.js +74 -0
- package/dist/esm/elements/header/HeaderItemIcon.js +71 -0
- package/dist/esm/elements/header/HeaderItemText.js +56 -0
- package/dist/esm/elements/header/HeaderItemWrapper.js +52 -0
- package/dist/esm/elements/nav/Nav.js +74 -0
- package/dist/esm/elements/nav/NavItem.js +98 -0
- package/dist/esm/elements/nav/NavItemIcon.js +71 -0
- package/dist/esm/elements/nav/NavItemText.js +63 -0
- package/dist/esm/elements/sheet/Sheet.js +133 -0
- package/dist/esm/elements/sheet/components/Body.js +55 -0
- package/dist/esm/elements/sheet/components/Close.js +65 -0
- package/dist/esm/elements/sheet/components/Description.js +64 -0
- package/dist/esm/elements/sheet/components/Footer.js +55 -0
- package/dist/esm/elements/sheet/components/FooterItem.js +55 -0
- package/dist/esm/elements/sheet/components/Header.js +60 -0
- package/dist/esm/elements/sheet/components/Title.js +64 -0
- package/dist/esm/elements/subnav/CollapsibleSubNavItem.js +120 -0
- package/dist/esm/elements/subnav/SubNav.js +63 -0
- package/dist/esm/elements/subnav/SubNavItem.js +65 -0
- package/dist/esm/elements/subnav/SubNavItemText.js +56 -0
- package/dist/esm/index.js +29 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/chevron-down-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/link-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/x-stroke.svg.js +26 -0
- package/dist/esm/styled/StyledChrome.js +22 -0
- package/dist/esm/styled/StyledSkipNav.js +46 -0
- package/dist/esm/styled/StyledSkipNavIcon.js +28 -0
- package/dist/esm/styled/body/StyledBody.js +22 -0
- package/dist/esm/styled/body/StyledContent.js +25 -0
- package/dist/esm/styled/body/StyledMain.js +22 -0
- package/dist/esm/styled/body/StyledSidebar.js +22 -0
- package/dist/esm/styled/footer/StyledFooter.js +25 -0
- package/dist/esm/styled/footer/StyledFooterItem.js +22 -0
- package/dist/esm/styled/header/StyledBaseHeaderItem.js +35 -0
- package/dist/esm/styled/header/StyledHeader.js +31 -0
- package/dist/esm/styled/header/StyledHeaderItem.js +37 -0
- package/dist/esm/styled/header/StyledHeaderItemIcon.js +22 -0
- package/dist/esm/styled/header/StyledHeaderItemText.js +23 -0
- package/dist/esm/styled/header/StyledHeaderItemWrapper.js +24 -0
- package/dist/esm/styled/header/StyledLogoHeaderItem.js +47 -0
- package/dist/esm/styled/nav/StyledBaseNavItem.js +32 -0
- package/dist/esm/styled/nav/StyledBrandmarkNavItem.js +24 -0
- package/dist/esm/styled/nav/StyledLogoNavItem.js +49 -0
- package/dist/esm/styled/nav/StyledNav.js +34 -0
- package/dist/esm/styled/nav/StyledNavItem.js +65 -0
- package/dist/esm/styled/nav/StyledNavItemIcon.js +22 -0
- package/dist/esm/styled/nav/StyledNavItemText.js +34 -0
- package/dist/esm/styled/sheet/StyledSheet.js +41 -0
- package/dist/esm/styled/sheet/StyledSheetBody.js +22 -0
- package/dist/esm/styled/sheet/StyledSheetClose.js +34 -0
- package/dist/esm/styled/sheet/StyledSheetDescription.js +22 -0
- package/dist/esm/styled/sheet/StyledSheetFooter.js +22 -0
- package/dist/esm/styled/sheet/StyledSheetFooterItem.js +22 -0
- package/dist/esm/styled/sheet/StyledSheetHeader.js +23 -0
- package/dist/esm/styled/sheet/StyledSheetTitle.js +22 -0
- package/dist/esm/styled/sheet/StyledSheetWrapper.js +37 -0
- package/dist/esm/styled/subnav/StyledSubNav.js +34 -0
- package/dist/esm/styled/subnav/StyledSubNavItem.js +55 -0
- package/dist/esm/styled/subnav/StyledSubNavItemHeader.js +24 -0
- package/dist/esm/styled/subnav/StyledSubNavItemIcon.js +43 -0
- package/dist/esm/styled/subnav/StyledSubNavItemText.js +30 -0
- package/dist/esm/styled/subnav/StyledSubNavPanel.js +24 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/utils/useBodyContext.js +16 -0
- package/dist/esm/utils/useChromeContext.js +16 -0
- package/dist/esm/utils/useFocusableMount.js +31 -0
- package/dist/esm/utils/useNavContext.js +16 -0
- package/dist/esm/utils/useSheetContext.js +16 -0
- package/dist/index.cjs.js +78 -94
- package/package.json +5 -5
- package/dist/index.esm.js +0 -1449
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { rgba } from 'polished';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME, focusStyles } from '@zendeskgarden/react-theming';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'chrome.subnav_item';
|
|
12
|
+
const colorStyles = props => {
|
|
13
|
+
const {
|
|
14
|
+
theme,
|
|
15
|
+
isLight,
|
|
16
|
+
isCurrent
|
|
17
|
+
} = props;
|
|
18
|
+
const DARK = theme.palette.black;
|
|
19
|
+
const LIGHT = theme.palette.white;
|
|
20
|
+
let currentColor;
|
|
21
|
+
let hoverColor;
|
|
22
|
+
if (isCurrent) {
|
|
23
|
+
if (isLight) {
|
|
24
|
+
currentColor = rgba(DARK, 0.1);
|
|
25
|
+
} else {
|
|
26
|
+
currentColor = rgba(LIGHT, 0.1);
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
hoverColor = rgba(isLight ? LIGHT : DARK, 0.1);
|
|
30
|
+
}
|
|
31
|
+
const activeColor = rgba(isLight ? DARK : LIGHT, 0.03);
|
|
32
|
+
return css(["opacity:", ";background-color:", ";&:hover{opacity:1;background-color:", ";}", " &:not([data-garden-header='true']):active{background-color:", ";}"], isCurrent ? '1' : '0.6', currentColor, hoverColor, focusStyles({
|
|
33
|
+
theme,
|
|
34
|
+
hue: isLight ? DARK : LIGHT,
|
|
35
|
+
spacerWidth: null,
|
|
36
|
+
styles: {
|
|
37
|
+
opacity: 1
|
|
38
|
+
}
|
|
39
|
+
}), activeColor);
|
|
40
|
+
};
|
|
41
|
+
const getSubNavItemHeight = props => {
|
|
42
|
+
return `${props.theme.space.base * 7.5}px`;
|
|
43
|
+
};
|
|
44
|
+
const StyledSubNavItem = styled.button.attrs({
|
|
45
|
+
'data-garden-id': COMPONENT_ID,
|
|
46
|
+
'data-garden-version': '8.76.0'
|
|
47
|
+
}).withConfig({
|
|
48
|
+
displayName: "StyledSubNavItem",
|
|
49
|
+
componentId: "sc-1yg9dpx-0"
|
|
50
|
+
})(["display:flex;align-items:center;transition:box-shadow 0.1s ease-in-out,background-color 0.1s ease-in-out,opacity 0.1s ease-in-out;margin:", "px 0 0;border:none;border-radius:", ";box-sizing:border-box;background:transparent;cursor:", ";padding:", ";width:100%;min-height:", ";text-align:inherit;font-size:inherit;&,&:hover,&:focus{text-decoration:none;color:inherit;}", ";", ";"], props => props.theme.space.base * 2, props => props.theme.borderRadii.md, props => props.isCurrent ? 'default' : 'pointer', props => `0 ${props.theme.space.base * 2}px`, getSubNavItemHeight, props => colorStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
51
|
+
StyledSubNavItem.defaultProps = {
|
|
52
|
+
theme: DEFAULT_THEME
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { StyledSubNavItem, getSubNavItemHeight };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledSubNavItem } from './StyledSubNavItem.js';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'chrome.collapsible_sub_nav_item';
|
|
12
|
+
const StyledSubNavItemHeader = styled(StyledSubNavItem).attrs({
|
|
13
|
+
'data-garden-id': COMPONENT_ID,
|
|
14
|
+
'data-garden-version': '8.76.0',
|
|
15
|
+
'data-garden-header': 'true'
|
|
16
|
+
}).withConfig({
|
|
17
|
+
displayName: "StyledSubNavItemHeader",
|
|
18
|
+
componentId: "sc-1vniter-0"
|
|
19
|
+
})(["position:relative;padding-", ":", "px;", ";"], props => props.theme.rtl ? 'left' : 'right', props => props.theme.space.base * 7, props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
20
|
+
StyledSubNavItemHeader.defaultProps = {
|
|
21
|
+
theme: DEFAULT_THEME
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { StyledSubNavItemHeader };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default from 'react';
|
|
8
|
+
import styled from 'styled-components';
|
|
9
|
+
import SvgChevronDownStroke from '../../node_modules/@zendeskgarden/svg-icons/src/12/chevron-down-stroke.svg.js';
|
|
10
|
+
import { DEFAULT_THEME, retrieveComponentStyles } from '@zendeskgarden/react-theming';
|
|
11
|
+
import { getSubNavItemHeight } from './StyledSubNavItem.js';
|
|
12
|
+
|
|
13
|
+
const COMPONENT_ID = 'chrome.collapsible_sub_nav_item_icon';
|
|
14
|
+
const FilteredChevronDownStrokeIcon = React__default.forwardRef((_ref, ref) => {
|
|
15
|
+
let {
|
|
16
|
+
theme,
|
|
17
|
+
isExpanded,
|
|
18
|
+
...validProps
|
|
19
|
+
} = _ref;
|
|
20
|
+
return React__default.createElement(SvgChevronDownStroke, Object.assign({
|
|
21
|
+
ref: ref
|
|
22
|
+
}, validProps));
|
|
23
|
+
});
|
|
24
|
+
FilteredChevronDownStrokeIcon.displayName = 'FilteredChevronDownStrokeIcon';
|
|
25
|
+
const StyledSubNavItemIcon = styled(FilteredChevronDownStrokeIcon).withConfig({
|
|
26
|
+
displayName: "StyledSubNavItemIcon",
|
|
27
|
+
componentId: "sc-1d02hho-0"
|
|
28
|
+
})(["width:", ";height:", ";"], props => props.theme.iconSizes.sm, props => props.theme.iconSizes.sm);
|
|
29
|
+
StyledSubNavItemIcon.defaultProps = {
|
|
30
|
+
theme: DEFAULT_THEME
|
|
31
|
+
};
|
|
32
|
+
const StyledSubNavItemIconWrapper = styled.div.attrs({
|
|
33
|
+
'data-garden-id': COMPONENT_ID,
|
|
34
|
+
'data-garden-version': '8.76.0'
|
|
35
|
+
}).withConfig({
|
|
36
|
+
displayName: "StyledSubNavItemIcon__StyledSubNavItemIconWrapper",
|
|
37
|
+
componentId: "sc-1d02hho-1"
|
|
38
|
+
})(["display:flex;position:absolute;top:0;right:", ";left:", ";align-items:center;justify-content:center;width:", "px;height:", ";", "{transform:", ";transition:transform 0.25s ease-in-out;}", ";"], props => props.theme.rtl ? 'auto' : 0, props => props.theme.rtl && 0, props => props.theme.space.base * 7, getSubNavItemHeight, StyledSubNavItemIcon, props => props.isExpanded && `rotate(${props.theme.rtl ? '-' : ''}180deg)`, props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
39
|
+
StyledSubNavItemIconWrapper.defaultProps = {
|
|
40
|
+
theme: DEFAULT_THEME
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { StyledSubNavItemIcon, StyledSubNavItemIconWrapper };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { math } from 'polished';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME, getLineHeight } from '@zendeskgarden/react-theming';
|
|
10
|
+
import { getSubNavItemHeight } from './StyledSubNavItem.js';
|
|
11
|
+
|
|
12
|
+
const COMPONENT_ID = 'chrome.subnav_item_text';
|
|
13
|
+
const sizeStyles = props => {
|
|
14
|
+
const baseLineHeight = props.theme.space.base * 5;
|
|
15
|
+
const verticalMargin = math(`(${getSubNavItemHeight(props)} - ${baseLineHeight}) / 2`);
|
|
16
|
+
const lineHeight = getLineHeight(baseLineHeight, props.theme.fontSizes.md);
|
|
17
|
+
return css(["margin:", " 0;line-height:", ";"], verticalMargin, lineHeight);
|
|
18
|
+
};
|
|
19
|
+
const StyledSubNavItemText = styled.span.attrs({
|
|
20
|
+
'data-garden-id': COMPONENT_ID,
|
|
21
|
+
'data-garden-version': '8.76.0'
|
|
22
|
+
}).withConfig({
|
|
23
|
+
displayName: "StyledSubNavItemText",
|
|
24
|
+
componentId: "sc-1hy0pn7-0"
|
|
25
|
+
})(["overflow:hidden;text-overflow:ellipsis;white-space:", ";", " ", ";"], props => props.isWrapped ? 'normal' : 'nowrap', props => sizeStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
26
|
+
StyledSubNavItemText.defaultProps = {
|
|
27
|
+
theme: DEFAULT_THEME
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { StyledSubNavItemText };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledSubNavItem } from './StyledSubNavItem.js';
|
|
10
|
+
|
|
11
|
+
const PANEL_COMPONENT_ID = 'chrome.collapsible_sub_nav_item_panel';
|
|
12
|
+
const hiddenStyling = css(["visibility:hidden;max-height:0 !important;overflow:hidden;"]);
|
|
13
|
+
const StyledSubNavPanel = styled.div.attrs({
|
|
14
|
+
'data-garden-id': PANEL_COMPONENT_ID,
|
|
15
|
+
'data-garden-version': '8.76.0'
|
|
16
|
+
}).withConfig({
|
|
17
|
+
displayName: "StyledSubNavPanel",
|
|
18
|
+
componentId: "sc-1jv3rpv-0"
|
|
19
|
+
})(["transition:max-height 0.25s cubic-bezier(0.15,0.85,0.35,1.2),0.25s visibility 0s linear;height:auto;max-height:100%;", " ", "{padding-", ":", ";}", ";"], props => props.isHidden && hiddenStyling, StyledSubNavItem, props => props.theme.rtl ? 'right' : 'left', props => `${props.theme.space.base * 5}px`, props => retrieveComponentStyles(PANEL_COMPONENT_ID, props));
|
|
20
|
+
StyledSubNavPanel.defaultProps = {
|
|
21
|
+
theme: DEFAULT_THEME
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { StyledSubNavPanel };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
const PLACEMENT = ['end', 'start'];
|
|
8
|
+
const PRODUCT = ['chat', 'connect', 'explore', 'guide', 'message', 'support', 'talk'];
|
|
9
|
+
|
|
10
|
+
export { PLACEMENT, PRODUCT };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const BodyContext = React__default.createContext({
|
|
10
|
+
hasFooter: true
|
|
11
|
+
});
|
|
12
|
+
const useBodyContext = () => {
|
|
13
|
+
return useContext(BodyContext);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { BodyContext, useBodyContext };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const ChromeContext = React__default.createContext({
|
|
10
|
+
hue: 'chromeHue'
|
|
11
|
+
});
|
|
12
|
+
const useChromeContext = () => {
|
|
13
|
+
return useContext(ChromeContext);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { ChromeContext, useChromeContext };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import { useRef, useEffect } from 'react';
|
|
8
|
+
import activeElement from 'dom-helpers/activeElement';
|
|
9
|
+
|
|
10
|
+
function useFocusableMount(_ref) {
|
|
11
|
+
let {
|
|
12
|
+
isMounted,
|
|
13
|
+
focusOnMount,
|
|
14
|
+
restoreFocus,
|
|
15
|
+
targetRef
|
|
16
|
+
} = _ref;
|
|
17
|
+
const triggerRef = useRef();
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (isMounted && focusOnMount && targetRef.current) {
|
|
20
|
+
triggerRef.current = activeElement();
|
|
21
|
+
targetRef.current.focus();
|
|
22
|
+
}
|
|
23
|
+
}, [isMounted, focusOnMount, targetRef]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (!isMounted && restoreFocus && triggerRef.current) {
|
|
26
|
+
triggerRef.current.focus();
|
|
27
|
+
}
|
|
28
|
+
}, [isMounted, restoreFocus, triggerRef]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { useFocusableMount };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const NavContext = React__default.createContext({
|
|
10
|
+
isExpanded: false
|
|
11
|
+
});
|
|
12
|
+
const useNavContext = () => {
|
|
13
|
+
return useContext(NavContext);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { NavContext, useNavContext };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import { createContext, useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const SheetContext = createContext({
|
|
10
|
+
setIsCloseButtonPresent() {}
|
|
11
|
+
});
|
|
12
|
+
const useSheetContext = () => {
|
|
13
|
+
return useContext(SheetContext);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { SheetContext, useSheetContext };
|