@razorpay/blade 11.20.0 → 11.21.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 (151) hide show
  1. package/build/lib/native/components/Accordion/AccordionItem.js +1 -1
  2. package/build/lib/native/components/Accordion/AccordionItem.js.map +1 -1
  3. package/build/lib/native/components/Collapsible/Collapsible.js +1 -1
  4. package/build/lib/native/components/Collapsible/Collapsible.js.map +1 -1
  5. package/build/lib/native/components/Collapsible/CollapsibleBody.js +1 -1
  6. package/build/lib/native/components/Collapsible/CollapsibleBody.js.map +1 -1
  7. package/build/lib/native/components/Collapsible/CollapsibleBodyContent.native.js +1 -1
  8. package/build/lib/native/components/Collapsible/CollapsibleBodyContent.native.js.map +1 -1
  9. package/build/lib/native/components/Collapsible/CollapsibleLink.js +8 -1
  10. package/build/lib/native/components/Collapsible/CollapsibleLink.js.map +1 -1
  11. package/build/lib/native/components/Collapsible/commonStyles.js +1 -1
  12. package/build/lib/native/components/Collapsible/commonStyles.js.map +1 -1
  13. package/build/lib/native/components/ProgressBar/CircularProgressBar.native.js +1 -1
  14. package/build/lib/native/components/ProgressBar/CircularProgressBar.native.js.map +1 -1
  15. package/build/lib/native/components/SideNav/SideNav.native.js +17 -0
  16. package/build/lib/native/components/SideNav/SideNav.native.js.map +1 -0
  17. package/build/lib/native/components/SideNav/SideNavBody.native.js +17 -0
  18. package/build/lib/native/components/SideNav/SideNavBody.native.js.map +1 -0
  19. package/build/lib/native/components/SideNav/SideNavFooter.native.js +17 -0
  20. package/build/lib/native/components/SideNav/SideNavFooter.native.js.map +1 -0
  21. package/build/lib/native/components/SideNav/SideNavItems/SideNavItem.native.js +17 -0
  22. package/build/lib/native/components/SideNav/SideNavItems/SideNavItem.native.js.map +1 -0
  23. package/build/lib/native/components/SideNav/SideNavItems/SideNavLink.native.js +17 -0
  24. package/build/lib/native/components/SideNav/SideNavItems/SideNavLink.native.js.map +1 -0
  25. package/build/lib/native/components/SideNav/SideNavLevel.native.js +17 -0
  26. package/build/lib/native/components/SideNav/SideNavLevel.native.js.map +1 -0
  27. package/build/lib/native/components/SideNav/SideNavSection.native.js +17 -0
  28. package/build/lib/native/components/SideNav/SideNavSection.native.js.map +1 -0
  29. package/build/lib/native/components/Typography/BaseText/getBaseTextStyles.js +1 -1
  30. package/build/lib/native/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  31. package/build/lib/native/components/index.js +7 -0
  32. package/build/lib/native/components/index.js.map +1 -1
  33. package/build/lib/native/tokens/global/size.js +1 -1
  34. package/build/lib/native/tokens/global/size.js.map +1 -1
  35. package/build/lib/native/utils/metaAttribute/metaConstants.js +1 -1
  36. package/build/lib/native/utils/metaAttribute/metaConstants.js.map +1 -1
  37. package/build/lib/web/development/components/Accordion/AccordionItem.js +1 -0
  38. package/build/lib/web/development/components/Accordion/AccordionItem.js.map +1 -1
  39. package/build/lib/web/development/components/Collapsible/Collapsible.js +4 -2
  40. package/build/lib/web/development/components/Collapsible/Collapsible.js.map +1 -1
  41. package/build/lib/web/development/components/Collapsible/CollapsibleBody.js +4 -1
  42. package/build/lib/web/development/components/Collapsible/CollapsibleBody.js.map +1 -1
  43. package/build/lib/web/development/components/Collapsible/CollapsibleBodyContent.web.js +4 -2
  44. package/build/lib/web/development/components/Collapsible/CollapsibleBodyContent.web.js.map +1 -1
  45. package/build/lib/web/development/components/Collapsible/CollapsibleLink.js +16 -4
  46. package/build/lib/web/development/components/Collapsible/CollapsibleLink.js.map +1 -1
  47. package/build/lib/web/development/components/Collapsible/commonStyles.js +5 -1
  48. package/build/lib/web/development/components/Collapsible/commonStyles.js.map +1 -1
  49. package/build/lib/web/development/components/Drawer/Drawer.web.js +25 -10
  50. package/build/lib/web/development/components/Drawer/Drawer.web.js.map +1 -1
  51. package/build/lib/web/development/components/Drawer/DrawerContext.js +3 -1
  52. package/build/lib/web/development/components/Drawer/DrawerContext.js.map +1 -1
  53. package/build/lib/web/development/components/Drawer/DrawerSubcomponents.web.js +26 -4
  54. package/build/lib/web/development/components/Drawer/DrawerSubcomponents.web.js.map +1 -1
  55. package/build/lib/web/development/components/Drawer/StackProvider.js +21 -12
  56. package/build/lib/web/development/components/Drawer/StackProvider.js.map +1 -1
  57. package/build/lib/web/development/components/Drawer/index.js +1 -1
  58. package/build/lib/web/development/components/FileUpload/FileUpload.web.js +3 -0
  59. package/build/lib/web/development/components/FileUpload/FileUpload.web.js.map +1 -1
  60. package/build/lib/web/development/components/SideNav/SideNav.web.js +360 -0
  61. package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -0
  62. package/build/lib/web/development/components/SideNav/SideNavBody.web.js +17 -0
  63. package/build/lib/web/development/components/SideNav/SideNavBody.web.js.map +1 -0
  64. package/build/lib/web/development/components/SideNav/SideNavContext.js +23 -0
  65. package/build/lib/web/development/components/SideNav/SideNavContext.js.map +1 -0
  66. package/build/lib/web/development/components/SideNav/SideNavFooter.web.js +55 -0
  67. package/build/lib/web/development/components/SideNav/SideNavFooter.web.js.map +1 -0
  68. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavItem.web.js +66 -0
  69. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavItem.web.js.map +1 -0
  70. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +348 -0
  71. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -0
  72. package/build/lib/web/development/components/SideNav/SideNavItems/TooltipifyNavItem.js +22 -0
  73. package/build/lib/web/development/components/SideNav/SideNavItems/TooltipifyNavItem.js.map +1 -0
  74. package/build/lib/web/development/components/SideNav/SideNavLevel.web.js +65 -0
  75. package/build/lib/web/development/components/SideNav/SideNavLevel.web.js.map +1 -0
  76. package/build/lib/web/development/components/SideNav/SideNavSection.web.js +141 -0
  77. package/build/lib/web/development/components/SideNav/SideNavSection.web.js.map +1 -0
  78. package/build/lib/web/development/components/SideNav/index.js +8 -0
  79. package/build/lib/web/development/components/SideNav/index.js.map +1 -0
  80. package/build/lib/web/development/components/SideNav/tokens.js +33 -0
  81. package/build/lib/web/development/components/SideNav/tokens.js.map +1 -0
  82. package/build/lib/web/development/components/SkipNav/SkipNav.web.js +11 -3
  83. package/build/lib/web/development/components/SkipNav/SkipNav.web.js.map +1 -1
  84. package/build/lib/web/development/components/Typography/BaseText/getBaseTextStyles.js +1 -1
  85. package/build/lib/web/development/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  86. package/build/lib/web/development/components/index.js +9 -1
  87. package/build/lib/web/development/components/index.js.map +1 -1
  88. package/build/lib/web/development/tokens/global/size.js +6 -0
  89. package/build/lib/web/development/tokens/global/size.js.map +1 -1
  90. package/build/lib/web/development/utils/metaAttribute/metaConstants.js +1 -0
  91. package/build/lib/web/development/utils/metaAttribute/metaConstants.js.map +1 -1
  92. package/build/lib/web/production/components/Accordion/AccordionItem.js +1 -0
  93. package/build/lib/web/production/components/Accordion/AccordionItem.js.map +1 -1
  94. package/build/lib/web/production/components/Collapsible/Collapsible.js +4 -2
  95. package/build/lib/web/production/components/Collapsible/Collapsible.js.map +1 -1
  96. package/build/lib/web/production/components/Collapsible/CollapsibleBody.js +4 -1
  97. package/build/lib/web/production/components/Collapsible/CollapsibleBody.js.map +1 -1
  98. package/build/lib/web/production/components/Collapsible/CollapsibleBodyContent.web.js +4 -2
  99. package/build/lib/web/production/components/Collapsible/CollapsibleBodyContent.web.js.map +1 -1
  100. package/build/lib/web/production/components/Collapsible/CollapsibleLink.js +16 -4
  101. package/build/lib/web/production/components/Collapsible/CollapsibleLink.js.map +1 -1
  102. package/build/lib/web/production/components/Collapsible/commonStyles.js +5 -1
  103. package/build/lib/web/production/components/Collapsible/commonStyles.js.map +1 -1
  104. package/build/lib/web/production/components/Drawer/Drawer.web.js +25 -10
  105. package/build/lib/web/production/components/Drawer/Drawer.web.js.map +1 -1
  106. package/build/lib/web/production/components/Drawer/DrawerContext.js +3 -1
  107. package/build/lib/web/production/components/Drawer/DrawerContext.js.map +1 -1
  108. package/build/lib/web/production/components/Drawer/DrawerSubcomponents.web.js +26 -4
  109. package/build/lib/web/production/components/Drawer/DrawerSubcomponents.web.js.map +1 -1
  110. package/build/lib/web/production/components/Drawer/StackProvider.js +21 -12
  111. package/build/lib/web/production/components/Drawer/StackProvider.js.map +1 -1
  112. package/build/lib/web/production/components/Drawer/index.js +1 -1
  113. package/build/lib/web/production/components/FileUpload/FileUpload.web.js +3 -0
  114. package/build/lib/web/production/components/FileUpload/FileUpload.web.js.map +1 -1
  115. package/build/lib/web/production/components/SideNav/SideNav.web.js +360 -0
  116. package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -0
  117. package/build/lib/web/production/components/SideNav/SideNavBody.web.js +17 -0
  118. package/build/lib/web/production/components/SideNav/SideNavBody.web.js.map +1 -0
  119. package/build/lib/web/production/components/SideNav/SideNavContext.js +23 -0
  120. package/build/lib/web/production/components/SideNav/SideNavContext.js.map +1 -0
  121. package/build/lib/web/production/components/SideNav/SideNavFooter.web.js +55 -0
  122. package/build/lib/web/production/components/SideNav/SideNavFooter.web.js.map +1 -0
  123. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavItem.web.js +66 -0
  124. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavItem.web.js.map +1 -0
  125. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +348 -0
  126. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -0
  127. package/build/lib/web/production/components/SideNav/SideNavItems/TooltipifyNavItem.js +22 -0
  128. package/build/lib/web/production/components/SideNav/SideNavItems/TooltipifyNavItem.js.map +1 -0
  129. package/build/lib/web/production/components/SideNav/SideNavLevel.web.js +65 -0
  130. package/build/lib/web/production/components/SideNav/SideNavLevel.web.js.map +1 -0
  131. package/build/lib/web/production/components/SideNav/SideNavSection.web.js +141 -0
  132. package/build/lib/web/production/components/SideNav/SideNavSection.web.js.map +1 -0
  133. package/build/lib/web/production/components/SideNav/index.js +8 -0
  134. package/build/lib/web/production/components/SideNav/index.js.map +1 -0
  135. package/build/lib/web/production/components/SideNav/tokens.js +33 -0
  136. package/build/lib/web/production/components/SideNav/tokens.js.map +1 -0
  137. package/build/lib/web/production/components/SkipNav/SkipNav.web.js +11 -3
  138. package/build/lib/web/production/components/SkipNav/SkipNav.web.js.map +1 -1
  139. package/build/lib/web/production/components/Typography/BaseText/getBaseTextStyles.js +1 -1
  140. package/build/lib/web/production/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  141. package/build/lib/web/production/components/index.js +9 -1
  142. package/build/lib/web/production/components/index.js.map +1 -1
  143. package/build/lib/web/production/tokens/global/size.js +6 -0
  144. package/build/lib/web/production/tokens/global/size.js.map +1 -1
  145. package/build/lib/web/production/utils/metaAttribute/metaConstants.js +1 -0
  146. package/build/lib/web/production/utils/metaAttribute/metaConstants.js.map +1 -1
  147. package/build/types/components/index.d.ts +1455 -1227
  148. package/build/types/components/index.native.d.ts +245 -36
  149. package/build/types/tokens/index.d.ts +6 -0
  150. package/build/types/tokens/index.native.d.ts +6 -0
  151. package/package.json +1 -1
