@zendeskgarden/react-chrome 8.75.0 → 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.
Files changed (80) hide show
  1. package/dist/esm/elements/Chrome.js +99 -0
  2. package/dist/esm/elements/SkipNav.js +70 -0
  3. package/dist/esm/elements/body/Body.js +68 -0
  4. package/dist/esm/elements/body/Content.js +59 -0
  5. package/dist/esm/elements/body/Main.js +52 -0
  6. package/dist/esm/elements/body/Sidebar.js +52 -0
  7. package/dist/esm/elements/footer/Footer.js +52 -0
  8. package/dist/esm/elements/footer/FooterItem.js +52 -0
  9. package/dist/esm/elements/header/Header.js +56 -0
  10. package/dist/esm/elements/header/HeaderItem.js +74 -0
  11. package/dist/esm/elements/header/HeaderItemIcon.js +71 -0
  12. package/dist/esm/elements/header/HeaderItemText.js +56 -0
  13. package/dist/esm/elements/header/HeaderItemWrapper.js +52 -0
  14. package/dist/esm/elements/nav/Nav.js +74 -0
  15. package/dist/esm/elements/nav/NavItem.js +98 -0
  16. package/dist/esm/elements/nav/NavItemIcon.js +71 -0
  17. package/dist/esm/elements/nav/NavItemText.js +63 -0
  18. package/dist/esm/elements/sheet/Sheet.js +133 -0
  19. package/dist/esm/elements/sheet/components/Body.js +55 -0
  20. package/dist/esm/elements/sheet/components/Close.js +65 -0
  21. package/dist/esm/elements/sheet/components/Description.js +64 -0
  22. package/dist/esm/elements/sheet/components/Footer.js +55 -0
  23. package/dist/esm/elements/sheet/components/FooterItem.js +55 -0
  24. package/dist/esm/elements/sheet/components/Header.js +60 -0
  25. package/dist/esm/elements/sheet/components/Title.js +64 -0
  26. package/dist/esm/elements/subnav/CollapsibleSubNavItem.js +120 -0
  27. package/dist/esm/elements/subnav/SubNav.js +63 -0
  28. package/dist/esm/elements/subnav/SubNavItem.js +65 -0
  29. package/dist/esm/elements/subnav/SubNavItemText.js +56 -0
  30. package/dist/esm/index.js +29 -0
  31. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/chevron-down-stroke.svg.js +25 -0
  32. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/link-stroke.svg.js +25 -0
  33. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/x-stroke.svg.js +26 -0
  34. package/dist/esm/styled/StyledChrome.js +22 -0
  35. package/dist/esm/styled/StyledSkipNav.js +46 -0
  36. package/dist/esm/styled/StyledSkipNavIcon.js +28 -0
  37. package/dist/esm/styled/body/StyledBody.js +22 -0
  38. package/dist/esm/styled/body/StyledContent.js +25 -0
  39. package/dist/esm/styled/body/StyledMain.js +22 -0
  40. package/dist/esm/styled/body/StyledSidebar.js +22 -0
  41. package/dist/esm/styled/footer/StyledFooter.js +25 -0
  42. package/dist/esm/styled/footer/StyledFooterItem.js +22 -0
  43. package/dist/esm/styled/header/StyledBaseHeaderItem.js +35 -0
  44. package/dist/esm/styled/header/StyledHeader.js +31 -0
  45. package/dist/esm/styled/header/StyledHeaderItem.js +37 -0
  46. package/dist/esm/styled/header/StyledHeaderItemIcon.js +22 -0
  47. package/dist/esm/styled/header/StyledHeaderItemText.js +23 -0
  48. package/dist/esm/styled/header/StyledHeaderItemWrapper.js +24 -0
  49. package/dist/esm/styled/header/StyledLogoHeaderItem.js +47 -0
  50. package/dist/esm/styled/nav/StyledBaseNavItem.js +32 -0
  51. package/dist/esm/styled/nav/StyledBrandmarkNavItem.js +24 -0
  52. package/dist/esm/styled/nav/StyledLogoNavItem.js +49 -0
  53. package/dist/esm/styled/nav/StyledNav.js +34 -0
  54. package/dist/esm/styled/nav/StyledNavItem.js +65 -0
  55. package/dist/esm/styled/nav/StyledNavItemIcon.js +22 -0
  56. package/dist/esm/styled/nav/StyledNavItemText.js +34 -0
  57. package/dist/esm/styled/sheet/StyledSheet.js +41 -0
  58. package/dist/esm/styled/sheet/StyledSheetBody.js +22 -0
  59. package/dist/esm/styled/sheet/StyledSheetClose.js +34 -0
  60. package/dist/esm/styled/sheet/StyledSheetDescription.js +22 -0
  61. package/dist/esm/styled/sheet/StyledSheetFooter.js +22 -0
  62. package/dist/esm/styled/sheet/StyledSheetFooterItem.js +22 -0
  63. package/dist/esm/styled/sheet/StyledSheetHeader.js +23 -0
  64. package/dist/esm/styled/sheet/StyledSheetTitle.js +22 -0
  65. package/dist/esm/styled/sheet/StyledSheetWrapper.js +37 -0
  66. package/dist/esm/styled/subnav/StyledSubNav.js +34 -0
  67. package/dist/esm/styled/subnav/StyledSubNavItem.js +55 -0
  68. package/dist/esm/styled/subnav/StyledSubNavItemHeader.js +24 -0
  69. package/dist/esm/styled/subnav/StyledSubNavItemIcon.js +43 -0
  70. package/dist/esm/styled/subnav/StyledSubNavItemText.js +30 -0
  71. package/dist/esm/styled/subnav/StyledSubNavPanel.js +24 -0
  72. package/dist/esm/types/index.js +10 -0
  73. package/dist/esm/utils/useBodyContext.js +16 -0
  74. package/dist/esm/utils/useChromeContext.js +16 -0
  75. package/dist/esm/utils/useFocusableMount.js +31 -0
  76. package/dist/esm/utils/useNavContext.js +16 -0
  77. package/dist/esm/utils/useSheetContext.js +16 -0
  78. package/dist/index.cjs.js +78 -94
  79. package/package.json +5 -5
  80. 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 };