@@ -0,0 +1,360 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
+ import React__default from 'react';
5
+ import styled from 'styled-components';
6
+ import { SideNavContext } from './SideNavContext.js';
7
+ import { classes, COLLAPSED_L1_WIDTH, TRANSITION_CLEANUP_DELAY, HOVER_AGAIN_DELAY, EXPANDED_L1_WIDTH, L1_EXIT_HOVER_DELAY, SKIP_NAV_ID } from './tokens.js';
8
+ import '../Box/BaseBox/index.js';
9
+ import '../../utils/index.js';
10
+ import '../Drawer/index.js';
11
+ import { SkipNavLink, SkipNavContent } from '../SkipNav/SkipNav.web.js';
12
+ import { useIsMobile } from '../../utils/useIsMobile.js';
13
+ import '../Box/styledProps/index.js';
14
+ import '../../utils/metaAttribute/index.js';
15
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
16
+ import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
17
+ import { makeMotionTime } from '../../utils/makeMotionTime/makeMotionTime.web.js';
18
+ import { makeSpace } from '../../utils/makeSpace/makeSpace.js';
19
+ import { makeSize } from '../../utils/makeSize/makeSize.js';
20
+ import { Drawer } from '../Drawer/Drawer.web.js';
21
+ import { DrawerHeader, DrawerBody } from '../Drawer/DrawerSubcomponents.web.js';
22
+ import { metaAttribute } from '../../utils/metaAttribute/metaAttribute.web.js';
23
+ import { MetaConstants } from '../../utils/metaAttribute/metaConstants.js';
24
+ import { getStyledProps } from '../Box/styledProps/getStyledProps.js';
25
+
26
+ var _excluded = ["children", "isOpen", "onDismiss", "banner", "testID"];
27
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
30
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
32
+ var COLLAPSED = classes.COLLAPSED,
33
+ SHOW_WHEN_COLLAPSED = classes.SHOW_WHEN_COLLAPSED,
34
+ HIDE_WHEN_COLLAPSED = classes.HIDE_WHEN_COLLAPSED,
35
+ TRANSITIONING = classes.TRANSITIONING,
36
+ L1_ITEM_WRAPPER = classes.L1_ITEM_WRAPPER;
37
+ var MobileL1Container = /*#__PURE__*/styled(BaseBox).withConfig({
38
+ displayName: "SideNavweb__MobileL1Container",
39
+ componentId: "sc-1obm5ij-0"
40
+ })(function () {
41
+ return _defineProperty({}, ".".concat(SHOW_WHEN_COLLAPSED), {
42
+ display: 'none'
43
+ });
44
+ });
45
+ var StyledL1Menu = /*#__PURE__*/styled(BaseBox).withConfig({
46
+ displayName: "SideNavweb__StyledL1Menu",
47
+ componentId: "sc-1obm5ij-1"
48
+ })(function (props) {
49
+ var moderate = makeMotionTime(props.theme.motion.duration.moderate);
50
+ var gentle = makeMotionTime(props.theme.motion.duration.gentle);
51
+ var easing = props.theme.motion.easing;
52
+ var l1Expand = "width ".concat(gentle, " ").concat(easing.entrance.revealing);
53
+ var l1Collapse = "width ".concat(moderate, " ").concat(easing.exit.revealing);
54
+ return _defineProperty(_defineProperty(_defineProperty({
55
+ width: '100%',
56
+ transition: l1Expand
57
+ }, "& > .".concat(L1_ITEM_WRAPPER), {
58
+ padding: makeSpace(props.theme.spacing[3])
59
+ }), ".".concat(SHOW_WHEN_COLLAPSED), {
60
+ display: 'none'
61
+ }), "&.".concat(COLLAPSED), _defineProperty(_defineProperty(_defineProperty({
62
+ width: makeSize(COLLAPSED_L1_WIDTH),
63
+ transition: l1Collapse
64
+ }, "& > .".concat(L1_ITEM_WRAPPER), {
65
+ padding: "".concat(makeSpace(props.theme.spacing[3]), " ").concat(makeSpace(props.theme.spacing[3]))
66
+ }), "&:not(.".concat(TRANSITIONING, ") .").concat(HIDE_WHEN_COLLAPSED), {
67
+ display: 'none'
68
+ }), "&:not(.".concat(TRANSITIONING, ") .").concat(SHOW_WHEN_COLLAPSED), {
69
+ display: 'initial'
70
+ }));
71
+ });
72
+ var getL1MenuClassName = function getL1MenuClassName(_ref3) {
73
+ var isL1Collapsed = _ref3.isL1Collapsed,
74
+ isL1Hovered = _ref3.isL1Hovered,
75
+ isTransitioning = _ref3.isTransitioning;
76
+ var isMenuCollapsed = isL1Collapsed && !isL1Hovered;
77
+ if (isMenuCollapsed) {
78
+ if (isTransitioning) {
79
+ return "".concat(COLLAPSED, " ").concat(TRANSITIONING);
80
+ }
81
+ return COLLAPSED;
82
+ }
83
+ return '';
84
+ };
85
+
86
+ /**
87
+ * ### SideNav component
88
+ *
89
+ * The side navigation is positioned along the left side of the screen that provides quick access to different sections or functionalities of the application.
90
+ *
91
+ * ---
92
+ *
93
+ * #### Usage
94
+ *
95
+ * SideNav requires handling active state with React Router, Checkout Usage with React Router v6 at - [SideNav Documentation](https://blade.razorpay.com/?path=/docs/components-sidenav--docs)
96
+ *
97
+ */
98
+ var SideNav = function SideNav(_ref4) {
99
+ var children = _ref4.children,
100
+ isOpen = _ref4.isOpen,
101
+ onDismiss = _ref4.onDismiss,
102
+ banner = _ref4.banner,
103
+ testID = _ref4.testID,
104
+ styledProps = _objectWithoutProperties(_ref4, _excluded);
105
+ var l2PortalContainerRef = React__default.useRef(null);
106
+ var l1ContainerRef = React__default.useRef(null);
107
+ var timeoutIdsRef = React__default.useRef([]);
108
+ var mouseOverTimeoutRef = React__default.useRef();
109
+ var _React$useState = React__default.useState(false),
110
+ _React$useState2 = _slicedToArray(_React$useState, 2),
111
+ isL1Collapsed = _React$useState2[0],
112
+ setIsL1Collapsed = _React$useState2[1];
113
+ var _React$useState3 = React__default.useState(false),
114
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
115
+ isMobileL2Open = _React$useState4[0],
116
+ setIsMobileL2Open = _React$useState4[1];
117
+ var _React$useState5 = React__default.useState(false),
118
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
119
+ isL1Hovered = _React$useState6[0],
120
+ setIsL1Hovered = _React$useState6[1];
121
+ var _React$useState7 = React__default.useState(true),
122
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
123
+ isHoverAgainEnabled = _React$useState8[0],
124
+ setIsHoverAgainEnabled = _React$useState8[1];
125
+ var _React$useState9 = React__default.useState(false),
126
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
127
+ isTransitioning = _React$useState10[0],
128
+ setIsTransitioning = _React$useState10[1];
129
+ var _React$useState11 = React__default.useState(''),
130
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
131
+ l2DrawerTitle = _React$useState12[0],
132
+ setL2DrawerTitle = _React$useState12[1];
133
+ var isMobile = useIsMobile();
134
+ var closeMobileNav = function closeMobileNav() {
135
+ if (isMobile) {
136
+ setIsMobileL2Open(false);
137
+ onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
138
+ }
139
+ };
140
+ var cleanupTransition = function cleanupTransition() {
141
+ var clearTransitionTimeout = setTimeout(function () {
142
+ if (isTransitioning) {
143
+ setIsTransitioning(false);
144
+ }
145
+ }, TRANSITION_CLEANUP_DELAY);
146
+ timeoutIdsRef.current.push(clearTransitionTimeout);
147
+ };
148
+
149
+ /**
150
+ * Handles L1 -> L2 menu changes based on active item
151
+ */
152
+ var onLinkActiveChange = function onLinkActiveChange(args) {
153
+ var isL1ItemActive = args.level === 1 && args.isActive;
154
+ if (isL1ItemActive) {
155
+ if (args.isL2Trigger) {
156
+ // Click on L2 Trigger
157
+ if (isMobile) {
158
+ setL2DrawerTitle(args.title);
159
+ setIsMobileL2Open(true);
160
+ return;
161
+ }
162
+ setIsL1Collapsed(true);
163
+
164
+ // `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change
165
+ if (!args.isFirstRender) {
166
+ setIsTransitioning(true);
167
+ cleanupTransition();
168
+ setIsL1Hovered(false);
169
+ setIsHoverAgainEnabled(false);
170
+ // For some delay, we disable hover to expand behaviour to avoid buggy flicker when cursor is on L1 while its trying to close
171
+ var hoverAgainTimeout = setTimeout(function () {
172
+ setIsHoverAgainEnabled(true);
173
+ }, HOVER_AGAIN_DELAY);
174
+ timeoutIdsRef.current.push(hoverAgainTimeout);
175
+ }
176
+ } else {
177
+ // Click on normal L1 Item
178
+ // eslint-disable-next-line no-lonely-if
179
+ if (isMobile) {
180
+ setIsMobileL2Open(false);
181
+ }
182
+ // Ensures that if Normal L1 item is clicked, the L1 stays expanded
183
+ setIsL1Collapsed(false);
184
+ }
185
+ }
186
+ };
187
+ var contextValue = React__default.useMemo(function () {
188
+ return {
189
+ l2PortalContainerRef: l2PortalContainerRef,
190
+ onLinkActiveChange: onLinkActiveChange,
191
+ closeMobileNav: closeMobileNav,
192
+ isL1Collapsed: isMobile ? isMobileL2Open : isL1Collapsed,
193
+ setIsL1Collapsed: setIsL1Collapsed
194
+ };
195
+ },
196
+ // eslint-disable-next-line react-hooks/exhaustive-deps
197
+ [isL1Collapsed, isMobile, isMobileL2Open]);
198
+ React__default.useEffect(function () {
199
+ return function () {
200
+ var _iterator = _createForOfIteratorHelper(timeoutIdsRef.current),
201
+ _step;
202
+ try {
203
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
204
+ var timeoutId = _step.value;
205
+ clearTimeout(timeoutId);
206
+ }
207
+ } catch (err) {
208
+ _iterator.e(err);
209
+ } finally {
210
+ _iterator.f();
211
+ }
212
+ timeoutIdsRef.current = [];
213
+ };
214
+ }, []);
215
+ return /*#__PURE__*/jsx(SideNavContext.Provider, {
216
+ value: contextValue,
217
+ children: isMobile && onDismiss ? /*#__PURE__*/jsxs(Fragment, {
218
+ children: [/*#__PURE__*/jsxs(Drawer, {
219
+ isOpen: isOpen !== null && isOpen !== void 0 ? isOpen : false,
220
+ onDismiss: onDismiss,
221
+ children: [/*#__PURE__*/jsx(DrawerHeader, {
222
+ title: "Main Menu"
223
+ }), /*#__PURE__*/jsx(DrawerBody, {
224
+ children: /*#__PURE__*/jsx(MobileL1Container, _objectSpread(_objectSpread({
225
+ display: "flex",
226
+ flexDirection: "column",
227
+ justifyContent: "space-between",
228
+ className: "mobile-l1-container",
229
+ height: "100%"
230
+ }, metaAttribute({
231
+ name: MetaConstants.SideNav,
232
+ testID: testID
233
+ })), {}, {
234
+ children: children
235
+ }))
236
+ })]
237
+ }), /*#__PURE__*/jsxs(Drawer, {
238
+ isOpen: isMobileL2Open,
239
+ onDismiss: function onDismiss() {
240
+ return setIsMobileL2Open(false);
241
+ },
242
+ isLazy: false,
243
+ children: [/*#__PURE__*/jsx(DrawerHeader, {
244
+ title: l2DrawerTitle
245
+ }), /*#__PURE__*/jsx(DrawerBody, {
246
+ children: /*#__PURE__*/jsx(BaseBox, {
247
+ ref: l2PortalContainerRef
248
+ })
249
+ })]
250
+ })]
251
+ }) : /*#__PURE__*/jsxs(BaseBox, _objectSpread(_objectSpread(_objectSpread({
252
+ position: "fixed",
253
+ backgroundColor: "surface.background.gray.moderate",
254
+ height: "100%",
255
+ top: "spacing.0",
256
+ left: "spacing.0",
257
+ display: {
258
+ base: 'none',
259
+ m: 'flex'
260
+ },
261
+ flexDirection: "column",
262
+ width: makeSize(EXPANDED_L1_WIDTH),
263
+ as: "nav"
264
+ }, metaAttribute({
265
+ name: MetaConstants.SideNav,
266
+ testID: testID
267
+ })), getStyledProps(styledProps)), {}, {
268
+ children: [banner ? /*#__PURE__*/jsx(BaseBox, {
269
+ borderBottom: "thin",
270
+ borderBottomColor: "surface.border.gray.muted",
271
+ borderRight: "thin",
272
+ borderRightColor: "surface.border.gray.muted",
273
+ padding: "spacing.3",
274
+ maxHeight: "100px",
275
+ width: "100%",
276
+ children: banner
277
+ }) : null, /*#__PURE__*/jsxs(BaseBox, {
278
+ position: "relative",
279
+ display: "block",
280
+ flex: "1",
281
+ width: "100%",
282
+ children: [/*#__PURE__*/jsx(BaseBox, {
283
+ position: "absolute",
284
+ backgroundColor: "surface.background.gray.moderate",
285
+ height: "100%",
286
+ width: "100%",
287
+ top: "spacing.0",
288
+ left: "spacing.0",
289
+ id: "blade-sidenav-l2",
290
+ borderRightWidth: "thin",
291
+ borderRightColor: "surface.border.gray.muted",
292
+ ref: l2PortalContainerRef
293
+ }), /*#__PURE__*/jsxs(StyledL1Menu, {
294
+ ref: l1ContainerRef,
295
+ id: "blade-sidenav-l1",
296
+ className: getL1MenuClassName({
297
+ isL1Collapsed: isL1Collapsed,
298
+ isL1Hovered: isL1Hovered,
299
+ isTransitioning: isTransitioning
300
+ }),
301
+ position: "absolute",
302
+ display: "flex",
303
+ flexDirection: "column",
304
+ justifyContent: "space-between",
305
+ backgroundColor: "surface.background.gray.moderate",
306
+ height: "100%",
307
+ overflow: "hidden",
308
+ top: "spacing.0",
309
+ left: "spacing.0",
310
+ borderRightWidth: "thin",
311
+ borderRightColor: "surface.border.gray.muted",
312
+ onTransitionEnd: function onTransitionEnd(e) {
313
+ // This check ensures transitioning is set to false only when its true
314
+ // And only the l1Container element's transitions are considered and other transitions of l1 expand or child elements are ignored
315
+ if (isTransitioning && l1ContainerRef.current === e.target) {
316
+ setIsTransitioning(false);
317
+ }
318
+ }
319
+ // Hmm you might be wondering, why is `onMouseOver` paired with `onMouseLeave`? A sane person would pair `onMouseOver` with `onMouseOut`, and `onMouseEnter` with `onMouseLeave`
320
+ // since they are logical equivalents of each other. So why don't we do that? Hold tight, you're in for a ride ☕️.
321
+ //
322
+ // 1. In an ideal scenario, we would put `onMouseEnter` and `onMouseLeave` here and expect things to work.
323
+ // 2. The L2 menu of our SideNav is React Portalled out of the L1 child
324
+ // 3. React considers its own children as true children for JS events and not DOM children (Checkout React Portal Caveats - https://react.dev/reference/react-dom/createPortal#caveats)
325
+ // 3. In the next ideal scenario, we would put `e.stopPropagation` on child component of portal like React recommends, except mouseenter, mouseleave events don't propagate at all (https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event#usage_notes)
326
+ // 4. So `onMouseEnter` gets triggered on L2 enter. But we don't want to open L1 menu on L2 hover
327
+ // 5. Thus we use `onMouseOver` for hover part and call e.stopPropagation in portal child (SideNavLevel).
328
+ // 6. But in case of unhover/leave, we don't want to trigger mouseOut for all child components individually. We want 1 hover out of L1 menu. Thus we use `onMouseLeave`
329
+ ,
330
+ onMouseOver: function onMouseOver() {
331
+ if (mouseOverTimeoutRef.current) {
332
+ clearTimeout(mouseOverTimeoutRef.current);
333
+ }
334
+ if (isL1Collapsed && isHoverAgainEnabled) {
335
+ setIsL1Hovered(true);
336
+ }
337
+ },
338
+ onMouseLeave: function onMouseLeave() {
339
+ if (isL1Collapsed && isL1Hovered) {
340
+ mouseOverTimeoutRef.current = setTimeout(function () {
341
+ setIsL1Hovered(false);
342
+ setIsTransitioning(true);
343
+ cleanupTransition();
344
+ }, L1_EXIT_HOVER_DELAY);
345
+ }
346
+ },
347
+ children: [/*#__PURE__*/jsx(SkipNavLink, {
348
+ id: SKIP_NAV_ID,
349
+ _hasBackground: true
350
+ }), children]
351
+ }), /*#__PURE__*/jsx(SkipNavContent, {
352
+ id: SKIP_NAV_ID
353
+ })]
354
+ })]
355
+ }))
356
+ });
357
+ };
358
+
359
+ export { SideNav };
360
+ //# sourceMappingURL=SideNav.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNav.web.js","sources":["../../../../../../src/components/SideNav/SideNav.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { SideNavContext } from './SideNavContext';\nimport type { SideNavContextType, SideNavProps } from './types';\nimport {\n classes,\n COLLAPSED_L1_WIDTH,\n EXPANDED_L1_WIDTH,\n HOVER_AGAIN_DELAY,\n L1_EXIT_HOVER_DELAY,\n SKIP_NAV_ID,\n TRANSITION_CLEANUP_DELAY,\n} from './tokens';\nimport BaseBox from '~components/Box/BaseBox';\nimport { makeMotionTime, makeSize, makeSpace } from '~utils';\nimport { Drawer, DrawerBody, DrawerHeader } from '~components/Drawer';\nimport { SkipNavContent, SkipNavLink } from '~components/SkipNav/SkipNav';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\n\nconst {\n COLLAPSED,\n SHOW_WHEN_COLLAPSED,\n HIDE_WHEN_COLLAPSED,\n TRANSITIONING,\n L1_ITEM_WRAPPER,\n} = classes;\n\nconst MobileL1Container = styled(BaseBox)(() => {\n return {\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n };\n});\n\nconst StyledL1Menu = styled(BaseBox)((props) => {\n const moderate = makeMotionTime(props.theme.motion.duration.moderate);\n const gentle = makeMotionTime(props.theme.motion.duration.gentle);\n const easing = props.theme.motion.easing;\n\n const l1Expand = `width ${gentle} ${easing.entrance.revealing}`;\n const l1Collapse = `width ${moderate} ${easing.exit.revealing}`;\n\n return {\n width: '100%',\n transition: l1Expand,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: makeSpace(props.theme.spacing[3]),\n },\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&.${COLLAPSED}`]: {\n width: makeSize(COLLAPSED_L1_WIDTH),\n transition: l1Collapse,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: `${makeSpace(props.theme.spacing[3])} ${makeSpace(props.theme.spacing[3])}`,\n },\n [`&:not(.${TRANSITIONING}) .${HIDE_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&:not(.${TRANSITIONING}) .${SHOW_WHEN_COLLAPSED}`]: {\n display: 'initial',\n },\n },\n };\n});\n\nconst getL1MenuClassName = ({\n isL1Collapsed,\n isL1Hovered,\n isTransitioning,\n}: {\n isL1Collapsed: boolean;\n isL1Hovered: boolean;\n isTransitioning: boolean;\n}): string => {\n const isMenuCollapsed = isL1Collapsed && !isL1Hovered;\n\n if (isMenuCollapsed) {\n if (isTransitioning) {\n return `${COLLAPSED} ${TRANSITIONING}`;\n }\n\n return COLLAPSED;\n }\n\n return '';\n};\n\n/**\n * ### SideNav component\n *\n * The side navigation is positioned along the left side of the screen that provides quick access to different sections or functionalities of the application.\n *\n * ---\n *\n * #### Usage\n *\n * SideNav requires handling active state with React Router, Checkout Usage with React Router v6 at - [SideNav Documentation](https://blade.razorpay.com/?path=/docs/components-sidenav--docs)\n *\n */\nconst SideNav = ({\n children,\n isOpen,\n onDismiss,\n banner,\n testID,\n ...styledProps\n}: SideNavProps): React.ReactElement => {\n const l2PortalContainerRef = React.useRef(null);\n const l1ContainerRef = React.useRef<HTMLDivElement>(null);\n const timeoutIdsRef = React.useRef<NodeJS.Timeout[]>([]);\n const mouseOverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const [isL1Collapsed, setIsL1Collapsed] = React.useState(false);\n const [isMobileL2Open, setIsMobileL2Open] = React.useState(false);\n const [isL1Hovered, setIsL1Hovered] = React.useState(false);\n const [isHoverAgainEnabled, setIsHoverAgainEnabled] = React.useState(true);\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n const [l2DrawerTitle, setL2DrawerTitle] = React.useState('');\n\n const isMobile = useIsMobile();\n\n const closeMobileNav = (): void => {\n if (isMobile) {\n setIsMobileL2Open(false);\n onDismiss?.();\n }\n };\n\n const cleanupTransition = (): void => {\n const clearTransitionTimeout = setTimeout(() => {\n if (isTransitioning) {\n setIsTransitioning(false);\n }\n }, TRANSITION_CLEANUP_DELAY);\n timeoutIdsRef.current.push(clearTransitionTimeout);\n };\n\n /**\n * Handles L1 -> L2 menu changes based on active item\n */\n const onLinkActiveChange: SideNavContextType['onLinkActiveChange'] = (args) => {\n const isL1ItemActive = args.level === 1 && args.isActive;\n\n if (isL1ItemActive) {\n if (args.isL2Trigger) {\n // Click on L2 Trigger\n if (isMobile) {\n setL2DrawerTitle(args.title);\n setIsMobileL2Open(true);\n return;\n }\n\n setIsL1Collapsed(true);\n\n // `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change\n if (!args.isFirstRender) {\n setIsTransitioning(true);\n cleanupTransition();\n setIsL1Hovered(false);\n setIsHoverAgainEnabled(false);\n // For some delay, we disable hover to expand behaviour to avoid buggy flicker when cursor is on L1 while its trying to close\n const hoverAgainTimeout = setTimeout(() => {\n setIsHoverAgainEnabled(true);\n }, HOVER_AGAIN_DELAY);\n timeoutIdsRef.current.push(hoverAgainTimeout);\n }\n } else {\n // Click on normal L1 Item\n // eslint-disable-next-line no-lonely-if\n if (isMobile) {\n setIsMobileL2Open(false);\n }\n // Ensures that if Normal L1 item is clicked, the L1 stays expanded\n setIsL1Collapsed(false);\n }\n }\n };\n\n const contextValue = React.useMemo(\n () => ({\n l2PortalContainerRef,\n onLinkActiveChange,\n closeMobileNav,\n isL1Collapsed: isMobile ? isMobileL2Open : isL1Collapsed,\n setIsL1Collapsed,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isL1Collapsed, isMobile, isMobileL2Open],\n );\n\n React.useEffect(() => {\n return () => {\n for (const timeoutId of timeoutIdsRef.current) {\n clearTimeout(timeoutId);\n }\n timeoutIdsRef.current = [];\n };\n }, []);\n\n return (\n <SideNavContext.Provider value={contextValue}>\n {isMobile && onDismiss ? (\n <>\n {/* L1 */}\n <Drawer isOpen={isOpen ?? false} onDismiss={onDismiss}>\n <DrawerHeader title=\"Main Menu\" />\n <DrawerBody>\n <MobileL1Container\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n className=\"mobile-l1-container\"\n height=\"100%\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n >\n {children}\n </MobileL1Container>\n </DrawerBody>\n </Drawer>\n {/* L2 */}\n <Drawer isOpen={isMobileL2Open} onDismiss={() => setIsMobileL2Open(false)} isLazy={false}>\n <DrawerHeader title={l2DrawerTitle} />\n <DrawerBody>\n <BaseBox ref={l2PortalContainerRef} />\n </DrawerBody>\n </Drawer>\n </>\n ) : (\n <BaseBox\n position=\"fixed\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n display={{ base: 'none', m: 'flex' }}\n flexDirection=\"column\"\n width={makeSize(EXPANDED_L1_WIDTH)}\n as=\"nav\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n {...getStyledProps(styledProps)}\n >\n {banner ? (\n <BaseBox\n borderBottom=\"thin\"\n borderBottomColor=\"surface.border.gray.muted\"\n borderRight=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n padding=\"spacing.3\"\n maxHeight=\"100px\"\n width=\"100%\"\n >\n {banner}\n </BaseBox>\n ) : null}\n <BaseBox position=\"relative\" display=\"block\" flex=\"1\" width=\"100%\">\n <BaseBox\n position=\"absolute\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n width=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n id=\"blade-sidenav-l2\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n ref={l2PortalContainerRef}\n />\n <StyledL1Menu\n ref={l1ContainerRef}\n id=\"blade-sidenav-l1\"\n className={getL1MenuClassName({ isL1Collapsed, isL1Hovered, isTransitioning })}\n position=\"absolute\"\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n overflow=\"hidden\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n onTransitionEnd={(e) => {\n // This check ensures transitioning is set to false only when its true\n // And only the l1Container element's transitions are considered and other transitions of l1 expand or child elements are ignored\n if (isTransitioning && l1ContainerRef.current === e.target) {\n setIsTransitioning(false);\n }\n }}\n // Hmm you might be wondering, why is `onMouseOver` paired with `onMouseLeave`? A sane person would pair `onMouseOver` with `onMouseOut`, and `onMouseEnter` with `onMouseLeave`\n // since they are logical equivalents of each other. So why don't we do that? Hold tight, you're in for a ride ☕️.\n //\n // 1. In an ideal scenario, we would put `onMouseEnter` and `onMouseLeave` here and expect things to work.\n // 2. The L2 menu of our SideNav is React Portalled out of the L1 child\n // 3. React considers its own children as true children for JS events and not DOM children (Checkout React Portal Caveats - https://react.dev/reference/react-dom/createPortal#caveats)\n // 3. In the next ideal scenario, we would put `e.stopPropagation` on child component of portal like React recommends, except mouseenter, mouseleave events don't propagate at all (https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event#usage_notes)\n // 4. So `onMouseEnter` gets triggered on L2 enter. But we don't want to open L1 menu on L2 hover\n // 5. Thus we use `onMouseOver` for hover part and call e.stopPropagation in portal child (SideNavLevel).\n // 6. But in case of unhover/leave, we don't want to trigger mouseOut for all child components individually. We want 1 hover out of L1 menu. Thus we use `onMouseLeave`\n onMouseOver={() => {\n if (mouseOverTimeoutRef.current) {\n clearTimeout(mouseOverTimeoutRef.current);\n }\n if (isL1Collapsed && isHoverAgainEnabled) {\n setIsL1Hovered(true);\n }\n }}\n onMouseLeave={() => {\n if (isL1Collapsed && isL1Hovered) {\n mouseOverTimeoutRef.current = setTimeout(() => {\n setIsL1Hovered(false);\n setIsTransitioning(true);\n cleanupTransition();\n }, L1_EXIT_HOVER_DELAY);\n }\n }}\n >\n <SkipNavLink id={SKIP_NAV_ID} _hasBackground={true} />\n {children}\n </StyledL1Menu>\n <SkipNavContent id={SKIP_NAV_ID} />\n </BaseBox>\n </BaseBox>\n )}\n </SideNavContext.Provider>\n );\n};\n\nexport { SideNav };\n"],"names":["COLLAPSED","classes","SHOW_WHEN_COLLAPSED","HIDE_WHEN_COLLAPSED","TRANSITIONING","L1_ITEM_WRAPPER","MobileL1Container","styled","BaseBox","withConfig","displayName","componentId","_defineProperty","concat","display","StyledL1Menu","props","moderate","makeMotionTime","theme","motion","duration","gentle","easing","l1Expand","entrance","revealing","l1Collapse","exit","width","transition","padding","makeSpace","spacing","makeSize","COLLAPSED_L1_WIDTH","getL1MenuClassName","_ref3","isL1Collapsed","isL1Hovered","isTransitioning","isMenuCollapsed","SideNav","_ref4","children","isOpen","onDismiss","banner","testID","styledProps","_objectWithoutProperties","_excluded","l2PortalContainerRef","React","useRef","l1ContainerRef","timeoutIdsRef","mouseOverTimeoutRef","_React$useState","useState","_React$useState2","_slicedToArray","setIsL1Collapsed","_React$useState3","_React$useState4","isMobileL2Open","setIsMobileL2Open","_React$useState5","_React$useState6","setIsL1Hovered","_React$useState7","_React$useState8","isHoverAgainEnabled","setIsHoverAgainEnabled","_React$useState9","_React$useState10","setIsTransitioning","_React$useState11","_React$useState12","l2DrawerTitle","setL2DrawerTitle","isMobile","useIsMobile","closeMobileNav","cleanupTransition","clearTransitionTimeout","setTimeout","TRANSITION_CLEANUP_DELAY","current","push","onLinkActiveChange","args","isL1ItemActive","level","isActive","isL2Trigger","title","isFirstRender","hoverAgainTimeout","HOVER_AGAIN_DELAY","contextValue","useMemo","useEffect","_iterator","_createForOfIteratorHelper","_step","s","n","done","timeoutId","value","clearTimeout","err","e","f","_jsx","SideNavContext","Provider","_jsxs","_Fragment","Drawer","DrawerHeader","DrawerBody","_objectSpread","flexDirection","justifyContent","className","height","metaAttribute","name","MetaConstants","isLazy","ref","position","backgroundColor","top","left","base","m","EXPANDED_L1_WIDTH","as","getStyledProps","borderBottom","borderBottomColor","borderRight","borderRightColor","maxHeight","flex","id","borderRightWidth","overflow","onTransitionEnd","target","onMouseOver","onMouseLeave","L1_EXIT_HOVER_DELAY","SkipNavLink","SKIP_NAV_ID","_hasBackground","SkipNavContent"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { classes } from './tokens.js';
2
+ import '../Box/BaseBox/index.js';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
5
+
6
+ var SideNavBody = function SideNavBody(_ref) {
7
+ var children = _ref.children;
8
+ return /*#__PURE__*/jsx(BaseBox, {
9
+ className: classes.L1_ITEM_WRAPPER,
10
+ overflowY: "auto",
11
+ overflowX: "hidden",
12
+ children: children
13
+ });
14
+ };
15
+
16
+ export { SideNavBody };
17
+ //# sourceMappingURL=SideNavBody.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavBody.web.js","sources":["../../../../../../src/components/SideNav/SideNavBody.web.tsx"],"sourcesContent":["import { classes } from './tokens';\nimport type { SideNavBodyProps } from './types';\nimport BaseBox from '~components/Box/BaseBox';\n\nconst SideNavBody = ({ children }: SideNavBodyProps): React.ReactElement => {\n return (\n <BaseBox className={classes.L1_ITEM_WRAPPER} overflowY=\"auto\" overflowX=\"hidden\">\n {children}\n </BaseBox>\n );\n};\n\nexport { SideNavBody };\n"],"names":["SideNavBody","_ref","children","_jsx","BaseBox","className","classes","L1_ITEM_WRAPPER","overflowY","overflowX"],"mappings":";;;;;AAIA,IAAMA,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAA2D;AAAA,EAAA,IAArDC,QAAQ,GAAAD,IAAA,CAARC,QAAQ,CAAA;EAC7B,oBACEC,GAAA,CAACC,OAAO,EAAA;IAACC,SAAS,EAAEC,OAAO,CAACC,eAAgB;AAACC,IAAAA,SAAS,EAAC,MAAM;AAACC,IAAAA,SAAS,EAAC,QAAQ;AAAAP,IAAAA,QAAA,EAC7EA,QAAAA;AAAQ,GACF,CAAC,CAAA;AAEd;;;;"}
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+ import '../../utils/logger/index.js';
3
+ import { throwBladeError } from '../../utils/logger/logger.js';
4
+
5
+ var SideNavContext = /*#__PURE__*/React__default.createContext({});
6
+ var useSideNav = function useSideNav() {
7
+ var value = React__default.useContext(SideNavContext);
8
+ if (!value) {
9
+ throwBladeError({
10
+ moduleName: 'SideNavContext',
11
+ message: 'SideNav* components cannot be used outside SideNav'
12
+ });
13
+ }
14
+ return value;
15
+ };
16
+ var NavLinkContext = /*#__PURE__*/React__default.createContext({});
17
+ var useNavLink = function useNavLink() {
18
+ var value = React__default.useContext(NavLinkContext);
19
+ return value;
20
+ };
21
+
22
+ export { NavLinkContext, SideNavContext, useNavLink, useSideNav };
23
+ //# sourceMappingURL=SideNavContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavContext.js","sources":["../../../../../../src/components/SideNav/SideNavContext.ts"],"sourcesContent":["import React from 'react';\nimport type { NavLinkContextType, SideNavContextType } from './types';\nimport { throwBladeError } from '~utils/logger';\n\nconst SideNavContext = React.createContext<SideNavContextType>({});\n\nconst useSideNav = (): SideNavContextType => {\n const value = React.useContext(SideNavContext);\n if (!value) {\n throwBladeError({\n moduleName: 'SideNavContext',\n message: 'SideNav* components cannot be used outside SideNav',\n });\n }\n return value;\n};\n\nconst NavLinkContext = React.createContext<NavLinkContextType>({});\nconst useNavLink = (): NavLinkContextType => {\n const value = React.useContext(NavLinkContext);\n return value;\n};\n\nexport { SideNavContext, useSideNav, NavLinkContext, useNavLink };\n"],"names":["SideNavContext","React","createContext","useSideNav","value","useContext","throwBladeError","moduleName","message","NavLinkContext","useNavLink"],"mappings":";;;;AAIMA,IAAAA,cAAc,gBAAGC,cAAK,CAACC,aAAa,CAAqB,EAAE,EAAC;AAElE,IAAMC,UAAU,GAAG,SAAbA,UAAUA,GAA6B;AAC3C,EAAA,IAAMC,KAAK,GAAGH,cAAK,CAACI,UAAU,CAACL,cAAc,CAAC,CAAA;EAC9C,IAAI,CAACI,KAAK,EAAE;AACVE,IAAAA,eAAe,CAAC;AACdC,MAAAA,UAAU,EAAE,gBAAgB;AAC5BC,MAAAA,OAAO,EAAE,oDAAA;AACX,KAAC,CAAC,CAAA;AACJ,GAAA;AACA,EAAA,OAAOJ,KAAK,CAAA;AACd,EAAC;AAEKK,IAAAA,cAAc,gBAAGR,cAAK,CAACC,aAAa,CAAqB,EAAE,EAAC;AAClE,IAAMQ,UAAU,GAAG,SAAbA,UAAUA,GAA6B;AAC3C,EAAA,IAAMN,KAAK,GAAGH,cAAK,CAACI,UAAU,CAACI,cAAc,CAAC,CAAA;AAC9C,EAAA,OAAOL,KAAK,CAAA;AACd;;;;"}
@@ -0,0 +1,55 @@
1
+ import 'react';
2
+ import { classes } from './tokens.js';
3
+ import '../Box/BaseBox/index.js';
4
+ import '../Drawer/index.js';
5
+ import getIn from '../../utils/lodashButBetter/get.js';
6
+ import '../../utils/index.js';
7
+ import { jsx } from 'react/jsx-runtime';
8
+ import { drawerPadding } from '../Drawer/DrawerSubcomponents.web.js';
9
+ import { makeSpace } from '../../utils/makeSpace/makeSpace.js';
10
+ import useTheme from '../BladeProvider/useTheme.js';
11
+ import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
12
+
13
+ var getDrawerPadding = function getDrawerPadding(theme) {
14
+ var negativePaddingValue = getIn(theme, drawerPadding);
15
+ return makeSpace(negativePaddingValue);
16
+ };
17
+ var SideNavFooter = function SideNavFooter(_ref) {
18
+ var children = _ref.children;
19
+ var _useTheme = useTheme(),
20
+ theme = _useTheme.theme;
21
+ return /*#__PURE__*/jsx(BaseBox, {
22
+ className: classes.L1_ITEM_WRAPPER,
23
+ width: {
24
+ base: "calc(100% + ".concat(getDrawerPadding(theme), " + ").concat(getDrawerPadding(theme), ")"),
25
+ m: '100%'
26
+ },
27
+ borderTopWidth: "thin",
28
+ borderTopColor: "surface.border.gray.muted",
29
+ backgroundColor: "surface.background.gray.moderate",
30
+ position: "relative",
31
+ elevation: "lowRaised",
32
+ bottom: {
33
+ base: "-".concat(getDrawerPadding(theme)),
34
+ m: 'spacing.0'
35
+ },
36
+ left: {
37
+ base: "-".concat(getDrawerPadding(theme)),
38
+ m: 'spacing.0'
39
+ },
40
+ right: {
41
+ base: "-".concat(getDrawerPadding(theme)),
42
+ m: 'spacing.0'
43
+ }
44
+ // in Desktop, padding is set on SideNav component
45
+ ,
46
+ padding: {
47
+ base: 'spacing.4',
48
+ m: undefined
49
+ },
50
+ children: children
51
+ });
52
+ };
53
+
54
+ export { SideNavFooter };
55
+ //# sourceMappingURL=SideNavFooter.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavFooter.web.js","sources":["../../../../../../src/components/SideNav/SideNavFooter.web.tsx"],"sourcesContent":["import React from 'react';\nimport type { SideNavFooterProps } from './types';\nimport { classes } from './tokens';\nimport BaseBox from '~components/Box/BaseBox';\nimport { drawerPadding } from '~components/Drawer';\nimport getIn from '~utils/lodashButBetter/get';\nimport type { Theme } from '~components/BladeProvider';\nimport { makeSpace, useTheme } from '~utils';\n\nconst getDrawerPadding = (theme: Theme): `${number}px` => {\n const negativePaddingValue = getIn(theme, drawerPadding);\n return makeSpace(negativePaddingValue);\n};\n\nconst SideNavFooter = ({ children }: SideNavFooterProps): React.ReactElement => {\n const { theme } = useTheme();\n return (\n <BaseBox\n className={classes.L1_ITEM_WRAPPER}\n width={{\n base: `calc(100% + ${getDrawerPadding(theme)} + ${getDrawerPadding(theme)})`,\n m: '100%',\n }}\n borderTopWidth=\"thin\"\n borderTopColor=\"surface.border.gray.muted\"\n backgroundColor=\"surface.background.gray.moderate\"\n position=\"relative\"\n elevation=\"lowRaised\"\n bottom={{ base: `-${getDrawerPadding(theme)}`, m: 'spacing.0' }}\n left={{ base: `-${getDrawerPadding(theme)}`, m: 'spacing.0' }}\n right={{ base: `-${getDrawerPadding(theme)}`, m: 'spacing.0' }}\n // in Desktop, padding is set on SideNav component\n padding={{ base: 'spacing.4', m: undefined }}\n >\n {children}\n </BaseBox>\n );\n};\n\nexport { SideNavFooter };\n"],"names":["getDrawerPadding","theme","negativePaddingValue","getIn","drawerPadding","makeSpace","SideNavFooter","_ref","children","_useTheme","useTheme","_jsx","BaseBox","className","classes","L1_ITEM_WRAPPER","width","base","concat","m","borderTopWidth","borderTopColor","backgroundColor","position","elevation","bottom","left","right","padding","undefined"],"mappings":";;;;;;;;;;;;AASA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAAY,EAAoB;AACxD,EAAA,IAAMC,oBAAoB,GAAGC,KAAK,CAACF,KAAK,EAAEG,aAAa,CAAC,CAAA;EACxD,OAAOC,SAAS,CAACH,oBAAoB,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,IAAMI,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAA6D;AAAA,EAAA,IAAvDC,QAAQ,GAAAD,IAAA,CAARC,QAAQ,CAAA;AAC/B,EAAA,IAAAC,SAAA,GAAkBC,QAAQ,EAAE;IAApBT,KAAK,GAAAQ,SAAA,CAALR,KAAK,CAAA;EACb,oBACEU,GAAA,CAACC,OAAO,EAAA;IACNC,SAAS,EAAEC,OAAO,CAACC,eAAgB;AACnCC,IAAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAAC,cAAAA,CAAAA,MAAA,CAAiBlB,gBAAgB,CAACC,KAAK,CAAC,EAAAiB,KAAAA,CAAAA,CAAAA,MAAA,CAAMlB,gBAAgB,CAACC,KAAK,CAAC,EAAG,GAAA,CAAA;AAC5EkB,MAAAA,CAAC,EAAE,MAAA;KACH;AACFC,IAAAA,cAAc,EAAC,MAAM;AACrBC,IAAAA,cAAc,EAAC,2BAA2B;AAC1CC,IAAAA,eAAe,EAAC,kCAAkC;AAClDC,IAAAA,QAAQ,EAAC,UAAU;AACnBC,IAAAA,SAAS,EAAC,WAAW;AACrBC,IAAAA,MAAM,EAAE;AAAER,MAAAA,IAAI,MAAAC,MAAA,CAAMlB,gBAAgB,CAACC,KAAK,CAAC,CAAE;AAAEkB,MAAAA,CAAC,EAAE,WAAA;KAAc;AAChEO,IAAAA,IAAI,EAAE;AAAET,MAAAA,IAAI,MAAAC,MAAA,CAAMlB,gBAAgB,CAACC,KAAK,CAAC,CAAE;AAAEkB,MAAAA,CAAC,EAAE,WAAA;KAAc;AAC9DQ,IAAAA,KAAK,EAAE;AAAEV,MAAAA,IAAI,MAAAC,MAAA,CAAMlB,gBAAgB,CAACC,KAAK,CAAC,CAAE;AAAEkB,MAAAA,CAAC,EAAE,WAAA;AAAY,KAAA;AAC7D;AAAA;AACAS,IAAAA,OAAO,EAAE;AAAEX,MAAAA,IAAI,EAAE,WAAW;AAAEE,MAAAA,CAAC,EAAEU,SAAAA;KAAY;AAAArB,IAAAA,QAAA,EAE5CA,QAAAA;AAAQ,GACF,CAAC,CAAA;AAEd;;;;"}
@@ -0,0 +1,66 @@
1
+ import styled from 'styled-components';
2
+ import { getNavItemTransition, NAV_ITEM_HEIGHT, classes } from '../tokens.js';
3
+ import { TooltipifyNavItem } from './TooltipifyNavItem.js';
4
+ import '../../Box/index.js';
5
+ import '../../Box/BaseBox/index.js';
6
+ import '../../Typography/index.js';
7
+ import '../../../utils/index.js';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
+ import { BaseBox } from '../../Box/BaseBox/BaseBox.web.js';
10
+ import { makeSize } from '../../../utils/makeSize/makeSize.js';
11
+ import { Box } from '../../Box/Box.js';
12
+ import { Text } from '../../Typography/Text/Text.js';
13
+
14
+ var SideNavItemContainer = /*#__PURE__*/styled(BaseBox).withConfig({
15
+ displayName: "SideNavItemweb__SideNavItemContainer",
16
+ componentId: "nb93ri-0"
17
+ })(function (props) {
18
+ return {
19
+ transition: getNavItemTransition(props.theme)
20
+ };
21
+ });
22
+ var SideNavItem = function SideNavItem(_ref) {
23
+ var leading = _ref.leading,
24
+ trailing = _ref.trailing,
25
+ title = _ref.title,
26
+ backgroundColor = _ref.backgroundColor,
27
+ tooltip = _ref.tooltip,
28
+ _ref$as = _ref.as,
29
+ as = _ref$as === void 0 ? 'div' : _ref$as;
30
+ return /*#__PURE__*/jsx(TooltipifyNavItem, {
31
+ tooltip: tooltip,
32
+ children: /*#__PURE__*/jsxs(SideNavItemContainer, {
33
+ display: "flex",
34
+ flexDirection: "row",
35
+ justifyContent: "space-between",
36
+ alignItems: "center",
37
+ paddingX: "spacing.3",
38
+ height: makeSize(NAV_ITEM_HEIGHT),
39
+ backgroundColor: backgroundColor,
40
+ borderRadius: "medium",
41
+ as: as,
42
+ cursor: as === 'label' ? 'pointer' : undefined,
43
+ children: [/*#__PURE__*/jsxs(Box, {
44
+ display: "inline-flex",
45
+ alignItems: "center",
46
+ gap: "spacing.3",
47
+ children: [leading, /*#__PURE__*/jsx(BaseBox, {
48
+ className: classes.HIDE_WHEN_COLLAPSED,
49
+ children: /*#__PURE__*/jsx(Text, {
50
+ truncateAfterLines: 1,
51
+ weight: "medium",
52
+ size: "medium",
53
+ color: "surface.text.gray.subtle",
54
+ children: title
55
+ })
56
+ })]
57
+ }), /*#__PURE__*/jsx(BaseBox, {
58
+ className: classes.HIDE_WHEN_COLLAPSED,
59
+ children: trailing
60
+ })]
61
+ })
62
+ });
63
+ };
64
+
65
+ export { SideNavItem };
66
+ //# sourceMappingURL=SideNavItem.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavItem.web.js","sources":["../../../../../../../src/components/SideNav/SideNavItems/SideNavItem.web.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { classes, getNavItemTransition, NAV_ITEM_HEIGHT } from '../tokens';\nimport type { SideNavItemProps } from '../types';\nimport { TooltipifyNavItem } from './TooltipifyNavItem';\nimport { Box } from '~components/Box';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Text } from '~components/Typography';\nimport { makeSize } from '~utils';\n\nconst SideNavItemContainer = styled(BaseBox)((props) => {\n return {\n transition: getNavItemTransition(props.theme),\n };\n});\n\nconst SideNavItem = ({\n leading,\n trailing,\n title,\n backgroundColor,\n tooltip,\n as = 'div',\n}: SideNavItemProps): React.ReactElement => {\n return (\n <TooltipifyNavItem tooltip={tooltip}>\n <SideNavItemContainer\n display=\"flex\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n paddingX=\"spacing.3\"\n height={makeSize(NAV_ITEM_HEIGHT)}\n backgroundColor={backgroundColor}\n borderRadius=\"medium\"\n as={as}\n cursor={as === 'label' ? 'pointer' : undefined}\n >\n <Box display=\"inline-flex\" alignItems=\"center\" gap=\"spacing.3\">\n {leading}\n <BaseBox className={classes.HIDE_WHEN_COLLAPSED}>\n <Text\n truncateAfterLines={1}\n weight=\"medium\"\n size=\"medium\"\n color=\"surface.text.gray.subtle\"\n >\n {title}\n </Text>\n </BaseBox>\n </Box>\n <BaseBox className={classes.HIDE_WHEN_COLLAPSED}>{trailing}</BaseBox>\n </SideNavItemContainer>\n </TooltipifyNavItem>\n );\n};\n\nexport { SideNavItem };\n"],"names":["SideNavItemContainer","styled","BaseBox","withConfig","displayName","componentId","props","transition","getNavItemTransition","theme","SideNavItem","_ref","leading","trailing","title","backgroundColor","tooltip","_ref$as","as","_jsx","TooltipifyNavItem","children","_jsxs","display","flexDirection","justifyContent","alignItems","paddingX","height","makeSize","NAV_ITEM_HEIGHT","borderRadius","cursor","undefined","Box","gap","className","classes","HIDE_WHEN_COLLAPSED","Text","truncateAfterLines","weight","size","color"],"mappings":";;;;;;;;;;;;;AASA,IAAMA,oBAAoB,gBAAGC,MAAM,CAACC,OAAO,CAAC,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,sCAAA;EAAAC,WAAA,EAAA,UAAA;AAAA,CAAC,CAAA,CAAA,UAACC,KAAK,EAAK;EACtD,OAAO;AACLC,IAAAA,UAAU,EAAEC,oBAAoB,CAACF,KAAK,CAACG,KAAK,CAAA;GAC7C,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAO2B;AAAA,EAAA,IAN1CC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,KAAK,GAAAH,IAAA,CAALG,KAAK;IACLC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IACfC,OAAO,GAAAL,IAAA,CAAPK,OAAO;IAAAC,OAAA,GAAAN,IAAA,CACPO,EAAE;AAAFA,IAAAA,EAAE,GAAAD,OAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,OAAA,CAAA;EAEV,oBACEE,GAAA,CAACC,iBAAiB,EAAA;AAACJ,IAAAA,OAAO,EAAEA,OAAQ;IAAAK,QAAA,eAClCC,IAAA,CAACtB,oBAAoB,EAAA;AACnBuB,MAAAA,OAAO,EAAC,MAAM;AACdC,MAAAA,aAAa,EAAC,KAAK;AACnBC,MAAAA,cAAc,EAAC,eAAe;AAC9BC,MAAAA,UAAU,EAAC,QAAQ;AACnBC,MAAAA,QAAQ,EAAC,WAAW;AACpBC,MAAAA,MAAM,EAAEC,QAAQ,CAACC,eAAe,CAAE;AAClCf,MAAAA,eAAe,EAAEA,eAAgB;AACjCgB,MAAAA,YAAY,EAAC,QAAQ;AACrBb,MAAAA,EAAE,EAAEA,EAAG;AACPc,MAAAA,MAAM,EAAEd,EAAE,KAAK,OAAO,GAAG,SAAS,GAAGe,SAAU;MAAAZ,QAAA,EAAA,cAE/CC,IAAA,CAACY,GAAG,EAAA;AAACX,QAAAA,OAAO,EAAC,aAAa;AAACG,QAAAA,UAAU,EAAC,QAAQ;AAACS,QAAAA,GAAG,EAAC,WAAW;AAAAd,QAAAA,QAAA,EAC3DT,CAAAA,OAAO,eACRO,GAAA,CAACjB,OAAO,EAAA;UAACkC,SAAS,EAAEC,OAAO,CAACC,mBAAoB;UAAAjB,QAAA,eAC9CF,GAAA,CAACoB,IAAI,EAAA;AACHC,YAAAA,kBAAkB,EAAE,CAAE;AACtBC,YAAAA,MAAM,EAAC,QAAQ;AACfC,YAAAA,IAAI,EAAC,QAAQ;AACbC,YAAAA,KAAK,EAAC,0BAA0B;AAAAtB,YAAAA,QAAA,EAE/BP,KAAAA;WACG,CAAA;AAAC,SACA,CAAC,CAAA;AAAA,OACP,CAAC,eACNK,GAAA,CAACjB,OAAO,EAAA;QAACkC,SAAS,EAAEC,OAAO,CAACC,mBAAoB;AAAAjB,QAAAA,QAAA,EAAER,QAAAA;AAAQ,OAAU,CAAC,CAAA;KACjD,CAAA;AAAC,GACN,CAAC,CAAA;AAExB;;;;"}